feat(atomic-actions): reconcile terminal effect failures - #478
Closed
yuecideng wants to merge 1 commit into
Closed
Conversation
yuecideng
force-pushed
the
feat/semantic-effect-outcome-matrix
branch
from
August 11, 2026 16:09
19953c2 to
59e09e5
Compare
yuecideng
force-pushed
the
feat/effect-failure-reconciliation
branch
from
August 11, 2026 16:09
3a20042 to
2dd7025
Compare
4 tasks
4 tasks
yuecideng
marked this pull request as ready for review
August 11, 2026 16:11
Greptile SummaryThe PR adds core-owned reconciliation for terminal physical-effect failures and makes retry, invalidation, and external recovery explicit per environment.
Confidence Score: 5/5The PR appears safe to merge; no concrete changed-code failure remains after reviewing row-local retry, invalidation, recovery, and timeout paths. The execution session preserves retryable rows when other rows enter external recovery, scopes invalidation to selected environment masks, rebuilds requests after partial progress, and validates semantic expectation outcomes before policy selection.
|
| Filename | Overview |
|---|---|
| embodichain/lab/sim/atomic_actions/execution.py | Adds typed per-expectation results, request-owned removal deltas, row-local failure reconciliation, and fail-closed timeout handling without an identified correctness defect. |
| embodichain/lab/sim/skills/runtime.py | Converts monitor decisions into explicit invalidation and retry policies for Pick, Place, and HandOver while preserving expectation evidence in traces. |
| embodichain/lab/sim/atomic_actions/init.py | Exports the new EffectExpectationResult public API. |
| tests/sim/atomic_actions/test_engine_per_env.py | Expands coverage for request-owned invalidation, retained state, external recovery, and unresolved timeout behavior. |
| tests/sim/skills/test_runtime.py | Covers per-expectation trace preservation and Place/HandOver terminal failure policy selection. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Terminal effect verification] --> B{Result received before deadline?}
B -->|No| C{Covered verified state active?}
C -->|Yes| D[Apply removal-only invalidation]
D --> E[External recovery]
C -->|No| F[Retry eligible rows]
B -->|Yes| G{Row outcome}
G -->|Success| H[Commit expected effect]
G -->|Failed and retryable| I[Apply selected invalidation]
I --> F
G -->|Failed and not retryable| J[Apply selected invalidation]
J --> E
G -->|Unresolved| K[Keep pending request]
Reviews (1): Last reviewed commit: "feat(atomic-actions): reconcile terminal..." | Re-trigger Greptile
Contributor
Author
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.
Description
Stack
feat/semantic-effect-outcome-matrixMake terminal physical-effect failures a core-owned, fail-closed state transition. Verification requests carry removal-only invalidation deltas; results classify failed rows into invalidation, same-invocation retry, or external recovery, and preserve per-expectation evidence for tracing.
The execution session now applies invalidation before recovery, rejects unsafe replay, and handles unresolved deadlines consistently. The semantic runtime translates monitor decisions into this single atomic-action contract instead of maintaining a second recovery/state path.
This intentionally tightens the typed effect-result API without a compatibility shim.
Refs #471
Refs #474
Type of change
Screenshots
Not applicable.
Validation
pytest -q tests/sim/atomic_actions/test_engine_per_env.py tests/sim/atomic_actions/test_runner.py tests/sim/skills/test_runtime.py— 142 passedChecklist