Skip to content

docs(skills): the D11 close refuses only a declared-override move; an added email-template locale keeps its package-less write - #29924

Merged
os-zhuang merged 2 commits into
mainfrom
claude/project-thread-x5gki7
Nov 3, 2026
Merged

os-zhuang merged 2 commits into
mainfrom
claude/project-thread-x5gki7

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J

Requested by Irene · project thread

Fixes #29461

Clause-②: no
Metadata-protocol: none

Model: the skills/** tier mandate (dispatch clause ①) is waived by the maintainer while that tier's quota is exhausted; developed one tier below it; contract review by triage. The ruling, verbatim:

你的任务继续处理,没有fable可以用 opus,等契约复审

维护者速读

  • 改了什么:objectstack-platform 技能里 ADR-0146 定制段的 D11 那句话改正:只有迁移仪式会「以声明 override 的方式」搬走的旧 Setup 行,搬前搬后才拒绝不带包的保存、发布、重置和回滚;基础包没发运的邮件模板语言(仪式把它当配对包自己的成员搬,addedMember)保留这个写入口。另删掉一段重复的「CLI Commands」指针小节付 token 账,并加一份 @objectstack/skills 的 patch changeset(技能随该包发布)。
  • 为什么改:PR fix(metadata-protocol): os migrate packageless-overlays moves an email template row of a locale the base does not ship as the pair's own member #29258 之后迁移仪式会把这种语言行当配对包自有成员搬走,而 D11 关门(packagelessCloseSubject)只判声明 override 的搬法;技能原句说「一律拒绝」,对这种行是错的,AI 照着写会以为这类写入已被关。ADR-0087 条目那一半已由 PR fix(spec): the packageless-overlay-write-closed prose names the ceremony's own-member move #29457 改正,这里是剩下的一份。
  • 风险与回滚:纯技能文本加一份 changeset,无代码、无契约改动。token 上限行未动(6011/6011),无 re-wrap;被删的指针小节在同文件 Part 3 指针里有家。回滚即 revert。
  • 先看:skills/objectstack-platform/SKILL.md 第 132 行定制段里 (D11) 前后那半句;同文件被删的 ## CLI Commands 小节;.changeset/29461-d11-added-locale-keeps-write.md。
  • 两分钟验证:node scripts/check-skills-token-ratchet.mjs,预期 skills/objectstack-platform/SKILL.md is 6011 tokens (ceiling 6011; headroom 0),全绿。
  • 需要你做的:Tier H 受管面(skills/**),需要 GOVERNED_APPROVERS 的批准;PR 保持 draft,等分诊对第二轮的增量契约复审。

What changes

Facts are taken from the merged code on main (a04e9d7), not the card alone: packagelessCloseSubject and classifyPackagelessRow in packages/metadata-protocol/src/protocol-packageless-overlay-migration.ts, the ceremony's addedMemberOf and its moved + addedMember outcome in the same file, and the corrected ADR-0087 entry packages/spec/src/migrations/entries/semantic/18.packageless-overlay-write-closed.ts (PR #29457).

  1. skills/objectstack-platform/SKILL.md, the ADR-0146 customization paragraph (L132). The D11 clause read "its package-less save, reset and rollback are refused once movable (D11)". It now reads: "once movable as a declared override, its package-less save, publish, reset and rollback are refused (D11); an email-template row at a locale the base does not ship moves as the pair's own member and keeps that write." The four operations are PackagelessWriteOperation (save | publish | delete | rollback, protocol-packaged-base-refusal.ts); the old clause left out publish. That is what packagelessCloseSubject does: it closes a package-less write only where the census answers movable AND overlayPairFixAdmits admits the declared body into the pair; an email_template member at a locale the base does not ship is refused by that gate, so the close leaves it open, while the ceremony moves the row as the pair's own member (addedMember, no overrides). The rest of the paragraph is byte-identical.
  2. Payment, same file. The ## CLI Commands section (a heading, one pointer line and its --- rule; 140 bytes) is cut. Its home: the Part 3 pointer further down the same file, which links the same references/operations.md and names its "Daily-loop commands" section first. No other file links the cut heading's anchor (git grep '#cli-commands' over skills/, content/docs/, scripts/: zero hits).
  3. .changeset/29461-d11-added-locale-keeps-write.md. '@objectstack/skills': patch with Clause-②: no and Metadata-protocol: none: skills/** ships in @objectstack/skills, so a skills change takes route 1 of Check Changeset (.github/workflows/pr-automation.yml), never the skip-changeset label.

Token ratchet, paid in place (no ceiling row moved, no re-wrap)

file tokens before / after / ceiling bytes before / after lines before / after
skills/objectstack-platform/SKILL.md 6011 / 6011 / 6011 24061 / 24064 435 / 429
package skills/objectstack-platform (all files) — — 2238 / 2232
every skills/*/SKILL.md together — — 4543 / 4537

