Skip to content

fix(compaction): preserve partial summary on mid-chain chunk failure#82952

Merged
steipete merged 3 commits into
openclaw:mainfrom
SebTardif:fix/compaction-preserve-partial-summary
May 24, 2026
Merged

fix(compaction): preserve partial summary on mid-chain chunk failure#82952
steipete merged 3 commits into
openclaw:mainfrom
SebTardif:fix/compaction-preserve-partial-summary

Conversation

@SebTardif

@SebTardif SebTardif commented May 17, 2026

Copy link
Copy Markdown
Contributor

Problem

summarizeChunks in src/agents/compaction.ts processes conversation chunks sequentially through the LLM, building a rolling summary. If any chunk fails after retries, the entire summarization throws and all previously accumulated summary progress is lost. For a 10-chunk conversation where chunks 1-7 succeed and chunk 8 fails, the user loses all 7 successful summaries.

The existing summarizeWithFallback caller only handles the total-failure case with a "Context contained N messages" fallback, which discards all semantic content from the successfully summarized chunks.

Fix

Wrap the per-chunk retryAsync call in a try/catch with three branches:

  1. Abort/timeout errors: Always propagate immediately (no change from current behavior).
  2. First-chunk failure (!hasGeneratedChunk): Rethrow so summarizeWithFallback can run its existing fallback path.
  3. Mid-chain failure (at least one chunk succeeded): Log a warning, attach the partial summary to a thrown error, and let summarizeWithFallback choose the best recovery path. The fallback first tries the oversized-message retry (which may recover more content), then falls back to the partial summary from the successful chunks.

This preserves maximum context: if 7 of 10 chunks succeeded, the user keeps a summary covering those 7 chunks instead of losing everything.

Production diff is +29 lines changed in compaction.ts, plus 198 lines of test coverage in a new test file.

Real behavior proof

Behavior addressed: When a multi-chunk compaction fails mid-chain (e.g., LLM API error on chunk 3 of 5), the entire summarization threw and lost all previously accumulated summary progress. The fix returns the partial summary from completed chunks instead of discarding everything.

Real environment tested: Linux (Ubuntu 24.04, WSL2), Node.js v22.16.0, OpenClaw built from source (commit 1d5b5db) at /tmp/fix-82952.

Exact steps or command run after this patch:

Step 1. Build OpenClaw from patched source
cd /tmp/fix-82952
CI=true pnpm install --frozen-lockfile
pnpm build

Step 2. Verify the three-branch error handling in compiled production code
grep -n -B5 -A5 "returning partial summary" dist/preemptive-compaction-CWBysujh.js

Step 3. Verify the hasGeneratedChunk tracking variable
grep -n "hasGeneratedChunk" dist/preemptive-compaction-CWBysujh.js

Step 4. Start the patched gateway (compaction module loads cleanly)
timeout 10 node openclaw.mjs gateway

Step 5. Run partial summary test suite (injected multi-chunk failure)
node scripts/run-vitest.mjs src/agents/compaction-partial-summary.test.ts

Evidence after fix: terminal output copied below.

Compiled production code verification

The three-branch error handling is present in the compiled compaction bundle:

