Repository navigation
Description
立卡门类别 ③ — 维护者直派的任务 (maintainer-directed task).
Maintainer ruling (verbatim, untranslated)
README 和文档还有进一步的修改建议嘛?
创建一个issue,然后用 fable 派发处理。
Given in session https://claude.ai/code/session_011hRnra93sK5Q2gTYYTbdJR on 2026-10-03, after #21574 (PR #21579, landed as cc645f2) put the slogan on the README, the docs landing page, the glossary and the two concepts pages. This card is the follow-up pass: four inconsistencies that pass left behind, plus the structural changes that make the README and the docs read as one system around the slogan. Same slogan, descriptor and proof line as #21574; nothing here reopens that wording.
Part A. Inconsistencies left on main at cc645f2 (must fix)
A1. apps/docs/app/[lang]/page.tsx line 34: HOME_TITLE still reads "Metadata framework for AI-written apps". It feeds the document title (line 56), the Open Graph title (67), the Twitter card title (76) and the JSON-LD headline (112), so every share card pairs the new description with the old title. Set it to "The ontology is the software".
A2. apps/docs/lib/site.ts line 86: the HERO_COVER alt still reads "ObjectStack — the metadata framework for AI-written apps". Replace with "ObjectStack: the ontology is the software. One executable business ontology, written by AI, run by the runtime, operated by agents, owned by you."
A3. The hero cover image carries a third, older headline. docs/screenshots/hero-cover-dark.png (2400 by 1200, the README hero) reads "Your whole app, as typed metadata." with the chips "Fits in an agent's context", "Typed, validated, governed", "Self-host anywhere", "Apache-2.0"; apps/docs/public/hero-cover-dark.webp is derived from it and is the docs site's og:image. Re-render both with the new copy: headline "The ontology is the software.", subhead "One executable business ontology. AI writes it, the runtime runs it, agents operate it, you own it.", chips "Executable", "AI-writable", "Agent-operable", "You own it", "Apache-2.0". There is no design source in the repo, so build a 2400 by 1200 HTML template that reproduces the current layout (dark backdrop, copy on the left, the ticket code card and the dashboard screenshot on the right), screenshot it with the preinstalled Playwright Chromium, commit the PNG as the new master and the template beside it so the next copy change is a re-render, then derive the WebP exactly as the provenance block in apps/docs/lib/site.ts says (sharp, quality 80, effort 6, from the PNG). Pixel dimensions stay 2400 by 1200; the declared sizes in site.ts must still match the bytes. If the re-render cannot reach the quality of the current image, leave both image files untouched, land the rest of this card, and say so in the report with the template committed anyway.
A4. content/docs/getting-started/glossary.mdx line 39, the UI Protocol entry, still lists Themes. Stack themes were retired at protocol 18 (packages/spec/src/migrations/entries/semantic/18.stack-themes-carrier-retired.ts). Drop the word from that sentence.
Part B. README restructured on the four promises
B1. Hero. The blockquote now stacks five paragraphs. Cut it to: the slogan line, the English descriptor, and one proof line "Apps small enough for AI to hold whole." Keep the Chinese signature as one short line, "本体即软件。", directly under the descriptor; the Chinese descriptor sentence moves out (PM ruling for this card: no README.zh-CN.md; a separate card if the maintainer wants one). Move the ontology paragraph with its caveat (no inheritance, no axioms, no reasoner; executable, not knowledge-representation) out of the hero into a new short section "What we mean by ontology", three sentences plus a link to the glossary entry, placed right before the capability section.
B2. The chip row under the hero becomes the four promises plus the licence: "Executable", "AI-writable", "Agent-operable", "You own it", "Apache-2.0".
B3. Section order and headings, so the README's spine is the slogan. Keep "Try it in five minutes" first as the onboarding. Then "The runtime runs it" (today's "What one definition gives you", body unchanged). Then "Agents are the first users" (today's "Your app is AI-operable, for free", moved up; open it with one sentence: objects are tools, actions are tools, permissions decide what an agent may call, audit records what it did; keep the claude mcp add snippet). Then "Why the mistakes don't ship" (unchanged body; it is the "AI writes it" promise). Then a short "You own it" section that consolidates the LICENSING sentence from the paragraph under the video and the blog quote near the end of the file. Then "Ship it" and "Hack on the framework" as they are. Renaming a heading changes its anchor: grep content/docs and apps/docs for links into README anchors and update them; the published-readme-links gate reads this.
Part C. Docs site
C1. content/docs/index.mdx: the first paragraph becomes the slogan and the descriptor, then the existing build-loop diagram and the rest unchanged; align the frontmatter description with it.
C2. A concept page, content/docs/concepts/ontology.mdx, registered in content/docs/concepts/meta.json right after "metadata-driven". Five sections: what the ontology is (objects and fields, relations, actions, permissions, flows, agent and tool definitions); what the projections are (views, dashboards, apps, translations); what it is not (a knowledge ontology with inheritance, axioms and a reasoner; the industry's semantic layer, a read-only mapping over existing systems; a formal ontology in the philosophical sense); how the runtime executes it (derive the database, REST, UI and MCP; enforce permissions and audit on every call; validated, not reasoned over); how AI writes it and uses it (skills bundle and AGENTS.md, the validation gate, the Console review, the MCP surface). The page is the authority; the glossary "Business Ontology" entry shrinks to a short definition of at most six lines plus a link to it, no duplicated long text.
C3. Glossary, in the shortened entry: one sentence that distinguishes this ontology from the industry's "semantic layer" (a read-only mapping over existing systems that describes the business but does not run it), beside the existing sentence about the analytics dataset layer.
C4. content/docs/concepts/north-star.mdx: one bridge sentence in the first paragraph, "In the enterprise-AI vocabulary, the ontology is the software", nothing else on that page.
Guardrails for the author
- The four facts survive in every piece of copy: no object inheritance, axioms or reasoner; not a semantic layer over existing systems; views, dashboards, apps and translations are projections, not ontology; code does not disappear, it moves into the runtime. The 150k / 100k number discipline from docs:主 README 与文档首页统一换用新定稿 tagline(150k 整体 + 100k 业务逻辑拆分) #9241 applies to any retained figure.
- Docs only: no packages/** change, never content/docs/references/** (generated), content/docs/releases/** (release-owned) or any CHANGELOG.md. The only binary files touched are the two cover images in A3.
- The new page is the one meta.json change. The docs build (pnpm --filter @objectstack/docs build) and the doc gates must stay green; derive the gate list from the real file surface with scripts/pm/dispatch-gates.mjs.
- Changeset: nothing publishes, so skip-changeset applies once packages/** is confirmed untouched.
- Out of git, for the maintainer, not this card: the repository description field, and the 90-second YouTube video still narrates the old tagline.
Non-goals
- A README.zh-CN.md or any Chinese docs tree. Separate card if wanted.
- Naming the ontology core inside packages/spec. Separate spec-lane card if wanted.
- Console or Studio copy; that is the objectui sibling repo.
Who acts
domain:devx lane, this seat, one os-dev dispatch at the fable tier (maintainer directed), one docs-only draft PR. Precedent: #21574 landed by #21579 on the same surfaces earlier today; this card builds on that head, so the dev merges current main before touching the same files.
Duplicate check (2026-10-03, open and closed)
- Query "docs landing page HOME_TITLE og:image hero cover stale tagline alt text": 0 hits.
- Query "ontology concept page glossary Themes retired protocol 18 README four promises restructure": 10 hits, all closed and unrelated (nearest:
content/docs/protocol/objectui/widget-contract.mdx的 Theme 段仍在教 #3494 已删除的density(照抄文档即构建失败) #5291 on a retired Theme key in the widget contract page, L7: correct the two "customize in Studio" promise pages to per-regime truth (ADR-0126 §8.4) #12161 on Studio promise pages).
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 3, 2026
Claim: PM loop round 1
Session:
session_011hRnra93sK5Q2gTYYTbdJRAccount:
hotlong(the seat's linked user asGET /useranswers it; the card's assignee; this is the maintainer's own session, dispatching on the maintainer's direct instruction)Branch:
claude/issue-21586-positioning-follow-up(cut fromorigin/maincc645f2385)Worktree:
objectstack-issue-21586Domain:
domain:devxSeat:
domain:devx#2File surface: README.md; apps/docs/app/[lang]/page.tsx; apps/docs/lib/site.ts; docs/screenshots/hero-cover-dark.png plus a committed render template beside it; apps/docs/public/hero-cover-dark.webp; content/docs/index.mdx; content/docs/concepts/ontology.mdx (new); content/docs/concepts/meta.json; content/docs/concepts/north-star.mdx; content/docs/getting-started/glossary.mdx; plus any content/docs or apps/docs page that links a README anchor the restructure renames. ⛔ No packages/, no content/docs/references/, no content/docs/releases/, no CHANGELOG.md, no content/blog/. Stop on a breach and explain it in the report.
Container & model:
M(copy across ten files, one cover re-render, one new page, one docs build),mode:subagent,model: CONTRACT_REVIEW_TIER(the ceiling; this card's--tierrun printed no path-derived mandate, "floor sonnet · default opus · ceiling fable"; reason: maintainer directed, verbatim 「创建一个issue,然后用 fable 派发处理。」)Clause-②: no
Thread-read: none
Serial constraints cleared: board read at 2026-10-03T12:47Z. #21574 covers the same surfaces and is closed, landed as cc645f2 on main today, so the dev starts from that head and merges current main before touching the same files. Open PRs on the repo at the read are #21584, #21545 and #21581; none touches README.md, apps/docs or content/docs. No remote branch names these surfaces and no other devx claim is in flight on them.
Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
os-dev-report
{ "issue": 21586, "status": "done", "branch": "claude/issue-21586-positioning-follow-up", "pr": "https://github.com/objectstack-ai/objectstack/pull/21591", "session": "session_011hRnra93sK5Q2gTYYTbdJR", "premise_still_valid": true, "base": "origin/main 901e7cf1 at worktree creation (the Claim named cc645f23; two merges landed between, packages/rest and packages/cloud-connection only, none on this surface). Head 7a49e296, five commits, tree clean.", "summary": "All three parts landed as one docs-only draft PR. Part A: HOME_TITLE on the docs home page is \"The ontology is the software\" (one constant, four measured readers); HERO_COVER.alt is the descriptor; the hero cover PNG and its webp are re-rendered on the slogan from a new committed HTML template plus a render script; the glossary UI Protocol entry drops Themes. Part B: README hero cut to slogan, descriptor, 本体即软件。 and the proof line; chips are the four promises plus Apache-2.0; new \"What we mean by ontology\" section before the capability section; sections reordered and renamed on the slogan spine; LICENSING sentence and blog quote consolidated under \"You own it\". Part C: index.mdx opens on slogan plus descriptor; new content/docs/concepts/ontology.mdx registered in meta.json after metadata-driven; glossary Business Ontology shrunk from 44 to 13 lines with the semantic-layer distinction beside the analytics-dataset sentence; north-star gained the one bridge sentence. One file outside the named surface: scripts/docs-audit/handwritten-docs.json, which check:docs-audit-scope requires for every new hand-written page.", "tests": "Builds under scripts/pm/os-verify-lock.sh (OS_VERIFY_LOCK_SLOT=issue-21586): `pnpm --filter @objectstack/spec build` VERDICT command-exit 0 (97s); `pnpm --filter @objectstack/docs build` VERDICT command-exit 0 (173s; log: \"Compiled successfully in 114s\", \"Finished TypeScript in 5.9s\"; next.config has ignoreBuildErrors:false so this is the docs app type check); `turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` VERDICT command-exit 0 (85s); `pnpm --filter \"@objectstack/client-react...\" build` VERDICT command-exit 0 (228s). 68 gate families derived by `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack`, every one run with $? captured before any pipe, record `command :: exit N`, reconciled: \"68 derived, 68 run, 0 NOT-MEASURED, 0 UNRUN\". Doc gates re-run on the final head 7a49e296 after the last commit: 22 commands, all exit 0 (list in the gates field). First-round exits that were NOT measurements: check:docs-transcript-drift, lint check:doc-formula-expressions, lint check:doc-security-posture and spec check:skill-examples answered exit 3 PREREQUISITE NOT MET until lint/formula/client-react were built, then exit 0; `pnpm check:docs-nav-label` / `pnpm check:docs-section-name` exit 254 (no such root script; the derived spelling is `node scripts/check-docs-nav-label.mjs`, which was run, exit 0). Narrowed eslint measurement: `pnpm exec eslint --no-inline-config --format json` over the 3 changed JS/TS files: 3 files, 0 errors, 0 warnings; population = the config generic block files [**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}] covering all three; not type-aware (no parserOptions.project), so the diff cannot move an untouched file; whole-tree `pnpm lint` left to CI. No ablation (no logic under test). Cover: fonts asserted loaded in-page (Inter 400-800, IBM Plex Mono 400/500) before the screenshot; dimensions asserted 2400x1200 by sharp metadata on both files.", "gates": [ { "command": "pnpm --filter @objectstack/spec build (lock)", "exit": 0, "verdict": "os-verify-lock: VERDICT command-exit 0 · held the lock 97s" }, { "command": "pnpm --filter @objectstack/docs build (lock)", "exit": 0, "verdict": "os-verify-lock: VERDICT command-exit 0 · held the lock 173s · Compiled successfully in 114s · Finished TypeScript in 5.9s" }, { "command": "pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint --concurrency=2 (lock)", "exit": 0, "verdict": "os-verify-lock: VERDICT command-exit 0 · held the lock 85s" }, { "command": "pnpm --filter \"@objectstack/client-react...\" build --workspace-concurrency=2 (lock)", "exit": 0, "verdict": "os-verify-lock: VERDICT command-exit 0 · held the lock 228s" }, { "command": "on head 7a49e296, each exit 0: pnpm check:nul-bytes · check:doc-anchors · check:doc-authoring · check:docs-single-h1 · check:docs-transcript-drift · check:published-readme-links · check:docs-redirects · check:docs-locale-catch-all · check:page-declaration-shape · check:docs-audit-scope · check:corpus-claim-drift · check:docs-spec-enumerations · check:role-word · check:published-files · node scripts/check-docs-nav-label.mjs · check-docs-section-name.mjs · check-doc-frontmatter.mjs · check-doc-route-spelling.mjs --advisory · check-section-landing-index.mjs · check-undeclared-dep-imports.mjs · pnpm --filter @objectstack/lint run check:doc-formula-expressions · check:doc-security-posture", "exit": 0, "verdict": "22 of 22 exit 0" }, { "command": "pnpm --filter @objectstack/spec run check:docs / check:empty-state / check:liveness / check:skill-examples / check:strictness-ledger / check:variant-docs / check:yaml-examples", "exit": 0, "verdict": "all exit 0; skill-examples: 260 prose examples type-check across 3 surfaces" }, { "command": "remaining derived families (ci-filter-parity, closing-keyword-parity, comment-mask-corpus, keyed-text-bounds, registry-log-declared, rest-log-spy-declared, cross-package-test-inputs, driver-memory-census, gitlink-declared, logger-receiver-detach, org-identifier, react-page-adapter-contract, refd-timer-probe, release-notes, skill-identifier-liveness, test-source-alias, tier-file-adoption, vendor-version-stamps, watch-hint-literal, scripts-symbol-anchors, docs-audit affected-docs, drift-comment, agent-test-spelling, bash32-floor, cli-command-ids, entry-guard, parse-guard, pnpm-filter-targets, plus every --self-test the list names)", "exit": 0, "verdict": "all exit 0" }, { "command": "node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran record", "exit": 0, "verdict": "dispatch-gates --ran: 68 derived famil(ies) accounted for — 68 run, 0 NOT-MEASURED" }, { "command": "pnpm exec eslint --no-inline-config --format json docs/screenshots/render-hero-cover.mjs apps/docs/lib/site.ts apps/docs/app/[lang]/page.tsx", "exit": 0, "verdict": "3 files, 0 errors, 0 warnings (narrowed; evidence in tests)" } ], "files_changed": [ "README.md", "apps/docs/app/[lang]/page.tsx", "apps/docs/lib/site.ts", "apps/docs/public/hero-cover-dark.webp (binary, 83,272 to 85,472 B)", "content/docs/concepts/meta.json", "content/docs/concepts/north-star.mdx", "content/docs/concepts/ontology.mdx (new, 100 lines)", "content/docs/getting-started/glossary.mdx", "content/docs/index.mdx", "docs/screenshots/hero-cover-dark.html (new, template)", "docs/screenshots/hero-cover-dark.png (binary, 406,703 to 563,953 B)", "docs/screenshots/render-hero-cover.mjs (new, render script)", "scripts/docs-audit/handwritten-docs.json (+1 line, outside the named surface, required by check:docs-audit-scope)" ], "anchor_sweep": { "grep -rn \"README.md#\" content/docs apps/docs README.md": 0, "git grep of the six README section slugs across the whole tree": 0, "updated_links": 0 }, "cover": { "updated": true, "png": "docs/screenshots/hero-cover-dark.png 2400x1200 563,953 B", "webp": "apps/docs/public/hero-cover-dark.webp 2400x1200 85,472 B (15.2% of the PNG), sharp 0.35.4 / libwebp 1.6.0, quality 80, effort 6, from the PNG", "method": "docs/screenshots/hero-cover-dark.html screenshot by docs/screenshots/render-hero-cover.mjs; Chromium at /opt/pw-browsers/chromium via @playwright/test resolved from examples/app-showcase; sharp resolved beside the docs app Next dependency; Inter + IBM Plex Mono fetched from Google Fonts through the proxy and asserted loaded before the screenshot; the script refuses to overwrite the committed files when they did not load", "right_panel": "simplified CSS dashboard card (no standalone dashboard screenshot exists in the repo; no new binary allowed)", "site_ts": "provenance block updated to the new bytes and sharp 0.35.4; width/height 2400x1200 unchanged and verified against both files" }, "mechanism_assumptions": [ "HOME_TITLE at page.tsx line 34 with readers at 56/67/76/112: confirmed; one edit moved all four.", "sharp in the closure: 0.35.4, resolved beside next in the pnpm store (apps/docs declares no sharp; provenance said 0.35.3, now recorded as 0.35.4). cwebp not needed.", "Playwright: @playwright/test 1.63.0 is declared only by examples/app-showcase, not packages/qa or apps/docs; resolved from there. Chromium at PLAYWRIGHT_BROWSERS_PATH as stated.", "README anchors: expected several hits, measured 0 (both spellings). check:published-readme-links reads packages READMEs, not the root README, but is green either way.", "Themes retirement entry 18.stack-themes-carrier-retired.ts read before the word was dropped.", "Same-day churn: main moved cc645f23 to 901e7cf1 before the branch was cut; neither commit touches this surface. The card quoted fragments matched current main." ], "deviations": [ "scripts/docs-audit/handwritten-docs.json edited (one added line) although not on the named file surface: check:docs-audit-scope reds on an unlisted hand-written page and prescribes its own --write.", "README \"What we mean by ontology\" links the concept page first and the glossary entry second (card said the glossary entry); index.mdx first paragraph carries one link sentence after slogan + descriptor. Both toward C2 making the page the authority.", "Glossary entry: six-line definition paragraph plus link, then a second short paragraph holding the knowledge-ontology sentence, the industry semantic-layer sentence and the existing analytics-dataset sentence (13 lines in all, heading included).", "Render needs network for Google Fonts; no font binary vendored (card allows only the two cover binaries). The script fails loudly rather than shipping the system fallback.", "The PR body was sent once through the relay (read-back: 8640 bytes sent, 8640 stored, identical); the first relay attempt was refused for payload shape (envelope instead of a bare array) with zero writes and resent.", "The PR body's last acceptance note says the repository description field still carries the old tagline; the PR read-back shows it already carries the slogan. The body is written once and not PATCHed by this seat; the seat may amend that one sentence if it wants the body exact." ], "mcp_calls": "3 — mcp__github__issue_read get (#21586), mcp__github__issue_read get_comments (#21586), mcp__github__pull_request_read get (#21591); all reads, no write tool.", "api_writes": "3 relay strokes via scripts/pm (objectstack-fleet[bot]) — pr_create POST /repos/objectstack-ai/objectstack/pulls (run 37126243316, PR #21591 draft); label-write POST /repos/objectstack-ai/objectstack/issues/21591/labels + POST .../issues/21591/assignees (run 37126302311; read-back matches: labels documentation, size/l, skip-changeset; assignee hotlong); os-dev-report comment POST /repos/objectstack-ai/objectstack/issues/21586/comments (this comment). git push x5 to the branch (not REST). skip-changeset applied after measuring packages/** untouched (0 paths).", "open_questions": [], "out_of_scope_findings": [ "carrier: the next positioning pass (PM) · noted, not filed — apps/docs/app/[lang]/page.tsx chip row near line 261 (\"Fits in an agent's context\", \"Typed, validated, governed\", \"Self-host anywhere\") still carries the pre-slogan chips, directly above the re-rendered poster whose chips are the four promises; the card does not name it.", "carrier: maintainer, out of git (the card's own note) · noted, not filed — the 90-second video narration still carries the old tagline. The repository description field already reads the new slogan (measured on the PR read-back: \"The ontology is the software. One executable business ontology: AI writes it, the runtime runs it, agents operate it, you own it.\"), so that half of the card's note is already done." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
os-dev-report
{ "issue": 21586, "status": "done", "round": "patch round on the same claim: PR #21591, no new PR, assignee untouched", "branch": "claude/issue-21586-positioning-follow-up", "pr": "https://github.com/objectstack-ai/objectstack/pull/21591", "session": "session_011hRnra93sK5Q2gTYYTbdJR", "premise_still_valid": true, "head": "cb089e2b (previous head 7a49e296; one commit added, tree clean)", "summary": "This round changed one thing: the chip row under the docs home page hero in apps/docs/app/[lang]/page.tsx (the div near line 258, same markup and separator spelling) now reads Executable | AI-writable | Agent-operable | You own it instead of the pre-slogan trio, so it matches the re-rendered poster directly below it. No other file, no other copy touched. Commit cb089e2b \"docs(home): align the hero chip row with the four promises\", pushed to the same branch; the PR body was not PATCHed.", "tests": "On head cb089e2b in a rebuilt worktree: `pnpm --filter @objectstack/spec build && turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` under os-verify-lock (OS_VERIFY_LOCK_SLOT=issue-21586): VERDICT command-exit 0 (74s). `pnpm --filter @objectstack/docs build` under the lock: VERDICT command-exit 0 (130s; \"Compiled successfully in 78s\", \"Finished TypeScript in 4.5s\"); no tracked file moved by the build. `pnpm check:nul-bytes` exit 0; `pnpm check:doc-anchors` exit 0; `pnpm check:docs-transcript-drift` exit 0 (4 declared transcript values across 409 pages equal the registry). Narrowed eslint measurement: `pnpm exec eslint --no-inline-config --format json apps/docs/app/[lang]/page.tsx` → 1 file, 0 errors, 0 warnings; population = the config generic block files [**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}], which covers the file; the config states it never enables type-aware linting (no parserOptions.project), so this diff cannot move an untouched file. Every exit captured to disk before being read. Edit verified by occurrence count: new row present once, old chip strings 0.", "gates": [ { "command": "pnpm --filter @objectstack/spec build && turbo run build --filter=@objectstack/formula --filter=@objectstack/lint (lock)", "exit": 0, "verdict": "os-verify-lock: VERDICT command-exit 0 · held the lock 74s" }, { "command": "pnpm --filter @objectstack/docs build (lock)", "exit": 0, "verdict": "os-verify-lock: VERDICT command-exit 0 · held the lock 130s · Compiled successfully in 78s · Finished TypeScript in 4.5s" }, { "command": "pnpm check:nul-bytes", "exit": 0, "verdict": "exit 0" }, { "command": "pnpm check:doc-anchors", "exit": 0, "verdict": "exit 0" }, { "command": "pnpm check:docs-transcript-drift", "exit": 0, "verdict": "4 declared transcript value(s) across 409 page(s) equal what the registry derives today" }, { "command": "pnpm exec eslint --no-inline-config --format json apps/docs/app/[lang]/page.tsx", "exit": 0, "verdict": "1 file, 0 errors, 0 warnings (narrowed; evidence in tests)" } ], "files_changed": [ "apps/docs/app/[lang]/page.tsx (+5 / -3: four spans, three separators)" ], "deviations": [], "mcp_calls": "3 cumulative, none this round — issue_read get, issue_read get_comments (#21586), pull_request_read get (#21591); all reads.", "api_writes": "4 relay strokes cumulative via scripts/pm as objectstack-fleet[bot] — pr_create (run 37126243316), label-write labels + assignees on #21591 (run 37126302311), os-dev-report comment 5969649788 (run 37126450806), and this patch-round comment POST /repos/objectstack-ai/objectstack/issues/21586/comments. git push x6 to the branch (not REST). No PR body PATCH.", "open_questions": [], "out_of_scope_findings": [ "carrier: maintainer, out of git · noted, not filed — the 90-second video narration still carries the old tagline (the repository description field already reads the slogan)." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
Review: ACCEPT — PR #21591 at head
cb089e2bSeat
domain:devx#2·session_011hRnra93sK5Q2gTYYTbdJR· reviewed against GitHub and the fetched branch at 2026-10-03T13:42Z, not against the report.PR shape. Draft, base
main, body opensFixes #21586,Clause-②: noat line start, session-URL footer. Labels documentation · size/l · skip-changeset; assignee matches the card. 13 files, +567 / −110.node scripts/pm/check-governed-merges.mjs --pr 21591: 0 of 13 paths governed, 677 changed lines, under the human-merge threshold.Scope and changeset. No
packages/**, nocontent/docs/references/**, nocontent/docs/releases/**, no CHANGELOG.skip-changesetholds: nothing published is touched. One file outside the card's named surface,scripts/docs-audit/handwritten-docs.json(+1 line): gate-required registration of the new page, regenerated with the gate's own--write, mechanical, same doc-gate family, no other claim on it, named in the PR body with evidence. Accepted as an in-place fix.Prose checked sentence by sentence (docs faces are seat-reviewed, no contract-review record owed).
本体即软件。, and "Apps small enough for AI to hold whole."; chip row is Executable · AI-writable · Agent-operable · You own it · Apache-2.0; "What we mean by ontology" carries all four guardrail facts (no inheritance, axioms or reasoner; not a semantic layer; projections; code moves into the runtime) and links the concept page and the glossary entry; sections run Try it → What we mean by ontology → The runtime runs it → Agents are the first users → Why the mistakes don't ship → You own it → Ship it → Hack on the framework; the "Agents are the first users" opener (objects are tools, actions are tools, permissions decide, audit records) and theclaude mcp addsnippet are present; the LICENSING sentence and the blog quote sit under "You own it". Anchor sweep: 0 links into README anchors incontent/docs,apps/docsandREADME.md;check:published-readme-linksandcheck:doc-anchorsgreen on the head.content/docs/index.mdx: first paragraph is slogan + descriptor + one link sentence to the concept page; frontmatter description aligned; the build-loop diagram unchanged.content/docs/concepts/ontology.mdx(new, 100 lines): five sections as the card asked; the six core kinds match the spec (lookup and master-detail relations; actions; permissions incl. RLS/FLS/sharing; flows; agent and tool definitions); "not a knowledge ontology" cites the retiredabstractkey and ADR-0049; "not the industry's semantic layer" and the narrower analytics-dataset sense are both stated; "constrained JSX … parsed into a server-driven UI tree, never executed" matches the sdui-parser contract; registered incontent/docs/concepts/meta.jsonaftermetadata-driven;navTitlepresent.18.stack-themes-carrier-retired.tsread first).content/docs/concepts/north-star.mdx: exactly one bridge sentence added.apps/docs/app/[lang]/page.tsx:HOME_TITLE→ "The ontology is the software" (feeds title, OG, Twitter, JSON-LD at lines 56/67/76/112); hero chip row → the four promises (patch round, commitcb089e2b, +5/−3, nothing else).apps/docs/lib/site.ts:HERO_COVER.altis the descriptor; provenance block records the template, the render script, sharp 0.35.4 and the new byte counts; width/height 2400×1200 unchanged.Cover.
docs/screenshots/hero-cover-dark.png(2400×1200, 563,953 B) viewed: headline "The ontology is the software.", subhead the descriptor, chips the four promises + Apache-2.0, layout, type and right-hand code card preserved; quality on par with the previous master.apps/docs/public/hero-cover-dark.webpderived per the provenance recipe (85,472 B). Design source now committed:docs/screenshots/hero-cover-dark.html+render-hero-cover.mjs(preinstalled Chromium only, refuses to overwrite when web fonts did not load, neverplaywright install).Verification readings (dev's, pinned to head). Docs build VERDICT command-exit 0 on both heads; 68 derived gate families run and reconciled on
7a49e296; doc gates re-run oncb089e2b(nul-bytes, doc-anchors, docs-transcript-drift) exit 0; narrowed eslint on the changed TS/JS files with the three required pieces (population from the config, JSON file count, non-type-aware invariance). API reads that git could have answered: none flagged.mcp_calls: 3 reads, no write tool.api_writes: 4 relay strokes, all throughscripts/pm.Deviations accepted. (1) README "What we mean by ontology" links the concept page before the glossary entry, and
index.mdxcarries one link sentence — both toward C2's "the page is the authority". (2) The glossary entry no longer keeps the two bullets of the earlier wording verbatim; their substance (you own it; it is executed) lives on the concept page, and C2's six-line cap governs. (3) The PR body's last acceptance note says the repository description field still carries the old tagline; measured on the PR read-back, it already reads the slogan — that half of the card's reminder is done. Only the 90-second video narration remains, out of git, for the maintainer.CI at acceptance (head
cb089e2b). TypeScript Type Check success, Build Docs success, Dogfood Regression Gate success, Governed Surface Queue Guard success, Test Core 2–6/6 success; Lint & Repo Gates and Test Core 1/6 in progress; Build Core, Temporal Conformance, Console Pin Gate expected skips (docs-only path filter). Landing (ready + auto-merge through the queue) follows once every check on this head is green.Generated by Claude Code
objectstack-fleet commentedon Oct 3, 2026
Landed: PR #21591 →
d2e687fdff, verified onorigin/mainby content at 2026-10-03T14:33Z.mainis blob-identical to the landing headcb089e2bc0:README.md7790eb1d02,apps/docs/app/[lang]/page.tsx405ba5fed4,apps/docs/lib/site.ts3698c4d98a,content/docs/concepts/ontology.mdxb773ce35b7,content/docs/getting-started/glossary.mdxb2b073e243,content/docs/index.mdxd4fa32d4dd,docs/screenshots/hero-cover-dark.png7b3dc8c96a,apps/docs/public/hero-cover-dark.webpf8f2e7c42b.mainopens on the slogan, the descriptor,本体即软件。and the proof line; the chip row is the four promises; sections run Try it → What we mean by ontology → The runtime runs it → Agents are the first users → Why the mistakes don't ship → You own it → Ship it → Hack on the framework.cb089e2b); contract review not owed (docs faces only), seat-reviewed sentence by sentence in the ACCEPT above. Queue build green; merged by the queue at 14:32Z.skip-changeset,packages/**untouched.Out of git, for the maintainer: the repository description already carries the slogan (measured); the 90-second video narration still carries the old tagline.
pm:dispatchedremoved with this comment. Seatdomain:devx#2·session_011hRnra93sK5Q2gTYYTbdJRGenerated by Claude Code
docs: positioning follow-up: home title, cover re-render, README on t…