Skip to content

docs(ui-merge): fold objectui.org into objectstack docs, K4 — retire the site, host 301s, links - #27329

Merged
os-zhuang merged 15 commits into
mainfrom
claude/project-thread-eq5jj6
Oct 29, 2026
Merged

os-zhuang merged 15 commits into
mainfrom
claude/project-thread-eq5jj6

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

domain:devx#1 · os-tesla · session_01L9qibyMpJZ67jrDrno4jY1

Requested by Tesla · project thread

Fixes #27145
Part of #26993

Clause-②: no
Metadata-protocol: none

维护者速读

What changes

Redirects. apps/docs/redirects.mjs gains objectuiRedirects: one row per published path of the old site (the 183 pages under its content/docs at the fold, by URL, taken from the final K1 #27168, K2 #27170 and K3 #27179 mapping tables), plus a final catch-all to /docs/frontend for the home page, playground, llms.txt and OG images. The rows are host-scoped (has: [{ type: 'host', value: '(?:www\.)?objectui\.org' }]) and permanent, so they cannot shadow a URL of this site and stay inert until the domains move (#27030). scripts/check-docs-redirects.mjs now judges them on the host the destination is served from: every destination is a real page and none is a docsRedirects source. No row targets the retired /docs/ui/{console,studio,setup-app} pages.

Deletions. ui/apps/site (43 files), ui/content/docs (201 files), the deploy-ui-site job in docs-deploy.yml and its CI wiring, the site-only gates check-doc-example-ids and check-docs-route-eager-closure with their tests, the three site-* script tests, and ui/e2e/docs-smoke.spec.ts / ui/e2e/cascading-options.spec.ts, which drove the site. rfcs/0001-clipboard-paste.md moves to ui/docs/rfcs/ and guide/console-architecture.md to ui/docs/design/. The lockfile drops the site importer.

Links. The homepage field of 37 package.json files under ui/, the homepage in ui/apps/console/plugin.ts, the README and skill links that pointed at objectui.org or at ui/content/docs, CONTRIBUTING.md's UI documentation paragraph, and the root README.md. Each URL goes to the page that carries its content now (the redirect table), keeping a fragment only where the target page has that heading. The Console package's homepage is /docs/build-without-code, its plugin manifest's is /docs/frontend. The changeset covers the 35 published @object-ui/* packages whose metadata changed and @objectstack/skills.

Spelling. 33 package description fields say "ObjectUI" instead of "Object UI".

Readers re-pointed. The ui doc gates and their tests read content/docs/frontend (root = ui/, so labels read ../content/docs/frontend/…); floors were re-measured on 34 pages (76 files with the READMEs). check-doc-links now judges the 61 objectstack.ai/docs URLs against apps/docs instead of trusting them. markdown-test-inputs resolves the monorepo docs tree too, and its ledger is re-keyed. The ui CI filter also covers content/docs/ui/pages.mdx, which two Test UI pins now read.

Tests whose page is gone

K1 kept 34 pages of the 183 as files; the renderer pages became one table (frontend/renderers.mdx) with no interface fences, and several guides were dropped or moved into platform pages. A test that pinned such a page was re-pointed when its content still exists, and otherwise lost only the leg that read the page:

  • Re-pointed to the page's new home: most of them (e.g. the three guideCrudAppRenders tests, the layout and app-shell guide pins, page-body-arity-8310, readme-kanban-example-8256). Two follow content that K2 moved: objectname-binding-required-11605 reads the block table in content/docs/ui/pages.mdx, and element-data-source-objectname-waiver-11117 reads its element:number fence there.
  • Deleted whole (their only subject was a page that no longer exists): slotted-pages-header-example-11165, button-group-doc-surface-6347, component-docs-disabled-inherited-7239, component-docs-retired-handler-keys-7340, chart-type-doc-row-11521, schema-reference-named-list-view-keys-7923, public-block-doc-examples-bag-11321, calendar-doc-key-set-8830.
  • Page legs removed, declaration/mirror/renderer legs kept: overlay-node-slot-doc-types-7082, overlay-trigger-union-7081, alert-dialog-read-dialect-7104, div-guidance-names-box (three surfaces now), object-kanban-group-by-limit-7322, catalog-gallery-render and plugin-dashboard-gallery-render (the docs-site host parity cases), page-actions-refusal-7926 (one control whose example moved to /docs/ui/pages), and the named-subject list in object-calendar-record-source-7313.
  • ⚠️ filter-builder-mirror-6939: decision batch Add AI conversation memory and cost tracking protocols #88 made the published doc the authority for FilterField.type, and the doc is gone. The doc's last 14-member union is now a frozen LAST_PUBLISHED_TYPES list in the test, and the set-equality pin still holds the mirror to it in both directions. That brings back the hand-kept list objectui#8774 removed, for want of a source; the doc reader and its objectui#9073 fixtures went with the page.

Every retired leg carries a short objectstack#27145 note at its site.

Bounded fixes outside the claim

The claim (comment 6471445866) allows no edits to content/docs/** page bodies beyond link fixes. Two edits under content/docs/frontend go past that, both needed to keep the gates this PR moves onto those pages green:

  • 75 {/* doc-snippet: fragment — … */} markers restored above fences in 17 pages. They stood on the same fences in the old pages; K1 dropped them, so check:doc-snippets reported every fragment as a compile failure once it read content/docs/frontend. The marker text is the old page's, unchanged.
  • One "variant": "destructive" → "variant": "danger" in frontend/layout.mdx, the value action:button declares; the doc-types gate refused the old spelling.

No other page body changed. The seat should amend the claim if it accepts these.

Acceptance notes

git grep -n "ui/apps/site\|ui/content/docs" -- ':!**/CHANGELOG.md' prints nothing.

git grep -n "objectui.org" -- ':!**/CHANGELOG.md' prints 66 lines, all history comments, fixtures or the redirect machinery:

  • Redirect machinery: apps/docs/redirects.mjs (5), apps/docs/lib/site.ts (1), scripts/check-docs-redirects.mjs (1).
  • CORS wildcard fixtures that use the host as sample data: packages/plugins/plugin-hono-server/src/pattern-matcher.test.ts (19), hono-plugin.test.ts (3) and its README.md (3), packages/adapters/hono/src/hono.test.ts (4).
  • Host-matching fixtures: ui/packages/cli/src/__tests__/check-schema-marker.test.ts (2), check-jsonc-parse.test.ts (1); the ruling note in ui/packages/cli/src/commands/check.ts (1).
  • check-doc-links: the gate's history sections and its objectstack#27145 note (ui/scripts/check-doc-links.mjs, 10) and two test-header lines (ui/scripts/__tests__/check-doc-links.test.ts, 2).
  • History comments: .github/workflows/ci.yml (3), .github/workflows/docs-deploy.yml (2), ui/e2e/live/cascading-options.spec.ts, ui/packages/layout/src/__tests__/app-shell-docs-nav-example.test.ts, ui/scripts/__tests__/zero-test-member-exclusion-9106.test.ts, ui/scripts/check-doc-fence-languages.mjs, ui/scripts/check-doc-json-fences.mjs (1 each).
  • The changeset (2) and the root CHANGELOG.md (2, history).

Tests

  • pnpm --dir ui exec vitest run scripts/: 171 files, 4915 passed, 2 skipped.
  • The 92 package, app and example test files that read docs pages: all pass.
  • Type-checks: packages/types (tsconfig.test.json), examples/schema-catalog (tsconfig.test.json), apps/console, and the seven packages whose tests changed.

Verification

node scripts/pm/dispatch-gates.mjs --commands derives 150 commands for this diff after merging main at 38bbc2f (re-merged at 7674028: clean, the ledger audit and the new tests it brought pass). All 150 ran locally:

  • 143 exited 0 on the first pass.
  • Fixed and re-run green: check-skills-token-ratchet (two skill links paid by deleting text in the same file), vitest run scripts/ (the expression-carriage fence floor after the merge; check-vi-mock-inherit had timed out under the sweep's load and passes alone), check-plugin-teardown-shape --self-test (needed the pinned sha fetched).
  • pnpm --filter @objectstack/spec run check:docs and check:skill-examples refused at first for want of a built @objectstack/spec; after pnpm --filter @objectstack/spec build both exit 0 (232 generated files in sync; 270 prose examples type-check).
  • Not measured locally, prerequisite only: check:dts-closure and check:dual-build-cjs-loads read every package's dist, which this checkout has not built. This diff changes no build inputs; CI runs both.

Known red on main too: the census non-firing control (layout page.tsx:462) fails on origin/main as well, so it is not this PR's.

Tier H, over 3000 changed lines: draft until green, Tesla merges.

Re-merge 2026-10-29 (head 6a7c779). main brought #27275, which deleted ui/packages/vscode-extension; the modify/delete conflicts resolved to the deletion on both sides (the extension's export-to-react-compiles leg and its ledger row go with the package). That package held the tree's last two self-repo GitHub URLs, so check-doc-links.test.ts's sweep now finds none and its population floor is gone; the selfRepoPath unit test still feeds the extractor every URL shape. Re-run after the merge: vitest run scripts/ (one red, the floor above, then green), the 36 changed package tests, markdown-test-inputs --audit, check-docs-redirects, check:doc-types / doc-snippets / doc-examples / doc-json / readme-exports / skill-examples, docs:check-links, the ui CLI check, spec check:liveness, lint:root, the ui package lint and root pnpm lint: all exit 0.

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (packages/spec is not touched.)
  • 2. Every name I added uses the casing for its kind.
  • 3. No formatter ran; pnpm lint passes (exit 0 after merging main at 7674028).
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset.
  • 6. packages/spec touched: not touched, nothing to regenerate.
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English (the 维护者速读 summary excepted, per the dispatch convention).
  • The Before Submitting list in CONTRIBUTING.md is done.

🤖 Generated with Claude Code

https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1

claude added 10 commits October 28, 2026 14:25
…-eq5jj6

# Conflicts:
#	ui/content/docs/guide/slotted-pages.md
#	ui/content/docs/plugins/meta.json
#	ui/packages/cli/src/__tests__/registered-types-validate-ratchet-10859.test.ts
#	ui/packages/plugin-ai/README.md
#	ui/packages/plugin-ai/package.json
#	ui/packages/types/src/__tests__/component-docs-retired-handler-keys-7340.test.ts
#	ui/scripts/markdown-test-inputs.mjs
…age floor after the merge

Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet
objectstack-fleet Bot requested a review from os-tesla October 28, 2026 17:08
@github-actions github-actions Bot added ci/cd dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation tests tooling labels Oct 28, 2026
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

⚠️ 1 changed file(s) yielded no anchor (packages/sdui-parser/src/dashboard-widget-options.ts), 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/src/dashboard-widget-options.ts) — 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 — 5 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 eef83734d9551c6d5746b3d4183046644513fd9c → packageMentionDocs.

…ger use

Lint UI's lint:root refused execFileSync in check-doc-component-types.test.ts
and moduleSpecifiersOfBlock in check-doc-snippet-types.test.ts (object-ui/no-unused-imports).

Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1
Co-authored-by: Claude <noreply@anthropic.com>
…th its host-parity cases

Lint UI's package lint refused both (object-ui/no-unused-imports).

Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract-review-handoff: triage — CONTRACT_REVIEW_TIER unavailable (maintainer rule 「契约复审都要等分诊」, the dispatching seat does not review, 2026-10-28T18:21Z) · head 9b423d3

This is the first contract review owed on this PR, with no prior PASS. It is Tier H by path (.github/workflows/{docs-deploy,ci,lint}.yml) and needs a human merge (+1494/−49656). All 66 checks on 9b423d3b are green and mergeable is clean.