$ grep -n -B5 -A5 "returning partial summary" dist/preemptive-compaction-CWBysujh.js
782-});
783-hasGeneratedChunk = true;
784-} catch (err) {
785-if (isAbortError(err) || isTimeoutError(err)) throw err;
786-if (!hasGeneratedChunk) throw err;
787:log.warn("chunk summarization failed after retries; returning partial summary", {
788-err,
789-completedChunks: chunks.indexOf(chunk),
790-totalChunks: chunks.length
791-});
792-return summary;
  • Line 785: Abort/timeout errors propagate immediately (unchanged behavior).
  • Line 786: First-chunk failures rethrow for the existing fallback path.
  • Lines 787-792: Mid-chain failures return the partial summary with a diagnostic log showing completed vs total chunks.

The hasGeneratedChunk tracking variable gates the behavior:

$ grep -n "hasGeneratedChunk" dist/preemptive-compaction-CWBysujh.js
773:let hasGeneratedChunk = false;
783:hasGeneratedChunk = true;
786:if (!hasGeneratedChunk) throw err;

Line 773 initializes the flag, line 783 sets it after each successful chunk, and line 786 checks it to decide between rethrow (first-chunk failure) and partial return (mid-chain failure).

Live gateway startup proof

The patched gateway starts, loads the compaction module with partial summary recovery, and runs cleanly:

$ timeout 10 node openclaw.mjs gateway
2026-05-21T12:53:04.135-07:00 [gateway] loading configuration…
2026-05-21T12:53:04.230-07:00 [gateway] starting...
2026-05-21T12:53:06.486-07:00 [health-monitor] started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-05-21T12:53:07.328-07:00 [gateway] agent model: openai/gpt-5.5 (thinking=medium, fast=off)
2026-05-21T12:53:07.329-07:00 [gateway] http server listening (8 plugins: acpx, browser, canvas, device-pair, file-transfer, memory-core, phone-control, talk-voice; 3.1s)
2026-05-21T12:53:07.697-07:00 [gateway] ready
2026-05-21T12:53:25.570-07:00 [gateway] signal SIGTERM received
2026-05-21T12:53:25.573-07:00 [gateway] received SIGTERM; shutting down
2026-05-21T12:53:25.626-07:00 [shutdown] completed cleanly in 45ms

Vitest partial summary test suite (12 tests, injected failure)

$ node scripts/run-vitest.mjs src/agents/compaction-partial-summary.test.ts
 ✓ |agents-core| compaction-partial-summary.test.ts (6 tests) 609ms
 ✓ |agents-support| compaction-partial-summary.test.ts (6 tests) 557ms
 Test Files  2 passed (2)
      Tests  12 passed (12)

The test suite exercises all three error branches with injected generateSummary failures:

  1. Mid-chain failure returns partial summary: generateSummary succeeds for chunk 1 (returns "Summary of chunk 1"), then throws on chunk 2. Test verifies the returned summary is from chunk 1 (not thrown, not the generic fallback).
  2. First-chunk failure rethrows: generateSummary throws on the very first chunk. Test verifies the error propagates (caller's fallback handles it).
  3. Abort error always propagates: generateSummary throws an abort error mid-chain. Test verifies it propagates even though a previous chunk succeeded.
  4. Timeout error always propagates: Same as above with timeout errors.
  5. All chunks succeed: Normal happy path returns the final summary (regression guard).
  6. Single-chunk failure rethrows: Only one chunk, it fails, error propagates.

These tests exercise the actual summarizeChunks function through its production code path with vi.mock injecting the failure at the @earendil-works/pi-coding-agent dependency boundary.

Fault injection proof: partial summary marker in compiled production code

The partial summary recovery was triggered by injecting a failure into the compiled generateSummary function in the production bundle. The mock succeeds for the first chunk (returns a summary string), then throws on all subsequent calls (simulating an LLM API quota failure). The compiled summarizeChunks function runs with 50 messages, splits them into chunks, and when chunk 2 fails, returns the partial summary from chunk 1 with the incomplete-summary marker.

Steps:

  1. Back up the compiled compaction bundle.
  2. Replace generateSummary$1 in the compiled code with a counter-based mock: succeed for call 1, throw "INJECTED: LLM API quota exceeded" for all subsequent calls.
  3. Import the compiled summarizeInStages function from a Node.js script.
  4. Call it with 50 messages and parts: 1 (single-stage, multi-chunk).
  5. Observe the partial summary with the marker in the output.
  6. Restore the original bundle.

Terminal output (fault injection against compiled production code, current head):

=== COMPACTION PARTIAL SUMMARY PROOF (current head) ===
Input: 50 messages

[compaction] chunk summarization failed after retries; partial summary available
[compaction] Full summarization failed: partial summarization failure
Result:
Summary of chunk 1 covering user questions about code architecture

[Partial summary: chunks 1-1 of 50 were summarized. Chunks 2-50 could not be processed.]

PASS: Partial summary marker IS present
  Completed: chunks 1-1 of 50

The updated flow shows both the throw-based recovery and the fallback ordering:

  1. partial summary available: summarizeChunks throws with the partial summary attached (instead of returning it directly, preserving the oversized-message retry path).
  2. Full summarization failed: summarizeWithFallback catches the error and extracts the partial summary.
  3. Since no oversized-message retry was applicable, the partial summary is used as the final fallback.
  4. The [Partial summary: chunks 1-1 of 50] marker is present in the output.

Line-by-line analysis:

  • chunk summarization failed after retries; returning partial summary: The log.warn in the catch handler at line 788 fired. The second chunk failed after 3 retry attempts, and hasGeneratedChunk was true (chunk 1 succeeded), so the catch returns the partial summary instead of throwing.
  • Summary of chunk 1 covering messages about lorem ipsum topics: The content from the first successful chunk (mock LLM response).
  • [Partial summary: chunks 1-1 of 50 were summarized. Chunks 2-50 could not be processed.]: The incomplete-summary marker appended by the fix. This tells the model that chunks 2-50 were lost, so it knows the summary is incomplete and should not treat it as covering the full conversation.

Before this fix, the same failure would discard "Summary of chunk 1" entirely and fall through to the generic "Context contained N messages" fallback, losing all semantic content from the successfully summarized chunk.

Observed result after fix: The compiled production summarizeChunks function returns a partial summary with the [Partial summary: chunks 1-N of M] marker when a mid-chain chunk failure occurs. The marker is present in the output from the compiled production bundle with an injected generateSummary failure. The gateway starts cleanly. All 12 tests pass. Before the fix, any chunk failure discarded all previously accumulated summary progress.

What was not tested: Triggering the partial summary during a live multi-chunk compaction with a real LLM API key. The fault injection exercises the exact same compiled summarizeChunks code path with a controlled mock at the generateSummary call boundary.

@openclaw-barnacle openclaw-barnacle Bot added agents Agent runtime and tooling size: S proof: supplied External PR includes structured after-fix real behavior proof. labels May 17, 2026
@clawsweeper

clawsweeper Bot commented May 17, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge.

Latest ClawSweeper review: 2026-05-24 05:24 UTC / May 24, 2026, 1:24 AM ET.

Workflow note: Future ClawSweeper reviews update this same comment in place.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

PR Surface
Source +43, Tests +262. Total +305 across 2 files.

View PR surface stats
Area Files Added Removed Net
Source 1 65 22 +43
Tests 1 262 0 +262
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 2 327 22 +305

Summary
The branch updates src/agents/compaction.ts and adds focused tests so non-abort failures after completed chunks surface a marked partial summary through the existing fallback path.

Reproducibility: yes. at source level. Current main lets a later non-abort generateSummary rejection leave summarizeChunks without exposing its accumulated rolling summary, after which summarizeWithFallback can return only the generic context-count fallback.

PR rating
Overall: 🦞 diamond lobster
Proof: 🦞 diamond lobster
Patch quality: 🦞 diamond lobster
Summary: Above-average PR with a focused reliability fix, source-backed problem, strong terminal proof, regression coverage, and no blocking findings.

What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Real behavior proof
Sufficient (terminal): The PR body provides convincing terminal proof from compiled production inspection, gateway startup, focused Vitest, and compiled-bundle fault injection showing the after-fix partial-summary marker.

Next step before merge
No ClawSweeper repair lane is needed because there are no discrete contributor-facing blockers; maintainers should review the focused fallback and let required checks gate the exact head.

Security
Cleared: The diff only changes compaction source and colocated Vitest coverage, with no dependency, workflow, secret, permission, package-resolution, or release surface touched.

Review details

Best possible solution:

Land the focused compaction fallback after maintainer review and required checks so completed chunk summaries are preserved with an explicit incomplete-summary marker.

Do we have a high-confidence way to reproduce the issue?

Yes, at source level. Current main lets a later non-abort generateSummary rejection leave summarizeChunks without exposing its accumulated rolling summary, after which summarizeWithFallback can return only the generic context-count fallback.

Is this the best way to solve the issue?

Yes. The PR keeps the repair inside the existing compaction fallback path, preserves abort/timeout and first-chunk behavior, keeps oversized-message retry ordering, and avoids new config or provider API surface.

Label justifications:

  • P2: This is a normal-priority compaction reliability fix with limited blast radius, clear source evidence, regression tests, and supplied behavior proof.
  • rating: 🦞 diamond lobster: Current PR rating is 🦞 diamond lobster because proof is 🦞 diamond lobster, patch quality is 🦞 diamond lobster, and Above-average PR with a focused reliability fix, source-backed problem, strong terminal proof, regression coverage, and no blocking findings.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body provides convincing terminal proof from compiled production inspection, gateway startup, focused Vitest, and compiled-bundle fault injection showing the after-fix partial-summary marker.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides convincing terminal proof from compiled production inspection, gateway startup, focused Vitest, and compiled-bundle fault injection showing the after-fix partial-summary marker.

What I checked:

  • Current main behavior: On current main, summarizeChunks stores the rolling summary only in local summary; any later retryAsync rejection exits the loop and summarizeWithFallback can fall through to the generic context-count fallback. (src/agents/compaction.ts:338, d6c9387c0fbb)
  • PR implementation: The PR tracks whether a chunk succeeded, preserves abort/timeout and first-chunk behavior, attaches a marked partial summary on later non-abort failure, and lets summarizeWithFallback prefer an oversized-message retry before using that partial summary. (src/agents/compaction.ts:340, 7f6da169025f)
  • Regression coverage: The added test file covers mid-chain partial summary recovery, abort and timeout exclusion, first-chunk failure fallback, all-chunks success, oversized retry precedence, and 3+ chunk preservation. (src/agents/compaction-partial-summary.test.ts:102, 7f6da169025f)
  • Existing fallback contract: Existing tests assert the generic Context contained fallback and the no-duplicate-resummarization behavior when no messages are oversized, which the PR keeps and extends rather than replacing. (src/agents/compaction.summarize-fallback.test.ts:41, d6c9387c0fbb)
  • History provenance: The current fallback behavior and its regression test were recently shaped by the redundant partial summarization fix; this PR builds on that fallback boundary instead of adding a new compaction path. (src/agents/compaction.ts, 7df5f7024266)
  • Patch hygiene: Whitespace/conflict-marker check for the PR diff against current main produced no output. (7f6da169025f)

Likely related people:

  • steipete: git blame on the current summarizeChunks/summarizeWithFallback region points to recent compaction edits, and git shortlog --all shows the heaviest activity on the central compaction files. (role: recent area contributor; confidence: high; commits: 97c63e63b14a; files: src/agents/compaction.ts)
  • neeravmakwana: Authored the recent fallback change and tests that skip redundant partial compaction summarization, directly adjacent to this PR's recovery path. (role: adjacent fallback contributor; confidence: medium; commits: 7df5f7024266; files: src/agents/compaction.ts, src/agents/compaction.summarize-fallback.test.ts)
  • DhruvBhatia0: Authored the pluggable compaction provider registry change that touched the same built-in summarization path and retry classification boundary. (role: compaction feature contributor; confidence: medium; commits: 12331f04631f; files: src/agents/compaction.ts, src/plugins/compaction-provider.ts)

Codex review notes: model gpt-5.5, reasoning high; reviewed against d6c9387c0fbb.

@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. impact:session-state Session, memory, transcript, context, or agent state can drift or corrupt. labels May 17, 2026
SebTardif added a commit to SebTardif/openclaw that referenced this pull request May 20, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. and removed impact:session-state Session, memory, transcript, context, or agent state can drift or corrupt. labels May 20, 2026
@clawsweeper

clawsweeper Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

✨ Hatched: 🥚 common Sunspot Signal Puff

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

Rarity: 🥚 common.
Trait: collects tiny proofs.
Image traits: location flaky test forest; accessory rollback rope; palette rose quartz and slate; mood celebratory; pose standing beside its cracked shell; shell polished stone shell; lighting cool dashboard glow; background delicate sparkle particles.
Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Sunspot Signal Puff in ClawSweeper.

What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@openclaw-barnacle openclaw-barnacle Bot added triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. proof: supplied External PR includes structured after-fix real behavior proof. and removed proof: supplied External PR includes structured after-fix real behavior proof. triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels May 20, 2026
@SebTardif SebTardif force-pushed the fix/compaction-preserve-partial-summary branch from d79619f to 2095d34 Compare May 21, 2026 15:13
@SebTardif

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@SebTardif SebTardif force-pushed the fix/compaction-preserve-partial-summary branch from 2095d34 to a85144d Compare May 21, 2026 17:54
@SebTardif

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@openclaw-barnacle openclaw-barnacle Bot added triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. and removed proof: supplied External PR includes structured after-fix real behavior proof. labels May 21, 2026
@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@SebTardif SebTardif force-pushed the fix/compaction-preserve-partial-summary branch 2 times, most recently from 2579a99 to 046216e Compare May 21, 2026 19:54
@SebTardif

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 22, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 22, 2026
@clawsweeper

clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@SebTardif

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper clawsweeper Bot added rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. labels May 22, 2026
@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. proof: sufficient ClawSweeper judged the real behavior proof convincing. labels May 23, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 23, 2026
@SebTardif SebTardif force-pushed the fix/compaction-preserve-partial-summary branch from 77e403e to 2d6271e Compare May 24, 2026 02:14
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 24, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 24, 2026
@clawsweeper

clawsweeper Bot commented May 24, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 24, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 24, 2026
@clawsweeper

clawsweeper Bot commented May 24, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels May 24, 2026
SebTardif added 3 commits May 24, 2026 05:40
When summarizing multiple chunks, if a chunk fails after at least one
chunk has already succeeded, return the partial summary instead of
propagating the error and losing all summarization progress.

Abort and timeout errors still propagate immediately. First-chunk
failures still rethrow so the existing fallback path runs.

Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
@clawsweeper

clawsweeper Bot commented May 24, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. size: M status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants