@@ -24,8 +24,8 @@ description = "Shared Python tooling for scaffolding, validating, inspecting, ca
2424# === CODEOWNERS Projection ===
2525
2626[codeowners ]
27- informs = true
28- requires_code_owner_review = false
27+ informs = true # REQ: An entry must be provided.
28+ requires_code_owner_review = false # REQ: An entry must be provided.
2929
3030# === Local CODEOWNERS Role Resolution ===
3131# These role identities are used only for CODEOWNERS owner resolution.
@@ -46,10 +46,13 @@ spec = "@structural-explainability/spec"
4646security = " @structural-explainability/security"
4747release = " @structural-explainability/release"
4848
49- # === Local Oversight Roles ===
49+ # === Required Oversight Role ===
5050
5151# Local oversight roles assign review ownership for this repository.
5252# Each role maps local responsibility back to reusable accountable-surface roles.
53+ # Every repository MUST provide a local role responsible
54+ # for the authority manifest itself.
55+ # By convention this role is named "owner".
5356
5457[oversight_roles .owner ]
5558label = " Owner"
@@ -59,6 +62,11 @@ requires_review = ["human_review"]
5962requires_evidence = [" decision_note" , " human_review_record" ]
6063ai_max_authority = " prohibited"
6164
65+ # === Additional Local Oversight Roles ===
66+
67+ # Local oversight roles assign review ownership for this repository.
68+ # Each role maps local responsibility back to reusable accountable-surface roles.
69+
6270[oversight_roles .authority_projection ]
6371label = " Authority Projection"
6472description = " Reviews surfaces that project accountable-surface declarations into GitHub CODEOWNERS enforcement artifacts."
@@ -129,6 +137,8 @@ ai_max_authority = "drafting"
129137
130138# === Level 100: Broad source and test defaults ===
131139
140+ # --- Public Python API and implementation surfaces ---
141+
132142[[surface ]]
133143id = " public-python-api"
134144object_kind = " directory"
@@ -149,6 +159,7 @@ requires_review = ["human_review"]
149159requires_evidence = [" decision_note" , " verification_command_result" ]
150160ai_max_authority = " drafting"
151161
162+ # --- Tests and Fixtures ---
152163
153164[[surface ]]
154165id = " tests-and-fixtures"
@@ -167,6 +178,8 @@ ai_max_authority = "drafting"
167178
168179# === Level 200: Public command and projection implementation surfaces ===
169180
181+ # --- CLI command surface ---
182+
170183[[surface ]]
171184id = " cli-command-surface"
172185object_kind = " directory"
@@ -187,6 +200,7 @@ requires_review = ["human_review"]
187200requires_evidence = [" decision_note" , " verification_command_result" ]
188201ai_max_authority = " drafting"
189202
203+ # --- CODEOWNERS generation engine ---
190204
191205[[surface ]]
192206id = " codeowners-generation-engine"
@@ -208,6 +222,7 @@ kind = "public_contract"
208222[[surface .role ]]
209223kind = " validation_rule"
210224
225+ # --- Export and Catalog Boundary ---
211226
212227[[surface ]]
213228id = " export-and-catalog-boundary"
@@ -232,6 +247,8 @@ ai_max_authority = "drafting"
232247
233248# === Level 300: Spec-compatibility overrides ===
234249
250+ # --- Surface Spec Compatibility ---
251+
235252[[surface ]]
236253id = " surface-spec-compatibility"
237254object_kind = " directory"
@@ -266,6 +283,8 @@ ai_max_authority = "drafting"
266283
267284# === Level 400: Project configuration and package contract ===
268285
286+ # --- Project Configuration ---
287+
269288[[surface ]]
270289id = " project-configuration"
271290object_kind = " file"
@@ -313,6 +332,8 @@ ai_max_authority = "drafting"
313332
314333# === Level 500: Release and automation authority ===
315334
335+ # --- Release and Automation Authority ---
336+
316337[[surface ]]
317338id = " release-and-automation-authority"
318339object_kind = " directory"
@@ -341,6 +362,8 @@ ai_max_authority = "advisory"
341362
342363# === Level 600: Repository governance and security documentation ===
343364
365+ # --- Repository Governance ---
366+
344367[[surface ]]
345368id = " repository-governance"
346369object_kind = " directory"
@@ -367,6 +390,7 @@ requires_review = ["human_review", "security_review"]
367390requires_evidence = [" decision_note" ]
368391ai_max_authority = " advisory"
369392
393+ # --- Repository Security ---
370394
371395[[surface ]]
372396id = " repository-security"
@@ -383,7 +407,29 @@ requires_evidence = ["decision_note"]
383407ai_max_authority = " advisory"
384408
385409
386- # === Level 700: Self-protecting authority manifest ===
410+ # === Level 700: Required Self-Protection ===
411+ #
412+ # Every accountable-surface manifest MUST declare itself as a protected surface.
413+ # This surface SHOULD be emitted after ordinary repository surfaces so that
414+ # CODEOWNERS projection gives the authority manifest the strongest applicable
415+ # ownership rule.
416+ #
417+ # The self-protection surface MUST:
418+ #
419+ # - use id = "authority-manifest"
420+ # - include paths = [".accountability/surfaces.toml"]
421+ # - declare oversight_role = "owner" or another local role mapped to
422+ # authority_boundary and authority_manifest_surface
423+ # - declare codeowners_order at the final/highest local projection level
424+ # - prohibit AI authority over the manifest
425+ # - require human review
426+ # - require evidence of review
427+ #
428+ # Rationale:
429+ # If an actor with technical capability can rewrite the authority declaration
430+ # without review, technical capability has silently become authority.
431+
432+ # --- Authority Manifest Self-Protection ---
387433
388434[[surface ]]
389435id = " authority-manifest"
0 commit comments