Skip to content

fix: preserve enclave gateway notification acknowledgments - #10383

Merged
lpcox merged 2 commits into
mainfrom
lpcox-release-acceptance-fixes
Oct 21, 2026
Merged

lpcox merged 2 commits into
mainfrom
lpcox-release-acceptance-fixes

Conversation

@lpcox

@lpcox lpcox commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

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:

  • Host/storage/artifact admission and gateway attachment passed.
  • gateway-handshake/initialize passed.
  • gateway-handshake/initialized failed with HTTP 502.
  • gateway-handshake/tools-list was not attempted.

The MCP server correctly acknowledges notifications/initialized with 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 (SHA256 d21905728aaecf36f9ea2c33039f34753f9ef1745bc7dd810649e8a452021587). 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/main at c44bbdc06c059517d137cca4f897ababf763f39f without 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

Markdown source Before → after Security impact
Before: docs/INTEGRATION-TESTS.md:104–108; after: lines 107–115 Public-probe description gains the empty-202 notification contract, retained rejection bounds, observed release failure and explicit mocked-evidence limitations. Documentation clarification only; no executable snippets, credential recipients, permissions, persistence, sandbox/firewall or approval controls changed by this PR's task delta.

Changed source SHA256s: fixture bc1339814bacda09822ae7aeb2458761890ac8e7c0aa174a0f5e8183145a5e66; regression test 8b765544030a37244cebd701872c928606423e98741906305745491b67a9296a; documentation d83fd11142de7eff22bb61ca301268c6e30ee4f54788c3da104ce9b355f5c381.

lpcox and others added 2 commits October 20, 2026 17:31
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
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Documentation Preview

Documentation has been built for this PR.

Download preview artifact

To view locally:

  1. Download the docs-preview-pr-10383 artifact from the workflow run
  2. Unzip and open index.html in your browser

Built from commit 0b34be7

@lpcox
lpcox marked this pull request as ready for review October 21, 2026 00:34
Copilot AI max review requested due to automatic review settings October 21, 2026 00:34
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤

📰 BREAKING: Report filed by Smoke Copilot

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Smoke Cloud Hypervisor completed. Cloud Hypervisor + Copilot passed.

Cloud Hypervisor + Copilot smoke test by Smoke Cloud Hypervisor

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Build Test Suite completed successfully!

Generated by Build Test Suite for #10383

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✨ The prophecy is fulfilled... Smoke Codex has completed its mystical journey. The stars align. 🌟

Smoke Codex

Outcome: reported_no_action

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.

Generated from Smoke Codex · gpt54 · 13.5 AIC · ⊞ 20.9K · ◷

🔮 The oracle has spoken through Smoke Codex

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Chroot tests passed! Smoke Chroot - All security and functionality tests succeeded.

Tested by Smoke Chroot

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

📡 Smoke OTel Tracing completed. All tracing scenarios validated. ✅

📡 OTel tracing validated by Smoke OTel Tracing

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Smoke Gemini completed. All facets verified. 💎

💎 Faceted by Smoke Gemini

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

🛡️ Smoke Copilot Network Isolation confirmed the egress allowlist is enforced. ✅

🛡️ Egress verdict from Smoke Copilot Network Isolation

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Smoke Copilot BYOK AOAI (api-key) completed. Copilot AOAI BYOK (api-key) mode operational. 🔓

🔑 BYOK (AOAI api-key) report filed by Smoke Copilot BYOK AOAI (api-key)

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Smoke Claude passed

Generated by Smoke Claude for #10383

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Security Guard has started processing this pull request

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

🔌 Smoke Services — All services reachable! ✅

🔌 Service connectivity validated by Smoke Services

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Smoke Copilot BYOK AOAI (Entra) completed. Copilot AOAI BYOK (Entra) mode operational. 🔓

🪪 BYOK (AOAI Entra) report filed by Smoke Copilot BYOK AOAI (Entra)

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Smoke Copilot BYOK completed. Copilot BYOK mode operational. 🔓

🔑 BYOK report filed by Smoke Copilot BYOK

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Coverage Regression Detected

This PR decreases test coverage. Please add tests to maintain coverage levels.

Overall Coverage

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

@github-actions

Copy link
Copy Markdown
Contributor

✅ Coverage Check Passed

Overall Coverage

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.85% 85.85% ➡️ +0.00%

Coverage comparison generated by scripts/ci/compare-coverage.ts

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 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

@github-actions

Copy link
Copy Markdown
Contributor

Cloud Hypervisor + Copilot smoke test

  1. Merged PR lookup: PASS
  2. github.com connectivity: PASS (HTTP 200)
  3. File write/read: PASS
  4. example.com blocked: PASS (HTTP 000)
    Overall: PASS

Cloud Hypervisor + Copilot smoke test by Smoke Cloud Hypervisor
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke test (Copilot)

  • GitHub MCP: ✅ (latest PR: "fix: preserve enclave gateway notification acknowledgments")
  • github.com connectivity: ✅
  • File write/read: ✅
    Overall: PASS — @lpcox

📰 BREAKING: Report filed by Smoke Copilot
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Claude Results

  • API status: ✅ PASS
  • GH check: ✅ PASS
  • File status: ✅ PASS

Overall result: PASS

Generated by Smoke Claude for #10383 · claude · haiku45 · 33.9 AIC · ⊞ 6.1K · ◷
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

EGRESS_RESULT allow=pass deny=pass

  • ✅ Allowed domain (api.github.com): HTTP 200
  • ✅ Blocked domain (example.com): blocked (curl TLS error from proxy)
  • Overall: PASS

cc @lpcox

🛡️ Egress verdict from Smoke Copilot Network Isolation
Add label ready-for-aw to run again

@github-actions github-actions Bot added smoke-copilot-network-isolation Copilot network-isolation egress smoke test smoke-services labels Oct 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Smoke services: ✅ Redis PONG, ✅ pg_isready accepting connections, ✅ SELECT 1 = 1. Overall: PASS

🔌 Service connectivity validated by Smoke Services
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Copilot BYOK (Direct) Mode ✅

Test Results:

Status: PASS | Running in direct BYOK mode (COPILOT_PROVIDER_API_KEY)

🔑 BYOK report filed by Smoke Copilot BYOK
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

OTEL smoke test

  • ✅ S1 Module loading: otel.js loads and exports its functions.
  • ✅ S2 Tests: 68 passed, 0 failed (npx jest otel).
  • ✅ S3 Env forwarding: GITHUB_AW_OTEL_TRACE_ID and GITHUB_AW_OTEL_PARENT_SPAN_ID are in env-passthrough.ts. api-proxy-env-config.ts forwards the OTEL vars to the api-proxy container.
  • ✅ S4 Token tracker: the onUsage callback is present in token-tracker-http.js.
  • ✅ S5 Diagnostics: /tmp/gh-aw/otel.jsonl has 1 line. I did not check whether spans were exported to an OTLP endpoint.

I re-ran the checks myself, not the pre-steps.

📡 OTel tracing validated by Smoke OTel Tracing
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test

  • ci: replace retired gpt-5.4-mini with gpt-5.6-luna in test-model-routing
  • fix: repair Docker enclave smoke workflow compatibility
  • GitHub PR checks: ✅
  • File write/read: ✅
  • Build (npm ci && npm run build): ✅
  • Playwright (github.com title): ❌
  • Discussion comment: ❌
  • Overall status: FAIL

🔮 The oracle has spoken through Smoke Codex
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

@lpcox Smoke test results:

  • GitHub MCP PR list: ❌ validating "/properties/state": enum: merged does not equal any of: [open closed all]
  • GitHub.com connectivity: ✅
  • Agent file I/O: ✅
  • BYOK inference: ✅
    Running in direct BYOK mode (COPILOT_PROVIDER_API_KEY + COPILOT_PROVIDER_BASE_URL) via api-proxy → Azure OpenAI (Foundry, o4-mini-aw)
    Overall: FAIL

🔑 BYOK (AOAI api-key) report filed by Smoke Copilot BYOK AOAI (api-key)
Add label ready-for-aw to run again

@lpcox
lpcox deployed to aoai-model October 21, 2026 00:46 — with GitHub Actions Active
@github-actions

Copy link
Copy Markdown
Contributor

ci: replace retired gpt-5.4-mini with gpt-5.6-luna in test-model-routing
fix: repair Docker enclave smoke workflow compatibility

  • GitHub MCP testing: ✅
  • GitHub.com connectivity: ✅
  • File write/read test: ✅
  • BYOK inference test: ✅

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

@lpcox

🪪 BYOK (AOAI Entra) report filed by Smoke Copilot BYOK AOAI (Entra)
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Chroot Version Comparison

Runtime Host Version Chroot Version Match?
Python Python 3.12.15 Python 3.12.15 ✅
Node.js v24.22.0 v2.98.0 ❌
Go go1.22.12 go1.22.12 ✅

Result: Not all tests passed (Node.js mismatch), so the smoke-chroot label was not added.

Tested by Smoke Chroot
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

🏗️ Build Test Suite Results

Ecosystem Project Build/Install Tests Status
Bun elysia ❌ not run ❌ FAIL
Bun hono ❌ not run ❌ FAIL
C++ fmt ✅ N/A ✅ PASS
C++ json ✅ N/A ✅ PASS
Deno oak ❌ not run ❌ FAIL
Deno std ❌ not run ❌ FAIL
.NET hello-world ❌ N/A ❌ FAIL
.NET json-parse ❌ N/A ❌ FAIL
Go color ✅ 1/1 pkg passed ✅ PASS
Go env ✅ 1/1 pkg passed ✅ PASS
Go uuid ✅ 1/1 pkg passed ✅ PASS
Java gson ❌ not run ❌ FAIL
Java caffeine ❌ not run ❌ FAIL
Node.js clsx ✅ pass ✅ PASS
Node.js execa ✅ pass ✅ PASS
Node.js p-limit ✅ pass ✅ PASS
Rust fd ✅ 1/1 passed ✅ PASS
Rust zoxide ✅ 1/1 passed ✅ PASS

Overall: 4/8 ecosystems passed — FAIL (build-test label not added)

Failure details (all clones succeeded):

  • Bun / Deno: the installer curl | bash/sh commands were denied by the sandbox permission policy, so the tools were never installed.
  • .NET: dotnet restore crashed in NuGet migrations: lstat("/run/user/1001") ENOENT (mutex creation). Setting DOTNET_CLI_HOME/TMPDIR did not help.
  • Java: mvn could not create ~/.m2/repository (not writable). With an alternate local repo, Maven failed with InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty (no Java truststore in the sandbox).

Generated by Build Test Suite for #10383 · copilot · auto · 23.9 AIC · ⊞ 12K · ◷
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Gemini Engine Smoke Test Results

💎 Faceted by Smoke Gemini
Add label ready-for-aw to run again

@lpcox
lpcox merged commit c915e89 into main Oct 21, 2026
149 checks passed
@lpcox
lpcox deleted the lpcox-release-acceptance-fixes branch October 21, 2026 01:00
github-actions Bot added a commit that referenced this pull request Oct 21, 2026
- 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>
lpcox added a commit that referenced this pull request Oct 21, 2026
…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>

This branch was successfully deployed

1 active deployment
aoai-model — ddbf5c3e Deployed Oct 21, 2026 by lpcox via conclusion #2093
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants