Skip to content

Commit 0b788de

Browse files
committed
fix(lint): the two now-retired page prop aliases are refused at every door; the normalized-tier comment and the changeset say so
Claude-Session: https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz Co-authored-by: Claude <noreply@anthropic.com>
1 parent 159a710 commit 0b788de

2 files changed

Lines changed: 5 additions & 6 deletions

File tree

‎.changeset/23388-page-component-rules-runtime-door.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ Clause-②: no (narrowing)
2424

2525
**The one-line fix: apply what the issue names, then save again.** If a component really does read the key, the props row in `@objectstack/spec` is what is wrong, not the page.
2626

27-
**Who is affected.** A deployment whose stored pages carry such a finding: those pages keep loading and serving, and only their next save is refused until the finding is fixed. `objectstack migrate meta --stored` does not list these findings. The authored pages measured when the props findings became errors (37 pages in this repository and 8 in `objectstack-ai/hotcrm`) carried none, and the in-repo page corpus carries no `component-type-unknown` finding; deployed rows were not measured. Two live-window ADR-0087 D2 aliases on page component properties are converted at `objectstack validate` and at load but not at this door, so a save that spells one is refused with the canonical key: `page:header` `description` (write `subtitle`) and an `element:button` inline `type: 'api'` action's object `params` (write `bodyExtra`).
27+
**Who is affected.** A deployment whose stored pages carry such a finding: those pages keep loading and serving, and only their next save is refused until the finding is fixed. `objectstack migrate meta --stored` does not list these findings. The authored pages measured when the props findings became errors (37 pages in this repository and 8 in `objectstack-ai/hotcrm`) carried none, and the in-repo page corpus carries no `component-type-unknown` finding; deployed rows were not measured. The two former ADR-0087 D2 aliases on page component properties, `page:header` `description` (write `subtitle`) and an `element:button` inline `type: 'api'` action's object `params` (write `bodyExtra`), are retired from the load path at 18 and refused at every door with the rename (`objectstack validate`, load, and this save door), so the save door and `objectstack validate` agree on them.
2828

2929
The `@objectstack/spec` change is text only: the reason of each D3 migration entry named above (and the matching step-18 summaries) said a stored page still saves and loads, and now says it still loads and that its next save meets the component-props gate at the metadata save door.

‎packages/lint/src/authoring-rules.ts‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1149,11 +1149,10 @@ export const AUTHORING_RULES: readonly AuthoringRule[] = [
11491149
//
11501150
// `normalized` for a reason worth stating, since the props bag survives the
11511151
// Zod parse UNCHANGED and both tiers would otherwise carry the same data: the
1152-
// ADR-0087 conversion layer runs inside `normalizeStackInput`, so a converted
1153-
// alias (`page-header-subtitle-alias` rewrites `properties.description` →
1154-
// `subtitle`) is already canonical here and is never reported as undeclared —
1155-
// while a schema error elsewhere in the stack cannot take these findings down
1156-
// with it.
1152+
// ADR-0087 conversion layer runs inside `normalizeStackInput`, so a prop
1153+
// spelling a live D2 conversion still rewrites on the load path is already
1154+
// canonical here and is never reported as undeclared — while a schema error
1155+
// elsewhere in the stack cannot take these findings down with it.
11571156
//
11581157
// Gating: every finding is an `error`, so `os validate`, `os build` and
11591158
// `os lint` refuse an undeclared prop, a value the props schema rejects, a

0 commit comments

Comments
 (0)