-
Notifications
You must be signed in to change notification settings - Fork 0
Releases: simonrowland/goal-flight
v1.0.5 — audit + consolidation polish
Post-1.0.4 polish from a package audit + a cross-slice consolidation review.
Fixed
- Worker-liveness consolidation.
done_code()and the dispatch ledger no longer classify
watcher_stopped(a terminal-marker worker whose watcher exited) as terminal before a liveness check —
they reconcile pid+start-time identity, so--wait/--donereport a still-alive worker as live (needs
reattach) rather than done; a marker + dead worker stays terminal.--waitevaluates each row's liveness
once per poll. - Status reads are pure.
goalflight_status.pyno longer persists capacity pruning on a status read or
--waitpoll (capacity.jsonis shared across sibling projects). - claude-acp stopgap patch hardened. Named the Claude Code 2.1.169 TUI timing constants, restricted the
assistant-line screen extraction, and added Rust unit tests (upstream PRmoabualruz/claude-code-cli-acp#1;
vendored patch re-generated). - Fleet cleanup-before-fetch coverage. Direct regression test that a nonzero
git_prune_claude_refs
aborts the dispatch before fetch with redacted output.
Docs
- Narrowed the OpenCode dispatch-routing claim (OpenCode is not a
goalflight_dispatch.pypreset — it routes
via host helpers / raw-- <cmd>passthrough). Added SKILL navigation + command-doc entries for--wait,
the doctor write-probe + claude-acp stopgap probe + installer, capacity adaptive walk-back, and
goalflight_cleanup_dispatch_refs.
Assets 2
v1.0.4 — dispatch reliability + worker-engine fixes
Dispatch-reliability + worker-engine release on top of the 1.0.3 dispatch-death fix.
Added
- Multi-dispatch
--wait.goalflight_status.py --wait <id1,id2,...>(comma or
repeated) blocks until every named dispatch reaches a terminal state via the
authoritativedone_code()liveness, with--wait-timeout/--poll-s; the
dispatcher prints the canonical wait hint after launch. - Doctor worker write-probe.
goalflight_doctor.py --worker-write-probeverifies an
engine can write a file end-to-end (catches engines that "finish" without persisting). - Adaptive capacity walk-back. Repeated provider "model at capacity" signals now feed
a transient, label-scoped effective-cap reduction (min(static, recommend())) so
new dispatches queue instead of failing and killing in-flight workers; surfaced in
status and aged out by the rolling ledger window (no permanent cap mutation). - Dispatch-ref cleanup.
goalflight_cleanup_dispatch_refs.py(+ allowlisted
git_prune_claude_refs, run before fetch) prunes corrupt/stalerefs/heads/claude/*
that break fleet fetch; preserves checked-out worktree + remote-backed refs and fails
closed if the protected set can't be determined. - cursor + claude-acp wired into the unified dispatcher happy path.
- Opt-in claude-acp patch-compile installer (stopgap).
scripts/install_claude_acp_patch.shapplies the
vendoredpatches/claude-code-cli-acp-2.1.169-tui-submit.patch(the upstream TUI-submit fix — PR
moabualruz/claude-code-cli-acp#1) to an installedclaude-code-cli-acp@0.1.1: clones the pinned upstream
base, builds with cargo, and swaps + ad-hoc-codesigns the platform binary (run-scoped backup + atomic
restore on any failure; idempotent; skips once upstream ships a fixed release). Agoalflight_doctor.py
probe flags an unpatched adapter and points to the script. Not auto-run byinstall.sh; cargo required.
Fixed
- grok workers execute tools + emit terminal markers. A grok-only prompt preamble
forces tool execution and a finalCOMPLETE:marker, ending the
worker_dead_no_terminal_markerfailures; a conservative routing guard gates grok
file-writing on a passing write-probe. grok-research default model corrected to
grok-composer-2.5-fast. - claude-acp handshake.
claude-code-cli-acponly enters ACP stdio mode with no argv;
the default--modelinjection is removed and an explicit model is applied via the ACP
session. - Dispatch ergonomics. Code-writer default idle window raised to 600s (read-only /
research keep 180s);--donetreatsidle_timeoutas live only after an identity-aware
pid+start-time check, with a reattach hint; read-only review dispatches that expect a
file write are refused (inline-return is allowed); reused non-terminal dispatch ids are
refused (dup-id collision). - Terminal marker precedence. A dead worker that emitted a recognized terminal marker
is classified terminal regardless of pid liveness (the idle real-pid check applies only
when no marker is present). - Fleet. Live remote dispatch works end-to-end; an auth-probe tooling failure
(exit 127 / no-JSON) is treated as inconclusive and re-probed instead of cached as an
authoritative auth-red;--prompt/--prompt-b64are redacted across every serialized
ssh argv, preview, and failure-output path. - opencode smoke tests skip (rather than fail) when the OpenCode/LiteLLM backend is
unhealthy.
Docs
- cursor orchestrator wake-on-worker-completion (background shell + marker contract);
fleet remote git lifecycle; gotchas index. SKILL kept within its byte/line budgets.
Assets 2
v1.0.3 — dispatch-death fix
Crash-safe dispatch fix. Bash-tail workers could die mid-verify and the decoupled watcher die with them, freezing status.json at running/worker_alive: true (false-alive).
This release: detaches workers into their own session (survives launcher/harness teardown, no zombies); the watcher flushes a terminal status on death (and the dispatcher repairs terminal state from the tail marker if the watcher dies first); never finalizes while the worker is still alive; idle-times-out a quiet post-COMPLETE worker to terminal while letting CPU-active verifies keep waiting; validates status identity (dispatch_id + worker_pid) so a reused dispatch id can't inherit a prior run's result; adds a macOS caffeinate power assertion scoped to the worker lifetime. goalflight_status.py is authoritative for liveness; raw status.json is a heartbeat/terminal surface.
Assets 2
Goal Flight 1.0.2
Vendored autoreview release.
Added
- Vendored autoreview — the structured code-review closeout skill (Codex default; a second-model complement to gstack
/review) is now bundled in-repo atautoreview/instead of requiring an external helper checkout.scripts/autoreview.sh, the doctor probe, and the init / chunk-review docs default to the in-repoautoreview/scripts/autoreview; MIT-licensed, with attribution preserved inautoreview/NOTICE.
Full changelog: v1.0.1...v1.0.2
Assets 2
Goal Flight 1.0.1
Hardening + reliability release on the 1.0.0 fleet foundation: crash-safe unified dispatch, Windows/WSL Phase-1, the controller-behaviour Golden Master, a context-discipline layer, and an intent-based multi-engine worker mix.
Added
- Crash-safe unified dispatch — detached worker + decoupled watcher, pid-identity verification, capacity + ledger registration,
--statsaccounting, shape-aware steer (message an in-flight worker), and an ACP library entrypoint with a SIGTERM bridge. - Windows / WSL Phase-1 — read-layer foundation, WSL=Linux dispatch baseline, refuse-gated native-Windows control plane, python launcher, encoding + autoupdate.
- Golden Master of controller behaviours — schema + codified entries (R1–R26 + high-recurrence regressions), a Codex-first behaviour harness, the compaction-resume drill, and a multi-host runner.
- Context-discipline layer — file-backed Agent returns, Read>5KB / foreground-duration / engagement-lint protocols, hooks + wrappers, and a
goalflight_push_auditguard. - grok-code / grok-research split — intent-based worker labels (Composer 2.5 for code, grok-build for research); bare
grokretired. - Install + ops — opt-in agent-traits installer, fleet worker install scripts,
~/.goal-flightcanonical install path, terse status surface, controller→orchestrator rebrand.
Changed
- READY registered as a last-line terminal marker; omitted
--modeldefaults to the strongest model; per-worker--modelpassthrough on both transports. - context-mode posture: the controller may use it for its own context discipline; the worker-churn guards are preserved.
Fixed
- Hardening-sweep P0s: worktree ACP dispatches scoped into status; capacity TTL-prune liveness-gated (no live-lease eviction); live bash-tail workers protected from cleanup SIGKILL; terminal-marker injection guard; empty
GOALFLIGHT_STATE_DIR→ default, not cwd. - Resume forces an end-to-end
SKILL.mdreload as unconditional STEP 0 (compaction-survival).
Security
- Denied permissions downgrade to blocked (not silent success); title-allow regex layered after hard safety gates; sandbox base + executable-surface guard.
Full changelog: v1.0.0...v1.0.1