Repository navigation
fix: preserve enclave gateway notification acknowledgments - #10383
Conversation
Forward empty MCP notification acknowledgments instead of parsing them as JSON. Add regression coverage and document the release acceptance failure boundary. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b496c254-7f1b-4d28-b920-c620aae5ef51
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b496c254-7f1b-4d28-b920-c620aae5ef51
Documentation PreviewDocumentation has been built for this PR. To view locally:
Built from commit 0b34be7 |
|
📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤
|
|
Smoke Cloud Hypervisor completed. Cloud Hypervisor + Copilot passed.
|
|
✅ Build Test Suite completed successfully!
|
|
✨ The prophecy is fulfilled... Smoke Codex has completed its mystical journey. The stars align. 🌟 Smoke CodexOutcome: The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible. Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.
|
|
Chroot tests passed! Smoke Chroot - All security and functionality tests succeeded.
|
|
📡 Smoke OTel Tracing completed. All tracing scenarios validated. ✅
|
|
✅ Smoke Gemini completed. All facets verified. 💎
|
|
🛡️ Smoke Copilot Network Isolation confirmed the egress allowlist is enforced. ✅
|
|
✅ Smoke Copilot BYOK AOAI (api-key) completed. Copilot AOAI BYOK (api-key) mode operational. 🔓
|
|
✅ Smoke Claude passed
|
|
🚀 Security Guard has started processing this pull request |
|
🔌 Smoke Services — All services reachable! ✅
|
|
✅ Smoke Copilot BYOK AOAI (Entra) completed. Copilot AOAI BYOK (Entra) mode operational. 🔓
|
|
✅ Smoke Copilot BYOK completed. Copilot BYOK mode operational. 🔓
|
|
| Metric | Base | PR | Delta |
|---|---|---|---|
| Lines | 93.39% | 93.39% | ➡️ +0.00% |
| Statements | 91.83% | 91.83% | ➡️ +0.00% |
| Functions | 90.98% | 90.98% | ➡️ +0.00% |
| Branches | 85.86% | 85.85% | 📉 -0.01% |
Coverage comparison generated by scripts/ci/compare-coverage.ts
✅ Coverage Check PassedOverall Coverage
Coverage comparison generated by |
There was a problem hiding this comment.
🔵 Needs a closer look
Current-head regression results and security-review evidence remain unverified, requiring final human review.
No open issues 🎉
What changed in this PR
Fixes the public enclave gateway fixture so valid empty notification acknowledgments no longer interrupt the MCP handshake.
Changes:
- Preserve empty HTTP 202 responses only for JSON-RPC 2.0 notifications without an ID.
- Expand handshake, cancellation, capability-forwarding, and negative-response regression tests.
- Document the failure diagnosis and validation limits.
| File | Description |
|---|---|
| scripts/ci/cloud-hypervisor-enclave-gateway.test.ts | Adds notification and full-handshake regression coverage. |
| scripts/ci/cloud-hypervisor-enclave-gateway.js | Forwards valid empty acknowledgments while retaining response validation. |
| docs/INTEGRATION-TESTS.md | Explains the acknowledgment contract and evidence limitations. |
Review effort: Max
|
Cloud Hypervisor + Copilot smoke test
|
|
Smoke test (Copilot)
|
Smoke Claude Results
Overall result: PASS
|
|
EGRESS_RESULT allow=pass deny=pass
cc @lpcox
|
|
Smoke services: ✅ Redis PONG, ✅ pg_isready accepting connections, ✅ SELECT 1 = 1. Overall: PASS
|
Smoke Test: Copilot BYOK (Direct) Mode ✅Test Results:
Status: PASS | Running in direct BYOK mode (COPILOT_PROVIDER_API_KEY)
|
|
OTEL smoke test
I re-ran the checks myself, not the pre-steps.
|
Smoke Test
|
|
@lpcox Smoke test results:
|
|
ci: replace retired gpt-5.4-mini with gpt-5.6-luna in test-model-routing
Running in direct BYOK mode (AWF_AUTH_TYPE=github-oidc + AWF_AUTH_AZURE_* + COPILOT_PROVIDER_BASE_URL) via api-proxy → Azure OpenAI (Foundry, o4-mini-aw) authenticated via Microsoft Entra Overall: PASS
|
Chroot Version Comparison
Result: Not all tests passed (Node.js mismatch), so the
|
🏗️ Build Test Suite Results
Overall: 4/8 ecosystems passed — FAIL ( Failure details (all clones succeeded):
|
Gemini Engine Smoke Test Results
|
- Add unified enclaves to Feature highlights in README.md with mention of cost control via --max-num-tool-calls, repository seedling, and dynamic admission - Clarify that tool description text for capped limits must match exactly during readiness handshake in enclaves-architecture.md Addresses recent code changes: - Commit 0f185e3: match capped enclave tool descriptions during readiness (#10386) - Commit c915e89: preserve enclave gateway notification acknowledgments (#10383) Verified that: - Tool descriptions are correctly documented in awf-config-spec.md §14.2a - MCP notification acknowledgment handling is documented in INTEGRATION-TESTS.md - Release template remains consistent with current CLI features Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ns (#10388) * docs: sync unified enclave features and capped tool descriptions - Add unified enclaves to Feature highlights in README.md with mention of cost control via --max-num-tool-calls, repository seedling, and dynamic admission - Clarify that tool description text for capped limits must match exactly during readiness handshake in enclaves-architecture.md Addresses recent code changes: - Commit 0f185e3: match capped enclave tool descriptions during readiness (#10386) - Commit c915e89: preserve enclave gateway notification acknowledgments (#10383) Verified that: - Tool descriptions are correctly documented in awf-config-spec.md §14.2a - MCP notification acknowledgment handling is documented in INTEGRATION-TESTS.md - Release template remains consistent with current CLI features Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: use repository seeding terminology Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Diagnosis
Release v0.28.70 (run 39477143588, source
32c12e0099763dad77acef6c655cb12e58fe36e1) fails both the public script environment probe and live script/agent acceptance at the same first failing boundary:gateway-handshake/initializepassed.gateway-handshake/initializedfailed with HTTP 502.gateway-handshake/tools-listwas not attempted.The MCP server correctly acknowledges
notifications/initializedwith an empty HTTP 202. The public gateway fixture unconditionally parses the empty response as JSON, catches the parse error, and returns 502. The release fixture matches the pre-fix source byte-for-byte (SHA256d21905728aaecf36f9ea2c33039f34753f9ef1745bc7dd810649e8a452021587). This is not evidence of a provider, guest, storage, or release-dispatch failure. No existing diagnosis-registry record matches this fixture defect.Change
Preserve an actually empty upstream HTTP 202 only for JSON-RPC 2.0 notifications with a string method and no request ID. Do not fabricate success for unavailable upstreams or weaken readiness checks. Keep bounded JSON parsing and permanent failures for malformed, truncated and oversized responses.
Expand existing regression sources for the full initialize/initialized/tools-list handshake, cancellation acknowledgments, capability forwarding, and negative empty responses including null IDs and non-202 statuses. Relative to current main, no native workflow YAML, generated locks, dependencies, image pins, release admission, topology, storage, firewall or sandbox controls change.
Main merge and publication timing
The draft was created before the subsequent instruction to merge main arrived. In response, fetched origin, merged
origin/mainatc44bbdc06c059517d137cca4f897ababf763f39fwithout conflicts into this same branch, and updated this same draft. No rebase, reset, force push or second PR. Current merge head:ddbf5c3e749bcc5be270fb4c6f1d03e47d7d1b2e; original fix commit:a1cc1efacb5b5303e4b9984fec5e8d8b28dc75e4.The task-only three-file delta against merged main remains byte-for-byte identical to the frozen diff: SHA256
e969d04ca05c7e8451f325ed956510214fb5bd5f4f1706848c7e3d2c9f981b39. All three changed-file hashes remain unchanged. Main brought upstream Docker smoke-workflow compatibility and model-information lifecycle changes; those inherited changes are not covered by the original static review packet, and no review approval is inferred for the merged tree.Review and validation limitations
Draft publication only, explicitly requested after disclosure of the blocker. The retained read-only reviewer reported REVIEW EVIDENCE UNAVAILABLE, not PASS. Earlier one-line no-vulnerability summaries are not approval; required hash-bound ten-property evidence remains unavailable. No confirmed vulnerability was established.
No local executable validation, reproduction, dependency installation or live acceptance was performed. Jest and tsc are absent in this isolated worktree. Regression tests are authored, not claimed passing. Ordinary Git commit/merge/push completed without bypassing configured hooks; this does not establish lint/build/test coverage. Raw logs and review artifacts remain private and are not committed. Original checkout remains untouched.
Normal PR CI may report deterministic coverage. It cannot establish release-attested KVM acceptance; that remains unverified. No Actions dispatch/rerun/cancel, release, PR merge or Agent merge was performed. Local execution and dependency restoration remain gated on review and separate authorization. CI results must be attributed to the actual head, not carried over from the pre-merge commit.
Authored Markdown before/after and security impact
Changed source SHA256s: fixture
bc1339814bacda09822ae7aeb2458761890ac8e7c0aa174a0f5e8183145a5e66; regression test8b765544030a37244cebd701872c928606423e98741906305745491b67a9296a; documentationd83fd11142de7eff22bb61ca301268c6e30ee4f54788c3da104ce9b355f5c381.