Skip to content

chore(objectui): move the console pin from 1fb1ced36243 to objectui main once objectui#11773 and objectui#12270 land (the hop carries objectui's v18 dependency move) #23392

Closed

Description

@objectstack-fleet

Filing gate ③ a maintainer-directed task (direct dispatch channel). The maintainer, in Claude Code session session_01CsyMRsFJBKNEMa4oPY1b5z on 2026-10-14, verbatim and untranslated, answering this seat's proposal to file one objectstack card for this pin hop:

开, 并且你负责派发这张卡,然后再下班

The order's context, same session, verbatim: 「现在是要升级 objectstack 的版本号,而不是着急发 objectui 的版本」. objectstack's release builds the console at .objectui-sha as committed (docs/releases-maintenance.md). So the objectui work merged since the pin reaches the v18 release only through this hop, and the hop does not wait on any objectui npm release.

Readings (2026-10-14, at filing)

The hop

Target: move .objectui-sha to the objectui main tip re-read by git ls-remote when the work starts, after both objectui#11773 and objectui#12270 have merged. The claim names the exact target sha.

Method: use scripts/bump-objectui.sh, with the full pin procedure (AGENTS.md → Frontend; docs/releases-maintenance.md):

  • the console changeset the script derives;
  • the regenerated sdui.manifest.json and scripts/sdui-manifest.record.json;
  • the pin-citation re-measure and the sdui-parser lockstep;
  • the Console Pin Gate steps, run locally, and a smoke boot.

The precedent shape is #23110.

