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
{{ message }}
Repository navigation
Commit ecb7391
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: packages/spec/liveness/permission.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -30,8 +30,8 @@
30
30
},
31
31
"managedBy": {
32
32
"status": "dead",
33
-
"verifiedAt": "2026-10-11",
34
-
"note": "ADR-0086 D3 — per-record provenance on the metadata-persistence axis (package | platform | user). VERDICT CORRECTED 2026-10-11 (#15204 stage 6b-2): no code reads the AUTHORED key. The cited consumer, bootstrapDeclaredPermissions, stamped `managed_by: 'package'` on every row it wrote and never read `ps.managedBy`, so this row's `live` verdict pointed at a writer of the COLUMN, not a reader of the key; that seeder is now retired (ADR-0131 D3: the boot writes no catalog row). The sys_permission_set.managed_by column is unaffected. Retirement of the authored key is an enforce-or-remove item for the spec seat."
33
+
"verifiedAt": "2026-10-16",
34
+
"note": "REMOVED 2026-10-16 — tombstoned at the schema (retiredKey carries the prescription; authoring it is a tsc error and a parse error) and stripped from stored rows and built artifacts by the protocol-18 conversion permission-set-managed-by-removed. The entry stays because retiredKey keeps the key in the walked shape (the rls.priority precedent); a set's provenance is the package that ships it, decided from that package's artifact and recorded as packageId. History: ADR-0086 D3 per-record provenance (package | platform | user); VERDICT CORRECTED 2026-10-11 (#15204 stage 6b-2): no code read the AUTHORED key — bootstrapDeclaredPermissions stamped the sys_permission_set.managed_by COLUMN and never read ps.managedBy, and that seeder is retired (ADR-0131 D3). The sys_permission_set.managed_by column is a different surface and is unaffected."
{field: 'label',colSpan: 1,helpText: 'Display label for admins'},
35
35
// #19331 — four declared keys had no control, so the only door to any of
36
36
// them was the Source tab's free-text JSON. `description` is persisted on
37
-
// sys_permission_set and shown in Setup; the other three are the ADR-0086
38
-
// D3 provenance pair plus the ADR-0090 D5 baseline flag. The help texts
39
-
// are an admin's words; the decision records stay here:
37
+
// sys_permission_set and shown in Setup; of the other three, `packageId`
38
+
// (ADR-0086 D3) and the ADR-0090 D5 baseline flag keep their rows. The
39
+
// help texts are an admin's words; the decision records stay here:
40
40
// - `isDefault` (ADR-0090 D5): an app-level set is auto-bound to the
41
41
// built-in `everyone` position at boot, after the high-privilege check;
42
42
// a package-level set materializes a `sys_audience_binding_suggestion`
43
43
// an admin confirms in Setup.
44
-
// - `managedBy` (ADR-0086 D3): `package` rows are re-seeded on upgrade;
45
-
// `platform` / `user` rows are environment config package seeding
46
-
// never touches.
44
+
// - `managedBy` left this form with its key (#23891, ADR-0049
45
+
// enforce-or-remove): nothing read the authored value, so its labels
46
+
// promised upgrade behaviour no code kept.
47
47
// - `packageId` (ADR-0086 D3): a value that disagrees with the package
48
48
// the set ships in or is saved into is refused
49
49
// (`judgePermissionSetOwnerBinding`).
50
50
{field: 'description',type: 'textarea',colSpan: 2,helpText: 'Human-readable description shown in Setup.'},
51
51
{field: 'isDefault',type: 'boolean',colSpan: 1,helpText: 'Gives this set to everyone who signs in, through the built-in everyone position. A set the app itself declares is granted at startup; a set from an installed package becomes a suggestion an admin confirms in Setup. A set with high-privilege permissions is never granted this way. Default false.'},
52
-
{field: 'managedBy',type: 'select',colSpan: 1,helpText: 'Who owns this set: Package means it ships with a package and package upgrades update it; Platform and User mean it was created in this environment and upgrades leave it alone.',options: [
{field: 'packageId',type: 'text',colSpan: 2,helpText: 'The package that ships this set; a value naming any other package is refused. Leave empty for a set created in this environment.'},
+'`includeSubtree`, `manageAssignments`, and `assignablePermissionSets`. '
669
669
+'Run `os migrate meta --from 17` to list the mechanical edits for existing sources; `--write` applies the ones it can prove, and you apply the rest by hand.';
670
670
671
+
/**
672
+
* [#23891] The prescription for the retired authored key
673
+
* `PermissionSetSchema.managedBy` — see the tombstone on that schema.
674
+
*/
675
+
constPERMISSION_SET_MANAGED_BY_REMOVED=
676
+
'`permission.managedBy` was removed in @objectstack/spec 18 (ADR-0049 enforce-or-remove, ADR-0086 D3) — '
677
+
+'nothing ever read the authored key: no seeder, package upgrade or lock consulted it, so `package` never made '
678
+
+'a set upgrade-owned and `platform` or `user` never shielded one from an upgrade. Delete the key; a set\'s '
679
+
+'provenance is the package that ships it, decided from that package\'s artifact and recorded as `packageId`, '
680
+
+'and a set created in this environment carries neither. '
681
+
+'Run `os migrate meta --from 17` to list the mechanical edits for existing sources; `--write` applies the ones it can prove, and you apply the rest by hand.';
packageId: z.string().optional().describe('[ADR-0086 D3] Owning package id for a package-shipped set (absent = env-authored); a value that disagrees with the package that ships the set, or that it is saved into, is refused by the stack schema (defineStack, os validate, os build), the package registration, and the metadata save, restore and publish doors'),
904
915
905
916
/**
906
-
* [ADR-0086 D3] Per-record provenance on the existing
0 commit comments