v0.7.9.8 — the test command did not typecheck, and the plan had gone stale
Housekeeping before v0.8.0: the answer to "anything else that should be looked at first". One real hole, one stale document, and my own leavings. #102 — `npm test` passed green on a type error. `pretest` ran `scripts/build-web.ts`, which invokes `tsc --ignoreConfig` against three web entry points, so it saw only what those three transitively import and under a WEAKER configuration than tsconfig.json — no `noUncheckedIndexedAccess`, no `exactOptionalPropertyTypes`, `--types ''`. It never saw `src/server/` or a single file under `test/`. Demonstrated rather than argued: a planted `const DELIBERATE_TYPE_ERROR: number = 'not a number';` in src/server/session.ts gives `npm run typecheck` a TS2322 and `npm test` a clean `# fail 0`. `pretest` is `tsc --noEmit && node scripts/build-web.ts` now, and the same error exits 1 with the tests never running. This mattered THIS week rather than generally: v0.8.0 is steps 2-7 of the common board — display stream, credentials, persistence, Chromium supervisor — which is almost entirely src/server/, exactly the half the test command could not see. #103 — the plan had drifted from the code it is the source for. docs/plans/jitsi-common-board.md was written 2026-08-27, still said "No implementation has been performed", and is what steps 2-7 get built from. Step 1 shipped across four releases since, so every "current code finding" under it described a fault that is now fixed — a document reading as present tense and nine days stale sends the next reader to fix things twice. Measured: its PublicFrame sketch lists four properties never built (protocolVersion, config, scoring, deckCounts) and omits 28 that exist, and the shape is the real difference — the implementation is FLAT where the plan grouped things into objects, so a renderer written from the sketch would not compile. The plan now says so at the top and at step 1, names src/sim/view.ts and the redaction allow-list as the authority, keeps the original sketch for its reasoning, and calls out `protocolVersion` as unbuilt rather than dropping it quietly — step 2 is the reconnecting display stream and is the first thing that would want one. One step-1 item is STRUCK OFF rather than built: "add the Red Flag holder to the public player projection". The premise does not hold here. `decks.redFlags` is written once, in setup.ts, from `optionalRules.emergencyToolbox`, and never again — `redFlag.play` emits `phaseEnded` and does not spend it — so every player holds one or none does, decided before the deal. A per-player `redFlagHeld` would be one already-public option copied N times, while telling every reader of the common board that it varies by player and might change mid-game. Worse than the absence. Pinned by test so it is not re-raised from the plan. Four dead imports removed, all mine: `HAND_LIMIT` left unused in apply.ts, view.ts and web/game.ts when 0.7.9.6 consolidated the three copies of the §6.2 test, and `actingPlayer` in web/game.ts, dead since 0.7.9.5 made `currentActor` delegate. Finding them re-measured #46: `tsc --noUnusedLocals` now reports 40, up from 29 on 2026-08-30. That entry's "without the flag this list simply regrows" is a measurement rather than a forecast now. The other 36 and the flag stay open. 946 tests pass, up from 943. No behaviour changes: three new tests pin an invariant, and the rest is a build command, dead imports and a document. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y5boPxP6JHRYMm8adXaF5R
This commit is contained in:
co-authored by
Claude Opus 5
parent
88a42ae9e2
commit
312e0301e0
@@ -19,6 +19,77 @@ page as `v0.1.0 · <sha> · <date>`, so what is deployed can always be identifie
|
||||
|
||||
---
|
||||
|
||||
## 0.7.9.8 — 2026-09-07
|
||||
|
||||
Housekeeping before v0.8.0 — the answer to "anything else that should be looked at first", which
|
||||
turned up one real hole and one stale document.
|
||||
|
||||
### `npm test` did not typecheck, and passed green on a type error (#102)
|
||||
|
||||
`pretest` ran `scripts/build-web.ts`, which invokes `tsc --ignoreConfig` against three web entry
|
||||
points. So it saw only what those three transitively import, under a **weaker** configuration than
|
||||
`tsconfig.json` — no `noUncheckedIndexedAccess`, no `exactOptionalPropertyTypes`, `--types ''` — and
|
||||
never saw `src/server/` or a single file under `test/`.
|
||||
|
||||
Demonstrated rather than argued. Planting `const DELIBERATE_TYPE_ERROR: number = 'not a number';` in
|
||||
`src/server/session.ts`:
|
||||
|
||||
```
|
||||
npm run typecheck → src/server/session.ts(441,7): error TS2322
|
||||
npm test → # fail 0
|
||||
```
|
||||
|
||||
`pretest` is `tsc --noEmit && node scripts/build-web.ts` now, and the same planted error exits 1 with
|
||||
the tests never running.
|
||||
|
||||
**Why this week rather than generally.** v0.8.0 is steps 2-7 of the common board — a display stream,
|
||||
credentials, persistence, a Chromium supervisor — which is almost entirely `src/server/`, exactly the
|
||||
half the test command could not see.
|
||||
|
||||
### The common-board plan had drifted from the code it is the source for (#103)
|
||||
|
||||
`docs/plans/jitsi-common-board.md` was written on 2026-08-27, still said "No implementation has been
|
||||
performed", and is what steps 2-7 will be built from. Step 1 has since shipped across four releases,
|
||||
so every "current code finding" under it described a fault that is now fixed. A document that reads
|
||||
as present tense and is nine days stale sends the next reader to fix things twice.
|
||||
|
||||
Measured: the plan's `PublicFrame` sketch lists four properties never built (`protocolVersion`,
|
||||
`config`, `scoring`, `deckCounts`) and omits **28** that exist. The shape is the real difference —
|
||||
the implementation is flat where the plan grouped things into `clock`, `config`, `scoring` and
|
||||
`deckCounts` objects, so a renderer written from the sketch would not compile against the projection.
|
||||
|
||||
The plan now says all of this at the top and at step 1, names `src/sim/view.ts` and
|
||||
`test/redaction.test.ts`'s allow-list as the authority, keeps the original sketch for its reasoning,
|
||||
and lists what has been gained since. `protocolVersion` is called out as unbuilt rather than quietly
|
||||
dropped — step 2 is the reconnecting display stream and is the first thing that would want one.
|
||||
|
||||
**And one step-1 item is struck off rather than built.** The plan asks for the Red Flag holder on the
|
||||
public player projection, "public game state but currently absent from `Frame`". The premise does not
|
||||
hold here: `decks.redFlags` is written once, in `setup.ts`, from `optionalRules.emergencyToolbox`,
|
||||
and never again — `redFlag.play` emits `phaseEnded` and does not spend it — so every player holds one
|
||||
or none does, decided before the deal. A per-player `redFlagHeld` would be one already-public option
|
||||
copied N times, while telling every reader of the common board that it varies by player and might
|
||||
change mid-game. That is worse than the absence. The invariant is pinned by test so the item is not
|
||||
re-raised from the plan text.
|
||||
|
||||
### Four dead imports, and a measurement for #46
|
||||
|
||||
Removed: `HAND_LIMIT`, left unused in `apply.ts`, `view.ts` and `web/game.ts` when 0.7.9.6
|
||||
consolidated the three copies of the §6.2 test into one, and `actingPlayer` in `web/game.ts`, dead
|
||||
since 0.7.9.5 made `currentActor` delegate. All four were mine.
|
||||
|
||||
Finding them re-measured #46: **`tsc --noUnusedLocals` now finds 40, up from 29 on 2026-08-30.** That
|
||||
entry's prediction — "without the flag this list simply regrows — it is regrowing now" — is a
|
||||
measurement rather than a forecast. The remaining 36 and the flag itself are still open; ten of them
|
||||
still wait on #48 settling what `sim/replay.ts` is for.
|
||||
|
||||
### Proof
|
||||
|
||||
946 tests pass, up from 943. Nothing in this release changes behaviour: the three new tests pin an
|
||||
invariant and the rest is the build command, dead imports and a document.
|
||||
|
||||
---
|
||||
|
||||
## 0.7.9.7 — 2026-09-07
|
||||
|
||||
The last item off 0.7.9.6's sweep — the one parked as a maybe, which turned out to have a second half
|
||||
|
||||
Reference in New Issue
Block a user