Skip to content

chore(objectui): move the console pin to 1fb1ced36243 (objectui main tip, Half 1 of #23104) - #23110

Merged
objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/issue-23104-objectui-pin-1fb1ced
Oct 13, 2026
Merged

objectstack-fleet[bot] merged 5 commits into
mainfrom
claude/issue-23104-objectui-pin-1fb1ced

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #23104
Clause-②: no

The console pin hop 7578323a544e → 1fb1ced36243 (objectui main, 1fb1ced36243c325acc801bdde26bd096a15f5f5, exactly that commit, re-read as objectui's main tip by git ls-remote when the work started). This PR is Half 1 of #23104 only, the pin hop. The card stays open for Half 2, the full browser pass of every runnable surface:browser and surface:mixed checklist item, which the PM seat runs against this PR's head; merging this PR must not close the card.

The maintainer's order, verbatim:

objectui pin 更新到最新版,并使用浏览器对前端界面进行完整的测试

Tier: no governed surface (GOVERNED_SURFACES in scripts/pm/check-governed-merges.mjs). 21 files, +267/−56, the same shape as #23061.

The hop: 11 objectui commits, 116 paths, all on objectui main

10aba37d1 (objectui#12242: field metadata members FieldSchema refuses retire as never), 0cd322d78 (objectui#12228), 1ce8db8d9 (objectui#12222, CI), ee5c49171 (objectui#12238), e5c8ea7fe (objectui#12243), 51c661e38 (objectui#12248), e8fc452c3 (objectui#12254), 30c2e4e1d (objectui#12244), 5dcb101 (objectui#12249, test), 7af0ab378 (objectui#12268) and 1fb1ced36 (objectui#12208 / objectui#12256, CI). git merge-base --is-ancestor 7578323a544e 1fb1ced36243 exits 0 and git rev-list --count reads 11 in the sibling checkout, which is shallow; the range walked completely without a deepen (the bump script's own --check-walkable probe said so, and the checkout is still shallow after the run).

The pin round, as #23061's

Console Pin Gate steps, run locally (each exited 0):

  1. Client build: turbo run build --filter=@objectstack/client... (34 tasks).
  2. scripts/build-console.sh at the pin: bundle canary present, exactly one zod version literal, "Console bundle carries THIS tree's @objectstack/spec, and only it", and "Shipped the tracked sdui.manifest.json (recorded at objectui@1fb1ced36243, this pin)". The build was run twice; the second run, after the manifest regeneration below, is the one on disk.
  3. check:console-sha: "Console dist matches the objectui pin (objectui@1fb1ced36243)".
  4. check:console-injection --require-stamp: "the dist carries this tree's copy, and not the published one".

The hop does not break the Console Pin Gate build against current main.

Artefacts that travel with the pin:

  • Console changeset. scripts/bump-objectui.sh 1fb1ced36243… --no-commit generated .changeset/console-1fb1ced36243.md: @objectstack/console minor (the level the script derived). It has 10 releasing entries, 1 release-nothing and 2 commits with no changeset (listed by subject). Clause-②: no was added by hand, as in chore(objectui): move the console pin to 7578323a544e (objectui#12200) (#15204 C9) #23061.
    • Two entries are breaking by their authors' annotation, and the digest marked only one. objectui#12254 (e8fc452c3) annotates with a BREAKING (…) paragraph, which the digest recognised. objectui#12242's @object-ui/types changeset (10aba37d1) annotates with a heading that opens with a warning sign before the word, ## ⚠️ BREAKING, priced as minor …, and the digest's block-opener rule does not allow that prefix: hasBreakingAnnotation answers false on the shipped body and true with only the warning sign removed. That entry is marked BREAKING by hand in this changeset, and the count line reads 2. The digest itself is not changed here (see Acceptance notes).
    • The script wrote an adr-0087: TODO placeholder. It is answered not-required (no-migration-prescription), the disposition every earlier pin hop with annotated breaking entries used. Each entry is answered against this tree:
      • objectui#12254 draws a dashboard widget's legacy component envelope only for a metric-card node. @objectstack/spec already refuses component and inline data on a widget (QUARANTINED_WIDGET_KEYS) and declares no custom widget; the six dashboard files under examples/ author no component key.
      • objectui#12242 turns nine field metadata members into never tombstones and changes the auto_number / object type values. No package or example here depends on @object-ui/types (two code comments name it), no example field authors any of those members, and none declares type: 'auto_number' or type: 'object'.
    • check-adr-0087-registration --base origin/main reads the disposition; check:objectui-changeset passes.
  • SDUI manifest. node scripts/gen-sdui-manifest-node.mjs: 107 components, and unlike chore(objectui): move the console pin to 7578323a544e (objectui#12200) (#15204 C9) #23061 sdui.manifest.json is not byte-identical across this hop. One value moved: record:activity's showCompleted input description gains the sentence "A logged interaction, a task item that points at its source record through source_object / source_id (a logged call, meeting or email), also shows either way." (objectui#12228). Nothing in this repo pins that text. scripts/sdui-manifest.record.json is re-recorded at the pin (sha256 f545b851c4bb…); check-sdui-manifest passes.
  • Lockstep record. pnpm gen:sdui-lockstep re-records packages/sdui-parser/objectui-lockstep.json at 1fb1ced36243. objectui's packages/sdui-parser is byte-identical across this hop (git diff --quiet exits 0); check:sdui-lockstep passes (214 grammar lines, 25 codes, the predicate). No parser port is owed.
  • Pin citations, re-measured for this hop only:
    • Every objectui file named in every asserting record was resolved against the objectui trees at both pins and checked against the hop's 116 changed paths, one file at a time. Bare index.tsx names were resolved by context: every one names a plugin-kanban, plugin-dashboard, plugin-map, plugin-gantt, plugin-timeline, plugin-tree or plugin-grid shell, none of which changed (the one changed index.tsx, plugin-detail's, is cited by no asserting record).
    • One set of cited files changed, and every cited line in it held: the en / zh / de packs (objectui#12248 and objectui#12268) gained keys below line 1100 only (en +9, zh +6, de +6), so calendar.configRequired held at en.ts :953, zh.ts :726 and de.ts :706. The functional-completeness calendar row says so.
    • Every other record (40 by script, plus the action-group params record and the FormField.span describe) cites only byte-identical files, and each gains a hop sentence. The object-grid keyboardNavigation record's count (15 hit lines against 3 for the control) holds because no line of the hop's diff names keyboardNavigation.
    • The six migration entries were recounted with git grep -o -F, which reproduces every 7578323a544e figure (all 14 controls). The corpus is 8642 files, and a superset of 99 names (the 13 lifecycle, 31 metrics and 37 tracing exports, plus 18 key names) reads 0, except the unrelated Span 519 and SpanSchema 57, unchanged. Controls moved, e.g. objectstack 18552 → 18601, @objectstack/spec 7649 → 7679, timeout 1686 → 1700, tenant 1404 → 1415.
    • check:objectui-pin-citations --verify-anchors: 55 asserting citations match 1fb1ced36, and 13 quoted anchors verify against objectui at 1fb1ced36. content/docs/references/ui/view.mdx was regenerated by gen:docs (the describe's pin stamp, two rows); check:generated reports all 14 artefacts up to date.
    • Changeset .changeset/objectui-pin-citations-1fb1ced36243.md: @objectstack/spec patch, Clause-②: no.

Smoke boot, against this branch's built console

pnpm dev -- --fresh -p 39417 from this worktree (check-dev-prereqs green, 67 packages): GET /api/v1/health answered 200 (status: ok, version 17.7.0) about 10 s after launch; GET /_console/ answered 200 (18552 bytes) and its entry script ./assets/index-D6vu2w50.js 200; the served build stamp GET /_console/.objectui-sha reads 1fb1ced36243c325acc801bdde26bd096a15f5f5, equal to the new pin; and the served /_console/sdui.manifest.json hashes to f545b851c4bb…, the recorded sha256. The server was stopped by the two PIDs this run recorded, and the port was free afterwards. No browser pass was run here: that is Half 2.

Verification (local, at 043b81d13, after merging origin/main at 36b2889cd)

  • @objectstack/spec build, then pnpm --filter @objectstack/spec test: 659 files, 19978 passed, 1 todo; pnpm --filter @objectstack/spec typecheck exit 0.
  • node scripts/pm/dispatch-gates.mjs --commands derived 125 commands on this diff; each was run and recorded with its exit code, and --ran reports "125 derived, 125 run, 0 NOT-MEASURED, 0 UNRUN". One self-test, check-plugin-teardown-shape --self-test, first exited 3 (prerequisite not met: its fixture is pinned to commit 621a48760788, outside this shallow checkout). That commit was fetched (git fetch --depth=1) and the self-test re-run green (48 cases); the record carries the re-run.

Acceptance notes

  • scripts/objectui-changeset-digest.mjs misses an author's breaking annotation whose heading opens with a warning sign. BREAKING_BLOCK_OPENER allows a heading mark, a bullet and emphasis before the word, but no other prefix, so ## ⚠️ BREAKING, … (objectui#12242's @object-ui/types changeset at objectui 1fb1ced36243) is not counted and its console-changeset entry is not marked. The ADR-0087 disposition prompt still fired here only because a second entry in the same range was recognised; a range whose only breaking entry used this heading would get no disposition prompt and would publish without a BREAKING marker. Reported to the PM seat for filing; not fixed in this PR.

Generated by Claude Code

…sole changeset)

objectui@1fb1ced36243c325acc801bdde26bd096a15f5f5, 11 commits past 7578323a544e,
written by scripts/bump-objectui.sh --no-commit. The ADR-0087 disposition answers both
declared-breaking entries; the second (objectui#12242) is marked by hand because the
digest's block-opener rule misses a heading that opens with a warning sign.

Claude-Session: https://claude.ai/code/session_016JB93R2KcQP4GgKaUnseVF
Co-authored-by: Claude <noreply@anthropic.com>
Forty records cite only objectui files byte-identical across 7578323a5..1fb1ced36
and gain the hop sentence; the calendar row names the en/zh/de packs, which changed
below line 1100 only, with calendar.configRequired held at :953 / :726 / :706. The
six migration entries' corpus counts are re-taken with git grep -o -F at the new pin.

Claude-Session: https://claude.ai/code/session_016JB93R2KcQP4GgKaUnseVF
Co-authored-by: Claude <noreply@anthropic.com>
…1fb1ced36243 (WIP)

gen-sdui-manifest-node.mjs over the built tree: 107 components, one input
description changed (record:activity showCompleted, objectui#12228). The lockstep
re-records at the pin; objectui's packages/sdui-parser is byte-identical across the hop.

Claude-Session: https://claude.ai/code/session_016JB93R2KcQP4GgKaUnseVF
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 2 package(s): @objectstack/sdui-parser, @objectstack/spec, touching 14 documentable anchor(s). ⚠️ 2 changed file(s) yielded no anchor (packages/sdui-parser/objectui-lockstep.json, packages/spec/src/kernel/functional-completeness.ts), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files.

2 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:

  • content/docs/data-modeling/analytics.mdx (via DatasetMeasureSchema (symbol, a top-level const))
  • content/docs/protocol/objectui/layout-dsl.mdx (via ComponentPropsMap (symbol, a top-level const object))

⛔ 6 release-owned page(s) also name something this change touched. These are read-only:

  • content/docs/releases/v15.mdx (via PageTabsProps (symbol, a top-level const object))
  • content/docs/releases/v17/17-1.mdx (via ComponentPropsMap (symbol, a top-level const object))
  • content/docs/releases/v17/17-3.mdx (via ComponentPropsMap (symbol, a top-level const object))
  • content/docs/releases/v17/17-4.mdx (via ComponentPropsMap (symbol, a top-level const object))
  • content/docs/releases/v17/17-5.mdx (via ComponentPropsMap (symbol, a top-level const object))
  • content/docs/releases/v17/17-7.mdx (via ComponentPropsMap (symbol, a top-level const object))

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

What this run could not see
  • 2 changed file(s) yielded no anchor (packages/sdui-parser/objectui-lockstep.json, packages/spec/src/kernel/functional-completeness.ts) — pages documenting those are invisible to this run
  • 1 name(s) were too generic to anchor anything (single lowercase words)
  • the SDK route bridge reached 54 of 206 client-bound route-ledger rows — the other 152 have no registrar path: tail to select them, so pages documenting THEIR client methods cannot appear above, on this or any run. Of those 152: 0 are remediable by widening that discovery convention (an in-repo file declares the path; the convention did not scan it); 55 are structural — on a ledger where NOT ONE row is declared in-repo, so no discovery change reaches them at any price; 97 are undecided (no in-repo declaration, on a ledger that has other in-repo registrars — absence and an unreadable spelling are not distinguishable here). The rows themselves: node scripts/docs-audit/affected-docs.mjs --bridge-coverage
  • 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 — 140 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 4a87d0908ccba61193270b495efb7c557cc59f56 → packageMentionDocs.

Which tree this was computed on

This run read content/docs from 294dc81526da410e05bd4e9ecfea4f4804b726ea — the merge of head 043b81d1330fe4c66f4f1c0526bf999a2e1247eb into base 4a87d0908ccba61193270b495efb7c557cc59f56, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 294dc81526da410e05bd4e9ecfea4f4804b726ea && git checkout 294dc81526da410e05bd4e9ecfea4f4804b726ea
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 4a87d0908ccba61193270b495efb7c557cc59f56 043b81d1330fe4c66f4f1c0526bf999a2e1247eb && git checkout -B drift-repro 4a87d0908ccba61193270b495efb7c557cc59f56 && git merge --no-ff 043b81d1330fe4c66f4f1c0526bf999a2e1247eb

node scripts/docs-audit/affected-docs.mjs --json 4a87d0908ccba61193270b495efb7c557cc59f56

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

Advisory only, and a precision-first one (#9192): a page is listed because it names a
symbol, wire route or SDK method this diff touched — not because it mentions a changed
package. Each row says which anchor put it there, so a wrong row is reportable rather than
merely annoying. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs 4a87d0908ccba61193270b495efb7c557cc59f56 → pass the list as
args.docs, on the commit named under Which tree this was computed on.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 043b81d1330fe4c66f4f1c0526bf999a2e1247eb
Local-runs: none

PR #23110, Half 1 of #23104 (the console pin hop 7578323a544e → 1fb1ced36243), rendered 2026-10-13T01:00Z from the card body and its three comments (claim 6133691607, os-dev-report 6134727906, seat ACCEPT 6134777078), the PR body, its 21-file list, the net diff against main, and the 41 check-runs on this head. Nothing was built, run or re-run.

① Derived judgments

  1. .objectui-sha 7578323a544e31d574804ae931b595e8f9f92c21 → 1fb1ced36243c325acc801bdde26bd096a15f5f5 — the exact sha the card named at filing, stated in full in the PR body as objectui main's tip re-read by git ls-remote when the work started. Right. The card's acceptance clause "the PR states the exact objectui sha it pins" is met.
  2. packages/spec/src/** (14 files, +178/−49) publishes no accept-set change. Every changed line sits inside a /* … */ or // comment, or inside a string literal: the six migration entries' description strings (pin sha, corpus 8600 → 8642, the lit controls appended) and the FormField.span .describe() in view.zod.ts (the pin sha only; the sentence is otherwise byte-identical). No key, default, enum member, refinement, tombstone or export moves. functional-completeness.ts +21/−3 is docblock only. Right.
  3. content/docs/references/ui/view.mdx — two generated table rows re-rendered from that describe, the same text with the pin moved. Right (Build Docs, Check Documentation Links success on this head).
  4. sdui.manifest.json — one value: the record:activity input showCompleted's description gains one sentence (objectui#12228). 107 components, no component, input, type or default added or removed, so the served catalog is unchanged in shape and no public surface expands. scripts/sdui-manifest.record.json re-recorded at the pin (objectuiSha, modulesRoot, sha256 f545b851c4bb…). check-sdui-manifest (with --self-test) ran inside Lint · repo & tooling gates: success. Right.
  5. packages/sdui-parser/objectui-lockstep.json — rev, revDate and recordedAgainstPin move; the file list and grammar region do not, which is the shape of a hop across which objectui's packages/sdui-parser is byte-identical. check:sdui-lockstep in the same job: success. No parser port owed. Right.
  6. Console changeset .changeset/console-1fb1ced36243.md — 10 releasing entries of 11 changesets over 11 non-merge commits, 2 commits with no changeset listed by subject; the commit set matches the card's own reading of the hop (objectui#12242, [finding] The README leads with "business ontology"; content/docs/** contains the word zero times #12228, docs content: meta descriptions too thin to serve as snippets — median 46 chars, 228 of 403 under 70 #12238, epic(docs-site): the site is technically un-indexable — fix robots/sitemap/canonical/OG first, then the keyword shape #12243, IDataEngine contract adoption ruled by #11833: declare resolveEffectiveDatasource + getDriverForObject (optional members), and give getObject a real return contract #12248, [finding] check:objectui-changeset is red on every macOS seat — R7a's bash-3.2 simulation control cannot pass on a host that IS bash 3.2 #12254, Declare the metadata item-name grammar in spec and refuse it loudly at the publish door (#12176 stage 1) #12244, docs content: the 38 generated reference pages still render two <h1> — the heading comes from a spec JSDoc header via build-docs.ts #12249, pm-dispatch protocol: a contract-review PASS must complete the landing in the same stroke — close the clear→land seam #12268, CI bump-objectui.sh's bash-3.2 note states the wrong mechanism for the trailing-&& trap — measured, and the wrong reason invites the next author to dismiss the whole warning #12222 and feat(spec): declare editMode?: 'modal' | 'page' on the object document #12208/feat(spec): retire object-grid's legacy defaultSort fallback (#11805, ADR-0049) #12256). Two entries marked BREAKING by their authors' annotation, the count line reading 2, the objectui#12242 @object-ui/types entry hand-marked after the digest's block-opener rule missed a heading opening with a warning sign (the PR body and the changeset's adr-0087 marker block both say so). Right: the mark follows the upstream annotation, and the hand edit is declared where the gate reads it.
  7. ADR-0087 disposition not-required (no-migration-prescription) — right for this diff, on the repo's own refusals: QUARANTINED_WIDGET_KEYS is ['component', 'data'] (packages/spec/src/ui/dashboard.zod.ts:188), so the legacy widget envelope objectui#12254 narrows is already refused to every ObjectStack author; the nine members objectui#12242 turns into never (visible_on, currency-as-metadata, filterable, min_date, max_date, default_zoom, starting_number, schema, normalize) occur nowhere in packages/spec/src and FieldSchema is a strict object, so none is writable here; the spec's field-type vocabulary spells autonumber, never auto_number. Nothing authorable in this repo moves, so no FROM → TO prescription is owed in this changeset. Check Changeset (runs check-adr-0087-registration --base MERGE_BASE) success; check:objectui-changeset and check:objectui-bump inside Lint · docs & code guards success.
  8. No (narrowing) arm owed — neither declared-breaking upstream entry narrows an accept set a released package of this repo publishes (item 7); the console's accept set is @objectstack/spec's, which this diff leaves untouched (item 2). Right.
  9. Pin citations re-measured for this hop only — every asserting record gains a hop sentence; the calendar row of functional-completeness.ts records the one cited file set that changed (the en/zh/de packs, objectui#12248 and pm-dispatch protocol: a contract-review PASS must complete the landing in the same stroke — close the clear→land seam #12268, keys added below line 1100) with calendar.configRequired held at :953 / :726 / :706; every other record cites byte-identical files. check:objectui-pin-citations ran inside Type Check · source gates: success (the --verify-anchors pass is the dev's local reading, 13 anchors). Right as far as the diff and the gate show.
  10. Changeset .changeset/objectui-pin-citations-1fb1ced36243.md — @objectstack/spec patch, states "No key, default, enum member or export moves", which item 2 confirms against the diff. Right.

② Semver level

  • @objectstack/console: minor — right. The highest entry level in the range is minor; objectui prices its declared-breaking entries minor inside a launch window (check-changeset-no-major.mjs), and AGENTS.md's declaration rule admits no beside minor (only yes forces a floor, only (narrowing) names a break). Precedent chore(objectui): move the console pin to 7578323a544e (objectui#12200) (#15204 C9) #23061 is the same shape.
  • @objectstack/spec: patch — right. A .describe() string and six description strings change what ships in the schema's JSON-schema and reference text, and nothing else; a published change takes patch, never none.
  • No skip-changeset — right; both packages publish.
  • The PR body's Clause-②: no line (line 2, line-initial; repeated in both changesets and the claim) — right. No accept set widens and no public surface of a released package of this repo expands: the spec diff is prose and string text (①.2), the manifest keeps 107 components and every input (①.4), the console dist is the same catalog at a newer pin. No arm is owed (①.8).

③ Boundary flags

  • open_questions: [] — none declared; nothing to answer.
  • Out-of-scope finding (digest misses a BREAKING heading that opens with a warning sign; hasBreakingAnnotation / BREAKING_BLOCK_OPENER in scripts/objectui-changeset-digest.mjs) — correctly kept out of this PR (the digest is not in the card's file surface) and declared in the PR body's Acceptance notes. The seat's ACCEPT comment (6134777078) records it filed as objectui-changeset-digest misses a BREAKING annotation whose heading opens with a warning sign, so the console changeset under-counts breaking entries and can skip the ADR-0087 disposition #23112; this record does not re-verify that card, which sits outside its inputs. Escalated as answered-by-filing.
  • Deviation 1, base moved (worktree off 55828c514, origin/main 36b2889cd merged before the final gate run) — the check-runs on this head are the verdict against the merge base GitHub computed (PR base now 4a87d0908); all 36 that ran are success. Answered.
  • Deviation 2, console changeset hand-edited (second BREAKING mark, count 2) — matches the upstream annotation (①.6, ①.7); the gates that read the changeset are green on this head. Answered.
  • Deviations 3–5 and 8 (two build-console.sh runs, an additive git fetch --depth=1 of 621a48760788 for one self-test fixture, smoke prerequisites built, worktree cleanup) — local-only acts with no trace in the diff; the tracked manifest and record agree per check-sdui-manifest. Answered.
  • Deviation 6, attribution trailer form — AGENTS.md's own form; not a contract matter. Answered.
  • Deviation 7, where Half 2 runs — resolved by the seat's ACCEPT comment: a separate detached tree at objectstack 36b2889c with .objectui-sha set to 1fb1ced36243 and a manifest byte-identical to this PR's. Answered.
  • Check-runs on this head: 41, of which 36 success, 5 skipped, 0 failure. The skips are not this PR's: Console Pin Gate, Dogfood Verify CLI, Temporal Conformance (live PG + MySQL) and the Dogfood Regression Gate shards carry the full battery only since skills(ci): two-speed CI — fast set on PR and merge-queue runs, full battery hourly on main and before a release, main-red stops the lane, four required contexts plus the guard, timing gates report-only, test budgets not deletions #22998 (their if: in ci.yml denies pull_request and merge_group; the Dogfood Regression Gate aggregate counts zero attestations and concludes success by design), and Packed-tarball smoke is opt-in. Consequence, escalated to the seat: check:console-sha and check:console-injection --require-stamp run only inside Console Pin Gate, so they have no CI verdict on this head although the card's acceptance line names check:console-sha. The only reading is the dev's local Console Pin Gate run at 043b81d13 (client build, build-console.sh, check:console-sha, check:console-injection --require-stamp, each exit 0, reported in comment 6134727906). The CI reading arrives with the first full-battery run on main after landing; a red there is a main-red for the console lane and a regression of this hop. The seat should read that run and the card should treat it, not the PR path, as the check:console-sha acceptance.
  • Landing hold — this verdict judges the diff. The card holds landing until both Half 2 qa-run records report no regression inside the hop's objectui commits, and the PR is still a draft; nothing in this record releases either. Part-of PR must not also close its card success: merging cannot close chore(objectui): move the console pin to objectui main (1fb1ced36243 at filing), then run every surface:browser and surface:mixed checklist item against the console built from the new pin #23104, as the card requires.

Implemented-by: claude/issue-23104-objectui-pin-1fb1ced
Reviewed-by: session_016JB93R2KcQP4GgKaUnseVF

VERDICT: PASS


Generated by Claude Code

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants