Skip to content

agents(os-dev), pm(references): carry the E3 standard and its three ruled boundaries - #16487

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-15905-e3-standard-carrier
Sep 7, 2026
Merged

agents(os-dev), pm(references): carry the E3 standard and its three ruled boundaries#16487
os-zhuang merged 1 commit into
mainfrom
claude/issue-15905-e3-standard-carrier

Conversation

@claude

@claude claude Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Fixes #15905

The maintainer's E3 standard (2026-09-05, verbatim: 「已发布必修,其余立卡」 — a defect on a published surface is repaired in the round; non-published residue is carded and the PR lands) and the three boundaries the director seat recorded on the card (comment 5564373328, decision batch #64, maintainer reply verbatim 「同意」) had no carrier in the agent corpus. This PR writes them once, rules-only, in the house style: one rule per line, at most 120 bytes, plain language, no provenance, no issue numbers or comment ids in the corpus. Four lines in total, each paid by a fold under an unchanged ratchet pin. Governed surface (.claude/**): draft, human merge.

Step 1 — carrier measurement (no carrier)

At origin/main = 00d54940eb, grep -rn over .claude/skills/pm-dispatch/**, .claude/agents/os-dev.md, AGENTS.md, CLAUDE.md:

term hits
已发布必修 0 (exit 1)
其余立卡 0 (exit 1)
E3 0 (exit 1)
published surface 0 (exit 1)
dist/**/*.d.ts 0 (exit 1)
sourcesContent 0 (exit 1)
files[] 0 (exit 1)
已发布 16 — all unrelated rows (changeset, release-blocking classes, contract-review claim, landing criteria, decision-box routing); none states the standard or a definition of published

core-rules.md (150/150) is additionally excluded by its own line 3, 「本文不新增规则」 — it is a digest of SKILL.md and cannot be the first home of a rule. So the definition and the two boundaries go to references/review-checklist.md (77/77), beside its in-place-repair and 「private: false 即已发布」 review items; the obligation goes to os-dev.md (403/403), closing its rule-3 in-place-repair block.

The four lines — file, neighbour, fold

# line (as landed) file neighbour it sits beside fold that paid for it
1 本轮改动令其变假或触碰的已发布缺陷必修;其余立卡并记明已发布面,PR 照常落地。 (115 B) .claude/agents/os-dev.md (rule 3, after 「优先扩展一个守卫关掉整个类;任一条不成立 ⇒ 回默认」) 就地修欠两样 / 四条件 block, lines 59–62 deleted 「返回消息是加速器,不是记录;只存在于返回消息里的报告随你的进程一起死。」 — a rationale tail under 「报告落两次,GitHub 优先」 and 「两种派发模式下 GitHub 都是报告的权威源」, both of which stay
2 已发布 = 各包 \files[]` 实际发运的内容;spec 发运 `src/**/*.zod.ts`,假 TSDoc/`.describe()` 即缺陷。` (119 B) references/review-checklist.md, 范围与 changeset after 「再核 claim 文件面同轮已修订、PR 正文点名该修并载证据」, before 「private: false 即已发布 ⇒ …changeset」 deleted 「否则合并静默关掉决策箱里的卡,而收件箱过滤只看 open。」 — rationale for the Fixes/Part of rule above it; the fact is kept verbatim in os-dev.md's 「⛔ 永不 Fixes 一张还在决策箱的卡」 line
3 \.js.map` 的 `sourcesContent` 不算已发布:构建关闭其内嵌源码,关闭前也不计。` (98 B) same block directly under line 2 deleted 「只写 toThrow()rejects.toThrow() 的用例在未修实现本就抛裸 Error 的那族上恒绿。」 — rationale between the 「抽查…断言 codestatus」 and 「缺 code/status 断言判 REWORK」 rules, both of which stay; the lesson is kept in os-dev.md's 「单独的 expect(...).toThrow() 不是拒收测试」 line
4 本轮令其变假或触碰的已发布缺陷必修;只注意到、未触碰的立卡不修,记明已发布面。 (115 B) same block directly under line 3 merged 「⛔ 不接受结论散文:绕过去的报告与守约的长得一样。」 into its neighbour: 「报告清掉了它被要求停下的停条件 ⇒ 亲核证据再 ACCEPT,⛔ 不接受结论散文。」 (103 B) — the ⛔ rule stays, only the rationale tail leaves

