Walls access rules
What Walls decides, shown by running realistic scenarios through the engine. Each table and chart below is the engine's own output. Every expected decision, refusal and alert is asserted, so if the engine ever disagrees, this page fails to build.
Generated from ea1ed19 · scenarios in docs/scenarios · results as JSON in results/
Rules
| Rule | What holds | Proven by |
| Walls win | A walled person or group has no access to what the wall covers, whatever grants or memberships say. | |
| Walls guard | An issued command that would give a walled person access is rejected: a direct grant, lifting a denial, or joining a group that has access. | |
| Raising a wall revokes | A wall revokes the walled principal's grants on what it covers in the same commit, kept history included. A wall over a group also revokes its members' own grants there. | |
| Lifting restores nothing | When a wall is lifted, what it revoked returns only through a new grant. | |
| Observed facts are recorded | Facts reported by the directory or the DMS are recorded even when they break a rule; only an error in the facts themselves (an unknown or duplicate id, a cycle, a grant over the principal's own denial) rejects one. Walls still win over them, and the conflict raises an alert. | |
| Grants inherit down the tree | A grant on a folder covers every folder and version below it. | |
| Groups nest | A group can belong to a group; members get access through every level, and lose it when they leave. | |
| Kept history is per version | After a keep-history revoke, a version stays readable only if it was created before the revoke. | |
| Tag walls cover future roots | A root created, re-tagged or promoted to match a wall's tag selector is walled from that moment. | |
| Group grants that reach a walled member | By default the grant commits with an alert and the wall still wins; in paranoid mode it is rejected. | |
| Denials cut a chain | A denial ends a principal's inheritance at that folder, whatever its own deeper grants say. A grant that reopens access below a denial is an override: it needs acknowledgement and is flagged. | |
| Moving content behind a wall revokes | A folder moved under a walled folder loses the walled person's grants; moving it back restores nothing. | |
| Content leaving a wall needs acknowledgement | Moving a folder or document out of a wall's coverage, or re-tagging a root out of a tag wall, is refused unless acknowledged, and an acknowledged move raises an alert. A new version of a deleted document filed outside the wall it last sat under counts as such a move. | |
| Corrections never overwrite | A retraction removes an event's effect from every date, while the log keeps what was believed at the time. | |
| External content follows its folder | Documents kept outside Walls are decided by the folder the application says they sit in. Moving one out of a wall needs acknowledgement and raises an alert; a delete is undone by a restore, never a retraction. | |
| Disabled principals decide nothing | A disabled person or service account has no access anywhere while disabled, whatever its grants and groups say. Enabling it restores what it had, and the past is unchanged. | |
| An agent sees the lower of two | An agent acting for a person sees only what both it and the person may see, and nothing unless the person delegated to it. | |
| Revoked tokens are refused | A request carrying a revoked token is refused from the revocation on. Walls never interprets the token; the gate asks whether it is revoked. | |
Lateral hire from opposing counsel
Ana, an associate on matter 42, rolls off and later joins opposing counsel. Ben's team keeps full access.
✓ 5 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-02 Acme v. Globex is opened as matter 42 root_created
2026-01-02 First strategy memo is filed version_created
2026-01-02 Ben is on the litigation team joined_group
2026-01-02 The litigation team gets full access to the matter granted
2026-01-10 Associate Ana is staffed on the matter granted
2026-03-01 Ana rolls off and keeps read access to what existed revoked_keep_history
2026-04-01 The memo is revised version_created
2026-05-15 Ana accepts an offer from opposing counsel and is screened wall_raised → engine revokes person ana on matter42
Asserted checks
Access by person and group
2026-02-01
2026-04-15
2026-06-01
A practice group inside the litigation team
Securities sits inside litigation, which has edit on matter 7. Carol reaches a brief two folders down until leaving securities.
✓ 4 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Initech's matter 7 is opened root_created
2026-01-05 A pleadings folder is added folder_created
2026-01-05 A drafts folder is added under pleadings folder_created
2026-01-05 The complaint is filed version_created
2026-01-05 A draft brief is started version_created
2026-01-05 Securities becomes part of litigation joined_group
2026-01-05 Carol joins the securities practice group joined_group
2026-01-05 Dave joins litigation directly joined_group
2026-01-06 Litigation is granted edit on the whole matter granted
2026-03-01 Carol leaves the securities group left_group
Asserted checks
Access by person and group
2026-02-01
2026-03-15
A client-wide screen that follows new matters
Erin is screened from every Globex matter, including one opened later and an Initech matter re-tagged after an acquisition.
✓ 5 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Erin is screened from all Globex matters wall_raised
2026-01-05 Erin is on all-staff joined_group
2026-01-05 Frank joins all-staff joined_group
2026-01-05 An Initech matter is opened root_created
2026-01-05 A pitch deck is filed on it version_created
2026-01-05 All-staff may read the Initech matter granted
2026-02-01 A new Globex matter is opened: walled from birth root_created
2026-02-01 A filing is added version_created
2026-02-01 All-staff may read it: commits, with an alert about Erin granted → alert: group_grant_reaches_walled
2026-02-02 Someone tries to grant Erin read directly granted refused person erin is walled from matter90 by wall globex-screen
2026-03-01 Globex acquires Initech; matter 55 is re-tagged tags_changed
Asserted checks
Access by person and group
2026-02-15
2026-03-15
Issued commands are refused; directory facts are recorded
Gina is screened from matter 42. Staff cannot give Gina access; the directory can report it, but the wall still wins.
✓ 2 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 A memo is filed version_created
2026-01-05 Hugo is on the matter team joined_group
2026-01-05 The matter team gets edit granted
2026-01-06 Gina is screened wall_raised
2026-01-10 A direct grant to Gina is refused granted refused person gina is walled from matter42 by wall gina-screen
2026-01-10 Adding Gina to the team is refused joined_group refused person gina is walled from matter42 by wall gina-screen
2026-01-12 The directory reports that Gina joined the team joined_group → alert: observed_wall_conflict
Asserted checks
Access by person and group
2026-01-15
Paranoid mode refuses group grants that reach a walled member
In paranoid mode, a team grant that would reach screened Iris is refused, so Jon is granted directly.
✓ 2 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 A memo is filed version_created
2026-01-05 Iris joins litigation joined_group
2026-01-05 Jon joins litigation joined_group
2026-01-05 Iris is screened wall_raised
2026-01-10 Granting litigation edit is refused: it would reach Iris granted refused person iris is walled from matter42 by wall iris-screen
2026-01-10 Jon is granted edit directly instead granted
Asserted checks
Access by person and group
2026-01-15
A precautionary wall is lifted
Kai is screened while a conflict check runs. Lifting the wall brings nothing back until a new grant.
✓ 4 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 12 is opened root_created
2026-01-05 A contract draft is filed version_created
2026-01-05 Kai is granted edit granted
2026-02-01 Kai is screened pending a conflict check wall_raised → engine revokes person kai on matter12
2026-03-01 The check clears and the wall is lifted wall_lifted
2026-04-01 Kai is granted read again granted
Asserted checks
Access by person and group
2026-01-15
2026-02-15
2026-03-15
2026-04-15
A privileged folder inside a matter
Litigation has edit on matter 42 but is denied its privileged folder. Partners read it through an acknowledged override.
✓ 4 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 A privileged folder is added folder_created
2026-01-05 A pleading is filed at the root version_created
2026-01-05 Privileged advice is filed version_created
2026-01-05 Leo joins litigation joined_group
2026-01-05 Leo is a partner joined_group
2026-01-05 Mia joins litigation joined_group
2026-01-06 Litigation gets edit on the matter granted
2026-01-06 Litigation is denied the privileged folder denied
2026-01-07 Partners' read on privileged, unacknowledged, is refused granted refused this reopens privileged for leo, who has a denial there; resubmit with acknowledge_override
2026-01-07 The same grant, acknowledged as an override granted
Asserted checks
Access by person and group
2026-01-15
Research moved behind a wall
Noah, screened from matter 42, has edit on research in matter 77 until the folder moves into 42.
✓ 3 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 Matter 77 is opened root_created
2026-01-05 A research folder is added to matter 77 folder_created
2026-01-05 Research notes are filed version_created
2026-01-05 Noah gets edit on the research folder granted
2026-01-05 Noah is screened from matter 42 wall_raised
2026-02-01 The research folder is moved into matter 42 folder_moved → engine revokes person noah on research
2026-03-01 It is moved back, acknowledged folder_moved → alert: left_walled_scope
Asserted checks
Access by person and group
2026-01-15
2026-02-15
2026-03-15
A grant to the wrong person, corrected
Edit meant for Owen went to Olga. The retraction erases Olga's access on every date; the log keeps what was believed.
✓ 3 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 30 is opened root_created
2026-01-05 A term sheet is filed version_created
2026-01-10 Edit is granted to Olga by mistake granted
2026-01-20 The mistaken grant (step 3) is retracted retracted
2026-01-20 Owen is granted edit granted
Asserted checks
Access by person and group
2026-01-15
2026-01-25
A memo kept outside Walls leaves a wall
The application keeps its memo in matter 42, which Noah is screened from; he has edit on matter 77. Walls hears only where the memo moves.
✓ 2 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 Matter 77 is opened root_created
2026-01-05 Noah gets edit on matter 77 granted
2026-01-05 Noah is screened from matter 42 wall_raised
2026-02-01 The memo is moved to matter 77 without acknowledgement content_relocated refused memo would leave wall noah-screen; resubmit with acknowledge_override
2026-02-01 It is moved again, acknowledged content_relocated → alert: left_walled_scope
Asserted checks
Access by person and group
2026-01-15
2026-02-15
A memo kept outside Walls is deleted, then restored
Ana has edit on matter 42, where the application keeps a memo. It is deleted, and a restore, not a retraction, brings it back.
✓ 3 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 Ana gets edit on matter 42 granted
2026-02-01 The memo is deleted content_deleted
2026-02-10 Retracting the delete is refused retracted refused event 2 cannot be retracted: it changed no rows
2026-03-01 The memo is restored to matter 42 content_restored
Asserted checks
Access by person and group
2026-01-15
2026-02-15
2026-03-15
A deleted memo filed again outside its wall
Noah, screened from matter 42, has edit on matter 77. A memo in matter 42 is deleted, then a new version of it is filed in matter 77.
✓ 4 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 Matter 77 is opened root_created
2026-01-05 A memo is filed in matter 42 version_created
2026-01-05 Noah gets edit on matter 77 granted
2026-01-05 Noah is screened from matter 42 wall_raised
2026-02-01 The memo is deleted document_deleted
2026-03-01 A new version is filed in matter 77 without acknowledgement version_created refused memo would leave wall noah-screen; resubmit with acknowledge_override
2026-03-01 It is filed again, acknowledged version_created → alert: left_walled_scope
Asserted checks
Access by person and group
2026-01-15
2026-02-15
2026-03-15
A review integration is disabled
A document-review service account reads matter 42 on its own grant and edits matter 77 through its group. Disabling it stops every decision it makes at once, and enabling it restores them.
✓ 7 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 A pleadings folder is added folder_created
2026-01-05 Matter 77 is opened root_created
2026-01-05 A brief is filed in pleadings version_created
2026-01-05 A memo is filed in matter 77 version_created
2026-01-05 The review integration is registered as a service account principal_registered
2026-01-05 It joins the reviewers group joined_group
2026-01-05 It is granted read on matter 42 granted
2026-01-05 Reviewers are granted edit on matter 77 granted
2026-02-10 Its key is suspected leaked, so the account is disabled principal_disabled
2026-03-10 The key is rotated and the account enabled again principal_enabled
Asserted checks
Access by person and group
2026-02-01
2026-02-15
2026-03-15
An assistant acts for Ana
An AI assistant with grants of its own acts for Ana. It sees only what both it and Ana may see, and nothing once she ends the delegation.
✓ 7 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 Matter 77 is opened root_created
2026-01-05 The board matter is opened root_created
2026-01-05 A brief is filed in matter 42 version_created
2026-01-05 A memo is filed in matter 77 version_created
2026-01-05 Board minutes are filed version_created
2026-01-05 Ana is granted edit on matter 42 granted
2026-01-05 Ana is granted read on matter 77 granted
2026-01-05 The assistant is registered as a service account principal_registered
2026-01-05 The assistant is granted read on matter 42 granted
2026-01-05 The assistant is granted full on matter 77 granted
2026-01-05 The assistant is granted full on the board matter granted
2026-02-01 Ana lets the assistant act for her delegation_started
2026-03-01 Ana ends the delegation delegation_ended
Asserted checks
Access by person and group
2026-01-15
2026-02-15
2026-03-15
A stolen laptop's token is revoked
Ana reports her laptop stolen. Its token is revoked: from then on, a request carrying it is refused, while Ana's own access, on another token, is unchanged.
✓ 3 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 A memo is filed version_created
2026-01-05 Ana is granted edit granted
2026-02-10 The laptop's token is revoked token_revoked
Asserted checks
Access by person and group
2026-02-01
2026-02-15
A matter re-tagged out of a client screen
Quinn is screened from every Globex matter, though all-staff may read matter 55. When Globex sells the business to Initech, re-tagging the matter frees it only with acknowledgement.
✓ 3 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Globex's matter 55 is opened root_created
2026-01-05 A supply contract is filed version_created
2026-01-05 Quinn is on all-staff joined_group
2026-01-05 Rae is on all-staff joined_group
2026-01-05 All-staff may read matter 55 granted
2026-01-06 Quinn is screened from all Globex matters wall_raised
2026-03-01 Globex sells the business; re-tagging matter 55 as Initech, unacknowledged, is refused tags_changed refused matter55 would leave wall globex-screen; resubmit with acknowledge_override
2026-03-01 It is re-tagged again, acknowledged tags_changed → alert: left_walled_scope
Asserted checks
Access by person and group
2026-02-01
2026-03-15
A board restriction lifted behind a screen
Rosa has edit on matter 42 but is denied its board folder, which she is later screened from as well. Lifting her denial cannot let her back in.
✓ 5 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 A board folder is added folder_created
2026-01-05 A pleading is filed at the root version_created
2026-01-05 Board minutes are filed version_created
2026-01-05 Rosa gets edit on the matter granted
2026-01-05 Sam gets edit on the matter granted
2026-01-05 Rosa's brother sits on the client's board: she is denied the board folder denied
2026-02-01 Her brother turns out to be a witness: Rosa is screened from the board folder wall_raised
2026-03-01 Lifting Rosa's board denial is refused denial_lifted refused person rosa is walled from board by wall rosa-board-screen
2026-03-01 The DMS reports that her board denial was lifted denial_lifted → alert: observed_wall_conflict; alert: denial_lifted
Asserted checks
Access by person and group
2026-01-15
2026-03-15
A misfiled memo moved out of a wall
Tess, screened from matter 42, has edit on matter 77. A memo filed in matter 42 by mistake is moved to matter 77 only with acknowledgement.
✓ 2 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 Matter 77 is opened root_created
2026-01-05 A research memo for matter 77 is filed in matter 42 by mistake version_created
2026-01-05 Tess gets edit on matter 77 granted
2026-01-05 Tess is screened from matter 42 wall_raised
2026-02-01 Moving the memo to matter 77 without acknowledgement is refused document_moved refused memo would leave wall tess-screen; resubmit with acknowledge_override
2026-02-01 It is moved again, acknowledged document_moved → alert: left_walled_scope
Asserted checks
Access by person and group
2026-01-15
2026-02-15
A witness denied the privileged folder
Uma has edit on matter 42, and wrote a memo deep inside its privileged folder. Once she is to be a witness she is denied that folder, and no grant of her own below it lets her back in.
✓ 3 checks hold · SVG: folders, people, timeline · JSON
Step log
2026-01-05 Matter 42 is opened root_created
2026-01-05 A privileged folder is added folder_created
2026-01-05 A memos folder is added under it folder_created
2026-01-05 A pleading is filed at the root version_created
2026-01-05 Uma files a memo version_created
2026-01-05 Uma gets edit on the matter granted
2026-02-01 Uma will testify: she is denied the privileged folder denied
2026-02-10 Granting her read on the privileged folder is refused: lift the denial instead granted refused person uma's entry on privileged is a denial; use DenialLifted
2026-02-10 Granting her read on her memos commits, but opens nothing granted
Asserted checks
Access by person and group
2026-01-15
2026-02-15