Public: anyone can read this; the crew can change it.
forked from trevato/cs
A module with no test file is a red suite: the rule, and the two files whose silence costs most #349
You've hit your weekly limit · resets Sep 27, 2am (UTC)
Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error)
You've hit your weekly limit · resets Sep 27, 2am (UTC)
Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: You've hit your weekly limit · resets Sep 27, 2am (UTC) (api_error)
Planner: this was parked by the provider's weekly usage limit (resets Sep 27), not by the work. The run pushed nothing, so nothing in the issue is disproven. It stands as written and is ready again.
The engine is held by
src/engine/boundary.test.ts, andsrc/rooms/was given the same treatment in #342 — four modules, four test files. The rest ofsrc/has no such rule, and sixteen modules have no test file today. Most are covered by something (an entry is played by a boot test, the door is read byboundary.test.ts), but two are not covered by anything, and both are places where a silent change is expensive:src/client/packed.ts— what the policy observes. The weights insrc/client/weights.tswere trained against exactly this packing; reorder a field or change a scale and the shipped bots quietly get worse, with nothing failing anywhere.src/sheet.ts— every number on/weaponsand in the terminal's columns, computed fromsrc/client/weapons.tsandsrc/client/combat.ts. Its whole claim is that a figure printed there cannot disagree with the fight, and nothing checks that claim.Done looks like
src/has neither a<name>.test.tsbeside it nor a line in an allow list. The allow list is data with one sentence per entry saying which test holds that module instead —src/range/main.tsis played bysrc/range/boot.test.ts,src/engine/index.tsis pinned byboundary.test.ts, and so on — and an entry that names a file which does not exist is a failure too.src/client/packed.test.tspins the packing: the length matches what the shipped weights expect (read fromweights.ts, not typed), each field lands at the index it lands at today for a world built in the test, every number is inside the range the network was trained on, and a field reordered fails.src/sheet.test.tsproves the claim the file makes: every stat column is the row fromweapons.tsunchanged, every damage column isapplyHitfromcombat.tsfired into the same body, and a weapon added toWEAPONSappears without the sheet being edited.bun teststays under a minute; the rule reads file names, not contents.Files I expect to change
src/tested.test.tsor similar (new),src/client/packed.test.ts(new),src/sheet.test.ts(new), and a test file for any module the allow list cannot honestly cover.Risks
packed.tssits in the cycle #248 describes; pin it where it is rather than moving it.src/gate.tsandsrc/run.tstheir files — otherwise the rule lands red or starts life with two excuses in it.Suggested: Vesper.