Repository navigation
Conversation
📝 WalkthroughWalkthroughThe plugin now records structured SDD failures, blocks failed phases within their originating sessions, and provides new-session recovery guidance. Tests and benchmarks validate terminal handoffs, downstream blocking, session isolation, and disposal reset behavior. ChangesSDD failure recovery
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant SDDTask
participant review_result_artifacts
participant OpenCodeSession
SDDTask->>review_result_artifacts: create structured SDD failure
review_result_artifacts->>OpenCodeSession: return terminal handoff
OpenCodeSession->>review_result_artifacts: retry failed SDD phase
review_result_artifacts-->>OpenCodeSession: block phase and provide new-session guidance
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Please add The PR satisfies #2948's accepted alternative: after an empty or malformed SDD result it preserves the same-session block, truthfully reports that the later requested phase was not launched, requires a new session after an explicit decision, isolates unrelated sessions, and clears retained state on disposal. The original post-mutation Result Contract loss remains separately tracked by #2855. |
|
Correction to my earlier routing comment: please add This PR implements #2948's accepted permanent same-session-block alternative: it preserves the block, states that the requested later phase was not launched, requires an explicit decision and a new OpenCode session, isolates other parent sessions, and clears retained state on disposal. #2629's original generic Pi/provider API failure remains outside this SDD parent-session cache scope, so the PR should reference rather than close it. The dispatched Result Contract loss remains separately tracked by #2855, and the unbound continuation by #2790. |
c5da5fd to
f182ea2
Compare
4ec9298 to
38c7b9e
Compare
|
Closing this PR without merging it. As the maintainer clarified in this thread, this SDD same-session block addresses the scope of #2948, not #2629's generic Pi/provider API failure; #2855 and #2790 are separate. #2948 was subsequently delivered by commit e57bcbb with a different truthful #2629 remains separately NOT_PLANNED, not fixed by this PR. If a current provider flow loses an actionable error, please report exact Gentle AI/gentle-pi/Pi and provider versions, the route and authentication mode, task-settlement evidence, and the caller-visible result so that generic behavior can be assessed on its own. |
Linked Issue
Closes #2629
PR Type
type:bug: Bug fix (non-breaking change that fixes an issue)type:feature: New feature (non-breaking change that adds functionality)type:docs: Documentation onlytype:refactor: Code refactoring (no functional changes)type:chore: Build, CI, or tooling changestype:breaking-change: Breaking change (fix or feature that changes existing behavior)Summary
Changes
internal/assets/opencode/plugins/review-result-artifacts.tsinternal/assets/review_plugin_recovery_test.gointernal/assets/assets_test.gobench/axis_sdd_task_result.goTest Plan
Unit Tests
go test ./internal/assets -count=1go test ./... -count=1passes in CI. Local execution was environment-limited in non-candidate Windows packages.Go Format
go run ./internal/gofmtcheckgit diff --check origin/main...HEADE2E Tests
e2e/docker-test.shremains unavailable locally because Docker is not installed and WSL has no Linux distribution.Benchmark Validation
tr01-sdd-empty-task-result: 1 completed, 0 unsupported, 0 failed.Manual Validation
Automated Checks
Closes #2629.status:approvedtype:*Labeltype:bugis applied.Contributor Checklist
status:approvedtype:*label to this PRgo test ./...passes in CIgo run ./internal/gofmtcheck)Co-Authored-BytrailersNotes for Reviewers
Please focus on the ownership boundary: the plugin retains hard no-retry/no-advance enforcement, while the replacement handoff describes the earlier failure rather than claiming the requested phase ran. The wire schema, code, original phase, task model, and continuation remain unchanged.
Summary by CodeRabbit