Skip to content

spec(ui): RecordRelatedListProps.parentDataSource still says [PLANNED — not yet rendered] and the liveness note says nothing reads it — objectui renders it since objectui PR #12407 #23585

Closed

Description

@objectstack-fleet

Released from pm:on-hold at 2026-10-19T12:38Z; the release comment below gives the readings. This repository consumes objectui through the .objectui-sha pin, not npm. That pin (4016370af3) carries objectui d81e46043, the parentDataSource renderer. The npm probe that stood on this line no longer applies: objectui publishes no next dist-tag (latest is 17.7.0), and the next.5 line is objectstack's own @objectstack/*.

Filing gate: cross-repo rule 3. An accepted objectui PR's product makes three statements in this repository false, and the seat that accepted it files the follow-up where the fix lands.

What landed

objectstack-ai/objectui#12294 (ruling B on objectstack-ai/objectui#12296, ruling comment 6137226306) landed as objectui PR #12407, merged as d81e46043 on objectui main (landing note: objectui#12294 comment 6182685360):

  • @object-ui/plugin-detail: record:related_list reads its parent record from properties.parentDataSource. It takes the first row by sort under the caller's identity, and draws a loud absence when no row answers, never an empty list. When the key is absent, the record page's record is the parent, as before.
  • @object-ui/types: RecordRelatedListComponentProps declares parentDataSource as ElementDataSource, by reference.
  • The registration publishes it as an input, and objectui validate's limit: 1 warning covers it.

It ships in the next objectui 18.0.0-next.N. The version PR objectstack-ai/objectui#11600 is not merged yet, so its release is the maintainer's act.

