Stabilize ACA session admission and results - #195
Merged
Laveesh Rohra (larohra) merged 2 commits intoSep 3, 2026
Merged
Conversation
Laveesh Rohra (larohra)
force-pushed
the
larohra/aca-runtime-reliability
branch
from
September 2, 2026 21:55
0135f26 to
dc87c95
Compare
Laveesh Rohra (larohra)
force-pushed
the
larohra/aca-runtime-reliability
branch
from
September 2, 2026 23:01
dc87c95 to
d35bf13
Compare
Laveesh Rohra (larohra)
force-pushed
the
larohra/aca-runtime-reliability
branch
from
September 2, 2026 23:36
d35bf13 to
9ab61ea
Compare
Base automatically changed from
larohra/aca-region-contract
to
feature/aca-sandboxes
September 3, 2026 15:56
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Laveesh Rohra (larohra)
force-pushed
the
larohra/aca-runtime-reliability
branch
from
September 3, 2026 15:56
9ab61ea to
22cdbc3
Compare
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Critical idle-reclaim safety and committed-handle preservation issues remain unresolved.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Stabilizes ACA session admission, provider failures, result retention, and bounded reconciliation safety.
Changes:
- Preserves management handles for indeterminate launches.
- Adds typed, redacted provider failure handling.
- Enforces a shared 300-second result hold.
- Adds safer bounded reconciliation and backing checks.
Required fixes:
- Critical: Exact-read persisted sandbox backing before completing idle reclaim.
- Moderate: Distinguish pre-launch from post-launch indeterminate failures so committed handles are preserved.
File summaries
| File | Description |
|---|---|
tests/test_session_state_store_errors.py |
Tests atomic expiry extension. |
tests/test_execution_aca_sandbox.py |
Tests admission, provider errors, cancellation, and retention. |
tests/test_controller_reconciler.py |
Tests retention and bounded reconciliation. |
tests/test_controller_readiness.py |
Tests deadlines and rearm retention. |
tests/test_controller_http.py |
Tests committed indeterminate responses. |
tests/test_app.py |
Tests reconciliation deadline propagation. |
tests/doubles/fake_session_runtime.py |
Updates the session-runtime test double. |
src/azure_functions_agents/session_state/store.py |
Extends expiry during terminal adoption. |
src/azure_functions_agents/sandbox_runtime_limits.py |
Defines the shared result hold. |
src/azure_functions_agents/execution/backend.py |
Defines the indeterminate-admission error. |
src/azure_functions_agents/execution/aca_sandbox.py |
Handles launch ambiguity, transport errors, and result retention. |
src/azure_functions_agents/execution/__init__.py |
Exports the new error type. |
src/azure_functions_agents/controller/reconciler.py |
Adds result-aware reclaim and backing checks. |
src/azure_functions_agents/controller/readiness.py |
Preserves retention during lifecycle rearm. |
src/azure_functions_agents/controller/http.py |
Returns committed 202 responses. |
docs/frds/0008-aca-sandbox-session-runtime.md |
Records the updated design decision. |
docs/architecture.md |
Updates runtime boundary documentation. |
docs/aca-sandbox-session-runtime.md |
Documents public reliability behavior. |
Review details
Suppressed comments (1)
src/azure_functions_agents/execution/aca_sandbox.py:567
- The durable conversion is only applied by
_submit_admitted_run. Idempotent replays call_resume_journal_submissiondirectly, so if the same journal read or launch remains indeterminate,start_run()leaksRunSubmissionIndeterminateErrorinstead of returning the committed handle. Apply the same durable projection on the replay path, preferably through a shared helper.
raise DurableAdmissionIndeterminateError(
handle=_run_handle(run, phase="executing"),
) from exc
- Files reviewed: 18/18 changed files
- Comments generated: 2
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
hallvictoria
reviewed
Sep 3, 2026
hallvictoria
reviewed
Sep 3, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ecaffe8d-7d68-4599-8ac1-27235adb57a7
hallvictoria
approved these changes
Sep 3, 2026
Laveesh Rohra (larohra)
marked this pull request as ready for review
September 3, 2026 17:35
Laveesh Rohra (larohra)
merged commit Sep 3, 2026
bdc0c0c
into
feature/aca-sandboxes
8 of 15 checks passed
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.
Stack
Stack layer 2/5, based on parent PR #194 (
larohra/aca-region-contract).Isolated contract
This replaces the runtime-reliability portion of draft PR #169 without modifying or closing it. Qualification fixtures, deployment/attestation scripts, generated constraints, templates, and pipeline gating remain in later stack layers.
Validation
python -m ruff check src testspython -m mypy srcgit diff --check