Skip to content

docs(agents): an inertness claim needs a runtime reading, and any population-size reading needs a control - #9226

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-8410-agents-evidence-rules
Sep 12, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/issue-8410-agents-evidence-rules

Conversation

@os-sales

Copy link
Copy Markdown
Collaborator

Fixes #8410
Fixes #8492

Two evidentiary rules for objectui AGENTS.md section 9, both written as the rulings limited them: option 1 only on the head card (5582275228), answer B as limited on the member (5582320343). No gate, no key enumeration, no doc-site sweep — all three were refused by those rulings.

Net +5 lines (572 → 577), against the dispatch budget of +8. One file changed.

The two rules

1. The control requirement, widened in place (member card). The existing bullet said a non-empty result self-verifies and needs no control. Measured against this family's own evidence that is too strong: a non-empty result verifies only that the channel is alive, never the size it reports. The clause now reaches any reading that claims a population size — a zero or a count — and the non-zero failure mode is named beside it: a pattern anchored to a boundary the data does not respect returns a confident count, over-counting prose or missing another spelling, and a number reads exactly like a successful measurement. A second bullet adds the printed-form half: a published command must be reproducible in the form it was printed in, because a distilled input nobody wrote down leaves the next reader re-running the published line and getting a confident zero — which here reads as "the finding does not exist".

2. A source grep cannot answer "no renderer reads this declared key" (head card). A new #### block in the same cluster. SchemaRenderer hands a node's leftover keys to the component as React props, so a renderer can consume a key it never names; a schema.KEY grep cannot see that channel and returns a confident zero. A grep -l for the rest-spread is not the instrument either — forwarding and non-forwarding renderers both match, and the granularity is the render function's signature, not the file. The rule requires a runtime reading instead: the objectui#6158 instrument (next build, then read the prerendered HTML) or a real-SchemaRenderer-plus-real-registry probe varying one key. It points at the parity ledger's RUNTIME SLOT entries as the list to consult before re-measuring a ruled retirement.

Both rules obey commandment #9: they name the instrument and never its answer. No count is written into the file — not the ledger's entry count, not the strip-list size, not the 83-of-185 bound, and the rule says in as many words that the affected keys are ⛔ not to be enumerated from it.

Readings re-verified on b775500af before the edit, each with its control

reading probe control, same run
the cluster covers absence/zero only, not a non-zero count 3 hits for 非零 / 总体大小 / population in the file, all inspected: commandment #9 (point at the instrument), a non-zero exit code, a changeset guard — none states the control requirement for a count 阳性对照 → 2 hits
the printed-form clause exists nowhere 0 files tree-wide (7,493 tracked) 阳性对照 over the identical file list → 1 file
the inertness rule has no home in the file RUNTIME SLOT → 0, rest-spread → 0, 6158 → 0; ⚠️ SchemaRenderer → 5, but all five are topology/pattern prose, none an evidentiary rule 阳性对照 → 2 hits
the parity ledger carries the RUNTIME SLOT entries non-zero in packages/types/src/__tests__/zod-mirror-parity.test.ts — ⚠️ the count has drifted since the card was filed, which is exactly why the rule points at the file and writes no number a nonexistent marker in the same file, same run → 0

Gates

