Repository navigation
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
Copy link
Copy link
Open
Labels
domain:specenhancementNew feature or requestNew feature or requestpm:dispatchedpriority:p1High: required for production / M2High: required for production / M2target:v18
Description
Filing gate ③, a ruled task: ruling 6161173492 on #23388 (letter B, the maintainer's 「23388 B 是不是最简单?」), item 6, verbatim:
- page: a stored page component's
datacan still carry the retired viewapisource — 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'sdatacan still carry the retired viewapisource — 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
- Delete the narrow judge. That means
checkPageComponentViewDataandVIEW_DATA_SOURCE_COMPONENT_TYPESinpackages/spec/src/ui/page.zod.ts, its.superRefineonPageSchema, and its line inobject-refinement-check-exports.test.ts.- It also means its published export from
@objectstack/spec/ui, with theapi-surface/ui.jsonandexport-origins/ui.jsonlines regenerated. - Removing the export narrows the public surface. That is why this card carries
target:v18: after 18 GA the removal waits for 19.
- It also means its published export from
- 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:
- the
refused-shapes.tsdocblock and fate text; - the step-18 entry
18.view-data-api-provider-retired.ts'sacceptanceCriteria; - the comment at
packages/lint/src/validate-component-props.ts:111-116(seat 3's pointer). - the step-18 entry
18.ui-page-action-row-declarative-update-rules.ts(spec(ui): page action rows still accept five declarative-update shapesActionSchemarefuses (patchwithoutoperation;updatewithtarget, aurlexecutor, nopatch, orlist_toolbar): family closing card after #23332 #23427, PR fix(spec)!: page action rows carry ActionSchema's declarative-update rules, read from one judge #23494), which repeats the family's "a page'spropertiesis not parsed on the metadata save or load path". Added by seat 1 at spec(ui): page action rows still accept five declarative-update shapesActionSchemarefuses (patchwithoutoperation;updatewithtarget, aurlexecutor, nopatch, orlist_toolbar): family closing card after #23332 #23427's ACCEPT; the spec(ui): page action rows still accept five declarative-update shapesActionSchemarefuses (patchwithoutoperation;updatewithtarget, aurlexecutor, nopatch, orlist_toolbar): family closing card after #23332 #23427 dev's report names it.
- the
- 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_diagnosticsof every read". That diagnosis comes from thePageSchemaparse, which this card removes. The props rule at'runtime-publish'judges the next save only.- The follow-up states what a stored page does after the deletion: whether it still carries a read diagnostic, and whether its next save is still refused, now by
validateComponentProps. - The contract review of PR feat(spec)!: the page parse refuses a component data prop naming the retired view-level api source, at every door that parses a page #23419 (
6164843252) also noted that the boot count for a page row was measured only with a deleted probe.
- The follow-up states what a stored page does after the deletion: whether it still carries a read diagnostic, and whether its next save is still refused, now by
- Pins:
- the save door still refuses a page component's
dataofprovider: 'api'on the fourobject-*types, now through the props rule, with the retirement's prescription; - the
object/valuecontrol still saves.
- the save door still refuses a page component's
Dedupe
MCP search_issues on objectstack-ai/objectstack, closed included:
delete checkPageComponentViewData page component data api provider judge once validateComponentProps runs at the save door→ 4 hits: page: a stored page component'sdatacan still carry the retired viewapisource — 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 (the judge's own card), [Decision] Pages saved through Studio, REST or MCP skip the component-props rule thatos validaterefuses: cross it to the runtime door, and on what evidence #23388 (the general rule), finding(spec): two live-window page-property aliases (page:headerdescription, an inlineapiaction's objectparams) are converted atos validateand at load but not at the metadata save door, which now runs the component-props rule (PR #23418) #23421 (aliases at the save door), lint/spec: a retired page-component prop (object-grid defaultFilters) passes os validate with only a warning, while the conversion registry says the loader refuses it — the props gate's error upgrade has no carrier since its blockers closed #23026 (closed; the props gate's error upgrade). None is this follow-up.component-props gate runtime publish door page save follow-up narrow judge overlap ruling B 23388→ 73 hits. In the first page: page: a stored page component'sdatacan still carry the retired viewapisource — 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, [Decision] Pages saved through Studio, REST or MCP skip the component-props rule thatos validaterefuses: cross it to the runtime door, and on what evidence #23388, finding(spec): two live-window page-property aliases (page:headerdescription, an inlineapiaction's objectparams) are converted atos validateand at load but not at the metadata save door, which now runs the component-props rule (PR #23418) #23421, spec(ui):ComponentPropsMaphas nolist-viewrow, so a page-embedded list view'spropertiesare judged by nothing:kanban.groupFieldandoptions.gridpass on a page while every list-view door refuses them #22444 and others. None carries item 6.
Generated by Claude Code
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
domain:specenhancementNew feature or requestNew feature or requestpm:dispatchedpriority:p1High: required for production / M2High: required for production / M2target:v18
Activity
objectstack-fleet commentedon Oct 15, 2026
First touch and unlock:
pm:blocked→pm:queue; grade p2 → p1 by the protocol-first class · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-15T23:55ZRead in this act: the body in full (0 comments), #23388's landing record, and PRs #23418 and #23419.
Blocked-by: #23388: [Decision] Pages saved through Studio, REST or MCP skip the component-props rule thatos validaterefuses: cross it to the runtime door, and on what evidence #23388 closedcompletedat 2026-10-15T23:03Z, when PR feat(lint)!: the two page component rules run on the runtime publish door (ruling B) #23418 merged asd0c09e47c1.datacan still carry the retired viewapisource — 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 feat(spec)!: the page parse refuses a component data prop naming the retired view-level api source, at every door that parses a page #23419 merged first, as05ab9ef895.main:checkPageComponentViewDataappears inpage.zod.tsand five other files underpackages/spec/src, read in this act.superRefineonPageSchema, which changes the spec's accept surface. It also removes a published export from@objectstack/spec/ui, which narrows the declared surface.filing-gate.md〈定级判据〉 says 「修复改 spec 接受/声明面…宽窄皆算」 and 「此类任何车道皆 p1 + 在研大版 target:」.target:v18says why it is window-bound: after 18 GA, the removal waits for 19.domain:spec, confirmed, andtarget:v18stands.⛔ Not a claim.
objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 9 (second shift,
batch 3) · 2026-10-16T00:49Z · ruling6161173492item 6, the follow-up for #23357, unlocked by triage6204768090. Delete the narrow judge (checkPageComponentViewData,VIEW_DATA_SOURCE_COMPONENT_TYPES, its.superRefineonPageSchemaand 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 asGET /useranswers it; always the card's assignee)Branch:
claude/issue-23447-delete-page-view-data-judgeWorktree:
objectstack-issue-23447Domain:
domain:specSeat:
domain:spec#2(seat post #18549)File surface (at
origin/main29c7157af4or later; stop on a breach and explain it in the report):packages/spec/src/ui/page.zod.ts:checkPageComponentViewData,VIEW_DATA_SOURCE_COMPONENT_TYPES, their docblocks and the.superRefineonPageSchemaonly.packages/spec/src/ui/view.zod.ts: the comment that cites the judge.packages/spec/src/ui/object-refinement-check-exports.test.ts(its one line) andpackages/spec/src/ui/page-component-view-data.test.ts(deleted or re-pointed at the props rule, as the pins in the card's item 4 need).packages/spec/src/conversions/refused-shapes.tsdocblock and fate text, with its test;18.view-data-api-provider-retired.tsacceptanceCriteria;18.ui-page-action-row-declarative-update-rules.ts; and the comment atpackages/lint/src/validate-component-props.ts:111-116.packages/metadata-protocol(protocol.save-union-issues.test.tsand kin). The generatedapi-surface/ui.jsonandexport-origins/ui.json, through the generators only. One changeset,.changeset/23447-*.md.isDefaultorPagePrintSchemaregions ofpage.zod.ts: those are PRs feat(spec)!: a page declares nothing the console does not honour — isDefault only on a bound record page, a closed template set, regions its template places #23708 and spec liveness: the console pin hop to objectui 1f23d5b070fa makespage.printandtranslation.flows.successMessage/errorMessagereadplannedwhile the shipped console applies them (family card; theparentDataSourceleg is #23585) #23710. ⛔ Not.changeset/pre/**, which holds released notes. ⛔ Notcontent/docs/releases/.Container & model:
M,mode:cloud,model: default tier(dispatch-gates --tier: no path-derived mandate). Cloud by the seat's interim rule ([Decision] Three spec contract dev agents in one container queued ~70 min each on the shared verify lock: leave packagetest:repoto CI, and send build-heavy cards to cloud sessions? #23607), becausepackages/specplus the lint and metadata-protocol pins is a build-heavy closure. Review ceilingCONTRACT_REVIEW_TIER:PageSchema's parse stops refusing a shape that the props rule then refuses at the CLI and the save door, and a published export leaves@objectstack/spec/ui.Clause-②: yes
Responsibility: n/a — a ruled follow-up, not a defect card
Thread-read: 6204768090
Ruling-ref: 6161173492 (item 6, letter B, the maintainer's 「23388 B 是不是最简单?」)
Serial constraints cleared:
batch 3, the maintainer's newest word in this seat's session. In flight from this seat: feat(spec)!: a page declares nothing the console does not honour — isDefault only on a bound record page, a closed template set, regions its template places #23708's pin bump and spec liveness: the console pin hop to objectui 1f23d5b070fa makespage.printandtranslation.flows.successMessage/errorMessagereadplannedwhile the shipped console applies them (family card; theparentDataSourceleg is #23585) #23710, both cloud.page.zod.ts(other regions),object-refinement-check-exports.test.ts, and the uiapi-surface/export-originsshards. Thechore: version packagesPR chore: version packages (next) #23481 holds.changeset/pre/23357-*, which stays untouched. No other open PR touches the files above.mainand regenerates throughscripts/pm/os-regen-merge.sh, keeping both intents.objectstack-fleet commentedon Oct 16, 2026
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