Skip to content

Profile→tier-ceiling mapping ratified — min-of-both's other half

Date: 2026-09-22 Status: closed Supersedes: none Superseded-by: none — current

docs/decisions/2026-09-12-seam-class-taxonomy.md ratified the AT0–AT3 autonomy-tier taxonomy and, in its second countersign box, ratified min-of-both as the composition mechanism between a verb’s own tier and a repo’s registry profile — falsified both directions in stratt-hq (TK-petrova-min-of-both-0001). It explicitly withheld one piece: “No profile→tier-ceiling mapping is ratified by this — that remains a separate, tracked decision.” IR-002’s closure note names the same gap. Nothing in host/src/ implements or reads such a mapping today (verified by grep — min-of-both/minOfBoth/tierCeiling return zero hits outside the taxonomy doc’s own prose); the mechanism exists, unpopulated.

This doc supplies the missing values.

Each registry profile value implies a ceiling — the strictest AT tier a verb may reach in a repo carrying that profile, regardless of the verb’s own tier:

profileceilingrationale
strictAT1Only reversible, single-repo, no-privileged-path writes ever land here unattended-adjacent — matches profile=strict’s existing FR-009 role as “the anti-echo damper.”
standardAT2Reversible-with-a-second-act writes (registry edits, phase transitions, request_merge_when_green) are in scope; still no irreversible/externally-visible act.
permissiveAT3Full range, including petrova.sweeps.trigger — the only verb currently rated AT3.

Composition (unchanged, already ratified): effective ceiling for a (verb, repo) pair = min(verb's own AT tier, this table's ceiling for the repo's profile). A repo cannot loosen a verb’s own ceiling by carrying a looser profile; a verb cannot force a stricter repo to accept a tier its profile refuses.

Registry fact this mapping lands on, checked before ratifying it: none of the five repos IRINA can currently target (fleets_allowed non-empty, role != canary — kahn-hq, hermes, yao-agent, abacus, fathom) carry profile: permissive; all five are strict or standard. Only eva-hq is permissive registry-wide, and it is not IRINA-eligible today (empty fleets_allowed). The AT3 ceiling is therefore not live against any real IRINA target the moment this doc ratifies — it exists for when a repo’s profile or fleets_allowed changes, not to unlock anything today.

  • strict→AT0, standard→AT1, permissive→AT2 (one tier lower across the board) — considered; rejected as stricter than the taxonomy doc’s own worked examples require (AT1 verbs like open_decision and update_milestone are exactly the kind of act a strict-profile repo is meant to still permit — an AT0 ceiling would silently make every strict repo read-only to IRINA, which no prior doc asked for).
  • A single fleet-wide ceiling, no per-profile table — rejected: this is exactly the “no profile axis” shape seam-class-taxonomy.md already rejected once (its own “no taxonomy” alternative), just moved one level up; the registry already carries profile for exactly this purpose.
  • Defer ratification until a permissive repo is actually IRINA-eligible — rejected: the taxonomy doc named this gap as blocking, and leaving it open costs nothing to close now against the worked cases already on record (strict/standard), while the permissive row is honestly flagged above as currently inert rather than silently asserted as tested.

For code: none yet. This ratifies the values; wiring min-of-both enforcement into host/src/registry.ts’s act() dispatch (reading registry.yaml’s profile alongside a verb’s seamTier) is a separate, tracked follow-up — filing it as such rather than silently expanding this doc’s own scope past “ratify the mapping,” the same discipline IR-002 used splitting taxonomy/schema/validator/population into four acts, not one.

For docs: docs/decisions/2026-09-12-seam-class-taxonomy.md’s “stated, not ratified” line for the mapping is now answered by this doc; that doc stays as-is (append-only, not edited) per MR-7.

For in-flight phases: none named.

For invariants: none added or repealed.

  • docs/decisions/2026-09-12-seam-class-taxonomy.md
  • docs/decisions/2026-09-14-ir-002-step4-remaining-seam-tiers.md
  • irina/tickets/IR-002-seam-class-sequence.xml
  • registry.yaml
  • Subagent: claude-sonnet-5 (session_01488gmoyur1UAMfpNMgUAhC)
  • Human: alex@devarno.com approves the strict→AT1 / standard→AT2 / permissive→AT3 mapping as the ratified values for min-of-both composition.

Countersigned by human:alex@devarno.com on 2026-09-22. Box ticked by the human directly, in-file; this line recorded by the agent as scribe.