Skip to content

Commit 90add55

Browse files
committed
docs(changeset): answer the ADR-0087 disposition question for #12603
check-adr-0087-registration flagged the changeset as declaring a breaking change (the BREAKING-CHANGE-footer regex matched an ordinary hard-wrapped sentence starting "breaking change does not burn a major version...") with no adr-0087: disposition marker. Whatever tripped the regex, the underlying verdict is correct on the merits -- this changeset does argue an accept-set narrowing -- so the fix is to answer the question, not to reword around it. Category: no-migration-prescription, verified against the real predicates (scripts/check-adr-0087-registration.mjs: parseChangeset/hasMigrationPrescription) rather than assumed: - hasMigrationPrescription(body) is false both before and after adding the marker -- the changeset's "**Migration.**" paragraph is prose guidance ("use a string key instead"), not a heading, an arrow rewrite, a FROM/TO label, or a rewrite table, so it never sets framedSection or matches REWRITE_RE. - runtime-interface-only does not apply and was ruled out mechanically, not just judgment: exportedTypeDeclaration only recognizes an exported interface/type/class/enum ("const/function are absent on purpose -- this category is about a TYPE surface"), and every symbol this diff touches (installFlatInput, refuseSymbolPayloadKey) is a private function; the one exported function in the file whose behaviour changed (wrapDeclarativeHook) had no type-declaration change, only a Proxy trap's runtime behaviour, so naming it would be a category the gate's own predicate cannot verify true. ADR-0087 addendum (2026-08-13) authorizes the category: "no-migration- prescription -- REFUSED when the changeset's own body carries a migration prescription" -- ctx.input carries no spec/Zod field, object definition, or stored representation for objectstack migrate meta to act on; a symbol key was never a declarable metadata surface in the first place, so there is nothing here for a migration to rewrite. Part of #12603 Claude-Session: https://claude.ai/code/session_01LZbWd2jNV1FErXTPSS4Dry
1 parent 651b988 commit 90add55

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

‎.changeset/hook-input-symbol-key-refusal.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,5 @@ Inverts the pin `hook-input-ownkeys-agreement.test.ts` carried OPEN since
5656
#12578 (the disagreement, deliberately left standing) into a REFUSAL pin
5757
(the write throws, nothing persists) — the same case, turned around in place,
5858
not a second assertion stacked beside the first.
59+
60+
<!-- adr-0087: not-required (no-migration-prescription) A JS-runtime Proxy trap now throws instead of silently accepting a write; no spec or Zod field, object definition, or stored representation is added, removed, or renamed. A symbol key was never a declarable metadata surface for objectstack migrate meta to know about, so there is nothing here for a migration to rewrite -- the Migration section above is authoring guidance for hook bodies, not a metadata-ledger prescription, and carries no arrow or FROM/TO pair. -->

0 commit comments

Comments
 (0)