Repository navigation
docs(readme): slim the root README to a reader's page — contributor detail moves to CONTRIBUTING.md, the stale Console-source and ROADMAP lines go, one architecture figure, LICENSING.md names ui/ as MIT #26129
Description
Filing gate ③: a maintainer-directed task. Maintainer, 2026-10-26, verbatim: 「开一个 fable 对话,评估 objectstack readme该如何改进」, then on the evaluation's recommendations 「同意,派卡处理,组织首页给我文案」. Business reason: the root README is the first page every evaluator and every coding agent reads; at 464 lines it buries the five-minute path under contributor detail, and three of its lines contradict the tree. Reader: the devx seat dispatches one os-dev; file surface README.md, CONTRIBUTING.md, LICENSING.md. Dedupe: issue search "root README slim stale Console source objectui contributor build table" → 64 hits, none open on the root README; #22164 (closed, maintainer-directed: the build-cost table in README — this card keeps its one-line summary and moves the table, on the maintainer's newer instruction above), #26052 (merged: the pnpm console:build section), #26080 (open decision: ui/ nested docs including ui/README.md — not this card; pointer posted there), #26035 (open, dispatched: retired objectui pin scripts in 32 files — the root README is already clean). Session session_01FMuBZmssbfQkVrKRtxNvng.
What is wrong today (read at main 679fc7c)
| Line(s) | Reads today | Fact |
|---|---|---|
| 435 | @objectstack/console — "Prebuilt Console SPA pinned to this release; source lives in objectui" |
The source is ui/apps/console in this repository (README line 268 and packages/console/README.md already say so); objectui is archived. |
| 403, Community | "Start with CONTRIBUTING.md and ROADMAP.md" | ROADMAP.md is stamped "Last updated: 2026-06-06" and describes retired Cloud plans; a reader takes it as the project's state. |
| "You own it" | "Everything in this repo is the open stack … Apache-2.0 with no open-core asterisks" | ui/LICENSE is MIT and ui/package.json says "license": "MIT"; LICENSING.md does not mention ui/. The claim is still permissive-only, but it is not accurate as written. |
| 24–30 and 290–297 | architecture.png and layers.png |
Two figures of the same stack; a reader looks for the difference. |
| 256–286 | "Hack on the framework": the build-time table, the --affected explanation, the console:build explanation |
40 lines for the under-10 % of readers who contribute; CONTRIBUTING.md is where they look. |
Scope
- Cut to under 300 lines by moving, not by rewriting the positioning. The first screen (quote block, tag line, GIF, the ObjectOS sentence, "Try it in five minutes") stays as it is except for the deletions below.
- First screen: drop the sentence "Ontology-driven: database, API, UI and agent tools all derive…" and "Apps small enough for AI to hold whole." from the quote block (both are restated in the sections that follow); keep one architecture figure —
layers.pngwith its two-sentence caption, delete thearchitecture.pngblock near the top (keep the file; the docs site may use it). Move the StackBlitz "No install at all?" sentence above step 1 of "Try it in five minutes". - "What we mean by ontology": one paragraph — the one-sentence definition, one sentence on what it is not (knowledge ontology, semantic layer), links to
concepts/ontologyandconcepts/compare. The "metadata-driven" paragraph moves to the blog/docs if it is not already there (it is inconcepts/ontology; verify, then delete here). - "The runtime runs it": keep the capability table and the
Ticketcode block; delete the twocurlblocks and theclient-reactsentence (the sign-in detail belongs to the docs page it links to). - "Why the mistakes don't ship": keep the four-gate table; replace the
find … | xargs cat | wc -lcommand with the measured number forexamples/app-crm(run it once, state it: "N lines of TypeScript"). - "You own it": "Everything in this repo is the open stack — … Apache-2.0" becomes accurate: "Apache-2.0, except
ui/(the Console and@object-ui/*), which is MIT — both permissive, no open-core asterisks".LICENSING.mdgains theui/line with the same wording. - "Hack on the framework": keep the six-line command block and one sentence — "A first
pnpm buildtakes about 7 minutes and the fullpnpm testabout 54 minutes on a 4-vCPU container;CONTRIBUTING.mdhas the measured table and the--affectedpath for your own change." Move the table, the--affectedparagraph and theconsole:buildexplanation verbatim intoCONTRIBUTING.md(new section "Build and test cost"). - Three layers: keep; link "ObjectUI (view)" to
ui/. - CLI table: keep as is.
- Package directory: keep collapsed; line 435 becomes "Prebuilt Console SPA, version-locked to this release; built from
ui/apps/consolein this repository". - Community: drop the
ROADMAP.mdlink (or replace it with the north-star doc the ROADMAP itself names as its source of truth:content/docs/concepts/north-star.mdx); add a Discussions line (Discussions are enabled on the repository).
Not in this card
- The hosted product's public name on line 322 ("target an ObjectStack Cloud control plane"),
packages/clihelp strings and the Console's cloud-install i18n strings — the maintainer is ruling on the name; a separate card follows the ruling. ui/README.md— [Decision] ui/ merge leftovers that no aftercare card names: six nested top-level docs, a second copy of four .claude hooks, an independently numbered ui/docs/adr, and a dead ui/.github/dependabot.yml #26080 item ①.- Badge row changes (npm version / CI badges) — optional; the dev may add an npm version badge for
create-objectstackif a workflow already publishes it, otherwise leave the row. - The organisation profile, pinned repositories and repository topics — maintainer's own action.
- A
README.zh-CN.md— not asked for.
Premises (re-check before dispatch)
- P1 —
sed -n '435p' README.mdcontains "source lives in objectui". - P2 —
head -3 ROADMAP.mdshows "Last updated: 2026-06-06". - P3 —
head -1 ui/LICENSE→ "MIT License";grep -c 'ui/' LICENSING.md→ 0. - P4 —
grep -c 'architecture.png\|layers.png' README.md→ 2. - P5 —
wc -l README.md→ 464.
Acceptance
wc -l README.md< 300; every link in README.md resolves (pnpm check:docs-linksor the repo's link checker, whichever covers README.md — docs: the link checker reads only content/**, README.md and ARCHITECTURE.md, so nine broken relative links sit in CHANGELOG.md, RELEASE_NOTES.md, docs/NEXT_STEP.md and docs/releases-maintenance.md unseen #26087 says the checker reads README.md).- The quote block, the GIF, the ObjectOS sentence, "Try it in five minutes", the capability table, the
Ticketblock, the MCP section, the four-gate table and the CLI table are present and unchanged in substance. CONTRIBUTING.mdcontains the moved table and paragraphs;LICENSING.mdnamesui/as MIT.- No changeset (root docs only →
skip-changeset, per the devx lane).
维护者速读
把根 README 从 464 行压到 300 行以内:贡献者细节(构建耗时表、--affected 说明)搬到 CONTRIBUTING.md;修掉三处陈旧(第 435 行「Console 源码在 objectui」、指向 6 月 ROADMAP 的链接、「全部 Apache-2.0」而 ui/ 其实是 MIT);两张架构图留一张。首屏定位不动。托管产品命名和 ui/README.md 不在本卡。
Activity
objectstack-fleet commentedon Oct 26, 2026
Filing audit · 2026-10-26T13:09Z ·
session_01FMuBZmssbfQkVrKRtxNvng· ⛔ not a claim, not a dispatch.Triage: lands in
README.md,CONTRIBUTING.md,LICENSING.md(root docs →domain:devx); rationale: filing gate ③, maintainer-directed on 2026-10-26 (「同意,派卡处理」 on the README evaluation);priority:p2because the maintainer asked for it directly and it is the first page every evaluator reads;area:devpath(the on-ramp). Labels at filing are the filer's suggestion; the triage seat grades. Dedupe hits are in the body (#22164 closed, #26052 merged, #26080 open decision, #26035 open). Sibling: the hosted-product name (README line 322,packages/cli, Console i18n) is held for the maintainer's ruling and will be its own card.Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop round 2 · 2026-10-26T13:24Z
Session:
session_01Q4MDXRbEJCNdPAP4SiXwp9(devx seat 2) · card threadsession_01RCk6dPzGgXCem5gzzuQJ61Account:
os-steveBranch:
claude/project-thread-b7nctw(the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record; amended on spawn)Worktree:
objectstack-issue-26129Domain:
domain:devxSeat:
domain:devx#2(seat post #20163)File surface:
README.md,CONTRIBUTING.md,LICENSING.mdonly (not governed:check-governed-merges --test→ tier none) (stop on breach; explain in the report)Container & model: M,
mode:thread,model: default tier (TIER_DEFAULT, from dispatch-gates --tier: no path-derived mandate),effort: highClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6416807747
Premise: holds (re-read on
origin/main679fc7ce+: P1 README:435 still says "source lives in objectui"; P2 ROADMAP.md "Last updated: 2026-06-06"; P3ui/LICENSEis MIT and LICENSING.md has 0ui/lines; P4 2 figure refs; P5 464 lines)Serial constraints cleared: no other
Claim:names these files; #26035 (seat 1) leaves the root README alone per its own body; #26080 (ui/README.md) is a different file; the hosted-product name on line 322 stays out per the cardMaintainer-ref: card body, 2026-10-26 「同意,派卡处理」
Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Scope amendment under a newer maintainer ruling · 2026-10-26T13:25Z ·
session_01FMuBZmssbfQkVrKRtxNvng· ⛔ not a claim, not a dispatch.Maintainer (Sam), 2026-10-26 13:11Z, verbatim: 「还是 ObjectStack 的运行时就叫 ObjectOS ,社区版免费,然后企业版是收费的」; at 13:18Z chose 「模型 2:ObjectOS 三版本」 on the decision card 「采用「ObjectOS 一个产品三个版本,ObjectStack 是协议与框架名」吗?」. Edition model: ObjectOS Community (this repository's runtime + Console, self-hosted, free) / ObjectOS Cloud / ObjectOS Enterprise; ObjectStack = the protocol, SDK, CLI and framework name.
Two lines of this card's scope change accordingly; nothing else does:
ghcr.io/objectstack-ai/objectstackimage,os start, the Console); hosted is ObjectOS Cloud; self-managed and licensed is ObjectOS Enterprise. One sentence, two links (objectos.ai, the Ship-it section).ui/) sentence from the original item.Line 322 ("ObjectStack Cloud control plane") stays out of this card: it is on the naming card filed today in this repository together with the CLI help strings and the Console i18n (search the title "brand(runtime): the hosted product is "ObjectOS Cloud"").
Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
os-dev-report
{ "issue": 26129, "status": "done", "branch": "claude/project-thread-b7nctw", "pr": "https://github.com/objectstack-ai/objectstack/pull/26148", "session": "session_01RCk6dPzGgXCem5gzzuQJ61", "premise_still_valid": true, "summary": "Root README slimmed 464 -> 277 lines at head b650e87e: scope items 1-11 plus the 6417139067 amendment (ObjectOS three-edition line; honest You-own-it wording). The build-cost table, the --affected paragraph and the console:build explanation moved verbatim to CONTRIBUTING.md 'Build and Test Cost'; LICENSING.md names ui/ as MIT with the README's exact wording. P1-P5 re-read on origin/main 95294be3: all hold. Item 3's sub-premise (the metadata-driven paragraph is already in concepts/ontology) does not hold; see deviations.", "tests": "docs-only; no package touched. wc -l README.md = 277. Local link resolver over README.md, CONTRIBUTING.md, LICENSING.md: 124 internal links and fragments, 0 bad, exit 0; negative control (1 missing file + 1 bad fragment) reported 2 bad, exit 1. Verbatim-move proof: the 30 original README lines (console:build .. Other examples) occur exactly once in CONTRIBUTING.md; the package directory differs from the original only by the item-10 Console row (diff: 1 line).", "gates": "head b650e87e, dispatch-gates --commands: 9 derived, each exit captured before any pipe: check-closing-keyword-parity :: exit 0; check-closing-keyword-parity --self-test :: exit 0; check-comment-mask-corpus :: exit 0; check:doc-anchors :: exit 0 (601 fragment links resolve); check:driver-memory-census :: exit 0; check:gitlink-declared :: exit 0; check:nul-bytes :: exit 0; check:refd-timer-probe :: exit 0; check:watch-hint-literal :: exit 0. --ran: 9 derived, 9 run, 0 NOT-MEASURED. CI check-runs (Check Links, Lint and Repo Gates, type-check lanes): in_progress at report time.", "line_budget": { "README.md": { "before": 464, "after": 277, "ceiling": 300 }, "CONTRIBUTING.md": { "before": 158, "after": 321 }, "LICENSING.md": { "before": 19, "after": 23 }, "changed_lines": "454 (+217 / -237) by dispatch-gates, under the 3000 human-merge threshold" }, "files_changed": [ "README.md", "CONTRIBUTING.md", "LICENSING.md" ], "deviations": [ "D1 package directory (128 lines) moved verbatim to CONTRIBUTING.md#package-directory; README keeps a 2-line pointer. Items 2-11 alone measured README at 397 lines, so under 300 is unreachable while it stays; it is not on the Acceptance must-stay list. Reverting that hunk returns README to about 400 lines and fails Acceptance line 1.", "D2 the 'Other examples' line moved with the build section; the 'AGENTS.md is the working rulebook ... CONTRIBUTING.md covers the workflow' sentence was dropped (CONTRIBUTING.md already opens with it).", "D3 item 3 sub-premise false: grep -rn 'previous generation|names the mechanism' content/ gives 0 hits; the closest is concepts/compare 'Metadata-driven application platforms / The difference', now linked. Paragraph deleted per card; content/ is outside the file surface.", "D4 bounded in-place fixes within the file surface, same class as the card: README Community ObjectOS line and the LICENSING.md ObjectOS paragraph aligned with the edition ruling (else they contradict the new first-screen sentence); README License section uses the same license sentence; CONTRIBUTING step 1 ROADMAP pointer dropped; two CONTRIBUTING pointers to the README build table and package directory re-pointed inside CONTRIBUTING.", "D5 external links NOT MEASURED online (container egress gives curl 000 for objectstack.ai / objectos.ai / shields); CI Check Links is lychee --offline, internal only." ], "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "2 — fleet-write relay: pr_create (POST /repos/objectstack-ai/objectstack/dispatches, run 40333097099, PR #26148, 6430 bytes read back identical, assignee os-steve, label skip-changeset); this os-dev-report comment via post-stamped. git push is not counted (not REST).", "open_questions": [ { "question": "Keep the package directory in CONTRIBUTING.md (D1)?", "options": [ "A keep the move: README 277 lines, Acceptance green", "B move it back: README about 400 lines, Acceptance line 1 red, card re-scoped" ], "recommendation": "A, because it is the only way to meet the card's under-300 target without deleting content" } ], "out_of_scope_findings": [ "carrier: #26136 — README 'target an ObjectStack Cloud control plane' and the cloud-connection row 'ObjectStack cloud control plane' (now in CONTRIBUTING.md) stay for the naming card · noted, not filed", "class: none · the metadata-driven vs ontology-driven paragraph has no home in content/ after this PR (D3) · carrier: seat, only if the wording should survive · noted, not filed" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
devx seat 2 · review: ACCEPT → PR #26148 comment 6417616071. Landing: ready + merge queue (all checks on the reviewed head green or skipped).
Generated by Claude Code