| 357 | if (route === '/loop') return 'Confirm the loop contract has an explicit verifier, attempt limit, stop status, and .planning/loops state path.'; |
| 358 | if (route === '/marshal') return 'Confirm the selected skill sequence, changed files, and final verification command.'; |
| 359 | if (route === '/archon') return 'Confirm campaign phases, claimed scope, exit evidence, and verification profile.'; |
| 360 | if (route.startsWith('/fleet')) return 'Confirm independent scopes, merge order, and per-branch verification reports.'; |
| 361 | if (route === 'direct-edit') return 'Inspect the diff and run the smallest relevant verification command.'; |
| 362 | if (route.startsWith('/')) return `Confirm ${route} reports its own handoff and verification evidence.`; |
| 363 | return 'Run the command and confirm it exits 0 or reports actionable failures.'; |
| 364 | } |
| 365 | |
| 366 | function gitDirty(projectRoot) { |
| 367 | const result = childProcess.spawnSync('git', ['status', '--short'], { |
| 368 | cwd: projectRoot, |
| 369 | encoding: 'utf8', |
| 370 | stdio: ['ignore', 'pipe', 'ignore'], |