Skip to content

Commit e050719

Browse files
committed
docs(spec,showcase): the prescription must not over-promise — ADR-0121 D1 renames paths on restore
ADR-0121 (accepted 2026-08-04, after this branch opened) namespaces endpoint paths as `<runtime-prefix>/apps/<namespace>/<subpath>`. The rejection message said definitions "stay valid"; that is true of every key except `path`, so it is now stated precisely, with the FROM -> TO. The showcase's commented endpoints carry the same note — they would be rejected under D1 if uncommented verbatim. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EYGdmvWP1ieZSLqvAW6uyd
1 parent fbf7a02 commit e050719

2 files changed

Lines changed: 15 additions & 3 deletions

File tree

examples/app-showcase/src/system/apis/index.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,16 @@ import type { ApiEndpoint } from '@objectstack/spec/api';
3535
* retiring it, because endpoint shapes are an industry-stable form that would
3636
* only be re-introduced identically later. When the executor ships (#5040 —
3737
* mounting + endpoint matching + per-key wiring), the rejection is replaced by
38-
* real execution and the two definitions below can be uncommented as-is. They
39-
* are kept verbatim for exactly that reason.
38+
* real execution and these two come back. They are kept verbatim for that.
39+
*
40+
* ⚠️ ONE edit is required when restoring them, and it is not cosmetic:
41+
* ADR-0121 D1 (accepted 2026-08-04, after these were commented out) namespaces
42+
* endpoint paths as `<runtime-prefix>/apps/<namespace>/<subpath>`, so that an
43+
* app can only claim its own namespace and can never collide with a built-in
44+
* domain or another installed package. The `path` values below predate that
45+
* rule and would be rejected under it. Per that ADR they return as
46+
* `/api/v1/apps/showcase/tasks` and `/api/v1/apps/showcase/inquiries/purge`
47+
* (its §D1 names them explicitly, restored by #5040 E8).
4048
*/
4149

4250
// /** Read-only data projection: GET a filtered task list through a stable URL. */

packages/spec/src/stack.zod.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,11 @@ const APIS_NO_EXECUTOR_GUIDANCE =
147147
+ 'The `ApiEndpoint` vocabulary is deliberately KEPT: the executor (mounting + endpoint '
148148
+ 'matching + per-key wiring for authRequired/cacheTtl/inputMapping/outputMapping/rateLimit) '
149149
+ 'is tracked by https://github.com/objectstack-ai/objectstack/issues/5040, and this '
150-
+ 'rejection is replaced by real execution there — your endpoint definitions stay valid.';
150+
+ 'rejection is replaced by real execution there — so keep your definitions, do not '
151+
+ 'redesign around the refusal. One thing WILL change when they come back: ADR-0121 D1 '
152+
+ 'namespaces endpoint paths as `<runtime-prefix>/apps/<namespace>/<subpath>`, so a path '
153+
+ 'like `/api/v1/my/thing` becomes `/api/v1/apps/<your manifest.namespace>/thing`. Everything '
154+
+ 'else about the endpoint is unchanged.';
151155

152156
/**
153157
* ObjectStack Ecosystem Definition

0 commit comments

Comments
 (0)