Skip to content

[Decision] 17 of 39 bare-root-worklist verdicts carry REFUSE-UNSPELLABLE whose definitional basis is now false — declare, re-name, or re-price? #12369

Description

@yinlianghui

Raised by the domain:devx @ objectstack seat (#6023) from the #12328 dispatch, which stopped without editing anything under its own falsification clause. ⛔ This seat picks among none of these options — execution seats never adjudicate.

Split out of #12328 because that card scopes 4 rows and the measured class is 17.

What was measured

scripts/pm/bare-root-worklist.mjs defines the verdict at :109-111:

REFUSE-UNSPELLABLE — the population is a file-KIND or FILENAME filter inside the root. The subtree idiom can only say "all of it", at the precision quoted.

So the verdict asserts no precise spelling exists. #12300 (783111d252, +186/−6, all in dispatch-gates.mjs) added if (globInNonFinalSegment(hint)) return triggerCovers(hint, inputPath); ahead of the collapse. ⭐ That retirement is general, not specific to the 4 rows whose prose happens to cite the collapse. Only 5 rows cite it in prose; the definitional basis moved under 17.

Each of the 17 now has a measured, 100%-precise live spelling — driven through the real hintCovers/trackedFiles, never collapseHint alone, and cross-checked against the tree's corpus:

spelling covers / corpus rows held
packages/**/*.test.ts 2736 / 2736 1
packages/**/package.json · apps/**/package.json · examples/**/package.json 74/74 · 1/1 · 4/4 9
packages/**/scripts/i18n-extract.config.ts 9 / 9 3
skills/*/SKILL.md 11 / 11 1
skills/*/references/** 12 / 12 1
examples/*/objectstack.config.ts 3 / 3 1
skills/*/SKILL.md (+skills/README.md) 11 of 12 with one hint 1

Verified independently by this seat at origin/main: skills/*/references/ = 12 tracked files; the TRIAGE map holds 39 verdicts, 26 of them REFUSE-UNSPELLABLE — so a 17-row subset is arithmetically consistent.

⚠️ The contrast set matters: three refusals stay alive and correct, because ** in a non-final segment matches one or more segments, never zero. That is #12329, already open.

四维分析

① 实际业务需求. 下游拉力是实测的,但只覆盖 2 个门禁#12310 点名 check:skill-refs#12322 点名 check:objectql-double-limit。其余 15 行(package.json 三连、i18n 三连等)没有任何地方要求它们被命名。把 17 行全部声明出去,是在需求之前扩张能力面。

② 平台长远合理性. 这一维直接排除选项 C。让一个叫「unspellable」的裁决去描述一个 idiom 现在能精确拼出的population,等于把裁决名字变成谎言 —— 「拼不出来」退化成「我们选择不拼」。这正是本仓在消费侧一贯拒绝的容忍,只是上移了一层。台账的全部价值就是每一行都诚实。

③ 避免 AI 写代码犯错. 只有 B 的机械 pin 能关掉这个类。本次缺陷的实质是:一个裁决悄悄地不再描述这棵树,而 --self-test 全程绿着。#12347(可达性半边)与 #12330(单行机制)是两个先例 —— 都用 pin 而不是重写散文。A 单独做只修好 17 行、一个 pin 都不留,下一次推导变更会把同一个洞重新打开。

④ 创业阶段不扩散需求. 一个 PR 里跨 12 个门禁脚本写 17 处声明,正是要避免的无焦点扩张。⚠️ 而且 packages/**/*.test.ts 一行就给推导加了 2736 个文件 × 门禁。

四维并不同向到同一个选项 —— ② 排除 C,③ 指向 B,①④ 指向「只在有拉力处声明」。这正是必须人工决裁的形状。

Options

dev 的建议是 D,四维推理如上。⛔ 本座位不背书任何一个 —— 记录在此供裁决。

为什么现在必须决,不能顺手做掉

TRIAGEshrink-only 的 map,而重决 17 行(全表的三分之一)是一次重新裁决,不是一次修复。#12328 的派发令、#12289 本身、以及该文件自己的 docblock 三处都把它保留给上层。dev 遇到边界就停了 —— 这是正确动作。

Refs: #12328(被拆分的卡,现 blocked) · #12289(其 row 2 属于本类) · #12300(使裁决基础失效的变更) · #12330(单行先例) · #12347(可达性半边) · #12329(存活的对照集) · #12310 · #12322(两处实测下游拉力) · #10840(B 必须避开的 allowlist 形状)

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions