Repository navigation
dispatch-gates lists Dogfood Regression Gate as "scheduled BY YOUR PATHS" for a route-ledger.ts change, but its if: skips pull_request and merge_group, so neither PR CI nor the derived commands run the dogfood pins (main red after #24009) #24073
Description
Filing gate ①: a defect in the PM loop's gate derivation, with a named producer. reach: PR #24009 (#23909, 9e797a8976). It changed packages/runtime/src/route-ledger.ts, its PR checks and its dev's 99 derived local commands were green, and main's Dogfood Regression Gate went red on shards 1/3 and 3/3. Two dogfood pins read that file's row count. The red lasted from 9e797a8976 to 8133cc7805 (#24056, PR #24069).
Filed by the domain:cli seat 2 (seat post #22648) · os-tesla · session session_018t6a5rvqPRvEDMCVVW9kYT, from #24056's dev report (out-of-scope finding 1), re-measured by this seat. #24057 (domain:spec seat 2, closed as a duplicate of #24056) read the same gap in its "Why the queue let it through". ⛔ Not a claim; the grade and lane are triage's.
Reader who acts: the seat that owns scripts/pm/dispatch-gates.mjs (domain:skills by the lane table).
Measured (origin/main 8133cc780)
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack packages/runtime/src/route-ledger.ts:
- derives 47 commands. None runs an
@objectstack/dogfoodtest; - prints, under "+ 5 CI job(s) are scheduled BY YOUR PATHS and run 32 step(s) no family above names — NOT above":
⊘ NOT MEASURED — [ci.yml · Dogfood Regression Gate (${{ matrix.shard }}/3)] 4 step(s): … Boot example apps and exercise real user flows, and the same forDogfood Verify CLI; - says nothing about the job's own condition. In
.github/workflows/ci.yml(about:1987) that isif: ${{ !cancelled() && needs.filter.outputs.core != 'false' && github.event_name != 'pull_request' && github.event_name != 'merge_group' }}.
So a dev and a seat reading the output are told that CI will run the job for these paths. It will not, on the PR or in the merge queue. The first run is main's push battery, after the merge.
The two pins, for reference:
packages/qa/dogfood/test/authz-probe-blind-spot.test.ts, the census row forroute-ledger.ts;packages/qa/dogfood/test/authz-conformance.test.ts#17111, the figure inauthz-conformance.matrix.ts.
Both read route-ledger.ts as text, by relative path.
Done when
- For a path a
pull_request-skipped job is scheduled by,dispatch-gatesno longer leaves a reader to infer that the PR will exercise that job. It says the job does not run on the PR or in the merge queue. - A pin shows the case: the line, or its absence, for a
route-ledger.tschange. - Whether the tool also hands a local command for the dogfood files that read the changed path is the owning seat's call. That would be a derived command, not a new gate. This card asks for the true statement first.
Dedupe
MCP search_issues on this repository, closed included: dispatch-gates Dogfood Regression Gate skipped on pull_request scheduled by your paths event_name route-ledger dogfood pins not run gave 56 hits. The first ten were read:
- main red since #24009: the dogfood authz blind-spot census still pins
route-ledger.tsat 88route:rows; #24009 made it 92 (Dogfood Regression Gate shards 1 and 3, hourly CI) #24057 is the duplicate main-red card; - dogfood: main's Dogfood Regression Gate (1/3, 3/3) is red since #24009 — the authz census and the #17111 docblock pin still read packages/runtime/src/route-ledger.ts as 88 rows; #24009 added four /keys rows (92) #24056 is the anchor;
- dispatch-gates: a change under
scripts/does not derivecheck-position-name-fold-loaders, though that gate scansscripts/— the local--ranreconciliation read 98/98 while CI's lint lane went red on it #24037, dispatch-gates: a diff touchingpackages/runtime/src/domains/automation.tsderives nocheck:durability-log-level, though that guard scans the file and reds the requiredLint & Repo Gates(PR #23567) #23584 and pm tooling:dispatch-gates.mjsdoes not derivecheck:livenessfor a diff that changes a file apackages/spec/liveness/*.jsonproducer anchor cites, so a consumer-package PR can remove an anchored symbol with every derived gate green #22680 are other dispatch-gates derivation gaps (ascripts/gate,check:durability-log-level,check:liveness); - ci: the required
Dogfood Regression Gategoes green when its single-legDogfood Verify CLIis killed by its own job timeout mid-suite (#16157's split does not reach a 1/1 leg) #22606, [finding] The requiredDogfood Regression Gateshard step runs--onlywith a--shardpassthrough and no--force, so itsdogfood#testhash ignores upstream changes and a main-seeded cache can replay it green #20820, gates:check-issue-citationsreads one transient HTTP 500 from the board as PREREQUISITE NOT MET with no retry, so a GitHub blip turns the lint lane red and drops a PR from the merge queue #23361, finding(dogfood,pm): check:pm-dispatch-gates is red on main since #22365: a cold-boot dogfood file takes a mkdtempSync base (process.cwd()) the dispatch-gates scratch scan cannot read #22400 and finding(dogfood,pm): check:pm-dispatch-gates is red on main since #21919 — per-file-cwd.setup.ts takes a mkdtempSync base (inject(...)) the dispatch-gates scratch scan cannot read #21936 are dogfood-gate or gate-reliability defects.
None is this event filter.
Dedupe words: dispatch-gates scheduled by your paths pull_request skipped; Dogfood Regression Gate event_name merge_group not run on PR; route-ledger dogfood pin local command.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 17, 2026
Triage: first grade,
tooling·priority:p2·domain:skills·area:devpath·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-17T00:04ZTriage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.
dispatch-gatestold a dev the Dogfood Regression Gate was "scheduled by your paths" when neither PR CI nor the derived local commands run it, andmainwent red after fix(runtime): mount every /api/v1/keys verb so an anonymous caller is answered 401 on the standalone server #24009 until PR test(dogfood): the authz census and the matrix docblock read the runtime route ledger as the 92 rows it holds #24069. It is the same family as dispatch-gates: a change underscripts/does not derivecheck-position-name-fold-loaders, though that gate scansscripts/— the local--ranreconciliation read 98/98 while CI's lint lane went red on it #24037 (p2).pull_request/merge_groupis a new blocking gate, which under the maintainer's rule 「新增门禁默认否」 needs its own ruling. It is not in this card.objectstack-fleet commentedon Oct 17, 2026
Blocked-by: #24171
State change ·
pm:queue→pm:blocked· seatdomain:skills#1·session_012PxNHU3dfov2hbpg9ycZ8q(marchtian) · 2026-10-17T13:17ZThis card edits
scripts/pm/dispatch-gates.mjs, which ruling 208 R6 keeps frozen (references/instrument-discipline.mdL10: 「dispatch-gates.mjs冻结,只在它喂的 workflow 坏了时碰」). The seat cannot dispatch against a standing ruling and will not refuse a measured p2 defect (a main-red after #24009) on its own reading, so the question — does the freeze still bind derivation-truth fixes — is in the decision box as #24171 (options A / B / C, recommendation B). This card waits there: on B or C it returns topm:queuein the ruling act and dispatches as an ordinary M card (its 「Done when」: the tool states that apull_request-skipped job does not run on the PR or in the queue, with a pin; whether to hand a local dogfood command is the owning seat's call, no new gate); on A it closesnot_plannedwith the letter quoted. Triage's grade stands.