0.3.3
Verdicts and Re-entry
This is the last release before a major reworking of the engine. A few weeks of gently mopping up issues we encounter while running Gantry in codebases. An overall theme is improving the `gantry resume` feature.
70 commits by Gantry runs
33% of the release
144 commits by non-Gantry sessions
67% of the release
Gantry 0.3.3 covers 214 commits in 19 entries from 2026-08-26 through 2026-09-19. Four named Gantry runs contribute 70 commits; the other entries contribute 144 commits, including four further Gantry runs whose replays are not published.
Resume and re-entry are the largest workstream. A resumed run now re-enters unfinished work, re-runs failed commands and red gates, restores the stopped invocation from its first step, and retains operator commits made before the resume. A bare plan invocation and gantry resume now use the same existing-run path. One plan took a run, a hand merge, and nine follow-up commits to finish its resume changes.
Finish-time merge repair is now the bundled merge pattern, with engine-owned git operations and grounding checks. Task lists appear before their phase begins, and task-list directory outputs stay correctly resolved across commands and resumes. Red run-scoped gates receive one troubleshoot pass before a run stops.
The binary now fills absent stage metrics from agent usage sidecars. Bundled prompts, patterns, reference data, and manual text were corrected; interactive Codex and Gemini blocker investigations receive the configuration their stage agents use. The shipped legal files now name HyperClank, Inc.
No known issues are stated for this release.
Resume and re-entry
Resume measures the tree again and re-enters recorded work.
-
4 commits,
bd1f953da4d8ed275esessionResume re-runs the stopped pattern, gate, and command
Hand and interactive-agent work fixed four resume paths. A restored checkpoint now resumes the pattern that stopped, re-runs a red gate or failed command instead of replaying its outcome, and records the position a stop re-enters rather than a step identifier. Older invalid checkpoint positions now refuse to resume instead of silently skipping work.
-
8 commits,
417233f4c51c55cf6aruna-resume-never-invents-a-verdictreplayResume restores unfinished tasks without inventing success
A Gantry run added ledger and session-execution checks so a resume re-enters unfinished tasks instead of marking them DONE from a restored checkpoint cursor. It records structured invocation-frame roles and preserves enclosing `for` iterations across tail calls, so new checkpoints restore the task that was running. Recoverable older checkpoints rebuild missing loop frames; unsupported shapes stop with a record error instead of silently completing a task.
-
30 commits,
b1c1e4961e288c3f4asessionResume stopped invocations from their first step
A gantry run stopped twice at its attempt ceiling while rebuilding resume handling; its 30 commits were merged by hand, and nine hand commits completed the plan on master. `gantry resume` now re-enters the stopped invocation from its first step against the tree as it stands, rather than reusing checkpoint routes, output bindings, or output paths that could repeat an authored stop. A resume that reaches a stop without running an agent, gate, command, or `for` enumeration is refused without recording another stop, and a restore cannot discard commits made before the resume.
-
8 commits,
58cbf8e2aefada3cd8sessionResume preserves operator repairs and discarded book work
Hand work floors restore operations at the run branch tip read when re-entry began, so a restore can discard its own attempt but not an operator repair. Gate authors no longer overwrite an operator's repaired gate, discarded orchestration work is parked on a named ref, and every stop surface takes its next-action sentence from `stop_render::next_action`.
-
25b363664commitResume retains task-named directory outputs
An interactive-agent commit keeps resolved task-named directory outputs in the run record and restores them from the position checkpoint. Commands and gates therefore receive the resolved path after a resume rather than a relative declaration.
-
20 commits,
5ce545dbe81c81d0a8runone-way-to-re-enter-a-runreplayUnify re-entry into an existing run
A Gantry run made `gantry <plan>` re-enter an existing run through the same path as `gantry resume`, so both restore the recorded run rather than taking separate re-entry paths. `gantry resume` now accepts a run name, plan path, or plan directory, and a plan address with no matching run refuses when an existing run has the same plan-id label. The run added `--ignore-position-checkpoint` for re-entry at the entry pattern instead of the recorded position; it retains the existing-run resets and is refused with `--clean`, `--remove`, or a fresh start.
-
64ab46a13commitA refused resume follows the ordinary stop path
An interactive-agent commit makes a resume refused before live work an ordinary record-class stop. The run receives the stop record, stop screen, and headless exit status without recording the authored stop again; resumed sprint retries also re-enter their `for` body.
Finish-time merges
Merge repair is a bundled pattern under engine-owned git checks.
-
27 commits,
e5ec7bf0d51ae93828runthe-merge-path-is-a-patternreplayMake finish-time merge repair a bundled pattern
A gantry run replaced the engine's hand-written finish-time merge repair flow with the bundled `merge` pattern while retaining engine-owned git operations and grounding checks. The pattern resolves textual conflicts, adjudicates main-side residue, and routes a red declared gate through the shared `troubleshoot` pattern. The engine selects and freezes the merge pattern, records a prior refusal for a later attempt, and merges only after it verifies the integrated tree.
Task lists and gates
Known work appears earlier, and a red run-scoped gate receives one repair.
-
15 commits,
9e297209d323b0d147runevery-known-task-is-on-the-rail-from-the-startreplayShow known nested tasks before their phase starts
A gantry run, retried after its first gate failed, added previews for readable nested task lists before their containing task starts, so the Tasks rail shows checked-in work earlier. Previews are recorded distinctly and do not alter task completion or fleet progress; live enumeration replaces a preview when the task begins. The run also makes per-task command, gate, agent, and repair cards name their task in the headline, and prepares the release pattern's checked-in units before phase execution.
-
2 commits,
71ec1b068da1009a40sessionTask-list directories resolve from their declarations
Hand and interactive-agent work resolves a run-scoped task-list directory from its declaration before checking invocation state. A command inheriting a task-name-templated directory output now receives its absolute path.
-
2 commits,
77cfe46446bf25f1bfsessionRepair red run-scoped gates before stopping
A Gantry run added a shared one-repair path for red run-scoped gates in the bundled build patterns. A red milestone-boundary or final project gate now calls `troubleshoot` once and re-runs that gate before Gantry stops; red gates after milestone-review edits use the same path. The troubleshoot pass now receives the current iteration diff.
-
7a701f57acommitGate and command steps do not read the terminal
An interactive-agent commit gives gate scripts and pattern `command` steps null standard input. A background child that reads the terminal no longer stops its process group with `SIGTTIN`.
Bundled documentation and harnesses
Compiled-in prompts, reference text, manuals, and blocker launches changed.
-
4 commits,
5d7464dd86b3fd2dfasessionClarify bundled troubleshoot and review prompts
Hand and interactive-agent work clarifies that a troubleshoot pass must not weaken the check it repairs and that a reviewer may finish or defer incomplete scope. The bundled patterns rename `recovery_rung` and its `rung_*` outputs to `troubleshoot` and `troubleshoot_*`, and the compiled reference data was regenerated for the prompt changes.
-
2 commits,
20204a9929aaf55300sessionInteractive blocker launches receive stage-agent access
Interactive Codex launches now bypass Codex's own sandbox, allowing linked-worktree git operations. Interactive Gemini launches now receive `GEMINI_SANDBOX=0`, approval mode, and trust settings matching its stage-agent invocation.
-
60 commits,
7d2a559a5005df8e79sessionCorrect bundled reference and manual documentation
A Gantry release run corrected bundled reference and manual documentation after v0.3.2 was tagged, so the corrections ship for the first time in 0.3.3. The released binary now embeds corrected descriptions of CLI, configuration, journal, handover, harness, menu, and pattern behaviour. After the cut stopped, its resumed run retained task-named directory output paths for command and gate steps.
-
2 commits,
ec3e89424943d307b2sessionReference data documents re-entry identity
Hand work regenerated the compiled reference dataset after the review prompt changed and documented the run-identity rule for a re-entry address. An edited plan identifies a different run and therefore cannot identify an existing run by its prior address.
Stage metrics
-
24 commits,
855784b1177280c9bfsessionFill missing stage metrics from agent usage sidecars
A gantry run updated the engine to fill missing stage metrics from each agent session's usage sidecar before recording `stage_finished`. Codex sessions now record available input, output, and cache token counts plus turns without overwriting metrics the harness reported. New run records therefore retain those usage figures rather than leaving them null.
Maintenance
-
c943281aecommitEnvironment briefings do not trigger plan-change review
An interactive-agent commit excludes `brief_environment`'s generated `environment.md` from plan-change detection. Rewriting the environment briefing no longer routes a run to plan-change review and stops it.
-
2 commits,
bf20b2c6fb223a39acsessionShipped legal files name HyperClank, Inc.
Hand work names HyperClank, Inc. as Gantry's copyright holder, author, seller, and licensor in `NOTICE` and `TERMS-OF-SALE`. Those files ship beside the binary in the release tarball.