Skip to content

[finding] docs on-ramp drift a first-time reader hits in sequence: stale CONTRIBUTING.md (retired spec repo), README's first curl gets 401, three pnpm floors, "three examples" vs five, os dev --help / os init strings, tutorial transcript #22156

Description

@objectstack-fleet

Filing gate: ① user-visible defects with named landing spots (finding class (a): "能用但用户可见地错 … 误导文案"), folded into one card per the filing gate's quota rule — seven doc/help-string items, each a one-line fix, each verified in this session.
reach: public entries measured once each — git clone + ls for the CONTRIBUTING links (absent), curl for the README data endpoint (401), npx os dev --help and npx os init --no-install for the help strings, pnpm run validate for the tutorial transcript.
Reader: domain:devx seat for CONTRIBUTING.md, README.md, content/docs/getting-started/{index,examples,build-with-claude-code}.mdx; domain:cli for the two CLI strings (os dev --help port text in packages/cli/src/commands/dev.ts, os init next-steps text).
Dedup: search_issues "CONTRIBUTING.md stale outdated references spec repository internal/planning PRIORITIES.md" → 0 on CONTRIBUTING (#12366, closed, cleaned the docs-site spec links only); "README curl data endpoint returns 401 UNAUTHENTICATED without sign-in example misleading" → 0; "docs prerequisites pnpm 8+ vs pnpm 10 inconsistent README getting-started examples three examples os dev --help PORT OS_PORT" → 0 (open + closed).
Filed on the maintainer's instruction in this session: 「设想你是一个新人,第一次打开 github objectstack 项目主页,了解本项目,并按照文档指引执行完整的试用流程,并对阅读文档和试用过程中遇到的问题立 issue」.

Summary

Walking README → Getting Started → scaffold → validate → dev as a newcomer on main (packages at 17.7.0), these are the places where the text and the tool disagree. None blocks the flow; each costs a double-take, and together they read as "the docs are not run". One card because every item is a one-line fix in a doc or a help string; split if the owning seat prefers.

1. CONTRIBUTING.md describes the retired objectstack-ai/spec repository

The README's Community section sends a contributor here first. On a fresh clone of main:

Line(s) What it says What is true
34, 38 git clone https://github.com/YOUR_USERNAME/spec.git / git remote add upstream https://github.com/objectstack-ai/spec.git the repository is objectstack-ai/objectstack
55–56, 425 links to ./internal/planning/PRIORITIES.md, DEVELOPMENT_ROADMAP.md, PLANNING_INDEX.md no internal/ directory exists
57, 443 objectstack-ai/spec/issues, objectstack-ai/spec/discussions wrong repository
26 PNPM >= 8.0.0 packageManager pins pnpm@10.31.0; README says pnpm 10
153–156 docs live in content/docs/guides/ and content/docs/specifications/ neither directory exists
371–375 bilingual my-schema.mdx / my-schema.cn.mdx zero *.cn.mdx files under content/docs/
1–3 "Contributing to ObjectStack Protocol … the protocol specifications" the repo is the whole open stack

It also never mentions AGENTS.md, which CLAUDE.md and the README call the single source of truth, and shows a git add . + push-to-fork flow in place of the worktree-first, changeset-carrying flow that actually gates a PR.

2. README's first curl returns 401

README, "The runtime runs it": "The REST API exists the moment the object does — no controllers to write:" followed by curl http://localhost:3000/api/v1/data/support_desk_ticket. Against a scaffolded project this answers 401 {"error":"UNAUTHENTICATED",…}. The scaffolded project's own README and your-first-project.mdx show the sign-in/email call first; the root README should too, or say the endpoint needs a session.

3. Three pnpm floors for one monorepo

README: pnpm 10 (corepack enable); getting-started/index.mdx and examples.mdx: pnpm 8+; CONTRIBUTING.md: >= 8.0.0; package.json: packageManager: pnpm@10.31.0 — the only value corepack honours.

4. "The monorepo ships three ready-to-run examples"

examples.mdx opens with three (Todo, CRM, Showcase); examples/ holds five (app-multi-package, embed-objectql as well), the README lists all five, and the same page documents app-multi-package further down.

5. os dev --help and the docs disagree on the port variable

npx os dev --help → -p, --port=<value> Server port (overrides $PORT). deployment/cli.mdx → OS_PORT / PORT; getting-started/index.mdx → "OS_PORT; PORT is the legacy alias". The CLI reads readEnvWithDeprecation('OS_PORT', 'PORT') (packages/cli/src/utils/port-contract.ts), so the help string names only the deprecated spelling.

6. The tutorial's "clean" transcript omits a warning its verbatim example produces

build-with-claude-code.mdx says every example passes os validate verbatim and prints, under "Once it's clean", a transcript with no warning. It does pass — but description: Field.textarea(…) on the ticket object sits in no view, so every validate / build / dev run prints the field-no-consumers warning for it (a ~900-character paragraph). Either place description on a view in the example, or show the warning and say why it is expected.

7. os init writes a pnpm project and then says npm install

npx os init init-app --no-install writes pnpm-workspace.yaml and "engines": { "pnpm": ">=10.15" }, then prints npm install # Install dependencies under Next steps. create-objectstack already prints the detected package manager (pnpm run dev); os init should do the same, or drop the pnpm-only files when it recommends npm.

Environment

Fresh clone of main; create-objectstack@17.7.0, @objectstack/cli@17.7.0; Node v22.22.0; pnpm 10.31.0; npm 10.9.4. Every command above was run in this session.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    Path: the road — start: the docs on-ramp reads true | 缺项 | P3

    Triage: first grade, documentation · priority:p3 · domain:devx · area:devpath · pm:queue (finding removed). Direction: the seven one-line fixes, as listed

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-08T05:09Z. ⛔ Not a claim, ⛔ not a dispatch.

    Triage: lands in CONTRIBUTING.md, README.md and content/docs/getting-started/{index,examples,build-with-claude-code}.mdx, plus two CLI help strings (packages/cli/src/commands/dev.ts, os init's next-steps text) ⇒ domain:devx; rationale: the docs are that lane's; the two CLI strings are declared to domain:cli cross-lane. Read on main ec8f37c890.

  2. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_0115N1oNnQS5WqofZ2DzaT3q
    Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-22156-docs-onramp-drift
    Worktree: objectstack-issue-22156
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: CONTRIBUTING.md, README.md (the data-endpoint curl example), content/docs/getting-started/index.mdx, content/docs/getting-started/examples.mdx, content/docs/getting-started/build-with-claude-code.mdx; cross-lane into domain:cli (declared on its seat post): packages/cli/src/commands/dev.ts (the --port flag description) and packages/cli/src/commands/init.ts (the Next-steps text), with any test pinning those two strings; one patch .changeset/22156-*.md for @objectstack/cli (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: opus — the default tier; dispatch-gates --tier: "no path-derived mandate", so the PM's per-card call (seven items, two of them with a choice to make)
    Clause-②: no
    Responsibility: this lane's on-ramp docs and two CLI help strings | none | every first-time reader walking README → Getting Started → scaffold, today
    Thread-read: 6052757727
    Serial constraints cleared: PR #22193 (domain:spec, draft) edits build-with-claude-code.mdx at the "author-time rules (49)" transcript line — a different hunk from item 6; whichever lands later merges main. PR #22215 (draft) edits getting-started/your-first-project.mdx, outside this surface. #22155/#22164 and #22152/#22165 (the README and getting-started serial predecessors triage named) are landed. No open PR touches CONTRIBUTING.md, README.md, index.mdx, examples.mdx or the two CLI files (9 open PRs' file lists read); in-flight domain:devx claims (#22085, #22014, #22253) are disjoint — open-PR file lists read at 2026-10-08T10:20Z


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 22156,
    "status": "done",
    "branch": "claude/issue-22156-docs-onramp-drift",
    "pr": "#22280",
    "session": "session_0115N1oNnQS5WqofZ2DzaT3q (mode:subagent, the dispatching PM session's id; the container's CLAUDE_CODE_REMOTE_SESSION_ID resolves to the same id)",
    "premise_still_valid": true,
    "summary": "All seven items fixed as the card measures them, each re-measured on the branch first (base 3513ac7, main 8cbe255 merged in at 8fe75a2 because #22193 landed during the run). Items 1-6 are docs. Items 5 and 7 are the two CLI strings, carried by one patch changeset for @objectstack/cli. Item 7's real defect is wider and its literal repro is narrower than the card says: under --no-install the chosenPm variable kept its literal 'npm' initialiser, so --package-manager pnpm and pnpm-invoked runs printed npm install too. The fix resolves it before the install branch. A plain npx run still prints npm install, which is correct because the scaffold deliberately supports npm (init.test.ts pins it), so no scaffold files change. Item 6 took the PM's clean-example route on the four axes: the view file declares the create and edit form that places description. Verbatim validate: the old page warns field-no-consumers, the new page passes with 50 rules and no warning.",
    "items": {
    "1": "CONTRIBUTING.md rewritten for this repo. Every card row fixed: title and scope, objectstack.git clone and upstream URLs, issue and discussion URLs, internal/planning links removed, real docs trees listed with references/ marked generated and releases/ release-owned (the old text told authors to hand-write MDX in references/), the .cn.mdx section removed, pnpm 10, the dead QUICK_START_IMPLEMENTATION.md link removed. It points to AGENTS.md instead of restating rules, adds the changeset step and the worktree note, and keeps the needs:pack-smoke criterion word for word because pack-smoke-optin.yml cites this file for it.",
    "2": "README data curl now signs in first (POST /api/v1/auth/sign-in/email as the seeded dev admin, cookie jar) and then GETs with the cookie, with one sentence saying data calls need a session. Measured on a booted tutorial scaffold: no session 401 UNAUTHENTICATED, sign-in 200, with cookie 200.",
    "3": "One floor, pnpm 10, in README (already said it), getting-started/index.mdx, examples.mdx and CONTRIBUTING.md. Measured: root engines declares only node. packageManager is pnpm@10.31.0. A global pnpm 10.28.0 runs as 10.31.0 inside the repo. pnpm@8.15.9 gives ERR_PNPM_LOCKFILE_BREAKING_CHANGE and pnpm@9.15.9 gives ERR_PNPM_LOCKFILE_CONFIG_MISMATCH (overrides) on a frozen install.",
    "4": "examples.mdx now opens with five examples: three runnable apps, each with a pnpm dev:* script, then app-multi-package (linked to its section) and embed-objectql, matching the tree and the README table.",
    "5": "dev.ts --port help now reads 'Server port (overrides $OS_PORT; $PORT is the legacy alias)'. Verified with os dev --help on the built CLI. No test, snapshot or generated docs page pins the string.",
    "6": "The tutorial's view file gains a form (one section, name ticket, with subject, description, priority and status). The prompt asks for the form, one paragraph explains field-no-consumers, and the clean transcript adds the Logic and Security lines the command prints today. The (50) rule-count line from #22193 is untouched.",
    "7": "init.ts resolves chosenPm before the install branch, by the same rule (flag, then user agent, then npm). Measured before and after on the built CLI: npm agent with no flag gives npm install both times (control). npm agent with --package-manager pnpm went from npm install to pnpm install. pnpm agent with no flag went from npm install to pnpm install."
    },
    "tests": "HEAD 8fe75a2. New unit-tier test packages/cli/src/commands/init-next-steps-package-manager.test.ts (in-process Init.run, 3 cases), 3 passed. Ablation with the fix committed: scripts/ablation-replace.mjs restored the old semantics (anchor 1 to 0, blob c4c2caca to 9b93b146) and 2 of 3 failed (flag case and pnpm-agent case), the npm control passed. Restored: blob == HEAD and git diff HEAD is empty. pnpm --filter @objectstack/cli typecheck: VERDICT command-exit 0, check:test-typecheck OK. pnpm --filter @objectstack/cli exec vitest run --project unit --maxWorkers=2: 265 files, 3918 tests passed. The integration tier is declared to CI because the diff touches no spawn entry or integration-tier file. The first full unit run was red only on the new test (5s default timeout under load, which let one run leak into the next case), fixed with the 60s budget the in-process doctor tests use. Item 6: verbatim os validate on a blank scaffold with the page's files passes with no warning at 8fe75a2, the old view still warns (control), and tsc --noEmit on the scaffold passes with ticket.view.ts confirmed in --listFiles.",
    "gates": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at 8fe75a2 (merge base 8cbe255, 9 paths): 94 commands, all 94 exit 0. --ran reconciliation (with exit codes): 94 derived, 94 run, 0 NOT-MEASURED (a derived zero). History: the first pass at 6be33e2 had one real red, check-docs-section-name (the new form section lacked name, fixed), and four exit 3 prerequisite refusals: plugin-teardown self-test on the shallow clone (cleared by fetching its pinned fixture commit), and spec check:skill-examples, check:dual-build-cjs-loads and check:i18n-coverage (cleared by a full pnpm build). CI on PR #22280: in_progress at report time, not waited on.",
    "line_budget": "+256 / -407 over 9 files (663 changed lines, under the 5000 human-merge threshold). No skills/** or governed path touched. CONTRIBUTING.md shrinks 447 to 158 lines.",
    "files_changed": [
    ".changeset/22156-cli-port-help-and-init-next-steps.md",
    "CONTRIBUTING.md",
    "README.md",
    "content/docs/getting-started/build-with-claude-code.mdx",
    "content/docs/getting-started/examples.mdx",
    "content/docs/getting-started/index.mdx",
    "packages/cli/src/commands/dev.ts",
    "packages/cli/src/commands/init-next-steps-package-manager.test.ts",
    "packages/cli/src/commands/init.ts"
    ],
    "deviations": [
    "Merged main (8cbe255) into the branch at 8fe75a2. The serial note said the later PR merges main, and #22193 landed mid-run. The merge was clean, and I rebuilt and re-ran everything after it.",
    "Added a test file not named in the boundaries: packages/cli/src/commands/init-next-steps-package-manager.test.ts (unit tier, in the declared cli/commands directory). It pins the fixed Next-steps behaviour; no existing test pinned either string.",
    "Commit trailers use the model-free pair AGENTS.md requires (Co-authored-by: Claude) rather than the harness reminder's model-named trailer. The PR body footer uses the AGENTS.md session-URL form rather than the reminder's form. AGENTS.md outranks the reminder by the reminder's own precedence line.",
    "Fetched commit 621a487 into the shared object store (no ref written) so check-plugin-teardown-shape --self-test could read its pinned fixture on this shallow clone.",
    "Created and removed one throwaway detached worktree at the base commit for the pnpm 8 and 9 probes. Its status was clean (no node_modules), and it was removed without --force."
    ],
    "mcp_calls": "0",
    "api_writes": "3: POST /repos/objectstack-ai/objectstack/pulls via fleet-write relay (pr_create, PR #22280, read-back identical 10927 bytes); POST /repos//issues/22280/assignees via label-write relay (os-sales, read back); POST /repos//issues/22156/comments via post-stamped (this report). Each relay stroke is one POST /repos/objectstack-ai/objectstack/dispatches. Plus git push of the branch (not REST).",
    "open_questions": [],
    "out_of_scope_findings": [
    "class: a · reach: public door os start --help prints 'Port to listen on (overrides $PORT, default 3000)' while start reads OS_PORT first (start.ts readEnvWithDeprecation('OS_PORT', 'PORT')) · evidence: measured on the built CLI at 8fe75a2, landing packages/cli/src/commands/start.ts:94. Same defect as #22156 item 5, but the file is outside the PM-declared surface, so not edited · dedupe words: os start --help port OS_PORT PORT legacy alias help text",
    "class: a · family: pnpm floor drift, the family of #22156 item 3 (fold together, no single-point card) · reach: (1) content/docs/getting-started/your-first-project.mdx:25 says 'pnpm 8+' for a scaffolded project. Measured: pnpm@9.15.9 install on an os init scaffold gives ERR_PNPM_UNSUPPORTED_ENGINE, expected version floor 10.15. (2) examples/app-todo/README.md:101 says 'pnpm 8+' for the monorepo. Measured: pnpm@8.15.9 frozen install gives ERR_PNPM_LOCKFILE_BREAKING_CHANGE · carrier: PR #22215 (draft) edits your-first-project.mdx; app-todo README: carrier none · dedupe words: pnpm 8+ floor your-first-project app-todo README engines 10.15",
    "carrier: none · noted, not filed: create-objectstack names pnpm when pnpm --version succeeds, while os init reads npm_config_user_agent, so under npx with pnpm installed the two scaffolders name different package managers. Both instructions install.",
    "carrier: none · noted, not filed: the field-no-consumers headline says 'nothing in this stack reads or displays it' for a field the default (unkeyed) form draws. The rule's docblock excludes that fallback layout on purpose (crediting it would credit every visible field), so I judged it working to its contract, not a lint false positive. packages/lint not edited.",
    "carrier: none · noted, not filed: the new tutorial form view was not driven in a browser (no objectui build here). That a defineView form is the create and edit surface is a reading of examples/app-crm/src/views/lead.view.ts."
    ]
    }


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim revision (file surface) for claim 6057756010 · domain:devx seat 1 · session_0115N1oNnQS5WqofZ2DzaT3q · 2026-10-08T11:44Z. Same session, same branch claude/issue-22156-docs-onramp-drift, same PR #22280.

    The seat's review of PR #22280 (head 8fe75a222c) sends one patch round. Three same-class locations the developer reported are folded into this card instead of a new one, because each meets all four in-place conditions (same defect class as item 3 or 5, mechanical, no other claim, same gate family):

    The round also tightens one sentence the PR adds to build-with-claude-code.mdx so its consumer list is not read as exhaustive. No other file joins the surface.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 22156,
    "status": "done",
    "branch": "claude/issue-22156-docs-onramp-drift",
    "pr": "#22280",
    "session": "session_0115N1oNnQS5WqofZ2DzaT3q (mode:subagent, the dispatching PM session's id)",
    "premise_still_valid": true,
    "round": "patch round 1 (authority: claim surface revision 6059133597 on #22156, cross-lane addendum 6059144201 on #6024)",
    "summary": "Patch round 1 adds the four changes on the same branch in commit daed4bb, then merges main at c8bb3c8 (head fae8125, pushed, PR still draft). (1) The tutorial's field-no-consumers sentence is now visibly non-exhaustive: one sentence, 'a view, a form, a flow, a formula or an action, among the others the rule counts'. (2) The start.ts --port help names OS_PORT with PORT as the legacy alias and keeps 'default 3000', which measured true. (3) The your-first-project.mdx row now says pnpm 10.15+, the floor both scaffolders write. (4) The examples/app-todo/README.md line now says pnpm 10 (corepack enable). The changeset names os start, still one patch for @objectstack/cli. The PR body item table carries all four with before and after values and measurements, and the matching Acceptance-notes lines are removed.",
    "items_round1": {
    "1_sentence": "build-with-claude-code.mdx: 'A field that no view, form, flow, formula or action names gets…' became 'A field that no consumer names (a view, a form, a flow, a formula or an action, among the others the rule counts) gets an advisory field-no-consumers warning from os validate.' Nothing else in the paragraph changed. Re-ran the page's examples verbatim at fae8125: 50 rules, passed, no warning.",
    "2_start": "start.ts:94 'Port to listen on (overrides $PORT, default 3000)' became 'Port to listen on, default 3000 (overrides $OS_PORT; $PORT is the legacy alias)'. Measured on the CLI built at fae8125: os start --help prints the new text. Each os start ran in an empty directory inside an unshare -n private network namespace, so the shared port 3000 was untouched. No port variable gave API http://localhost:3000/, OS_PORT=41077 gave :41077, and OS_PORT=41077 with --port 41078 gave :41078. No test, snapshot or generated page pins the old string. start-port-banner-agreement.e2e.test.ts:204 quotes it in a comment only.",
    "3_your_first_project": "your-first-project.mdx:25 'npm 9+ / pnpm 8+ / yarn / bun' became 'npm 9+ / pnpm 10.15+ / yarn / bun'. The value is read from source: create-objectstack/src/templates/blank/package.json engines.pnpm and init.ts SCAFFOLD_PNPM_RANGE, both 10.15. Measured: pnpm@9.15.9 install on an os init scaffold gives ERR_PNPM_UNSUPPORTED_ENGINE. npm, yarn and bun are unchanged and were not measured. The engines.protocol line is untouched.",
    "4_app_todo": "examples/app-todo/README.md:101 'Node.js 22+ and pnpm 8+' became 'Node.js 22+ and pnpm 10 (corepack enable)', worded like README and examples.mdx."
    },
    "tests": "Head fae8125. pnpm --filter @objectstack/cli typecheck: exit 0 (check:test-typecheck OK). pnpm --filter @objectstack/cli exec vitest run --project unit --maxWorkers=2: 265 files, 3918 tests passed, under one lock hold with VERDICT command-exit 0. The integration tier is declared to CI: the round adds a flag description only, with no spawn entry or integration-tier file. The init ablation from round 0 stands, since init.ts was not touched this round. Tutorial examples re-validated verbatim at fae8125, clean. Rebuild after the merge: pnpm install --frozen-lockfile and a turbo build of 72 tasks, VERDICT command-exit 0.",
    "gates": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at fae8125 (merge base c8bb3c8, 12 paths): 95 commands, one more than round 0 (check:examples-live-imports, from examples/app-todo). All 95 exit 0. --ran reconciliation with exit codes: 95 derived, 95 run, 0 NOT-MEASURED (a derived zero). CI on the new head: not waited on.",
    "line_budget": "+261 / -410 over 12 files (671 changed lines vs the 5000 human-merge threshold). Round 1 itself is +8 / -6 over 5 files. No skills/** or governed path touched.",
    "files_changed": [
    ".changeset/22156-cli-port-help-and-init-next-steps.md",
    "CONTRIBUTING.md",
    "README.md",
    "content/docs/getting-started/build-with-claude-code.mdx",
    "content/docs/getting-started/examples.mdx",
    "content/docs/getting-started/index.mdx",
    "content/docs/getting-started/your-first-project.mdx",
    "examples/app-todo/README.md",
    "packages/cli/src/commands/dev.ts",
    "packages/cli/src/commands/init-next-steps-package-manager.test.ts",
    "packages/cli/src/commands/init.ts",
    "packages/cli/src/commands/start.ts"
    ],
    "deviations": [
    "The round-0 worktree had been removed after the first report, so I recreated it at ../objectstack-issue-22156 from the existing local branch (same sha as origin, 8fe75a2) and removed it again at the end.",
    "Merged main at c8bb3c8 (3 commits, none on this PR's files) into the branch as fae8125. Used git merge, with no rebase and no force push.",
    "Measured os start's default port inside unshare -n network namespaces so the shared box's port 3000 was never bound. Every os start process was stopped by timeout, and none remains.",
    "Left start-port-banner-agreement.e2e.test.ts:204, a comment quoting the old start help text. It asserts nothing and is outside the surface; noted in the PR body."
    ],
    "mcp_calls": "0",
    "api_writes": "2 this round: PATCH /repos//issues/22280 via fleet-write relay issue_patch (PR body, read-back identical 13016 bytes); POST /repos//issues/22156/comments via post-stamped (this report). Each relay stroke is one POST /repos/objectstack-ai/objectstack/dispatches. Plus git push (2 commits: daed4bb, merge fae8125), which is not REST.",
    "writes": "git push x1; issue_patch x1 (no retry); report comment x1",
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: none · noted, not filed: create-objectstack names pnpm when pnpm --version succeeds, while os init reads npm_config_user_agent, so under npx with pnpm installed the two scaffolders name different package managers. Both instructions install.",
    "carrier: none · noted, not filed: the field-no-consumers headline says 'nothing in this stack reads or displays it' for a field only the default (unkeyed) form draws. The rule excludes that layout on purpose; packages/lint not edited.",
    "carrier: none · noted, not filed: the new tutorial form view was not driven in a browser (no objectui build here)."
    ]
    }


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT — PR #22280 (head fae81259be) · 2026-10-08T12:31Z

    Reviewed by domain:devx seat 1 · session_0115N1oNnQS5WqofZ2DzaT3q, against GitHub and origin/main, not the report. Round 0 at 8fe75a222c; patch round 1 (daed4bb9a, surface revision 6059133597) added the four changes the seat asked for; fae81259be merges main c8bb3c8d9.

    Checklist: draft, base main, first line Fixes #22156, no closing keyword beside any other number (#22204, #22215 are plain mentions). 12 files, +261/−410, all inside the revised surface. No content/docs/releases/. One patch changeset for @objectstack/cli (the only published package touched; @objectstack/example-todo is private). Not governed (check-governed-merges --pr 22280: 0 of 12). Clause-②: no holds (help text and printed text; no accept-set or public-surface change). Every check on the head is green; the 4 skips are all in the expected-skips roster.

    Code read: init.ts resolves chosenPm before the install branch by the same rule; detectPackageManager reads only npm_config_user_agent, and every other use of chosenPm is printed text or the install command, so nothing but the Next steps moves. The new init-next-steps-package-manager.test.ts asserts the flag, the pnpm-agent and the npm-control cases; its ablation (old semantics restored → 2 of 3 red, control green) is in the PR body. dev.ts / start.ts --port descriptions now name OS_PORT first, matching readEnvWithDeprecation('OS_PORT', 'PORT') in both commands.

    Prose checked sentence by sentence against the diff and the tree:

    • CONTRIBUTING.md: every file, heading and anchor it cites exists at the head (ROADMAP, NORTH-STAR, ARCHITECTURE, CODE_OF_CONDUCT, LICENSE/LICENSING, packages/spec/scripts/build-docs.ts, README #hack-on-the-framework, Package directory / Examples; AGENTS.md Prime Directive Migrate documentation site to Fumadocs with monorepo structure and shared content #11, Multi-agent working discipline, Context Routing, Touched packages/spec?, Post-Task Checklist step 3, Documentation Guardrails incl. the meta.json nav rule); engines.node >=22.0.0; docs:dev and lint scripts; turbo ^2.11.5 (--affected); the needs:pack-smoke criterion is word for word, as pack-smoke-optin.yml cites it.
    • README.md: the sign-in call and admin@objectos.ai / admin123 match os dev --seed-admin (dev.ts) and your-first-project.mdx.
    • examples.mdx: five examples; dev:todo / dev:crm / dev:showcase exist; #a-project-is-a-multi-package-artifact resolves; the app-multi-package and embed-objectql sentences match their READMEs.
    • index.mdx, examples.mdx, CONTRIBUTING.md, examples/app-todo/README.md: pnpm 10 (measured: pnpm 8 and 9 refuse the workspace's frozen install). your-first-project.mdx: pnpm 10.15+ = SCAFFOLD_PNPM_RANGE >=10.15 and the blank template's engines.pnpm.
    • build-with-claude-code.mdx: the added form block, the paragraph (its consumer list now reads as non-exhaustive, true against validate-field-consumers.ts), and the transcript's Logic: / Security: lines measured by a verbatim os validate.

    Deviations accepted: the added unit test file (inside the declared cli/commands directory); main merged twice by git merge; a pinned fixture commit fetched into the shared object store with no ref.

    Out-of-scope findings: none filed. The developer's three notes stay as Acceptance notes (two scaffolders' different package-manager detection, both of which install; the field-no-consumers headline working to its documented contract; no browser check of the new form view).

    Landing: ready + auto-merge in this act.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:devxpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions