Uh oh!
There was an error while loading. Please reload this page.
docs(cli): correct three more stale os projects mentions in README - #10968
Conversation
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
📓 Docs Drift CheckNothing 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
Coarse fallback — 23 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
Uh oh!
There was an error while loading. Please reload this page.
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 32546367493 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
Fixes#10927
What changed
packages/cli/README.mdhad three prose sites describing anos projectscommand 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 theos projectsspelling, not by the issue's stale line numbers (triage's own comment flagged them as stale):os environments createrow'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: "wasos projects createbefore the v5.0 project to environment rename; ADR-0006, no aliases".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.os projects binddirectly (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:278was 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) afterpnpm --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):
New spellings resolve (confirms the replacement text is not repeating the defect with a different string):
No
aliasesfield exists on any of the fivepackages/cli/src/commands/environments/*.tsfiles or theoclifblock inpackages/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-base926778bce0oforigin/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 throughscripts/pm/os-verify-lock.sh— each is a standalone, dependency-free Node script (nospawnSync/child_process/tsc/vitestinvocation; verified by inspection) doing static analysis over the checked-out tree, not apnpm build/pnpm testthat 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
#10881's Architecture tree node rename (environments/) was confirmed already onmainand left untouched, per that card's fence.finding+domain:cli(not fixed here — different file surface, broader change):os projectsin examples, class names, and docstrings — leaks into live--helpoutput #10967: the actual--helpoutput foros environments create/os environments bind(and the other three environments commands) still printsos projects ...in its EXAMPLES section, sourced from staleexamples/class names/docstrings inpackages/cli/src/commands/environments/*.ts— a live CLI defect, not just docs.Generated by Claude Code