The claim is #27145 comment 6471445866. Amendment 6475652394 widens it with the two bounded fixes listed in the body section "Bounded fixes outside the claim".

One item is still open with the maintainer on a decision card: the frozen LAST_PUBLISHED_TYPES list in filter-builder-mirror-6939.


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 28, 2026 18:23
…-eq5jj6

# Conflicts:
#	ui/content/docs/guide/architecture.md
#	ui/content/docs/utilities/index.md
#	ui/content/docs/utilities/meta.json
#	ui/packages/vscode-extension/README.md
#	ui/packages/vscode-extension/package.json
#	ui/packages/vscode-extension/src/__tests__/export-to-react-compiles.test.ts
#	ui/packages/vscode-extension/src/providers/HoverProvider.ts
#	ui/scripts/__tests__/check-doc-component-types.test.ts
#	ui/scripts/__tests__/check-doc-links.test.ts
#	ui/scripts/markdown-test-inputs.mjs
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Contract-review-claim: session_01AavokzJ5DndAwitDXvKy4U · head 9b423d3bbfd648445613079624ffe81093027d39 · 2026-10-29T00:47Z

Triage seat, taking the Contract-review-handoff: triage … line on this head (#27062 (a)). The review runs at CONTRACT_REVIEW_TIER. If the lane claims or posts a record on this head first, triage withdraws.


Generated by Claude Code

… once the extension's last links left

Merging main brought #27275, which deleted the vscode-extension package and
with it the last two self-repo GitHub URLs in the tree, so the floor of 1
read 0. The extractor stays covered by its own selfRepoPath unit test.

Claude-Session: https://claude.ai/code/session_01L9qibyMpJZ67jrDrno4jY1
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:devx#1 · os-tesla · session_01L9qibyMpJZ67jrDrno4jY1

Head moved after the triage claim above: 9b423d3b → 6a7c7794. The maintainer reported a merge conflict, so main was merged in. #27275 had deleted ui/packages/vscode-extension, and the conflicts resolved to that deletion. One follow-up commit drops the check-doc-links self-repo URL floor, which reads 0 now that the extension's last links are gone. The PR body's "Re-merge 2026-10-29" paragraph lists what was re-run. The lane seat will post a fresh handoff on the new head once CI is green.


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Contract-review-claim: session_01AavokzJ5DndAwitDXvKy4U · head 6a7c7794668a9b6b189384e3ca3165d67cdeacbf · 2026-10-29T01:12Z

Triage seat. The head moved while triage reviewed 9b423d3b, where the review found no must-fix. That record is not posted, because it names a head that is no longer current. A delta review on this head follows, at CONTRACT_REVIEW_TIER. If the lane claims or posts a record on this head first, triage withdraws.


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 6a7c7794668a9b6b189384e3ca3165d67cdeacbf
Local-runs: none
Scope: skills/objectui/guides/app-composition.md, skills/objectui/rules/styling.md, .github/workflows/ci.yml, .github/workflows/docs-deploy.yml + apps/docs/redirects.mjs, scripts/check-docs-redirects.mjs, content/docs/ui/apps.mdx, content/docs/frontend/theming.mdx, content/docs/ui/components/ui.mdx, content/docs/ui/components/html.mdx, content/docs/ui/components/plugins.mdx, content/docs/frontend/renderers.mdx, ui/scripts/check-skills-paths.mjs, ui/scripts/check-doc-links.mjs, ui/scripts/tests/check-doc-links.test.ts, ui/scripts/tests/check-doc-component-types.test.ts, ui/scripts/markdown-test-inputs.mjs, ui/package.json, .changeset/27145-objectui-org-retired.md, .changeset/config.json, packages/skills/scripts/sync-catalog.mjs, scripts/check-skills-token-ratchet.mjs, skills/objectui/evals/app-composition.json, ui/packages/types/src/tests/filter-builder-mirror-6939.test.ts, ui/AGENTS.md

Head status. This is a fresh, full record on 6a7c7794, the head that moved after triage's claim on 9b423d3b (whose record found no must-fix and was never posted). The PR is no longer draft and reads mergeable_state: clean against main at 6abcb72b. The 70 check-runs on 6a7c7794 are all completed: 61 success, 9 skipped (opt-in harnesses, the schedule gate, the Dogfood and Temporal matrix placeholders, UI Published Artifacts), 0 failed, 0 cancelled, 0 pending. Both Check Changeset runs are success, which clears the cancelled run the prior record noted on 9b423d3b. Tier H: Governed Surface Queue Guard success, both PR-body guards success; Lint UI, Build Docs, Check Documentation Links, Lint & Repo Gates, Test UI (16/16) and Test Core (8/8) success.

Delta since 9b423d3b, judged commit by commit.

  1. d710e847 — merge of origin/main at 6abcb72b (an ancestor of today's origin/main) into 9b423d3b. Recomputed with git merge-tree --write-tree 9b423d3b 6abcb72b: ten conflicts (3 modify/delete where main edited a ui/content/docs page the PR deletes, 4 modify/delete where chore(ui): remove the vscode-extension package from the monorepo #27275 on main deleted ui/packages/vscode-extension files the PR had edited, 3 content conflicts). The actual merge tree differs from the mechanical merge tree on exactly those ten paths and on no other: not an evil merge. Each resolution read: the 3 ui/content/docs pages resolve to deletion (the PR's side; main's edits were chore(ui): remove the vscode-extension package from the monorepo #27275's removal of extension mentions from pages this PR retires anyway); the 4 extension files resolve to deletion (main's side, as the dev's comment says); check-doc-component-types.test.ts keeps the PR's comment and drops main's describe block, which read content/docs/utilities/runner.mdx and content/docs/plugins/plugin-form.mdx, both pages this PR deletes, so keeping it would have been red; check-doc-links.test.ts drops main's new root === 'content/docs' floor of 5, right because SCAN_ROOTS at the head has no content/docs root (../content/docs/frontend replaces it) and the floor would read 0; markdown-test-inputs.mjs drops the PR's ADJUDICATED row for the extension's deleted test, right. main's delta also brought: .changeset/config.json loses object-ui (the extension's package name) from fixed, consistent with the head's config, which carries neither object-ui nor @object-ui/site; check-skills-token-ratchet.mjs gains automation rows only, the skills/objectui rows (app-composition.md 1079, rules/styling.md 2699) unchanged; content/docs/ui/components/plugins.mdx loses one table row (options, feat(spec,types,plugin-list,app-shell)!: retire the list view's options bag; stored bags fold onto the top-level blocks, and the renderers read the blocks alone #27206) and index.mdx one count, no heading moved.

  2. 6a7c7794 — one file, ui/scripts/__tests__/check-doc-links.test.ts: the self-repo GitHub URL sweep drops expect(targets.size).toBeGreaterThanOrEqual(1) and keeps the dead-target assertion. Read in the tree: the extension's deletion left zero self-repo URLs in the scan roots, so the floor of 1 was red on the merge; the selfRepoPath unit test at line 1201 feeds the extractor every URL shape directly, and the sibling test's population floors (seen.length at least 11, /docs routes at least 3) still pin that collectFiles and stripCode reach real content. The sweep can now pass with an empty population, which the comment states and accepts; the comment's reason is true in the tree. Outside hits; coherent; the lane seat's ACCEPT.

The four hits files are byte-identical between 9b423d3b and 6a7c7794, and main's delta did not touch them, so their net diff against main is unchanged; ④ below is re-read on this head, not copied.

① Derived judgments

Every accept-set and public-surface change the diff implies, read in the tree at 6a7c7794:

  1. @object-ui/site leaves the workspace (43 files, lockfile importer dropped, .changeset/config.json ignore entry removed, root build filter removed). Right: private, never published; an ignore entry naming no package is itself a changesets error. At the head git grep "ui/apps/site\|ui/content/docs" -- ':!**/CHANGELOG.md' is empty (acceptance holds).

  2. The deploy-ui-site job is gone; www.objectui.org is no longer deployed from this repository. Right, and safe in sequence: the Vercel project objectui is not deleted here (the card leaves that to the maintainer after maintainer-action(ui-merge): after #27145, move objectui.org and www.objectui.org onto the objectstack Vercel project and delete the Vercel project objectui (rescoped: objectui.org folds into objectstack docs) #27030), so the last deployment keeps serving until the domains move; the 184 host-scoped rows are inert until then and sit first in toNextRedirects, so a request on objectui.org never falls through to a row written for this site. Nothing in the tree pins the job name.

  3. Lint UI loses two gates (check:doc-example-ids, check:docs-route-closure). Right: both judged the retired site; scripts, tests and ui/package.json entries go together. Every pnpm --dir ui run NAME in ci.yml at the head names a script ui/package.json has (checked name by name at this head, since ui/package.json moved in the merge).

  4. The ci.yml ui filter widens by content/docs/frontend/** and content/docs/ui/pages.mdx. Right and sufficient at this head: SCAN_ROOTS and the nine doc gates root at ../content/docs/frontend; outside it the only live readers under ui/ of ../content/docs/... are the two Test UI pins and the ledger row for ui/pages.mdx (objectname-binding-required-11605, element-data-source-objectname-waiver-11117, markdown-test-inputs.mjs:222); the remaining spellings are check-doc-links fixtures and comments. Internal Docs Link Check reads ../apps/docs as route truth, which the ui filter does not include; a route change in apps/docs reaches Build Docs and the root Check Documentation Links through the docs filter. Observation, not a fix.

  5. Redirect table, the public URL surface of the retired site. Re-parsed mechanically at this head (pair rows, no module executed): 184 rows, 0 duplicate sources, one catch-all /:path* to /docs/frontend in last position, every row permanent: true and host-scoped to (?:www\.)?objectui\.org. Every destination resolves to a page under content/docs at the head: 0 dead, after main's chore(ui): remove the vscode-extension package from the monorepo #27275 and feat(spec,types,plugin-list,app-shell)!: retire the list view's options bag; stored bags fold onto the top-level blocks, and the renderers read the blocks alone #27206 page edits. 0 rows land on a docsRedirects source (102 rows read; the /docs/ui/{console,studio,setup-app} 308s are in that table and no objectui row targets them). All 117 fragment destinations match a heading on their page, fumadocs [#id] custom ids included. Coverage: every one of the 181 ui/content/docs pages still on main at 6abcb72b has an exact row; the three rows whose source is no main-side page are utilities/vscode-extension (to /docs/frontend, the extension is not published, per the maintainer's 07:58Z ruling), plugins/plugin-ai (to /docs/frontend/plugins) and the catch-all. The card's deleted-outright pages go to a section index (/docs/frontend, /docs/frontend/plugins) or the renderer table. check-docs-redirects.mjs judges the table with chainTable = docsRedirects and a raised self-test floor, unchanged since the prior head; Check Documentation Links and Lint & Repo Gates are success on this head.

    Bulk-move sampling carried from the prior record (seed 27329, 12 of 179 pages, 5 destinations read against the old page's title on main): the delta touched none of the sampled pages or destinations, so the sample stands. Not read: the pages outside the sample, beyond their rows resolving.

  6. @objectstack/skills ships the two skill edits. packages/skills/scripts/sync-catalog.mjs copies skills/** into dist/skills, so the patch entry is right.

  7. Stale instruction left in the tree, outside hits: ui/AGENTS.md:106 still tells every agent to update content/docs/guide/*.md, a directory this PR deletes. Should-fix for the lane seat; not a gate. Not resolved on this head.

  8. The delta's own derived change: check-doc-links.test.ts keeps no population floor on the self-repo URL sweep. Right as read in item 2 of the delta above; no published surface moves.

② Semver level

Clause-②: no on the PR body, the card and the changeset, all three agreeing. The changeset bumps @objectstack/skills and 35 @object-ui/* packages at patch. Checked against the head tree: the 35 non-private @object-ui/* packages whose package.json the diff edits are each in the changeset; @object-ui/app-shell and @object-ui/runner are private, the two monorepo roots are workspace roots, @object-ui/site is deleted, and @object-ui/vscode-extension (edited at 9b423d3b) is deleted on main by #27275 and resolved to deletion, so its absence from the changeset is right. What ships is homepage and description metadata plus README text: patch. skip-changeset is not claimed. Both Check Changeset runs on this head are success. Right.

③ Boundary flags

The os-dev-report (card comment 6475572534) carries two open_questions and one out-of-scope finding; the head-move comment on the PR (6484830591) adds the merge account.

  1. Claim breach — 75 doc-snippet markers in 17 content/docs/frontend pages and one destructive to danger value in frontend/layout.mdx. Answered: the seat's claim amendment (card comment 6475652394) accepts both; the ⛔ on other page-body edits stands, and nothing else under content/docs/** changes bodies in the net diff.

  2. filter-builder-mirror-6939 — the published doc that decision batch Add AI conversation memory and cost tracking protocols #88 made the FilterField.type authority is gone; the test freezes the last 14-member union as LAST_PUBLISHED_TYPES. Escalated, still not answered: the card thread at review time ends at the amendment, which says the question is with the maintainer, and no ruling has landed since. The test's interim authority is coherent (set equality in both directions, refusal text forbids narrowing the frozen list), but replacing a document authority with a test constant is the maintainer's to ratify. This record does not decide it; the card already requires a human merge, and that merge is the ruling's moment.

  3. Out of scope, noted by the dev: the census non-firing control (layout page.tsx:462) is red on origin/main too. Not this PR's.

  4. Head move. The dev's account (merge conflict reported by the maintainer; main merged; chore(ui): remove the vscode-extension package from the monorepo #27275's deletion taken on both sides; one floor dropped) matches the tree, as read in the delta section. The PR body's "Re-merge 2026-10-29" paragraph names what was re-run locally; the check-runs on this head are the verdict and are green.

No dev flag in the PR body is unaddressed. The PR left draft after the checks went green, which the card's "draft until green" permits; the merge stays the maintainer's.

④ Design judgment

skills/objectui/guides/app-composition.md (one line: the Related pointer content/docs/guide/designing-app-navigation.md becomes https://objectstack.ai/docs/ui/apps). Judged against the spec it teaches on main and the card's eval prompts (skills/objectui/evals/app-composition.json, untouched by the delta): the guide body, nav-type table and spec-strict reminders are untouched, and no eval must_contain token names either path, so the eval scenario is unmoved. The destination exists at the head and is the human-facing version the line claims: content/docs/ui/apps.mdx carries ## Navigation Items and ## Designing the navigation, the same page and anchor the redirect row for the old guide lands on. Token ratchet row 1079 unchanged. Holds. Should-fix (carried, not resolved): the old backticked path was judged by check:skills-paths on every run; a URL is outside that gate, and check-doc-links.mjs has no skills/objectui scan root, so the "update both together" pointer is now judged by nothing. Name the repo file beside the URL, or add a skills/objectui row to check-doc-links.

skills/objectui/rules/styling.md (one line: content/docs/guide/theming.md becomes https://objectstack.ai/docs/frontend/theming, shortened to pay the ratchet; floor 2699 unchanged). The rule body is untouched. The destination exists at the head and carries what the line promises: ## CSS Custom Properties, ## Tailwind Setup, and ThemeProvider in ## How Theming Works and ## Dark Mode. Holds. Same should-fix as above, carried, not resolved.

.github/workflows/ci.yml (filter widened; two Lint UI steps removed; three comment blocks rewritten). Judged against the tree at this head as in ① items 3 and 4: every removed step's script is gone with its tests and manifest entry; every added glob has live readers and no reader is left outside the filter; the Lint UI header names content/docs/frontend/** as what the ported gates judge, which matches SCAN_ROOTS and the nine gates' roots. Lint UI and filter are success on this head. Holds. Should-fix (carried, not resolved): the filter comment at line 454 says "four roots outside ui/" and the glob list has five (.github/workflows/**, .github/prompts/**, skills/objectui/**, content/docs/frontend/**, content/docs/ui/pages.mdx).

.github/workflows/docs-deploy.yml (header rewritten to one site; deploy-ui-site job deleted whole). The deploy job is byte-identical to main; the header's remaining claims (deploy, project objectstack, root apps/docs) describe the one job left; the new paragraph names apps/docs/redirects.mjs objectuiRedirects as the successor, which exists, is host-scoped and permanent, and is gate-judged. No roster or self-test pins the removed job. The card asked for exactly this and for the apps/docs job unchanged. Holds.

Must-fix: none in the hits files, and none in the delta. Should-fix: the two skill pointers under no gate (carried, not resolved); the "four roots" count (carried, not resolved); ui/AGENTS.md:106 (carried, outside hits, not resolved). Resolved since 9b423d3b: the cancelled Check Changeset run (both runs success on this head); mergeable_state: dirty (now clean).

Implemented-by: claude/project-thread-eq5jj6
Reviewed-by: session_01AavokzJ5DndAwitDXvKy4U

VERDICT: PASS


Generated by Claude Code

@os-zhuang
os-zhuang added this pull request to the merge queue Oct 29, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 29, 2026
…-eq5jj6

# Conflicts:
#	ui/content/docs/guide/slotted-pages.md
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract-review-handoff: triage — CONTRACT_REVIEW_TIER unavailable (maintainer rule 「契约复审都要等分诊」, the dispatching seat does not review, 2026-10-29T02:36Z) · head df07a80

This supersedes the PASS 6485237613 on 6a7c7794. The queue dequeued that head at 02:22Z with MERGE_CONFLICT: main's #27310 (eef8373) edited ui/content/docs/guide/slotted-pages.md, a page this PR deletes. df07a80e merges main and resolves the conflict to the deletion. The merge is the only change. The PR's file set against main is the same as on 6a7c7794, so the delta review is the merge resolution alone. CI on df07a80e is running, and the lane re-ran its local gates on it, all exit 0. Once there is a record on this head and CI is green, it goes back in the queue for the maintainer.


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Contract-review-claim: session_01AavokzJ5DndAwitDXvKy4U · head df07a80ef3568a30439e14aae666eebe6b4dbaae · 2026-10-29T02:53Z

Triage seat, taking the hand-off and needs:contract-review on this head (#27062 (a)); a delta re-review from triage's PASS on 6a7c7794. The review runs at CONTRACT_REVIEW_TIER. If the lane claims or posts a record on this head first, triage withdraws.


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: df07a80ef3568a30439e14aae666eebe6b4dbaae
Local-runs: none
Scope: skills/objectui/guides/app-composition.md, skills/objectui/rules/styling.md, .github/workflows/ci.yml, .github/workflows/docs-deploy.yml + apps/docs/redirects.mjs, scripts/check-docs-redirects.mjs, content/docs/ui/apps.mdx, content/docs/frontend/theming.mdx, content/docs/ui/pages.mdx, content/docs/references/data/field.mdx, ui/content/docs/guide/slotted-pages.md (main side, deleted at the head), ui/scripts/check-skills-paths.mjs, ui/scripts/check-doc-links.mjs, ui/scripts/tests/check-doc-links.test.ts, ui/package.json, .changeset/27145-objectui-org-retired.md, .changeset/config.json, scripts/check-skills-token-ratchet.mjs, skills/objectui/evals/app-composition.json, ui/packages/plugin-detail/src/synth/buildDefaultPageSchema.ts, ui/AGENTS.md

Head status. Fresh, full record on df07a80e, a re-review on the head that moved after triage's PASS 6485237613 on 6a7c7794. The PR is open, not draft, mergeable: true, mergeable_state: blocked (Tier H: the maintainer's merge and GOVERNED_APPROVERS review are what blocks it, not a conflict; the base is main at eef83734, the exact commit the head merges). Check-runs on df07a80e, re-fetched at review time because the triage snapshot had Test Core (the aggregate) still in_progress: 71 runs, all completed, 60 success, 11 skipped (the two opt-in harnesses, the two packed-tarball smokes, the Auto Label and Check PR Size duplicates, the Dogfood matrix placeholder and Dogfood Verify CLI, the schedule gate, Temporal Conformance, UI Published Artifacts), 0 failed, 0 cancelled, 0 pending. Both Check Changeset runs success; Governed Surface Queue Guard and PR-body guards success; Lint UI, Build Docs, Check Documentation Links, Lint & Repo Gates, filter, Test UI (16/16 and the aggregate), Test Core (8/8 and the aggregate), Build & E2E UI, Live E2E UI success.

Delta since 6a7c7794, judged commit by commit. One commit.

  1. df07a80e — merge of origin/main at eef83734 (today's origin/main is 8d66cbe0, one commit later; the PR's base sha is eef83734) into 6a7c7794. Recomputed with git merge-tree --write-tree 6a7c7794 eef83734: exit 1, exactly one conflict, modify/delete on ui/content/docs/guide/slotted-pages.md (deleted by the PR, modified on main by feat(plugin-detail,app-shell,components): record page v3 layout #27310, which removed the two-line sentence relatedLayout: 'tabs' | 'stack' remains an app-level override). git diff MECHANICAL-TREE df07a80e is that one path and nothing else, 388 deletions: the resolution is the deletion, and no other path differs from the mechanical merge. Not an evil merge. The resolution loses nothing live: feat(plugin-detail,app-shell,components): record page v3 layout #27310 retired relatedLayout from BuildPageOptions (the breaking note in its changeset, and buildDefaultPageSchema.ts:165 at the head lists it among the removed keys), so the sentence it struck was dead prose on a page this PR deletes anyway; the page's redirect row /docs/guide/slotted-pages → /docs/ui/pages#record-pages resolves at the head, and git grep relatedLayout over content/docs at the head is empty, so the merged destination never carried the retired claim. The merge brought main's 180-file delta (9 commits, feat(plugin-detail,app-shell,components): record page v3 layout #27310, docs(adr): ADR-0144 multi-currency — record currency, dated rates, write-time home projection; dated note on ADR-0104 #27239, fix(studio): stop offering the dead field.externalId toggle, and keep a stored value through every save #27315, feat(cli, runtime, platform-objects): os plugin install verifies a signed .osplugin against the environment's trusted keys and installs it locally (#27123, slice 1 of 3) #27335, feat(spec)!: retire the never-consumed CurrencyValueSchema / CurrencyValue export (ADR-0104 D1) #27233, fix(cli)!: the census masker sees past nested templates and regex literals; docs/nav-target judges package-body apps #27342, docs(adr): ADR-0145 amended — a ui-only tombstone's R is judged against the fixed group's @objectstack/spec@M.0.0 cut, and D1 names the ADR-0087 level-half amendment #27333, test: spike a virtual object on a plugin driver through steps a to g #27330, feat(studio): external-object fields show their datasource and write state; no DDL controls on an external object #27316) minus the conflicted page: git diff --name-only 6a7c7794 df07a80e is 179 paths, 6abcb72b..eef83734 is 180, the difference being slotted-pages.md. None of those paths is a hits file, a redirect destination's heading, ui/package.json, .changeset/config.json, scripts/check-skills-token-ratchet.mjs, apps/docs/redirects.mjs or scripts/check-docs-redirects.mjs. main's delta added no ui/packages/*/package.json or ui/apps/*/package.json (so the changeset's package roster is unmoved) and no line naming ui/content/docs, ui/apps/site, objectui.org, deploy-ui-site, check:doc-example-ids or docs-route-closure. main's six content/docs edits (protocol/kernel/lifecycle, protocol/objectql/{security,types}, references/data/{field,field-value}, references/index) moved headings on one page only, references/data/field.mdx (the ## CurrencyValue section retired by feat(spec)!: retire the never-consumed CurrencyValueSchema / CurrencyValue export (ADR-0104 D1) #27233); no objectui row targets that page or a fragment on it (the one references row is /docs/references/cloud/:path* → /docs/references, no fragment).

The net diff against main at the head has the same 430-file list as at 6a7c7794; the only hunk that differs is the slotted-pages.md deletion, 388 lines instead of 390 (the two lines #27310 struck). The four hits files are byte-identical between 6a7c7794 and df07a80e, and main did not touch them between 6abcb72b and eef83734, so their net diff is unchanged; ④ below is re-read on this head, not copied.

Rework note (PR comment 6486344454, the lane's handoff): "the merge is the only change; the PR's file set against main is the same; resolves the conflict to the deletion; CI running; local gates re-run exit 0." Read as a claim and checked against the tree: the first three statements are true as read above; CI is now complete and green on this head; the local re-run is the lane's account and is not relied on, the check-runs are the verdict.

Prior should-fixes, verified on this head. (1) The two skill pointers (app-composition.md:62, styling.md:318) are URLs under no gate: check-skills-paths.mjs judges backtick code spans only (SCAN_ROOTS = ['skills', '.claude/skills'], prose URLs are not candidates), and check-doc-links.mjs SCAN_ROOTS at the head has no skills row (14 rows, ../content/docs/frontend, examples, docs, package and app trees, four root files). Not resolved. (2) ci.yml:454 still reads "four roots outside ui/" against a five-glob list. Not resolved. (3) ui/AGENTS.md:106 still says "update package README.md and content/docs/guide/*.md", a directory that does not exist at the head. Not resolved. None is a must-fix; none was promised for this head (the rework note says the merge is the only change, and it is).

① Derived judgments

Every accept-set and public-surface change the diff implies, read in the tree at df07a80e:

  1. @object-ui/site leaves the workspace (43 files, lockfile importer dropped, .changeset/config.json ignore entry removed, root build filter removed). Right: private, never published. At the head git grep -n "ui/apps/site\|ui/content/docs" -- ':!**/CHANGELOG.md' prints nothing (card acceptance holds after the merge).

  2. The deploy-ui-site job is gone; www.objectui.org is no longer deployed from this repository. Right and safe in sequence: the Vercel project is not deleted here (the card leaves that to the maintainer after maintainer-action(ui-merge): after #27145, move objectui.org and www.objectui.org onto the objectstack Vercel project and delete the Vercel project objectui (rescoped: objectui.org folds into objectstack docs) #27030), the last deployment keeps serving until the domains move, and the 184 host-scoped rows are inert until then. toNextRedirects spreads objectui first, then docsRedirects and blogRedirects, so a request on objectui.org never falls through to a row written for this site. The deploy job is byte-identical to main. Nothing in the tree pins the job name.

  3. Lint UI loses two gates (check:doc-example-ids, check:docs-route-closure). Right: both judged the retired site. At the head the only remaining spellings are three history comments (docsActivityMapTranscription-7876.test.ts:14, check-eager-closure-budget.test.ts:1936, ci-setup-pnpm.sh:42, the last two naming objectui's own retired workflow file, not a script). All 51 distinct pnpm --dir ui run NAME scripts ci.yml names at the head exist in ui/package.json at the head (checked name by name; ui/package.json is unchanged by the merge).

  4. The ci.yml ui filter widens by content/docs/frontend/** and content/docs/ui/pages.mdx. Right and sufficient at this head: check-doc-links.mjs SCAN_ROOTS roots at ../content/docs/frontend, and outside it the only live readers under ui/ of ../content/docs/... are the two Test UI pins on ui/pages.mdx. main's delta added no reader of any other content/docs path from ui/. filter is success on this head.

  5. Redirect table, the public URL surface of the retired site. Re-parsed mechanically at this head (pair rows read with a regex, no module executed, destinations resolved against git archive prr-27329 content/docs): 184 rows, 0 duplicate sources, catch-all /:path* to /docs/frontend in last position, every row permanent: true and has: [{ type: 'host', value: OBJECTUI_HOST_PATTERN }] with the pattern (?:www\.)?objectui\.org. 0 dead destinations. 117 fragment destinations, 0 whose fragment matches no heading on its page (fumadocs [#id] custom ids honoured). 0 rows land on any of the 102 docsRedirects sources, and none targets /docs/ui/{console,studio,setup-app}. The content/docs file set is identical between the head and origin/main, so the table's coverage is unmoved. Check Documentation Links and Lint & Repo Gates are success on this head.

    Bulk-move sampling carried from the prior records (seed 27329, 12 of 179 pages, 5 destinations read against the old page's title on main): main's delta touched none of the sampled pages or destinations (its six content/docs edits are protocol and references pages), so the sample stands. Not read: pages outside the sample, beyond their rows resolving.

  6. @objectstack/skills ships the two skill edits (sync-catalog.mjs copies skills/** into dist/skills). The patch entry is right. Token ratchet rows at the head: app-composition.md 1079, rules/styling.md 2699, unchanged by main.

  7. Stale instruction left in the tree, outside hits: ui/AGENTS.md:106 tells every agent to update content/docs/guide/*.md, a directory this PR deletes. Should-fix for the lane seat; carried, not resolved.

  8. The merge's own derived change: none. It brings main forward and resolves one page to the deletion the PR already made. No accept-set or public surface moves that main did not already move.

② Semver level

Clause-②: no on the PR body (line 8), the card and the changeset (.changeset/27145-objectui-org-retired.md, line 42), all three agreeing. The changeset bumps @objectstack/skills and 35 @object-ui/* packages at patch. main's delta added or removed no ui/packages/*/package.json or ui/apps/*/package.json, so the roster judged on 6a7c7794 (every non-private @object-ui/* whose manifest the diff edits is listed; app-shell and runner private; site deleted; vscode-extension deleted on main) holds unchanged. What ships is homepage and description metadata plus README text: patch. skip-changeset is not claimed. Both Check Changeset runs on this head are success. Right.

③ Boundary flags

The os-dev-report (card comment 6475572534) carries two open_questions and one out-of-scope finding; the PR thread adds the two head-move accounts (6484830591, 6486344454).

  1. Claim breach — 75 doc-snippet markers in 17 content/docs/frontend pages and one destructive to danger value in frontend/layout.mdx. Answered: the seat's claim amendment (card comment 6475652394) accepts both; the ⛔ on other page-body edits stands. At this head the net diff's content/docs/** hunks are the same as at 6a7c7794 (same 430-file list; the only hunk that moved is under ui/content/docs), so no new body edit entered.

  2. filter-builder-mirror-6939 — the published doc that decision batch Add AI conversation memory and cost tracking protocols #88 made the FilterField.type authority is gone; the test freezes the last 14-member union as LAST_PUBLISHED_TYPES. Escalated, still not answered: the card thread at review time ends at the amendment (17:14Z 2026-10-28), which puts the question to the maintainer, and no ruling has landed since; the merge brought no change to that test. This record does not decide it; the card already requires a human merge, and that merge is the ruling's moment.

  3. Out of scope, noted by the dev: the census non-firing control (layout page.tsx:462) is red on origin/main too. Not this PR's.

  4. Head move. The lane's account (queue dequeued 6a7c7794 with MERGE_CONFLICT on slotted-pages.md; main merged; resolved to the deletion; the merge is the only change) matches the tree exactly, as read in the delta section. The check-runs on this head are the verdict and are green; the lane's local re-run is not relied on.

No dev flag in the PR body is unaddressed. The merge stays the maintainer's (Tier H, over 3000 changed lines).

④ Design judgment

skills/objectui/guides/app-composition.md (one line: the Related pointer content/docs/guide/designing-app-navigation.md becomes https://objectstack.ai/docs/ui/apps). Judged against the spec it teaches on main and the card's eval prompts (skills/objectui/evals/app-composition.json, untouched by the merge): the guide body, nav-type table and spec-strict reminders are unchanged, and no eval must_contain token names either path, so the eval scenario is unmoved. The destination exists at the head and is the human-facing version the line claims: content/docs/ui/apps.mdx carries ## Navigation Items (line 75) and ## Designing the navigation (line 296), the same page the redirect row for the old guide lands on. Ratchet row 1079 unchanged. Holds. Should-fix (carried, not resolved): the old backticked path was judged by check:skills-paths on every run; a URL is outside that gate (code spans only), and check-doc-links.mjs has no skills scan root, so the "update both together" pointer is now judged by nothing. Name the repo file beside the URL, or add a skills/objectui row to check-doc-links.

skills/objectui/rules/styling.md (one line: content/docs/guide/theming.md becomes https://objectstack.ai/docs/frontend/theming, shortened to pay the ratchet; floor 2699 unchanged). The rule body is unchanged. The destination exists at the head and carries what the line promises: ## CSS Custom Properties (line 19), ## Tailwind Setup (line 62), and ThemeProvider named 18 times across ## How Theming Works, ## Dark Mode and ## Runtime Theme Switching. Holds. Same should-fix as above, carried, not resolved.

.github/workflows/ci.yml (filter widened by two globs; two Lint UI steps removed; three comment blocks rewritten). Judged against the tree at this head as in ① items 3 and 4: every removed step's script is gone with its tests and manifest entry; every added glob has live readers and no reader is left outside the filter; the Lint UI header names content/docs/frontend/** as what the ported gates judge, which matches check-doc-links.mjs SCAN_ROOTS and the doc gates' roots. Lint UI and filter are success on this head. Holds. Should-fix (carried, not resolved): the filter comment at line 454 says "four roots outside ui/" and the glob list has five (.github/workflows/**, .github/prompts/**, skills/objectui/**, content/docs/frontend/**, content/docs/ui/pages.mdx).

.github/workflows/docs-deploy.yml (header rewritten to one site; deploy-ui-site job deleted whole). The deploy job is byte-identical to main at eef83734; the header's remaining claims (deploy, project objectstack, root apps/docs) describe the one job left; the new paragraph names apps/docs/redirects.mjs objectuiRedirects as the successor, which exists, is host-scoped and permanent, and is gate-judged. No roster or self-test pins the removed job. .github/workflows/lint.yml is unchanged against main. The card asked for exactly this and for the apps/docs job unchanged. Holds.

Must-fix: none in the hits files, and none in the delta. Should-fix: the two skill pointers under no gate (carried, not resolved); the "four roots" count (carried, not resolved); ui/AGENTS.md:106 (carried, outside hits, not resolved). Resolved since 6a7c7794: the MERGE_CONFLICT the queue reported on slotted-pages.md (the head merges main at eef83734, the PR's base, and the conflict resolves to the deletion with no other difference from the mechanical merge).

Implemented-by: claude/project-thread-eq5jj6
Reviewed-by: session_01AavokzJ5DndAwitDXvKy4U

VERDICT: PASS


Generated by Claude Code

@os-zhuang
os-zhuang added this pull request to the merge queue Oct 29, 2026
Merged via the queue into main with commit 7587fd4 Oct 29, 2026
74 checks passed
@os-zhuang
os-zhuang deleted the claude/project-thread-eq5jj6 branch October 29, 2026 03:51
os-warren pushed a commit that referenced this pull request Oct 29, 2026
Takes main's deletion of ui/content/docs/api/schema-reference.md and
ui/content/docs/plugins/plugin-form.mdx (#27329). The plugin-form page's
new home, content/docs/frontend/plugins/plugin-form.mdx, gains the
"Where an object-form block opens" section.

Claude-Session: https://claude.ai/code/session_01JQwxbWHWPRD5rZXeY69YvL
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation size/xl tests tooling

Projects

None yet

3 participants