Repository navigation
forge 0.14.0
A minor release, because execution behavior changes. This page covers what changed since 0.13.14 (PR #148).
Scope widening replaces the repair-out-of-scope halt
A plan can't name every file a task will need. When a repair touched a file outside the task's diff, forge used to halt repair-out-of-scope for a human, and nearly every one of those halts was approved anyway. In one recent session, all five were approved, and four were on files the plan had declared or the run had already written.
- Workers may widen, with a reason. After every worker turn (first attempt and every rework lap), forge lists each existing file the worker modified outside its task's
**Files:**. The worker records why in a widening record: the reason, plus the finding or requirement it serves. - The reviewer arbitrates. Each widened path gets a ruling,
acceptedorrejected. A rejection becomes a fix finding: the worker reverts it or argues back. If it's rejected a second time, the run haltsstuckand the human decides. - Close-out lists them. Accepted widenings show up beside the staged deferrals, for information only. Widenings from trivial-tier tasks and inline runs, which have no reviewer, are marked "not reviewed".
- Only two things still halt: deleting an existing file outside scope (
scope-delete), and a worker commit (worker-committed).
A worker can't widen its own scope
- Detection diffs from a checkpoint, the
HEADand branch recorded before a stage's first worker dispatch and held across rework laps, never fromHEADread afterwards. - Scope, the exempt spec files and the citable refs are all read from the plan as committed at that checkpoint. Editing the plan's working copy changes nothing.
- After every worker turn,
HEADmust equal the checkpoint on the same branch. An added commit, reset, amend, branch switch or detached HEAD haltsworker-committedand names the commits. The freeze moves no ref; you decide on resume whether they stay.
**Files:** is machine-read
- Bulleted
Create:/Modify:/Test:entries of backticked repo-relative paths, with an optional trailing note. - Prose entries ("every portal
.tsxthe guard flags"), globs, and the single-line form are lint errors naming the task and line. - Completed plans aren't migrated. Resuming an older plan whose
**Files:**lines are prose needs those lines rewritten first.
CLI changes (forge_dispose.py)
- New subcommand:
widened. - Decision CLI:
--planand--checkpointare now required, and--wideningsis new. - Removed:
--repair-snapshot. It's now a usage error. - decision.json: gains a
wideningsblock.
Halt records from before this release that name repair-out-of-scope still resume.
Codex
No hooks/hooks.json change since 0.13.14, so Codex doesn't ask you to re-trust forge's hooks.
Install
claude plugin marketplace update forge
claude plugin update forge@forge # or: claude plugin install forge@forgeRestart the session to apply. On Codex: codex plugin marketplace add forcetrainer/forge --ref forge--v0.14.0, then codex plugin add forge@forge.