Skip to content

Design the permissionreset-smb write path - #59

Open
robertcantu-pure wants to merge 2 commits into
mainfrom
docs/smb-write-path-design
Open

robertcantu-pure wants to merge 2 commits into
mainfrom
docs/smb-write-path-design

Conversation

@robertcantu-pure

Copy link
Copy Markdown
Collaborator

Adds smb/DESIGN-write-path.md: how permissionreset-smb will reset DACLs and SACLs on FlashArray over SMB. It builds on the answers to decision record questions 1 and 3 (#58). Design only, no code. The maintainer chose the three-form model (below) over writing every object explicit and protected.

Core model. Each object's rule ACL maps to one of three stored forms:

  • inherits: the rule equals what the parent passes down. The object stores those ACEs as inherited, unprotected, and usually needs no write.
  • explicit + inherits: explicit ACEs followed by the inherited ones, unprotected.
  • protected: anything else; the rule's ACL as explicit ACEs, D:P.

Inherited ACEs are computed from the parent's desired DACL, and the walk is top-down, so written objects stay dynamic. Without that, they become the frozen copy seen in Q1a.

Also covers:

  • plan schema 2 (build-spec translates DACL lines; it refuses I flags, OWNER@/GROUP@ in a DACL, and numeric ids)
  • separate DACL and SACL writes
  • dry run, apply and validate
  • a probe preflight
  • the inheritance canary (G1) and read-back-every-write (G2) stop conditions
  • evidence
  • four hardware questions it depends on (Q-INH, Q-EXP, Q-PROT, Q-OWN)
  • phases up to smb-v0.1.0

smb/CLAUDE.md and smb/README.md point at it.

Verification

  • Documentation only; nothing is built and nothing is qualified.
  • Public scan of the tree and origin/main..HEAD commits: clean.
  • The lab request for Q-INH, Q-EXP and Q-PROT has been sent. Phase 2 (DACL apply) waits on those answers. Phase 1 (dry run and validate) doesn't.

🤖 Generated with Claude Code

A draft design for resetting DACLs and SACLs on FlashArray over SMB,
built on the 2026-11-12 answers to decision record questions 1 and 3.
Objects that only inherit get no write; an object that must be written
and should inherit takes ID ACEs computed from its parent's desired
DACL, parents first, so it stays dynamic. Each rule maps to one of three
stored forms (inherits, explicit + inherits, protected).

Covers the plan schema 2 translation and what it refuses (I flags,
OWNER@/GROUP@ in a DACL, numeric ids), the top-down walk, dry run and
validate, the probe preflight, the inheritance canary (G1) and
read-back (G2) stop conditions, evidence, four hardware questions the
design depends on, and a phased plan to smb-v0.1.0. No code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@robertcantu-pure robertcantu-pure added the documentation Improvements or additions to documentation label Nov 15, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant