emperor-forge · v0.4.24 · 2026-09-28 · sha256 c45c94dda4564484
emperor-forge v0.4.24A
Immutable. This exact content never changes and is served at /api/v1/blob/c45c94dda4564484.
--- name: emperor-forge description: >- Ship software: finish menu (merge locally / PR / keep), then public PR with consent when chosen. Use when tests pass, implementation is complete, user says finish, ship, PR, merge, or open a pull request. Refuses PR without EMPEROR_CONSENT_PR or a quoted yes. license: MIT metadata: version: 0.4.24 part-of: emperor-time --- # Emperor Forge — the software leaves the machine Code that sits on a branch is not software. Software is merged or offered as a PR the client can merge without babysitting comments. ## Before forge: finish menu When implementation is complete (G4 PASS, suite green on this tree), do **not** jump straight to a PR. Open `finish-menu.md` and/or run `scripts/emperor finish`: 1. Fresh suite on this tree (quote the tail). 2. Detect normal repo vs linked worktree vs detached HEAD. 3. Present the exact menu (3 options, or 2 if detached). Wait. 4. Execute the choice: - **Merge locally** → merge into confirmed base, re-verify, cleanup owned worktree. - **Pull Request** → continue with forge steps below (consent still required). - **Keep as-is** → report path; stop. 5. Discard only if the client asks and types `discard`. Never offer it unprompted. ## Forge (option 2 — Push and create a Pull Request) 1. `scripts/emperor done <task-dir>` must exit 0. Quote the tail. 2. `scripts/emperor gate g5 <task-dir>` must exit 0 (calls `verdict.py` — deliverable Verdict with citations; no empty/theater Breach Register rows). Or run `scripts/emperor verdict <task-dir>` first. Doctrine: `chains/judgment-chain/verdicts-and-breaches.md`. 3. Consent: ledger must contain a quoted client yes **or** `EMPEROR_CONSENT_PR=1`. Otherwise stop and ask. 4. Run `scripts/emperor forge <task-dir>` (Python core `scripts/lib/forge.py`; thin `forge.sh` / `forge.ps1`). 5. PR body is generated from G1 + DONE probes + out-of-scope. No essay. 6. After the URL is printed, keep the worktree for review feedback, then `scripts/emperor queue next` when the client is done with this task. If `gh` is missing: print the exact commands for the client. Do not pretend the PR exists.