# ACCESS / GOVERNANCE Templates
Each template is a verified shape from a passing test fixture. Copy, then change names/values.
---
## ACCESS — Simple Permit (no conditions)
Source: `baseSteelthread`
```xml
ReadACCESS_POLICY_RULE_DEFINITIONPermitSet1INTERNALANYANYDATACLOUD0
```
---
## ACCESS / GOVERNANCE — "Objects AND all their fields" via TupleRead (UI-compatible)
Source: see §8.2.1 of policy.md
Three required pieces:
1. `TupleRead` — cascades object-level condition to fields
2. **OR-of-ENTITYTYPE clause** — required for UI editability (without it the builder crashes)
3. The actual semantic gate (tag / classification / permission)
```xml
TupleReadGOVERNANCE_POLICY_RULE_DEFINITIONPermitPublicAccessSetINTERNALANYANYDATACLOUD0WHENIS{"t":"Text","v":"OBJECT"}ENTITYTYPEWHENIS{"t":"Text","v":"FIELD"}ENTITYTYPEWHENCONTAINS_ANYTAGDataGovernanceTags.ExternalData.Visibility.PublicSTANDARD_TAG(AND (OR 1 2) (AND 3))
```
For **deny semantics**: `Forbid`. To add "deny unless permission Y", insert a 4th condition with `ASSIGNED_PERMISSIONS_PATH CONTAINS_NONE Y` and use `(AND (OR 1 2) (AND 3) (AND 4))`.
---
## ACCESS — Gated by Tag / Classification / Permission
Source: `conditionTagValidSteelthread`, `conditionClassificationValidClauseSteelthread`, `conditionAssignedPermPathValidSteelthread`
```xml
ReadACCESS_POLICY_RULE_DEFINITIONPermitTagSet1INTERNALANYANYDATACLOUD0WHENCONTAINS_ANYTAGCustomTagRefCUSTOM_TAG1
```
Swap the inner condition for permission gating:
```xml
WHENCONTAINS_ANYASSIGNED_PERMISSIONS_PATHtestCustomPermission1CUSTOM_PERMISSION
```