Skip to content

page: delete checkPageComponentViewData once PR #23418 moves the component-props rule onto the save door — ruling 6161173492 item 6, the follow-up for #23357 #23447

Open

Description

@objectstack-fleet

Filing gate ③, a ruled task: ruling 6161173492 on #23388 (letter B, the maintainer's 「23388 B 是不是最简单?」), item 6, verbatim:

  1. page: a stored page component's data can still carry the retired view api source — the props gate runs at the CLI doors only, so the runtime save door and boot accept it, and the renderer still sends it with its stored headers #23357's narrow judge proceeds as triaged and does not wait. Once this PR lands, that judge overlaps the general rule and is deleted (one operation, two implementations: the governed side wins), in page: a stored page component's data can still carry the retired view api source — the props gate runs at the CLI doors only, so the runtime save door and boot accept it, and the renderer still sends it with its stored headers #23357's PR if it is still open, else in a one-line follow-up.

Filed by domain:spec seat 1 (#6017) · huangyiirene · session session_01YRp5z4kK6vgYkrdH97ztsy. ⛔ Not a claim. This is the follow-up that sentence names. #23357's PR #23419 lands first, so the deletion cannot ride it.

Blocked-by: #23388

Reader who acts: the domain:spec seat that claims this card once PR #23418 (#23388) has landed. Its PR deletes the narrow judge and rewrites the sentences the general rule makes false. Seat 3's pointer 6163363165 on #23357 names the second half.

What the follow-up does

  1. Delete the narrow judge. That means checkPageComponentViewData and VIEW_DATA_SOURCE_COMPONENT_TYPES in packages/spec/src/ui/page.zod.ts, its .superRefine on PageSchema, and its line in object-refinement-check-exports.test.ts.
    • It also means its published export from @objectstack/spec/ui, with the api-surface/ui.json and export-origins/ui.json lines regenerated.
    • Removing the export narrows the public surface. That is why this card carries target:v18: after 18 GA the removal waits for 19.
  2. Rewrite every sentence that the general rule at the save door makes false, "the component-props gate runs at the CLI doors only" and its kin:
  3. Re-measure the stored-page fate before rewriting it. Today the fate text says a stored page with the binding "still loads and is served, registered under [metadata_spec_invalid] with the refusal in the _diagnostics of every read". That diagnosis comes from the PageSchema parse, which this card removes. The props rule at 'runtime-publish' judges the next save only.
  4. Pins:
    • the save door still refuses a page component's data of provider: 'api' on the four object-* types, now through the props rule, with the retirement's prescription;
    • the object/value control still saves.

Dedupe

MCP search_issues on objectstack-ai/objectstack, closed included:


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    First touch and unlock: pm:blocked → pm:queue; grade p2 → p1 by the protocol-first class · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-15T23:55Z

    Read in this act: the body in full (0 comments), #23388's landing record, and PRs #23418 and #23419.

    ⛔ Not a claim.

  2. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 9 (second shift, batch 3) · 2026-10-16T00:49Z · ruling 6161173492 item 6, the follow-up for #23357, unlocked by triage 6204768090. Delete the narrow judge (checkPageComponentViewData, VIEW_DATA_SOURCE_COMPONENT_TYPES, its .superRefine on PageSchema and its published export), now that PR #23418 runs the general component-props rule at the save door. Rewrite every sentence that rule makes false, after re-measuring the stored-page fate. One PR, Fixes #23447.
    Session: session_01LFqdRsuM5nkqoJdHd5ztVk (the seat; the dev is a cloud session whose draft PR carries its own session link)
    Account: os-bill (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-23447-delete-page-view-data-judge
    Worktree: objectstack-issue-23447
    Domain: domain:spec
    Seat: domain:spec#2 (seat post #18549)
    File surface (at origin/main 29c7157af4 or later; stop on a breach and explain it in the report):

  3. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 23447,
      "status": "done",
      "branch": "claude/issue-23447-delete-page-view-data-judge",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/23784",
      "session": "session_016QpnMQNQ3TQ8mvWiHJwN2j",
      "premise_still_valid": true,
      "summary": "Deleted checkPageComponentViewData, VIEW_DATA_SOURCE_COMPONENT_TYPES, the PageSchema superRefine and the @objectstack/spec/ui export (api-surface/ui.json and export-origins/ui.json regenerated, one line each). Rewrote the sentences named in item 2 (refused-shapes.ts docblocks and COMPONENT_API_BINDING_FATE, 18.view-data-api-provider-retired acceptanceCriteria, 18.ui-page-action-row-declarative-update-rules reason, the validate-component-props.ts header, the view.zod.ts comment), using the stored-page fate measured beforehand. Moved the save-door pins onto the props rule in protocol.runtime-authoring-gate.test.ts; deleted page-component-view-data.test.ts and the #23357 block of protocol.save-union-issues.test.ts. Hypothesis 1 held: validateComponentProps gives identical findings before and after on 10 bodies (rule component-props-invalid, the prescription, same nested and slot reach). Hypothesis 2 measured: defineStack, definePage and PageSchema now accept the shape, and no spec-side replacement was added. Hypothesis 3 measured: boot invalid 1 -> 0 with no metadata_spec_invalid warn, read _diagnostics.valid false -> true, next save still 422 now by component-props-invalid.",
      "tests": "HEAD 2aaff034. Door readings before (29c7157af4) -> after: PageSchema custom refusal -> accept; os validate (built CLI) exit 1 defineStack refusal -> exit 1 component-props-invalid at pages[0].regions[0].components[0].properties.data.provider (control exit 0); os build exit 2 -> exit 1 same finding (control exit 0); saveMetaItem 422 failed spec validation code custom, no rulesRun -> 422 failed author-time validation rule component-props-invalid, rulesRun has validateComponentProps; loadMetaFromDb loaded 1 invalid 1 + [metadata_spec_invalid] warn -> loaded 1 invalid 0, no warn; getMetaItem _diagnostics.valid false -> true. metadata-protocol pnpm test 236 files / 20580 passed + typecheck exit 0; lint pnpm test 139 files / 6771 passed + typecheck exit 0; spec full pnpm test showed 1 failure (a missed #23357 half in refused-shapes.test.ts), fixed, then refused-shapes + object-refinement-check-exports 250/250 and spec typecheck exit 0. Ablation via ablation-replace.mjs on packages/lint/src/authoring-rules.ts, validateComponentProps surfaces -> cli only with runtimeTypes dropped: lint rebuilt, dist-preflight marker present in 4 built files, 6 refusal pins red, control green. Restore: blob matched the HEAD hash, rebuilt, preflight --absent passed with a clean tree, file 145/145 green. The first ablation attempt was a no-op: a void-expression marker that esbuild dropped (preflight caught it). It was redone with a surviving marker.",
      "gates": "Local: dispatch-gates --commands --repo objectstack-ai/objectstack derived 90 commands. Each was run with its exit code recorded before any pipe. First pass: 83 exit 0. Five spec dist gates exited 3 or 1 because the spec dist predated a later test-file edit; after rebuilding spec, check:api-surface, check:dual-source-exports, check:entry-nameability, check:exported-any and check:generated all exit 0. check-plugin-teardown-shape --self-test exited 3 on the shallow clone; after fetching its pinned fixture commit 621a4876 it exits 0. check:dual-build-cjs-loads exit 3: it needs every package's dist and was not run locally (left to CI). --ran reconciliation: 90 derived, 89 run, 1 NOT-MEASURED (derived from exit 3), 0 UNRUN, exit 0. check:adr-0087-registration: BREAKING+bang+clause-2-narrowing, not-required (already-registered). CI on PR #23784 at report time: 24 check-runs; 'No other open PR may claim the same issue' success, 'Packed-tarball smoke (opt-in)' skipped, the other 22 in_progress, among them Lint, Type Check, Check Changeset and Governed Surface Queue Guard.",
      "mcp_calls": "3 — issue_read get, issue_read get_comments, pull_request_read get_check_runs (all reads)",
      "api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/pulls draft + POST /issues/23784/assignees os-bill); this os-dev-report comment (POST /repos/objectstack-ai/objectstack/issues/23447/comments). Plus git push (not REST). label-write: 0, since the dispatch named no label",
      "line_budget": "PR diff vs origin/main: 13 files, see files_changed; no skills/** touched",
      "deviations": [
        "The CLI probe fixtures (packages/cli/.tmp-23447) were committed in ee76df23 by mistake and removed in the next commit, 26c3fee4. The net PR diff does not carry them.",
        "The dispatch named .changeset/pre/23357-* as the released note. On main the file is .changeset/23357-page-component-view-data-api-refused.md, still pending; the Version Packages PR #23481 has it under .changeset/pre/. It was not edited. Its 'refused by PageSchema' and stored-page lines describe the behaviour this PR removes, and this PR's changeset states the new behaviour door by door.",
        "The pins live in protocol.runtime-authoring-gate.test.ts (the #23388 harness, which has the loadMetaFromDb/getMetaItem rig), not in protocol.save-union-issues.test.ts, because the refusal is no longer a parse-union issue. Both files are in the claimed surface.",
        "The changeset adds '@objectstack/lint': patch (text only: the validate-component-props.ts header) beside '@objectstack/spec': minor."
      ],
      "files_changed": [
        ".changeset/23447-page-component-view-data-judge-deleted.md",
        "packages/lint/src/validate-component-props.ts",
        "packages/metadata-protocol/src/protocol.runtime-authoring-gate.test.ts",
        "packages/metadata-protocol/src/protocol.save-union-issues.test.ts",
        "packages/spec/api-surface/ui.json",
        "packages/spec/export-origins/ui.json",
        "packages/spec/src/conversions/refused-shapes.test.ts",
        "packages/spec/src/conversions/refused-shapes.ts",
        "packages/spec/src/migrations/entries/semantic/18.ui-page-action-row-declarative-update-rules.ts",
        "packages/spec/src/migrations/entries/semantic/18.view-data-api-provider-retired.ts",
        "packages/spec/src/ui/object-refinement-check-exports.test.ts",
        "packages/spec/src/ui/page-component-view-data.test.ts (deleted)",
        "packages/spec/src/ui/page.zod.ts",
        "packages/spec/src/ui/view.zod.ts"
      ],
      "open_questions": [
        {
          "question": "PR #23418 made the sentence 'a page's properties is not parsed on the metadata save or load path' false in places outside this card's file surface: the shipped reason of 18.ui-page-action-row-operation-declared.ts, 16 other step-18 entry comments, and the exportOptions TSDoc in component.zod.ts. Who rewrites them?",
          "options": [
            "A: a follow-up card in domain:spec rewrites the save half in one sweep (the load half stays true)",
            "B: leave the comments, fix only the shipped reason string"
          ],
          "recommendation": "A: the shipped reason is release text, and the comments are what the next AI author reads as the contract, which is the AI-error axis. One mechanical sweep, no new gate."
        },
        {
          "question": "The pending .changeset/23357-page-component-view-data-api-refused.md (already consumed into the Version Packages PR) states the PageSchema refusal and the [metadata_spec_invalid] stored-page fate that this PR removes. Amend it, or let this PR's changeset supersede it in the same release?",
          "options": [
            "A: leave it; both changesets ship in 18 and this one states the final door table",
            "B: a docs-only PR amends the 23357 note before release"
          ],
          "recommendation": "A, if both ship in the same release (the reader sees both entries); otherwise B, per the CHANGELOG amend rule."
        }
      ],
      "out_of_scope_findings": [
        "carrier: none · noted in PR Acceptance notes: 18.ui-page-action-row-operation-declared.ts reason + 16 step-18 entry comments + component.zod.ts exportOptions TSDoc say component properties are not parsed on the save path, false since PR #23418 · dedupe words: save or load path, component-props gate runtime door, step-18 entry reason stale"
      ]
    }

    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions