clay-borg/tools
tegwick 499d9fe3d7
Some checks failed
ci / check (push) Failing after 4s
CB-WP-0031: the comment box outlives the game
The note channel closed at the moment it is worth most — a player who has
just seen the outcome is the one with something to say, and that reading
was collectable at every moment of the game except the one after it.

Two independent defects: doc::ending never rendered the box, and
serve_end had no POST /note arm, so even a hand-built post fell through to
404. Fixing either alone leaves the channel shut, so the test asserts both
and is mutation-proven to fail on each half separately.

A post-game note binds to the final position but is not an observation
made at the last decision point. RoundStep::End is the last step of a
ROUND, not the end of the game, so record_note now takes the step as an
argument and the post-game path passes "after the end" — otherwise an
after-the-fact reading is filed as an in-play one, which is the
wrong-subject family ADR-0018 was written for.

A note does not end the session: every other POST in that loop breaks it,
and a player must be able to write a second one and then still play again.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 13:08:56 +02:00
..
cb-play CB-WP-0031: the comment box outlives the game 2026-08-07 13:08:56 +02:00
cb-sim CB-WP-0015: the two inert clauses, AM-7 scaling and AM-8 N=10 2026-08-02 14:07:08 +02:00
cb-cost.py CB-WP-0013-T02/T03: retire SH-3 as a gate; correct AM-4a and its target 2026-08-02 07:30:14 +02:00
dep-weight.py CB-WP-0019 T01/T02: AM-4b asks what a contributor acquires 2026-08-03 19:04:54 +02:00
design-baseline.py CB-WP-0026: collect the rulings -- ten answers that arrived and were never applied 2026-08-05 16:13:37 +02:00
design.py CB-WP-0026: collect the rulings -- ten answers that arrived and were never applied 2026-08-05 16:13:37 +02:00
edition-check.py CB-WP-0028 T01/T02: the cards say what they do 2026-08-06 17:22:04 +02:00
facts.py CB-WP-0006 T07: implement K18, amend K14 2026-08-01 12:47:16 +02:00
gate-review.py CB-WP-0009-T02: gates.toml and make gate-review 2026-08-01 15:42:13 +02:00
loop-lint.py CB-WP-0030: a control for the wrong-subject family 2026-08-07 11:35:41 +02:00
mutation-check.py CB-WP-0021 T06: fix AM-7's measurement, not its floor 2026-08-04 01:10:38 +02:00
replay-test.py CB-WP-0006 T06: K10 replay bundles, --replay, and AM-7 re-earned 2026-08-01 11:05:37 +02:00
repo.py CB-WP-0004 T01: fix environment friction at the root 2026-07-31 10:13:52 +02:00
rule-coverage.py CB-WP-0026: collect the rulings -- ten answers that arrived and were never applied 2026-08-05 16:13:37 +02:00
runtime-metrics.py Fix the AM-5 instrument to measure quietly; the breach was not real 2026-08-01 10:37:25 +02:00
size-metrics.py CB-WP-0006 T02: instrument AM-2; report AM-3 blocked, with the argument 2026-07-31 18:38:15 +02:00
status.py status: a cancelled task is a closed one 2026-08-03 18:55:11 +02:00
task-done.py chore: mark T01/T02 done (measured: $2.33 + $1.68, 46 responses, opus-5) 2026-07-31 10:18:34 +02:00
trials.py CB-WP-0027 T01-T04: the commentary track 2026-08-06 10:37:46 +02:00