test(disclosure): tie the documented glyph table to the constants #463

Merged
coilyco-ops merged 1 commit from qa/pin-the-documented-glyphs into main 2026-08-13 14:00:51 +00:00
Member

0e3fccb found two reaction glyphs had drifted from Kai's approved set while their test passed, because it asserted only that the four differed from each other. e5c9163 then pointed the footer at the reaction constants so the two code surfaces cannot drift apart.

docs/sirens-echo-tool-disclosure.md is a third copy of the same vocabulary, and nothing related it to either.

They agree today

Checked rather than assumed:

doc table        ✅  📭  ❌
constants        ✅  📭  ❌      toolOKGlyph, toolEmptyGlyph, toolFailedGlyph
example prefix   🔨  ==  toolDisclosureGlyph (reactionTool)

So this pins a true thing before it stops being true, rather than reporting a defect.

Why the doc is the copy that matters most here

A reader comparing the table to a reply is exactly the person a drift misleads, and Kai reading the vocabulary is how the reaction drift was found in the first place. The two code surfaces now share a constant; the document a human consults was still a literal.

Both directions, with the message naming which side moved

constant drifts:  documents [✅ ❌ 📭] and the footer emits [✅ ❌ 📪]
doc drifts:       documents [✅ ❌ 📪] and the footer emits [✅ ❌ 📭]

Printing both sets matters because the fix differs — one is a code change and the other is a doc change, and a bare "mismatch" makes the reader work that out.

The parse also fails loudly if the table disappears, so a doc rewrite cannot leave the test passing over nothing.

One thing left open, deliberately

The four Discord reaction glyphs are documented nowhere. They exist only as Go constants, so "Kai's approved set" lives in a conversation rather than in the repository, and 0e3fccb's test pins them to literals a future reader cannot check against anything.

I have not fixed that — writing down what I believe the approved set is would be me asserting Kai's decision from a commit message. If the set is recorded somewhere I have not found, the same shape of test would tie the reactions to it in about ten lines, and I will write it.

The hammer is checked against the example block rather than the table, because it prefixes every line rather than naming a state; a table row for it would be a fourth spelling rather than a check.

Test-only. No production change.

Refs #447

`0e3fccb` found two reaction glyphs had drifted from Kai's approved set **while their test passed**, because it asserted only that the four differed from each other. `e5c9163` then pointed the footer at the reaction constants so the two code surfaces cannot drift apart. `docs/sirens-echo-tool-disclosure.md` is a **third copy** of the same vocabulary, and nothing related it to either. ## They agree today Checked rather than assumed: ``` doc table ✅ 📭 ❌ constants ✅ 📭 ❌ toolOKGlyph, toolEmptyGlyph, toolFailedGlyph example prefix 🔨 == toolDisclosureGlyph (reactionTool) ``` So this pins a true thing before it stops being true, rather than reporting a defect. ## Why the doc is the copy that matters most here **A reader comparing the table to a reply is exactly the person a drift misleads**, and Kai reading the vocabulary is how the reaction drift was found in the first place. The two code surfaces now share a constant; the document a human consults was still a literal. ## Both directions, with the message naming which side moved ``` constant drifts: documents [✅ ❌ 📭] and the footer emits [✅ ❌ 📪] doc drifts: documents [✅ ❌ 📪] and the footer emits [✅ ❌ 📭] ``` Printing both sets matters because the fix differs — one is a code change and the other is a doc change, and a bare "mismatch" makes the reader work that out. The parse also fails loudly if the table disappears, so a doc rewrite cannot leave the test passing over nothing. ## One thing left open, deliberately **The four Discord reaction glyphs are documented nowhere.** They exist only as Go constants, so "Kai's approved set" lives in a conversation rather than in the repository, and `0e3fccb`'s test pins them to literals a future reader cannot check against anything. I have not fixed that — writing down what I believe the approved set is would be me asserting Kai's decision from a commit message. **If the set is recorded somewhere I have not found, the same shape of test would tie the reactions to it in about ten lines**, and I will write it. The hammer is checked against the example block rather than the table, because it prefixes every line rather than naming a state; a table row for it would be a fourth spelling rather than a check. Test-only. No production change. Refs https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/447
test(disclosure): tie the documented glyph table to the constants
All checks were successful
ci / image-build (pull_request) Successful in 19s
ci / test (pull_request) Successful in 33s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
19e9192eba
0e3fccb found two reaction glyphs drifted from Kai's approved set while their
test passed, because it asserted only that the four differed from each other.
e5c9163 then pointed the footer at the reaction constants so the two code
surfaces cannot drift apart.

docs/sirens-echo-tool-disclosure.md is a third copy of the same vocabulary and
nothing related it to either. Its table and the constants agree today, checked
rather than assumed, so this pins a true thing before it stops being true.

The doc is the copy that matters most for this failure: a reader comparing the
table to a reply is the person the drift misleads, and Kai reading the table is
how the reaction drift was found in the first place.

Both directions fail, and the message prints both sets so the reader sees which
side moved. Changing a constant fails. Changing the table fails.

The hammer is checked against the example block rather than the table, because
it prefixes every line rather than naming a state, and a table row for it would
be a fourth spelling rather than a check.

Refs sirens-echo#447

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/sirens-echo!463
No description provided.