Skip to content

docs(cli): correct three more stale os projects mentions in README - #10968

Merged
os-elon merged 1 commit into
mainfrom
claude/issue-10927-readme-projects-spellings
Aug 22, 2026
Merged

docs(cli): correct three more stale os projects mentions in README#10968
os-elon merged 1 commit into
mainfrom
claude/issue-10927-readme-projects-spellings

Conversation

@os-elon

@os-elonos-elon commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

Fixes#10927

What changed

packages/cli/README.md had three prose sites describing an os projects command surface that does not resolve (the Architecture tree node was already fixed by #10881 — untouched here, per that card's fence). Found by content search for the os projects spelling, not by the issue's stale line numbers (triage's own comment flagged them as stale):

  • Cloud command table — the os environments create row's description carried the parenthetical "alias: os projects create", claiming a registered alias that doesn't exist. Reworded to name it as the pre-rename spelling instead: "was os projects create before the v5.0 project to environment rename; ADR-0006, no aliases".
  • Plugin Management prose — called os projects bind (with an ID argument and --artifact dist/objectstack.json) a "legacy" path that "still binds" an artifact, implying a working fallback. Replaced with the real current invocation, os environments bind.
  • Typical Workflow example — used os projects bind directly (ID argument, --artifact dist/objectstack.json) with no caveat at all. Same replacement: os environments bind.

Bounded in-place fix (AGENTS.md waiver, all four conditions met): the trailing comment on the Typical Workflow line also said "Cloud Project" — same v5.0 rename staleness class as the command spelling right next to it on the same line, mechanically corrected form pinned by ADR-0006 / this repo's own CLAUDE.md ("Project now only means the npm/monorepo sense"), same file with no other claim on this line, same gate family (docs-only, no new verification surface). Grepped the whole repo first — packages/cli/README.md:278 was the only hit for "Cloud Project" anywhere in the tree, so this isn't a sweep, just the one adjacent word on the line already being corrected.

Verification against the built binary

Matching triage's falsification standard, re-run at this branch's head (1b18e1bc82) after pnpm --filter '@objectstack/cli^...' build && pnpm --filter '@objectstack/cli' build:

Old spellings still fail (unchanged — confirms the defect is real, not something a merged edit already fixed):

$ node packages/cli/bin/run.js projects create --help
› Error: Command projects:create not found. # exit 2
$ node packages/cli/bin/run.js projects bind --help
› Error: Command projects:bind not found. # exit 2

New spellings resolve (confirms the replacement text is not repeating the defect with a different string):

$ node packages/cli/bin/run.js environments create --help # exit 0, prints real flags
$ node packages/cli/bin/run.js environments bind --help # exit 0, prints real flags

No aliases field exists on any of the five packages/cli/src/commands/environments/*.ts files or the oclif block in packages/cli/package.json — reconfirmed the same grep triage ran, zero hits.

Reverse verification does not apply — this is a prose-only docs change with no runtime code path to ablate; the binary falsification above is the closest behavioural check available, and it was run for both the old (still-broken) and new (now-correct) spellings.

Gates

Derived at the final commit via node scripts/pm/dispatch-gates.mjs (2 paths vs merge-base 926778bce0 of origin/main: .changeset/cli-readme-drop-projects-prose.md, packages/cli/README.md). All local gates run and green, quoting each gate's own verdict line:

  • pnpm check:changeset-gate-self-tests — 3 self-tests, all pass (check-empty-changeset, check-adr-0087-registration, check-changeset-no-major)
  • pnpm check:objectui-changeset — "objectui-changeset-digest --self-test: all checks passed", "objectui-range --self-test: all checks passed"
  • pnpm check:slot-lookup — "slot-lookup ratchet holds: 107 unswept site(s) in 25 file(s), none new"
  • pnpm check:test-source-alias — "check-test-source-alias OK — 72 packages with tests scanned"
  • pnpm check:type-source-resolution — "check-type-source-resolution OK — 76 packages with a tsconfig.json scanned"
  • node scripts/check-adr-0087-registration.mjs — "this PR adds no declared-breaking changeset"
  • node scripts/check-changeset-no-major.mjs — "This diff introduces no major bump."
  • node scripts/check-ci-filter-parity.mjs — "OK: all 82 declared cross-package glob(s) ... covered"
  • node scripts/check-empty-changeset.mjs — "No empty-frontmatter changeset introduced by this diff"
  • node scripts/check-plugin-teardown-shape.mjs — "57 Plugin implementation(s) ... every teardown-shaped method sits beside a real destroy()"
  • node scripts/docs-audit/check-affected-docs.mjs (the docs-affected audit) — "affected-docs self-test: 339 cases pass" (unreachable-route accounting printed is pre-existing baseline noise, unrelated to this change)

Also ran, matching the dispatch note on Check Documentation Links:

  • node scripts/check-doc-anchors.mjs (self-test + main; this is the REQUIRED fragment-anchor gate — Check Documentation Links/lychee is the advisory, file-only, offline lane and checks no #anchor, so it's covered separately here) — "274 internal #fragment link(s) across 407 source file(s) all resolve to a real heading". The one pre-existing anchor link on the touched line 98 (pointing at the Cloud publish and install section) is untouched and its target heading still exists.
  • node scripts/check-nul-bytes.mjs — "OK (scanned 6323 text file(s) ...; no raw ASCII control bytes)"

Narrowing declared: the 11 check:*/scripts/check-* gates above were run directly rather than through scripts/pm/os-verify-lock.sh — each is a standalone, dependency-free Node script (no spawnSync/child_process/tsc/vitest invocation; verified by inspection) doing static analysis over the checked-out tree, not a pnpm build/pnpm test that would contend the shared heavy-verify lock. The two build steps (@objectstack/cli's dependency closure, then the package itself) did go through the lock (waited 8m28s in a heavily congested queue before acquiring). CI runs the full gate farm regardless of local scope.

Notes


Generated by Claude Code

packages/cli/README.md described an `os projects` command surface as
still resolving in three prose sites, beyond the Architecture tree
node #10881 already renamed:
- :75 command table claimed `os projects create` is a registered
alias of `os environments create` — no `aliases` field exists on
any of the five environments/*.ts commands or the oclif package.json
block, so reworded as the pre-rename spelling instead.
- :98 called `os projects bind ...` a "legacy" path that "still
binds" — replaced with the real invocation, `os environments bind`.
- :278 Typical Workflow used `os projects bind` directly with no
caveat; same replacement, plus "Cloud Project" -> "Cloud
environment" in the trailing comment on the same line (ADR-0006:
"Project" now means only the npm/monorepo sense).
Verified against the built binary: old spellings still fail (`Error:
Command projects:create not found.` / `projects:bind not found.`,
exit 2), new spellings resolve (`os environments create --help` /
`os environments bind --help`, exit 0).
Fixes#10927
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019bmVFqoQPq63zhKrxdYG1r
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)), so this run has no opinion about the docs.

What this run could not see
  • 1 changed file(s) yielded no anchor (packages/cli/README.md) — pages documenting those are invisible to this run

Coarse fallback — 23 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 38bc74ed17de70a6d27c10e9eea7929171b42cb5packageMentionDocs.

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tooling labels Aug 22, 2026
@os-elon
os-elon marked this pull request as ready for review August 22, 2026 02:28
@os-elon
os-elon added this pull request to the merge queueAug 22, 2026
Merged via the queue into main with commit 65c4a13Aug 22, 2026
35 checks passed
@os-elon
os-elon deleted the claude/issue-10927-readme-projects-spellings branch August 22, 2026 02:44
@github-actions

Copy link
Copy Markdown
Contributor

⛔ merge queue 构建失败 — 先分诊,再决定要不要重排

队列构建 32546367493 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集),
所以失败的测试可能在本 PR 没碰过的包里 —— 那不是重排能修的。每次盲目重排都会让排在后面的所有 PR 重建一轮。

失败的 job(日志抽取,best effort):

  • Console Pin Gate — 失败步骤: Build the Console SPA at the pinned objectui SHA

    ✗ Build failed in 6.04s
    

↳ 失败原因 是判读的关键:超时Test timed out in … / Hook timed out in …)多半是负载/时序,不是本 PR 的回归;
断言AssertionError: …)才指向真实的行为改变。两者的 FAIL 行长得一模一样,只有这一行能区分。

跨 PR 相同签名(24h,按失败测试文件聚合):

  • ⚠️本次没有可用的聚合签名(日志里没有能解析出测试文件名的 FAIL 行)—— 这不是「没有同签名的其他 PR」,是这一轮没测到。跨 PR 聚合本次不可用,请手工比对其他 PR 的同类评论。
  • ⚠️ 24h 评论账本没读完(超过 5 页仍未读到窗口尽头),所以上面的「不同 PR 数」是下界,不是全量。

历史信号:

  • 本 PR 过去 24h 无队列失败记录(首次)。
  • 过去 24h 队列共有 67 个失败构建(不含本次)。

分诊清单:

  1. 失败测试在本 PR 改动的包里 → 真回归,修 PR。
  2. 失败测试与本 PR 无关 → 看上面的「跨 PR 相同签名」;已有汇总 issue ⇒ flaky/环境问题实锤,去那张 issue 上谈,修好前重排只会再烧一轮全队列。
  3. 两者都不是 → 可能与同组 PR 语义冲突;等前面的 PR 落地或失败出队后再重排一次即可,不要连续重排。

Generated by Claude Code · merge-queue-triage workflow (#4859)

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

Labels

documentationImprovements or additions to documentationsize/stooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

packages/cli/README.md: three more os projects mentions outside the tree listing, none a registered alias

2 participants

@os-elon@claude