Skip to content

ADR-0006 D2 (SDK half): rename client.projects.* to client.environments.*; unwrap keys follow the wire; JSDoc tells the truth #12866

Description

@hotlong

Part of #12865 (epic parent; unparked 2026-08-28 by maintainer ruling recorded there). Filed by epic PM session session_65d2faee-1ff4-4be8-be28-72b972c539d9.

Scope (the SDK half of one coordinated rename)

  • packages/client/src/index.ts: the projects method namespace becomes environments — all methods including the nested projects.packages block. No aliases (standing v5.0 rename rule; ADR-0006 D3 permanently declined a mapping layer).
  • The declared unwrap shapes' keys follow the wire rename: the list shape's projects key becomes environments (the total key stays), and every single-row project key becomes environment. The producer half is the paired cloud card (link in the comment below) — the two halves declare the SAME wire truth.
  • The JSDoc sentence naming ProjectProvisioningService.provisionProject: measured 2026-08-28 — zero hits for that class spelling in cloud's packages/service-cloud/src (positive control: the routes files exist and produce these envelopes). Measure what the server actually does today and rewrite the sentence to describe the running system truthfully (ADR-0006 D1 point 3). Do not copy the old class name forward.
  • CLI consumers follow in the SAME PR: packages/cli/src/commands/environments/list.ts, create.ts, show.ts — and measure the sibling files bind.ts, switch.ts, environments.test.ts for the same envelope/namespace consumption before assuming they are clean.
  • Changeset: major for @objectstack/client (breaking API rename); the changeset text carries the migration entry — that is the release-notes input. Never touch content/docs/releases/**.

Blocked-by: #12038

(PR #12848, which fixes #12038, edits packages/client/src/index.ts, packages/client/exported-any-returns.json, and the client tests — the same files this card must edit. Hard same-file serial: branch from main only AFTER PR #12848 merges. Its diff does not touch the projects block lines, but the exported-any-returns baseline overlaps textually.)

Landing constraint (HARD)

DRAFT PR; do not merge, do not arm auto-merge. Must land in the same coordinated release window as the producer half (cloud). Neither half ships alone: SDK-half-alone is ADR-0006 D3, permanently declined; the maintainer opens the window (see the epic parent).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions