Fix v1.0.178: 10 confirmed blockers from the v1.0.177 review - #249
Merged
Conversation
Fixes the ten confirmed defects filed after v1.0.177 shipped (#238-247), plus makes /fast honest per-provider and adds the /health workspace field the launcher's ownership check depends on. Release / infra - #238 release.yml shipped NO macOS artifacts: ScreenShare/build.sh passed CWD-relative source paths to swiftc, so the macOS job died before upload and publish() (if:always) shipped a green, partial release. build.sh is now location-independent (SCRIPT_DIR-derived), and publish() gained an asset gate that refuses to publish unless all six platform assets + sidecars are present and non-empty. The helper step also asserts the binaries were rebuilt this run, since priv/helpers/ is tracked and a stale copy would bundle silently. - #245 daemon adoption crossed workspaces: /health now reports `workspace` (Workspace.Cwd.original_cwd/0), and bin/osa proves ownership by that before adopting or letting `osa stop` kill a daemon, with a pidfile/lsof fallback for older daemons. Agent loop - #239 + #245 goal-turn round-trips: the continuation budget was never broken; GoalVerifier.maybe_wait_for_user/2 ran an ungated triage LLM call after every tool-call-free generation, doubling round-trips (8 against a budget of 3). It now runs maybe_gate/1's guard chain (activated?, paused, run cap, stall, reverify_due?). - #243 goal handoff dropped the model's answer from history: the awaiting_user halt now appends the assistant content before stopping, so it survives /goal approve. TUI - #240 panic on ESC + multi-byte char from raw tool output: fixed at the shared scanner (util.rs escape_len_at) so all six byte-slicing call sites are safe. - #241 failed session-create wedged the TUI: the Err arm now clears session_creation_pending so the user can retry. - #242 first-run installs queued every message forever: all three onboarding exits (complete-ok, complete-err, cancel) now resolve the session. Providers - #244 /fast hard-failed every turn on Codex: request_opts/2 strips :service_tier at the Codex chokepoint, and the retry also fires on a detail-less 4xx when a tier was sent. - #246 tier vocabulary was forwarded raw: per-provider allowlists; Gemini, Bedrock, xAI and OpenRouter stop emitting an unverified tier rather than eating a doubled round-trip every turn. /fast now tells the truth about whether it accelerates on the current provider. - #247 Codex context ceiling used the public window, not the transport window; settings session cascade now resolves the full file cascade. Pre-existing, filed separately, NOT addressed here: #248 (attack_orchestrator undefined calls), ComputerUse missing get_tree/0, StaticBaseSize base drift.
This was referenced Sep 5, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the ten confirmed defects filed after v1.0.177 shipped (#238-247), plus makes
/fasthonest per-provider and adds the/healthworkspacefield the launcher's ownership check depends on.What's fixed
ScreenShare/build.shis location-independent;publish()refuses to ship unless all 6 platform assets + sidecars are present and non-empty (v1.0.177 published green with no macOS artifacts)maybe_gate/1's guard chainescape_len_atscanner (all 6 slice sites)Errclears the pending flag/faststrips:service_tier; retry fires on detail-less 4xx/healthreportsworkspace;bin/osaproves ownership before adopt/stop/fastreports truthfullyVerification (local)
test/agent— 1650 tests, 0 failurestest/providers— 991 tests, 0 failuresKnown pre-existing failures (NOT introduced here, filed separately)
These fail on
maintoday, independent of this PR:attack_orchestrator.excalls undefinedAttackTree.next_classes/2/ClassQueue.enqueue/2(latent)get_tree/0(incomplete v1.0.177 feature)ToolchainPinTestfails locally only (dev machine on Elixir 1.19.5 vs pinned 1.17.3); passes in CI.PromptTemplateTestis issue #208 test-order pollution — passes in isolation.