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
{{ message }}
Repository navigation
dispatch-gates cannot see runtime staging dependencies between gate scripts (digest sandbox broke on a staged gate's new import) #13000
Observation from PR #12997's patch round (2026-08-28), recorded with measurements by the dev on #12881:
scripts/pm/dispatch-gates.mjs cannot see RUNTIME STAGING dependencies between gates — the case where one gate script copies another gate's source into a sandbox tree and executes it. Concrete instance: scripts/objectui-changeset-digest.mjs stages scripts/check-adr-0087-registration.mjs into a fw-gate/ sandbox; a PR that added an import (js-comment-mask.mjs) to the staged gate broke the digest's self-test with ERR_MODULE_NOT_FOUND, and the derivation scored check:objectui-changeset as silent for that diff because that family declares exactly one population (.changeset) and the "edits a gate script" convention-trigger fires only on the edited gate's OWN families, never on the families of gates that stage a copy of it.
CI caught it (the digest self-test failed loudly), so there is no silent hole today — the cost is one avoidable red round per future occurrence. Possible mechanizations, for whoever picks this up: (a) a staging-manifest registry that dispatch-gates reads (each stager declares the gate files it copies), or (b) a convention-trigger that greps stager scripts for the edited gate's filename. Evidence trail: PR #12997 (the miss and the fix, gap note in its body), #12881 (the dev's measured explanation).
分诊席位,session session_01Aujz2zykf5LXt3T98gRsGe。落点 scripts/pm/dispatch-gates.mjs ⇒ 车道表 scripts/(门禁类,SUBJECT 是 CI 质量)⇒ domain:devx。
priority:p2 —— ⭐ 采信卡自己的诚实定价:「CI caught it (the digest self-test failed loudly), so there is no silent hole today — the cost is one avoidable red round per future occurrence.」 ⛔ 这不是安全缺口,是一次可避免的返工。
Stripped pm:dispatched from this closed card. 关闭即摘 pm:* — a pm state label on a closed issue asserts something false (pm:dispatched says a dev is working on it; pm:awaiting-maintainer says a manual action is still outstanding), and it makes the card visible to state sweeps that should no longer see it.
⛔ Nothing about the card's outcome is changed or re-judged here — domain:*, type and priority are left alone, since routing and grading are not state. This is the round's standing sweep for "closed but still carrying pm:*", not a verdict on this issue.
⚠️ Cause, for the record: GitHub's Fixes #n auto-close does not strip labels — measured 8/8 with no exception on this lane today. Cards closed that way need the strip done by hand, and these predate the sweep.
Activity
huangyiirene commentedon Aug 28, 2026
定级:
Task·priority:p2·domain:devx·pm:queue分诊席位,session
session_01Aujz2zykf5LXt3T98gRsGe。落点scripts/pm/dispatch-gates.mjs⇒ 车道表scripts/(门禁类,SUBJECT 是 CI 质量)⇒domain:devx。priority:p2—— ⭐ 采信卡自己的诚实定价:「CI caught it (the digest self-test failed loudly), so there is no silent hole today — the cost is one avoidable red round per future occurrence.」 ⛔ 这不是安全缺口,是一次可避免的返工。复现 ✅
⇒ 那个引发
ERR_MODULE_NOT_FOUND的 import 已不在树上,与卡说的「PR #12997(the miss and the fix)」一致。⭐ 这是本轮第三个同源的 dispatch-gates 推导盲区
.objectui-shadiff 推导不出任何 pin 关键门 —— 一个门按 job output 过滤(一跳之隔),另一个刻意不过滤Bug· p1Task· p2Task· p2⭐ 三者的根因是同一个:
dispatch-gates的推导模型是**「声明的路径」,而每一个被找到的盲区,都是真实依赖不表现为一条声明路径**的情形 ——.objectui-shadiff derives NO pin-critical gate — the gates a pin bump most needs are the ones structurally excluded from path derivation, and one of them shipped a red on PR #12955 #12956:依赖藏在 job 的 output 表达式里,或刻意不声明;⇒⚠️ 逐例打补丁会一直找到新的例。 取卡者(无论接三者中的哪一张)应当知道另外两张的存在 —— ⛔ 而不是把自己那一例当孤例修掉。
dispatch-gates读它。⭐ 精确、可审计;element:buttonicon: the spec's shipped.describe()says the renderer uses "its own" normaliser, but objectui#5993 moved it to the sharedresolveIcon— prose and read-point anchors are both stale at pin9602dc820450#12968 / [finding] cross-package-test-inputs.mjs still says the gate cannot see an escaping relative IMPORT specifier — #10452 fixed that, and it demanded four declarations for exactly that spelling this round #12934 都吃过"注释里的命中"这一亏)。mkdtemp出现在至少 10 个scripts/*.mjs里 ⇒ 沙盒构造是常见惯用法。⛔ 但我没有分类其中有几个真的把兄弟门的源码拷进去 ——mkdtemp≠stages a sibling gate。⇒ ⭐ 那个分类就是第一交付物:类只有一两个成员 ⇒ (a) 的登记表几乎免费;类有十几个 ⇒ (b) 的维护优势才成立。相关
PR #12997(miss 与 fix,其正文有 gap note)· #12881(dev 的实测解释)· ⭐ #12956(同源盲区,p1)· ⭐ #12983(同源盲区,p2)
Generated by Claude Code
claude commentedon Aug 31, 2026
Label hygiene —
domain:devxexecution PM seat (#6023), sessionsession_01Pk26oZ12t5N1hwGW1m1MgC.Stripped
pm:dispatchedfrom this closed card. 关闭即摘pm:*— a pm state label on a closed issue asserts something false (pm:dispatchedsays a dev is working on it;pm:awaiting-maintainersays a manual action is still outstanding), and it makes the card visible to state sweeps that should no longer see it.⛔ Nothing about the card's outcome is changed or re-judged here —
domain:*, type and priority are left alone, since routing and grading are not state. This is the round's standing sweep for "closed but still carryingpm:*", not a verdict on this issue.Fixes #nauto-close does not strip labels — measured 8/8 with no exception on this lane today. Cards closed that way need the strip done by hand, and these predate the sweep.Generated by Claude Code