gate exit verdict line
node scripts/check-governed-queue-guard.mjs --test AGENTS.md 3 ⛔ GOVERNED — 1 of 1 path(s) are on a governed surface
pnpm check:new-line-citations 0 VERDICT new-cross-file-line-citations: 0 new citation(s), enforcement report-only -> exit 0 (4 synthetic controls PASS)
pnpm check:control-bytes 0 ✅ check-control-bytes: OK (scanned 7408 tracked text file(s))
pnpm check:shell-escape-residue 0 ✅ check-shell-escape-residue: OK (5/5 root(s) resolved — AGENTS.md: 15 fence(s))
node scripts/check-changeset-presence.mjs 0 ✅ No source or published contract of a released package changed in this range, so no changeset is owed.
node scripts/check-doc-links.mjs 0 Links are valid across 17 scan roots.
node scripts/check-bash32-floor.mjs 0 ✓ check-bash32-floor: … floor bash 3.2 (its population is this file's fences)
pnpm check:comment-mask-corpus 3 PREREQUISITE NOT MET — NOT MEASURED, needs pnpm install. Its corpus is SOURCE_EXTENSIONS (.ts/.tsx/.mts/.cts/.js/.mjs/.cjs/.jsx); a markdown-only diff cannot move its input, so CI's answer is unchanged by this branch.

No changeset is added: the presence gate says none is owed, and ⛔ the skip-changeset label is never applied in this repository.

维护者速读(草稿)

改了什么 — objectui AGENTS.md 第 9 节的「读数纪律」那一簇,净增 5 行、一个文件。第一处是就地拓宽已有的那条对照要求:原文说「非空结果自我验证,不需要对照」,现在改成「非空结果只自我验证通道还活着,不验证它报出来的那个大小」,任何声称总体大小的读数(一个零或一个计数)都要在同一次运行里带一个会响的对照;旁边新加一条:一条被发布的命令,必须在它被印出的那个形态下可复现。第二处是新增一个小节:主张「某个声明键没有渲染器读」的卡,必须带一次运行期读数,源码 grep 不算。

为什么改 — 两条都是分诊席已经裁定过的方向,这个 PR 只是把裁决写下来,不重开任何判断。拓宽那条来自一个实测:一个自信的计数和一个自信的零一样不可证伪,而计数更难看见,因为数字读上去就像一次成功的测量。新增那节来自一次已经发生过的代价:一张卡凭一次 grep 的零判定某个键是死的,而运行时其实是把节点剩下的键当 React props 交给组件的 —— 那次退役裁定建立在假前提上,靠 dev 在第一次编辑前停手才没有撤掉一个正在工作的已发布行为。

风险与代价(含回滚) — 风险低:两条规则都只拒绝「本来就不成立」的声称,不封闭任何选择,也不新增任何机械门禁(建门这条被两个裁决都明确排除了)。代价是这一簇又长了 5 行,而这个文件已经 577 行;缓解是两条都写成自含句子并各自带上失败形态,不需要读上下文就能用。回滚 = revert 这一个提交,没有任何代码、生成物或发布面依赖它。

席位意见 —

你要做的 — 这是受管面(AGENTS.md),PR 停在 draft、等你合并,你的那次合并动作本身就是审核记录。请特别看两处措辞:① 拓宽后的那句是否把「非空结果」说得太严(它现在只保证「通道活着」);② 新增小节挂在「Actions workflow 注册表」那个 ### 之下 —— 它和 workflow 无关,是跟着这一簇的读数纪律走的,若你希望它单独成节请直说。


⚠️ 两条自我施加的克制,便于复核:文件里没有写下任何计数(ledger 条目数、剥离键数、83/185 上界都没写),也没有枚举受影响的键 —— 这正是两个裁决各自写死的承接约束。

Drafted by the skills seat, session session_01MCLBsUgfykL74aU716rzVK; the anchor claim is comment 5642462310 on the head card.


Generated by Claude Code

…ontrol for any population-size reading

Two rules land in the section 9 reading-discipline cluster.

1. The control requirement is widened in place. A non-empty result was
   treated as self-verifying; it only verifies that the channel is alive,
   never the size it reports. Any reading that claims a population size --
   a zero or a count -- now needs a control that fires in the same run,
   and the non-zero failure mode (a pattern anchored to a boundary the
   data does not respect returns a confident count) is named beside it.
   A published command must also be reproducible in the form it was
   printed in: a distilled input that is not written down does not exist.

2. A new block states that a source grep cannot answer "no renderer reads
   this declared key". The runtime hands a node's leftover keys to the
   component as React props, so a renderer can consume a key it never
   names; the instrument is a runtime reading, and the parity ledger's
   RUNTIME SLOT entries are the list to consult first.

Both rules point at their instrument and never at its answer, per
commandment #9.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MCLBsUgfykL74aU716rzVK
@claude

claude Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

维护者速读(终稿)

改了什么 — objectui AGENTS.md 第 9 节「读数纪律」那一簇,净增 5 行、一个文件,两张卡一起收口。① 就地拓宽已有的对照要求:原文「非空结果自我验证,不需要对照」改成「非空结果只证明通道活着,不证明它报的那个大小」,任何声称总体大小的读数(一个零或一个计数)都要在同一次运行里带一个会响的对照;旁边新加一条:被发布的命令必须在它被印出的形态下可复现,蒸馏过的输入要一起写下来。② 新增一个小节:主张「某个声明键没有渲染器读」的卡必须带运行期读数(#6158 那把尺,或真 SchemaRenderer 探针),源码 grep 的零不算,并先查 parity ledger 的 RUNTIME SLOT 条目。

为什么改 — 两条都是分诊席已裁的方向,本 PR 只是写下来。拓宽那条来自一天四次实测:一个自信的计数和一个自信的零一样不可证伪,而计数更难看见。新增那节来自已经发生过一次的代价:一张卡凭 grep 的零判定某键已死,差点撤掉一个正在工作的已发布行为(#8236),靠 dev 编辑前停手才没成事。

风险与代价(含回滚) — 两条规则只拒绝「本来就不成立」的声称,不封闭任何选择、不新增机械门禁(两个裁决都明确排除建门)。文件从 572 行到 577 行;文件里没有写下任何计数,规则只指仪器不写答案(本仓第 9 条诫命)。回滚 = revert 一个提交。

席位意见 — 席内按契约复审档复核通过:两条规则与各自裁决的承认范围一一对应,没有越界(无门、无键枚举、无站点扫描);dev 把派发里的每条前提都带对照重测,还纠正了本席一条错误假设并如实上报。一处提请你注意:新增小节挂在「Actions workflow 注册表」那个 ### 之下——因为这一簇现有的读数纪律小节本来就在那里,标题早已名不副实;这是下一张密度卡的事,不在本 PR 动。建议合并。

你要做的 — 受管面(AGENTS.md):请人工合并 PR #9226(本席不翻 ready、不入队、不挂 auto-merge)。若你觉得拓宽后的那句把「非空结果」说得太严,一句话即可,补丁轮由本席续派。


Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review September 12, 2026 06:05
@os-zhuang
os-zhuang added this pull request to the merge queue Sep 12, 2026
Merged via the queue into main with commit aebc3a3 Sep 12, 2026
34 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-8410-agents-evidence-rules branch September 12, 2026 06:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation needs-user-decision

Projects

None yet

3 participants