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
feat(spec)!: drop the @objectstack/spec/cloud subpath — control-plane contracts leave, the package format moves to @objectstack/spec/marketplace (#17372)
* feat(spec)!: drop the `./cloud` subpath — control-plane contracts leave, package format moves to `./marketplace`
WIP for the step-3 card of the cloud-contracts chain: the cloud control
plane's own contracts (environment, environment-package, tenant,
developer-portal, marketplace-admin, app-store) leave `@objectstack/spec`;
the package & marketplace format relocates to `src/marketplace/` and is
published as `@objectstack/spec/marketplace`; `EnvironmentType` is
re-declared in `api/discovery.zod.ts`; `packages/metadata` reads the
environment-artifact envelope from `@objectstack/spec/system`.
Claude-Session: https://claude.ai/code/session_f95e3874-e532-4748-a921-044aa2752a2b
Co-authored-by: Claude <noreply@anthropic.com>
* feat(spec)!: regenerate the artifacts for the `./cloud` retirement and carry defaults through def renames
- `gen:schema` / `check:generated --fix` output: `cloud.json` shards leave,
`marketplace.json` shards arrive, `api.json` gains `EnvironmentType`, the
reference docs move to `content/docs/references/marketplace/`.
- `scripts/lib/authorable-defaults.ts`: `carryDefaultsThroughRenames` — the
#4666 defaults ratchet carried the baseline's KEY set through RENAMED_DEFS
but not its DEFAULTS, so a declared category move read as 22
`(none) -> value (added)` flips; both halves are carried now, with the
discrimination pinned in `authorable-defaults.test.ts`.
- `./marketplace` publishes without a `browser` condition: its bundles link
no `pg-connection-string` (the poisoned members were the deleted
`environment` / `tenant` modules); `browser-reachable-entries.json` lists
it as unjudged.
- Count pins that describe the corpus move with it: 811 -> 782 isomorphic
aliases, 37 -> 31 level-1 openers, description floor 140 -> 130.
- `unemitted-schemas.baseline.json` drops the `Cloud.EnvironmentArtifactSchema`
duplicate of the surviving `System.` row.
Claude-Session: https://claude.ai/code/session_f95e3874-e532-4748-a921-044aa2752a2b
Co-authored-by: Claude <noreply@anthropic.com>
* docs: the subpath and namespace enumerations name `marketplace`, not the deleted `cloud`
Contract-review patch round 1 of the cloud-subpath retirement PR. No gate
reads a hand-written docs enumeration of `@objectstack/spec`'s subpaths,
so three published pages kept advertising `cloud` after the exports-map
entry left, and none listed `marketplace`:
- `content/docs/deployment/troubleshooting.mdx` "Available subpaths" — now
the `./*` entries of `packages/spec/package.json`'s `exports` map, in its
order (16 entries, `meta-spelling` included), and the sentence names that
source so the next editor derives it rather than retypes it.
- `content/docs/plugins/packages.mdx` — the 15-namespace list.
- `content/docs/getting-started/glossary.mdx` — the 15-namespace list, the
layers table (its namespaces column, and `tenants` -> `packages` in the
purpose column beside it), the `### Cloud Protocol` entry (now
`### Marketplace Protocol`: the package & marketplace format), and the
Tenant entry, which named `cloud/tenant.zod.ts` as the schema's home.
Controlled sweep of `content/docs/**` after the edit: zero import-shaped
`@objectstack/spec/cloud` (same-shape controls: 131 `spec/data`, 8
`spec/marketplace`), zero namespace lists naming Cloud (control: 4 naming
Marketplace), zero `cloud/*.zod.ts` source paths (control: 8
`marketplace/*`). The two remaining `spec/cloud` mentions are historical
("left with", "re-exported until"). `concepts/architecture.mdx`'s six-card
conceptual layering still carries a "Cloud Protocol" card; that is a
framing question for the maintainer and is reported, not edited.
Claude-Session: https://claude.ai/code/session_f95e3874-e532-4748-a921-044aa2752a2b
Co-authored-by: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
feat(spec)!: the `@objectstack/spec/cloud` subpath is removed — the cloud control plane's contracts leave the open-source spec, and the package & marketplace format moves to `@objectstack/spec/marketplace` (#16325)
`package-l10n`, `template-manifest.zod` (30 defs, 1400 lines). A package author needs it and the
33
+
open-source CLI's `os package publish` speaks it, so it STAYS, relocated to `src/marketplace/`
34
+
and published as `@objectstack/spec/marketplace`. Every def, key and JSON Schema is
35
+
byte-identical under the new `$id` category (`RENAMED_DEFS`, 32 entries; nothing left the
36
+
author-facing contract).
37
+
38
+
## FROM → TO
39
+
40
+
| you wrote | write instead |
41
+
|:--|:--|
42
+
|`import { PackageSchema, CreatePackageRequestSchema, … } from '@objectstack/spec/cloud'`|`… from '@objectstack/spec/marketplace'` — same symbols, same shapes |
43
+
|`import { EnvironmentArtifactSchema } from '@objectstack/spec/cloud'`|`… from '@objectstack/spec/system'` (it was only ever a re-export of that declaration) |
44
+
|`import type { EnvironmentType } from '@objectstack/spec/cloud'`|`… from '@objectstack/spec/api'` (re-declared beside the discovery fold table that reads it) |
45
+
|`import { EnvironmentSchema, TenantPlanSchema, ProvisionEnvironmentRequestSchema, … } from '@objectstack/spec/cloud'`| no open-source replacement — these are the cloud repo's own declarations now |
46
+
|`/docs/references/cloud/<page>`|`/docs/references/marketplace/<page>` for the format pages (redirected); the control-plane pages have no successor |
47
+
48
+
Why the mis-binding hazard closes with this: `client.environments.*` keeps its erased `any`
49
+
deliberately (#11925/#12036), and the camelCase `Environment` row used to be the obvious-looking
50
+
binding for it — it compiled and read `undefined` at runtime against the snake_case wire. That
51
+
type no longer exists in the open-source package, so the wrong binding is structurally
52
+
impossible rather than warned about in a docblock.
53
+
54
+
`@objectstack/cli` and `@objectstack/metadata` change only an import path (`marketplace` and
Available subpaths (the `./*` entries of the package's `exports` map, in its order): `data`, `system`, `kernel`, `ai`, `automation`, `api`, `ui`, `contracts`, `integration`, `security`, `studio`, `marketplace`, `qa`, `identity`, `shared`, `meta-spelling`.
Copy file name to clipboardExpand all lines: content/docs/getting-started/glossary.mdx
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ To navigate the ObjectStack ecosystem effectively, it is helpful to understand t
11
11
The umbrella term for the entire suite of protocols and reference implementations. It is organized into **15 protocol namespaces** grouped into three architectural layers.
12
12
13
13
### Protocol Namespace
14
-
A logical grouping of related schemas and types defined with Zod. ObjectStack has 15 protocol namespaces: Data, UI, System, Automation, AI, API, Identity, Security, Kernel, Cloud, QA, Contracts, Integration, Studio, and Shared.
14
+
A logical grouping of related schemas and types defined with Zod. ObjectStack has 15 protocol namespaces: Data, UI, System, Automation, AI, API, Identity, Security, Kernel, Marketplace, QA, Contracts, Integration, Studio, and Shared.
15
15
16
16
---
17
17
@@ -22,7 +22,7 @@ The 15 namespaces collapse into three top-level layers:
22
22
| Layer | Also called | Namespaces it includes | Purpose |
23
23
| :--- | :--- | :--- | :--- |
24
24
|**ObjectQL**| Data Layer | Data | Objects, fields, queries, relations, validation, data access |
Older docs and talks used **ObjectOS** as the name of this control layer. That name now refers exclusively to the commercial ObjectOS runtime environment ([docs.objectos.ai](https://docs.objectos.ai)); the open control layer is called the **Kernel**, described by the System/Kernel/AI/API protocol namespaces below.
@@ -58,8 +58,8 @@ User, organization, and position schemas for identity management.
58
58
### Security Protocol
59
59
RBAC, permissions, policy, and access-control schemas.
60
60
61
-
### Cloud Protocol
62
-
Multi-tenant cloud, deployment, environment, and package distribution schemas.
61
+
### Marketplace Protocol
62
+
The package & marketplace format: package identity and translations, immutable package versions, marketplace listing / submission / install shapes, and the template manifest — what a package author publishes and what the marketplace answers with. The cloud control plane's own contracts (environments, tenants, deployment) are not an open-source protocol; they live in the cloud repo.
63
63
64
64
### QA Protocol
65
65
Test, validation, and quality-assurance schemas.
@@ -172,7 +172,7 @@ A map within the UI Runtime that links a string identifier (e.g., `"chart.bar"`)
172
172
## Governance
173
173
174
174
### Tenant (Space / Workspace)
175
-
A logical isolation unit in the Cloud Protocol for multi-tenancy, modeled by the `tenant` schema (`cloud/tenant.zod.ts`). A single ObjectStack instance can host multiple tenants. Data is segregated by tenant isolation strategies. "Space" and "Workspace" are informal aliases for the same concept.
175
+
A logical isolation unit for multi-tenancy. Its `tenant` schema is a cloud control-plane contract declared in the cloud repo — it left `@objectstack/spec` with the `./cloud` subpath — so it is not one of the open-source protocol namespaces above. A single ObjectStack instance can host multiple tenants. Data is segregated by tenant isolation strategies. "Space" and "Workspace" are informal aliases for the same concept.
176
176
177
177
### FLS (Field-Level Security)
178
178
A granular permission model (Security Protocol) where access control is applied to individual fields (columns), not just the whole object (row).
Copy file name to clipboardExpand all lines: content/docs/permissions/system-context.mdx
+7-6Lines changed: 7 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,16 +47,17 @@ is left open deliberately rather than hidden — see
47
47
48
48
## Which `isSystem` this page is about
49
49
50
-
Four unrelated declarations share the identifier. **This page documents only the
50
+
Three unrelated declarations share the identifier. **This page documents only the
51
51
first.** The others are ordinary metadata fields on a stored document and have
52
-
nothing to do with elevation.
52
+
nothing to do with elevation. (A fourth, `Environment.isSystem` — a
53
+
platform-infrastructure environment, not user data — left this repo with the
54
+
`@objectstack/spec/cloud` subpath in #16325 and is declared in the cloud repo.)
53
55
54
56
| Declaration | What it is | This page? |
55
57
|:---|:---|:---:|
56
58
|`ExecutionContext.isSystem` — `packages/spec/src/kernel/execution-context.zod.ts#isSystem`| The elevation flag on an operation's context | ✅ |
57
59
|`Object.isSystem` — `packages/spec/src/data/object.zod.ts#isSystem`| Marks a **system object** (protected from deletion; defaults its org-wide sharing to `public` when no `sharingModel` is set) | ❌ |
58
60
|`EmailTemplate.isSystem` — `packages/spec/src/system/email-template.zod.ts#isSystem`| Built-in template; tenants may override but should not delete | ❌ |
59
-
|`Environment.isSystem` — `packages/spec/src/cloud/environment.zod.ts#isSystem`| Platform-infrastructure environment, not user data | ❌ |
60
61
61
62
The collision is a genuine hazard rather than a naming nit: `Object.isSystem`
62
63
changes an object's **default sharing**, and `ExecutionContext.isSystem` changes
@@ -382,10 +383,10 @@ test files certifies nothing. ⛔ Do not re-add them to `DECLARED_COUNTS` — a
382
383
self-test case in the gate refuses that by name. Re-measure them with
383
384
`node scripts/isystem-census.mjs` when you want them current, and move the date.
384
385
385
-
**What the enforced declarations row counts.** Not the four field declarations
386
-
above — those are four*distinct fields* that happen to share a name, and only
386
+
**What the enforced declarations row counts.** Not the three field declarations
387
+
above — those are three*distinct fields* that happen to share a name, and only
387
388
the first is elevation. This row counts every position where the parser puts the
388
-
identifier in a **declaring** slot: those four, plus the structural type literals
389
+
identifier in a **declaring** slot: those three, plus the structural type literals
389
390
that restate `ExecutionContext.isSystem`'s shape inline rather than importing it
Copy file name to clipboardExpand all lines: content/docs/plugins/packages.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ ObjectStack is organized into **72 package manifests** across multiple categorie
24
24
**The Constitution** — Protocol schemas, types, and constants for the entire ObjectStack ecosystem.
25
25
26
26
-**Purpose**: Zod-first schema definitions for all 15 protocol domains
27
-
-**Exports**: Builder functions (`defineStack`, `defineView`, `defineApp`, `defineFlow`, `defineAgent`, `defineTool`, `defineSkill`) from the root entry, plus `ObjectSchema.create()` for objects from the `@objectstack/spec/data` subpath. Protocol namespaces (Data, UI, System, Automation, AI, API, Identity, Security, Kernel, Cloud, QA, Contracts, Integration, Studio, Shared) are not re-exported from the top-level entry for tree-shaking reasons — import them from subpaths such as `@objectstack/spec/data` and `@objectstack/spec/ui`.
27
+
-**Exports**: Builder functions (`defineStack`, `defineView`, `defineApp`, `defineFlow`, `defineAgent`, `defineTool`, `defineSkill`) from the root entry, plus `ObjectSchema.create()` for objects from the `@objectstack/spec/data` subpath. Protocol namespaces (Data, UI, System, Automation, AI, API, Identity, Security, Kernel, Marketplace, QA, Contracts, Integration, Studio, Shared) are not re-exported from the top-level entry for tree-shaking reasons — import them from subpaths such as `@objectstack/spec/data` and `@objectstack/spec/ui`.
28
28
-**When to use**: Import types, schemas, and builder functions when authoring metadata.
0 commit comments