You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Why three engine-lane landings needed the maintainer this round (a pending release-note correction, a first-time queue-flake signature, a subagent's denied label write): can each become seat-decidable? #19940
Filing gate: ③ a task the maintainer directed. The maintainer (huangyiirene), in the domain:engine#1 seat's session session_01TEhopqrWQYBycZzyJHpAZr (chat), 2026-09-24, verbatim: 「同时立一张skills卡,这些问题为什么需要我确认。」 The maintainer names the skills lane. ⛔ Routing labels are triage's, so this card is filed bare.
Filed by the domain:engine execution seat 1. ⛔ Not a claim.
The ask
Round 21 of the engine lane held three otherwise-ready PRs for a maintainer answer. In each case the maintainer's answer was a bare yes and added no information the seat did not already have on the PR. For each, answer:
Which rule required the human?
Is the human gate buying something there, or could a mechanical rule let the seat decide, with the evidence already on the PR as the record?
If the gate should stay, how does the question reach the maintainer other than through one seat's chat?
Any rule change comes back as the skills seat's recommendation. New gates and gate loosening stay the maintainer's call.
Case 1 — PR #19928 (#19927): correcting a pending release note
The rule that stopped it.scripts/check-empty-changeset.mjs, the DELIBERATE CORRECTION class (FOREIGN_CORRECTION_REMEDY, and the text around line 605): "Correcting a pending release note is a decision about a release rather than a refactor -- say so on the PR, naming the note and what changed under it, and get it confirmed ... this gate stays red either way, and staying red is what puts the decision in front of a person".
The seat's reading.landing-operations.md has a three-condition path for a check that is red by design. The gate's own text asks for a person. The seat took the stricter reading and held the landing (request 5804825048).
Question. Can a contract-review PASS record on the same head, one that names the corrected note and judges each rewritten sentence, stand as the confirmation? Or is a release-note correction a release decision that must stay human? Either way, should the seat-side rule say which reading governs?
Case 2 — PR #19904 (#19868): a first-time merge-queue flake signature
the failing file imports nothing the diff touches;
main at the queue base was green on every Test Core shard, the same shard included;
the failure is a timeout, not an assertion.
The rule that stopped it.landing-operations.md 〈入队与落地〉: 「判据唯一来源是签名台账(锚点 issue),优先于现场判断;只有人工能升级台账。」 and 「新签名 ⇒ ⛔ 不重投,在 PR 与其 Fixes 卡各留完整签名与初判。」 No queue-flake-anchor existed for the file. The triage workflow files one only when a second distinct PR hits it.
Question. Should a first ejection earn ONE re-queue with a receipt when those three facts hold (import closure disjoint from the diff, base green on the same shard, a timeout first error), with a second ejection on the same signature stopping for good? Or should the triage workflow file the anchor on the first hit when the three facts are machine-checkable?
Case 3 — PR #19857 (#19586): a subagent's denied skip-changeset write
What happened. PR test(objectql): sweep the dataset type, judged in a tenant that declares its object #19857 is test-only, so it needs skip-changeset (.claude/agents/os-dev.md: applying it is the dev's default step on objectstack). The dev's own scripts/pm/label-write.mjs call was denied by its session's permission classifier. The harness forbids a parent session from re-running a write its subagent was denied (permission laundering), so the seat asked the maintainer (5796043085).
Question. Should the exact label-write.mjs invocation a dev uses for skip-changeset be allow-listed in .claude/settings.json, so that the step os-dev.md makes routine is not left to a non-deterministic classifier?
Filing-gate answers
Class: ③, a task the maintainer directed; the order is quoted verbatim above.
Acting reader: the domain:skills seat, which owns .claude/**, landing-operations.md, os-dev.md and .claude/settings.json (the maintainer named the skills lane). The check-empty-changeset half, if a gate change is recommended, is routed by triage under the domain table's gate rules.
Ruled: 5814546887 · letter 1A · 2A · 3A · 2026-09-24T12:59Z
Filing gate: ③ a task the maintainer directed. The maintainer (
huangyiirene), in thedomain:engine#1seat's sessionsession_01TEhopqrWQYBycZzyJHpAZr(chat), 2026-09-24, verbatim: 「同时立一张skills卡,这些问题为什么需要我确认。」 The maintainer names the skills lane. ⛔ Routing labels are triage's, so this card is filed bare.Filed by the
domain:engineexecution seat 1. ⛔ Not a claim.The ask
Round 21 of the engine lane held three otherwise-ready PRs for a maintainer answer. In each case the maintainer's answer was a bare yes and added no information the seat did not already have on the PR. For each, answer:
Any rule change comes back as the skills seat's recommendation. New gates and gate loosening stay the maintainer's call.
Case 1 — PR #19928 (#19927): correcting a pending release note
.changeset/19911-readonlywhen-interdependent-locks.mdfalse, so the dev corrected them in place, on the seat's instruction (option A). AGENTS.md'spackages/*/CHANGELOG.mdrow keeps a correction in the entry it corrects, never in a later erratum. An isolated contract review then verified every rewritten sentence against measurement on the same head (record 5804807706 on A three-lock readonlyWhen cascade drops a write whose own lock is FALSE on the stored row: a legitimate edit is silently ignored #19927).scripts/check-empty-changeset.mjs, the DELIBERATE CORRECTION class (FOREIGN_CORRECTION_REMEDY, and the text around line 605): "Correcting a pending release note is a decision about a release rather than a refactor -- say so on the PR, naming the note and what changed under it, and get it confirmed ... this gate stays red either way, and staying red is what puts the decision in front of a person".landing-operations.mdhas a three-condition path for a check that is red by design. The gate's own text asks for a person. The seat took the stricter reading and held the landing (request 5804825048).Case 2 — PR #19904 (#19868): a first-time merge-queue flake signature
@objectstack/runtimesrc/package-uninstall-org-scope.integration.test.ts, first errorError: Test timed out in 5000ms.The seat's diagnosis (5800424463):mainat the queue base was green on everyTest Coreshard, the same shard included;landing-operations.md〈入队与落地〉: 「判据唯一来源是签名台账(锚点 issue),优先于现场判断;只有人工能升级台账。」 and 「新签名 ⇒ ⛔ 不重投,在 PR 与其Fixes卡各留完整签名与初判。」 Noqueue-flake-anchorexisted for the file. The triage workflow files one only when a second distinct PR hits it.p1, silent write loss) and driver-turso remote planMediaColumnMove answers empty, so os migrate files-to-references reports nothing to move on a remote Turso database whose media columns are present #19894 held behind it.Case 3 — PR #19857 (#19586): a subagent's denied
skip-changesetwritedatasettype, judged in a tenant that declares its object #19857 is test-only, so it needsskip-changeset(.claude/agents/os-dev.md: applying it is the dev's default step on objectstack). The dev's ownscripts/pm/label-write.mjscall was denied by its session's permission classifier. The harness forbids a parent session from re-running a write its subagent was denied (permission laundering), so the seat asked the maintainer (5796043085).datasettype, judged in a tenant that declares its object #19857 加 skip-changeset」 (recorded with provenance, 5805841001). The seat applied it..claude/settings.jsonallow-lists every REST write the seat makes except the two landing calls (ccr/ready_for_review,ccr/auto_merge) — so landing falls to the non-deterministic auto-mode classifier and seven green PRs waited for a human #19014 (the committed.claude/settings.jsonallow-list lacked two landing calls) and Seat batch closure needs a named script and a matching allow rule — the runtime's write classifier refuses the three-step close (comment · label · PATCH) non-deterministically, and the two existing allow rules do not match how seats invoke the tools #19469 (a batch-close script needed a matching allow rule): the same class of classifier gap.label-write.mjsinvocation a dev uses forskip-changesetbe allow-listed in.claude/settings.json, so that the step os-dev.md makes routine is not left to a non-deterministic classifier?Filing-gate answers
domain:skillsseat, which owns.claude/**,landing-operations.md,os-dev.mdand.claude/settings.json(the maintainer named the skills lane). The check-empty-changeset half, if a gate change is recommended, is routed by triage under the domain table's gate rules.closedincluded:PM seat landing needs maintainer confirmation human gate pending release note correction new queue flake signature re-queue denied subagent label write→ 200 hits; top 10 read. Related but distinct: [finding] the committed.claude/settings.jsonallow-lists every REST write the seat makes except the two landing calls (ccr/ready_for_review,ccr/auto_merge) — so landing falls to the non-deterministic auto-mode classifier and seven green PRs waited for a human #19014, Seat batch closure needs a named script and a matching allow rule — the runtime's write classifier refuses the three-step close (comment · label · PATCH) non-deterministically, and the two existing allow rules do not match how seats invoke the tools #19469, [finding] the harness auto-mode classifier denies the protocol's landing command non-deterministically — 8 byte-identicalPUT …/ccr/auto_mergefrom one turn: 4 allowed / 4 denied under three reasons; and a hooks landing rotates every seat off shift before it can flip ready #18469 (closed, classifier and allow-list gaps on seat writes). None asks this.Dedupe words:
landing needs maintainer confirmation·DELIBERATE CORRECTION pending release note confirm·new queue flake signature first ejection re-queue·subagent denied label write skip-changesetGenerated by Claude Code