Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
601aba5
docs(adr): ADR-0131 — organization ownership is total: no NULL organi…
hotlong Sep 3, 2026
ff2d6e5
docs(adr): ADR-0131 D12 — the group posture: group-shared rows have a…
hotlong Sep 3, 2026
e2fd907
docs(adr): ADR-0131 D12 records the withdrawal of ADR-0105 D10 (group…
hotlong Sep 3, 2026
47db4f6
docs(adr): ADR-0131 v2 — declared metadata stays in code, rows only w…
hotlong Sep 3, 2026
6f767f6
docs(adr): ADR-0131 D6 — map ADR-0126's three customization regimes o…
hotlong Sep 3, 2026
47db4e9
docs(adr): ADR-0131 D6 — managed packages are sealed, template packag…
hotlong Sep 3, 2026
11c2dfa
docs(adr): ADR-0131 D6 — the unreleased ADR-0126 flow disable/clone m…
hotlong Sep 3, 2026
2746f34
docs(adr): ADR-0131 D3 — the catalog has one home (the environment re…
hotlong Sep 3, 2026
de84c70
docs(adr): ADR-0131 D4 — resolution reads the registry only; no secon…
hotlong Sep 3, 2026
5d55c80
docs(adr): ADR-0126 superseded by ADR-0131; staging = one pre-17.3 re…
hotlong Sep 3, 2026
c40b6e3
docs(adr): ADR-0131 D7 — the no-column list is decided by the writer,…
hotlong Sep 3, 2026
24821ea
docs(adr): ADR-0131 D3 — application seed datasets need the Default O…
hotlong Sep 3, 2026
0be9039
docs(adr): ADR-0131 — record the 2026-09-04 acceptances (install-mode…
hotlong Sep 3, 2026
1fed6b7
docs(adr): ADR-0131 D12 — the group posture rule by rule: what ADR-01…
hotlong Sep 4, 2026
3197adb
docs(adr): ADR-0131 D13 — sys_view_definition retired as inert (verif…
hotlong Sep 4, 2026
5e175b0
docs(adr): ADR-0131 D3 — the position→permission-set binding has no d…
hotlong Sep 4, 2026
6566e91
docs(adr): ADR-0131 D3 — position→permission-set binding is definitio…
hotlong Sep 4, 2026
83cbeca
docs(adr): ADR-0131 D2/D3 — two authoring doors: Studio (metadata cap…
hotlong Sep 4, 2026
b6da63a
chore: drop the empty changeset — docs-only PRs carry the skip-change…
hotlong Sep 4, 2026
02a6f99
docs(adr): ADR-0131 D6 — how far clone-to-customize reaches, by type;…
hotlong Sep 4, 2026
dc254c0
docs(adr): ADR-0131 D6 — managed definitions sealed, ADR-0126's regim…
hotlong Sep 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/adr/0005-metadata-customization-overlay.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
> **v5.0 update (2026):** Throughout this document, the term *project* has been renamed to *environment* (no aliases; CLI flags, URL paths, schemas, env vars all hard-renamed). See [ADR-0006 v4 — the v5.0 rename and its no-alias decision](./0006-project-environment-split.v4.md#the-v50-rename-and-its-no-alias-decision) for the rationale. The body below is preserved verbatim for historical context.


**Status**: Accepted (2026-05-16) · **Amended** (2026-05-22, see "Amendment: post-ADR-0006 v4 scope") · **Amended** (2026-04-13, branch concept removed — see [ADR-0008 §0](./0008-metadata-repository-and-change-log.md#0-2026-04-13-amendment--drop-project-and-branch-from-metaref)) · **Amended** (2026-08-09, #6825 — the Phase-1 overlay-index migration is deleted; see "Amendment (2026-08-09, #6825): overlay-index delivery after the Phase-1 migration was deleted")
**Status**: Accepted (2026-05-16) · **Amended** (2026-05-22, see "Amendment: post-ADR-0006 v4 scope") · **Amended** (2026-04-13, branch concept removed — see [ADR-0008 §0](./0008-metadata-repository-and-change-log.md#0-2026-04-13-amendment--drop-project-and-branch-from-metaref)) · **Amended** (2026-08-09, #6825 — the Phase-1 overlay-index migration is deleted; see "Amendment (2026-08-09, #6825): overlay-index delivery after the Phase-1 migration was deleted") · **Amended** (2026-09-04, [ADR-0131](./0131-total-organization-ownership-no-null-organization-id.md) D6 — the per-organization overlay axis is **retired for now**: `sys_metadata` carries no organization column, org-scoped writes of the five tier-A types are refused, and the environment layer is the whole ledger; the environment → code layered resolution and the "no overlay row = the registry" reading are unchanged)
**Deciders**: ObjectStack Protocol Architects
**Builds on**: [ADR-0003](./0003-package-as-first-class-citizen.md) (Package as first-class citizen), [ADR-0004](./0004-cloud-multi-kernel.md) (Cloud + per-project kernels)
**Amended by**: [ADR-0006 v4](./0006-project-environment-split.v4.md) (drops `sys_project` entirely), [ADR-0008](./0008-metadata-repository-and-change-log.md) (re-expresses overlay as `LayeredRepository`; subsequently drops `project`/`branch` from `MetaRef`), [ADR-0029 D9](./0029-kernel-object-ownership-and-platform-objects-decomposition.md#amendment-2026-08-09-6853-a-tenant-overlay-of-an-object-is-its-own-contributor-layer-not-a-second-own) (for `object` only: the overlay is a registry contributor LAYER over the packaged owner, resolved as `base = overlay ?? own`, instead of a destructive in-place overwrite)
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0017-object-has-many-view.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ADR-0017: Object has-many View (Independent View Entities)

**Status**: Accepted · Implemented Phases 1–4 (2026-05-30) · Phase 5 (Studio designer) deferred
**Status**: Accepted · Implemented Phases 1–4 (2026-05-30) · Phase 5 (Studio designer) deferred · **Amended** (2026-09-04, [ADR-0131](./0131-total-organization-ownership-no-null-organization-id.md) D13 — §3.4's `sys_view_definition` store and §3.6's objectui repointing are **retired as inert**: verified on 2026-09-04 that no framework writer or reader of its rows exists, that `objectui` never referenced the object in its history (its runtime-view CRUD writes the ADR-0005 `view` overlay via `client.meta.saveItem`), and that a per-user view scope is a parked v18 direction. Runtime-authored views are environment metadata; §3.5's `GET /meta/view?object=` filter stands)
**Deciders**: ObjectStack Protocol Architects
**Builds on**: [ADR-0003](./0003-package-as-first-class-citizen.md) (package as first-class citizen), [ADR-0005](./0005-metadata-customization-overlay.md) (one Zod source per type, org overlay), [ADR-0010](./0010-metadata-protection-model.md) (L1/L2/L3 protection)
**Consumers**: `@objectstack/spec`, `@objectstack/metadata`, `@objectstack/objectql`, `@objectstack/rest`, `@objectstack/platform-objects`, `../objectui` (runtime switcher + Studio designer)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ADR-0105: Group Tenancy Posture — Organization Scope as a First-Class Authorization Dimension

**Status**: Accepted (2026-07-27; proposed 2026-07-25) — Phase 0/1 implemented (#3559). Amended 2026-07-27: **D12 correction** — `group` posture activation is entitled, not open (#3570; see the D12 Amendment). Phase 2 **D8** and **D9** implemented 2026-07-28 — D8: #3645 (host seam) → #3663 (placement engine) → #3674 (`/security/my-delegable-scope`) → #3695 (issuer-grant resolution) → #3722 (`delegated_admin` + invitation role cap, #3697) → #3767 (`sys_member` governed), console objectui#2868/#2891, e2e cloud#886; the membership-role channel D8's placement replaces is closed by [ADR-0108](./0108-membership-grade-is-not-a-capability-channel.md). D9: #3824 + #3873 (see the D9 amendment below). D10 stays reserved pending its follow-up ADR; D13 not started
**Status**: Accepted (2026-07-27; proposed 2026-07-25) — Phase 0/1 implemented (#3559). Amended 2026-07-27: **D12 correction** — `group` posture activation is entitled, not open (#3570; see the D12 Amendment). Phase 2 **D8** and **D9** implemented 2026-07-28 — D8: #3645 (host seam) → #3663 (placement engine) → #3674 (`/security/my-delegable-scope`) → #3695 (issuer-grant resolution) → #3722 (`delegated_admin` + invitation role cap, #3697) → #3767 (`sys_member` governed), console objectui#2868/#2891, e2e cloud#886; the membership-role channel D8's placement replaces is closed by [ADR-0108](./0108-membership-grade-is-not-a-capability-channel.md). D9: #3824 + #3873 (see the D9 amendment below). D10 **withdrawn** 2026-09-04 by maintainer ruling (「不考虑集团级模板行,作废相关需求」「不考虑 分层主数据」; recorded in [ADR-0131](./0131-total-organization-ownership-no-null-organization-id.md) D12 — see the note under D10); D13 not started
**Deciders**: ObjectStack Protocol Architects
**Builds on**: [ADR-0049](./0049-no-unenforced-security-properties.md) (enforce-or-remove), [ADR-0057](./0057-erp-authorization-core-business-units-and-scope-depth.md) (business units + scope depth), [ADR-0066](./0066-unified-authorization-model.md) (unified authz, superuser bypass), [ADR-0086](./0086-authz-metadata-config-boundary-and-cross-package-composition.md), [ADR-0090](./0090-permission-model-v2-concept-convergence.md) (permission set / position / business unit), [ADR-0091](./0091-grant-lifecycle-and-recertification.md) (validity windows), [ADR-0092](./0092-sys-user-profile-field-delegation.md) (identity write guard + field whitelist), [ADR-0093](./0093-tenancy-mode-and-membership-lifecycle.md) (tenancy service), [ADR-0095](./0095-authz-kernel-tenant-layer-and-posture-ladder.md) (tenant Layer 0, posture ladder), [ADR-0103](./0103-managedby-write-policy-and-engine-write-guard.md); cloud ADR-0016 (open/paid boundary: 强制免费、治理收费), cloud ADR-0081 (`@objectstack/organizations`)
**Tracking**: #3541 (P0 findings F1/F2 became #3539/#3540, closed by #3559); cloud-side tracking cloud #874
Expand Down Expand Up @@ -305,6 +305,8 @@ linked to the template, with a resolution rule (org override wins). Mechanics
policies: 集团统管 / 分级 / 自由) to be detailed in a follow-up ADR; this ADR
reserves the concept and its place in Phase 2.

*Withdrawn 2026-09-04.* Maintainer ruling, verbatim and untranslated: 「不考虑集团级模板行,作废相关需求」 and 「不考虑 分层主数据」. No follow-up ADR will be drafted; group-level template rows shared down an organization tree are not a platform concept. Recorded in [ADR-0131](./0131-total-organization-ownership-no-null-organization-id.md) D12, which also states the consequence: a template row "platform-global or group-org-owned, read-shared" would need either a NULL owner — a state ADR-0131 removes — or a tree-derived one, which D6 keeps out of visibility. The `group` posture keeps exactly one kind of cross-organization visibility, membership union (D2).

**D11 — Enforce-or-remove cleanup (ADR-0049 debts on the org axis).**
- `PermissionSet.contextVariables`: **remove** from the spec (no consumer;
its use cases are covered by `rlsMembership` and literal predicates).
Expand Down Expand Up @@ -410,7 +412,7 @@ environment).
three-plants-one-group dogfood — plant admins configure process data
mutually invisibly, group reads all plants on one screen, zero custom
security code.
- **Phase 2 (group product depth)**: D8, D9, D10, "all my organizations"
- **Phase 2 (group product depth)**: D8, D9, D10 (withdrawn 2026-09-04), "all my organizations"
console affordances, D13 promotion tool.
- **Phase 3 (governance, commercial)**: SoD constraints, certification
campaigns over ADR-0091 validity/recert data, deny/muting layer (ADR-0066
Expand Down
5 changes: 4 additions & 1 deletion docs/adr/0126-packaged-metadata-customization-model.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# ADR-0126: The platform customization model for packaged metadata — three regimes, one activation ledger

**Status**: Proposed (2026-08-25) — awaiting the maintainer's hand-merge, which is itself the
**Status**: **Amended** (2026-09-04) by [ADR-0131](./0131-total-organization-ownership-no-null-organization-id.md) D6 — maintainer, verbatim: 「所以 ADR-0126 不能简单的关掉」「hotcrm 是标准的软件包,客户安装之后能根据业务需求实现具体的定制」「同意」. The three regimes stand at **environment scope only**: O's per-organization reading is retired (ADR-0005 amended), C's activation ledger stays as tenant-less deployment state (D3's reserved `organization_id`, written NULL, is withdrawn — ADR-0131 D1 forbids a nullable tenant column), E stands; the unreleased implementation (#12185, #12190, #12296, #12348, #12419, framework half of #12491) ships in 17.3 with that column dropped. The install mode ADR-0131 D6 adds (managed = sealed definitions + these regimes; template = copied once, fully editable, refused on shared-DB multi-tenant) is the frame the regimes now sit in. Original status line follows.
**Original status**: Proposed (2026-08-25) — awaiting the maintainer's hand-merge, which is itself the
acceptance act for a governed surface (Prime Directive #14) **and the ruling that settles the
tentative flow-instance directions in §7** (chartered on
[#12049](https://github.com/objectstack-ai/objectstack/issues/12049); ⛔ none of §7 is settled
Expand Down Expand Up @@ -40,6 +41,8 @@ re-cited inline; the survey carries the instruments and positive controls.

---

> **Amended 2026-09-04 by [ADR-0131](./0131-total-organization-ownership-no-null-organization-id.md) D6** (see the Status line): regimes O, C and E stand at environment scope; the per-organization axis and D3's reserved `organization_id` are withdrawn; the activation ledger is tenant-less deployment state; §7 remains the contract the flow machinery implements. A third draft of ADR-0131 marked this record Superseded; the standard-package scenario (「hotcrm 是标准的软件包,客户安装之后能根据业务需求实现具体的定制」) reversed that the same day.

## TL;DR

The platform ships packaged apps and refuses nearly every post-install change to them, while two
Expand Down
Loading
Loading