Commit c677cda
feat(organizations): bring the multi-organization runtime back to open core — the org-scoping registrar ships open, the licence gate stays in cloud (ADR-0132) (#16215)
* feat(organizations): the multi-organization runtime returns to open core (#16130)
Creates packages/plugins/organizations — @objectstack/organizations — carrying
the 1300 lines cloud's packages/organizations classified as moving. The licence
gate (306 lines) stays in the commercial repo, which will subclass this class
and call it in its own constructor.
WIP: ADR-0132 and the changeset still to come.
Claude-Session: https://claude.ai/code/session_6679d191-11f4-465b-b322-0e0409d76793
Co-authored-by: Claude <noreply@anthropic.com>
* docs(adr): ADR-0132 — the multi-organization runtime is open core (#16130)
Amends ADR-0105 D12 in place, corrects the three open-tree claims the move
falsifies (plugin-security README, the spec roster row, the multi-node carrier
header), and adds the changeset.
Claude-Session: https://claude.ai/code/session_6679d191-11f4-465b-b322-0e0409d76793
Co-authored-by: Claude <noreply@anthropic.com>
* fix(organizations): satisfy the open tree's gates the closed package never met (#16130)
The moved code arrives in a repo with gates cloud's does not run. Each finding
was a real one, fixed rather than baselined:
- slot-lookup: the `objectql` / `metadata` lookups are typed structurally
instead of erased to `any` — that ratchet's baseline never grows.
- engine-double-contract: the three moved test fakes open `update()` with
`assertEngineUpdateDispatch`, pinning them to the producer's rejection.
- doc-authoring: tracker ids leave the rendered boot refusal and the log line;
an operator cannot resolve `#NNNN`.
- dispatcher-error-vocabulary: `WALLED_MEMBERSHIP_POLICY_UNDECLARED` is
recorded as a boot-refusal, the class its neighbours are ruled by.
- system-context census: the `organization_id` auto-stamp's elevation
short-circuit gets its row (62) and the page's counts move with it.
- cross-package-test-inputs + turbo: the ADR-0132 D3 pin declares its radius.
- test-typecheck: measured zero, so the package carries no ledger and no
generator, matching the ten zero-residue plugin packages.
- llms.txt: 68 → 69 published packages.
Claude-Session: https://claude.ai/code/session_6679d191-11f4-465b-b322-0e0409d76793
Co-authored-by: Claude <noreply@anthropic.com>
* fix(organizations): type-source resolution, the WHERE double, and the last slot erasure (#16130)
- tsconfig `paths` + a vitest alias so every verdict in this package is about
the source in the checkout, not the last build. That covers the test-only
`@objectstack/metadata-core` too, which the moved fakes open `update()` with.
- `packages/qa/dogfood` gains the same rule for `@objectstack/organizations`:
the name became a workspace package with this PR, and that suite's doc
comment spells a literal dynamic import of it.
- the moved `walled-default-org-self-registrant` fake REFUSES a WHERE
combinator instead of reading it as a field name — silently wrong is the
shape that would let a negative assertion read "no rows" as evidence.
- the last `getService(...) as any` in the moved suite goes through the
harness's own handle.
- engine-double-contract ledger learns the three newly pinned fakes.
- census self-test literal moves with the page it asserts against.
Claude-Session: https://claude.ai/code/session_6679d191-11f4-465b-b322-0e0409d76793
Co-authored-by: Claude <noreply@anthropic.com>
* chore(docs): regenerate the isSystem census anchors after merging main (#16130)
The merge driver deferred `content/docs/permissions/system-context.mdx` — it is a
`merge=os-regen` artifact and git ran no text merge on it. This discharges that
deferral from the merged tree, as `.githooks/pre-push` requires.
Anchor lines only: 18 rewritten, all of them `<file>.ts:<line>` citations the
incoming commits moved. Row 62, the section extents and every declared count are
unchanged, and `check:system-context-census` is green on the merged tree.
Claude-Session: https://claude.ai/code/session_6679d191-11f4-465b-b322-0e0409d76793
Co-authored-by: Claude <noreply@anthropic.com>
* chore(docs): regenerate the isSystem census anchors after merging main (#16130)
Second merge round, same deferral: `content/docs/permissions/system-context.mdx`
is a `merge=os-regen` artifact, git ran no text merge on it, and the driver
recorded it in `os-regen-pending`. This discharges that deferral from the merged
tree, as `.githooks/pre-push` requires.
Anchor lines only: 15 rewritten, every one a `file.ts:line` citation the incoming
commits moved. Proven rather than asserted — diffing the page against its
pre-regeneration copy and filtering out anchor-bearing lines leaves nothing, row
62 is byte-identical, and the whole declared-counts table is byte-identical
(106 sites / 20 packages / 45 files, rows 1-62 behaviour, rows 63-66 carry-onward).
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent acabd24 commit c677cda
36 files changed
Lines changed: 4260 additions & 34 deletions
File tree
- .changeset
- content/docs/permissions
- docs/adr
- packages
- plugins
- organizations
- src
- plugin-security
- qa/dogfood
- runtime/src
- services/service-cluster/src
- spec
- src/kernel
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| 44 | + | |
44 | 45 | | |
45 | 46 | | |
46 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
| 12 | + | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
127 | | - | |
| 127 | + | |
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
| 155 | + | |
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
| 173 | + | |
173 | 174 | | |
174 | 175 | | |
175 | 176 | | |
| |||
179 | 180 | | |
180 | 181 | | |
181 | 182 | | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
186 | 187 | | |
187 | 188 | | |
188 | 189 | | |
| |||
269 | 270 | | |
270 | 271 | | |
271 | 272 | | |
272 | | - | |
273 | | - | |
| 273 | + | |
| 274 | + | |
274 | 275 | | |
275 | 276 | | |
276 | 277 | | |
| |||
326 | 327 | | |
327 | 328 | | |
328 | 329 | | |
329 | | - | |
| 330 | + | |
330 | 331 | | |
331 | 332 | | |
332 | 333 | | |
333 | | - | |
334 | | - | |
335 | | - | |
336 | | - | |
337 | | - | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
338 | 339 | | |
339 | 340 | | |
340 | 341 | | |
| |||
Lines changed: 28 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
324 | 324 | | |
325 | 325 | | |
326 | 326 | | |
327 | | - | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
328 | 331 | | |
329 | 332 | | |
330 | 333 | | |
| |||
342 | 345 | | |
343 | 346 | | |
344 | 347 | | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
345 | 371 | | |
346 | 372 | | |
347 | 373 | | |
| |||
0 commit comments