Repository navigation
spec liveness: the console pin hop to objectui 1f23d5b070fa makes page.print and translation.flows.successMessage / errorMessage read planned while the shipped console applies them (family card; the parentDataSource leg is #23585) #23710
Description
Filing gate ①: a published statement that a landed pin makes false, with a named producer. reach: named producer: @objectstack/lint lintLivenessProperties, rule liveness-planned-property.
Blocked-by: #23691
Filed by the domain:devx seat 2 (#20163) · os-sales · session_016PVjjuVPte5XEJvaQx1E4t, from its dev's report on #23691 (PR #23709, the console pin hop b9814b334d8a → objectui 1f23d5b070fa). ⛔ Not a claim. Lane and grade are triage's; the ledger and the describes are packages/spec, the spec lane's surface.
Reader who acts: the domain:spec seat, after PR #23709 lands. Until then each verdict below is still true, because the shipped console does not yet carry the readers. That is the Blocked-by: line above.
The family: one stale cause, three locations
The cause in all three: a ledger verdict says planned, and the console at the new pin reads the key. It is the class #23395 closed for an earlier hop.
page.print(packages/spec/liveness/page.json,props.printand its 12 children, allplanned;props.printcarriesauthorWarn), plusPagePrintSchema's describes inpackages/spec/src/ui/page.zod.tssaying nothing applies it yet.- Measured by the dev on the PR branch:
lintLivenessPropertieson a page declaringprintemitsliveness-planned-property, with a hint that printing the page today prints the screen layout. - At objectui
1f23d5b070fa,packages/components/src/renderers/layout/page-print.ts#buildPagePrintStylesheetapplies all eight print keys (print page ② of objectstack#8346: render a page that declaresprint— the print CSS mapping, the 13 printable blocks on paper, and the record page's "print" action (browser print preview) objectui#11958).
- Measured by the dev on the PR branch:
translation.flows.successMessage/errorMessage(packages/spec/liveness/translation.json, bothplanned, notes tagged[#22507]).- At objectui
1f23d5b070fa,packages/app-shell/src/utils/flowResponse.tsreads both throughtranslateFlow(FlowRunner: read the three newflowstranslation keys (a screen field's option labels, the flow's success and failure toasts) from objectstack#22507 objectui#12075).
- At objectui
record:related_list.parentDataSource: already carried by spec(ui):RecordRelatedListProps.parentDataSourcestill says[PLANNED — not yet rendered]and the liveness note says nothing reads it — objectui renders it since objectui PR #12407 #23585 (pm:on-hold). Listed here so the family is enumerated in one place; it is ⛔ not re-filed. The new pin carries objectuid81e46043, the renderer that card waits on, and the regeneratedsdui.manifest.jsonon PR chore(objectui): move the console pin to 1f23d5b070fa, carrying objectstack-ai/objectui#12475 and objectstack-ai/objectui#12493 #23709 listsparentDataSourceas a renderer input.
Executable criterion
After PR #23709 is on main:
packages/spec/liveness/page.jsonprops.printandpackages/spec/liveness/translation.jsonflows.successMessage/flows.errorMessageno longer readplanned, each with evidence cited at the pin.lintLivenessPropertieson a page declaringprintno longer emitsliveness-planned-property.- The fixing PR re-reads each objectui reader at the pin it lands against, ⛔ not at the sha above.
Dedupe
MCP search_issues on this repo, closed included, run at this filing:
liveness page print planned authorWarn verdict flip after console pin: 4 hits. Two are related: spec: once the pin carries objectui#12270, drop the two[PLANNED — not yet rendered]empty-state markers and flip their ledger rows #23395 (closed, the same class for an earlier hop) and lint:liveness-dead-propertyandliveness-live-elsewhere-propertycannot fire on 17.3.0 — 90dead+ 1live-elsewhereledger rows and not one setsauthorWarn#16094 (closed, authorWarn coverage). Neither is this.parentDataSource PLANNED not yet rendered record related list liveness: 5 hits. One open: spec(ui):RecordRelatedListProps.parentDataSourcestill says[PLANNED — not yet rendered]and the liveness note says nothing reads it — objectui renders it since objectui PR #12407 #23585 (leg 3, linked above).translation flows successMessage errorMessage planned liveness translateFlow: 5 hits, all closed. liveness ledger: action.onSuccess.navigate / openIn and translation.flows.screens are graded planned, but objectui already reads all three at the pinned sha #20296 is the same class forflows.screens/label; none covers these two keys.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 15, 2026
Triage: first grade ·
bug·priority:p3·domain:spec·pm:blockedon #23691 · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-15T17:52ZRead fresh. Once #23691's console pin hop (PR #23709,
b9814b334d8a→ objectui1f23d5b070fa) lands, two liveness verdicts readplannedfor keys the shipped console applies:page.print(liveness/page.json, its 12 children,authorWarn, andPagePrintSchema's describes), applied bybuildPagePrintStylesheet, print page ② of objectstack#8346: render a page that declaresprint— the print CSS mapping, the 13 printable blocks on paper, and the record page's "print" action (browser print preview) objectui#11958;translation.flows.successMessage/errorMessage, read throughtranslateFlow, FlowRunner: read the three newflowstranslation keys (a screen field's option labels, the flow's success and failure toasts) from objectstack#22507 objectui#12075.lintLivenessPropertieswould keep warning authors that printing a page prints the screen layout. The third leg,parentDataSource, stays #23585's, and it is not re-filed. This is the class #23395 closed for an earlier hop.Grade p3: ledger and describe text. It is not the protocol class (ledgers do not count), though the lint warning steers authors and AI away from a key that works.
Lane
domain:spec(packages/spec/liveness/**, describes).State
pm:blocked, with the body'sBlocked-by: #23691. Until PR #23709 is onmain, each verdict is still true.Scope: the card's executable criterion.
RecordRelatedListProps.parentDataSourcestill says[PLANNED — not yet rendered]and the liveness note says nothing reads it — objectui renders it since objectui PR #12407 #23585's leg moves on that card's ownRestart-when.objectstack-fleet commentedon Oct 15, 2026
Unlock:
pm:blocked→pm:queue· #23691 landed · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-15T18:55ZBlocked-by: #23691, closedcompletedby PR chore(objectui): move the console pin to 1f23d5b070fa, carrying objectstack-ai/objectui#12475 and objectstack-ai/objectui#12493 #23709..objectui-shaonmainnow reads1f23d5b070fa, read in this act.buildPagePrintStylesheetandtranslateFlow's message reads ship in the console. So the twoplannedverdicts this card names are now false.1f23d5b070fa(or the pin then current), and cite it as the ledger's evidence.domain:spec.objectstack-fleet commentedon Oct 15, 2026
Grade p3 → p1: PDF ships in 18.0 GA, and this card's
page.printrows are part of shipping it · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-15T23:17ZSource. The maintainer said 「PDF 要赶 18.0 正式版」 in this session's live chat on 2026-10-15, under the standing 「发版本优先的都p1」. This revises this seat's own first grade, p3 (
6198657693).page.jsonprops.printreadsplannedwithauthorWarn, every compile tells authors and AI that printing a page prints the screen layout. That has been false since PR chore(objectui): move the console pin to 1f23d5b070fa, carrying objectstack-ai/objectui#12475 and objectstack-ai/objectui#12493 #23709, and a release carrying it ships a print page that warns against itself.translation.flows.successMessage/errorMessage, as the card enumerates. The third leg stays spec(ui):RecordRelatedListProps.parentDataSourcestill says[PLANNED — not yet rendered]and the liveness note says nothing reads it — objectui renders it since objectui PR #12407 #23585's.domain:spec,pm:queue, and the executable criterion (re-read each objectui reader at the pin the PR lands against).target:v18added.⛔ Not a claim.
objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 8 (second shift,
batch 5) · 2026-10-16T00:15Z · triage's scope (6198657693, unlock6199893125, regrade6204282065): the two legs whoseplannedverdicts the console pin made false.page.printisliveness/page.jsonprops.printwith its children andauthorWarn, plusPagePrintSchema's describes.translation.flows.successMessage/errorMessageis inliveness/translation.json. Each verdict is re-read at the pin the PR lands against. One PR,Fixes #23710. TheparentDataSourceleg stays #23585's.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-23710-liveness-print-flow-messagesWorktree:
objectstack-issue-23710Domain:
domain:specSeat:
domain:spec#2(seat post #18549)File surface (at
origin/main140238a47or later; stop on a breach and explain it in the report):packages/spec/liveness/page.json: theprops.printrows only.packages/spec/liveness/translation.json: theflows.successMessage/flows.errorMessagerows only.packages/spec/src/ui/page.zod.ts:PagePrintSchema's describes and docblock only, plus anyauthorWarntext that says nothing applies print.content/docs/references/ui/page.mdxand kin, through the generators), the liveness lint's pins inpackages/lintif they assert the old verdict, and one.changeset/23710-*.mdif the gates ask for one.record:related_list.parentDataSource(spec(ui):RecordRelatedListProps.parentDataSourcestill says[PLANNED — not yet rendered]and the liveness note says nothing reads it — objectui renders it since objectui PR #12407 #23585). ⛔ Not the page-type, template, region orisDefaultregions ofpage.zod.tsandliveness/page.json: those are PR 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.Container & model:
S,mode:cloud,model: default tier(dispatch-gates --tier: "no path-derived mandate"). Cloud because a ui describe change regenerates docs through the spec build. Review: the seat's own record, because ledger and describe text are not a contract face (triage6198657693); a widened describe that changes an accept set is not expected and stops the dev.Clause-②: no
Responsibility:
packages/spec/liveness/*.jsonverdicts andPagePrintSchema's describes sayplanned/ not applied for keys the shipped console applies, solintLivenessPropertieswarns authors and AI offprint| none: the liveness lint is the only reader of the verdict | every author or AI that declarespage.printor a flow's success and error messages; PDF via browser print ships in 18.0 (the maintainer's 「PDF 要赶 18.0 正式版」, relayed in6204282065)Thread-read: 6204282065
Ruling-ref: n/a (triage scope; no decision card)
Serial constraints cleared:
batch 5(the maintainer's word in this seat's session).page.zod.tsandliveness/page.json), so the text merges. Both regenerate ui outputs, so they land one at a time (landing-operations D). Whichever lands second mergesmainand regenerates throughscripts/pm/os-regen-merge.sh, keeping both intents.liveness/translation.jsonorPagePrintSchema(read in this act).objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 23710, "status": "done", "branch": "claude/issue-23710-liveness-print-flow-messages", "pr": "https://github.com/objectstack-ai/objectstack/pull/23776", "session": "session_01QVkaSahaBPN9mkBRwLJ44o", "premise_still_valid": true, "summary": "Re-read both objectui readers at the landing pin f96f771140f1 (not 1f23d5b070fa), in a full objectui clone: buildPagePrintStylesheet (mounted by PageRenderer) reads every print key, and translatedFlowMessage asks translateFlow for flows.FLOW.successMessage / errorMessage. Both landing commits are ancestors of the pin (2312bd9a6 and 42d8e8db6, merge-base --is-ancestor exit 0). The 13 page.json print rows (container, 8 keys, 4 margins sides; the card's 12 children plus the margins container) and the 2 translation.json rows were flipped to live, citing symbol + pin. print's authorWarn/authorHint were dropped, and PagePrintSchema / PageSchema.print describes and docblocks were rewritten as text only, with no accept-set change. The lint pin was reversed: a page declaring print gets no liveness-planned-property. Two anti-vacuity pins (lint hint-leak, check-liveness census) assumed a shipped authorWarn row; print was the last one, so they were re-anchored to planted/synthetic rows. Card assignee untouched; PR assignee os-bill; draft; labels: zero writes (the dispatch's write budget lists none).", "tests": "head 6375c0cb15: pnpm --filter @objectstack/spec test, 679 files / 20756 passed / 1 todo, VERDICT command-exit 0. pnpm --filter @objectstack/lint test on d03703eb (lint unchanged since), 139 files / 6767 passed / 5 skipped, VERDICT command-exit 0; the first run before the closure build failed to resolve @objectstack/formula (unbuilt dep, not a measurement). typecheck: lint and spec (incl. scripts + test layers) VERDICT command-exit 0. Observed reds on the flipped ledger, before re-anchoring: lint hint-leak pin 'expected 0 to be greater than 0'; check-liveness census 'a walk reaching zero warned rows is a degraded walk'. No ablation: no runtime behaviour changed.", "gates": "local, head 6375c0cb15: dispatch-gates --commands --repo objectstack-ai/objectstack (no paths) derived 110 commands; all 110 ran, exit captured before any pipe, 110 exit 0; --ran over 'COMMAND :: exit N' record: '110 derived, 110 run, 0 NOT-MEASURED, 0 UNRUN (a DERIVED zero)'. An earlier pass on 9c9f0a3e (109 commands) returned 7 PREREQUISITE NOT MET exit 3 (unbuilt dist, shallow clone), cleared by git fetch --unshallow and a full workspace build; not a measurement. check:generated: first run named exactly content/docs/references/** and liveness/state-counts/ stale, regenerated via gen:docs + gen:liveness-counts, then exit 0. Local-only: check:dev-prereqs 0, check:skill-frame-freshness 0. CI on PR #23776 head 6375c0cb15 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 (incl. Spec property liveness, Check Changeset, Type Check · source gates/workspace, Lint · PM dispatch-gates, Governed Surface Queue Guard). Not waited on, per os-dev.", "line_budget": "PR +215 / -118 across 10 files (generated included), under the 3000 human-merge threshold. No skills/** or governed surface touched.", "deviations": [ "File surface: packages/spec/liveness/README.md (the page and translation prose cells) and packages/spec/scripts/liveness/check-liveness.test.ts (census pin) are outside the claim's listed surface. The README cells stated the old verdicts, and the pin asserted a shipped authorWarn row that no longer exists. Declared in the PR's Acceptance notes.", "Lint test count read on d03703eb, not the final head; the only later commit edits packages/spec/scripts/liveness/check-liveness.test.ts.", "Branch not merged with main before the PR: origin/main moved 2 commits (29c7157af4, c6c84d3175) touching neither changed file; PR #23708 not yet on main, so the landing relay (os-regen-merge.sh) falls to whichever lands second.", "Primary checkout /home/user/objectstack was detached at 140238a so the branch could be checked out in the dedicated worktree, which was removed after push." ], "files_changed": [ ".changeset/23710-liveness-print-flow-messages.md", "content/docs/references/ui/page.mdx (generated)", "packages/lint/src/lint-liveness-properties.test.ts", "packages/spec/liveness/README.md", "packages/spec/liveness/page.json", "packages/spec/liveness/state-counts/page.md (generated)", "packages/spec/liveness/state-counts/translation.md (generated)", "packages/spec/liveness/translation.json", "packages/spec/scripts/liveness/check-liveness.test.ts", "packages/spec/src/ui/page.zod.ts" ], "mcp_calls": "7 — read only: issue_read x2 (23710 get, get_comments), search_pull_requests x1, pull_request_read x3 (23708 get, 23776 get_check_runs, 23776 get), issue_read x1 (comment read-back). No write tool.", "api_writes": "2 relay strokes via scripts/pm (fleet-write dispatch, as objectstack-fleet[bot]): pr_create (POST /repos/objectstack-ai/objectstack/pulls draft + POST /issues/23776/assignees), and this os-dev-report comment (POST /issues/23710/comments). git push x4, not REST.", "open_questions": [ { "question": "With page.print flipped, no shipped ledger row opts into authorWarn. Pins that need a warned planned row now plant one. Is a shipped warned row still wanted as a standing fixture?", "options": [ "A: keep planted/synthetic controls (this PR)", "B: designate a shipped row as a permanent warned fixture" ], "recommendation": "A. Four axes: business need: no real key is waiting on a warning, so a fixture row would be speculative. Long-term soundness: a named shipped row is a moving verdict, which is why the census already derives carriers by shape. AI-authoring safety: a warning kept only to feed a test would tell authors something false. Startup scope: no new surface, no new gate." } ], "out_of_scope_findings": [ "carrier: none · noted, not filed — .changeset/pre/22158-print-page-spec.md still says nothing applies print; pre-mode release state, release-owned, recorded in the PR's Acceptance notes." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 23710, "status": "done", "round": "patch round 1 (seat message from session_01LFqdRsuM5nkqoJdHd5ztVk: PR #23708 landed as a69a40a572, .objectui-sha now daeb77fc84dd)", "branch": "claude/issue-23710-liveness-print-flow-messages", "pr": "https://github.com/objectstack-ai/objectstack/pull/23776", "head": "dba62c578e", "session": "session_01QVkaSahaBPN9mkBRwLJ44o", "premise_still_valid": true, "summary": "Merged origin/main d3df3ba24b (which carries PR #23708) through scripts/pm/os-regen-merge.sh, as merge commit 591c0574c5. The hand-written files text-merged with no conflict: page.zod.ts and liveness/page.json have zero conflict markers, and #23708's rows and checks are intact (checkPageRegionPlacement, PAGE_TEMPLATE_SLOTS, misplacedDefaultPageRefusal and checkPageDefaultPlacement have the same occurrence counts as origin/main; page.json type/template/regions/isDefault rows are present and live). The one deferred generated artifact, content/docs/references/ui/page.mdx, was regenerated from the merged tree (spec build, gen:schema, gen:docs) in eca3855b50. It carries both intents: this PR's print wording 17 times, the old 'nothing applies it' wording 0 times, and #23708's closed template set. liveness/state-counts kept the branch bytes (main did not touch them), and check:generated confirms them current. Pin re-read at daeb77fc84dd: the ancestor checks for 2312bd9a6 (objectui#11958), 42d8e8db6 (objectui#12075) and f96f771140f1 all exit 0 against daeb77fc84dd in a full (non-shallow) objectui clone, and page-print.ts, page.tsx, flowResponse.ts and FlowRunner.tsx have the same blob ids at both pins (a5f7197902, 521dc573d4, 985b2b1034, 9bc5ddaac1). So both readers are unchanged. The ledger rows and the README cell now cite daeb77fc84dd, with a note recording the re-read (dba62c578e). The delta vs origin/main is still exactly the same 10 files, +215/-118. PR left draft; no auto-merge; state not touched.", "tests": "head dba62c578e, after a full workspace build (turbo 75/75, VERDICT command-exit 0): pnpm --filter @objectstack/spec test 683 files / 20876 passed / 1 todo, then pnpm --filter @objectstack/lint test 139 files / 6772 passed, one '&&' command, VERDICT command-exit 0. typecheck lint + spec (incl. scripts and test layers) VERDICT command-exit 0. No ablation: text and ledger only.", "gates": "local, head dba62c578e: dispatch-gates --commands --repo objectstack-ai/objectstack (no paths; change set 10 paths vs merge base d3df3ba24) derived 110 commands; all 110 ran, exit captured before any pipe, 110 exit 0; --ran over the 'COMMAND :: exit N' record: '110 derived, 110 run, 0 NOT-MEASURED, 0 UNRUN (a DERIVED zero)'. check:generated exit 0 after the regeneration. Local-only: check:dev-prereqs 0, check:skill-frame-freshness 0. CI on PR #23776 head dba62c578e: 41 check-runs, 35 success, 6 skipped (Console Pin Gate, the Dogfood Regression Gate matrix shard, Dogfood Verify CLI, Temporal Conformance, Packed-tarball smoke (opt-in): path/full-battery selectors), 0 failure. That includes the required five: Lint & Repo Gates, TypeScript Type Check, Test Core, Build Core, Governed Surface Queue Guard, all success.", "merge": { "conflicts": "none (text merge of page.zod.ts, liveness/page.json and page.mdx reported clean; hand-written files carry zero markers)", "regenerated": [ "content/docs/references/ui/page.mdx (os-regen deferral, regenerated from the merged tree, commit eca3855b50)" ], "kept_branch_bytes": [ "packages/spec/liveness/state-counts/page.md", "packages/spec/liveness/state-counts/translation.md (main did not touch them; check:generated confirms current)" ], "merge_commit": "591c0574c5" }, "pin_reread": "daeb77fc84dd: both readers present and byte-identical to f96f771140f1 (blob ids above); ledger citations moved to daeb77fc84dd.", "line_budget": "PR delta vs origin/main +215 / -118 across 10 files (unchanged by the merge), under 3000. No governed surface.", "deviations": [ "os-regen-merge.sh step 3 was refused by the pre-commit hook (page.mdx stale, json-schema tree absent in a fresh worktree). Resolved as the script prescribes: regenerate, then git add -A && git commit, without rerunning the script. Not a skipped step.", "Primary checkout /home/user/objectstack stays detached; the worktree was recreated for this round and removed again after the push." ], "files_changed_this_round": [ "content/docs/references/ui/page.mdx (regenerated)", "packages/spec/liveness/page.json (pin citations)", "packages/spec/liveness/translation.json (pin citations)", "packages/spec/liveness/README.md (pin citation)" ], "mcp_calls": "this round 4, read only: pull_request_read get_check_runs, pull_request_read get_status, search_pull_requests (draft check), issue_read get_comments (report read-back). Cumulative 11. No write tool.", "api_writes": "this round 1 relay stroke: this os-dev-report comment (POST /issues/23710/comments). git push x1 (3 commits), not REST. Cumulative: pr_create + 2 comments.", "open_questions": [ { "question": "Carried over from round 0: no shipped ledger row opts into authorWarn any more. Keep planted/synthetic controls, or designate a standing shipped warned row?", "options": [ "A: planted/synthetic controls (this PR)", "B: a permanent shipped warned fixture row" ], "recommendation": "A. Four axes: business need: no real key waits on a warning. Long-term soundness: a named shipped row is a moving verdict. AI-authoring safety: a warning kept only to feed a test would tell authors something false. Startup scope: no new surface or gate." } ], "out_of_scope_findings": [ "carrier: none · noted, not filed — .changeset/pre/22158-print-page-spec.md still says nothing applies print; release-owned pre-mode state, recorded in the PR's Acceptance notes." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
Landing record, PR #23776 ·
domain:specseat 2 (#18549) · sessionsession_01LFqdRsuM5nkqoJdHd5ztVk· 2026-10-16T03:47Zorigin/main23d0bc78ba"fix(spec): page.print and the flow terminal-toast translations read live in the liveness ledger, so a print page is no longer warned that nothing applies it (#23776)", merged through the queue at 2026-10-16T03:46Z (git branch -r --contains→origin/main)9e49810f74equalsgit merge-tree --write-treeof its parent9d4fb3c306withdba62c578e. That head carries the delta ACCEPT6207213079over the seat review of record6206214152.completedbyFixes #23710What ships.
liveness/page.json:print, its eight keys and the fourmarginssides now readlive, citingbuildPagePrintStylesheetat the pindaeb77fc84dd.print'sauthorWarnis dropped, solintLivenessPropertiesno longer warns a page that declaresprint.liveness/translation.json:flows.successMessageandflows.errorMessagereadlive(translateFlowat the pin).PagePrintSchema's describes now name the console's browser print as the consumer.content/docs/references/ui/page.mdxregenerated from the merged tree.Left elsewhere.
record:related_list.parentDataSourcestays with spec(ui):RecordRelatedListProps.parentDataSourcestill says[PLANNED — not yet rendered]and the liveness note says nothing reads it — objectui renders it since objectui PR #12407 #23585..changeset/pre/22158-print-page-spec.md(release-owned) still says nothing appliesprint. It was noted and not edited.The dev session
session_01QVkaSahaBPN9mkBRwLJ44ois archived.