The v18 dependency move inside the hop:

  • scripts/build-console.sh injects this tree's @objectstack/spec and @objectstack/client into the console build.
  • The other @objectstack/* packages resolve from objectui's lockfile, which is now 18.0.0-next.0.
  • The Console Pin Gate steps at the new pin are the measure.

Describe text this hop makes true:

Not in this hop:

Acceptance

  • The pin PR states the exact objectui sha it pins, and its checks are green, check:sdui-manifest included.
  • If the diff touches packages/spec/src/**, a ## Contract review PASS at CONTRACT_REVIEW_TIER exists on its head.
  • The seat reads the Console Pin Gate on the first full-battery main run carrying the hop. If that run has not concluded by the seat's clock-out, the clock-out ledger hands the reading over.

Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Not dispatched by this seat: released · domain:ui seat 1 · session_01CsyMRsFJBKNEMa4oPY1b5z · 2026-10-14T04:49Z

    The maintainer, in this seat's session, verbatim: 「你处理完手上两个 issue的合并就下班, 23392 不用处理了。」


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_012VGBku7tEi8DX2uvi1gtXk
    Account: os-support-ai (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-23392-console-pin-hop
    Worktree: objectstack-issue-23392
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: .objectui-sha; sdui.manifest.json; scripts/sdui-manifest.record.json; packages/sdui-parser/objectui-lockstep.json; the console changeset and pin-citation changeset under .changeset/ that scripts/bump-objectui.sh derives; the pin-citation re-measure sites that check:objectui-pin-citations names; the describe text this hop makes true, and only that, in packages/spec/src/ui/** (candidates measured 2026-10-14T06:38Z on origin/main 5656c5638: component.zod.ts sections[].count, view.zod.ts:1920 and page.zod.ts:933 [PLANNED — not yet rendered]), with their pin tests, the liveness rows they move, and the regenerated content/docs/references/ui/**. Stop on breach; explain it in the report.
    Container & model: M, mode:subagent, model: default (dispatch-gates --tier --repo objectstack-ai/objectstack at 5656c56: "no path-derived mandate … floor sonnet · default opus · ceiling fable"); ceiling CONTRACT_REVIEW_TIER for the review, reason: the card's Acceptance requires a ## Contract review PASS on the head if the diff touches packages/spec/src/**.
    Clause-②: no
    Responsibility: n/a — not a defect card
    Thread-read: 6161143200
    Serial constraints cleared: .objectui-sha is in SINGLE_CLAIM_PATHS; no open PR and no live claim writes it (all 7 open PRs' file lists read 2026-10-14T06:38Z). Same-package in-flight claims: #23332 (domain:spec, packages/spec/src/ui/component.zod.ts, the page action rows' operation) and #23357 (domain:spec, packages/spec/src/ui/page.zod.ts, a page component's data parse; it reuses the judge in view.zod.ts). This card's regions in those files are different keys: ordinary concurrency, the later lander resolves. #23411 (packages/spec) touches no src/ui/** file.

    Order (maintainer, this seat's session session_012VGBku7tEi8DX2uvi1gtXk, 2026-10-14, verbatim): 「先处理这个,虽然是 p2, 23392」. Target re-read by git ls-remote 2026-10-14T06:38Z: objectui main = b9814b334d8aebac43dd2b04a2003963aec3cc6e, 36 commits past the pin, carrying both objectui#12270 (PR objectui#12350, b434f5f) and objectui#11773 (PR objectui#12351, b9814b3). The dev re-reads it at start and pins that tip if it moved.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Review-tier order · domain:devx seat 1 · session_012VGBku7tEi8DX2uvi1gtXk · 2026-10-14T06:51Z

    • Maintainer order, this seat's session, verbatim: 「当前契约复审用 opus 就可以」.
    • What it changes on this card: the claim 6162496303 named CONTRACT_REVIEW_TIER as the ceiling for the ## Contract review the Acceptance requires if the diff touches packages/spec/src/**. That review now runs at the default tier (TIER_DEFAULT), on this order.
    • How the record will read: Served-tier: names the tier that actually served it (TIER_DEFAULT), never CONTRACT_REVIEW_TIER, and the record cites this order as its authority. Everything else about the review is unchanged: an isolated read-only reviewer, the same ①②③ items, and the record on the landing head.
    • Scope and end: contract reviews this seat runs in this session, until the maintainer says otherwise. It does not change any other seat's reviews.

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 23392,
    "status": "done",
    "branch": "claude/issue-23392-console-pin-hop",
    "pr": "#23424",
    "session": "session_012VGBku7tEi8DX2uvi1gtXk",
    "premise_still_valid": true,
    "pinned_sha": "b9814b334d8aebac43dd2b04a2003963aec3cc6e",
    "head": "8aa9b01d97d51eaebbeda2d87bc59f8b98b114b4",
    "summary": "Moved .objectui-sha 1fb1ced36243 -> b9814b334d8a. That is objectui main per git ls-remote at start, unchanged from the claim; it is 36 commits and 397 paths past the old pin, and it contains b434f5f (objectui#12270) and b9814b3 (objectui#11773); is-ancestor exits 0 for both. The PR carries the derived console changeset (minor; 31 releasing; 4 author-annotated breaking entries, ADR-0087 answered not-required (no-migration-prescription) entry by entry; Clause-② no). It also carries the regenerated sdui.manifest.json (107 components, sha256 7911e7559d96; record:details/highlights/quick_actions gain the dataSource input) with its record, and the re-recorded sdui-parser lockstep (objectui sdui-parser src byte-identical, no port owed). Pin citations: all 55 asserting citations re-measured through the hop. Every cited line in a changed file was mapped and re-read; none changed what it reads. The map record's 3 quoted anchors were re-pointed, and the 6 migration entries were recounted (corpus 8743, superset of 98 names reads 0). Describe flips, each measured at b9814b334: EmptyStateSchema.link and interfaceConfig.emptyState drop [PLANNED — not yet rendered]; record:details sections[].count drops [EXPERIMENTAL — not enforced]; the object-grid emptyState describe names link. The two liveness notes were rewritten and the ui reference mdx regenerated; spec patch changeset added. Console Pin Gate steps all exit 0 locally, and the smoke boot was green. The draft PR is open with assignee os-support-ai, and the worktrees are removed. The Contract review is owed by the seat, because the diff touches packages/spec/src/**.",
    "console_pin_gate": {
    "client_closure_build": "exit 0 — turbo run build --filter=@objectstack/client... (34 tasks, VERDICT command-exit 0)",
    "build_console": "exit 0 (run twice; second after manifest regen + spec rebuild): canary import/jobs present; single zod literal {major:4,minor:6,patch:5}; 'Console bundle carries THIS tree's @objectstack/spec, and only it'; 'Shipped the tracked sdui.manifest.json (recorded at objectui@b9814b334d8a, this pin)'",
    "dist_presence": "index.html + assets + .objectui-sha present, 64292 KB, stamp b9814b334d8a",
    "check_console_sha": "exit 0 — 'Console dist matches the objectui pin (objectui@b9814b334d8a)'",
    "check_console_injection_require_stamp": "exit 0 — 67 self-test assertions; 'the dist carries this tree's copy, and not the published one'",
    "smoke_boot": "pnpm dev -- --fresh -p 39523: check-dev-prereqs 69 packages; /api/v1/health 200 (ok, 18.0.0-next.0) after 12s; /_console/ 200 (18552 B), entry index-BnJvRUm1.js 200; served .objectui-sha = b9814b334d8aebac43dd2b04a2003963aec3cc6e; served sdui.manifest.json sha256 7911e7559d96... = record; stopped by recorded PIDs 30028 and 29922, port free"
    },
    "spec_src_hunks": [
    "view.zod.ts EmptyStateSchema.link describe + its docblock: marker dropped; ListView.tsx:5716 hands the link to ListEmptyState (draws at ListEmptyState.tsx:153, grid/gallery empty branch), ObjectGrid.tsx:6897-6899 draws it, at objectui b9814b334",
    "page.zod.ts interfaceConfig.emptyState describe + docblock: marker dropped; InterfaceListPage.tsx:509 cfg.emptyState ?? view.emptyState",
    "component.zod.ts record:details sections[].count describe + docblock: EXPERIMENTAL marker and 'renders as literal text' dropped; record-details.tsx:904-906 fills the hole (objectui#12192, c08c9332a)",
    "component.zod.ts object-grid emptyState describe now '{ title, message, icon, link }' + one docblock paragraph (ObjectGrid.tsx:6897-6899)",
    "pin-citation hop sentences/anchor renumbering in action.zod.ts, component.zod.ts, dataset.zod.ts, view.zod.ts (incl. FormField.span describe stamp, map record), kernel/functional-completeness.ts, two test-file comment records, and 6 migration-entry description strings (corpus recount)",
    "kept on purpose: parentDataSource PLANNED (git grep 0 at b9814b334, control relationshipValueField lit); page API binding PLANNED (objectui#12325 on hold per card)"
    ],
    "files_changed": [
    ".changeset/console-b9814b334d8a.md",
    ".changeset/objectui-pin-citations-b9814b334d8a.md",
    ".objectui-sha",
    "content/docs/references/ui/component.mdx",
    "content/docs/references/ui/page.mdx",
    "content/docs/references/ui/view.mdx",
    "packages/sdui-parser/objectui-lockstep.json",
    "packages/spec/liveness/page.json",
    "packages/spec/liveness/view.json",
    "packages/spec/src/data/api-methods-batch-conformance.test.ts",
    "packages/spec/src/kernel/functional-completeness.ts",
    "packages/spec/src/migrations/entries/semantic/18.kernel-health-check-and-hot-reload-durations-unit-in-key.ts",
    "packages/spec/src/migrations/entries/semantic/18.kernel-runtime-config-timeout-unit-in-key.ts",
    "packages/spec/src/migrations/entries/semantic/18.logging-durations-unit-in-key.ts",
    "packages/spec/src/migrations/entries/semantic/18.system-metrics-jsdoc-durations-unit-in-key.ts",
    "packages/spec/src/migrations/entries/semantic/18.system-tracing-otel-exporter-durations-unit-in-key.ts",
    "packages/spec/src/migrations/entries/semantic/18.tenant-schema-cache-ttl-unit-in-key.ts",
    "packages/spec/src/ui/action-outcome-messages.test.ts",
    "packages/spec/src/ui/action.zod.ts",
    "packages/spec/src/ui/component.test.ts",
    "packages/spec/src/ui/component.zod.ts",
    "packages/spec/src/ui/dataset.zod.ts",
    "packages/spec/src/ui/page.zod.ts",
    "packages/spec/src/ui/view.zod.ts",
    "scripts/sdui-manifest.record.json",
    "sdui.manifest.json"
    ],
    "gates": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at 8aa9b01 (merge base 5656c56, 26 paths): 126 commands, all run with exit codes recorded; --ran: '126 derived, 126 run, 0 NOT-MEASURED, 0 UNRUN' (exit 0). 122 exit 0 on first run; 3 exited 3 (prerequisite) and were re-run green: check-plugin-teardown-shape --self-test (after git fetch --depth=1 of fixture 621a487; 48 cases), check:skill-examples and check:dual-build-cjs-loads (after full turbo build, 75 tasks). 1 exit 1: pnpm check:platform-checklist — 8 ABSENT SYMBOL/anchors-lost problems in docs/qa/platform-checklist areas; identical 8 on an unmodified worktree at base 5656c56 (exit 1), untouched by this diff, gate is out of per-PR CI (daily watchdog). Repo-wide pnpm lint: NOT MEASURED, reason: CI-owned.",
    "tests": "At 8aa9b01: pnpm --filter @objectstack/spec test -> 'Test Files 673 passed (673) / Tests 20461 passed | 1 todo'; pnpm --filter @objectstack/spec typecheck -> exit 0 (check:test-typecheck OK, debt held); pnpm --filter @objectstack/sdui-parser test -> '14 passed (14) / 225 passed'. check:objectui-pin-citations --verify-anchors -> exit 0, '55 asserting objectui pin citation(s) match .objectui-sha (b9814b334)', '13 anchor content assertion(s) verified against objectui at b9814b334'. check:generated --fix regenerated only check:docs; rerun shows 14/14 current. Migration recount method reproduced every 1fb1ced36243 control exactly (objectstack 18601, @objectstack/spec 7679, timeout 1700, RuntimeConfig 357, useState 2669, window 4653, metrics 462, TTL 184, tenant 1415, Span 519, SpanSchema 57; 8642 files) before reading the new values. No ablation or reverse verification applies: no behaviour or type changed.",
    "mcp_calls": "0 — no MCP GitHub tools used",
    "api_writes": "3 — via fleet-write relay (repository_dispatch to objectstack-ai/objectstack, run 38532037772 and the report comment's run): POST /repos/objectstack-ai/objectstack/pulls (draft #23424, body read back identical 12529 B), POST /repos//issues/23424/assignees (os-support-ai), POST /repos//issues/23392/comments (this os-dev-report). git push (5 pushes to claude/issue-23392-console-pin-hop) not counted as REST. 0 label writes (none named; changesets present, so no skip-changeset).",
    "deviations": [
    "Mechanism assumption 2 partly falsified: scripts/build-console.sh tests -d OBJECTUI_ROOT/.git, so OBJECTUI_ROOT=/home/user/objectui-pin-23392 (a linked worktree) was ignored and it used the sibling /home/user/objectui as source ('Using objectui source at /home/user/objectui'). It only added and later removed the detached worktree .cache/objectui-b9814b334d8a in that shared .git, ran worktree prune, never moved its HEAD. bump-objectui.sh honoured OBJECTUI_ROOT.",
    "Shared-state touches, additive only: git fetch origin main in /home/user/objectui (shared refs/remotes); git fetch --depth=1 origin 621a487 into the shared objectstack object store for the teardown self-test fixture.",
    "Beyond the three PM-named describe candidates, the object-grid emptyState describe ({ title, message, icon } -> adds link) is flipped too, and one un-stamped 'at the pin' anchor in component.zod.ts (data-objectstack/src/index.ts:5066-5077 -> 5180-5191) was re-pointed; both are in claimed files and are text this hop flips.",
    "bump-objectui.sh run with --no-commit and committed by hand so commits carry the model-free trailer pair AGENTS.md requires; the harness reminder's model-named Co-Authored-By and its PR-footer form were not used (os-dev/AGENTS precedence). The four branch commits carry Claude-Session + Co-authored-by: Claude.",
    "One SendMessage status reply to the PM's mid-run query (no write to GitHub)."
    ],
    "mechanism_assumptions": [
    "1 target: CONFIRMED — ls-remote b9814b334d8aebac43dd2b04a2003963aec3cc6e at start, 36 commits past pin, contains b434f5f and b9814b3",
    "2 objectui checkout: PARTLY FALSIFIED — see deviations (build-console.sh ignores a worktree OBJECTUI_ROOT)",
    "3 describe text: CONFIRMED for view.zod.ts link, page.zod.ts interfaceConfig.emptyState, component.zod.ts sections[].count; plus object-grid emptyState; the two named pin tests cover parentDataSource and the page API binding, both still unread at the pin, so unchanged",
    "4 v18 move: CONFIRMED — Console Pin Gate steps green with objectui lockfile @objectstack/* 18.0.0-next.0 and injected spec/client 18.0.0-next.0",
    "5 objectstack#23406: NOT MEASURED (no browser pass ordered); nothing in this hop measured a first-party path reaching the sealed-item remedy",
    "6 Clause-② no: CONFIRMED — spec src diff is describe/comment/description-string text only; check:api-surface, check:authorable-surface, check:export-origins, check:declaration-map green on rebuilt dist",
    "7 precedent shape: CONFIRMED (#23110 shape plus regenerated content/docs/references/ui/*.mdx)"
    ],
    "open_questions": [],
    "out_of_scope_findings": [
    "class: a · reach: measured at the script's own door this run — OBJECTUI_ROOT=/home/user/objectui-pin-23392 bash scripts/build-console.sh printed 'Using objectui source at /home/user/objectui' (silent fallback to the sibling, or to a fresh clone when none exists); named producer: the pin procedure's own OBJECTUI_ROOT input (this dispatch's assumption 2) · evidence: scripts/build-console.sh tests -d "${OBJECTUI_ROOT}/.git", false for a linked worktree whose .git is a file; scripts/bump-objectui.sh already uses -e for exactly this reason (its comment above the check) · dedupe words: build-console OBJECTUI_ROOT worktree, -d .git, objectui source fallback",
    "carrier: domain:spec seat (objectui comment 6132635356 names the follow-up card) · noted, not filed: offer interfaceConfig.emptyState in the page form and delete its omit row at packages/spec/src/system/metadata-form-zod-reconciliation.test.ts:205-206, whose why text ('PLANNED, not yet rendered ... no console list page draws it yet') is false from this pin; outside this hop's claimed file surface",
    "carrier: platform-checklist daily watchdog (board-snapshot.yml) · noted, not filed: pnpm check:platform-checklist exits 1 on unmodified base 5656c56 with 8 problems (ABSENT SYMBOL anonymousFormIntakeOrgScopeRefusal / anonymousFormIntakeReopenRefusal / envWideRawViewRows / countable in metadata-protocol protocol.ts, canEdit in attachment-access-hooks.ts, attachments-storage anchors 27 below floor 28)",
    "carrier: objectui (its block-types.ts PALETTE_EXCLUSIONS reason names the follow-up) · noted, not filed: record:approval_decision is a declared PageComponentType in @objectstack/spec 18 but objectui b9814b334 registers no page block for it"
    ]
    }


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Pointer from objectui domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-14T08:12Z · ⛔ Not a claim.

    objectstack-ai/objectui#11958 (print page ② of #8346) landed as objectui PR #12356, main 2312bd9. Its renderer reads every print.* key:

    • paperSize / orientation / margins → @page;
    • repeatHeader / repeatFooter → a real thead / tfoot;
    • pageNumbers;
    • repeatTableHeaders;
    • avoidBreakInside.

    For whoever lands this pin move: if the new pin covers objectui 2312bd9, the liveness ledger rows print.* in packages/spec/liveness/page.json can leave planned. Each row names objectui#11958 as its carrier. Flip them in the same PR with evidence, or say why not. If the pin stops short of 2312bd9, nothing is owed here.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT · PR #23424 @ 8aa9b01d97d51eaebbeda2d87bc59f8b98b114b4 · domain:devx seat 1 · session_012VGBku7tEi8DX2uvi1gtXk · 2026-10-14T08:24Z

    Checklist, read on GitHub (not from the report):

    • Shape: draft, base main, assignee os-support-ai. Body line 1 is Fixes #23392, the only closing keyword in the body. No model name in the title or body.
    • Scope: 26 files, +527/−131. check-governed-merges --pr 23424: 0 of 26 paths governed, 658 lines ≤ 3000, so ordinary queue landing applies. No content/docs/releases/ path.
    • Changesets, read sentence by sentence:
      • @objectstack/spec patch: the four flipped descriptions; the 55 re-measured citations and the six migration-entry recounts; "No key, default, enum member or export moves". Each sentence matches the diff.
      • @objectstack/console minor: the script-derived range of 31 releasing entries, with the ADR-0087 disposition answered. Same shape as chore(objectui): move the console pin to 1fb1ced36243 (objectui main tip, Half 1 of #23104) #23110.
      • content/docs/references/ui/{view,page,component}.mdx mirror the describe text line for line.
    • Pin: .objectui-sha, the manifest record and the lockstep all name b9814b334d8aebac43dd2b04a2003963aec3cc6e. It contains b434f5f (objectui#12270) and b9814b3 (objectui#11773), read in the objectui log 1fb1ced36243..b9814b334d8a (36 commits).
    • Contract review: PASS, 6164050242 on the PR, served at TIER_DEFAULT on the maintainer's order 6162674390. It finds the packages/spec/src/** hunks text-only, with all four describe flips true at the pin and Clause-② no.
    • CI on this head, read 2026-10-14T08:24Z: 31 success, 5 skipped, 4 in progress (Test Core 1, 3, 4 and 6 of 6). Landing waits for every check to conclude green. Console Pin Gate runs on push only, so this seat reads it on the first full-battery main run carrying the hop (card Acceptance).

    Deviations: all five accepted, as the review records. build-console.sh built the pin's bytes from the shared object store, and the dev measured and reported it.

    Out-of-scope dispositions:

    Maintainer question, this seat's session: 「升级 objectui pin ,为什么会导致 spec 协议变更,这些代码有必要嘛?不是应该 objectui 遵守 spec 协议吗」.


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · PR #23424 · domain:devx seat 1 · session_012VGBku7tEi8DX2uvi1gtXk · 2026-10-14T09:07Z


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Console Pin Gate reading · #23392 Acceptance · domain:devx seat 1 · session_012VGBku7tEi8DX2uvi1gtXk · 2026-10-14T10:18Z

    PASS. The first main run carrying the hop (325a92e26) in which Console Pin Gate actually ran is the scheduled full battery 38546648109 on 2d2e3ce43 (an ancestor check confirms 325a92e26 is in it). The job concluded success: https://github.com/objectstack-ai/objectstack/actions/runs/38546648109/job/115794288239

    run event head carries the hop Console Pin Gate
    38539769479 push 823da2f21 yes cancelled (the run was superseded)
    38540321571, 38541906541, 38545525598, 38546278521 push 2659901c5 … 2d2e3ce43 yes skipped (console path filter is false on these pushes)
    38546648109 schedule 2d2e3ce43 yes success

    The card's Acceptance is fully met. Nothing more is owed on #23392.


    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

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:devxpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions