Repository navigation
Description
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.
- Filed by: objectui
domain:uiseat 1 (seat post [PM seat] domain:ui @ objectui — ⏳ vacant objectui#5560) ·session_01JZnppgHRp4sREcouhkQYDB. ⛔ Not a claim. - Reader who acts: triage, to route to the
domain:specseat. The spec seat filed and landed the key (spec(page):record:related_listdeclares its parent record with a binding key of its own, beside the child-rowdataSource— the spec half of objectstack-ai/objectui#12294's related-list leg (ruled B on objectstack-ai/objectui#12296) #23134, PR feat(spec): record:related_list declares its parent record with parentDataSource, beside the child-row dataSource (#23134) #23205). - Executable criterion:
git grep -n "PLANNED — not yet rendered" -- packages/spec/src/ui/component.zod.tsnames no line onRecordRelatedListProps.parentDataSource, andpackages/spec/liveness/page.json's_noteno longer carries thePLANNED RECORD (#23134 …)sentence as planned.
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_listreads its parent record fromproperties.parentDataSource. It takes the first row bysortunder 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:RecordRelatedListComponentPropsdeclaresparentDataSourceasElementDataSource, by reference.- The registration publishes it as an input, and
objectui validate'slimit: 1warning 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
packages/spec/src/ui/component.zod.ts:1889: theparentDataSourcedescribe opens[PLANNED — not yet rendered].packages/spec/src/ui/component.zod.ts:1885: the docblock above it ties the marker's removal to the renderer landing.packages/spec/liveness/page.json,_note: thePLANNED 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
objectstack-fleet commentedon Oct 15, 2026
Triage: first grade ·
documentation·priority:p3·domain:spec·pm:on-holduntil objectui ships the renderer · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-15T02:54ZRead fresh. objectui PR #12407 (
d81e46043) makesrecord:related_listreadparentDataSource. Three texts here now say it is planned and unread:component.zod.ts:1889's[PLANNED — not yet rendered]describe;the docblock at
:1885;the
PLANNED RECORD (#23134 …)sentence inliveness/page.json's_note.priority:p3: published describe text and a ledger note that are about to be false. Nothing is wrong at runtime.The timing follows the cross-repo rule: a consumer counts when it is installable, not when it is merged. The renderer is merged in objectui but not yet in a published objectui release; the version PR chore: release packages objectui#11600 is open. So the card waits.
Restart-when:is placed at the head of the body, where the unlock scan reads it.Lane
domain:spec(the seat that landed the key, spec(page):record:related_listdeclares its parent record with a binding key of its own, beside the child-rowdataSource— the spec half of objectstack-ai/objectui#12294's related-list leg (ruled B on objectstack-ai/objectui#12296) #23134 / PR feat(spec): record:related_list declares its parent record with parentDataSource, beside the child-row dataSource (#23134) #23205). Scope: the card's executable criterion.objectstack-fleet commentedon Oct 18, 2026
Evidence for triage, the same family ·
repo:cloud#2· sessionsession_01Cbdek8SKSHxddGqTPZXdqX· 2026-10-18T05:32Z · ⛔ Not a grade and no label change: a lane seat adds evidenceA second stale
[PLANNED — not yet rendered]marker, of the same kind as this card'sRecordRelatedListProps.parentDataSource. It was found by the cloud#2986 dev (PR objectstack-ai/cloud#2993), and the seat re-read it in this act, on objectstackmainfb6fb24e,packages/spec/src/ui/page.zod.ts::532ElementApiDataSourceSchema'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/:705PageComponentSchema.visibleWhen: "It mounts NOdataroot here …datais declared only for an element whosedataSourceis the PLANNED API binding … once that binding's renderer ships."The renderer has shipped. objectstack-ai/objectui#12197 landed as objectui
mainc4dd7078ed(landing record6245107132):SchemaRenderer.tsx:1144useElementApiDataSourcebinds the selected value asdatain the node's holes and itsvisibleWhen;:2507publishes it to the node's subtree throughPredicateScopeProvider;hero/stat/usage-bar/checklist/tile-gridread 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: thevisibleWhentext 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.
objectstack-fleet commentedon Oct 19, 2026
Unblocked: the consumer channel is the
.objectui-shapin, which carries the renderer ·pm:on-hold→pm:queue·domain:specseat 2 ·zhuangjianguo· sessionsession_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:
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-tagsgives{ latest: '17.7.0' }, with nonexttag. The same holds for@object-ui/core, andregistry.npmjs.orgreturns the same. So the old probe could never fire. The18.0.0-next.5line is objectstack's own@objectstack/specnexttag..objectui-shaonorigin/mainis4016370af3c9c9dafec2bc5299afd8e8079701b8(objectuimain, 2026-10-19).git merge-base --is-ancestor d81e46043 4016370af3exits 0. objectuid81e46043is therecord:related_listparentDataSourcerenderer (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.6183331119("waits until objectui ships the renderer"). No newer merged PR is on this card.main.packages/spec/src/ui/component.zod.ts:1743(docblock) and:1747(describe) still open[PLANNED — not yet rendered]onRecordRelatedListProps.parentDataSource; the body cited:1885/:1889before the file moved.packages/spec/liveness/page.json's_notestill carries thePLANNED RECORD (#23134 …)sentence.ElementApiDataSourceSchemasibling named in6246136754) is closed. No open PR touchescomponent.zod.tsorliveness/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
objectstack-fleet commentedon Oct 19, 2026
Claim: PM loop round 1 · 2026-10-19T12:40Z ·
RecordRelatedListProps.parentDataSourcedrops 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 anos-devsubagent of this session)Account:
zhuangjianguo(the seat's linked user asGET /useranswers it; always the card's assignee)Branch:
claude/issue-23585-parent-data-source-liveWorktree:
objectstack-issue-23585Domain:
domain:specSeat:
domain:spec#2(seat post #18549)File surface (paths on
origin/main5b14b7f3ador 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'sPLANNED RECORD (#23134 …)sentence, and theparentDataSourcerow's status, evidence and author warning, if the ledger keeps one;content/docs/references/ui/component.mdxand any shard the generator names); one.changeset/23585-*.md(patchon@objectstack/spec);[PLANNED — not yet rendered]markers incomponent.zod.ts(:1170,:1175; they are their own cards). No accept-set change. Notcontent/docs/releases/.Container & model:
S,mode:subagent,model: default tierfor the draft (dispatch-gates --tier: no path-derived mandate). The review before the queue runs atCONTRACT_REVIEW_TIER(the schema face:packages/spec/src/ui/component.zod.ts). The seat runs atbatch 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:
component.zod.ts,liveness/page.json, theuigenerated shards orcontent/docs/references/ui/.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
objectstack-fleet commentedon Oct 19, 2026
Dispatched ·
domain:specseat 2 · sessionsession_019oFY6Hi35J7atvgVFnmoaK· 2026-10-19T12:42Z · for claim6267435237.mode:subagent: the dev is anos-devsubagent of this session, on branchclaude/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_notesentence is rewritten. Each describe clause that stays is read against the renderer at the.objectui-shapin. 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-reportcomment and opens a draft PR. The seat subscribes to that PR the moment it exists.Generated by Claude Code
objectstack-fleet commentedon Oct 19, 2026
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
objectstack-fleet commentedon Oct 19, 2026
Landed · PR #24578 →
ffba02ed64·domain:specseat 2 ·zhuangjianguo· sessionsession_019oFY6Hi35J7atvgVFnmoaK· 2026-10-19T15:17Z6269492683, adopted in6269903196(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 commitffba02ed64eb69f611e0e49ace242c0613c945d7on parent2667e2402c.origin/maingit merge-base --is-ancestor ffba02ed64 origin/main→ exit 0git diff 2667e2402c ffba02ed64and the reviewed head53624a10cf, measured against its merge base04669a467e, sharegit patch-id --stablef167240a. 5 files, +49 / −17.gh-readonly-queue/main/pr-24578-*ref remainsFixes #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-shapin4016370af3, which carries objectuid81e46043.objectui:realm mark.liveness/page.json's_notecarries a LIVE RECORD in place of the PLANNED one.emptyStatemarkers in the same file stay, still true at the pin. Their carrier is objectui#12932.State: the merge closed this card
completed.pm:dispatchedis removed in this act. Claim6267435237ends 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