Projection (PRJ) Artifact Specification
Definition
A PRJ artifact describes what a specific viewer context sees across one or more entry points.
Entry Points (EP-*) can optionally include a viewer-agnostic exposure inventory (exposes[], a superset). PRJ (PRJ-*) is viewer-specific (a slice): it binds an audience definition (role/relationship/tenancy context) to a set of surfaces and documents what is visible in that context.
Purpose
PRJ enables:
- Auditable, reproducible “who can see what” documentation
- Systematic privacy/access-control analysis across multiple surfaces
- Traceability to the invariants that govern viewer-specific visibility
Core Principles
- Invariants are SSOT for logic. PRJ MUST NOT encode executable visibility rules.
- Viewer context is label + reference based. Use tags and references (
INV-*,P-*) for traceability. - Composes from EP. PRJ references entry points (
EP-*) and MAY optionally list visible exposures as a viewer-specific slice.
Required Fields
| Field | Type | Description |
|---|---|---|
id | ProjectionID | Unique identifier following pattern PRJ-* |
title | string | Human-readable name |
viewer_context | object | Viewer definition (label + reference based; no executable logic) |
surfaces | SurfaceRef[] | Entry point surfaces included in this projection |
Optional Fields
| Field | Type | Default | Description |
|---|---|---|---|
assumptions | object | - | Traceability references to P-* / INV-* used to define the projection’s context |
visible | Exposure[] | - | Optional explicit “what is visible” listing |
notes | string | - | Additional notes |
status | ArtifactStatus | DRAFT | Lifecycle status |
version | string | - | Semantic version |
extensions | Extensions | - | Extension-specific fields |
Schema
Schema: prj.schema.yaml
Common Pitfalls
- Encoding executable policy logic in PRJ; invariants are SSOT for logic.
- Treating PRJ as required for core conformance; it is optional unless a profile/extension requires it.
- Duplicating entry point surface metadata in PRJ instead of referencing
EP-*.