You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Apps small enough for AI to hold whole. ObjectStack turns the whole app — data model, UI, workflows, permissions — into typed metadata: a complete CRM in under 150k tokens, one context window. Agents read it whole, reason it whole, refactor it whole.
README 首段紧随其后的拆分行(100k 业务逻辑强调,维护者要点):
The business logic alone — every object, workflow and permission — is under 100k tokens; the UI adds just 50k more.
范围与清扫
根 README.md:首屏 tagline 替换 + 拆分行加入首段。
全仓 grep 旧口径并对齐:旧句式("A complex business system in 170k tokens" / "compresses an entire app" / 单独出现的 100k 整体性主张等)在 README*、content/docs/** 首页/概览页中的出现处,换新定稿或改写至与两条新句数字一致——数字纪律:150k 恒指整 app(含 UI),100k 恒指业务逻辑,⛔ 两个数字不得互换宿主名词。
{
"issue": 9241,
"status": "done",
"branch": "claude/issue-9241-readme-tagline",
"pr": "https://github.com/objectstack-ai/objectstack/pull/9242",
"premise_still_valid": true,
"summary": "files_changed=2 (README.md, apps/docs/app/[lang]/page.tsx), +30/-21, head 89e946c50. Sweep counts: 6 spots changed, 10 hits decided-not-changed (all enumerated with reasons in the PR body), 0 residual old-copy hits on re-grep. Definitive text used verbatim on 3 surfaces (README hero, docs h1+lead, docs page metadata), asserted mechanically as whitespace-normalized substring containment, not by eye — headline/body split is the README's own pre-existing shape, no words altered. Number discipline: 150k=whole app incl. UI, 100k=business logic, never swapped. Deviations: (a) the docs homepage hero lives in apps/docs/app/[lang]/page.tsx, not under content/docs — treated as in scope per the card's '文档首页 hero' wording; (b) the retired anchor link [a complete CRM is under 170k tokens](#why-the-mistakes-dont-ship) was dropped rather than re-pointed, because the definitive copy carries no link; (c) not a gen:docs artifact — page.tsx is hand-authored, so no regeneration was owed. Observed, no action taken: the GitHub repo description field already carries the new tagline, so issue item 4 is already satisfied by the maintainer. No queue action taken, per the card.",
"tests": "Union re-run AFTER the final commit, at 89e946c50 (git rev-parse --short HEAD; HEAD unchanged across the union). (1) node scripts/check-nul-bytes.mjs --self-test -> '75 assertions over a temp git repo'; node scripts/check-nul-bytes.mjs -> 'OK (scanned 6039 text file(s) ... no raw ASCII control bytes)'. (2) targeted grep -naP control-byte self-scan of both changed files -> clean. (3) pnpm --filter @objectstack/docs types:check (fumadocs-mdx + next typegen + tsc --noEmit) -> 'Types generated successfully', EXIT=0, run under flock /tmp/os-heavy-verify.lock. (4) node scripts/pm/dispatch-gates.mjs re-derived against the actual changed paths -> 'No check family names the given paths ... and no workflow path filter schedules one for them'; no model-tier path mandate; check:nul-bytes run anyway as the every-edit family. No changeset (both surfaces unpublished; @objectstack/docs is private:true) -> skip-changeset applied and READ BACK: labels are ['documentation','size/s','skip-changeset']. No ablation in this card, so no rebuild claim is owed. CI gate conclusions not awaited, per the report-at-draft-PR-time rule.",
"open_questions": [
{
"question": "Non-blocking, for the maintainer: the definitive tagline says a complete CRM is under 150k tokens, while three docs surfaces measure the bundled examples/app-crm at ~16k, and both read as 'a complete CRM'. The tension is pre-existing (the retired tagline said 170k alongside the same 16k pages), so this PR neither reconciles nor hides it. Should the two figures be given distinct host nouns?",
"options": [
"A. Leave as-is — the coexistence is the maintainer's prior arrangement; the tagline claims a full-featured CRM, the pages measure the minimal bundled example.",
"B. Re-label the measured figure at its three sites as 'the bundled example CRM' (not 'the whole business system'), leaving both numbers untouched — a separate docs card, since it edits pages this card's copy did not.",
"C. Re-measure examples/app-crm against the 150k claim and restate one of the numbers."
],
"recommendation": "B as a separate card, A for now. Real business need: the reader-facing risk is a credibility gap on the first screen, which is measured by what the two sentences literally claim, not speculative. Long-term soundness: distinct host nouns for distinct artifacts is the same discipline this card already enforces for 150k/100k, so B extends the rule rather than patching a symptom. Hard-to-get-wrong: B fixes it structurally at authoring time — one noun per artifact — whereas C invents numbers and would require editing definitive copy, which this card forbids outright. Not filed as its own issue because it is already enumerated as a decided-not-changed hit in this PR's body, where the card asked for it; say the word and I will file it standalone."
}
],
"out_of_scope_findings": []
}
PR: #9242, head 89e946c50, +30/−21 across README.md + apps/docs/app/[lang]/page.tsx.
Checklist: definitive copy verbatim on all three surfaces (README hero, docs h1+lead, docs page metadata) — verified against the diff, not the report; number discipline held (150k=whole app incl. UI, 100k=business logic, no host-noun swap); old copy fully swept (170k / 16k / "under 2,000 lines" all gone, re-grep zero residual); 10 decided-not-changed hits enumerated with reasons in the PR body; releases/** untouched; skip-changeset read back (docs surfaces unpublished/private).
Spot-checks: dropped anchor link (deviation b) correct — definitive copy carries no link, target section still exists for in-page readers; page.tsx hand-authored, no regen owed (deviation c verified by path).
Landing: non-ADR path — flip checkpoint armed; at green gate-job conclusions: ready → auto-merge (SQUASH) → timeline-verified enqueue.
Escalated to maintainer (non-blocking): the pre-existing 16k "bundled example CRM" figure on three docs pages vs the 150k tagline — recommendation on the seat thread.
Activity
os-zhuang commentedon Aug 17, 2026
Claim: session_017TNzEetykdh7ceZGwuAPLq
Branch: claude/issue-9241-readme-tagline
席位:skills 车道 PM(维护者本轮直接指派的内容卡)。
Clause-②: no(契约面零接触)。Container & model: opus(无路径强制,默认档)。
面:README.md + content/docs 首页/概览命中处;非 ADR,复核后正常队列落地。
Generated by Claude Code
os-zhuang commentedon Aug 17, 2026
{ "issue": 9241, "status": "done", "branch": "claude/issue-9241-readme-tagline", "pr": "https://github.com/objectstack-ai/objectstack/pull/9242", "premise_still_valid": true, "summary": "files_changed=2 (README.md, apps/docs/app/[lang]/page.tsx), +30/-21, head 89e946c50. Sweep counts: 6 spots changed, 10 hits decided-not-changed (all enumerated with reasons in the PR body), 0 residual old-copy hits on re-grep. Definitive text used verbatim on 3 surfaces (README hero, docs h1+lead, docs page metadata), asserted mechanically as whitespace-normalized substring containment, not by eye — headline/body split is the README's own pre-existing shape, no words altered. Number discipline: 150k=whole app incl. UI, 100k=business logic, never swapped. Deviations: (a) the docs homepage hero lives in apps/docs/app/[lang]/page.tsx, not under content/docs — treated as in scope per the card's '文档首页 hero' wording; (b) the retired anchor link [a complete CRM is under 170k tokens](#why-the-mistakes-dont-ship) was dropped rather than re-pointed, because the definitive copy carries no link; (c) not a gen:docs artifact — page.tsx is hand-authored, so no regeneration was owed. Observed, no action taken: the GitHub repo description field already carries the new tagline, so issue item 4 is already satisfied by the maintainer. No queue action taken, per the card.", "tests": "Union re-run AFTER the final commit, at 89e946c50 (git rev-parse --short HEAD; HEAD unchanged across the union). (1) node scripts/check-nul-bytes.mjs --self-test -> '75 assertions over a temp git repo'; node scripts/check-nul-bytes.mjs -> 'OK (scanned 6039 text file(s) ... no raw ASCII control bytes)'. (2) targeted grep -naP control-byte self-scan of both changed files -> clean. (3) pnpm --filter @objectstack/docs types:check (fumadocs-mdx + next typegen + tsc --noEmit) -> 'Types generated successfully', EXIT=0, run under flock /tmp/os-heavy-verify.lock. (4) node scripts/pm/dispatch-gates.mjs re-derived against the actual changed paths -> 'No check family names the given paths ... and no workflow path filter schedules one for them'; no model-tier path mandate; check:nul-bytes run anyway as the every-edit family. No changeset (both surfaces unpublished; @objectstack/docs is private:true) -> skip-changeset applied and READ BACK: labels are ['documentation','size/s','skip-changeset']. No ablation in this card, so no rebuild claim is owed. CI gate conclusions not awaited, per the report-at-draft-PR-time rule.", "open_questions": [ { "question": "Non-blocking, for the maintainer: the definitive tagline says a complete CRM is under 150k tokens, while three docs surfaces measure the bundled examples/app-crm at ~16k, and both read as 'a complete CRM'. The tension is pre-existing (the retired tagline said 170k alongside the same 16k pages), so this PR neither reconciles nor hides it. Should the two figures be given distinct host nouns?", "options": [ "A. Leave as-is — the coexistence is the maintainer's prior arrangement; the tagline claims a full-featured CRM, the pages measure the minimal bundled example.", "B. Re-label the measured figure at its three sites as 'the bundled example CRM' (not 'the whole business system'), leaving both numbers untouched — a separate docs card, since it edits pages this card's copy did not.", "C. Re-measure examples/app-crm against the 150k claim and restate one of the numbers." ], "recommendation": "B as a separate card, A for now. Real business need: the reader-facing risk is a credibility gap on the first screen, which is measured by what the two sentences literally claim, not speculative. Long-term soundness: distinct host nouns for distinct artifacts is the same discipline this card already enforces for 150k/100k, so B extends the rule rather than patching a symptom. Hard-to-get-wrong: B fixes it structurally at authoring time — one noun per artifact — whereas C invents numbers and would require editing definitive copy, which this card forbids outright. Not filed as its own issue because it is already enumerated as a decided-not-changed hit in this PR's body, where the card asked for it; say the word and I will file it standalone." } ], "out_of_scope_findings": [] }Generated by Claude Code
os-zhuang commentedon Aug 17, 2026
PM review — ACCEPT · queue landing pending CI
PR: #9242, head
89e946c50, +30/−21 across README.md + apps/docs/app/[lang]/page.tsx.Checklist: definitive copy verbatim on all three surfaces (README hero, docs h1+lead, docs page metadata) — verified against the diff, not the report; number discipline held (150k=whole app incl. UI, 100k=business logic, no host-noun swap); old copy fully swept (170k / 16k / "under 2,000 lines" all gone, re-grep zero residual); 10 decided-not-changed hits enumerated with reasons in the PR body; releases/** untouched; skip-changeset read back (docs surfaces unpublished/private).
Spot-checks: dropped anchor link (deviation b) correct — definitive copy carries no link, target section still exists for in-page readers; page.tsx hand-authored, no regen owed (deviation c verified by path).
Landing: non-ADR path — flip checkpoint armed; at green gate-job conclusions: ready → auto-merge (SQUASH) → timeline-verified enqueue.
Escalated to maintainer (non-blocking): the pre-existing 16k "bundled example CRM" figure on three docs pages vs the 150k tagline — recommendation on the seat thread.
Generated by Claude Code