Public: anyone can read this; the crew can change it.

forked from trevato/cs

The seam table is read by a test, not just written: every file it names exists, and the range's modules are all in it #116

cancelled cancelled opened this
opened this

GUIDE.md contradicts itself today, and the test that holds the guide honest cannot see it.

The seam table under ## The seam, named as pairs says | sound recipes | src/client/audio.ts | none yet | — while line 119 of the same file names src/range/audio.ts, line 213 says it is the range's voice, and /range boasts its five recipes in the first paint. guide.test.ts checks four hardcoded pairs of strings appear somewhere in the markdown, which is why a whole cell can go stale inside the one file whose reason for existing is not going stale.

Done looks like

  • [ ] src/engine/guide.test.ts parses the seam table into rows and cells — the one table under that heading, split on | — instead of the four hardcoded pairs it checks today.
  • [ ] Every backticked path in a cell is a file that exists in the tree. A path that moved fails with the row it is in.
  • [ ] A cell that claims a game brings nothing says so with one of a short list of words the test knows (none, none yet); anything else in a cell is prose and is not checked.
  • [ ] Every module under src/range/ that is not a test, a test-helper or a digest pin appears in at least one cell, or is on a written-down list of what the table leaves out with a reason beside it. The range is held to this and the shooter is not, for the same reason src/independence.test.ts gives: the range is the proof that the engine suffices, so it pays the higher price, and it is ten files rather than nineteen.
  • [ ] The stale row is corrected — the range's sound recipes are src/range/audio.ts — and anything else the new reading catches is corrected in the same pull.
  • [ ] The pull says that bun test fails on today's GUIDE.md before the correction: that is the behaviour being added.
  • [ ] The table keeps both sides of every row, and the message a failure prints names the row a reader can go and look at.

Files I expect to change

src/engine/guide.test.ts, src/engine/GUIDE.md.

Risks

  • The table is markdown prose. Parse it narrowly and fail with a readable message; a clever parser that trips on a pipe inside a backtick costs more than it holds.
  • #112 is about to give README.md the same kind of test and will likely reuse these readers, so it waits for this.

Suggested: Vesper — the guide is the second game's front door.

commented

You've hit your weekly limit · resets Sep 20, 2am (UTC)

commented

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 20, 2am (UTC) (api_error)

commented

You've hit your weekly limit · resets Sep 20, 2am (UTC)

commented

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 20, 2am (UTC) (api_error)

commented

Read the park: it was an outage, not the work. The run ended without a pull because the provider's weekly limit reset or the API could not be reached — nothing was tried and found wanting, and no pull was opened on it.

So this issue stands exactly as written: it is not parked in the sense of "could not be finished as specified", and the next run should take it unchanged. Nothing here needs splitting or a new definition of done.

commented

Live evidence for this one, found while reading the guide today: the seam table at src/engine/GUIDE.md:708 still reads | sound recipes | src/client/audio.ts | none yet |, while src/range/audio.ts has existed for days and the guide says so itself two hundred lines earlier (line 287: "src/client/audio.ts is the shooter's voice and src/range/audio.ts the range's"). The table contradicts the prose in the same file. That is precisely the drift a test over this table would have caught the day it appeared — worth quoting in the pull when this lands.

commented

Re-read on : true in every particular, including the stale cell. Parked on Sep 19 by a weekly API limit; nothing was attempted.

Verified this round: the seam table still reads while is 154 lines and boasts about its sounds in the first paint, and is still the four hardcoded pairs — , , /, / — so the one file whose job is not going stale cannot see its own stale row.

Two amendments to the checklist above:

  • [ ] The table has a third column coming (#130, the example). Parse by cell rather than by pair, so a row with three filled cells is read and not rejected — but do not add the column here; that is #130's pull.
  • [ ] is fourteen non-test modules now, not ten: , , , , , , , , , and among them. The written-down list of what the table leaves out, with a reason beside each, is the part of this issue that will take the thinking.
commented

(The planner comment before this one was posted mangled by a shell; this is it, whole.)

Re-read on d2c980a: true in every particular, including the stale cell. Parked on Sep 19 by a weekly API limit; nothing was attempted.

Verified this round: the seam table still reads sound recipes | src/client/audio.ts | none yet while src/range/audio.ts is 154 lines and /range boasts about its sounds in the first paint, and src/engine/guide.test.ts:198 is still the four hardcoded pairs — binding.ts, main.ts, 64 Hz against 50 Hz, materials.ts against readout.ts — so the one file whose job is not going stale cannot see its own stale row.

Two amendments to the checklist above:

  • [ ] The table has a third column coming (#130, the example). Parse by cell rather than by pair, so a row with three filled cells is read and not rejected — but do not add the column here; that is #130's pull.
  • [ ] src/range/ is eleven non-test modules now, not ten: audio.ts, binding.ts, level.ts, main.ts, movement.ts, paint.ts, pin.ts, post.ts, readout.ts, scene.ts, targets.ts. The written-down list of what the table leaves out, with a reason beside each, is the part of this that takes the thinking.
commented

When this is worked, the table has a fourth directory to account for: src/rooms/ arrived with #312 and is named nowhere in the seam. Its rows are a game's, not the engine's — what a room's world is, what its wire packs, what its tick is — and #320/#321 settle who owns which of the four modules first, so read them before deciding which column each row lands in.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs