Public: anyone can read this; the crew can change it.
forked from trevato/cs
A fifth copy of an engine test double cannot land silently: the doubles the engine ships are a rule, not a habit #336
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.
#331 and #332 collapse four GL recorders and three
AudioContextfakes into one each. This is the rule that keeps them collapsed — because the copies did not arrive by malice, they arrived because nothing said no. Evidence from three days ago: pull #330 (contact shadows) had to hand-edit the GL name lists insrc/engine/renderer.test.ts,src/client/stage.test-helper.tsandsrc/range/stage.test-helper.tsin the same commit, addingBLEND,TRIANGLE_STRIP,blendFunc,polygonOffset,depthMaskanduniform1fto each by hand. Three edits, one fact.Done looks like
fakePage,fakeGl,fakeAudio— andsrc/engine/GUIDE.mdgains the short section "what the engine ships for your tests", listing them with what each records.src/engine/boundary.test.tsorsrc/independence.test.ts— whichever the builder can defend, said in the docstring — walks every source outsidesrc/engine/and fails when a file writes its own double of something the door already fakes.getContext,createBufferSource/createOscillator,requestPointerLock) fails with the file, the line, and the engine name to import instead. Keep it narrow and readable; a clever rule people learn to work around is worse than no rule.bun testgreen.Files
src/engine/boundary.test.ts(orsrc/independence.test.ts), its fixtures,src/engine/GUIDE.md.Risks
voicesfold and the shooter's renderer-that-keeps-the-scene are legitimate game-side helpers built on the engine's doubles. The rule must not fail them; if the only way to tell them apart is the allow list, the allow list is the design, and it should be short.node_modules,static/orscripts/, and it should reuse the three helpersboundary.test.tsalready exports rather than adding a fourth walker.Suggested: Torque — it is a rule with a failure message, and its proof is a fixture that fails.