Line 4 carries both halves of boundary 3 on the PM side so the checklist is self-contained: the positive obligation the reviewer checks (made-false-or-touched ⇒ repaired in-round) and the ruled limit (merely noticed, untouched ⇒ carded, published-surface fact on the card). Line 1 is the dev-side twin of that obligation, the same way the 就地修 four conditions already live on both sides. The wording 「构建关闭其内嵌源码,关闭前也不计」 is deliberately tense-neutral: the sourcesContent: false build change is a separate devx card (#16469 remains open) and the boundary does not depend on its landing.

Not written: nothing in SKILL.md (flight Z's file), nothing in core-rules.md, no ceiling raise, no new section.

Serial proof against flight Y (os-dev.md is held by PR #16460, head ddb4213508)

Branch from origin/main 00d54940eb; Y's regions (lines 126–134, 207–230 of os-dev.md) untouched. From HEAD a17f1a4064:

git merge-tree --write-tree HEAD ddb4213508                              -> exit 0, tree d14bbd16d73c264be25c5883287e185bc75735d2
git -c merge.os-regen.driver=false merge-tree --write-tree HEAD ddb4213508 -> exit 0, same tree d14bbd16d73c…
git merge-tree --write-tree HEAD 93907021e7   (flight Z's pushed head)    -> exit 0 (informational; SKILL.md untouched)

Gates — all at HEAD a17f1a4064, every exit captured before any pipe

Consistency (brief step 3):

  • pnpm check:skill-frame-sync → exit 0 — 「✓ check-skill-frame-sync: 2 copies of the decision frame are structurally isomorphic across 2 files … 75 markdown files scanned for undeclared copies」
  • node scripts/pm/check-clause2-carriers.mjs --self-test → exit 0 — 「✓ check-clause2-carriers self-test: 190 cases pass」
  • pnpm check:pm-skill-id-lint → exit 0 — 「✓ check-skill-id-lint: 26 file(s) clean (pattern /#[0-9]{3,}/g)」
  • pnpm check:pm-skill-ratchet → exit 0 — 「✓ check-skill-line-ratchet self-test: 157 cases pass」; live: 「.claude/agents/os-dev.md is 403 lines (ceiling 403; headroom 0)」, 「references/review-checklist.md is 77 lines (ceiling 77; headroom 0)」; max line bytes 120 / 119
  • node scripts/pm/check-governed-merges.mjs --test .claude/agents/os-dev.md .claude/skills/pm-dispatch/references/review-checklist.md → exit 3 — 「⛔ GOVERNED — a human merge is the review record for this PR … .claude/** ×2」

Derived (brief step 4): node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths; stderr: 「gate list derived from the tree of 'objectstack-ai/objectstack' at commit a17f1a4 … change set derived from git — 2 path(s) vs merge base 00d5494」) → 17 commands, all run, all exit 0: closing-keyword-parity (+ self-test, 24 assertions), comment-mask-corpus (6251 files, 0 disagree), governed-queue-guard self-test (144), agent-model-declared, agent-test-spelling (0 violations), doc-authoring, driver-memory-census, nul-bytes (8085 files, no raw control bytes), pm-governed-merges (274 assertions), pm-skill-id-lint, pm-skill-ratchet, refd-timer-probe, required-contexts, skill-frame-sync, watch-hint-literal, and pnpm --filter @objectstack/lint run check:doc-formula-expressions — first run exit 3, the gate's own PREREQUISITE NOT MET (@objectstack/formula / @objectstack/lint unbuilt; NOT MEASURED, not red); after turbo run build --filter=@objectstack/formula --filter=@objectstack/lint under the lock (「4 successful, 4 total」) re-measured exit 0 — 「✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 430 files / 1371 TS blocks judged clean」. Reconciliation: dispatch-gates.mjs --ran → exit 0 — 「Run reconciliation — 17 derived, 17 run, 0 NOT-MEASURED, 0 UNRUN」.

Whole-repo lint through the shared lock, slot issue-15905, one acquisition with the full budget: bash scripts/pm/os-verify-lock.sh -c 'NODE_OPTIONS=--max-old-space-size=4096 pnpm lint' → 「os-verify-lock: VERDICT command-exit 0 · held the lock 97s (1m37s) · waited 47s」 (shared-box seconds).

Control-byte self-scan of both touched files: grep -naP for raw control bytes → no hits. No model identifier anywhere in the diff, the commit or this body.

验收备注

  • noted, not filed: the dev reads the files[]-derived definition of 「已发布」 only through the PM-side checklist — os-dev.md carries the obligation line alone, as ruled for this card (403/403, one fold). A second dev-side line would need a second fold and is the seat's call, not this flight's.
  • noted, not filed: the harness-injected commit/PR attribution form (a model-bearing Co-Authored-By trailer; a 🤖 Generated with PR footer) differs from AGENTS.md's model-free trailer pair and session-URL footer; this PR uses the AGENTS.md forms.
  • Changeset: none — .claude/** publishes nothing; skip-changeset applied via the additive labels endpoint with a comparison read-back.

维护者速读(草稿)

  • 事情:把您 09-05 裁的 E3 标准「已发布必修,其余立卡」和 09-07 批次 Fix TypeScript Module Resolution for Subpath Exports #64 裁定的三条边界写进 agent 语料:dev 端一行义务(os-dev.md),PM 复核清单三行——「已发布 = 各包 files[] 实际发运的内容」、.js.mapsourcesContent 不算、本轮只注意到未触碰的立卡不修。
  • 为什么:此前语料里一个字都没有(实测 grep 零命中),每轮由持卡人各自解读,量到「未发布」就静默放走。
  • 风险:零机制改动,四行文字、四处折行付账,所有钉住的行数不变;回滚即 revert 一个 commit。
  • 席位意见:(席位定稿时填)
  • 要您做什么:人工合并这张受管面 PR;或指出哪一行措辞与您的裁决不符。

Generated by Claude Code

…uled boundaries

The maintainer's E3 standard (a defect on a published surface is fixed in the
round; non-published residue is carded and the PR lands) had no carrier in the
agent corpus. Four rules-only lines, each fold-paid under an unchanged pin:

- .claude/agents/os-dev.md: the dev's in-round obligation, beside the in-place
  repair block; paid by dropping the rationale tail under "GitHub is the
  authoritative report source".
- references/review-checklist.md: the files[]-derived definition of
  "published" (spec ships src/**/*.zod.ts), the .js.map sourcesContent
  boundary, and the noticed-but-untouched boundary, beside the in-place
  repair and "private: false => published" review items; paid by dropping two
  rationale tails whose facts os-dev.md keeps, and folding one rule into its
  neighbour.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
@claude claude Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 7, 2026
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Sep 7, 2026
@claude

claude Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

Verdict: ACCEPT (governed — to the approvers)

Implemented-by: os-dev flight E3 (fable), branch claude/issue-15905-e3-standard-carrier, head a17f1a4064
Reviewed-by: pm-dispatch skills seat (contract-tier read in a detached compare worktree at a17f1a4064)

What was checked

  • The measurement first: the E3 standard (「已发布必修,其余立卡」) had no carrier anywhere in the corpus — zero hits for its words, for E3, for the three globs, for sourcesContent and for files[] — so it was written, not folded.
  • Two files, +5/−5, both pins unchanged and green on the live ratchet: os-dev.md 403/403 gains the dev's in-round obligation after the 就地修 block — 「本轮改动令其变假或触碰的已发布缺陷必修;其余立卡并记明已发布面,PR 照常落地。」 (115 B), paid by a rationale tail; review-checklist.md 77/77 gains the three ruled lines between the 就地修 review items and the changeset item — the files[]-derived definition of published with the spec .zod.ts clause (119 B), the .js.map sourcesContent boundary (98 B), and the noticed-but-untouched boundary (115 B) — paid by two rationale tails whose facts survive in os-dev.md and by merging 「⛔ 不接受结论散文」 into its neighbouring rule. core-rules.md untouched by its own charter (本文不新增规则).
  • Each line reads as the ruling (5564373328) states it; no issue numbers or provenance in the corpus lines; every added line ≤120 bytes.
  • Gates in the compare worktree: ratchet live green (both files headroom 0), self-test 157; check:skill-frame-sync, check-skill-id-lint, check-clause2-carriers green; check-governed-merges --test exit 3 (governed, both paths); merge-tree against flight Y's ddb4213508 clean twice and against Z's head. CI on the head: 16 success / 13 skipped / 0 failure.

Rulings

  • Open question 1 (the dev side carries the obligation but not the files[] definition): A for this PR, as the brief ruled one fold for os-dev.md; the one-line dev-side definition rides #16388, the next flight on os-dev.md (rider recorded there; the dev's two fold candidates — the lock restatement at line 101, the clarification at 347 — go with it).
  • Open question 2 (attribution forms): A — AGENTS.md's model-free pair, as on every commit landed today.

Landing

Governed surface: reviewers os-zhuang and hotlong requested, needs-user-decision added, the final 维护者速读 follows this comment. Human merge; the seat never flips ready or queues a governed PR. On merge the seat strips pm:dispatched and clears the assignee on #15905.


Generated by Claude Code

@claude
claude Bot requested review from hotlong and os-zhuang September 7, 2026 04:25
@claude

claude Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

维护者速读(skills 席,2026-09-07T04:3xZ)

事情:您 09-05 裁的 E3 标准「已发布必修,其余立卡」此前不在任何规则文本里(全语料零命中)。本 PR 把它写进去:os-dev.md 加一行 dev 本轮义务;复审清单加三行——「已发布 = 各包 files[] 实际发运的内容(spec 发运 src/**/*.zod.ts,假 TSDoc / .describe() 即缺陷)」、「.js.mapsourcesContent 不算已发布」、「只注意到、未触碰的已发布缺陷立卡不修,记明已发布面」。这正是导演席批 #64 记录、您已「同意」的三条边界。两文件 +5/−5,钉子 403 / 77 不动。

为什么:同一条裁决,两个诚实的席位曾量出相反结果(sourcesContent 一例);写成规则后不再各读各的,「已发布」从三个固定 glob 改为按每个包的 files[] 定义,不会再漂。

风险:低——纯规则文本,门禁全绿;dev 侧尚未带「已发布」的定义行(一次折叠只够一行),定义行排在下一场 os-dev.md 飞行(#16388)一起进。

要您做什么:合并或退回一个决定。审批人 os-zhuang / hotlong 已被请求复审。

席位意见:建议合并。


Generated by Claude Code

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 size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants