3.7 KiB
3.7 KiB
| phase | slug | status | nyquist_compliant | wave_0_complete | created |
|---|---|---|---|---|---|
| 01.1 | matrix-restart-reconciliation-and-dev-reset-workflow | draft | false | false | 2026-04-03 |
Phase 01.1 — Validation Strategy
Per-phase validation contract for feedback sampling during execution.
Test Infrastructure
| Property | Value |
|---|---|
| Framework | pytest 9.0.2 + pytest-asyncio 1.3.0 |
| Config file | pyproject.toml |
| Quick run command | pytest tests/adapter/matrix -v |
| Full suite command | pytest tests/ -v |
| Estimated runtime | ~20 seconds |
Sampling Rate
- After every task commit: Run
pytest tests/adapter/matrix -v - After every plan wave: Run
pytest tests/ -v - Before
$gsd-verify-work: Full suite must be green - Max feedback latency: 20 seconds
Per-Task Verification Map
| Task ID | Plan | Wave | Requirement | Test Type | Automated Command | File Exists | Status |
|---|---|---|---|---|---|---|---|
| 01.1-01-01 | 01 | 1 | PH01.1-BOOT | unit/integration | pytest tests/adapter/matrix/test_reconcile.py -v |
❌ W0 | ⬜ pending |
| 01.1-01-01 | 01 | 1 | PH01.1-COUNTER | unit | pytest tests/adapter/matrix/test_reconcile.py -k next_chat_index -v |
❌ W0 | ⬜ pending |
| 01.1-01-01 | 01 | 1 | PH01.1-NONDESTRUCTIVE | unit | pytest tests/adapter/matrix/test_reconcile.py -k no_create -v |
❌ W0 | ⬜ pending |
| 01.1-02-01 | 02 | 2 | PH01.1-BOOT | unit | pytest tests/adapter/matrix/test_dispatcher.py -k startup -v |
✅ | ⬜ pending |
| 01.1-02-02 | 02 | 2 | PH01.1-ROUTER | unit | pytest tests/adapter/matrix/test_dispatcher.py -k reconcile -v |
✅ | ⬜ pending |
| 01.1-03-01 | 03 | 1 | PH01.1-RESET | unit/smoke | pytest tests/adapter/matrix/test_reset.py -v |
❌ W0 | ⬜ pending |
| 01.1-03-02 | 03 | 1 | PH01.1-RESET | smoke | python -m adapter.matrix.reset --help |
❌ W0 | ⬜ pending |
Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky
Wave 0 Requirements
tests/adapter/matrix/test_reconcile.py— startup reconciliation scenarios,next_chat_index, and no-provisioning assertionstests/adapter/matrix/test_reset.py— CLI reset modes, dry-run behavior, and operator guidance outputtests/adapter/matrix/test_dispatcher.py— startup bootstrap order and targeted unknown-room recovery coverage- Fake
AsyncClientfixture surface for joined rooms, room state, leave, and forget behavior
Manual-Only Verifications
| Behavior | Requirement | Why Manual | Test Instructions |
|---|---|---|---|
| Reconciled Space/chat rooms render correctly in a real Matrix client after restart | PH01.1-BOOT | Client UX and homeserver state cannot be fully trusted from fake nio fixtures | 1. Start the bot with existing Space/chat rooms. 2. Verify the bot does not create duplicate Space or chat rooms. 3. Send a command in a recovered room and confirm it routes normally. |
Server-side cleanup leaves the account in a usable Element state after server-leave-forget |
PH01.1-RESET | Element/archive behavior and homeserver retention are client/server integration concerns | 1. Run python -m adapter.matrix.reset --mode server-leave-forget --dry-run. 2. Run without --dry-run on a test account. 3. Confirm joined rooms disappear for the bot and fresh invites can be accepted cleanly. |
Validation Sign-Off
- All tasks have
<automated>verify or Wave 0 dependencies - Sampling continuity: no 3 consecutive tasks without automated verify
- Wave 0 covers all MISSING references
- No watch-mode flags
- Feedback latency < 20s
nyquist_compliant: trueset in frontmatter
Approval: pending