Skip to content

Tier Manager

tier_manager -- mvp.tier_manager

Cluster: Uncategorised | Type: component | MCP Tools: 10

Overview

The Tier Manager provides a single system-wide tier state with explicit user-controlled advancement. It bridges the gap between individual tier components (self_training, evoskill, formal_methods) and gives users visibility and control over which adaptation layer is active.

State is persisted to an Obsidian vault with YAML frontmatter, wikilinks, and human-readable markdown — consistent with G6's explicit reasoning thesis.

Operations

Operation Description
get_status Current tier state (tier, cap, pending advancement)
propose_advance Propose moving to the next tier (requires confirmation)
confirm_advance Confirm a pending tier advancement
reject_advance Reject a pending tier advancement
cap_tier Set maximum allowed tier (0-3)
uncap_tier Remove tier cap (restore T3)
get_history Read advancement history from vault
audit_readiness Check if system is ready for next tier
describe_tier Describe tier capabilities, components, current state, and readiness thresholds
sync_vault Force-sync state to Obsidian vault

Tier Descriptions

Tier Name Capability Key Components
T0 Fixed Tool-calling — invoke any component, get a result coder
T1 Audit Self-training audits quality, diagnoses failures, proposes fixes coder, self_training, align_evals
T2 Evolve EvoSkill evolves skills, maintains Pareto frontier coder, evoskill, adapt_optimisation
T3 Theory Formal verification, symbolic reasoning, meta-learning coder, formal_methods, meta_programming, align_specs

Advancement Rules

  • T0 -> T1: Always ready. Just needs user confirmation.
  • T1 -> T2: Requires >= 60% of components at maturity tier >= 3 (checked via self_training.get_competence).
  • T2 -> T3: Requires non-empty Pareto frontier with at least one skill scoring >= 0.7 (checked via evoskill.get_frontier).
  • Advancement is never automatic — the system proposes, the user confirms or rejects.

Vault Structure

tier-manager/
  status.md              # Current tier state (YAML frontmatter)
  history/
    2026-04-22-T0-to-T1.md    # Advancement decisions
    2026-04-23-rejected-T2.md  # Rejected proposals
  readiness/
    2026-04-22-T1-audit.md     # Readiness audit results

Each history note links back to [[status]] via wikilinks. The status note includes a Dataview query for recent history.

Surface Integration

MCP

get_status
assess_readiness target_tier=2 readiness='{"ready": false, "evidence_status": "failed_evidence"}'
audit_readiness
list_patterns
describe_tier

The dedicated MCP package is intentionally read-only for tier state: mutation operations (propose_advance, confirm_advance, reject_advance, cap_tier, uncap_tier, sync_vault) remain local-block-only and are surfaced as excluded operations by describe_tier / list_patterns.

REST

# Get current tier
curl http://localhost:8000/tier/status

# Propose advancement
curl -X POST http://localhost:8000/tier/advance \
  -H "Content-Type: application/json" \
  -d '{"action": "propose", "reason": "ready"}'

# Confirm
curl -X POST http://localhost:8000/tier/advance \
  -H "Content-Type: application/json" \
  -d '{"action": "confirm"}'

# Cap at T2
curl -X POST http://localhost:8000/tier/cap \
  -H "Content-Type: application/json" \
  -d '{"tier": 2}'

TUI

  • Status bar: Shows current tier (T0-T3) with colour coding
  • t key: Opens tier popup with status, history, advance/confirm/reject buttons, and cap controls

Source Files

File Purpose
components/mvp/tier_manager/__init__.py Exports
components/mvp/tier_manager/schema.py AdaptiveTier, TierState, TierInput, TierOutput
components/mvp/tier_manager/tier_block.py TierManagerBlock — operation dispatch and readiness logic
components/mvp/tier_manager/agentic_runtime.py Grounded readiness decisions, planner integration, and readiness floor
components/mvp/tier_manager/agentic_evidence.py Agentic evidence summary helper
components/mvp/tier_manager/patterns.py Applied agentic pattern inventory and executable/advisory distinctions
components/mvp/tier_manager/skills.py Tier-manager skill catalog and routing metadata
components/mvp/tier_manager/vault_ops.py Obsidian vault read/write helpers
components/mvp/tier_manager/tier_manager_mcp/schema.py Dedicated MCP input/output schema
components/mvp/tier_manager/tier_manager_mcp/tier_manager_mcp_block.py Dedicated read-only MCP dispatcher
components/mvp/tier_manager/tier_manager_mcp/server.py FastMCP tool registration for dedicated tier-manager tools

See Also

Public API

TierManagerDecisionError(ValueError)

The LLM did not produce a usable, validated tier-readiness decision.

ReadinessDecision

Validated tier-advancement readiness-posture verdict.

Field Type Default
ready bool required
baseline_ready bool required
posture str required
baseline_posture str required
requires_review bool False
degraded bool False
llm_used bool False
reasons tuple[str, ...] ()
rationale str ''
raw_response str ''

Methods:

escalated() -> bool

agentic_evidence() -> dict[str, Any]

to_dict() -> dict[str, Any]

TierManagerPlanner

Runtime-first facade with deterministic fallback + one-way posture clamp.

Field Type Default
runtime TierManagerRuntime \| None None
last_decision ReadinessDecision \| None field(default=None, init=False)
last_llm_used bool field(default=False, init=False)
last_fallback_reason str field(default='', init=False)

Methods:

assess(target_tier: int, readiness: dict[str, Any], tier_cap: int = 3, current_tier: int | None = None) -> ReadinessDecision

TierManagerPatternRuntime

Stateless executable mechanisms for tier_manager's applied patterns.

Methods:

tighten(posture: Any, baseline_posture: Any = '', requires_review: bool = False, degraded: bool = False, not_ready: bool = False, non_passing_evidence: bool = False, cap_exceeded: bool = False) -> TierManagerPatternReview

One-way readiness-posture guard (hook-based-safety-guard-rails).

AdaptiveTier(IntEnum)

TierState(BaseModel)

Field Type Default
current_tier int 0
tier_cap int 3
advancement_pending bool False
proposed_tier int \| None None
proposed_reason str ''
last_audit_summary str ''
last_advanced_at str ''
advancement_history list[dict[str, Any]] Field(default_factory=list)

TierInput(BaseModel)

Field Type Default
op TierOp required
tier int \| None None
reason str ''
vault_path str 'tier-manager'

TierOutput(BaseModel)

Field Type Default
ok bool required
tier_state TierState \| None None
readiness dict[str, Any] \| None None
history list[dict[str, Any]] Field(default_factory=list)
message str ''
degraded bool False
degradation_reason str \| None None
readiness_posture str \| None None
baseline_posture str \| None None
requires_review bool False
llm_used bool False
agentic_evidence dict[str, Any] \| None None

TierManagerBlock(AIBlock[TierInput, TierOutput, TierState])

Field Type Default
name str 'tier_manager'
state TierState field(default_factory=TierState)

Methods:

infer(data: TierInput) -> Result[TierOutput]

Functions

deterministic_readiness_decision(target_tier: int, readiness: dict[str, Any], tier_cap: int = 3, current_tier: int | None = None) -> ReadinessDecision

Demoted-real STRUCTURAL baseline (the zero-LLM floor).

apply_readiness_floor(baseline: ReadinessDecision, candidate: Any) -> ReadinessDecision

One-way readiness-posture safety clamp (stricter-of, ESCALATE only).

build_default_planner() -> 'TierManagerPlanner | None'

Build the on-by-default agentic planner, or None when suppressed.

grounded_readiness_decision(target_tier: int, readiness: dict[str, Any], tier_cap: int = 3, current_tier: int | None = None, planner: TierManagerPlanner | None = None) -> ReadinessDecision

The ONE shared grounded chokepoint for EVERY tier-readiness decision.

applied_agentic_patterns() -> list[dict[str, Any]]

Return compact metadata for tier_manager-applied vendored patterns.

MCP Tools

Operation Source
ops tier_manager_mcp
help tier_manager_mcp
assess_readiness tier_manager_mcp
get_status tier_manager_mcp
audit_readiness tier_manager_mcp
list_patterns tier_manager_mcp
describe_tier tier_manager_mcp
verified tier_manager_mcp
qualified-draft tier_manager_mcp
blocked-escalated tier_manager_mcp