upgrade_regime.py file-level

at main · View file ↗ · Intel ↗

History
1 files
1 commits
0 hotspots
0 🧊 dead
0 💥 blast risk
sha256:6 fix(ISR): default require_independent_second_reviewer to require Opera… · aaronrene · Sep 2, 2026
1 """``ok upgrade-regime`` CLI command (§O2.7)."""
2
3 from __future__ import annotations
4
5 from argparse import Namespace
6
7 from cli.context import CliContext
8 from cli.output import CommandReport
9 from tools.upgrade_regime.ceremony import run_upgrade_regime
10
11
12 def run_upgrade_regime_command(args: Namespace, ctx: CliContext) -> int:
13 """Execute Stage 3 ``muse-only`` → ``muse+git-mirror`` ceremony."""
14 code, upgrade = run_upgrade_regime(args, ctx)
15 report = CommandReport()
16 report.data.update(upgrade.to_payload())
17 for err in upgrade.errors:
18 ctx.output.error(err)
19 report.errors.append(err)
20 for warn in upgrade.warnings:
21 ctx.output.warn(warn)
22 report.add_warning(warn)
23
24 if ctx.output.json_mode:
25 payload = report.to_payload()
26 if report.errors:
27 payload["errors"] = list(report.errors)
28 ctx.output.emit_json(payload)
29 else:
30 if code == 0 and not upgrade.errors:
31 if upgrade.start_state == "complete-upgrade" and not upgrade.live_bridge_invoked:
32 ctx.output.emit("already upgraded (idempotent)")
33 elif upgrade.dry_run and not upgrade.apply:
34 ctx.output.emit("dry-run: no files written")
35 ctx.output.emit(f"start_state: {upgrade.start_state}")
36 ready = "yes" if upgrade.ready_for_live_bridge else "no"
37 ctx.output.emit(f"ready_for_live_bridge: {ready}")
38 ctx.output.emit(upgrade.next_live_step)
39 ctx.output.emit(upgrade.hard_stop_c8)
40 else:
41 ctx.output.emit("upgrade-regime complete through C5")
42 ready = "yes" if upgrade.ready_for_live_bridge else "no"
43 ctx.output.emit(f"ready_for_live_bridge: {ready}")
44 if not upgrade.ready_for_live_bridge and upgrade.ready_for_footprint:
45 ctx.output.emit("footprint ready; configure git remote before --live-bridge (G8)")
46 ctx.output.emit(upgrade.hard_stop_c8)
47 return code