Multi-Role Surfaces¶
A surface object may perform multiple authority-bearing roles.
Rule¶
A manifest MUST represent a multi-role surface as:
- one surface object;
- one
object_kind; - one or more role entries;
- role-specific review requirements;
- role-specific evidence requirements;
- role-specific AI authority limits.
Duplicate declarations for the same surface are forbidden unless explicitly scoped by non-overlapping paths, generated outputs, commands, lifecycle stages, or other spec-defined scope rules.
Object kind and role kind¶
object_kind describes what the surface is.
role.kind describes what authority-bearing function the surface performs.
Example:
[[surface]]
id = "project-configuration"
object_kind = "file"
paths = ["pyproject.toml"]
[[surface.role]]
kind = "project_identity_surface"
[[surface.role]]
kind = "dependency_boundary"
[[surface.role]]
kind = "public_command_surface"
The object kind is singular. The roles are plural.
Requirement composition¶
When a surface has multiple roles:
- review requirements compose by union;
- evidence requirements compose by union;
- downstream effects compose by union;
- AI authority uses the most restrictive applicable rule.
Most-restrictive-wins¶
If role A allows drafting and role B allows advisory, the effective AI
authority for the surface is advisory unless the spec defines a narrower
scoped exception.
If any role sets AI authority to prohibited, the effective AI authority is
prohibited for the covered scope.
No hidden collapse¶
A multi-role surface MUST NOT collapse role-specific authority requirements into a single untyped approval. Reviewers must be able to inspect which role created which requirement.