Skip to content

chore(console): move the objectui pin cf153eb2e535 → 56cf4d8e89b7, past objectui#13316's CSV import door, so PR #25130 can land - #25160

Merged
objectstack-fleet[bot] merged 4 commits into
mainfrom
claude/issue-25151-objectui-pin-13316
Oct 22, 2026
Merged

objectstack-fleet[bot] merged 4 commits into
mainfrom
claude/issue-25151-objectui-pin-13316

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #25151
Clause-②: no

This PR moves the console pin from cf153eb2e535 to 56cf4d8e89b7: objectui main at 56cf4d8e89b71586e4d9bb9921433d44b03addf3. That commit is the merge of objectstack-ai/objectui#13316 (objectui#13315), objectui's half of #25078's two-repo fix: objectui's Import Wizard and identity import send a .csv / .tsv / .txt file to the import door as CSV text. It is also objectui main's tip. With this pin on main, #25078's PR #25130 can merge main over it and land.

This PR is not a release act. It does not touch the Version Packages PR and dispatches no release workflow. No objectui source changed, nothing was written to objectui, and no product code, .github/workflows/** or scripts/build-console.sh is in the diff.

Tier: not governed. node scripts/pm/check-governed-merges.mjs --branch claude/issue-25151-objectui-pin-13316 at c331b2c9e: "0 of 4 path(s) hit the register (7 surfaces govern objectstack) ... NOT governed", exit 0. Size: 4 files, +40 / -8.

Choosing the pin

The pin is judged on objectui's push and merge-group CI for this commit, as earlier pin moves were. That is the seat's ruling in claim amendment 6330756861 on #25151. There is no newer objectui main commit to consider: 56cf4d8e89b7 is the tip.

  • Push CI, all success. objectui CI run 39702726461, event push, branch main, head 56cf4d8e89b7, attempt 1: all 31 jobs success, coverage shards included. The other push runs on the commit are also success: Lint 39702726493, Repo Gates 39702726453, Changeset Release 39702726466, Changeset Guard 39702726440 and Bundle Analysis 39702726467.
  • Merge-group CI, all success. On gh-readonly-queue/main/pr-13316-…: CI 39701528761, Lint, Repo Gates, Changeset Presence and Governed Surface Guard.
  • The one red is a scheduled run, recorded here, not hidden. The scheduled CI run 39703234572 (event schedule, created 01:01:32Z) on the same commit concluded failure on two jobs. Test (coverage shard 5/8) failed on apps/console/src/pages/settings/__tests__/SettingsView.leaveGuard-13163.test.tsx, case "after a successful save the page is clean again: no prompt" (AssertionError: expected true to be false). Its aggregator Test (coverage) then reported "Coverage gate did NOT run | shards=failure". Tally of commits/56cf4d8e89b7/check-runs at 2026-10-22T01:38:21Z: 99 check-runs, 94 success, 3 skipped, 2 failure (these two), 0 in progress.
    • Why this is not taken as a red pin:
      • The range cf153eb2e535..56cf4d8e89b7 does not touch that test file. In a full clone, it last changed in 7a5f26715 (fix(console): a settings page asks before leaving with unsaved edits (objectui#13163) objectui#13204), an ancestor of the old pin (merge-base --is-ancestor exit 0). The component it tests, SettingsView.tsx, last changed in 0093b2c82 (fix(console): a settings value that misses its declared format blocks Save (objectui#13287) objectui#13298), which is in this range.
      • The same file passed in the push run on this same commit.
      • Both of those changes are in 7e9708e632. I read 11 scheduled CI runs on that commit (13:34Z to 23:32Z on 2026-10-21): 9 passed, and the 2 that failed did so on infrastructure (a test shard with no conclusion, a Type Check timeout), not on this test.
      • Rerun locally 5 times at 56cf4d8e89b7, from the root of the objectui tree that build-console.sh built, under scripts/pm/os-verify-lock.sh: pnpm exec vitest run --maxWorkers=2 apps/console/src/pages/settings/__tests__/SettingsView.leaveGuard-13163.test.tsx. Each run exited 0 with "Test Files 1 passed (1)" and "Tests 12 passed (12)"; lock VERDICT command-exit 0.
    • The seat files the flake in objectui, for objectui's own lane.
  • Ancestry, in a full (non-shallow) scratch clone of objectui (--is-shallow-repository false):
    • the old pin cf153eb2e535 is an ancestor of 56cf4d8e89b7: exit 0;
    • control, the reverse (56cf4d8e89b7 an ancestor of cf153eb2e535): exit 1;
    • 56cf4d8e89b7 is origin/main's tip, and bump-objectui.sh reports it "(on origin/main)".

What the move carries: 19 commits

git log cf153eb2e535..56cf4d8e89b7 in the full clone: 19 non-merge commits, 0 merges. One line each, newest first. FLAG marks a commit that changes a contract the console build or a pinned record in this repo reads.

Unchanged over the range:

  • objectui's .objectstack-sha: 06cab4849a8a at both ends.
  • pnpm-lock.yaml, the root package.json, pnpm-workspace.yaml and apps/console/vite.config.ts: no diff.
  • packages/sdui-parser/src: 0 diff lines, so the lockstep blobs stay as they are and no parser port is owed.
  • packages/types/src: only two test files change.

The procedure, as written

No shared objectui checkout was written to. /home/user/objectui is shallow and shared, so every objectui read came from a full scratch clone that OBJECTUI_ROOT names, and build-console.sh's build worktree registration landed in that clone. Exit codes were captured before any pipe, and the heavy steps ran under scripts/pm/os-verify-lock.sh.

step command and reading exit
bump OBJECTUI_ROOT=SCRATCH_CLONE bash scripts/bump-objectui.sh 56cf4d8e89b71586e4d9bb9921433d44b03addf3 --no-commit: "cf153eb2e535..56cf4d8e89b7 walks completely", "16 releasing changeset(s), 0 breaking (0 declared major, 0 annotated), 2 release-nothing, 1 commit(s) without a changeset — objectui declared minor, recorded as patch", "objectui pin: cf153eb2e535 → 56cf4d8e89b7 (on origin/main)", "wrote changeset console-56cf4d8e89b7.md (@objectstack/console: patch)". --no-commit is used only so the commit carries this repo's trailer pair; the files are the script's own 0
build The seven @objectstack/* packages objectui installs by commit (client, core, formula, lint, sdui-parser, spec, types), with their closure: turbo run build ... --concurrency=2, 37 packages. Then OBJECTUI_ROOT=SCRATCH_CLONE OBJECTUI_DEPS_BUILD_CMD='pnpm exec turbo run build --filter=@object-ui/console^... --concurrency=2' bash scripts/build-console.sh (= pnpm objectui:build). Lock VERDICT command-exit 0, held 689 s 0
manifest node scripts/gen-sdui-manifest-node.mjs: "wrote sdui.manifest.json (107 components, 185019 bytes, sha256 d1fde278ffd6…)", "re-recorded scripts/sdui-manifest.record.json at pin 56cf4d8e89b7 — built-tree .cache/objectui-56cf4d8e89b7/apps/console, @object-ui/core workspace version 18.0.0" 0
manifest check node scripts/check-sdui-manifest.mjs: "present, intact (sha256 d1fde278ffd6…, 107 components) and recorded at the live objectui pin 56cf4d8e89b7" 0
lockstep, before pnpm check:sdui-lockstep: [pin-moved] 1
lockstep record OBJECTUI_ROOT=SCRATCH_CHECKOUT_AT_PIN pnpm gen:sdui-lockstep (a second full scratch clone, checked out detached at 56cf4d8e89b7): "recorded objectui@56cf4d8e89b7 (2026-10-22T00:44:27+00:00) — 214 region line(s), blob 0131f27cf86d, 25 diagnostic code(s), containment predicate 76c18fb95d1f" 0
lockstep, after pnpm check:sdui-lockstep: "byte-identical to objectui@56cf4d8e89b7 ... over 214 grammar line(s) [blob 0131f27cf86d], agrees on all 25 diagnostic code(s) and on the not-a-container predicate [blob 76c18fb95d1f], across 7 non-test source(s)" 0
bump self-test pnpm check:objectui-bump: "bump-objectui self-test PASSED — 20 assertions across 5 cases" 0

The console build's closing checks, at aabbc29a3, the bump commit. The later commits add the manifest record, the lockstep record and the merge of main 2aaee3b24. That merge brings #25145 and #25147, which touch packages/runtime, service-automation, plugin-auth, plugin-email and verify, none of them one of the seven packages the console bundle packs (git diff --name-only over those seven: empty).

  • "Bundle canary 'import/jobs' present".
  • "Single-zod canary: exactly one zod version literal {major:4,minor:6,patch:7}", over 2261 assets/*.js files.
  • "Console bundle carries THIS tree's @objectstack/spec, and only it". All 26 injected-only descriptions are present, and all 5 pin-only descriptions are absent.
  • "@objectstack/console dist ready (65708 KB) from objectui@56cf4d8e89b7".
  • pnpm check:console-sha: "Console dist matches the objectui pin (objectui@56cf4d8e89b7)".

The Console Pin Gate does not run on a PR or in the merge queue (ci.yml's console-pin job excludes pull_request and merge_group). So this local build is the pre-merge reading. main's first full-battery run after the merge rebuilds the console fresh at 56cf4d8e89b7, because this PR changes .objectui-sha and so misses the console-dist cache key.

The regenerated files

  • .objectui-sha: cf153eb2e535… → 56cf4d8e89b71586e4d9bb9921433d44b03addf3 (bump-objectui.sh).
  • .changeset/console-56cf4d8e89b7.md (bump-objectui.sh, untouched): @objectstack/console patch. Counts: 16 releasing of 18 changesets over 19 non-merge commits, 0 breaking, 2 release-nothing, and 1 commit without a changeset, which the changeset lists by subject. There is no breaking entry, so the generator wrote no ADR-0087 placeholder and no line of the changeset is hand-written.
  • scripts/sdui-manifest.record.json (gen-sdui-manifest-node.mjs): objectuiSha, modulesRoot, objectuiWorkspaceVersion (17.7.0 → 18.0.0) and generatedAt move.
  • packages/sdui-parser/objectui-lockstep.json (gen:sdui-lockstep): only rev, revDate and recordedAgainstPin move. Both blobs (0131f27cf86d, 76c18fb95d1f) and the 25 codes are unchanged. The file is not in @objectstack/sdui-parser's files, so it publishes nothing.
  • sdui.manifest.json is not in the diff: the generator rewrote it byte-identical.

Gates

Every gate below ran at this PR's head c331b2c9e, after the merge of origin/main 2aaee3b24 and a fresh install. A workspace build came first, with packages/runtime/.objectstack removed: turbo run build --filter='!@objectstack/docs' --concurrency=2, 76/76 tasks (22 cached), lock VERDICT command-exit 0. Each exit code was captured before any pipe.

  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, with no paths, derived 73 commands from 4 paths against merge base 2aaee3b24 (three-dot). All 73 exited 0.
  • --ran over the COMMAND :: exit N record: "Run reconciliation — 73 derived, 73 run, 0 NOT-MEASURED, 0 UNRUN", then "73 derived famil(ies) accounted for". Exit 0.
  • Some of the 73, each exit 0:
    • check-sdui-manifest.mjs: "present, intact (sha256 d1fde278ffd6…, 107 components) and recorded at the live objectui pin 56cf4d8e89b7"; its --self-test too.
    • pnpm check:sdui-lockstep: "byte-identical to objectui@56cf4d8e89b7".
    • check-adr-0087-registration --base origin/main: "this PR adds no declared-breaking changeset (1 non-breaking changeset(s) seen)".
    • check-empty-changeset --base origin/main: "1 declaring changeset(s) added".
    • pnpm check:dts-closure: "76 built package(s) swept - 179/179 declared declaration file(s) present".
    • pnpm check:published-files, pnpm check:objectui-changeset and pnpm check:merge-driver.
    • pnpm check:nul-bytes: "scanned 11736 text file(s) ... no raw ASCII control bytes".
  • pnpm check:console-sha and pnpm check:console-injection exit 0 at this head, but only by skipping: there is no packages/console/dist in this worktree. Their real readings were taken at 7ab800f7d, with the dist built at the pin, and are quoted in the procedure section above.
  • Added outside the derivation: pnpm check:objectui-bump, exit 0.
  • @objectstack/sdui-parser (its directory holds the lockstep record): test gave "Test Files 14 passed (14)", "Tests 225 passed (225)", and typecheck (tsc --noEmit) exited 0, both under the lock. No package source changed, so nothing else is owed locally. test:repo is CI's (Test Core).

Acceptance notes


Generated by Claude Code

fix(plugin-grid,app-shell): a CSV file reaches the import door as CSV text (#13316)

objectui@56cf4d8e89b71586e4d9bb9921433d44b03addf3

Claude-Session: https://claude.ai/code/session_01AFrKwndmrCLtF5V9hNtrw3
Co-authored-by: Claude <noreply@anthropic.com>
node scripts/gen-sdui-manifest-node.mjs over the built tree
.cache/objectui-56cf4d8e89b7/apps/console: 107 components, sha256
d1fde278ffd6 (sdui.manifest.json byte-identical, so only the record moves).

Claude-Session: https://claude.ai/code/session_01AFrKwndmrCLtF5V9hNtrw3
Co-authored-by: Claude <noreply@anthropic.com>
pnpm gen:sdui-lockstep against a checkout of objectui at the pin: only
rev, revDate and recordedAgainstPin move. The grammar region blob
(0131f27cf86d), the 25 diagnostic codes and the containment predicate
blob (76c18fb95d1f) are unchanged; objectui's packages/sdui-parser/src
has no diff over cf153eb2e535..56cf4d8e89b7.

Claude-Session: https://claude.ai/code/session_01AFrKwndmrCLtF5V9hNtrw3
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling labels Oct 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

⚠️ 1 changed file(s) yielded no anchor (packages/sdui-parser/objectui-lockstep.json), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files. Nothing else in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)).

What this run could not see
  • 1 changed file(s) yielded no anchor (packages/sdui-parser/objectui-lockstep.json) — pages documenting those are invisible to this run
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.
  • a key NAME is not a key, so the hand re-read the line above prescribes can land on the wrong schema. The same spelling is authorable on one governed type and a [REMOVED] tombstone on another for each of active, aria, joins, objects, template, tools and version (censused on [finding] tools is a key on BOTH AgentSchema (tombstoned, dead) and SkillSchema (live, cloud-attested), so a name-based search attributes skill examples to the agent key — it produced a false stop-the-line alarm on PR #19059 #19093 over the liveness ledger's governed types, top-level keys); nothing in a search result distinguishes the two, so a grep hit on a LIVE example reads as evidence about the DEAD key. Measured on fix(spec): the agent.tools liveness row says dead — it claimed live on a key the schema tombstoned #19059: content/docs/ai/agents.mdx was reported as contradicting the agent.tools tombstone over its tools: example at :161, which is inside the defineSkill({ block opened at :155 — the page was already correct. Settle ownership by PARSING the value against both schemas, never by the name: that literal PASSES SkillSchema, and as an AgentSchema it FAILS at tools with the tombstone prescription. ⛔ These names are not the whole class — a key retired through a .strict() guidance map leaves no tombstone in the walked shape and none of them here (tool.category, live as AIToolDefinition.category).

Coarse fallback — 3 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 23540582f4f7a783ee11337bbda12a8352a70f91 → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT (landing on green)

domain:cli seat 2 (#22648) · os-bill · session session_01AFrKwndmrCLtF5V9hNtrw3 · 2026-10-22T02:17Z · head c331b2c9ef889a52533efa1d4ab5e9dc1450ec31 · claim 6330214300, amended 6330756861 → reports on #25151.

Check Reading
Shape Draft, base main. First line Fixes #25151, then Clause-②: no. 4 files, +40 / −8: .objectui-sha (cf153eb2e535 → 56cf4d8e89b7), the generated @objectstack/console changeset, scripts/sdui-manifest.record.json (pin, modules root, workspace version 17.7.0 → 18.0.0, date) and packages/sdui-parser/objectui-lockstep.json (rev, revDate, recordedAgainstPin only). sdui.manifest.json regenerated byte-identical. check-governed-merges.mjs --pr 25160: not governed, 48 lines ≤ 3000. No contract face, so this ACCEPT is the review of record at the seat's tier.
The pin objectui 56cf4d8e89b71586e4d9bb9921433d44b03addf3, objectstack-ai/objectui#13316's merge commit and objectui main's tip, judged on its push CI (run 39702726461, 31/31 success) and merge-group CI (all success), per the seat ruling in 6330756861. The scheduled-run red on SettingsView.leaveGuard-13163.test.tsx is outside the range, green on the same commit's push run and in 5/5 local reruns; it is filed for objectui as objectstack-ai/objectui#13317.
The carried range 19 commits, each listed in the PR body; the flagged four read: 56cf4d8e8 is the import-door half of #25078 by design; 7e9708e63 changes the SDUI registry's namespaces with the manifest byte-identical; a91f6bbb1 navigates to sys_approval_request_detail, a page this repo serves; 3aa2f5261 is objectui's 18.0.0 release (the record's workspace version).
Evidence The console built at the pin (lock VERDICT exit 0; single-zod and spec-injection canaries pass; check:console-sha matches the pin); check:sdui-lockstep and check-sdui-manifest.mjs exit 0; @objectstack/sdui-parser 14 files / 225 tests; 73/73 derived families exit 0, --ran reconciled; the workspace build 76/76.
Landing Not governed ⇒ pr_ready + automerge_enable through the relay once every check on this head is success or a by-design skip. Then #25078's PR #25130 merges main over it and owes a new review of record.

Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

console: move the objectui pin cf153eb2e535 → at or after objectui PR #13316's merge commit (objectui#13315), so PR #25130 (#25078) can land

2 participants