Repository navigation
docs(skills): teach the declared action override and its access-widening refusal - #30704
Conversation
…ing refusal The platform skill's ADR-0146 customization paragraph now lists `action` among the declared-override types and says what an action override may change: it keeps the base's objectName (OBJECT:NAME identity; moving it is refused declared_package_ships_no_such_item) and replaces behaviour whole for whoever could already run the base, while dropping a requiredPermissions entry, turning ai.exposed on or ai.requiresConfirmation off is refused 403 NOT_OVERRIDABLE with rule declared_action_widens_access. Paid inside the token ratchet by same-file compression. The metadata-lifecycle concept page no longer says an action override is not served, and the platform evals gain an action-override case. Claude-Session: https://claude.ai/code/session_016WV4czCxwMepBDxUtozyne Co-authored-by: Claude <[email protected]>
…gate quotes Claude-Session: https://claude.ai/code/session_016WV4czCxwMepBDxUtozyne Co-authored-by: Claude <[email protected]>
|
domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk Contract-review-claim: session_016WV4d1mkgEris4MHHLjtnk · head 17e0285 · 2026-11-05T22:49Z |
|
domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk Contract reviewServed-tier: ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Implemented-by: VERDICT: PASS |
|
domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk 维护者速读
席位核对 — ACCEPT · head 17e0285
|
Requested by Elon · project thread
domain:skills#1 · os-elon-musk · session_016WV4czCxwMepBDxUtozyne
Fixes #30505
Clause-②: no
Metadata-protocol: none
维护者速读
objectstack-platform技能在 ADR-0146 定制段把action列入可声明覆盖的类型,并补一句讲清 action 覆盖能改什么、不能改什么;metadata-lifecycle.mdx删掉"action 覆盖尚未提供"的过时句,改写为同样的规则;技能评估加一条 action 覆盖用例。skills/objectstack-platform/SKILL.md定制段新增的 action 句与压缩处;content/docs/concepts/metadata-lifecycle.mdx第 130–146 行;skills/objectstack-platform/evals/config-plugins-ops.json用例 15。node scripts/check-skills-token-ratchet.mjs,预期看到objectstack-platform/SKILL.md is 6010 tokens (ceiling 6011; headroom 1)。skills/**,Tier H),需治理审批人批准后由席位落地。What changes
skills/objectstack-platform/SKILL.md(the ADR-0146 customization paragraphs):actionjoins the list of types a pair's declared override is honoured for, and one sentence teaches what an action override may change. It keeps the base'sobjectName(the doors match the base's action asOBJECT:NAME; an override on another object is refuseddeclared_package_ships_no_such_item) and replaces the behaviour (type,body,label,visible, …) whole, for whoever could already run the base. Dropping arequiredPermissionsentry, turningai.exposedon, or turningai.requiresConfirmationoff is refused403 NOT_OVERRIDABLEwith ruledeclared_action_widens_access.content/docs/concepts/metadata-lifecycle.mdx: the sentence saying anactionoverride waits for ADR-0146 D9 and is not served is gone;actionis in the type list, and a new bullet states the same rules in full prose.skills/objectstack-platform/evals/config-plugins-ops.json: new case 15 (relabel and re-script a packaged action, and a request to widen who may run it); case 13's type list gainsaction. The platform evals carry one case per taught override rule (cases 12–14), so the new rule gets one too..changeset/30505-skills-declared-action-override.md:'@objectstack/skills': patch.Every fact was read off
origin/mainb77c160a, not off the card:OVERRIDE_TYPE_CLASSIFICATION.action(disposition: 'overridable') inpackages/spec/src/kernel/customization-package.ts;actionOverrideWideningand thedeclared_action_widens_access/declared_package_ships_no_such_itemrefusals (403,NOT_OVERRIDABLE) plus theOBJECT:NAMEshipper filter inpackages/metadata-protocol/src/protocol-packaged-base-refusal.ts. The confirmation key isai.requiresConfirmation, nested underailikeai.exposed, so the skill spells both that way.Why
PR #30497 opened the declared override for
action(ADR-0146 D9), and PR #30612 added theobjectNamerule. The skill still listed the overridable types withoutaction, and the docs page said an action override was not served. An agent reading either would refuse or clone a package's button instead of overriding it.Token ratchet (
skills/**)b77c160a)17e0285f)objectstack-platform/SKILL.mdlinesobjectstack-platform/SKILL.mdtokens (ratchet count, ceiling 6011)SKILL.mdfiles, linesSKILL.mdfiles, tokensThe addition (~100 tokens) is paid in the same file, with no ceiling raise. Each cut removes words, never a re-wrap:
basedOn").strict: falsefence becomes one inline sentence.bootstrap.mdpointer stubs (§ Multi-App Composition, § Complete Working Example) merge into the pointer above them, so one line names all four sections.onEnable). ThedefineStack()warn sentence is shortened; the example warning text it introduces already says the value is dropped.Acceptance notes
content/docs/concepts/metadata-lifecycle.mdxL208 (ADR-0126 table) still names only the switch-off route for a packaged action. That route still exists (packaged-base-regime.ts), so it is not false, but the page does not mention the declared override as the path for changing an action. That line is outside this card's file surface. Noted, not filed.Verification
Gates were run on the final head
17e0285f(git rev-parse --short HEAD), after a whole-treeturbo run build(lockVERDICT command-exit 0).dispatch-gates --commands: 70 families derived. All 70 exit 0.pnpm lintexits 0.dispatch-gates --ran: 70 derived, 70 run, 0 NOT-MEASURED, 0 UNRUN.ea0dcdad, was red oncheck:skill-top-level-keys: one compression had reworded the sentence that gate quotes ("the top level refuses it and the stack fails to load").17e0285frestores the sentence and pays the bytes elsewhere.Gate exit codes on 17e0285
Human Minimum
packages/specholds no runtime logic. (packages/specnot touched.)pnpm lintpasses.main, one pull request.packages/spectouched: not touched.content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Generated by Claude Code