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
Copy file name to clipboardExpand all lines: CHANGELOG.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
@@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
17
17
-**M1 — Project Artifact envelope schema (`@objectstack/spec`)** — Introduced the v0 `ProjectArtifactSchema` in `packages/spec/src/system/project-artifact.zod.ts`, the immutable envelope that `objectstack compile` will produce and ObjectOS will consume at boot. Required fields: `schemaVersion` (literal `'0.1'`), `projectId`, `commitId`, `checksum` (`{ algorithm, value }`), `metadata` (per-category arrays, `passthrough()` for forward compatibility), `functions` (inlined source with optional language/source/hash), and `manifest` (plugin / driver / engine requirements). Optional `builtAt`, `builtWith`, and a reserved `payloadRef` (`{ url, expiresAt, checksum }`) for future S3 indirection without an envelope bump. 14 new tests in `project-artifact.test.ts`. Resolves ROADMAP M1; unblocks M3 (Artifact API) and M4 (ObjectOS artifact loader).
18
18
19
19
### Changed
20
+
-**D1 — ObjectOS metadata DB bridge removed** — `MetadataPlugin` no longer registers `sys_metadata` / `sys_metadata_history` into the ObjectOS manifest and no longer auto-bridges ObjectQL to `DatabaseLoader` during `start()`. Runtime metadata is now file/artifact backed; database-backed metadata persistence remains an explicit `MetadataManager` capability for control-plane services. Updated ROADMAP, North Star, Metadata Service docs, and ObjectStack skills to reflect the boundary.
20
21
-**D5 — `ManifestSchema.scope` enum trimmed to `'cloud' | 'system' | 'project'`** — Removed the deprecated `'platform'` and `'environment'` aliases from `packages/spec/src/kernel/manifest.zod.ts`. No call site in the workspace was setting the deprecated values, so this is a clean break. Resolves ROADMAP D5.
21
22
-**D4 — `ObjectSchemaBase.namespace` removed** — Object identity is now single-sourced on `name`. The deprecated `namespace` field has been removed from `ObjectSchemaBase` (`packages/spec/src/data/object.zod.ts`); legacy inputs that still set `namespace` are silently stripped by Zod's default object behavior. Package-level namespace (FQN computation, marketplace publishing, `DatasourceRoutingRule.namespace`) is intentionally retained as an internal mechanic. Five legacy `ObjectSchema namespace` test blocks were rewritten as a single `name-as-identity` block. Resolves ROADMAP D4.
22
23
-**D7 — Plugin manifest header + objects unified per package** — Each plugin / service now exposes a single canonical `src/manifest.ts` file that both `objectstack.config.ts` (compile-time) and the runtime `*-plugin.ts` (`manifest.register()`) import from. This eliminates a real divergence in `plugin-auth` and `plugin-security` whose configs imported from a non-existent `./src/objects/` directory and silently shipped empty object lists at compile time while their runtime registrations were intact. Affected packages: `@objectstack/plugin-auth`, `@objectstack/plugin-security`, `@objectstack/service-tenant`. Resolves ROADMAP D7.
> **Authoritative Spec:**[content/docs/concepts/north-star.mdx](content/docs/concepts/north-star.mdx) - §7 Alignment Check is the single source of truth for Built / Drift / Missing.
5
5
> This file is the **actionable checklist** derived from that ledger. When north-star §7 changes, update this file too.
6
6
@@ -49,33 +49,14 @@ Code that exists and matches the intended architecture. Do not regress these.
| CLI `publish` - local JSON -> remote server wire (endpoint shape still wrong, see D2) |[packages/cli/src/commands/publish.ts](packages/cli/src/commands/publish.ts)|
|**D1** ObjectOS metadata DB bridge removed - `MetadataPlugin` no longer registers `sys_metadata` / `sys_metadata_history` or auto-bridges ObjectQL to `DatabaseLoader`|[packages/metadata/src/plugin.ts](packages/metadata/src/plugin.ts)|
52
53
53
54
---
54
55
55
56
## 🟡 Drift (Needs Cleanup)
56
57
57
58
Existing code that contradicts the intended Phase 1 architecture. Fix these before building new surface area that depends on them.
58
59
59
-
### D1 - 🟡 MetadataPlugin maintains a DB bridge in ObjectOS (Biggest Drift)
60
-
61
-
**Priority: P0.** The primary startup read has been partially fixed — `local-file` mode (M1.x) lets ObjectOS boot from `dist/objectstack.json` without touching any database. However, [packages/metadata/src/plugin.ts](packages/metadata/src/plugin.ts) still:
62
-
63
-
1. Registers `SysMetadataObject` and `SysMetadataHistoryObject` into the **ObjectOS** manifest — these tables belong only in `apps/cloud` (control plane).
64
-
2. Bridges ObjectQL to a `DatabaseLoader` via `setDataEngine()` after startup — subsequent `metadata.register()` writes persist metadata to `sys_metadata` in the project DB, and `metadata.list()` / `get()` aggregate from it.
65
-
66
-
Under Phase 1 the project DB contains **business rows only**. Metadata lives in the control plane and is delivered to ObjectOS as an immutable artifact. The DB bridge breaks that boundary and undermines the `commitId` + `checksum` immutability guarantee — `sys_metadata` rows in the project DB may diverge from the published artifact.
67
-
68
-
**What is already done:**
69
-
-`local-file` artifact mode — ObjectOS boots from `dist/objectstack.json` without any DB read (M1.x). ✅
70
-
71
-
**Remaining fix path:**
72
-
1. Remove `SysMetadataObject` / `SysMetadataHistoryObject` registration from `MetadataPlugin.init()` — these tables belong in `apps/cloud` only.
73
-
2. Remove the `setDataEngine()` / `DatabaseLoader` bridge from `MetadataPlugin.start()` — ObjectOS metadata is read-only (artifact → kernel); history and versioning are control-plane concerns.
74
-
3. Implement the Artifact API endpoint (M3) and swap `MetadataPlugin`'s source to HTTP fetch (M4).
75
-
4. Confirm `sys_metadata` is absent from the project DB schema after the D8 split into `apps/cloud` + `apps/server`.
[packages/cli/src/commands/publish.ts](packages/cli/src/commands/publish.ts) POSTs a "package" payload that is not the Phase 1 project metadata endpoint.
Copy file name to clipboardExpand all lines: content/docs/concepts/implementation-status.mdx
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -65,12 +65,13 @@ This matrix is generated from actual codebase analysis and represents the curren
65
65
### Metadata Framework
66
66
67
67
<Callouttype="info">
68
-
**Degraded Status** — Metadata is an in-memory registry framework. Databasepersistence for metadata storage is not yet implemented. Discovery reports this service as `degraded`.
68
+
**Runtime Boundary** — ObjectOS metadata is file/artifact-backed and read-only at boot. Database-backed metadata persistence exists for explicitly configured control-plane services, not as an automatic ObjectOS project-DB bridge.
69
69
</Callout>
70
70
71
71
- Metadata API (list types, list items, get item) is fully functional
72
-
- Metadata is loaded from config files at startup and held in memory
73
-
- Future: metadata persistence to database for runtime modifications
72
+
- Metadata is loaded from config files or `dist/objectstack.json` at startup and held in memory
73
+
-`MetadataPlugin` no longer registers `sys_metadata` / `sys_metadata_history` into ObjectOS or auto-bridges ObjectQL to `DatabaseLoader`
74
+
- Future: production Artifact API loader and durable local artifact cache
- Metadata loading (startup read fixed for `local-file` mode; DB bridge still persists to project DB post-startup — D1): [packages/metadata/src/plugin.ts](packages/metadata/src/plugin.ts)
330
+
- Metadata loading (artifact/local-file backed; no automatic ObjectQL -> `DatabaseLoader` bridge in ObjectOS): [packages/metadata/src/plugin.ts](packages/metadata/src/plugin.ts)
@@ -457,23 +458,12 @@ reduce Drift, and advance Missing.
457
458
-**TS -> JSON compile pipeline.**`objectstack compile` validates a local TS stack against `ObjectStackDefinitionSchema` and writes `dist/objectstack.json` - [packages/cli/src/commands/compile.ts](packages/cli/src/commands/compile.ts).
458
459
-**Zod -> JSON Schema publishing pipeline.** The bridge that makes TS/JSON interchangeable - [packages/spec/scripts/build-schemas.ts](packages/spec/scripts/build-schemas.ts).
459
460
-**Scaffolded TS file tree.**`create-objectstack` emits a `defineStack()` entry point plus split-out `src/objects/*.ts`, `src/views/*.ts` etc. - [packages/create-objectstack/src/index.ts](packages/create-objectstack/src/index.ts).
461
+
-**ObjectOS metadata DB bridge removed.**`MetadataPlugin` no longer registers `sys_metadata` / `sys_metadata_history` into the ObjectOS manifest and no longer auto-connects ObjectQL to a `DatabaseLoader`; runtime metadata is hydrated from files or artifacts only - [packages/metadata/src/plugin.ts](packages/metadata/src/plugin.ts).
460
462
-**JSON-payload metadata storage.**`sys_metadata.metadata` column is already a textarea-shaped JSON payload column - [packages/metadata/src/objects/sys-metadata.object.ts](packages/metadata/src/objects/sys-metadata.object.ts). (The *location* of the table still needs to move to the control plane - see Drift.)
461
463
-**CLI `publish` link.** The end-to-end "local JSON -> remote server" wire is alive, even though the endpoint shape is wrong - [packages/cli/src/commands/publish.ts](packages/cli/src/commands/publish.ts).
-**Artifact format v0** - Zod schema for `{ schemaVersion, projectId, commitId, checksum, metadata, functions, manifest }`.
506
495
-**Metadata migration to control plane** - move user metadata out of project DBs into the control-plane DB, scoped by `organization_id` + `project_id`.
507
496
-**Project Artifact API** - `GET /api/v1/apps/:projectId/artifact` assembles the current project metadata + inlined function code into a single consumable blob, with content hash/ETag for cache validation.
508
-
-**ObjectOS artifact loader** - swap `MetadataPlugin`'s data source from project-DB reads to HTTP fetch against the Artifact API; add local artifact cache with durability across control-plane outages.
497
+
-**ObjectOS Artifact API loader** - add the production HTTP fetch source for `MetadataPlugin` and local artifact cache durability across control-plane outages.
509
498
-**Project publish endpoint** - `POST /api/v1/apps/:projectId/metadata` receives compiled JSON, validates with Zod, writes the current project metadata state, and returns `commitId` + checksum.
510
499
-**Studio metadata/artifact viewer** - browse published metadata, artifact envelope, commit id, checksum, publish history, logs, and runtime health. No metadata editing.
511
-
-**`objectstack dev` offline boot path** - `from-local-file` kernel boot. ObjectOS reads `dist/objectstack.json` (or an in-memory TS definition) and runs fully without a control-plane connection.
512
500
-**UI auto-generation** - artifact schemas -> Amis/React components without hand-wiring.
0 commit comments