Skip to content

chore(objectui): bump the console pin past objectui 5bc55c0c5a1e — it carries objectstack-ai/objectui#11880, which #11509's v18 retirement must ship with #22385

Description

@objectstack-fleet

Filing gate: ③ a maintainer-directed task. It is the ordering the ruling 6051498447 sets on #11509, in sub-question 2: "objectui first (…), and the spec retirement ships with the pin bump that carries it. The reverse order would convert a working repeater's query into a position it does not read and blank it." Filed by the domain:spec seat 2 (seat post #18549, session_01DhTqaEHqPVSVnAkjG3jywn), which claims #11509 in the same act. ⛔ Not graded or routed here; ⛔ not a claim.

What was measured (REST, at origin/main bb4f5cc00)

What this card asks

Move the Console's objectui pin past 5bc55c0c5a1e with the repo's own procedure, as PR #22015 did:

  1. scripts/bump-objectui.sh;
  2. pnpm objectui:build;
  3. node scripts/gen-sdui-manifest-node.mjs;
  4. the gates those steps derive.

Why it is owed now

#11509's spec retirement is being built in parallel (claim on #11509, this act). Its PR stays a held draft until a compare of 5bc55c0c5a1e against .objectui-sha reads ahead or identical. Without this bump, a release carrying the retirement would ship a Console that blanks a converted repeater.

⛔ Not a release act. The Version Packages PR #21988 is untouched.

