Repository navigation
forge-ui can now change a run: live QA threshold, retries and timeout, a one-shot model pin, open findings filed as GitHub issues, deleting runs while the dataset keeps them, and every config source in one view. Each control is also a forge CLI: forge control, forge runs rm, forge config and new forge issues modes.
Highlights
- After a run, review findings nobody would act on can become GitHub issues: forge offers once to file the findings
--qa-thresholdtolerated, the PLAUSIBLE ones and whatever a whole-run review left open. Where the gh-proman skill is set up for the repository they go on the project board through it; anywhere else forge files them itself with plaingh(forge issues <plan-dir>). A finding is never filed twice.--file-issues autofiles them without asking,--file-issues offnever offers. forge control show|set|pin|unpin <plan-dir>changes a plan while it runs: the QA threshold (read once per attempt, per task too, andnoneexempts a task), the timeout,--escalate-after, verify retries, and, while a scheduler is live, the retry and infrastructure-retry budgets. The budgets keep their per-invocation rule: a live scheduler publishes them for the length of the run and re-reads them at every decision. Every change is validated, logged incontrol.logand recorded in the dataset as acontrolevent.- forge-ui has an Open findings view: the findings a run, or every run of its repository, left open, with their filed state. Select some to file as GitHub issues or dismiss ones that need no work.
forge issuesgains--offline,--only,--all-runs,--dismiss/--undismiss(with--reason),--include-dismissedand afindingslist in its JSON; the whole-run review's findings are now collected, and filing and dismissal take a repository lock (exit 3 when busy). forge runs rm <run-dir>deletes a run while the dataset keeps what it taught: a strict import, a self-describing archive (FORGE_ARCHIVE.json), andrun_delete_startedandrun_deletedevents, all under the run's own lock.--worktreesand--branchesalso remove the run's clean worktrees and its unchecked-out branches (foreign and dirty worktrees and UNMERGED branches are reported);--dry-runpreviews. forge-ui has a matching delete dialog. The dataset also importsescalations.tsvandcontrol.log.- forge-ui is no longer read-only: it gains write endpoints and Controls panels for a run and for each task (QA threshold, timeout, escalate-after, verify retries, budgets, threshold override, retry budget, model pin). It only ever calls forge's own CLIs, and every change must carry a per-launch token and pass the Host and Origin checks.
--read-only(orFORGE_UI_READONLY=1) turns writing off, andforge ui opennever reuses a server running in the other mode.
Added
forge control pin <plan-dir> <task> <spec>sets the model a task's next full retry uses, once: the spec is checked withforge-dispatch.sh doctor(no quota), applied at the retry and written totasks.tsv, andescalations.tsvgains asourcecolumn (policy,retryorpin) saying who decided.forge control unpindrops it; Fractal plans never apply pins.forge config show|set|unsetshows every config source in one view (the registry, Jev, a repository's.forge/verify,setupandverify-subset, the dataset andFORGE_*variables with secrets hidden) and edits the per-repo files andjev.enabled. forge-ui shows the same view as Settings.
Changed
- A repeated
forge ui openfor a run that already has a browser tab no longer looks like it did nothing: it prints the link as before and says on stderr that no new tab was opened, so you know to use the link.
Fixed
forge ui open DIRnow reads only the first line of the run'srepofile, as the runners do, so a run whoserepofile has extra lines is listed under its real repo instead of under a path that does not exist.- A forge-ui export no longer leaks a local path spelled another way: the run, repository and home paths are also scrubbed in their real form (on macOS,
/private/var/...and/var/...).