Skip to content

docs(adr-0086): re-evaluate authz metadata/config boundary against latest code (#2557)#3011

Merged
os-zhuang merged 1 commit into
mainfrom
claude/auth-model-design-eval-xxgzcl
Jul 16, 2026
Merged

docs(adr-0086): re-evaluate authz metadata/config boundary against latest code (#2557)#3011
os-zhuang merged 1 commit into
mainfrom
claude/auth-model-design-eval-xxgzcl

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Summary

Re-evaluates the ADR-0086 design (authz metadata↔config boundary + cross-package composition, the deliverable of #2557) against the current code (HEAD 2026-07-16). The ADR was written the day #2557 opened (2026-07-04); its full plan has since shipped, and three later ADRs built directly on it. This PR flips the ADR's status from Proposed → Accepted (substantially implemented) and appends a code-grounded Re-evaluation (2026-07-16) addendum.

What the re-evaluation found

The central thesis holds unchanged — definitions travel with the package (provenance managedBy + packageId); subject bindings stay environment config; cross-package grants compose conflict-free by the namespaced-key UNION. Every decision and phase has landed:

Item Status Evidence
D3 packageId + provenance on the set Implemented spec/security/permission.zod.ts:167,178; sys-permission-set.object.ts:217-266
D5 bootstrapDeclaredPermissions Implemented plugin-security/src/bootstrap-declared-permissions.ts (seeds managed_by:'package' + package_id; closes the ADR-0078 inert-metadata smell)
P0 objectui scope + slice-merge Done (objectui #2505/#2508) permission-slice.ts + mergePermissionSlice; packageId-scoped matrix; draft-mode save
D6/D7 two doors Implemented package door = mode:'draft'; env door live + ADR-0094 write-through

Two mechanisms overtaken by better realizations (flagged inline)

  1. P0's "slice-merge the shared data record" premise → ADR-0094 pure projection + overlay. sys_permission_set is now a derived projection over the metadata layer; the data-loss trap is closed structurally (no second writable authority). The inline objects/fields body shape survived, so the namespaced-key slice invariant still holds.
  2. D4's Salesforce-muting/clone subtract layer → ADR-0005 first-class overlay (ADR-0094 D5 revised): an env overlay of a package set keeps receiving vendor baseline tightenings and retains the code-vs-overlay diff.

Vocabulary refresh (ADR-0090)

The D1 classification table is restated in current vocabulary: Position (not Role; flat, no parent), Profile removed, everyone/guest anchors replacing the member_default fallback, renamed + time-boxed (ADR-0091) assignment tables, and the ADR-0090 D12 adminScope.

Net

No decision was reversed. Remaining genuinely-open items are the ones the ADR already marked deferred and evidence-gated (ADR-0066 explicit-deny precedence layer, permission-set groups, OWD env-tightening via overlay).

Changes

  • docs/adr/0086-authz-metadata-config-boundary-and-cross-package-composition.md — status line + Re-evaluation (2026-07-16) addendum. Docs-only; no code or behavior change.

Closes the re-evaluation ask on #2557.

🤖 Generated with Claude Code


Generated by Claude Code

…test code (#2557)

ADR-0086 was written the day #2557 opened; its full plan has since shipped and
three later ADRs (0090, 0094, 0095) built on it. Flip status Proposed → Accepted
(substantially implemented) and add a code-grounded Re-evaluation (2026-07-16)
addendum:

- Per-decision/phase status table (D1-D7, P0-P2) with file-level landing points:
  D3 packageId+provenance, D5 bootstrapDeclaredPermissions, P0 objectui
  slice-merge (#2505/#2508), D6/D7 two doors — all implemented.
- Flag the two mechanisms the original text describes that later work overtook:
  P0's shared-data-record slice-merge premise -> ADR-0094 pure projection +
  metadata overlay; D4's Salesforce-muting subtract layer -> ADR-0005 first-class
  overlay (ADR-0094 D5 revised).
- Restate the D1 classification table in current ADR-0090 vocabulary: Position
  (not Role, flat/no parent), Profile removed, everyone/guest anchors, renamed
  + time-boxed (ADR-0091) assignment tables, adminScope (ADR-0090 D12).
- Net: no decision reversed; thesis holds. Remaining open items are the ones
  already marked deferred/evidence-gated.
@vercel

vercel Bot commented Jul 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jul 16, 2026 4:55am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation size/s labels Jul 16, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review July 16, 2026 04:57
@os-zhuang
os-zhuang merged commit dd19298 into main Jul 16, 2026
15 checks passed
@os-zhuang
os-zhuang deleted the claude/auth-model-design-eval-xxgzcl branch July 16, 2026 04:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants