Relationships
≡ duplicated by #4246#4250 The inbox contract fixture and design doc match swamp-club#4241: the CLI inbox carries only messages Swamp Club writes
Opened by stack72 · 11/1/2026· Shipped 11/1/2026
Summary
Match the swamp side to swamp-club#4241. That change narrows the CLI inbox to messages Swamp Club writes: announcements, direct, system and points messages, issue updates, issue shipped and closed, and the named onboarding kinds. Mentions and other web-only kinds no longer reach /api/inbox/*. This issue updates swamp's copy of the shared contract fixture and the design doc to say the same. The CLI needs no code change: the server decides which kinds it serves.
Merge this before swamp-club#4241. swamp-club's deno task check:inbox-fixture (from #4185) compares its fixture byte for byte with src/infrastructure/http/inbox_responses.fixture.json on swamp main. The #4241 branch has already removed the mention from its copy, so its check fails until this change is on swamp main.
1. The fixture
In src/infrastructure/http/inbox_responses.fixture.json, remove the mention entry (01JBX5Q8ZK0000000000000300) from webKindsPage.messages. Copy the #4241 branch's file (tests/fixtures/inbox_responses.fixture.json on swamp-club branch 4241) over swamp's, byte for byte, and confirm with cmp. webKindsPage keeps the issue_shipped and nurture_stalled entries.
2. Tests that read the mention from the fixture
Three tests currently take the mention from webKindsPage. Keep what they prove, because the CLI still has to handle hostile text and kinds that don't raise the notice. Move their data out of the fixture:
src/presentation/markdown_renderer_test.ts:157finds the mention and checks that a barehttp://link renders as(link removed)and HTML stays literal. Keep the test, with its message defined inline in the test file.src/infrastructure/http/inbox_schemas_test.ts:75-80parseswebKindsPageand checks the kinds. Update the expected kind list. Add an inline test that amention, or any other unknown kind, still parses and keeps its kind as a string: the client stays tolerant even though the server no longer sends one.src/libswamp/inbox/read_test.ts:70-75builds pages fromwebKindsPage. The swamp-club#4109 cases ("the announced message is read before a newer message that doesn't raise the notice") still matter.nurture_stalledis served and never raises the notice, so use it in place of the mention, or define the newer message inline.
3. The design doc
In design/surfaces/inbox.md:
- Line 37 (
kindin theMessageshape): replace "any kind the web inbox carries ("mention", …)" with the kinds Swamp Club serves to the CLI. It stays a string, so new kinds still parse. - Lines 47-50:
/messagesno longer carries every message the web inbox does. It carries only messages Swamp Club writes. Mentions and comments, whose bodies quote other users, stay on the web inbox and email, so no other user's text reaches the terminal or an agent./summarystill counts only the kinds that raise the notice; onboarding messages are listed but don't raise it. - Lines 328 and 337 (
swamp inbox read): drop "such as mentions" and "mentions included". The messages listed but not announced are now onboarding messages.
Keep the wording neutral: say what the CLI inbox carries and that other users' text stays out of it.
Tests
cmpof swamp's fixture with the swamp-club #4241 branch's file shows no difference.- The moved tests pass with inline data, and the new unknown-kind parse test passes.
- Run all of
integration/before verifying. The drift test on the notice text is unaffected.
Out of scope
- Any CLI behaviour change
- The swamp-club side (#4241)
Shipped
Click a lifecycle step above to view its details.