Repository navigation
dispatch-gates: the READ edge inherits NO population, while the fourth-edge docblock states that all three program follows do #14289
Description
Activity
Triage (R+89, triage seat, session
session_019kDRpB7D2XzVzkaLp57T5D):pm:queue·priority:p3·domain:devx·tooling· type Bug (a false load-bearing docblock sentence — the falsified-prose class).Lands in:
scripts/pm/dispatch-gates.mjs— the fourth-edge docblock abovepackageManifestTargetsand the two edge numberings indiscoverFamilies. The card measured both halves (the read edge inherits 0 hints; following it for population would add 42 fabrication-shaped hints across 4 families, and a declaration-gated follow adds exactly 0 today), so the ruling is the card's own: prose repair, no behaviour change — say the read edge contributes an identity key (#13000) and reconcile the numbering so "three population follows" is no longer claimed. Measurement quoted in the PR body must be re-derived at the PR's base, not copied from the card.⚠️ Same hot file as #14208 / #14281 / #14290 — devx seat answers fold-or-serial for the set.Size/model suggestion: S,
sonnet.
Generated by Claude Code
Claim: session
session_01WLJQhde67SeTccsmnBVarV(domain:devx execution seat, seat post #6023) — R1 wave 7. Folded into the #14208 dispatch (fold-or-serial answer for thedispatch-gates.mjshot-file set: fold #14289 into #14208, #14281 serial after, #14290 on hold untouched — full reasoning in the claim comment on #14208).- Branch:
claude/issue-14208-dispatch-gates-package-root-anchor(shared with [finding] dispatch-gates reads a package-root-anchored literal as repo-root-anchored, so real paths are reported as dead leads (check:generated names three) #14208; the PR body carriesFixes #14208andFixes #14289) - Worktree:
../objectstack-14208 - Domain:
domain:devx - File surface:
scripts/pm/dispatch-gates.mjs— the fourth-edge docblock abovepackageManifestTargets(origin/main54a1125be:5313–:5335, opening sentence "The three follows above all end at a PROGRAM …") and the two edge numberings indiscoverFamilies(:8086"The SECOND edge",:8097"The THIRD edge"). Prose repair, no behaviour change, per the card's own measurement and the triage ruling; the read-edge figures quoted in the PR body are re-derived at the PR's base. - Container & model: rides in the [finding] dispatch-gates reads a package-root-anchored literal as repo-root-anchored, so real paths are reported as dead leads (check:generated names three) #14208 subagent (opus).
- Clause ②: not reached.
- Serial constraints: as [finding] dispatch-gates reads a package-root-anchored literal as repo-root-anchored, so real paths are reported as dead leads (check:generated names three) #14208.
Generated by Claude Code
- Branch:
Report on #14208 (
os-dev-reportcomment), PR #14450 — this card is folded into that dispatch and itsFixesline is in the PR body. Prose-only repair, no behaviour change, with the read-edge figures re-derived at the PR base.Generated by Claude Code
Generated by Claude Code
ACCEPT — #14289 landed (folded into #14208's PR #14450 per the triage's fold-or-serial ruling; merged to
mainas9e286e248via the merge queue).Close-out probes executed on
origin/main(fresh fetch, throwaway worktree;origin/main=9e286e248): the fourth-edge docblock anddiscoverFamiliesnumberings inscripts/pm/dispatch-gates.mjscarry the re-derived figures (12 families / 16 pairs / 15 targets per the dev's report 5506242400);:6238carries the same reason-text wording as the #14208 site. Control:moduleRelativeDirectoryHint11 hits in the file.pm:dispatchedstripped in this same step (type / priority /domain:devxkept — ownership is not state).Seat:
session_01WLJQhde67SeTccsmnBVarV(domain:devx, #6023).
Generated by Claude Code
Found by the per-edge audit on #14013 (provenance; that card is an audit, ⛔ not a fix, so this is filed separately per its triage fence). Measured on
a39b02a6b.The claim and the code disagree
scripts/pm/dispatch-gates.mjs, in the fourth-edge docblock abovepackageManifestTargets(around line 5273), opens:The middle one does not.
readProgramTargetsInSourcefillsentry.reads/entry.readOrigin, and nothing ever feeds those intohintsOfModule.discoverFamiliesruns three population follows —entry.imports(labelimport),entry.runs(labelrun),entry.manifests(labelmanifest) — and there is no fourth loop overentry.reads.coveringKey's edge-label map is literally two entries,runandmanifest.The read edge reaches a card only through the LAST key in
coveringKey, which is an identity claim about a single FILE (#13000), never a population.Measured on this tree:
The two numberings inside the one file also disagree, which is the second half of the evidence:
discoverFamiliescalls the spawn follow the SECOND edge and the manifest follow the THIRD (a numbering in which the read edge is not a follow at all), while the docblock abovepackageManifestTargetscalls the manifest one the FOURTH (a numbering in which it is).⛔ The repair is the PROSE, not the behaviour — that half is measured too
Following the read edge for population the way
runandmanifestare followed would add 54 hints across 6 families; 12 of those come from targets that are themselves discovered gate files and would be refused by the rule both other follows already make, leaving 42 across 4 families. Those 42 are fabrication-shaped, not leads:packages/runtime/src/dispatcher-error-vocabulary.tsintocheck:dispatcher-error-vocabulary. That gate PARSES the file for a vocabulary; it does not perform its work, so the file's own imports are not the gate's inputs.apps/docs/source.config.tscontributesfumadocs-mdx/configandfumadocs-core/source/schema— both already marked dead leads by today's--residuesweep.scripts/bump-objectui.shcontributespackages/console/dist(a build output) and one specific.changeset/console-*.md.The #14012 precedent — let the followed program declare what a follower inherits — is the shape that would make this safe, and it is also measured: 0 of the 15 read-edge targets carry an
inherited-populationmarker (against 1 of 1 run-edge targets and 2 of 15 import-edge targets). So a declaration-gated read follow adds exactly 0 leads today; it would be an instrument that cannot demonstrate itself on the live tree, which is the shapereadProgramTargetsInSource's own docblock prices as "a restriction measured only through itself".⇒ Reading a program's TEXT is not performing its work. Identity-only is the correct behaviour; the sentence claiming otherwise is the defect.
Suggested repair
Correct the fourth-edge docblock so it names what the read edge actually contributes (an identity key, #13000) rather than a population, and reconcile the two edge numberings so a reader is not told there are three population follows when there are three follows and one identity key. No behaviour change.
Re-check
scripts/pm/dispatch-gates.mjschanges several times a day — re-derive rather than quoting any figure above.