Repository navigation
docs(skills): the D11 close refuses only a declared-override move; an added email-template locale keeps its package-less write - #29924
Conversation
… 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
|
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 Points for the reviewer:
After a PASS the PR stays a draft for Generated by Claude Code |
|
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 Generated by Claude Code |
|
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U Contract reviewServed-tier: Taken by triage on the maintainer's word 「skills#1 转来的都接」 (exception to #29667; handoff 6604598059). ① Derived judgmentsNet diff vs
② Semver level
③ Boundary flags
④ Design judgment
Check-runs at record time: 46 total: 28 success, 18 skipped, 0 failure/neutral/cancelled/in-progress. Implemented-by: 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
|
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 Points to check:
After a PASS the PR stays a draft for Generated by Claude Code |
|
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 |
|
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U Contract reviewServed-tier: Taken on the maintainer's standing word 「skills#1 转来的都接」 (handoff 6606933745). ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Check-runs on Implemented-by: VERDICT: PASS Generated by Claude Code Generated by Claude Code |
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J 维护者速读
席位核对 — ACCEPT · domain:skills#1 · head
|
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:维护者速读
addedMember)保留这个写入口。另删掉一段重复的「CLI Commands」指针小节付 token 账,并加一份@objectstack/skills的 patch changeset(技能随该包发布)。packagelessCloseSubject)只判声明 override 的搬法;技能原句说「一律拒绝」,对这种行是错的,AI 照着写会以为这类写入已被关。ADR-0087 条目那一半已由 PR fix(spec): the packageless-overlay-write-closed prose names the ceremony's own-member move #29457 改正,这里是剩下的一份。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),全绿。skills/**),需要GOVERNED_APPROVERS的批准;PR 保持 draft,等分诊对第二轮的增量契约复审。What changes
Facts are taken from the merged code on
main(a04e9d7), not the card alone:packagelessCloseSubjectandclassifyPackagelessRowinpackages/metadata-protocol/src/protocol-packageless-overlay-migration.ts, the ceremony'saddedMemberOfand itsmoved+addedMemberoutcome in the same file, and the corrected ADR-0087 entrypackages/spec/src/migrations/entries/semantic/18.packageless-overlay-write-closed.ts(PR #29457).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 arePackagelessWriteOperation(save | publish | delete | rollback,protocol-packaged-base-refusal.ts); the old clause left out publish. That is whatpackagelessCloseSubjectdoes: it closes a package-less write only where the census answersmovableANDoverlayPairFixAdmitsadmits the declared body into the pair; anemail_templatemember 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, nooverrides). The rest of the paragraph is byte-identical.## CLI Commandssection (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 samereferences/operations.mdand names its "Daily-loop commands" section first. No other file links the cut heading's anchor (git grep '#cli-commands'overskills/,content/docs/,scripts/: zero hits)..changeset/29461-d11-added-locale-keeps-write.md.'@objectstack/skills': patchwithClause-②: noandMetadata-protocol: none:skills/**ships in@objectstack/skills, so a skills change takes route 1 of Check Changeset (.github/workflows/pr-automation.yml), never theskip-changesetlabel.Token ratchet, paid in place (no ceiling row moved, no re-wrap)
skills/objectstack-platform/SKILL.mdskills/objectstack-platform(all files)skills/*/SKILL.mdtogetherThe 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.jsonhas 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-overlaysmoves a package-less row of anemail_templatelocale 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
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.@objectstack/skills, so it carries a patch changeset and theskip-changesetlabel 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.content/docs/concepts/metadata-lifecycle.mdxand ADR-0146 § D11; they are outside this card's file surface and go to a follow-up card.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
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 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 afterpnpm install --frozen-lockfileand a fullpnpm 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-loadsincluded.--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).@objectstack/formula/@objectstack/lint/@objectstack/objectqlbuild; 34 exited 0 andpnpm check:dual-build-cjs-loadsexited 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).git push×2; one relaypr_create; no GitHub MCP write. Theskip-changesetlabel that rode the create was removed by the seat.Human Minimum
packages/specholds no runtime logic. (No schema touched.)pnpm lintis CI's repo-wide run.main, one pull request.@objectstack/skills: it carries apatchchangeset, and both declaration lines are filled in here and in the changeset.packages/specnot touched.content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01J8VVAnsSK35UdbfYSLvGkz
Generated by Claude Code