Skip to content

chore: release - merge dev into main - #1557

Merged
zbigniewsobiecki merged 15 commits into
mainfrom
dev
Sep 21, 2026
Merged

zbigniewsobiecki merged 15 commits into
mainfrom
dev

Conversation

@zbigniewsobiecki

Copy link
Copy Markdown
Member

Automated release PR created by the release workflow.

Commits (15):

a02c221e Merge pull request #1555 from mongrel-intelligence/feat/025-1-completion-alternatives
3781530b Merge branch 'feat/025-1-completion-alternatives' of https://github.com/mongrel-intelligence/cascade into feat/025-1-completion-alternatives
f93aeccc fix(ci): bump js-yaml to ^4.3.2 to clear high-severity audit
2bc30092 Merge remote-tracking branch 'origin/dev' into feat/025-1-completion-alternatives
207817dd chore(plan): plan 025/1 (completion-alternatives) done
e19647ef refactor(backends): apply plan 025/1 review findings
ee49e599 docs(changelog): completion contracts can declare pushed-changes alternatives
15f9dc86 test(cli): give CLI-spawning tests a per-test budget equal to their spawn budget
634abd31 feat(backends): post-run gate consumes the shared pushed-changes evaluation
6ae3caea feat(backends): log the satisfied pushed-changes outcome and per-outcome rejections
2c5841b4 feat(backends): outcome-aware completion failure for pushed-changes alternatives
5d52275c feat(backends): read PR-response and repository-state evidence, evaluate pushed-changes outcomes
11b1c108 feat(agents): declare pushedChangesAlternatives on finish hooks
c7bcbf21 chore(plan): plan 025/1: lock
ddcef0cd docs(spec): add spec 025 and its three execution plans

zbigniewsobiecki and others added 15 commits September 21, 2026 14:03
Outcome-aware PR-comment completion (plans 1-3). The Codex resume half of
the spec (ACs 9 and 10) shipped ahead of planning in #1553 and #1554; the
coverage map records that.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A profile may list outcomes that satisfy requiresPushedChanges instead of a
push (only pr-response exists). The flag is rejected at load time unless
requiresPushedChanges is true, so no agent inherits an alternative
implicitly. Nothing consumes the flag yet (plan 025/1, task 1).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ate pushed-changes outcomes

readCompletionEvidence now reads the PR-response sidecar (url + kind, malformed
files are evidence of nothing) and, given repoDir + initialHeadSha, the
repository state (clean tree, HEAD unchanged). evaluatePushedChanges checks the
push branch first and then each declared alternative, fail-closed, returning
one rejection reason per branch. Nothing calls the evaluator yet
(plan 025/1, tasks 2-3).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…lternatives

getCompletionFailure now routes the pushed-changes requirement through
evaluatePushedChanges. Profiles without alternatives keep the exact legacy
error and prompt. Profiles with alternatives get COMPLETION_ERROR_NO_PUSH_OR_RESPONSE,
the per-outcome rejections, and a continuation prompt that names an already
recorded response and forbids re-posting it (plan 025/1, task 4).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ome rejections

decideContinuation logs INFO with pushedChangesOutcome when the pushed-changes
requirement is met, and carries the per-outcome rejections on the continuation
WARN and on a new exhaustion WARN, so a run log alone explains the decision.
Adds tests/helpers/tempGitRepo.ts and moves the repo-state tests onto it
(plan 025/1, task 5).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…uation

postProcessResult takes the evaluatePushedChanges verdict (plus the
requirement-specific error) instead of a boolean, logs the satisfied outcome
or every rejection, and the adapter derives both from the same evidence read.
secretOrchestrator forwards pushedChangesAlternatives into
completionRequirements so the worker-side evaluator sees declared
alternatives. A guard test keeps the shared completion modules free of
agent-type names (plan 025/1, task 6).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…pawn budget

The three cascade-tools tests spawn the built oclif CLI, whose cold boot is
2-5 s and slower under full-suite CPU pressure. They already allow the spawn
30 s but ran under vitest's 5 s default, so a loaded machine turned them red
(observed twice during npm run verify). One named constant now feeds both
budgets.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…rnatives

Plan 025/1 changelog entry and progress record.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- readRepoState git calls carry a 10 s timeout so a wedged git fails the
  comment-only outcome closed instead of blocking the turn
- RepoStateEvidence records initialHeadSha; outcome checks are pure functions
  of evidence and the 'run start' fallback is gone
- applyCompletionEvidence reads only the PR sidecar (no second git shell-out
  per turn once repoDir is wired)
- getCompletionFailure passes the alternatives straight to pushedChangesFailure
- evaluator tests pin the exported rejection constants instead of regexes
- CLI-spawn test budgets live once in tests/helpers/cliSpawnBudget.ts, with
  the per-test budget strictly above the spawn budget; both new helpers are
  listed in tests/README.md

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Shared, fail-closed pushed-changes alternatives: schema flag, evidence
model, evaluator, outcome-aware prompt, loop + post-run logging. Dormant
until plan 3 opts the PR-comment agent in.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Resolves GHSA-2883-xcg3-v3hh (js-yaml maxTotalMergeKeys CPU DoS) that
failed the `npm audit --omit=dev --audit-level=high` CI step.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ion-alternatives

feat(backends): completion contracts can declare pushed-changes alternatives (spec 025, plan 1/3)
@zbigniewsobiecki
zbigniewsobiecki merged commit 718d323 into main Sep 21, 2026
14 of 15 checks passed
@codecov

codecov Bot commented Sep 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.01478% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/backends/adapter.ts 83.33% 1 Missing ⚠️
src/backends/completion.ts 99.30% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

This branch was successfully deployed

1 active deployment
CI — a02c221e Deployed Sep 21, 2026 by zbigniewsobiecki via Build and Deploy (Dev) #991
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant