/** * `upgrade-install` — run the upgrade transaction as the detached fleet * installer (#486): the same engine as `upgrade`, with every surface journaled * and the in-process verification and dispatch restore handed to the first * tick of the post-restart daemon. * * This is the command the transient unit spawned by `conductor_install` runs — * a process in the system manager, outside the pane's process tree and the * daemon's cgroup, so the restarts the transaction performs pass it by. It is * not for typing in a pane: like `upgrade`, it refuses to run inside the * target Herdr session, because a process the restart kills cannot verify * what it installed. */ import type { CommandContext } from "./context.ts"; import { runDetachedUpgrade } from "../upgrade.ts"; export async function upgradeInstallCommand(ctx: CommandContext): Promise { const result = await runDetachedUpgrade({ version: ctx.flag("to"), project: ctx.projectFlag, }); process.stdout.write( `install complete — awaiting first-tick verification:\n` + ` omp-conductor CLI omp-conductor@${result.version}\n` + ` omp plugin omp-conductor@${result.version}\n` + ` Herdr plugin herdr-conductor@${result.gitHead}\n` + ` orchestrator brief managed ORCHESTRATOR.md floor current; POLICY.md preserved\n` + ` dispatch paused — the first tick after the restart verifies and restores it\n`, ); }