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

FieldTypeDescription
idProjectionIDUnique identifier following pattern PRJ-*
titlestringHuman-readable name
viewer_contextobjectViewer definition (label + reference based; no executable logic)
surfacesSurfaceRef[]Entry point surfaces included in this projection

Optional Fields

FieldTypeDefaultDescription
assumptionsobject-Traceability references to P-* / INV-* used to define the projection’s context
visibleExposure[]-Optional explicit “what is visible” listing
notesstring-Additional notes
statusArtifactStatusDRAFTLifecycle status
versionstring-Semantic version
extensionsExtensions-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-*.