Skip to content

Commit 11cf094

Browse files
committed
chore(changeset): record the ADR-0087 disposition for the submitBehavior.url narrowing (#7496)
The Check Changeset gate requires a declared-breaking changeset to answer the ADR-0087 question in writing. Answered `not-required (no-migration-prescription)`: no key is retired — only the accepted VALUE set narrows — and the replacement path for an absolute URL is a human decision no codemod can derive, so a ledger entry would promise a rewrite that cannot exist. The schema rejection is the upgrade channel, and it is more specific than a ledger line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CJkvhk41XD5vUxg1fpoF6H
1 parent 4fe08ad commit 11cf094

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

.changeset/submit-behavior-url-shape.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,6 @@ The consumer half — objectui resolving and escaping the tokens rather than
6060
redirecting on the raw string — is scoped after this in objectui#4190. Until it
6161
lands, the renderer still redirects verbatim, so a token would reach the browser
6262
literally; the forms guide says so where the rules are documented.
63+
64+
<!-- adr-0087: not-required (no-migration-prescription) Nothing is retired: `submitBehavior.url` keeps its declaration, its spelling, its type and its arm — what moves is the set of VALUES the key accepts, from "any string" to the ruled relative-path shape. There is no tombstone to write, and no mechanical FROM/TO rule a ledger entry could state, because the transform is not derivable: the in-app path that should replace `https://example.com/thanks` is a decision about where that form's submitter belongs, and no codemod can read it out of the old value — the old value is precisely the destination the ruling says must stop being honoured. `objectstack migrate meta` would therefore have nothing to apply, and a ledger entry naming this surface would promise an automatic rewrite that cannot exist. The upgrade channel is the schema rejection itself, which is strictly more specific than any ledger line could be: it fires at the author's own path, names which of the six refused forms was written, states the rule and the ruling date, and prescribes the fix (write the in-app path; use an app navigation item for a deliberate external link). Measured blast radius in this repo: zero — no `examples/*` app, fixture or test authors a non-conforming `submitBehavior.url` (the only `kind: 'redirect'` fixtures are `view-strictness-batch18.test.ts`'s `'/x'` and `'/done'`, already conforming), and the one absolute URL that existed was a commented-out example in `content/docs/ui/forms.mdx`, corrected in this PR. -->
65+

0 commit comments

Comments
 (0)