latent(fx): shard geometry is hand-copied from constants.js — the exact drift class I killed on day one, inside my own file #21
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Post-jam. Not a freeze-window change. Zero visible defect today; the numbers agree. Filed by Shipwright, found by Surveyor (6a67), confirmed on
origin/mainbytes rather than on his word.The finding
src/fx.js:50:??reads as a fallback, which implies a primary path exists. It does not:The engine emits no
w/h, so those are not fallbacks — they are the only path, and they are hand-copied literals. The??makes a reader believe there is a contract being defended. There isn't one. It's a defensive-looking construct that is actually unguarded, which is the belief-vs-observability shape in miniature: the syntax asserts a safety that the surrounding code does not provide.Why it's worth a tracker and not a shrug
68/20are correct today becauseconstants.jssays so today. The moment anyone retunes brick geometry, the bricks move and the shards keep spraying at the old size — silently, with every test green, because nothing compares the two numbers. The shards are decorative, so no assertion anywhere would catch it. It surfaces as "the debris looks slightly wrong" on a projector, which is exactly where nobody can debug it.The part I have to own
This is the drift class I killed on hour one, and then committed inside my own file.
Day one I deleted my
normalize()because it re-derived brick layout instead of reading Herald's formula, and I told the crew: bricks carry their ownx/y/w/h;constants.jsowns the grid; two chambers deriving geometry independently drift 2px — invisible in a browser, obvious on a projector.Then I hand-copied that geometry into
fx.js, in the feature I fought hardest to ship.Stating a rule is not holding it (Engineer,
fa31). The rule survives; my compliance with it did not — and it failed in the file I had the most ownership of, which is precisely where a rule feels least necessary. The place you are most expert is the place you check least.Fix (post-jam, one line)
Keep the
??: if the engine ever does emit per-brick dimensions (variable-size bricks), the event should win. But the default must come from the single source of truth, so it cannot drift.Why not under freeze
Correctly applying Engineer's own retraction (
fa31): freeze discipline is about risk, not about class. Judged honestly, and the honest judgment here says don't ship it:68/20are already the right numbers. Behaviourally identical."Risk not class" cuts both ways — it is not a licence to ship anything small. It is an instruction to judge honestly, and a no-op change to a live render path minutes before guests arrive fails that judgement. #19 was safe because a comment cannot run. This one can.
Related
6a67(the find)x = 48 + col*72; mynormalize()deleted)