You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(adr): repair stale full-path citations across the ADR corpus, and date ADR-0113's pre-P0 Context (#15160)
* docs(adr): rewrite 27 moved/mis-spelled path citations to their current paths
Citation hygiene only -- no decision text is touched. Each rewritten path was
verified against full git history (the shared clone was shallow; deepened first,
because a shallow clone reports every pre-cutoff deletion as "never existed").
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
* docs(adr): date the remaining stale path citations, and name the sibling repo
Annotates every full-path citation in docs/adr/** that does not resolve and was
not already annotated: deleted / renamed / never-shipped paths keep their
historical spelling and gain a dated Path note carrying the evidence commit;
paths that live in the sibling objectui repo take the corpus's cross-repo
`objectui:` anchor form. No decision text is changed.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
* docs(adr): annotate the two ADR-0025 References paths the record-level note did not reach
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
* docs(adr): date ADR-0113's two Context sites as the pre-P0 state, re-anchored by symbol
Both sites now say they describe the state at decision time (2026-07-30) and name
the storage.notNull site that superseded them, and the citation is a symbol anchor
(sql-driver.ts#createColumn) rather than a line number. No decision text changed.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
---------
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/adr/0002-environment-database-isolation.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -123,6 +123,10 @@ The migration is **non-destructive** and **idempotent**: each legacy org's datab
123
123
124
124
## References
125
125
126
+
> **Path note (2026-09):** the three `packages/services/service-tenant/…` paths below are historical
127
+
> and deliberately unlinked — the `packages/services/service-tenant/` package left this repository with the control-plane split to `objectstack-ai/cloud` (`473fce590`, 2026-05-21).
128
+
> They are kept as written because they record where this decision landed at the time.
Copy file name to clipboardExpand all lines: docs/adr/0003-package-as-first-class-citizen.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -191,6 +191,7 @@ The migration is non-destructive and idempotent. Steps 1–4 ship in v4.x as an
191
191
192
192
-`packages/spec/src/cloud/environment-package.zod.ts` — current installation schema (to be updated)
193
193
-`packages/services/service-tenant/src/objects/sys-package-installation.object.ts` — DB object (to be updated)
194
+
*(Path note, 2026-09: historical and deliberately unlinked — the `packages/services/service-tenant/` package left this repository with the control-plane split to `objectstack-ai/cloud` (`473fce590`, 2026-05-21).)*
194
195
- ADR-0002: `docs/adr/0002-environment-database-isolation.md` — Control Plane / Data Plane split
Copy file name to clipboardExpand all lines: docs/adr/0005-metadata-customization-overlay.md
+13-11Lines changed: 13 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ Project concept entirely. As a consequence:
25
25
`branch`. The column physically named `project_id` on `sys_metadata`
26
26
is treated as a legacy alias and will be renamed/dropped in the
27
27
ADR-0008 PR-10 migration.
28
-
- All references to `this.projectId` in `packages/objectql/src/protocol.ts`
28
+
- All references to `this.projectId` in `packages/metadata-protocol/src/protocol.ts`
29
29
are deprecated. New code must consult `organization_id` (and, in M1,
30
30
the branch ref) only.
31
31
- The `(type, name, project_id)` UNIQUE index is superseded by
@@ -143,7 +143,7 @@ Three different things were tangled into one place:
143
143
144
144
### Storage shape
145
145
146
-
`sys_metadata` schema (`packages/platform-objects/src/metadata/sys-metadata.object.ts`) is the storage substrate. No schema changes needed in Phase 1:
146
+
`sys_metadata` schema (`packages/metadata-core/src/objects/sys-metadata.object.ts`) is the storage substrate. No schema changes needed in Phase 1:
147
147
148
148
| column | role |
149
149
|---|---|
@@ -194,7 +194,9 @@ Five files in `packages/platform-objects/src/metadata/` duplicate a Zod schema t
194
194
195
195
`sys-metadata.object.ts` and `sys-metadata-history.object.ts` are retained — they are the storage substrate, not duplicates of any metadata type.
196
196
197
-
`MetadataProjector` (`packages/metadata/src/projection/metadata-projector.ts`) becomes dead code under this ADR. It is left in place for one release as a no-op safety net, and removed in the next major along with the deprecated objects.
the module was deleted in `516f48ca9`, the same change that implemented this ADR; the name survives
199
+
only in `packages/metadata/src/migrations/drop-projection-tables.ts`*) becomes dead code under this ADR. It is left in place for one release as a no-op safety net, and removed in the next major along with the deprecated objects.
198
200
199
201
## Consequences
200
202
@@ -231,7 +233,7 @@ Five files in `packages/platform-objects/src/metadata/` duplicate a Zod schema t
/api/v1/meta/:type/:name` against a **hard-coded** `Set` of allowed types
364
366
(`OVERLAY_ALLOWED_TYPES = new Set(['view', 'dashboard'])`). Any new metadata
365
367
type that wanted to participate in the overlay system had to find and edit
@@ -453,7 +455,7 @@ idempotent migration is provided and run automatically by
453
455
> place: the `allowOrgOverride` boolean on its
454
456
> `DEFAULT_METADATA_TYPE_REGISTRY` entry.
455
457
> 3. The **overlay validator** lives in exactly one place:
456
-
> `resolveOverlaySchema()` in `packages/objectql/src/protocol.ts`.
458
+
> `resolveOverlaySchema()` in `packages/metadata-protocol/src/protocol.ts`.
457
459
>
458
460
> Do **not** re-declare the same shape as a `*.object.ts` (the
459
461
> projection-table pattern is removed; see Addendum 2026-05-16 (b)).
@@ -652,7 +654,7 @@ coverage:
652
654
653
655
### Admin UX: field-level Code-vs-Effective diff
654
656
655
-
The Layers tab in the metadata editor (`packages/app-shell/.../LayeredDiff.tsx`
657
+
The Layers tab in the metadata editor (`objectui:packages/app-shell/src/views/metadata-admin/LayeredDiff.tsx`
656
658
in `objectui`) now defaults to a **Diff** view that compares
657
659
`layered.code` (artifact baseline) against `layered.effective` (merged)
658
660
field-by-field. Each top-level key renders as a row with a colour-coded
@@ -680,7 +682,7 @@ the present), so this section is where the present tense lives.
680
682
681
683
| Addendum (d) says | Today | Superseded by |
682
684
|:---|:---|:---|
683
-
| "`addSysMetadataOverlayIndex(driver)` — exported from `@objectstack/metadata/migrations`" |**Deleted.** The export and its module are gone; `packages/metadata/src/migrations/index.ts` carries a tombstone in their place that records the measurement and forbids re-introducing a producer for `idx_sys_metadata_overlay_active` in that package. |#6771 (PR #6824, merged 2026-08-08); `.changeset/overlay-index-single-producer.md`|
685
+
| "`addSysMetadataOverlayIndex(driver)` — exported from `@objectstack/metadata/migrations`" |**Deleted.** The export and its module are gone; `packages/metadata/src/migrations/index.ts` carries a tombstone in their place that records the measurement and forbids re-introducing a producer for `idx_sys_metadata_overlay_active` in that package. |#6771 (PR #6824, merged 2026-08-08); `.changeset/overlay-index-single-producer.md`(since consumed by the release, `24c1b91e4`) |
684
686
| "a new idempotent migration is provided and run automatically by `DatabaseLoader.ensureSchema()`" |**No overlay-index DDL is issued from that method at all**, on either of its two paths — both call sites went with the export. What `ensureSchema()` still runs is the `project_id` → `environment_id` forward migration, which is a different concern. |#6771 (PR #6824) |
685
687
| "Drivers ignore `indexes` declarations on synced tables today" |**False** — and this one is *not* a consequence of #6771. `SqlDriver.syncDeclaredIndexes` materializes every declared index, through knex's `table.unique(fields, { indexName })` / `table.index(fields, name)`, skipping by name for idempotence. | The driver itself. The spec records the same fact where the `IDataDriver` capability bit `indexes` was retired for having no reader: "Declared indexes are materialised by the driver itself during schema sync (`SqlDriver.syncDeclaredIndexes`)". |
686
688
@@ -745,7 +747,7 @@ form from being re-imposed over it.
745
747
746
748
### Anchors
747
749
748
-
Both files above are registered in `scripts/adr-anchors.json` against ADR-0005, so
750
+
Both files above are registered in `scripts/adr-anchors/` against ADR-0005, so
749
751
the next author to edit either one is told which decision they are standing on.
750
752
That is the recurrence guard Prime Directive #13 names and the one thing this
751
753
amendment adds beyond prose: the producer that was deleted had no anchor, and
— current single-table model; relabelled in Phase 0
222
+
*(Path note, 2026-09: historical and deliberately unlinked — the object was renamed to
223
+
`sys-environment.object.ts` by `0ee839c53`, and then the `packages/services/service-tenant/` package left this repository with the control-plane split to `objectstack-ai/cloud` (`473fce590`, 2026-05-21).)*
the follow-up rename this paragraph anticipates happened; the file is
194
+
`packages/spec/src/cloud/environment-artifact.zod.ts` today, renamed by `944f18758`, 2026-05-24*)
193
195
is the envelope returned by `GET /cloud/projects/:id/artifact`. The
194
196
route name is kept for BC; the response shape continues to wrap the
195
197
compiled `ObjectStackDefinitionSchema`. The "Project" in the schema
@@ -202,7 +204,7 @@ installed where" goes through Packages → version history → installations.
202
204
203
205
| Phase | Scope | Status |
204
206
|:---|:---|:---|
205
-
|**A — Drop Project from the protocol**| Remove `packages/spec/src/cloud/project.zod.ts`; update `index.ts`; trim Project tests from `environment.test.ts`; mark `sys_environment_revision` as `@deprecated transitional`| ✅ This commit |
207
+
|**A — Drop Project from the protocol**| Remove `packages/spec/src/cloud/project.zod.ts` (since removed, as this phase prescribes — `d4eed33ab`); update `index.ts`; trim Project tests from `environment.test.ts`; mark `sys_environment_revision` as `@deprecated transitional`| ✅ This commit |
206
208
|**B — Rewire CLI publish onto Package**|`objectstack publish` resolves implicit `sys_package`; calls `POST /cloud/packages/:id/versions`; upserts `sys_package_installation`. Old `/cloud/projects/:envId/metadata` becomes a thin BC shim that internally walks the new path. | Next |
|**D — Remove transitional revision table**| After Phase B is shipping and verified: drop `sys_environment_revision` schema, delete `_DEPRECATED` route handlers, wipe table from any seeded control planes. | After C |
*(Path note, 2026-09: historical and deliberately unlinked — the `packages/services/service-tenant/` package left this repository with the control-plane split to `objectstack-ai/cloud` (`473fce590`, 2026-05-21).)*
449
450
-`packages/spec/src/data/field.zod.ts` — existing field type catalogue
0 commit comments