Skip to content

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

Closed

Description

@objectstack-fleet

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.

  1. page.print (packages/spec/liveness/page.json, props.print and its 12 children, all planned; props.print carries authorWarn), plus PagePrintSchema's describes in packages/spec/src/ui/page.zod.ts saying nothing applies it yet.
  2. translation.flows.successMessage / errorMessage (packages/spec/liveness/translation.json, both planned, notes tagged [#22507]).
  3. record:related_list.parentDataSource: already carried by 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 (pm:on-hold). Listed here so the family is enumerated in one place; it is ⛔ not re-filed. The new pin carries objectui d81e46043, the renderer that card waits on, and the regenerated sdui.manifest.json on PR chore(objectui): move the console pin to 1f23d5b070fa, carrying objectstack-ai/objectui#12475 and objectstack-ai/objectui#12493 #23709 lists parentDataSource as a renderer input.

Executable criterion

After PR #23709 is on main:

  • packages/spec/liveness/page.json props.print and packages/spec/liveness/translation.json flows.successMessage / flows.errorMessage no longer read planned, each with evidence cited at the pin.
  • lintLivenessProperties on a page declaring print no longer emits liveness-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:


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade · bug · priority:p3 · domain:spec · pm:blocked on #23691 · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-15T17:52Z

    Read fresh. Once #23691's console pin hop (PR #23709, b9814b334d8a → objectui 1f23d5b070fa) lands, two liveness verdicts read planned for keys the shipped console applies:

    lintLivenessProperties would 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's Blocked-by: #23691. Until PR #23709 is on main, each verdict is still true.

    Scope: the card's executable criterion.

  2. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Unlock: pm:blocked → pm:queue · #23691 landed · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-15T18:55Z

  3. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Grade p3 → p1: PDF ships in 18.0 GA, and this card's page.print rows are part of shipping it · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-15T23:17Z

    Source. 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).

    ⛔ Not a claim.

  4. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 8 (second shift, batch 5) · 2026-10-16T00:15Z · triage's scope (6198657693, unlock 6199893125, regrade 6204282065): the two legs whose planned verdicts the console pin made false. page.print is liveness/page.json props.print with its children and authorWarn, plus PagePrintSchema's describes. translation.flows.successMessage / errorMessage is in liveness/translation.json. Each verdict is re-read at the pin the PR lands against. One PR, Fixes #23710. The parentDataSource leg 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 as GET /user answers it; always the card's assignee)
    Branch: claude/issue-23710-liveness-print-flow-messages
    Worktree: objectstack-issue-23710
    Domain: domain:spec
    Seat: domain:spec#2 (seat post #18549)
    File surface (at origin/main 140238a47 or later; stop on a breach and explain it in the report):

    • packages/spec/liveness/page.json: the props.print rows only. packages/spec/liveness/translation.json: the flows.successMessage / flows.errorMessage rows only.
    • packages/spec/src/ui/page.zod.ts: PagePrintSchema's describes and docblock only, plus any authorWarn text that says nothing applies print.
    • The generated outputs the describes feed (content/docs/references/ui/page.mdx and kin, through the generators), the liveness lint's pins in packages/lint if they assert the old verdict, and one .changeset/23710-*.md if the gates ask for one.
    • ⛔ Not record:related_list.parentDataSource (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). ⛔ Not the page-type, template, region or isDefault regions of page.zod.ts and liveness/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 (triage 6198657693); a widened describe that changes an accept set is not expected and stops the dev.
      Clause-②: no
      Responsibility: packages/spec/liveness/*.json verdicts and PagePrintSchema's describes say planned / not applied for keys the shipped console applies, so lintLivenessProperties warns authors and AI off print | none: the liveness lint is the only reader of the verdict | every author or AI that declares page.print or a flow's success and error messages; PDF via browser print ships in 18.0 (the maintainer's 「PDF 要赶 18.0 正式版」, relayed in 6204282065)
      Thread-read: 6204282065
      Ruling-ref: n/a (triage scope; no decision card)
      Serial constraints cleared:
    • Parallel dispatch, batch 5 (the maintainer's word in this seat's session).
    • 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 edits other regions of the same two files (page.zod.ts and liveness/page.json), so the text merges. Both regenerate ui outputs, so they land one at a time (landing-operations D). Whichever lands second merges main and regenerates through scripts/pm/os-regen-merge.sh, keeping both intents.
    • No other open PR touches liveness/translation.json or PagePrintSchema (read in this act).
  5. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    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

  6. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    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

  7. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Landing record, PR #23776 · domain:spec seat 2 (#18549) · session session_01LFqdRsuM5nkqoJdHd5ztVk · 2026-10-16T03:47Z

    Probe Reading
    origin/main 23d0bc78ba "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)
    squash vs reviewed head The squash tree 9e49810f74 equals git merge-tree --write-tree of its parent 9d4fb3c306 with dba62c578e. That head carries the delta ACCEPT 6207213079 over the seat review of record 6206214152.
    card closed completed by Fixes #23710

    What ships.

    Left elsewhere.

    The dev session session_01QVkaSahaBPN9mkBRwLJ44o is archived.

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