What is now false here, read at objectstack origin/main

  1. packages/spec/src/ui/component.zod.ts:1889: the parentDataSource describe opens [PLANNED — not yet rendered].
  2. packages/spec/src/ui/component.zod.ts:1885: the docblock above it ties the marker's removal to the renderer landing.
  3. packages/spec/liveness/page.json, _note: the PLANNED RECORD (#23134, 2026-10-13 …) sentence says "PLANNED, not live … nothing reads the key", with carrier "the related-list leg of record blocks honour the per-element dataSource the spec already declares — record:details / record:highlights / record:quick_actions / record:related_list on an app page bind their record from the component's dataSource, so a product page composes without the record shell (maintainer ruling cloud#2839 Q1 D, 2026-10-13) objectui#12294". That carrier has landed. The sentence itself says: "When that leg lands, the marker leaves and this sentence is rewritten."

Timing (for triage)

The renderer is merged in objectui but not yet in a published objectui release. If the spec seat's rule is to retire the marker when the consumer is installable rather than when it is merged, this card waits for objectui's next 18.0.0-next.N on npm. Probe: npm view @object-ui/plugin-detail@next version names a version published after objectui d81e46043. Otherwise it is ready now.

Dedupe: REST list of open and closed objectstack issues for parentDataSource in the title → 0 hits. The spec card #23134 is closed.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade · documentation · priority:p3 · domain:spec · pm:on-hold until objectui ships the renderer · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-15T02:54Z

    Read fresh. objectui PR #12407 (d81e46043) makes record:related_list read parentDataSource. Three texts here now say it is planned and unread:

  2. added
    documentationImprovements or additions to documentation
    domain:specDomain lane — seat card indexed by label:pm:seat
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    and removed
    pm:queueReady for the PM dispatch loop
    on Oct 15, 2026
  3. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Evidence for triage, the same family · repo:cloud#2 · session session_01Cbdek8SKSHxddGqTPZXdqX · 2026-10-18T05:32Z · ⛔ Not a grade and no label change: a lane seat adds evidence

    A second stale [PLANNED — not yet rendered] marker, of the same kind as this card's RecordRelatedListProps.parentDataSource. It was found by the cloud#2986 dev (PR objectstack-ai/cloud#2993), and the seat re-read it in this act, on objectstack main fb6fb24e, packages/spec/src/ui/page.zod.ts:

    • :532 ElementApiDataSourceSchema's describe: "[PLANNED — not yet rendered] API binding of a page element … The console's generic stat, usage-bar and checklist blocks are the planned readers; until they ship, the binding parses and no block reads it."
    • :681 / :705 PageComponentSchema.visibleWhen: "It mounts NO data root here … data is declared only for an element whose dataSource is the PLANNED API binding … once that binding's renderer ships."

    The renderer has shipped. objectstack-ai/objectui#12197 landed as objectui main c4dd7078ed (landing record 6245107132):

    • SchemaRenderer.tsx:1144 useElementApiDataSource binds the selected value as data in the node's holes and its visibleWhen;
    • :2507 publishes it to the node's subtree through PredicateScopeProvider;
    • hero / stat / usage-bar / checklist / tile-grid read it.

    objectstack-ai/cloud#2993 composes the cloud home on exactly that binding.

    The repo's own pin test expects this edit. packages/spec/src/ui/expression-scope-data-root.pin.test.ts:26-31: the visibleWhen text is to be rewritten in the same change that drops the PLANNED marker. The subtree reading is not declared anywhere yet.

    Offered as one family edit with this card's location: drop the PLANNED markers whose readers shipped, and declare what the renderer binds.

  4. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Unblocked: the consumer channel is the .objectui-sha pin, which carries the renderer · pm:on-hold → pm:queue · domain:spec seat 2 · zhuangjianguo · session session_019oFY6Hi35J7atvgVFnmoaK · 2026-10-19T12:37Z

    ⛔ Not a claim.

    Provenance. The maintainer's words in this session's chat, on this card (2026-10-19T12:37Z), verbatim:

    • 「23585 不是早就有 next.5」
    • 「而且前端开发不是已经不依赖objectstack 发版本了吗」

    The seat re-measured, and the hold's Restart-when: named the wrong channel.

    Readings in this act:

    • npm view @object-ui/plugin-detail dist-tags gives { latest: '17.7.0' }, with no next tag. The same holds for @object-ui/core, and registry.npmjs.org returns the same. So the old probe could never fire. The 18.0.0-next.5 line is objectstack's own @objectstack/spec next tag.
    • This repository consumes objectui through the pin, not through npm. .objectui-sha on origin/main is 4016370af3c9c9dafec2bc5299afd8e8079701b8 (objectui main, 2026-10-19). git merge-base --is-ancestor d81e46043 4016370af3 exits 0. objectui d81e46043 is the record:related_list parentDataSource renderer (objectui PR feat(pm): H35 — flag a gate-label removal with no dual-carrier clear behind it #12407, 2026-10-15). So the console this repository builds and ships renders the key. The cross-repo rule for a pin-consuming repository says the same: a moved pin is installable.
    • Double check. The last transition comment is triage 6183331119 ("waits until objectui ships the renderer"). No newer merged PR is on this card.
    • The card's executable criterion is still unmet on main. packages/spec/src/ui/component.zod.ts:1743 (docblock) and :1747 (describe) still open [PLANNED — not yet rendered] on RecordRelatedListProps.parentDataSource; the body cited :1885 / :1889 before the file moved. packages/spec/liveness/page.json's _note still carries the PLANNED RECORD (#23134 …) sentence.
    • Serial. spec page.zod.ts: ElementApiDataSourceSchema still describes itself as "[PLANNED — not yet rendered]" and visibleWhen says no renderer reads the binding, but the console renders both (objectui#12197) #24300 (the ElementApiDataSourceSchema sibling named in 6246136754) is closed. No open PR touches component.zod.ts or liveness/page.json.

    Grade unchanged: p3, documentation, domain:spec. The body's first line, which held the npm probe, is replaced by the release pointer.


    Generated by Claude Code

  5. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    on Oct 19, 2026
  6. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-19T12:40Z · RecordRelatedListProps.parentDataSource drops its [PLANNED — not yet rendered] marker and the liveness note's PLANNED sentence is rewritten, now that the console pin carries objectui's renderer (d81e46043)
    Session: session_019oFY6Hi35J7atvgVFnmoaK (the seat; the dev is an os-dev subagent of this session)
    Account: zhuangjianguo (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-23585-parent-data-source-live
    Worktree: objectstack-issue-23585
    Domain: domain:spec
    Seat: domain:spec#2 (seat post #18549)
    File surface (paths on origin/main 5b14b7f3ad or later; stop on a breach and explain it in the report):

    • packages/spec/src/ui/component.zod.ts: RecordRelatedListProps.parentDataSource, its docblock (about :1743) and its describe (about :1747) only;
    • packages/spec/liveness/page.json: the _note's PLANNED RECORD (#23134 …) sentence, and the parentDataSource row's status, evidence and author warning, if the ledger keeps one;
    • generated artefacts by their own tools only (content/docs/references/ui/component.mdx and any shard the generator names); one .changeset/23585-*.md (patch on @objectstack/spec);
    • any pin that asserts the marker, re-trued to the shipped fact and never deleted.
    • ⛔ Not the other [PLANNED — not yet rendered] markers in component.zod.ts (:1170, :1175; they are their own cards). No accept-set change. Not content/docs/releases/.
      Container & model: S, mode:subagent, model: default tier for the draft (dispatch-gates --tier: no path-derived mandate). The review before the queue runs at CONTRACT_REVIEW_TIER (the schema face: packages/spec/src/ui/component.zod.ts). The seat runs at batch 1, serial (「当前任务处理完,后续改为串行。」): this is the one slot.
      Clause-②: no
      Responsibility: n/a — not a defect card (published describe text and a ledger note made false by objectui's landed renderer)
      Thread-read: 6267392833
      Serial constraints cleared:
    • The file lists of all open PRs were read in this act. None touches component.zod.ts, liveness/page.json, the ui generated shards or content/docs/references/ui/.
    • spec page.zod.ts: ElementApiDataSourceSchema still describes itself as "[PLANNED — not yet rendered]" and visibleWhen says no renderer reads the binding, but the console renders both (objectui#12197) #24300 (page.zod.ts, the sibling marker) is closed. No in-flight claim of this seat remains; the queue was otherwise empty.

    Generated by Claude Code

  7. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Oct 19, 2026
  8. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Dispatched · domain:spec seat 2 · session session_019oFY6Hi35J7atvgVFnmoaK · 2026-10-19T12:42Z · for claim 6267435237.

    mode:subagent: the dev is an os-dev subagent of this session, on branch claude/issue-23585-parent-data-source-live, at the default tier. Serial: it is the seat's one slot.

    The ruling is the card's executable criterion: the marker leaves parentDataSource, and the _note sentence is rewritten. Each describe clause that stays is read against the renderer at the .objectui-sha pin. If the pinned renderer does not do what a clause says, the dev writes only what is true and reports the difference.

    It reports here as an os-dev-report comment and opens a draft PR. The seat subscribes to that PR the moment it exists.


    Generated by Claude Code

  9. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 23585,
    "status": "done",
    "branch": "claude/issue-23585-parent-data-source-live",
    "pr": "#24578",
    "session": "session_019oFY6Hi35J7atvgVFnmoaK — os-dev subagent; the dispatching seat's (parent's) id",
    "premise_still_valid": true,
    "summary": "RecordRelatedListProps.parentDataSource's describe drops its [PLANNED — not yet rendered] marker and is otherwise byte-unchanged. Every clause holds at the console pin .objectui-sha 4016370 (objectui d81e460 is an ancestor of it and of objectui origin/main fe11eb1, both exit 0). The key's TSDoc now says RENDERED and names the read points with the objectui: realm mark. The liveness _note's PLANNED RECORD (#23134 …) sentence is a LIVE RECORD, and pin E is re-trued to assert there is no planned marker, with a DARK control. files_changed: packages/spec/src/ui/component.zod.ts (docblock + describe); packages/spec/liveness/page.json (_note sentence + regions-row read-point entry [10]); packages/spec/src/ui/component-record-related-list-parent-23134.test.ts (pin E re-trued, header line E); content/docs/references/ui/component.mdx (gen:docs, 1 line); .changeset/23585-related-list-parent-data-source-rendered.md (patch @objectstack/spec, Clause-②: no). deviations: (1) page.json regions-row entry [10] said 'parentDataSource (PLANNED)'. I edited it on the reading that it is the ledger's one parentDataSource evidence entry, under the claim's 'the parentDataSource row's status, evidence' item, since the ledger keeps no such row. Declared in the PR body. (2) In the same docblock, the clause 'that arm is still unrendered' about dataSource's api arm is false since objectui c4dd707. It is rewritten to name why the key takes the object binding only (isElementDataSourceConfig asks for an object). (3) Merge commit 53624a1 (origin/main 04669a4, objectql/service-automation only, pulled before opening the PR per AGENTS.md §10) carries git's default message and no Claude-Session trailer. (4) The harness attribution reminder asked for a model-named Co-Authored-By trailer and an emoji PR footer. I followed AGENTS.md instead: the model-free trailer pair, and the session-URL footer. (5) The worktree is removed (node_modules first; worktree list shows 0 entries for it).",
    "tests": "pnpm --filter @objectstack/spec test on 131a561 under os-verify-lock: VERDICT command-exit 0, 'Test Files 701 passed (701) / Tests 21312 passed | 1 todo'. pnpm --filter @objectstack/spec typecheck: VERDICT command-exit 0, 'check:test-typecheck: OK … 52 file(s) / 242 error(s) / 132 pinned signature(s) held'. Pin file alone (vitest run --maxWorkers=2 src/ui/component-record-related-list-parent-23134.test.ts): 18 passed. Reverse verification, one time, fix committed first. scripts/ablation-replace.mjs re-planted the marker in the describe ('anchor 1 -> 0, blob 2d039146d858 -> d8a66adf1db4'). The pin went red in the expected direction: 'Tests 1 failed | 17 passed (18)', the failing case being E 'no planned marker, so check-liveness reads no planned status off the describe'. The tool restored the file: 'blob == HEAD (2d039146d858) and git diff HEAD is empty'. The test imports ./component.zod from src, so no dist leg was owed. The spec suite was not re-run on the merge commit: the incoming commit touches packages/objectql and packages/services/service-automation only.",
    "gates": "Final head 53624a1. The derivation is node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, with no paths and the merge base 04669a4: 111 commands. Each ran with its exit code captured before any pipe: 111 of 111 exit 0. --ran: 'Run reconciliation — 111 derived, 111 run, 0 NOT-MEASURED, 0 UNRUN' / '✓ dispatch-gates --ran: 111 derived famil(ies) accounted for — 111 run, 0 NOT-MEASURED'. A first run on 131a561 had 6 PREREQUISITE NOT MET (exit 3): lint check:doc-formula-expressions, lint check:doc-security-posture, spec check:skill-examples, check:docs-transcript-drift, check:dual-build-cjs-loads, check:lean-entry-closure. After the @objectstack/lint... and @objectstack/objectql... turbo builds, all 6 exit 0 on the final head. Verdict lines on the final head: check:generated 'All 14 generated artifacts are up to date'; check:docs '227 generated files in sync'; check:liveness exit 0 ('1038 live · 1 experimental · 1 live-elsewhere · 112 dead · 23 planned = 1175 classified'); check:nul-bytes OK; check:authorable-surface exit 0. Local-only: pnpm check:dev-prereqs exit 0. The PM's lead file gates-23585.txt was derived from a stale tree (52ff308, it printed STALE TREE, 114 commits behind); the list above is the re-derivation. CI check-runs on 53624a1 at report time: 23 in_progress (Check Changeset, Lint · ESLint, Lint · PM dispatch-gates, Lint · repo & tooling gates, Lint · docs & code guards, Lint · CI, release & engine gates, Lint · scoped ×3, Type Check · workspace / source gates / consumer gates / debt ledger, Spec property liveness, Governed Surface Queue Guard, Check PR Size, Check Documentation Links, Flag docs affected by code changes, the three claim/closing guards, the single-writer-path guard, filter) and 1 completed/skipped (Packed-tarball smoke (opt-in)). No conclusion yet; this is honest in_progress.",
    "mcp_calls": "0 — no MCP tool used",
    "api_writes": "2 relay strokes as objectstack-fleet[bot]. Each is one repository_dispatch (POST /repos/objectstack-ai/objectstack/dispatches). (1) pr_create: POST /repos/objectstack-ai/objectstack/pulls (draft) + POST /repos//issues/24578/assignees [zhuangjianguo]. Run 39265633213 succeeded; read-back '11080 byte(s) sent, 11080 stored — identical'. (2) this os-dev-report comment: POST /repos//issues/23585/comments. git push is not a REST write. No labels were written.",
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: objectstack-ai/objectui#12932 · noted, not filed — the two emptyState [PLANNED — not yet rendered] markers (component.zod.ts :1170/:1175) are still true. At the pin 4016370 and at objectui main fe11eb1, git grep emptyState over packages/plugin-detail/src (tests excluded) answers nothing (G4).",
    "carrier: 承接者:无 · noted, not filed — .changeset/pre/23134-related-list-parent-data-source.md:13 and packages/spec/CHANGELOG.md:2200 (released 4cc3ff9 entry) say 'Planned, not yet rendered'. They were true when released and are release-owned, so they are not edited."
    ]
    }


    Generated by Claude Code

  10. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · PR #24578 → ffba02ed64 · domain:spec seat 2 · zhuangjianguo · session session_019oFY6Hi35J7atvgVFnmoaK · 2026-10-19T15:17Z

    probe reading
    PR object The seat landed it after contract review PASS 6269492683, adopted in 6269903196 (ready and auto-merge). It was added to the merge queue at 2026-10-19T14:44Z and merged out of it at 2026-10-19T15:15Z, as merge commit ffba02ed64eb69f611e0e49ace242c0613c945d7 on parent 2667e2402c.
    origin/main git merge-base --is-ancestor ffba02ed64 origin/main → exit 0
    merged vs reviewed head git diff 2667e2402c ffba02ed64 and the reviewed head 53624a10cf, measured against its merge base 04669a467e, share git patch-id --stable f167240a. 5 files, +49 / −17.
    queue branch no gh-readonly-queue/main/pr-24578-* ref remains
    mis-close scan The body's only closing keyword is Fixes #23585. No other issue closed in the merge window.

    What now holds on main:

    • RecordRelatedListProps.parentDataSource's describe no longer opens with [PLANNED — not yet rendered]. Every clause is read at the console's .objectui-sha pin 4016370af3, which carries objectui d81e46043.
    • The key's TSDoc names the console's read points with the objectui: realm mark.
    • liveness/page.json's _note carries a LIVE RECORD in place of the PLANNED one.
    • The pin (case E) asserts there is no planned marker.
    • The two emptyState markers in the same file stay, still true at the pin. Their carrier is objectui#12932.

    State: the merge closed this card completed. pm:dispatched is removed in this act. Claim 6267435237 ends here. The hold this card sat in was released on the maintainer's correction (6267392833): this repository consumes objectui through the pin, never npm.


    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

Labels

documentationImprovements or additions to documentationdomain:specDomain lane — seat card indexed by label:pm:seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions