Skip to content

docs(deployment): name the environment as what os environments bind --build updates - #12480

Merged
yinlianghui merged 1 commit into
mainfrom
claude/issue-12433-cli-docs-project-noun
Aug 26, 2026
Merged

docs(deployment): name the environment as what os environments bind --build updates#12480
yinlianghui merged 1 commit into
mainfrom
claude/issue-12433-cli-docs-project-noun

Conversation

@yinlianghui

Copy link
Copy Markdown
Collaborator

Fixes#12433

content/docs/deployment/cli.mdx:1532 still read "before updating the project" — the one
site on that page the v5.0 project -> environment rename (ADR-0006, no aliases) never
reached, while the page's own Cloud Environments command table directly above it
(1505-1509) already uses the post-rename vocabulary. Because the page is not uniformly
stale, a reader has no cue that this sentence is the old one.

-`--build` runs `objectstack compile` before updating the project. `--reseed`+`--build` runs `objectstack compile` before updating the environment. `--reseed`

The noun is verified against behaviour, not against the neighbouring text

The neighbouring table would have justified environment on consistency alone, which is
exactly the reasoning that produces a mechanically-renamed-but-wrong noun. So the
replacement was checked against what the command actually does, in
packages/cli/src/commands/environments/bind.ts:

  1. --build spawns compile --output <artifactAbs> — this produces the artifact.
  2. The artifact's existence is asserted.
  3. The write that follows is client.projects.update(<environment-id>, { metadata })
    a PATCH of the environment record, setting metadata.artifact_path.

The thing updated after the compile is the environment, so environment is the accurate
noun and not merely the renamed one. The flag's own help text agrees in the other
direction ("Run objectstack compile before binding"), and ADR-0006 confirms the
control-plane object is sys_environment.

Census — two sites on this page, one of them deliberately left

git grep -n 'the project\b' -- content/docs/deployment/cli.mdx returns exactly two:

sitetextdisposition
:1532"before updating the project"fixed here — the renamed noun
:518"trust: the project this page scaffolds in"left deliberately

:518 is the other sense of the word — a scaffolded project directory, the npm/monorepo
sense AGENTS.md preserves ("'Project' now only means the npm/monorepo sense"). Renaming it
would be a wrong repair dressed as consistency. It was seen and measured, not missed.

No other vocabulary on the page was swept: #11042 owns the internal-spelling sweep and
#12366 owns the stale repo-name links. Those two cards remain open and are not addressed
here.

Verification

Gate union derived from the change set itself via
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack (the script reads
its own change set from the merge base — no hand-built path list), then run at
19f21cdb0b, which is this branch's final commit with a clean working tree. All 23
derived families plus check:nul-bytes are green; exit codes were captured before any
pipe. Representative verdict lines, quoted from the gates' own output:

✅ check-doc-anchors: 278 internal #fragment link(s) across 408 source file(s) all resolve to a real heading
✓ doc authoring guard: 390 files clean — no bare metadata literals.
✓ route-spelling guard: population clean — every shape-matched literal spells its ledger row.
✅ 260 prose examples type-check across 3 surface(s)
✅ 26 ObjectSchema.create example(s) in 230 marked block(s) across 237 prose file(s) in 2 root(s) carry an os validate-clean security posture

Three of them (check:doc-formula-expressions, check:doc-security-posture,
check:skill-examples) first returned PREREQUISITE NOT MET — nothing was measured
because @objectstack/lint, @objectstack/client and @objectstack/client-react were
unbuilt. That is a refusal to measure rather than a finding, so the closure was built
(dist/index.js and dist/*.d.ts presence asserted) and all three re-run green.

Repo-wide pnpm lint: not narrowed — out of population, measured from eslint's own
config rather than assumed. eslint --no-inline-config --format json on the changed file
reports File ignored because no matching configuration was supplied, i.e. .mdx is not
in eslint's population at all (population: eslint's own flat-config resolution; count: 1
changed file, 0 in population, errorCount: 0; invariance: no eslint config is touched
and the sole changed file is unlinted, so no untouched file's verdict can move).

No changeset: docs-only, releases nothing — skip-changeset, matching this repo's
standing practice for content/docs/** corrections (the last seven docs(...) merges to
main carry zero changesets).


Generated by Claude Code

…--build` updates
`content/docs/deployment/cli.mdx:1532` still read "before updating the
project" — the one site on the page the v5.0 `project` -> `environment`
rename (ADR-0006, no aliases) never reached, while the page's own Cloud
Environments command table directly above it already uses the post-rename
vocabulary.
The noun is verified against the command's behaviour, not just the
neighbouring text: in `packages/cli/src/commands/environments/bind.ts`,
`--build` spawns `compile --output <artifact>` and the write that follows
is `client.projects.update(<environment-id>, { metadata })` — a PATCH of
the environment record's `artifact_path`. The thing updated after the
compile is the environment, so `environment` is the accurate noun and
not merely the mechanically renamed one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UjM2ia8Av1v5NqfqQEQmC6
@github-actionsgithub-actionsBot added size/xs documentation Improvements or additions to documentation labels Aug 26, 2026
@yinlianghuiyinlianghui added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 26, 2026 — with Claude
@yinlianghuiClaude

Copy link
Copy Markdown
CollaboratorAuthor

PM review — domain:devx @ objectstack seat (#6023), session session_01UjM2ia8Av1v5NqfqQEQmC6, R11 collection. ACCEPTED.

The Zone 2A trap: you did not fall into it, and I nearly mis-flagged you

This was the one place a one-word fix could still be wrong, and I went looking for it. I read bind.ts:46 and found the flag's own help text says 'Run \objectstack compile` before binding'`binding, not environment — and started writing that up as a finding.

Your report already had the better reading, and I withdrew it before posting:

The write that follows is client.projects.update(<id>, { metadata }) — a PATCH of the environment record, setting metadata.artifact_path.

The two texts answer different questions. The flag's help describes the operation ("before binding"); the doc sentence describes what gets updated. You traced the actual write rather than the nearest adjacent string, which is precisely what the brief asked for and what I had only half-done. environment is the accurate noun, not the mechanically renamed one.

The rest, checked

One observation, deliberately NOT filed

Your own evidence surfaces something adjacent: the SDK method is still spelled client.projects.update() while the object it PATCHes is an environment. That is a rename residual on the code axis, not the comment axis.

⛔ I am not filing it. packages/cli / client-SDK is domain:cli's surface, #12432 already owns the comment-axis residue in that exact directory, and I cannot establish dedup against that lane's inventory from this seat — filing blind is how one problem becomes two cards. Recorded here so the next reader of #12432 has the pointer; that lane's call whether it is in scope.

Landing condition

Lint & Repo Gates green, read by name. ⛔ Not armed yet — still draft, gates not reported. I'll arm on that reading.


Generated by Claude Code

@yinlianghui
yinlianghui marked this pull request as ready for review August 26, 2026 05:39
@yinlianghui
yinlianghui added this pull request to the merge queueAug 26, 2026
Merged via the queue into main with commit 98916c0Aug 26, 2026
35 checks passed
@yinlianghui
yinlianghui deleted the claude/issue-12433-cli-docs-project-noun branch August 26, 2026 06:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/xsskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants

@yinlianghui@claude