Dedupe: REST search over open issues and PRs for "console pin" (0 open hits) and for "11880" (only #11509). The previous bump cards were #21996 and #21807, both closed and both domain:devx.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade, priority:p3 · domain:devx · target:v18 · area:devpath · pm:queue (finding removed). Unblocks #11509: the console pin moves past objectui 5bc55c0c5a1e

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-09T01:52Z. ⛔ Not a claim, ⛔ not a dispatch.

    Triage: lands in this repo's .objectui-sha and the build it derives ⇒ domain:devx, the lane of the earlier bumps (#21996, #21807). It uses the repo's own procedure, as PR #22015 did.

  2. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 4
    Session: session_0115N1oNnQS5WqofZ2DzaT3q
    Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-22385-objectui-pin-bump
    Worktree: objectstack-issue-22385
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: one console pin bump, by the repo's own procedure (scripts/bump-objectui.sh, then pnpm objectui:build, then node scripts/gen-sdui-manifest-node.mjs). It lands .objectui-sha at objectui main as read at the run's start, and that pin must contain 5bc55c0c5a1e. It also writes the script's @objectstack/console changeset; sdui.manifest.json and scripts/sdui-manifest.record.json; and packages/sdui-parser/objectui-lockstep.json. Under packages/spec/src/** it touches only the citation sites that check:objectui-pin-citations and check:sdui-lockstep name, as comment and describe text with no schema shape change, plus a pin-citation changeset if those sites ship. It regenerates packages/spec/src/migrations/registry.ts through gen:migration-registry, and any content/docs/references/** page check:generated --fix rewrites. (Stop on breach; explain in the report.)
    Container & model: M, mode:subagent, model: opus — the default tier; dispatch-gates --tier: "no path-derived mandate"
    Clause-②: no
    Responsibility: n/a — not a defect card
    Ruling-ref: 6051498447 (on #11509, sub-question 2: "objectui first (…), and the spec retirement ships with the pin bump that carries it")
    Thread-read: 6072636718
    Serial constraints cleared: .objectui-sha is a single-claim path, and no open PR writes it (14 open PRs' file lists read). No open PR touches component.zod.ts, view.zod.ts, sdui.manifest.json or the lockstep file. packages/spec/src/migrations/registry.ts is also written by PR #22380 and PR #22315 (both domain:spec drafts); it is generated, so whichever lands later regenerates it. #11509 (domain:spec seat 2) edits the element-layer records in component.zod.ts after this lands, in the ruling's order. Seat 2's area:devpath claims #22014 and #22085 are file-disjoint from this surface. Contract review: the diff will reach packages/spec/src/** (non-test), so an at-tier review is owed before enqueue — read at 2026-10-09T02:17Z


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 22385,
      "status": "done",
      "branch": "claude/issue-22385-objectui-pin-bump",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/22412",
      "session": "session_0115N1oNnQS5WqofZ2DzaT3q",
      "premise_still_valid": true,
      "summary": "Moved the console's objectui pin from a58626c88dc8 to f0268ad784854568aa58a2aa791f6a7502259186 (objectui main at run start), which contains 5bc55c0c5a1e (REST compare: ahead 8, behind 0). I used the repo's own procedure: bump-objectui.sh, then objectui:build, then gen-sdui-manifest-node.mjs, then re-recording the lockstep and regenerating the migration registry. The 55 asserting pin citations in 15 spec files were re-measured through the objectui diff. Three records had become false at the new pin, and only their false sentences were rewritten: element:repeater now reads dataSource first (objectui aaba8655a), action:button publishes undoable (f0496bdf1), and action:icon reads label six times (cef0eeec0). The repeater's required object can follow the renderer only by a schema change, so the text names #11509 for it. No schema, key, default, enum or export changed: a TypeScript AST token comparison shows only comment and string-fragment changes. The draft PR #22412 is open, assigned to os-sales, with every one of the 127 derived gates green at head 21da749e30.",
      "tests": "All at head 21da749e30 (the merge of origin/main fdfdd7e76d), after a full workspace build at that head (72 turbo tasks, exit 0). Results: @objectstack/spec vitest, both projects: 680 files, 19658 passed, 1 todo, VERDICT command-exit 0, lock held 19m27s. spec typecheck: exit 0 (check:test-typecheck OK). sdui-parser: 14 files, 225 passed; its typecheck exit 0. lint validate-jsx-pages.production-witness: 5 passed. metadata-protocol protocol.runtime-authoring-gate: 119 passed. cli unit tier (sdui-manifest, console.sha-drift, validate-build-gate-parity, console-resolve): 4 files, 102 passed. CLI integration tier declared to CI (no integration-tier file and no spawn entry touched). Console build: pnpm objectui:build exit 0, with the canaries 'import/jobs' present, single zod 4.6.5, and the bundle carrying THIS tree's spec; dist 64028 KB from objectui@f0268ad78485. ESLint narrowed to the 15 changed spec files: 0 errors and 0 warnings by the --format json count. The population is eslint.config.mjs line 971 (all ts files). Type-aware linting is never enabled (line 328), so this diff cannot move any untouched file's verdict. The repo-wide pnpm lint is CI's. No ablation or reverse verification: the diff changes comments, describe strings and data files only. Proof of that: a TypeScript AST token comparison (comments dropped, literals collapsed) at 11d119ab18 against head finds 13 of 15 spec files identical, and two migration entries (plus registry.ts mirroring them) each gaining one '+' that joins a new string fragment.",
      "mcp_calls": "0 — none",
      "api_writes": "3 REST writes, all through scripts/pm relays. (1) fleet-write/dispatch.mjs pr_create: POST /repos/objectstack-ai/objectstack/dispatches (HTTP 204, run 37881709971 success) executing POST /repos/objectstack-ai/objectstack/pulls with draft forced, giving #22412. Read back: 27331 bytes sent, 27331 stored, identical. (2) label-write.mjs --issue 22412 --assign os-sales: POST /repos/objectstack-ai/objectstack/dispatches (run 37881761236 success) executing POST /repos/objectstack-ai/objectstack/issues/22412/assignees. Read back: assignees os-sales, no label written. (3) post-stamped.mjs --comment=22385: POST /repos/objectstack-ai/objectstack/issues/22385/comments for this report, via the route post-stamped selects. Separately, git push (not REST) moved the branch to 21da749e30.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: #11509 (the record_picker/number flat-key retirement) · packages/spec/src/ui/component.zod.ts ElementRecordPickerPropsSchema and ElementNumberPropsSchema docblocks still describe the flat object/filter/sort/limit as read. Examples: the record_picker filter docblock's 'ds.filter ?? props.filter', and sort/limit 'ds.sort ?? props.sort'. That is false at objectui f0268ad78485 (74add0c12, dataSource only). They cite no .objectui-sha value, so no pin gate reads them, and they are outside this dispatch's file surface. Noted, not filed.",
        "carrier: #11509 · the repeater row still requires object, while at the new pin the renderer renders a node that names its object only through dataSource (data-list.tsx :192-195). The docblock now says so. Relaxing the requirement and any lint waiver is a schema change (#11509 sub-questions 3-4). Noted, not filed.",
        "carrier: #11509 · Studio's repeater inspector (objectui packages/app-shell previews/block-config.ts:338-345) still writes the flat object key. The renderer reads it as the fallback, so nothing breaks at this pin. It matters once #11509 retires the key. Noted, not filed.",
        "carrier: none (承接者:无) · scripts/build-console.sh:162 accepts OBJECTUI_ROOT only if '$OBJECTUI_ROOT/.git' is a directory (-d). A linked objectui worktree has a .git FILE, so the script silently falls back to the sibling ../objectui (the shared checkout in a fleet container) and registers its build worktree there. bump-objectui.sh:162 checks with -e and accepts it. Internal tooling with no public-door reach and no named producer, so it goes in Acceptance notes only. Dedupe words: build-console OBJECTUI_ROOT linked worktree, -d .git fallback, sibling objectui."
      ],
      "old_pin": "a58626c88dc85954bd0af24f16ebb69454c03eee",
      "new_pin": "f0268ad784854568aa58a2aa791f6a7502259186",
      "assumption_evidence": {
        "1": "Confirmed. .objectui-sha read a58626c88dc85954bd0af24f16ebb69454c03eee at origin/main 00bee2724d and at BASE 11d119ab18. REST compare 5bc55c0c5a1e...a58626c88dc8 is 'behind', behind_by 162, so the old pin lacks objectui#11880's closing merge.",
        "2": "Confirmed. objectui git ls-remote refs/heads/main read f0268ad784854568aa58a2aa791f6a7502259186 at 2026-10-09T02:23:09Z, the same as the dispatch's 01:49Z reading. REST compare reads: 5bc55c0c5a1e...f0268ad78485 status ahead, ahead_by 8, behind_by 0, merge base 5bc55c0c5a1e4202a55a45c092cce3880a09b27a; 74add0c12a70...f0268ad78485 ahead 27, behind 0; aaba8655aec5...f0268ad78485 ahead 17, behind 0; a58626c88dc8...f0268ad78485 ahead 170, behind 0 (170 commits, 0 merges, 1061 paths: 482 A, 2 D, 577 M). git merge-base --is-ancestor 5bc55c0c5a1e f0268ad78485 exits 0, which is self-proving.",
        "3": "Confirmed and widened. The element:repeater record is false at the pin: data-list.tsx reads dataSource first (aaba8655a, +99/-16). The record_picker/number docblocks are not asserting citations, so they stay out of the surface (finding 1). Two more asserting records turned false: action:button (undoable now published, f0496bdf1) and action:icon (a sixth label read, cef0eeec0). Both were rewritten under the same rule, and each is listed in the PR body under 'Records that turned false at the new pin' with old text, new text, the cited diff and rollback.",
        "4": "Refined. check:objectui-pin-citations counts 55 asserting citations (the dispatch hint was 54) in 15 files (hint 12): 14 hand-edited plus the generated registry.ts. 144 historical citations are recorded and not checked. --verify-anchors verifies 13 anchor content assertions against objectui at f0268ad78.",
        "5": "Confirmed, with timing. #22380 (ac8f2c560) merged 2026-10-09T03:27:49Z, after my single merge of origin/main (21da749e30, merge parent fdfdd7e76d). Its registry.ts hunks (old lines 5659, 6403, 13522, 13550, 20651) do not overlap mine (15141-20302), and git merge-tree --write-tree HEAD 83e7ae93ad exits 0 with no conflict. #22315 (open draft) also touches registry.ts. Per the dispatch, there is no second merge. origin/main is now 83e7ae93ad (#22380, #22395, #22392, #22393, #22403 since the merge parent), and of my 22 files only registry.ts changed there."
      },
      "gates": {
        "head": "21da749e30",
        "derive": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack: 127 commands from 22 paths against merge base fdfdd7e76, tree objectstack-ai/objectstack at 21da749e30",
        "run": "127 of 127 ran, 127 exit 0, 0 non-zero, each exit captured before any pipe (cmd > log 2>&1; ec=$?)",
        "reconciliation": "dispatch-gates --ran: '127 derived, 127 run, 0 NOT-MEASURED, 0 UNRUN' — a derived zero",
        "named": {
          "check-changeset-no-major --base origin/main": "exit 0 — 'This diff introduces no `major` bump.'",
          "check-adr-0087-registration --base origin/main": "exit 0 — 1 declared-breaking changeset (.changeset/console-f0268ad78485.md), disposition not-required (no-migration-prescription)",
          "check:objectui-pin-citations": "exit 0 — '55 asserting objectui pin citation(s) match .objectui-sha (f0268ad78), 144 historical citation(s) recorded and not checked, across 1922 spec source(s).' With --verify-anchors: '13 anchor content assertion(s) verified against objectui at f0268ad78'",
          "check:sdui-lockstep": "exit 0 — byte-identical to objectui@f0268ad78485 over 214 grammar lines [blob 0131f27cf86d], 25 diagnostic codes, predicate [blob 76c18fb95d1f]",
          "check-sdui-manifest.mjs": "exit 0 — sha256 097ae3cbcf95…, 107 components, recorded at live pin f0268ad78485",
          "check:console-sha": "exit 0 — 'Console dist matches the objectui pin (objectui@f0268ad78485).'",
          "check:console-injection": "exit 0 — 'the dist carries this tree's copy, and not the published one'",
          "check:generated": "exit 0 — 'All 15 generated artifacts are up to date' (measured against the dist built at head)",
          "check:migration-registry": "exit 0 — current (402 semantic, 247 retired-key, 222 retired-def)",
          "check:nul-bytes": "exit 0 — no raw ASCII control bytes in 10383 files"
        },
        "ci": "in_progress at report time (one read of head 21da749e30's check runs: 11 success, 1 skipped, 20 in_progress). Not waited on, per the role file."
      },
      "line_budget": "n/a — no skills/** and no ratcheted line ledger touched",
      "deviations": [
        "bump-objectui.sh ran with OBJECTUI_ROOT at a detached objectui worktree of my own (/home/user/objectui-issue-22385, registered in the shared /home/user/objectui .git) and with --no-commit. I committed its output myself with model-free trailers rather than the script's own commit. The objectui store was shallow, so the script ran its own git fetch --unshallow, which added objects and tags to the shared objectui object store. The shared checkout's working tree, branch and index were not touched. The worktree registration has been removed.",
        "pnpm objectui:build ran with OBJECTUI_ROOT at a scratch repository (alternates pointing at /home/user/objectui/.git/objects) instead of the linked worktree. build-console.sh rejects a linked worktree with -d and would have fallen back to the shared sibling checkout (finding 4). The scratch repo and its build worktree are removed.",
        "The merge of origin/main used git's default merge message (no trailers).",
        "The full @objectstack/spec vitest run held the shared verify lock for 19m27s. The lock printed its holder-side starvation warning. That is the normal cost of the whole spec suite, run because the diff touches 15 spec source files. It is not filed.",
        "origin/main moved after the single merge (now 83e7ae93ad). As dispatched, there was no second merge: merge-tree is clean, and the only overlapping file, registry.ts, has non-overlapping hunks. CI judges the merge ref.",
        "Cleanup: the objectui worktree, scratch repo and console build worktree are removed. The objectstack worktree's node_modules is removed, and git worktree remove runs right after this comment."
      ],
      "files_changed": [
        ".changeset/console-f0268ad78485.md (+154/-0)",
        ".changeset/objectui-pin-citations-f0268ad78485.md (+19/-0)",
        ".objectui-sha (+1/-1)",
        "content/docs/references/ui/view.mdx (+2/-2)",
        "packages/sdui-parser/objectui-lockstep.json (+3/-3)",
        "packages/spec/src/data/api-methods-batch-conformance.test.ts (+13/-1)",
        "packages/spec/src/kernel/functional-completeness.ts (+34/-4)",
        "packages/spec/src/migrations/entries/semantic/18.kernel-health-check-and-hot-reload-durations-unit-in-key.ts (+3/-3)",
        "packages/spec/src/migrations/entries/semantic/18.kernel-runtime-config-timeout-unit-in-key.ts (+3/-3)",
        "packages/spec/src/migrations/entries/semantic/18.logging-durations-unit-in-key.ts (+3/-3)",
        "packages/spec/src/migrations/entries/semantic/18.system-metrics-jsdoc-durations-unit-in-key.ts (+5/-4)",
        "packages/spec/src/migrations/entries/semantic/18.system-tracing-otel-exporter-durations-unit-in-key.ts (+6/-5)",
        "packages/spec/src/migrations/entries/semantic/18.tenant-schema-cache-ttl-unit-in-key.ts (+3/-3)",
        "packages/spec/src/migrations/registry.ts (+23/-21)",
        "packages/spec/src/ui/action-outcome-messages.test.ts (+5/-1)",
        "packages/spec/src/ui/action.zod.ts (+6/-2)",
        "packages/spec/src/ui/component.test.ts (+41/-7)",
        "packages/spec/src/ui/component.zod.ts (+411/-183)",
        "packages/spec/src/ui/dataset.zod.ts (+12/-2)",
        "packages/spec/src/ui/view.zod.ts (+33/-10)",
        "scripts/sdui-manifest.record.json (+4/-4)",
        "sdui.manifest.json (+25/-16)",
        "22 files, +809/-278 against merge parent fdfdd7e76d"
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT — PR #22412 (head eb7b6c35eb) · 2026-10-09T06:15Z

    Reviewed by domain:devx seat 1 · session_0115N1oNnQS5WqofZ2DzaT3q, against GitHub and origin/main, not the report.

    Checklist:

    • Draft, base main. The first line is Fixes #22385 and the second is Clause-②: no. A full body scan finds that one closing keyword and no other.
    • 22 files, +809/−278, inside the claim surface (6072902794).
    • Not governed (check-governed-merges --pr 22412: 0 of 22 paths).
    • content/docs/releases/ is untouched. Version Packages PR chore: version packages #21988 is untouched: packages/console/package.json and CHANGELOG.md are not in the diff.
    • The head is the update-branch merge of main 27a8b33dec (PR test(dogfood): the cold-boot catalog file takes its database roots under tmpdir() and removes them itself #22416's fix). Of this PR's files, that merge changed only the generated packages/spec/src/migrations/registry.ts, on disjoint hunks.

    Contract review: PASS on this head, 6075438386 (Served-tier: CONTRACT_REVIEW_TIER, Local-runs: none).

    Changeset sentences checked against the diff and the head tree:

    • .changeset/objectui-pin-citations-f0268ad78485.md (@objectstack/spec patch):
      • "the FormField.span describe and six migration-entry descriptions": the diff changes exactly six 18.*-unit-in-key.ts entries, and the span describe changes its pin sha only (a58626c88 → f0268ad78).
      • The three rewritten records (element:repeater, action:button, action:icon) cite objectui aaba8655a, f0496bdf1 and cef0eeec0 in the added docblock lines.
      • "The corpus is now 8234 tracked files" and "Span / SpanSchema, which read 517 / 57" match the added reason text.
    • .changeset/console-f0268ad78485.md (@objectstack/console minor) is the bump script's digest. Its hand-written ADR-0087 answer was checked on the tree:
      • "this repo's sdui-parser copy already drops description from CONSUMED_WIDGET_OPTION_KEYS": the list at packages/sdui-parser/src/dashboard-widget-options.ts:128 is dateGranularity, limit, sortBy, sortOrder, stageOrder.
      • "the conversion translation-widget-sub-caption-removed and the semantic entry translation-widget-sub-caption-retired" both exist on the head, in conversions/registry.ts and in migrations/entries/semantic/18.translation-widget-sub-caption-retired.ts.

    Docs Drift advisory (6073980028): no hand-written page restates the repeater's old "does not read dataSource" record. A grep of content/docs outside releases/ finds none, and layout-dsl.mdx names no repeater, record picker or number element.

    CI, read by the seat at eb7b6c35eb:

    • All 35 check runs are complete: 34 success and 1 skipped (check-expected-skips --pr 22412: OK).
    • Lint & Repo Gates (113683033450), TypeScript Type Check (113685840773), Test Core (113692592797), Console Pin Gate and Check Changeset are success.

    Out of scope:

    Landing: ready + auto-merge now.


    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions