T01. The maintainer asked why the button says "I need to read this" and
why nothing closes. Two defects behind one control: the label described a
reading while the control STOPS THE SERVER (hotseat.rs reads `done` and
breaks its loop), and acknowledging it changed nothing on screen -- the
tab kept a live table and a `play again` pointing at a closed port.
Label is now "end session -- stops the game server". The reply says the
session has ended and the tab can be closed. The script seals the page on
a `closed` reply: removeAttribute('data-drop') on every control, so they
stop being droppable by the same rule that made them droppable. CSS is how
that reads, not the mechanism. removeAttribute rather than
setAttribute(_, null) -- the latter writes the truthy string "null" in a
browser, so the control would stay live while the stub called it sealed.
THE REPLY PATH HAD NEVER BEEN EXECUTABLE IN A TEST. jsrun's fetch stub
returned {then: function(){return this}}, which never invoked its
callbacks, so every line of the script reacting to the server was
unreachable from every test in this project. That is why the defect
survived: a page ignoring the server looked identical to one acting on it.
The stub now delivers a real then-chain and gesture_with_reply reports
which controls survive. The seal is mutation-proven -- deleting the
`closed` branch turns exactly one test red -- and a negative control
asserts an `ok: dealing` reply does NOT seal, since a seal that fired on
every reply would pass the first test and break `play again`.
T02. Draw and discard drawn as offset stacks with their counts. The
shuffle question the task required answering is settled and the answer is
that it already works: games/ground/src/lib.rs:1419-1435 implements the U4
default -- deterministic reshuffle of the discard seeded from seed ^ round,
skip the draw if both are empty -- and ground-game CONFIRMED U4 on
2026-08-03. A ruled rule, not an invented one, nothing to raise. The event
already reads out in the log; what the piles add is the state before it
fires, which is derivable from the view. A claim that a reshuffle HAS
happened would not be, and is not made.
The coverage gate caught its own probe going stale when the "17 remaining"
text was replaced. The count now lives in the pile's <title> -- a stable
probe and what a screen reader announces, where the on-canvas numeral
could be any number on the page.
39 tests pass; cb-play 22 including play_again_deals_a_second_game.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
|---|---|---|
| .forgejo/workflows | ||
| benchmarks | ||
| crates | ||
| decisions | ||
| editions/ground-darvo-r0 | ||
| evidence | ||
| games/ground | ||
| history | ||
| research | ||
| scenarios | ||
| specs | ||
| tools | ||
| workplans | ||
| .custodian-brief.md | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| clippy.toml | ||
| facts.toml | ||
| gates.toml | ||
| INTENT.md | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| rust-toolchain.toml | ||
| WORK-RECORDS.md | ||
clay-borg
A rebuild from scratch simulation and games engine framework set up to assimilate and optimize techniques and implementations useful for games, simulations, robotics.
Licensed under the Target Revenue Source License (TRSL V1C1) — see LICENSE; canonical text lives in the org's target-revenue repository.
Running the gates
make all # every gate, from a clean shell
make -C /path/to/clay-borg all # …or from any other directory
There is no environment setup step. No cd, no export PATH, no
activation script. make locates the repo from its own path and cargo
from the standard rustup locations; the Python tools do the same via
tools/repo.py. The only prerequisites are a rustup toolchain and Python
3.11+.
This is deliberate and enforced: make env-test runs every tool from /
with a PATH containing no cargo, and make all includes it. CB-RES-0003
measured 84 agent turns and $15.33 spent prefixing commands with cd and
export PATH before that friction was fixed at the root (CB-WP-0004 T01).
Other useful targets: make cost (spend per task), make cost-budget
(spend since the last commit), make cost-mix (mechanical vs judgment
turns), make loop-lint (executable InnerLoop rules), make self-tests
(every tool's positive control).
GROUND
The first product vertical is a virtual tabletop implementation of GROUND — A Game of Bonds and Rivalry: DARVO Edition. The boardgame itself (rules, editions, content) is at home in the sister repository ground-game — that repo is authoritative for what GROUND is; clay-borg implements the engine that runs it.