4.6 KiB
4.6 KiB
| phase | slug | status | nyquist_compliant | wave_0_complete | created |
|---|---|---|---|---|---|
| 1 | matrix-qa-polish | draft | false | false | 2026-04-02 |
Phase 1 — Validation Strategy
Per-phase validation contract for feedback sampling during execution.
Test Infrastructure
| Property | Value |
|---|---|
| Framework | pytest + pytest-asyncio |
| Config file | pyproject.toml |
| Quick run command | pytest tests/adapter/matrix/ -q |
| Full suite command | pytest tests/ -q |
| Estimated runtime | ~10 seconds |
Sampling Rate
- After every task commit: Run
pytest tests/adapter/matrix/ -q - After every plan wave: Run
pytest tests/ -q - Before
/gsd:verify-work: Full suite must be green (96+ tests) - Max feedback latency: 15 seconds
Per-Task Verification Map
| Task ID | Plan | Wave | Behavior | Test Type | Automated Command | Status |
|---|---|---|---|---|---|---|
| MAT-01 | 01 | 1 | handle_invite creates Space + Чат 1 | unit | pytest tests/adapter/matrix/test_invite_space.py -x -q |
⬜ pending |
| MAT-02 | 01 | 1 | handle_invite idempotent | unit | pytest tests/adapter/matrix/test_invite_space.py -x -q |
⬜ pending |
| MAT-03 | 01 | 1 | no hardcoded C1 | unit | pytest tests/adapter/matrix/test_invite_space.py -x -q |
⬜ pending |
| MAT-04 | 02 | 1 | !new adds room to Space | unit | pytest tests/adapter/matrix/test_chat_space.py -x -q |
⬜ pending |
| MAT-05 | 02 | 1 | !new without space_id returns error | unit | pytest tests/adapter/matrix/test_chat_space.py -x -q |
⬜ pending |
| MAT-06 | 03 | 1 | OutgoingUI renders text + !yes/!no | unit | pytest tests/adapter/matrix/test_send_outgoing.py -x -q |
⬜ pending |
| MAT-07 | 03 | 1 | OutgoingUI does NOT send m.reaction | unit | pytest tests/adapter/matrix/test_send_outgoing.py -x -q |
⬜ pending |
| MAT-08 | 03 | 1 | pending_confirm store roundtrip | unit | pytest tests/adapter/matrix/test_store.py -x -q |
⬜ pending |
| MAT-09 | 03 | 2 | !yes/!no reads pending_confirm | unit | pytest tests/adapter/matrix/test_confirm.py -x -q |
⬜ pending |
| MAT-10 | 02 | 2 | !archive archives chat via chat_mgr.archive (Space removal deferred) | unit | pytest tests/adapter/matrix/test_chat_space.py -x -q |
⬜ pending |
| MAT-11 | 04 | 2 | !settings returns dashboard | unit | pytest tests/adapter/matrix/test_dispatcher.py -x -q |
⬜ pending |
| MAT-12 | 02 | 1 | RoomCreateError → user message | unit | pytest tests/adapter/matrix/test_chat_space.py -x -q |
⬜ pending |
Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky
Wave 0 Requirements
tests/adapter/matrix/test_invite_space.py— stubs for MAT-01..03tests/adapter/matrix/test_chat_space.py— stubs for MAT-04..05, MAT-10, MAT-12tests/adapter/matrix/test_send_outgoing.py— stubs for MAT-06..07tests/adapter/matrix/test_confirm.py— stubs for MAT-09
Existing files to update (not create):
tests/adapter/matrix/test_store.py— add MAT-08tests/adapter/matrix/test_dispatcher.py— add MAT-11, update broken DM-based tests
Broken Tests (Must Fix)
These pass today but will break after the Space+rooms refactor:
| Test | Why it breaks | Fix |
|---|---|---|
test_dispatcher.py::test_invite_event_creates_dm_room_and_sends_welcome |
Asserts chat_id == "C1" hardcode, DM join |
Rewrite for Space creation |
test_dispatcher.py::test_new_chat_creates_real_matrix_room_when_client_available |
No room_put_state in mock assertions |
Update mock + assertions |
test_reactions.py::test_build_skills_text |
Expects "Реакции 1️⃣-9️⃣" in text | Update assertion |
test_reactions.py::test_build_confirmation_text |
Expects CONFIRM_REACTION |
Update for !yes/!no |
Manual-Only Verifications
| Behavior | Why Manual | Test Instructions |
|---|---|---|
| First invite creates visible Space in Element | Element client rendering | Invite bot, check Space appears in sidebar |
| !new creates room inside Space (not standalone) | Space membership UI | Run !new, verify room appears under Space |
| !archive removes room from Space sidebar | Element room list | Run !archive, verify room disappears from Space |
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 test files
- No watch-mode flags
- Feedback latency < 15s
nyquist_compliant: trueset in frontmatter
Approval: pending