format.py file-level

at sha256:a · View file ↗ · Intel ↗

History
1 files
1 commits
0 hotspots
0 🧊 dead
0 💥 blast risk
sha256:8 docs: queue board-identity follow-ups so they survive the session Capt… · aaronrene · Sep 5, 2026
1 """Format pending governance gates for CLI surfaces (§KH1.9)."""
2
3 from __future__ import annotations
4
5 from tools.governance_gates.types import GateScanResult, PendingGate
6
7
8 def format_pending_gate_lines(result: GateScanResult) -> tuple[str, ...]:
9 """Human-readable lines for status and governance-sync footers."""
10 if result.suppressed:
11 return ("governance-gates: reminders suppressed (Tier 2)",)
12 if not result.pending:
13 return ("governance-gates: none pending in active slice",)
14 lines = ["Pending governance gates:"]
15 for gate in result.pending:
16 lines.append(_format_gate(gate))
17 lines.append("Reminders only — acknowledge or invoke; silence is not pass.")
18 return tuple(lines)
19
20
21 def pending_gates_payload(result: GateScanResult) -> dict:
22 """JSON-serializable pending gates for ``overseer status --json``."""
23 return {
24 "enabled": result.enabled,
25 "suppressed": result.suppressed,
26 "active_phases": list(result.active_phases),
27 "pending": [
28 {
29 "gate_id": gate.gate_id,
30 "phase_id": gate.phase_id,
31 "artifact": gate.artifact,
32 "message": gate.message,
33 "invoke": gate.invoke,
34 }
35 for gate in result.pending
36 ],
37 }
38
39
40 def _format_gate(gate: PendingGate) -> str:
41 artifact = f" ({gate.artifact})" if gate.artifact else ""
42 return f"- {gate.gate_id}: {gate.phase_id}{artifact} — {gate.message}; invoke: {gate.invoke}"