Skip to content

docs(skills): give the protocol rule’s CORRECT data-table fence the required data (objectui#12135) - #12138

Merged
os-zhuang merged 2 commits into
mainfrom
claude/issue-12135-protocol-correct-fence-data
Oct 11, 2026
Merged

os-zhuang merged 2 commits into
mainfrom
claude/issue-12135-protocol-correct-fence-data

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #12135
Clause-②: no

Landing repo objectui · surface skills/** (governed, Tier H: this PR stays draft until an authorized approver's review is on it, and the dispatching seat lands it). Dispatched by the skills seat of PM session session_011u73oxZ5X95qrARPTeoU6v; the claim comment on the card names this branch.

What changed

  • skills/objectui/rules/protocol.md, "Rule: No Schema Property Invention", the fence labelled "✅ CORRECT": the data-table node gains a one-row inline data array. DataTableSchema (packages/types/src/zod/data-display.zod.ts) declares data: z.array(z.any()) as required, so at base both authoring faces refused the very node the skill tells an agent to copy, with data: Invalid input: expected array, received undefined. The row uses the person the bundle's other data-table examples already use. The paragraph still teaches "no keys the spec does not declare"; the example now shows the two declared keys the node needs. Net +1 line.
  • .changeset/12135-protocol-correct-fence-data.md: an empty-frontmatter declaration. skills/** ships through npx skills add and sits in no package's files[] (git grep -n '"skills' -- 'packages/*/package.json' answers nothing), so no package releases.

Nothing else moved: no checker, no gate, no marker line.

D3 — every json/jsonc fence under skills/objectui/**, re-derived with both faces

Predicate: the one scripts/check-doc-json-fences.mjs (objectui#12127, merged) judges content/docs with — its exported scanJsonFences / classifyFence / nodeTypesOf, plus StrictAnyComponentSchema.safeParse and AnyComponentSchema.safeParse from the BUILT packages/types/dist/zod/index.zod.js — pointed at skills/objectui/** by a throwaway probe (not committed). The gate's two controls held on every run (the undeclared-key control refused, the plain-button control accepted).

Population at base 9b75509: 70 fences · 48 node documents · 18 with no type key · 3 not an object · 1 unresolved type (module, a package.json excerpt) · 0 unparseable. Refused: 9 by the strict face, 6 by the tolerant face. At head d2619ba: 8 and 5. The one row that moved is the last one below. Fences are cited by their lead-in text, not by line address (AGENTS.md commandment 11: a PR body has no same file).

guide tag type lead-in or label strict tolerant first refusal reason class
guides/schema-expressions.md jsonc card // Evaluated, then dropped -- renders an empty card refuse accept at (root): undeclared key "props" counter-example
guides/schema-expressions.md jsonc text // value is RETIRED from text -- refused by name; write content refuse refuse at value: RETIRED (ADR-0049) — value is no longer part of TextSchema; write content counter-example
guides/schema-expressions.md jsonc list // ❌ Renders two EMPTY li. children is not a template refuse refuse at children: REFUSED (objectui#9256, ADR-0049) — list reads NEITHER content channel counter-example
guides/schema-expressions.md jsonc text // ❌ Refused by name — value is RETIRED from text; write content (under "Expression shows as literal text") refuse refuse at value: RETIRED (ADR-0049) counter-example
guides/schema-expressions.md jsonc text // ❌ Worse — evaluated inside the envelope, then discarded refuse accept at (root): undeclared key "props" counter-example
guides/schema-expressions.md jsonc text // ❌ Object literals not supported (style carried as a string) refuse refuse at style: Invalid input: expected record, received string counter-example
rules/protocol.md json card ❌ WRONG — renders an empty card refuse accept at (root): undeclared key "props" counter-example
rules/protocol.md jsonc data-table Example violation (fields + customProp) refuse refuse at data: expected array, received undefined; then at columns; then undeclared keys "fields", "customProp" counter-example
rules/protocol.md jsonc data-table ✅ CORRECT refuse → accept refuse → accept at data: Invalid input: expected array, received undefined (base only) the defect; repaired here

The defect class — a fence labelled correct that the strict face refuses — has exactly one instance in the bundle, so no other file is touched.

D4 — the os:check HTML-comment marker on json/jsonc fences: kept, because the dispatch's mechanism assumption did not survive measurement

The dispatch's default was to take that marker off every json/jsonc fence, on the reading that nothing judges it. Measured on 9b75509, the reading is false:

  • grep -rn "os:check" scripts/ .github/workflows/ packages/*/scripts hits exactly one program, scripts/check-skill-examples.mjs (its MARKER constant), plus that script's own test. The script declares JSON_FENCE_LANGUAGES = new Set(['json', 'jsonc']) three lines under the TS_FENCE_LANGUAGES the card quotes; it parses every MARKED json fence (jsonc with comments and trailing commas stripped), reports a marker that opts nothing in as an orphan, and holds the marked population under MARKED_FLOOR, whose row ['json', 70] carries the comment "39 to 70 (objectui#7474)" and is ⛔ SHRINK-ONLY. The workflow skill-examples.yml (check name "Skill Example Check") runs it on every PR.
  • The gate's own summary at head: "Marked: 18 ts fence(s) (floor 13), 70 json fence(s) (floor 70) — the floor is ⛔ SHRINK-ONLY" · "JSON phase: 70 fence(s) parsed, 0 failed".
  • Mutation leg (objectstack's scripts/ablation-replace.mjs, WRAP mode, nothing committed): deleting exactly the marker line above the "✅ CORRECT" fence — anchor hit 1 then 0, blob ffd2a860 then 5138310f, 12 then 11 marker lines in the file — makes the gate exit 1 with "json: 69 marked fence(s), floor 70 — 1 short" and the script's own remedy text, "⛔ Deleting a marker is not a way to make a red example pass". Restore proven: blob back to ffd2a860, equal to HEAD; git diff HEAD empty; 12 marker lines.

So the marker is a parse claim that IS enforced, not a check nothing performs. What nothing judges on this surface is strict-face validity — the widening the skills seat deferred, and it is not folded in here. Counts for the record: marker lines directly above json/jsonc fences under skills/objectui/** — before 70 (41 json + 29 jsonc), after 70; above ts/tsx/typescript fences — 18, unchanged. The dispatch's own stop threshold (more than 25 json/jsonc markers) is met as well. Removing the markers would need MARKED_FLOOR lowered inside the checker, which this PR may not touch; that decision goes back to the seat in the report.

Verification (all at head d2619ba; exit codes captured by redirect-then-read, never through a pipe)

objectui has no dispatch-gates.mjs, so this list is hand-derived from package.json's check:* scripts and the run: lines of the 41 workflow files on origin/main, keeping every gate whose scan surface names skills/**, markdown at large, or .changeset/**.

gate (check name) command exit verdict line
Skill Guide Path Check node scripts/check-skills-paths.mjs 0 ✅ check-skills-paths: OK (89/90 stated path(s) resolve across 20 guide file(s); 1 baselined)
Skill Example Check node scripts/check-skill-examples.mjs --self-test 0 ✓ check-skill-examples self-test: 60 cases pass
Skill Example Check node scripts/check-skill-examples.mjs, after pnpm exec turbo run build over the gate's own --build-filter (29 tasks, under the shared verify lock, VERDICT command-exit 0) 0 Every marked skill example holds up against the built types · Semantic phase: 18 of 18 ts fence(s) judged, 0 failed · JSON phase: 70 fence(s) parsed, 0 failed
Skill Eval Token Check node scripts/check-skill-eval-tokens.mjs --self-test, then plain 0, 0 Every must_contain token is taught by its own skill bundle
Control Bytes node scripts/check-control-bytes.mjs 0 ✅ check-control-bytes: OK (scanned 8359 tracked text file(s))
Shell Escape Residue node scripts/check-shell-escape-residue.mjs 0 ✅ check-shell-escape-residue: OK (skills: 16 file(s), 211 fence(s))
Line Citation Gate node scripts/check-new-cross-file-line-citations.mjs 0 VERDICT new-cross-file-line-citations: 0 new citation(s)
Changeset Declaration 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 (1 changeset added)
changeset-guard check-changeset-no-major.mjs, check-changeset-overwrite.mjs, check-changeset-fixed.mjs, check-pending-changeset-literals.mjs 0, 0, 0, 0 no major · no pre-existing changeset modified · every package classified · no test names a pending changeset
doc-json (content/docs only; run to confirm it does not read this surface) node scripts/check-doc-json-fences.mjs 0 ✅ Every judged JSON node document in the docs passes the strict authoring face · "NOT read: pages outside content/docs/"
readers of protocol.md pnpm exec vitest run packages/components/src/__tests__/skill-guide-data-table-binding.test.tsx packages/components/src/__tests__/skill-guide-provider-envelope.test.tsx scripts/__tests__/check-skill-examples.test.ts (under the lock) 0 Test Files 3 passed (3) · Tests 144 passed (144) · VERDICT command-exit 0

Not owed, not run: the root pnpm test / pnpm lint / type-check farm (no code changed; the required set — Lint · Type Check · Test shards · Build & E2E · Build Docs · Changeset Declaration — runs on the PR in CI); check-doc-links.mjs (its SCAN_ROOTS has no skills row); check-doc-fence-languages.mjs, check-doc-component-types.mjs, check-doc-snippet-types.mjs (content/docs and READMEs only). No ablation of a new guard: this PR adds none; the mutation leg above tests the dispatch's mechanism assumption, not a guard of mine.

Line budget, the two readings the dispatch asks for: skills/objectui/rules/protocol.md 375 to 376; the bundle (skills/objectui/**/*.md, 16 files) 4816 to 4817; skills/objectui/SKILL.md 142 to 142. The dispatch expected a net bundle reduction from the marker removal; with the markers kept the bundle is net +1. objectui defines no skill token-count gate, so there is no token reading to report.

Acceptance notes

  • Observation, not filed: on the "Example violation" fence the strict face's printed first reason is the missing data, with columns and the undeclared fields / customProp listed after it. The fence is a deliberate counter-example and is refused on every one of those reasons, so nothing is owed.
  • The card's sentence "nothing judges it" about the marker read one constant (TS_FENCE_LANGUAGES) and missed JSON_FENCE_LANGUAGES three lines below it. The card's core premise — the fence lacks data, both faces refuse it — held, and is repaired here.

维护者速读(草稿)

改了什么

对外发布的 skills/objectui 技能包里,rules/protocol.md 「不得发明 spec 之外属性」那条规则下标着「✅ CORRECT」的 data-table 示例,补上了 DataTableSchema 要求的 data 行内数组(一行、一条记录)。另加一个空 frontmatter 的 changeset,声明「不发版」。没有改任何脚本、门禁或标记行。

为什么改

这个示例缺了必填的 data,objectui validate(严格面)和宽容面都拒绝它;agent 照抄技能里标「正确」的示例,写出的却是校验器拒收的节点,反而学到「校验器错了」。用两张 face 重新跑遍技能包全部 70 个 json/jsonc fence:被拒的 9 个里 8 个是刻意写的反例,只有这一个标着「正确」;改后被拒的 8 个全是反例。

风险与代价(含回滚)

风险极低:一行教学文本,无代码、无发布包。派发令原本还要摘掉 json/jsonc fence 上的 os:check 注释标记;实测这个标记被 scripts/check-skill-examples.mjs 读取,并有「只减不增」的 70 条下限,摘掉任何一个该门禁就红(已实测:摘一个 → 69/70 → exit 1),所以本 PR 没有摘,留给席位重新裁定。回滚:revert 这一个 commit 即可。

席位意见

(留空,席位定稿)

你要做的

skills/** 是受管面:审阅后留一条 APPROVED review,由派发席翻 ready 并入队;本 PR 不自行入队。顺带裁一个问题:json/jsonc fence 上的 os:check 标记是保留(它是一个真实生效的「可解析」声明),还是另开一张卡让 check-skill-examples.mjs 用严格面判 json fence 并声明反例 —— 两者都不在本 PR 内。


Generated by Claude Code

…equired `data` (objectui#12135)

The "CORRECT" `data-table` example under "Rule: No Schema Property Invention"
in `skills/objectui/rules/protocol.md` carried `columns` only. `DataTableSchema`
declares `data: z.array(z.any())` as required, so both authoring faces refused
the node the skill tells an agent to copy ("data: Invalid input: expected
array, received undefined"). The fence gains a one-row inline `data`, the same
shape the file's own "Provider rows into a data-table" table teaches as the
supported route.

Re-derived over every json/jsonc fence under skills/objectui/** with the strict
and tolerant faces from the built @object-ui/types dist: 70 fences, 48 node
documents, 9 refused by the strict face at base, 8 of them deliberate
counter-examples; this fence was the only "CORRECT"-labelled one. After the
edit: 8 refused, all counter-examples.

The os:check markers on json/jsonc fences stay: scripts/check-skill-examples.mjs
reads them (JSON_FENCE_LANGUAGES) and holds the marked json population under a
shrink-only MARKED_FLOOR of 70, so removing any would red that gate.

Empty-frontmatter changeset: skills/** ships through `npx skills add` and sits in
no package's files[].

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011u73oxZ5X95qrARPTeoU6v
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: d2619baed1ae7830a59383c3aa81543c99c9d67b
Local-runs: none

Reviewed by the skills seat 2 in seat (session_011u73oxZ5X95qrARPTeoU6v, served model equal to the constant's value at get_session, re-read for this record), on the diff against the merge base 9b75509 fetched from origin, the card #12135 with its triage note and the dev report, and the head's check-runs. Written 2026-10-11T12:27Z. Read from the customer seat that installs the whole objectui skill through npx skills add, not from the author's.

① Derived judgments

  • Face touched: the published teaching text skills/objectui/rules/protocol.md, one site: the fence labelled "✅ CORRECT" under "Rule: No Schema Property Invention" gains "data": [{ "name": "Ada Lovelace" }] and a trailing comma on columns. Right: DataTableSchema in packages/types/src/zod/data-display.zod.ts declares data: z.array(z.any()).describe('Table data') with no .optional(), so the node the paragraph tells an agent to copy was refused at base and is accepted at head; the row key name matches the column's accessorKey; the person is the one guides/data-integration.md and guides/schema-expressions.md already use. The paragraph's teaching ("no keys the spec does not declare") is unchanged: the example now carries exactly the two declared keys the node needs.
  • No accept set and no public surface moves: no schema, renderer, checker or gate is touched. Clause-②: no is correct.
  • The os:check HTML-comment marker above the fence stays, and the dev's D4 stop is right on this record's own reading of origin/main: scripts/check-skill-examples.mjs declares JSON_FENCE_LANGUAGES = new Set(['json', 'jsonc']) beside TS_FENCE_LANGUAGES, parses every marked json/jsonc fence, and holds the marked population under a shrink-only MARKED_FLOOR whose row reads ['json', 70]; the "Skill Example Check" workflow runs it on every PR. So the marker is an enforced parse claim, not a check nothing performs; removing it would have required lowering that floor inside the checker, which the dispatch forbade. The dev's mutation leg (one marker deleted, gate exit 1 "json: 69 marked fence(s), floor 70 — 1 short", restore proven) is the dev's measurement, read, not re-run.
  • Density, from the customer seat: +1 line in a 4817-line bundle, and the line is the key without which the copied node is refused; nothing else in the bundle is re-taught. protocol.md 375 to 376 lines, skills/objectui/SKILL.md unchanged.
  • D3 (every json/jsonc fence under skills/objectui/** through both faces): the dev's table lists 9 refused at base, 8 of them labelled counter-examples, and 8 at head, all counter-examples; the one row that moved is this fence. The probe is the dev's and its two controls held; read as the re-derivation the card asked for, not re-run here.

② Semver level

No package releases: skills/** sits in no package's files[] (git grep -n '"skills' -- 'packages/*/package.json' on origin/main answers nothing) and ships through npx skills add. The empty-frontmatter changeset .changeset/12135-protocol-correct-fence-data.md is objectui's correct form for that (objectui has no skip-changeset label), and the "Changeset Declaration" check accepts it. Its one paragraph was read sentence by sentence against the diff: every sentence is true of the diff. Clause-②: no matches.

③ Boundary flags

  • Open question (the markers): answered A, keep them. The seat's dispatch ruling "remove the markers, do not widen the checker" rested on the premise, shared by the card body and the triage note, that nothing reads the marker on json/jsonc fences; the dev measured it false, and this record confirms the reading on origin/main. "Declared = enforced" holds here: the declaration is enforced. B (judge marked json node documents through the strict face inside check-skill-examples.mjs, with the 8 counter-examples declared as expected refusals) widens an existing checker's input and is put to the maintainer in the 速读 as a named option, not filed; C (delete the 70 markers and lower the floor) is refused: it removes a working instrument.
  • Deviations accepted: D4 not executed and D6 net +1 (both consequences of the measurement above); D3 cited by lead-in text rather than a line address (objectui AGENTS.md [WIP] Update documentation for project #11 bans line addresses in a PR body); session-URL footer on the PR body; model-free trailer pair; heavy runs under the verify lock as detached processes awaited with tail --pid.
  • out_of_scope_findings: the shared misread, carried by this record and the ACCEPT, not filed; the 8 expected-refusal declarations, owed only if B is named, not filed; the "Example violation" fence's first printed reason, an observation, Acceptance notes.
  • Tier: skills/** is Tier H. This record is the review of record; the landing waits for an authorized APPROVED review and is then the seat's.
  • Check-runs on this head: 41 check-runs on d2619ba: 38 success, 3 skipped by condition (Test (coverage), the coverage-shard matrix placeholder, dependabot), none red; Lint, Type Check, Test with its 8 shards and Test (dist pins), Build & E2E, Build Docs, Changeset Declaration, Skill Example Check and Governed Surface Queue Guard all success; mergeable_state clean; no review and no comment on the PR (read 2026-10-11T12:26Z).

Implemented-by: claude/issue-12135-protocol-correct-fence-data
Reviewed-by: session_011u73oxZ5X95qrARPTeoU6v

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

维护者速读(终稿)· PR #12138 · #12135

席位 2(session_011u73oxZ5X95qrARPTeoU6v,zhuangjianguo)对照自己读的 diff(对 merge-base 9b75509,2 文件 +6/−1)校正 dev 草稿后定稿 · 2026-10-11T12:28Z。

改了什么:对外发布的 objectui 技能包里,rules/protocol.md「不得发明 spec 之外属性」那条规则下标着「✅ CORRECT」的 data-table 示例,补上 DataTableSchema 必填的 data(一行、一条记录,人名沿用包内其它示例)。另加一个空 frontmatter 的 changeset(objectui 的「不发版」写法;skills/** 不在任何包的 files[] 里)。没有改任何脚本、门禁或标记行。

为什么改:这个示例缺了必填的 data,严格面和宽容面都拒绝它;agent 照抄技能里标「正确」的示例,写出的却是校验器拒收的节点,反而学到「校验器错了」。dev 用两张 face 跑遍技能包全部 70 个 json/jsonc fence:被拒的 9 个里 8 个是刻意写的反例,只有这一个标着「正确」;改后被拒的 8 个全是反例。

风险与代价(含回滚):极低——一行教学文本,无代码、无发布包。回滚 = revert 这一个 commit。

席位意见:ACCEPT。一处更正要当众认:派发令(以及卡片正文、分诊评论)说「没有程序读 json fence 上的 os:check 标记,摘掉即可」,这是错的——scripts/check-skill-examples.mjs 读它、解析每个标记的 json/jsonc fence,并把标记数压在只减不增的 70 条下限上;dev 实测摘掉一个该门禁就红,所以按派发令自己的停条件没有摘,这是对的。席位改裁:标记保留(A),本卡不再欠任何事。一个可选项留给你点名:让同一个 checker 用严格面判 json 节点文档(今天就能机械拦下这类缺陷),代价是改一个 checker、给 8 个反例加「预期被拒」声明;按「新增门禁默认否」,你不点名席位不立卡。契约复核记录(达档、在席)已贴在本 PR;CI 在本 head 全绿(41 个 check:38 个 success、3 个按条件 skipped、0 个红;读于 2026-10-11T12:26Z)。

你要做的:同意即给一个 APPROVED review;落地由席位走队列。


Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review October 11, 2026 12:31
@os-zhuang
os-zhuang enabled auto-merge October 11, 2026 12:31
@os-zhuang
os-zhuang added this pull request to the merge queue Oct 11, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: cff429bee30be3b983e2a12823e0b15c38704c2f
Local-runs: none

Reviewed by the skills seat 2 in seat (session_011u73oxZ5X95qrARPTeoU6v, served model equal to the constant's value at get_session, re-read for this record), on the diff of head cff429bee against its merge base 1d1cfe0c fetched from origin (byte-identical, index lines aside, to the diff of d2619ba against 9b75509 that record 6109014767 reviewed), the card #12135 with its triage note and the dev report, and the head's check-runs. Written 2026-10-11T12:52Z. Read from the customer seat that installs the whole objectui skill through npx skills add, not from the author's.

① Derived judgments

  • Face touched: the published teaching text skills/objectui/rules/protocol.md, one site: the fence labelled "✅ CORRECT" under "Rule: No Schema Property Invention" gains "data": [{ "name": "Ada Lovelace" }] and a trailing comma on columns. Right: DataTableSchema in packages/types/src/zod/data-display.zod.ts declares data: z.array(z.any()).describe('Table data') with no .optional(), so the node the paragraph tells an agent to copy was refused at base and is accepted at head; the row key name matches the column's accessorKey; the person is the one guides/data-integration.md and guides/schema-expressions.md already use. The paragraph's teaching ("no keys the spec does not declare") is unchanged: the example now carries exactly the two declared keys the node needs.
  • No accept set and no public surface moves: no schema, renderer, checker or gate is touched. Clause-②: no is correct.
  • The os:check HTML-comment marker above the fence stays, and the dev's D4 stop is right on this record's own reading of origin/main: scripts/check-skill-examples.mjs declares JSON_FENCE_LANGUAGES = new Set(['json', 'jsonc']) beside TS_FENCE_LANGUAGES, parses every marked json/jsonc fence, and holds the marked population under a shrink-only MARKED_FLOOR whose row reads ['json', 70]; the "Skill Example Check" workflow runs it on every PR. So the marker is an enforced parse claim, not a check nothing performs; removing it would have required lowering that floor inside the checker, which the dispatch forbade. The dev's mutation leg (one marker deleted, gate exit 1 "json: 69 marked fence(s), floor 70 — 1 short", restore proven) is the dev's measurement, read, not re-run.
  • Density, from the customer seat: +1 line in a 4817-line bundle, and the line is the key without which the copied node is refused; nothing else in the bundle is re-taught. protocol.md 375 to 376 lines, skills/objectui/SKILL.md unchanged.
  • D3 (every json/jsonc fence under skills/objectui/** through both faces): the dev's table lists 9 refused at base, 8 of them labelled counter-examples, and 8 at head, all counter-examples; the one row that moved is this fence. The probe is the dev's and its two controls held; read as the re-derivation the card asked for, not re-run here.

② Semver level

No package releases: skills/** sits in no package's files[] (git grep -n '"skills' -- 'packages/*/package.json' on origin/main answers nothing) and ships through npx skills add. The empty-frontmatter changeset .changeset/12135-protocol-correct-fence-data.md is objectui's correct form for that (objectui has no skip-changeset label), and the "Changeset Declaration" check accepts it. Its one paragraph was read sentence by sentence against the diff: every sentence is true of the diff. Clause-②: no matches.

③ Boundary flags

  • Open question (the markers): answered A, keep them. The seat's dispatch ruling "remove the markers, do not widen the checker" rested on the premise, shared by the card body and the triage note, that nothing reads the marker on json/jsonc fences; the dev measured it false, and this record confirms the reading on origin/main. "Declared = enforced" holds here: the declaration is enforced. B (judge marked json node documents through the strict face inside check-skill-examples.mjs, with the 8 counter-examples declared as expected refusals) widens an existing checker's input and is put to the maintainer in the 速读 as a named option, not filed; C (delete the 70 markers and lower the floor) is refused: it removes a working instrument.
  • Deviations accepted: D4 not executed and D6 net +1 (both consequences of the measurement above); D3 cited by lead-in text rather than a line address (objectui AGENTS.md [WIP] Update documentation for project #11 bans line addresses in a PR body); session-URL footer on the PR body; model-free trailer pair; heavy runs under the verify lock as detached processes awaited with tail --pid.
  • out_of_scope_findings: the shared misread, carried by this record and the ACCEPT, not filed; the 8 expected-refusal declarations, owed only if B is named, not filed; the "Example violation" fence's first printed reason, an observation, Acceptance notes.
  • Tier: skills/** is Tier H. This record is the review of record; the landing waits for an authorized APPROVED review and is then the seat's.
  • Head moved by a base merge, so this record re-names the head and supersedes 6109014767 (the director's reminder 5904088413: a record names one head): cff429bee is os-zhuang's "Merge branch 'main' into claude/issue-12135-protocol-correct-fence-data" (2026-10-11T12:31Z), parents d2619ba and main 1d1cfe0c; the patch against the merge base is the same two files, +6/−1, byte-identical to d2619ba's, so ① and ② stand unchanged. The APPROVED review 5483303502 (os-zhuang, an authorized approver) is on this head; the PR was flipped ready, auto-merge enabled and enqueued by him 2026-10-11T12:45Z.
  • Check-runs on this head: 42 check-runs on cff429bee: 38 success, 3 skipped by condition (Test (coverage), the coverage-shard matrix placeholder, dependabot), 1 cancelled (Governed Surface Queue Guard run 38139586887, superseded by run 38139599376 on the same head, success); Lint, Type Check, Test with its 8 shards and Test (dist pins), Build & E2E, Build Docs, Changeset Declaration, Skill Example Check, Spec Main Shape Gate all success; none red (read 2026-10-11T12:50Z).

Implemented-by: claude/issue-12135-protocol-correct-fence-data
Reviewed-by: session_011u73oxZ5X95qrARPTeoU6v

VERDICT: PASS


Generated by Claude Code

Merged via the queue into main with commit dca25af Oct 11, 2026
42 of 43 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-12135-protocol-correct-fence-data branch October 11, 2026 13:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants