Promote v0.37.0 to production - #1209
Merged
Merged
Conversation
Co-authored-by: Roomote <roomote@roomote.dev> Co-authored-by: Matt Rubens <2600+mrubens@users.noreply.github.com>
Co-authored-by: Daniel Riccio <57051444+daniel-lxs@users.noreply.github.com>
…follow-up (#1157) OpenCode 1.17 emits session.status(idle) followed by a paired legacy session.idle for a single turn boundary. When the status-sourced turn completion drained a queued deliverable prompt (e.g. a hidden PR re-review follow-up), submitPrompt re-armed inFlight, so the trailing session.idle re-entered finishCurrentTurn, emitted a second taskCompleted against the now-empty queue, and HarnessManager finalized the run (onExit) while the drained turn was still running. The follow-up then ran in a post-finalization window kept alive only by the sleep heartbeat, and the drained turn's real completion later fired a duplicate onExit. Fix: arm an ignoreNextQueuedDrainSessionIdle guard when a status-sourced completion's drain submits a prompt, mirroring the existing paired-idle guards for stop-hook reminders, question replays, and provider recovery. Busy/retry status transitions and StartNewTask clear it like its siblings. The existing lifecycle test missed this because its mock emitted only a single session.idle; the new regression test completes turns with the real paired sequence and fails deterministically without the fix. Also include the deferral decision inputs (phase, queued prompt count, deferred settlement) in the manager's task-completed log line so future bypasses are diagnosable from live logs.
Co-authored-by: Matt Rubens <2600+mrubens@users.noreply.github.com>
Co-authored-by: Roomote <roomote@roomote.dev>
Co-authored-by: Matt Rubens <2600+mrubens@users.noreply.github.com>
* fix: show all active PRs across chat providers * refactor: remove singular linked PR footer contract --------- Co-authored-by: Matt Rubens <2600+mrubens@users.noreply.github.com>
Co-authored-by: Matt Rubens <2600+mrubens@users.noreply.github.com>
* fix: use public-safe source control attribution * fix: validate public attribution identities * fix: rebuild preserved public attribution * refactor: delimit public attribution metadata * fix: scrub duplicate public attribution * fix: require exact host for attribution * test: align attribution prompt expectations * fix: require exact host in PR repository lookup --------- Co-authored-by: Matt Rubens <2600+mrubens@users.noreply.github.com>
* feat: add source-control account identities * fix: preserve source-control host ports --------- Co-authored-by: Matt Rubens <2600+mrubens@users.noreply.github.com>
* fix: preserve PR follow-up instructions * fix: validate PR follow-up destinations * fix: parse PR follow-up links linearly * refactor: generate PR attribution at write time --------- Co-authored-by: @mrubens <2600+mrubens@users.noreply.github.com>
Co-authored-by: @mrubens <2600+mrubens@users.noreply.github.com>
Co-authored-by: Matt Rubens <2600+mrubens@users.noreply.github.com>
* [Fix] Reuse compute provider clients across sleep-check ticks The sleep check runs every 60 seconds and built a brand-new compute provider client on every tick that found active or idle runs. Each client carries retained SDK state (connection channels, and Sandbox objects held in the adapters' static caches pin the client that created them), so deployments that always have active runs leaked roughly 1.5 MB per minute until the bullmq service hit its heap cap and was OOM-killed on a ~5.5 hour cycle. Cache one client per provider across ticks, fingerprinting the resolved provider env values so a credential rotation rebuilds the client instead of serving a stale one. The per-run memoization and the per-run env resolution frequency are unchanged; only the client construction stops repeating. * Make adapter sandbox caches per-instance The static sandbox caches served two failure modes: every cached Sandbox pinned the (possibly long-dead) client that created it, and a client rebuilt for rotated credentials kept receiving cached handles that still used the old credentials until the TTL expired. Instance caches make the handles die with their client, so a credential rotation starts clean and no cross-client object graphs can accumulate. --------- Co-authored-by: Matt Rubens <2600+mrubens@users.noreply.github.com>
Co-authored-by: @mrubens <2600+mrubens@users.noreply.github.com>
) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Pride Musvaire <pride@lazydude.co> Co-authored-by: @mrubens <2600+mrubens@users.noreply.github.com>
…1193) * fix: report chat auto-start launch failures * chore: satisfy auto-start test lint * fix: suppress launch-failure replies on bot-authored feed messages Launch-criteria channels are commonly wired to automated feeds, and classifier_error returns before the launch rate cap increments, so a sustained classifier or startup outage would reply "please try again" to every feed message with nothing throttling it. Bot-authored failures now stay log-only; human-authored messages keep the failure reply. --------- Co-authored-by: Roomote <roomote@roomote.dev> Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
…tes (#1197) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* feat: preserve source context for child tasks * fix: clarify inherited source thread context * fix: keep inherited source context informational * fix: decouple context inheritance from sourceRunId semantics - launchTask reverts to the old sourceRunId stamping (env-definition or notifyOnSettle only) and carries the parent pointer in a dedicated transient communicationContextSourceRunId field instead, so relaunch lineage, settle notifications, and the activation metric are unchanged - inheritance skips launches that carry their own live communication context, stamps 'slack' when parent coordinates come from Slack task columns, and only flags communicationContextInherited when coordinates were actually copied - drop the report-back rule line from task_source_context; coordinates only, and escape the provider like the other fields - restore empty-string option fallback semantics in populateCommunicationMetadata --------- Co-authored-by: @daniel-lxs <57051444+daniel-lxs@users.noreply.github.com> Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: @mrubens <2600+mrubens@users.noreply.github.com>
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Contributor
|
No code issues found. Reviewed 3bac4b3 |
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.
Promote v0.37.0
Frozen at
3bac4b319d3927bd9b73122fcc1802eb1d88a685— the commit where0.37.0was versioned. Commits merged todevelopafterward require an explicit candidate refresh or ship in the next release.v0.37.0and triggers the existing GHCRv*image publish (latestchannel).release/v0.37.0branch can be deleted after this PR merges.Changelog
0.37.0 (2026-08-10)
This release brings voice-driven work to every chat provider, expands organization-wide automations and source-control identity support, and improves task reliability.
Highlights
Minor changes
Patch changes