The D11 clause grows by 143 bytes and the cut removes 140; the file's priced text was 3 bytes under the 6011 ceiling and is exactly at it now (24044 priced bytes, 6011 tokens).

Evals

skills/objectstack-platform/evals/config-plugins-ops.json has two cases on this paragraph. Case 10 (replace a HotCRM view) says a package-unbound Setup row "wins only until the D11 migration": a view is a declared-override move, so it stays true and is unchanged. Case 11 (a dependent package's override) does not touch D11. No case covers an added email-template locale; none is added here (see Acceptance notes).

Why

Since PR #29258 (#28904) os migrate packageless-overlays moves a package-less row of an email_template locale the base does not ship as the pair's own member, declaring nothing, and the D11 close judges only the declared-override move, so that row's package-less write stays open before and after the move. The skill said every movable row loses it. PR #29457 (#29261) corrected the same claim in the ADR-0087 entry; this was the remaining copy.

Acceptance notes

  • The edit is made on the branch the platform fixes for this thread (claude/project-thread-x5gki7) in this container's own checkout rather than a sibling worktree: the container is this card's alone. A deviation from the worktree-first spelling, not its purpose.
  • No eval case was added for the added-locale write: the card asks to check the covering evals, and both still hold. A case could be added later at no ratchet cost (eval fixtures are measured, not ratcheted) if the seat wants that behaviour exercised.
  • Round 2 (commit 47008cf) answers triage's contract review of c634c95 (comment 6606375768, FAIL): the must-fix (the change publishes through @objectstack/skills, so it carries a patch changeset and the skip-changeset label was removed) and the should-fix (the clause lists publish). The should-fix was paid inside the same clause, no re-wrap: "it is" dropped and "email template's row" spelled "email-template row". Nothing else moved.
  • Triage's review names two other copies of the close stated without the carve-out, content/docs/concepts/metadata-lifecycle.mdx and ADR-0146 § D11; they are outside this card's file surface and go to a follow-up card.
  • The Model: line above carries no model identifier outside the verbatim ruling quotation (AGENTS.md, commit-message and PR-body rule); the tier names appear only inside the quoted ruling.

Verification

Head 47008cfe (two commits: c634c95 the change, 47008cf the review's must-fix and should-fix). No code changed, so no package test, typecheck, ablation or dogfood battery is owed (Clause-②: no, no ! in the title).

Local gates on 47008cf: 45 derived, 45 run with exit 0, 0 NOT MEASURED (`dispatch-gates --ran`); on c634c95 35 derived, 34 exit 0, 1 NOT MEASURED
  • 47008cf: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 45 commands (the changeset adds the changeset families: check-adr-0087-registration, check-changeset-no-major, check-empty-changeset, check:changeset-gate-self-tests, check:closed-ceremony-text, check:published-files, release self-tests). All 45 ran after pnpm install --frozen-lockfile and a full pnpm build (exit 0), each with a 900 s timeout and its exit code captured before any pipe: all 45 exited 0, check:dual-build-cjs-loads included. --ran: 45 derived famil(ies) accounted for — 45 run, 0 NOT-MEASURED.
  • check-skills-token-ratchet.mjs: skills/objectstack-platform/SKILL.md is 6011 tokens (ceiling 6011; headroom 0).
  • c634c95: 35 derived after install and a @objectstack/formula / @objectstack/lint / @objectstack/objectql build; 34 exited 0 and pnpm check:dual-build-cjs-loads exited 3 (PREREQUISITE NOT MET, no full build then).
  • node scripts/check-commit-card-trailers.mjs --range origin/main..HEAD: exit 0 on both heads (no card relation, model-free trailer pair).
  • CI on 47008cf: 44 check-runs, 28 success and 16 skipped by path filter or opt-in, none red or pending. CI on c634c95: 46 check-runs, 28 success, 18 skipped.
  • Writes: git push ×2; one relay pr_create; no GitHub MCP write. The skip-changeset label that rode the create was removed by the seat.

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (No schema touched.)
  • 2. Every name I added uses the casing for its kind. (No names added.)
  • 3. No formatter ran; pnpm lint is CI's repo-wide run.
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. The change publishes through @objectstack/skills: it carries a patch changeset, and both declaration lines are filled in here and in the changeset.
  • 6. packages/spec not touched.
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English (the 维护者速读 block is the repo's own Chinese reading aid; the ruling is quoted untranslated).

🤖 Generated with Claude Code

https://claude.ai/code/session_01J8VVAnsSK35UdbfYSLvGkz


Generated by Claude Code

… added email-template locale keeps its package-less write

The objectstack-platform customization paragraph said every movable pre-D11
Setup row loses its package-less save, reset and rollback. packagelessCloseSubject
closes only a row os migrate packageless-overlays moves as a declared override;
a row at an email-template locale the base does not ship moves as the pair's own
member (addedMember) and keeps that write. Paid in place: the CLI Commands
pointer section is cut, its home the Part 3 pointer to references/operations.md
(Daily-loop commands).

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8VVAnsSK35UdbfYSLvGkz
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Nov 3, 2026
@github-actions github-actions Bot added size/xs documentation Improvements or additions to documentation labels Nov 3, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J

Contract-review-handoff: triage — CONTRACT_REVIEW_TIER unavailable (HTTP 429, 2026-11-03T13:05Z) · head c634c95

The seat's review tier has had no quota since its HTTP 429 at 2026-11-03T04:50Z. The maintainer's word, 2026-11-03: 「没有fable可以用 opus,等契约复审」. This FULL review of a Tier H skills/** PR (card #29461) therefore goes to triage, as on #29781 and #29912.

Points for the reviewer:

  • Correctness. L132's D11 clause, checked against packagelessCloseSubject, overlayPairFixAdmits and the ceremony's addedMember outcome on main.
  • The payment is a deletion. The "## CLI Commands" section was cut (140 bytes), with its home said to be the Part 3 pointer to references/operations.md (Daily-loop commands). Confirm that every command the cut section named is taught there, so no fact loses its only home. Also confirm that no link targets #cli-commands.
  • Ratchet. lanes/skills.md line 20 says a re-wrap is never a payment. SKILL.md is 6011 → 6011 against ceiling 6011, at 24061 → 24062 bytes. Confirm there is no reflow outside the edited clause.
  • Evals. Case 10 still holds and case 11 is untouched. None covers the added locale case.
  • Gates. 35 derived: 34 exit 0, and 1 NOT-MEASURED (dual-build-cjs-loads, full build).

After a PASS the PR stays a draft for GOVERNED_APPROVERS, and the seat hands it over.


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Contract-review-claim: session_01AavokzJ5DndAwitDXvKy4U · head c634c95 · 2026-11-03T14:15Z

Taken on the maintainer's word in the triage session, 2026-11-03: 「契约复审:等分诊做契约复审:#29912、#29924、#29925、#29927、#29928」. This is an exception to #29667 for the domain:skills#1 handoff 6604598059, while that seat's tier answers 429.


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: c634c95796948572c9fea941719c3d4f22720d08
Local-runs: none
Scope: skills/objectstack-platform/SKILL.md + packages/metadata-protocol/src/protocol-packageless-overlay-migration.ts, packages/metadata-protocol/src/protocol-packaged-base-refusal.ts, packages/metadata-protocol/src/protocol.ts (D11 close call sites), packages/metadata-protocol/src/protocol-environment-rows.ts#packagelessAddress, docs/adr/0146-studio-designs-setup-administers-one-editor-per-item-paired-customize-package.md § D11, skills/objectstack-platform/evals/config-plugins-ops.json, skills/objectstack-platform/references/operations.md, scripts/check-skills-token-ratchet.mjs, packages/skills/package.json, .github/workflows/pr-automation.yml (Check Changeset routes)

Taken by triage on the maintainer's word 「skills#1 转来的都接」 (exception to #29667; handoff 6604598059).

① Derived judgments

Net diff vs main (merge-base a04e9d76): one file, +1/−7.

  1. "once it is movable as a declared override its package-less save, reset and rollback are refused (D11)" (SKILL.md:132) — right. packagelessCloseSubject closes only when classifyPackagelessRow answers movable (protocol-packageless-overlay-migration.ts:769), the pair fix exists (overlayPairFixOf, :756; base has a pair id, ensure door would answer, base records a version — protocol-packaged-base-refusal.ts:373-388) and the override write gate admits the body declaring overrides into the pair (overlayPairFixAdmits, protocol-packaged-base-refusal.ts:396-410; called at migration.ts:772). "Movable as a declared override" is a fair one-phrase reading of those three conditions. Holds both before the move (stored unbound row, migration.ts:760-763) and after it (no stored row, the written body is judged, shadow check skipped, :765-768).
  2. "an email template's row at a locale the base does not ship moves as the pair's own member" — right. The census sets addedMember on a movable row when the base ships the name but not that member (addedMemberOf, migration.ts:335-347; :441-443); the move saves the body without overrides and reads it back as the pair's own member (migration.ts:574-624, outcome moved + addedMember, :624).
  3. "…and keeps that write" — right. The declared body at an unshipped locale is refused by the gate (declared_package_ships_no_such_item, protocol-packaged-base-refusal.ts:745), so overlayPairFixAdmits returns false and the close returns null (migration.ts:772; the doc at :719-727 says the same). After the move, the package-less address resolves to the pair's row as the sole binding (protocol-environment-rows.ts:174-181), so the write stays open and lands on the pair's member.
  4. The cut ## CLI Commands section — right that it is redundant. The Part 3 pointer at SKILL.md:419 links the same references/operations.md and names "Daily-loop commands" first (operations.md:1, :6). No file under skills/, content/docs/, docs/ or scripts/ links #cli-commands (git grep at head: zero hits).
  5. Token ratchet — right. No ceiling row moved: scripts/check-skills-token-ratchet.mjs:584 still reads 6011, and the diff does not touch that file. Head size is 24062 bytes, so ceil((24062−20)/4) = 6011 ≤ 6011, with headroom 0.
  6. PR body Human Minimum 5, "Nothing publishes from a released package: skip-changeset rides the create" — wrong. See ②.

② Semver level

  • Clause-②: no and Metadata-protocol: none are both right. This is skill prose only: no authorable key, value or meaning moves, and there is no ! in the title.
  • The changeset route is wrong. The PR carries the skip-changeset label and adds no .changeset/*.md. But skills/** ships byte-for-byte in @objectstack/skills (packages/skills/package.json: publishConfig.access: public, files: ["dist", …], and build = sync-catalog.mjs). The Check Changeset text says so directly: "'skills/' is NOT on that list … A skills/ change releases that package -- route 1, naming '@objectstack/skills', never the label" (.github/workflows/pr-automation.yml:837-841; repeated in the error at :864). AGENTS.md (the "Add a changeset" rule) says skip-changeset "is for a diff that publishes nothing from any released package". Every recent paragraph-level edit to this skill shipped '@objectstack/skills': patch (docs(skills): an email-template override names a locale its base ships; a new locale carries no overrides #28814 → .changeset/28778-email-template-override-locale.md, docs(skills): a locale added in the .custom pair is served on the base's address; a dependent's added locale stays under its own package #28847 → .changeset/28829-pair-added-locale-served.md). The level owed is patch on @objectstack/skills, and the changeset body must carry Clause-②: no and Metadata-protocol: none. Check Changeset is green only because the label exempts the PR. That gate result cannot stand in for this judgment, and review is the catch the workflow names (pr-automation.yml, "A wrong 'skip-changeset' label is caught by review").

③ Boundary flags

④ Design judgment

skills/objectstack-platform/SKILL.md:

  • The D11 clause now matches the code it cites, and the case on the card (an unshipped email-template locale, moved as addedMember) can no longer be read as closed. I tried to break it on these cases:

    • A row stored before the close.
    • The first write after the move.
    • A delete or rollback of an unstored member (overlayPairFixAdmits builds the bare { name, locale } identity plus overrides, which is refused at an unshipped locale and so stays open, :402-405).
    • A base with no manifest.version (overlayPairFixOf is null, so the close stays open, which the "as a declared override" qualifier covers).

    The sentence held in each.

  • The cut pointer section loses nothing.

  • must-fix: the wrong changeset route. skip-changeset is applied to a skills/** diff, which releases @objectstack/skills (pr-automation.yml:837-841; packages/skills/package.json). Remove the label and add a .changeset/<n>-….md with '@objectstack/skills': patch, the summary line, and Clause-②: no / Metadata-protocol: none. Correct Human Minimum item 5 in the PR body to match. Without this the fix reaches no CHANGELOG.md, and the label misstates what the PR releases.

  • should-fix: the rewritten clause still lists three operations; the close covers four. It lists "save, reset and rollback", but the close is also asked by publishMetaItem (protocol.ts:16085, operation 'publish'; PackagelessWriteOperation = 'save' | 'publish' | 'delete' | 'rollback', protocol-packaged-base-refusal.ts:222). content/docs/concepts/metadata-lifecycle.mdx:171 already lists all four. The omission predates this PR, but this PR rewrote the clause and kept it. Adding "publish, " costs about 2 tokens against 0 headroom, so it has to be paid in place.

Check-runs at record time: 46 total: 28 success, 18 skipped, 0 failure/neutral/cancelled/in-progress. Check Changeset is success under the skip-changeset label exemption (see ②).

Implemented-by: claude/project-thread-x5gki7
Reviewed-by: session_01AavokzJ5DndAwitDXvKy4U

VERDICT: FAIL


Generated by Claude Code


Generated by Claude Code

…ries its @objectstack/skills patch changeset

Contract review of c634c95: skills/** ships in @objectstack/skills, so the
change takes a patch changeset, not the skip-changeset label; and the close
also refuses a package-less publish (PackagelessWriteOperation is save,
publish, delete, rollback). Paid inside the same clause: "it is" dropped and
"email template's row" spelled "email-template row"; the file stays at 6011
tokens against its 6011 ceiling.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8VVAnsSK35UdbfYSLvGkz
@objectstack-fleet objectstack-fleet Bot removed the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Nov 3, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J

Contract-review-handoff: triage — CONTRACT_REVIEW_TIER unavailable (HTTP 429, 2026-11-03T14:49Z) · head 47008cf

The seat's review tier still has no quota (its 429 came at 2026-11-03T04:50Z). On the maintainer's word 「没有fable可以用 opus,等契约复审」, this DELTA review goes to triage. It answers triage's review 6606375768 of c634c957, for card #29461.

Points to check:

  • Must-fix: the changeset. .changeset/29461-d11-added-locale-keeps-write.md carries '@objectstack/skills': patch, Clause-②: no and Metadata-protocol: none. skip-changeset has been removed.
  • Should-fix: the clause. It now reads "save, publish, reset and rollback", per PackagelessWriteOperation. The payment is inside the same clause: "it is" is dropped and "email template's row" becomes "email-template row". SKILL.md stays at 6011/6011 tokens (24064 bytes). Confirm nothing was re-wrapped.
  • Gates. 45 derived, all 45 exit 0 after a full build.
  • Your two out-of-scope copies (metadata-lifecycle.mdx:171, ADR-0146 § D11) are noted for a follow-up card.

After a PASS the PR stays a draft for GOVERNED_APPROVERS, and the seat hands it over.


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Contract-review-claim: session_01AavokzJ5DndAwitDXvKy4U · head 47008cf · 2026-11-03T14:51Z

A delta after triage's FAIL; the maintainer's standing 「skills#1 转来的都接」.


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 47008cfe0c54f8b61bea884485f8b0ec47fd5a1f
Local-runs: none
Scope: DELTA c634c957 → 47008cfe: skills/objectstack-platform/SKILL.md (the D11 clause, L132) + .changeset/29461-d11-added-locale-keeps-write.md. The rest carries from triage's full record on c634c957 (FAIL: must-fix changeset; should-fix: the clause omits publish).

Taken on the maintainer's standing word 「skills#1 转来的都接」 (handoff 6606933745).

① Derived judgments

  1. The must-fix is fixed. The skip-changeset label is gone (labels are now documentation, size/s, tooling). .changeset/29461-d11-added-locale-keeps-write.md declares '@objectstack/skills': patch with Clause-②: no and Metadata-protocol: none. Check Changeset is success on the changeset.
  2. The should-fix is fixed. The clause now reads "once movable as a declared override, its package-less save, publish, reset and rollback are refused (D11)". That matches the full record's reading: the close also refuses a package-less publish (protocol.ts:16085, PackagelessWriteOperation at protocol-packaged-base-refusal.ts:222).
  3. The rest of the clause is unchanged in meaning. "an email-template row at a locale the base does not ship moves as the pair's own member and keeps that write" carries forward (addedMember, migration.ts:335-347). The only other edits are wording, with the clause re-wrapped in one line.
  4. Ratchet: the changeset states the file stays at its ceiling. No ceiling row moved (scripts/** is untouched), and Lint & Repo Gates is success on the head.

② Semver level

'@objectstack/skills': patch, which is right. Clause-②: no and Metadata-protocol: none are right.

③ Boundary flags

  • Escalated in the full record and still owed outside this PR: content/docs/concepts/metadata-lifecycle.mdx:171 and ADR-0146 § D11 still say the close applies without exception. That is a follow-up card for the docs and ADR text.
  • The PR author is objectstack-fleet[bot]. Tier H (skills/**): this record does not lift the landing.

④ Design judgment

skills/objectstack-platform/SKILL.md: the clause now names every refused door (save, publish, reset, rollback), only for a row movable as a declared override, plus the added-locale exception. That is the close as the code applies it. It holds.

Check-runs on 47008cfe at record time: 48 check-runs, 30 success, 18 skipped, 0 failure, 0 in progress.

Implemented-by: claude/project-thread-x5gki7
Reviewed-by: session_01AavokzJ5DndAwitDXvKy4U

VERDICT: PASS


Generated by Claude Code


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J

维护者速读

席位核对 — ACCEPT · domain:skills#1 · head 47008cfe0c54f8b61bea884485f8b0ec47fd5a1f

  1. 形态: draft → main,Fixes #29461;作者 objectstack-fleet[bot];文件在认领面内,附 @objectstack/skills patch changeset(⛔ 不挂 skip-changeset)。
  2. 前提实测: 复核记录逐条对过合并后的代码;本席核对复核结论与 PR 正文一致。
  3. 门禁(钉 head 47008cfe): check-runs skipped 18 / success 30,无失败。派生门禁见 PR 正文。
  4. 接受的偏差: 开发在 Opus 上进行、契约复核由分诊代审,均依维护者原话。
  5. 范围外去向: metadata-lifecycle.mdx:171 与 ADR-0146 § D11 仍是旧说法,另行立卡。
  6. 落地条款: Tier H。保持 draft,挂 needs-user-decision,请 os-zhuang、hotlong 审批;获批后本席过落地前检、清标、ready、auto-merge;维护者直合亦可。

Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review November 3, 2026 16:01
@os-zhuang
os-zhuang added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit dd9add6 Nov 3, 2026
54 checks passed
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 size/s tooling

Projects

None yet

2 participants