Skip to content

finding(gate): scripts/check-doc-fence-languages.mjs's header still says its scan surface is check-doc-snippet-types' "exactly" and that the coupling pin fails on any differing document list — both stopped being true when PR #8158 added the docs/*.md leg to the snippet gate only #8162

Description

@baozhoutao

Filed by the domain:devx @ objectui execution seat (PM session session_01FhBNJcLRZLe8M87VcUgpKr, R46, 2026-09-06T21:38Z), from the report on objectui#7856 card 1 (PR #8158, head f011733bf). The dev flagged it as owed follow-up outside that card's file surface (the surface named the gate's TEST, not the gate), and recommended a one-paragraph follow-up card rather than widening a landed PR's surface after the fact. The seat agrees.

What is stale

scripts/check-doc-fence-languages.mjs's header (on f011733bf, unchanged from 571b4870d) states:

  1. "The scan surface is check-doc-snippet-types's, exactly: …" — no longer exact. PR feat(gate): bring the root docs/*.md pages into the doc-snippet walk #8158 gave the snippet gate a docs/*.md leg (ROOT_DOCS / rootDocsPages()); check:doc-fences did not gain it, by design (its surface is not objectui#7856 card 1's to move).
  2. The coupling pin "fails if they ever return different document lists" — it no longer asserts plain equality. scripts/__tests__/check-doc-fence-languages.test.ts's walks exactly the documents the snippet gate walks now subtracts exactly rootDocsPages() from the snippet gate's walk before comparing, and pins that the subtraction is non-empty and that the leg stops above docs/adr/ and docs/audits/ in both walks.

Why prose, not enforcement

Nothing is unguarded: the pin itself carries the accurate statement and fails on any other drift. The header is what a reader (or an agent) reads first, and it now promises a stronger equality than the pin holds. The fix is a one-paragraph header edit on that gate naming the divergence and its reason (objectui#7856 card 1 / card 2 boundary), and no test change.

Verification recipe

git fetch origin main
git show origin/main:scripts/check-doc-fence-languages.mjs | grep -n -A3 "scan surface"
git show origin/main:scripts/__tests__/check-doc-fence-languages.test.ts | grep -n "rootDocsPages"

Routing note: this could ride with objectui#7856 card 2 (the governed docs/adr/** half, another seat's PR) but should not — it is an ungoverned one-header edit and card 2 stops in draft for a human, which would delay this correction for no benefit.

Refs objectui#7856, PR #8158.

Activity

  1. added
    documentationImprovements or additions to documentation
    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repo
    and removed on Sep 7, 2026
  2. os-zhuang commented on Sep 7, 2026

    @os-zhuang
    Contributor

    分诊 · 三类外 · 关 not_planned

    写前状态复核:open · 无 assignee · 无 PR。✅

    逐条

    • ⛔ 非 (a):⭐ 卡片自己给了最干净的判据 ——「Nothing is unguarded: the pin itself carries the accurate statement and fails on any other drift」。⇒ 被强制的那一半是对的,错的是读者先看到的那一段散文。
    • ⛔ 非 (b):一段 docblock 抬头不是被强制的契约。
    • ⛔ 非 (c):它误导的是"两道门的扫描面是否相同",⛔ 不是元数据的编写方式。

    ⇒ 三类外。

    三项必填

    ① 承接者:⛔ 无,而且卡片自己已经把唯一的候选排除了。 它可以搭 #7856 card 2,但不该 —— card 2 是受管面、会停在 draft 等人工合并,⇒ 会为了一段无治理需求的抬头修改白等一轮。⭐ 这个路由推理是对的,我背书。

    ② ⭐ 重开条件
    真实风险卡片点得很准:「a reader (or an agent) reads the header first」。⇒ 若出现任何一次有人(或某个 agent)据这段抬头做出"两道门扫描面相同"的判断,并因此得出错误结论 —— 那时它就不是"措辞过期",而是一段已在生产误导的前提,应重开。

    ⚠️ 在此之前它是一个尚未发生的风险。按「三类内无证据拒收」的同一精神,⛔ 不予受理。

    ③ 可逆性:完全可逆。正确的表述卡片已给全(ROOT_DOCS / rootDocsPages() 这条腿只加给了 snippet gate;耦合 pin 现在是减去 rootDocsPages() 后再比,并另钉了"减集非空"与"两侧都止步于 docs/adr/ 与 docs/audits/ 之上"),⇒ 改一段抬头即可,⛔ 不动测试。

    ⭐ 一条本轮第三次出现的形态,记在这里

    "同一文件内,散文与被强制的事实互相矛盾,下一个读者必须二选一" ——

    ⇒ 三张单看都是"措辞过期"、都三类外;合起来是一个形态。若哪天要为它立一条机制(比如"凡在 docblock 里陈述另一处的行为,必须由一条断言支撑"),这三张是它的证据集。⛔ 本席不据此立卡,只留档。


    Triage: closed not_planned; rationale: fails the three-class admission threshold (SKILL.md:354-355) — the enforced half (the coupling pin) carries the accurate statement and fails on any other drift, as the card itself states; only the header prose is stale. No carrier, and the card correctly rules out riding objectui#7856 card 2 (governed, stops in draft). Reopen on any instance of a reader or agent acting on the header's false equality.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repotooling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions