--- phase: 01-matrix-qa-polish plan: 06 subsystem: testing tags: [matrix, pytest, settings, reactions, room-routing] requires: - phase: 01-matrix-qa-polish provides: 01-05 room-scoped confirmation flow and Matrix callback payload updates provides: - Matrix adapter helpers and converter paths no longer advertise or parse reaction-era UX - Matrix `!settings` renders a strict read-only dashboard snapshot - Matrix regressions distinguish room ids from logical chat ids and dynamic chat allocation affects: [adapter/matrix, matrix verification, future Matrix QA] tech-stack: added: [] patterns: [command-only Matrix helper text, explicit room-id-vs-chat-id assertions] key-files: created: [] modified: - adapter/matrix/reactions.py - adapter/matrix/converter.py - adapter/matrix/handlers/settings.py - tests/adapter/matrix/test_converter.py - tests/adapter/matrix/test_reactions.py - tests/adapter/matrix/test_dispatcher.py - tests/adapter/matrix/test_invite_space.py key-decisions: - "Removed Matrix reaction conversion entirely and kept command callbacks limited to !yes/!no." - "Kept !settings as a pure snapshot surface while preserving mutable subcommands outside the dashboard." - "Seeded invite and dispatcher tests with explicit next_chat_index and room ids instead of treating C1 as Matrix transport identity." patterns-established: - "Matrix adapter tests should assert room_id separately from logical chat_id whenever Matrix rooms are involved." - "Matrix user-facing helper text should describe only supported command flows, never deprecated reaction UX." requirements-completed: [] duration: 4 min completed: 2026-04-03 --- # Phase 1 Plan 06: Matrix reaction cleanup and room-aware regressions Summary **Matrix helper text and conversion are command-only, `!settings` is snapshot-only, and Matrix regressions now enforce room-aware chat allocation instead of legacy `C1` shortcuts.** ## Performance - **Duration:** 4 min - **Started:** 2026-04-03T09:32:21Z - **Completed:** 2026-04-03T09:35:39Z - **Tasks:** 2 - **Files modified:** 7 ## Accomplishments - Removed remaining reaction-era Matrix UX from adapter helper text and conversion paths. - Tightened the `!settings` dashboard so it reports state without mutation prompts. - Rewrote Matrix regressions to assert dynamic chat allocation and room-id separation explicitly. ## Task Commits Each task was committed atomically: 1. **Task 1: Remove reaction-era Matrix UX and update the immediately affected regressions** - `974935c` (test), `3e06a67` (feat) 2. **Task 2: Remove the remaining brittle `C1` assumptions from room-based Matrix regressions** - `9cdb611` (test) ## Files Created/Modified - `adapter/matrix/reactions.py` - Reduced the module to command-only text builders. - `adapter/matrix/converter.py` - Removed exported reaction callback conversion support. - `adapter/matrix/handlers/settings.py` - Removed mutation prompts from the Matrix settings dashboard. - `tests/adapter/matrix/test_reactions.py` - Locked helper text expectations to command-only output. - `tests/adapter/matrix/test_converter.py` - Replaced reaction callback coverage with a regression asserting the converter no longer exports that path. - `tests/adapter/matrix/test_dispatcher.py` - Separated current chat context from allocated logical chat ids in Matrix-facing assertions. - `tests/adapter/matrix/test_invite_space.py` - Seeded invite metadata to verify dynamic `next_chat_index` progression. ## Decisions Made - Removed `from_reaction` instead of leaving a deprecated no-op path, so supported Matrix interactions are unambiguous. - Left mutable Matrix settings subcommands outside `!settings`; only the dashboard copy was tightened in this plan. - Treated the pre-existing missing singular `!skill` command wiring as out of scope for this plan because the acceptance criteria only required preserving `!skills`, `!soul`, and `!safety` subcommands and the reaction/settings cleanup. ## Deviations from Plan None - plan executed exactly as written. ## Issues Encountered - Task 2's red phase did not fail after tightening the assertions because the runtime already honored dynamic chat allocation; the work reduced to test cleanup and suite verification. ## User Setup Required None - no external service configuration required. ## Next Phase Readiness - Matrix Phase 01 gap-closure work is verified against both the Matrix suite and the full repository suite. - Remaining manual verification is still limited to real Matrix client UX in Element and similar clients. ## Self-Check: PASSED - FOUND: `.planning/phases/01-matrix-qa-polish/01-06-SUMMARY.md` - FOUND: `974935c` - FOUND: `3e06a67` - FOUND: `9cdb611`