Skip to content

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.