docs(adr): record the ADR-0006 API-surface boundary — three surfaces keep project deliberately - #12736
Merged
Merged
Conversation
…keep `project` deliberately (#12473) The v5.0 `project` → `environment` rename is scoped to the CLI's user-facing vocabulary. The SDK method namespace, the control-plane response fields and the SDK JSDoc that travels with them keep `project` deliberately; the full rename is pre-registered to reopen at the next planned SDK/protocol breaking major, and the SDK-only half-rename is permanently declined with its reason. Doc-only: no code, no schema, no route changes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UjujZN219uFzBhSYfMykCd
This was referenced Aug 27, 2026
Open
os-zhuang
marked this pull request as ready for review
August 28, 2026 06:56
os-zhuang
enabled auto-merge
August 28, 2026 06:57
Collaborator
|
Merging directly on the maintainer's explicit order — provenance: maintainer, 2026-08-28, live director session (session
Generated by Claude Code |
os-zhuang
approved these changes
Aug 28, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Aug 28, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Aug 28, 2026
os-zhuang
approved these changes
Aug 28, 2026
This was referenced Aug 28, 2026
This was referenced Aug 28, 2026
Merged
This was referenced Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #12473
Records the maintainer's Option 3 ruling (2026-08-27, decision-inbox batch, verbatim 「其他同意」) as an addendum on ADR-0006. Doc-only: one file, zero code changes — on this question, not touching the three named API surfaces is the deliverable.
What landed
docs/adr/0006-project-environment-split.v4.md(the Accepted revision of the record; v2/v3 are superseded and untouched):project→environmentrename extend to the API surface —client.projects.*and theres.project/res.projectsresponse fields? #12473) — the rename stops at the CLI's user-facing vocabulary: three API surfaces keepprojectdeliberately, appended after References, following the convention measured in this repo.The addendum carries the three parts the ruling requires: D1 names the retained surfaces, D2 pre-registers Option 1, D3 declines Option 2 with its reason. It also records what it does not change, and why it is an addendum rather than a new ADR (the ADR-0094 precedent).
The three surfaces, measured today and named by quoted phrase
The card anchored one of the three to a line number, and that anchor was already stale when this branch was cut — the sentence sits one line further down on
main. The addendum therefore identifies all three by quoted phrase. Measured onmainat a65db76:projectsblock on the@objectstack/clientclient class, reached asclient.projects.list/.get/.create/.update/.delete/.activate, plus the nestedprojects.packagesmethodsenvironmentsnamespace exists on that clientprojectandprojectsreturned by the/api/v1/cloud/environmentsendpointsres?.projects ?? []inpackages/cli/src/commands/environments/list.tsandres?.projectin the siblingcreate.ts/show.tsProjectProvisioningService.provisionProjecton the server." on that namespace'screatemethodTwo limits stated in the addendum rather than glossed: the producer of the wire fields is the cloud control plane in
objectstack-ai/cloud, which is not this repository — nothing here claims to have measured it, and nothing cross-repo was touched. And worth noting for the next reader: the routes underneath the SDK namespace are already renamed (every method calls/api/v1/cloud/environments), so the namespace identifier is the onlyprojectspelling left on that face.Deliberately not touched
packages/client/src/index.ts— both because the JSDoc sentence in it is ruled retained (editing it executes the permanently-declined Option 2) and because the file is held by #11925 in another container. Two independent reasons, either one sufficient.Addendum convention — measured, not invented
29 of the 130 records under
docs/adr/carry at least one addendum. The dominant shape is a top-level## Addendum (DATE, #issue) — one-line summarysection appended at the end of the record, after References where one exists (ADR-0057), with the Status line amended to point at it when the addendum changes how the record should be read (ADR-0069, ADR-0085, ADR-0099). ADR-0094 additionally carries a "Why an addendum, not a new ADR" paragraph, which this one follows.Gates
Union re-run after the final commit, on
0fdf6eb9f, working tree clean. Families derived withnode scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(re-derived after the commit; same five):pnpm check:adr-anchorscheck-adr-anchors: OK (52 anchored file(s) … 29630 citation(s) across 3722 file(s) resolve)pnpm check:doc-authoringdoc authoring guard: 391 files clean — no bare metadata literalspnpm --filter @objectstack/lint run check:doc-formula-expressions22 record-scoped formula example(s) across 424 files / 1450 TS blocks judged cleannode scripts/check-adr-links.mjscheck-adr-links: 564 relative link destination(s) under docs/adr/ resolvepnpm check:pm-governed-mergeslive: the real generator declared 9 output(s) and certified this treepnpm check:nul-bytescheck-nul-bytes: OK (scanned 7067 text file(s) … no raw ASCII control bytes)check:doc-formula-expressionsfirst reported PREREQUISITE NOT MET (unbuilt@objectstack/formula, then@objectstack/lint); it was re-run to a real green afterturbo run build --filter=@objectstack/lint.Changeset: none — derived, not assumed. The changeset gate exempts a PR only via a changeset or the
skip-changesetlabel, with no docs-only path of its own; this diff publishes nothing from any package, soskip-changesetis the correct declaration.Governance
docs/adr/**is a governed surface (AGENTS.md Prime Directive 14). This PR stays draft and is merged by the maintainer, by hand. No auto-merge is armed, and no seat should flip it ready.Generated by Claude Code