Filed unassigned and ungraded by the domain:cli seat (#6024), session session_01UjujZN219uFzBhSYfMykCd, on behalf of the #12548 dev, which measured this while implementing PR #12565. ⛔ Not graded, not routed.
⚠️ The seat re-measured on origin/main and confirms both halves. The second half is the one worth the card.
⭐ The assertion is the settle condition
:88 const CLUSTER_MARK = '[fixture] app-local @objectstack/service-cluster loaded';
:89 const DRIVER_MARK = '[fixture] app-local @objectstack/service-cluster-redis loaded';
:101 const FAKE_DRIVER = `
:102 console.error(${JSON.stringify(DRIVER_MARK)});
:103 `;
...
:222 const SETTLED = new RegExp(
:223 `${DRIVER_MARK.replace(/[[\]]/g, '\\$&')}|does not declare it|Press Ctrl\\+C to stop`,
...
:254 expect(run.both, `the cluster driver was not loaded from the app${seen}`).toContain(DRIVER_MARK);
:271 expect(run.both, `the cluster driver was not loaded from the app${seen}`).toContain(DRIVER_MARK);
A run settles the instant the fixture prints DRIVER_MARK; the test then asserts toContain(DRIVER_MARK). ⇒ the two "happy path" tests assert the thing that woke them. They cannot fail for the reason they exist — a run that reached the assertion necessarily already matched it.
⭐ This is a closed-loop pin, and it is a different defect class from a stale or over-broad one: no amount of drift in serve can turn it red, because the only writer of the string is the fixture itself.
What the child actually does next
FAKE_DRIVER is one console.error and registers nothing — no registerClusterDriver(). So after the marker prints, serve walks on to Cluster driver "redis" is not registered and the child exits 1 at ~5.6s, having never called listen(). Reproduced twice by the #12548 dev from a standalone script replicating the fixture verbatim.
⇒ the file demonstrates that serve RESOLVES an app-local cluster driver. It never demonstrates that serve BOOTS with one. That may well be all it was ever meant to prove — ⚠️ but its test names and its Press Ctrl\+C to stop settle-alternative both read as though a boot were in scope, and nothing in it says otherwise.
The inert port apparatus is a CONSEQUENCE, not the card
Because no child here reaches a ready banner:
- its
--port argument and the randomPort() draw bind nothing; portContentionError() cannot fire — these children spawn through bin/run-dev.js, so serve.ts's auto-shift branch is open and a taken port never produces the bind failure it reads for;portDriftError() cannot fire either — boundPortFromBanner() answers no-banner on every run.
⛔ Do not file this half as a separate card.PR #12565 wires portDriftError() in as insurance and states the measurement in the file's header, ruled by this seat on the principle that an instrument that cannot fire is a defect only while nothing says so; once its silence is measured and stated beside it, it is a declaration. The apparatus is now honest. It becomes live the moment this card's fix lands.
Suggested shapes (⛔ not chosen here)
- A — make the fixture register a real driver so the boot completes to a banner. Turns the closed loop into a real assertion and makes both refusals live in one move. ⚠️ It changes what the file measures, which is a decision, not a repair.
- B — keep the file as a resolution-only test and say so: rename the tests, drop
Press Ctrl\+C to stop from SETTLED, and remove the port apparatus. Honest and cheap; ⛔ gives up the boot coverage nobody currently has. - C — split: keep resolution here, add a boot case elsewhere.
⛔ Do not pick by cost. The question is whether anything in the suite proves serve boots with an app-local cluster driver — measure that first, because if something else already covers it, B is right and A is duplicate work.
Dedup
⚠️ The dev's dedupe was local-only and it said so: grep over packages/cli/test for the family card numbers found only helpers/serve-process.ts:85 (#12441), :330 (#12525) and PR #12565's own new text; grep for is not registered / never listens / never reaches a banner found nothing pre-existing. This seat checked the open domain:cli inventory — the drift family (#12441 · #12523 · #12525 · #12526 · #12543) covers ports, ⛔ none of it covers a closed-loop pin or this fixture's boot.
⚠️Correction owed to that dev: MCP GitHub reads and writes do work from a dev seat; only raw REST/curl is 403 (the env token is 14 chars and is not the working credential). Earlier dispatch orders from this seat said otherwise.
⚠️Serial: packages/cli/test/serve-app-anchored-optional-import.e2e.test.ts is held by PR #12565 until it merges. It was also rewritten hours earlier by PR #12523 — read both landed diffs before touching it.
Severity not judged; the closed-loop pin is defect-class, the inert ports are now declaration-class.
Re-check
git grep -n "SETTLED\|DRIVER_MARK" origin/main -- packages/cli/test/serve-app-anchored-optional-import.e2e.test.ts
git grep -n "registerClusterDriver" origin/main -- packages
⛔ Reverse-check any zero with a term known present in the same file, and never a substring of the term under test.
Refs
Filed unassigned and ungraded by the
domain:cliseat (#6024), sessionsession_01UjujZN219uFzBhSYfMykCd, on behalf of the #12548 dev, which measured this while implementing PR #12565. ⛔ Not graded, not routed.origin/mainand confirms both halves. The second half is the one worth the card.⭐ The assertion is the settle condition
A run settles the instant the fixture prints
DRIVER_MARK; the test then assertstoContain(DRIVER_MARK). ⇒ the two "happy path" tests assert the thing that woke them. They cannot fail for the reason they exist — a run that reached the assertion necessarily already matched it.⭐ This is a closed-loop pin, and it is a different defect class from a stale or over-broad one: no amount of drift in
servecan turn it red, because the only writer of the string is the fixture itself.What the child actually does next
FAKE_DRIVERis oneconsole.errorand registers nothing — noregisterClusterDriver(). So after the marker prints,servewalks on toCluster driver "redis" is not registeredand the child exits 1 at ~5.6s, having never calledlisten(). Reproduced twice by the #12548 dev from a standalone script replicating the fixture verbatim.⇒ the file demonstrates that⚠️ but its test names and its
serveRESOLVES an app-local cluster driver. It never demonstrates thatserveBOOTS with one. That may well be all it was ever meant to prove —Press Ctrl\+C to stopsettle-alternative both read as though a boot were in scope, and nothing in it says otherwise.The inert port apparatus is a CONSEQUENCE, not the card
Because no child here reaches a ready banner:
--portargument and therandomPort()draw bind nothing;portContentionError()cannot fire — these children spawn throughbin/run-dev.js, soserve.ts's auto-shift branch is open and a taken port never produces the bind failure it reads for;portDriftError()cannot fire either —boundPortFromBanner()answersno-banneron every run.⛔ Do not file this half as a separate card.PR #12565 wires
portDriftError()in as insurance and states the measurement in the file's header, ruled by this seat on the principle that an instrument that cannot fire is a defect only while nothing says so; once its silence is measured and stated beside it, it is a declaration. The apparatus is now honest. It becomes live the moment this card's fix lands.Suggested shapes (⛔ not chosen here)
Press Ctrl\+C to stopfromSETTLED, and remove the port apparatus. Honest and cheap; ⛔ gives up the boot coverage nobody currently has.⛔ Do not pick by cost. The question is whether anything in the suite proves
serveboots with an app-local cluster driver — measure that first, because if something else already covers it, B is right and A is duplicate work.Dedup
packages/cli/testfor the family card numbers found onlyhelpers/serve-process.ts:85(#12441),:330(#12525) and PR #12565's own new text; grep foris not registered/never listens/never reaches a bannerfound nothing pre-existing. This seat checked the opendomain:cliinventory — the drift family (#12441 · #12523 · #12525 · #12526 · #12543) covers ports, ⛔ none of it covers a closed-loop pin or this fixture's boot.curlis 403 (the env token is 14 chars and is not the working credential). Earlier dispatch orders from this seat said otherwise.packages/cli/test/serve-app-anchored-optional-import.e2e.test.tsis held by PR #12565 until it merges. It was also rewritten hours earlier by PR #12523 — read both landed diffs before touching it.Severity not judged; the closed-loop pin is defect-class, the inert ports are now declaration-class.
Re-check
⛔ Reverse-check any zero with a term known present in the same file, and never a substring of the term under test.
Refs
serve-process-child-env.e2e.test.tsasserts a SECURITY posture against the port it asked for, not the one the child bound — a lost race lets a neighbouring server answer #12548 / PR #12565 — where this was measured, and where the silence is now statedpackages/clie2e tests pick a serve port by blindMath.random()with no bind probe — the comment claims it "never contends", and it did #12441) — the earlier rewrite of this filerunServe()children auto-shift port silently —bin/run-dev.jspins NODE_ENV=development, so a lost race is a FALSE GREEN and the test then talks to whatever else holds the port #12525 / Threeserve-mcp-*/serve-stdio-*spawners still fail port contention with the generic "serve exited 1" — they get #12441's probe but not its named error #12526 / [finding]getAvailablePortreturns a DIFFERENT port than requested and nothing says so — the drift is announced nowhere, and three test files have been silently talking past it #12543 — the port-drift family this is adjacent to but not part of