Skip to content

fix: mitigate compromised eMudhra CA trust across AWF - #10343

Merged
lpcox merged 9 commits into
mainfrom
lpcox-ca-compromise-mitigation
Oct 20, 2026
Merged

lpcox merged 9 commits into
mainfrom
lpcox-ca-compromise-mitigation

Conversation

@lpcox

@lpcox lpcox commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Mitigate the October 2026 eMudhra intermediate-key disclosure across AWF-controlled TLS and release-bootstrap paths. There is no evidence of AWF exploitation. The disclosed TLS issuer keys can support interception of traffic to already allowed domains; the two code-signing issuers are not themselves TLS issuers.

  • Add one canonical SPKI distrust policy for the eight disclosed intermediate keys and, as a temporary emergency fallback, the four issuing/cross-signing root keys. Generate checked-in copies for existing per-component Docker build contexts and assert synchronization.
  • Filter OpenSSL bundles and hashed CA directories in the full/minimal agent, Squid, API/CLI proxies, router, build-tools/DinD sysroots, gh-aw-node, enclave stages, and Cloud Hypervisor guest images. Squid interception explicitly uses the sanitized store and denies certificate errors.
  • Filter Node embedded/default, extra, and explicitly supplied CA trust. An image Node launcher applies the preload independently of caller-preserved NODE_OPTIONS and propagates it to child Node processes; the host AWF CLI loads the same policy. This covers HTTPS, direct TLS/websocket connections, OIDC/model discovery, fetch, and telemetry using those clients.
  • Stage filtered host trust under container-local /run/awf-lib/trust, overlay mounted Debian/RHEL trust directories read-only, and preserve legitimate private/AWF interception CAs. Never rewrite the host trust store. Filter dynamically combined CLI-proxy gateway trust as well.
  • Build all three image-owned gh variants with digest-pinned Go 1.27.3 (CVE-2026-111943), asserting the compiled binary's toolchain metadata while retaining existing source checksums and module assertions.
  • Attest release binaries/bundle/tarball/checksums/container metadata and a signed tag-to-checksums identity. Both bootstrap paths require constrained GitHub build-provenance verification before installing payloads or consuming image digests; remove unsigned/mutable-image fallback paths.

This branch was created from main in a separate worktree. It does not include edits or unrelated commits from the original working directory. The subsequently user-applied CodeQL autofix is preserved.

Validation

  • 217 initial targeted root tests / 11 suites passed, covering trust filtering, same-key cross-signs, hashed-directory fallback, private CA preservation, release verification ordering/negative cases, image wiring and existing affected contracts.
  • 2,650 API-proxy tests / 126 suites passed using its separate Jest configuration.
  • 74 Linux entrypoint tests passed in Docker. The same shell suite has five pre-existing macOS/GNU-tool fixture failures on both unchanged main and this branch; Linux is clean.
  • Actual pinned Linux Node 26 runtime: HTTPS, direct TLS and fetch reject compromised default/extra/explicit trust; private CA connections succeed. Image launcher/child-process propagation also passed when caller NODE_OPTIONS was replaced.
  • Real Linux CAP_SYS_ADMIN chroot-overlay smoke passed: disclosed emSign root rejected, private CA accepted, overlay read-only, original source store unchanged.
  • All three patched Go gh-build targets built successfully; resulting binary reports go1.27.3.
  • Full Squid image built successfully; generated SSL-bump configuration parsed successfully using the rebuilt Squid.
  • TypeScript build/type-check, ESLint, policy synchronization, Markdown checks, shell syntax, whitespace checks, and bundled CLI --version passed.

CI follow-up

Historical positive action tests installed releases lacking the newly required signed identity. They now exercise the real action shell using isolated, locally signed fixture assets and test-only transport/verifier/Docker stand-ins. These fixtures do not validate real GitHub/Sigstore provenance or pull real images. An optional manual attested-version job retains live verification for a genuinely published attested release; production action/installer code has no fixture mode or legacy-release exception.

Fixed npm's native-supported ca: null option to select filtered defaults, rather than throwing or restoring unfiltered trust. Fixed the regression assertion to support Node 20 without tls.getCACertificates. Both Linux Node 20 and Node 26 pass HTTPS/direct TLS/fetch tests including null/default/explicit CA options, and Linux action scenarios accept valid fixtures while rejecting missing metadata and tampered signatures. 42 targeted follow-up regressions passed; a further 10 canonical policy unit cases achieve 100% lines/statements/functions/branches, without relaxing coverage gates.

Compatibility and remaining boundaries

Emergency root distrust is intentionally broader than intermediate revocation: unrelated chains under the four listed roots will also stop validating. Revisit that fallback when upstream runtimes provide adequate intermediate-key revocation. Existing custom/private roots continue to work unless their keys are denylisted.

Older unattested releases now fail bootstrap closed. A trusted, independently installed, attestation-capable gh verifier and trusted initial installer/action are prerequisites. An installer cannot authenticate the script already executing; host clients and Docker-daemon trust must be updated separately.

Full API-proxy/enclave Node builds are blocked locally by npm-registry TLS EOF/ECONNRESET errors; the same transport problem reproduces on the unmodified pinned Node base. The enclave build's distinct null-CA policy regression was reproduced and fixed. Actual Linux trust/runtime paths and the complete API-proxy application suite passed. Not every image or KVM/guest-boot conformance path was built/run locally; fixture tests do not substitute for first-release live provenance validation.

Deployment requires rebuilding/publishing the affected images/rootfs artifacts and updating AWF plus image pins together; existing immutable images and running containers are unchanged. AWF cannot universally repair arbitrary Java keystores, certifi/vendored Python stores, Rust/browser embedded roots, independently selected CA paths, custom trust contexts, or applications disabling verification. This policy is not a new boundary against user commands deliberately overriding their own TLS trust. See docs/security-ca-trust.md and docs/releasing.md for the precise coverage and rollout requirements.

References: Mozilla incident discussion, Go advisory, Node upstream tracking.

Apply a shared SPKI distrust policy to controlled Node and OpenSSL trust paths, stage sanitized host CA stores without modifying host inputs, build gh with patched Go, and authenticate release bootstrap with constrained provenance.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 89097bc0-0800-4855-965e-ceaab0cef6d3
Copilot AI max review requested due to automatic review settings October 20, 2026 16:01
@github-actions

github-actions Bot commented Oct 20, 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-10343 artifact from the workflow run
  2. Unzip and open index.html in your browser

Built from commit a61346c

Comment thread scripts/security/tls-runtime-smoke.cjs Fixed
Comment thread scripts/security/tls-runtime-smoke.cjs Fixed
@lpcox

lpcox commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator Author

@copilot address review feedback

lpcox and others added 2 commits October 20, 2026 09:11
…zation'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Use isolated signed action fixtures while preserving mandatory production provenance. Retain an optional real-release verification job. Support Node's null CA default semantics using filtered roots, and exercise the Node 20 fallback without newer TLS APIs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 89097bc0-0800-4855-965e-ceaab0cef6d3
Comment thread scripts/security/filter-ca-store.sh Outdated
Comment on lines +42 to +45
if grep -Fqx "$key" "$policy_dir/distrusted-spki.txt"; then
echo "AWF trust policy: removed distrusted CA key $key" >&2
continue
fi
@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.40% 93.41% ➡️ +0.01%
Statements 91.96% 91.96% ➡️ +0.00%
Functions 91.16% 91.15% ➡️ -0.01%
Branches 85.99% 85.95% 📉 -0.04%
📁 Per-file Coverage Changes (3 files)
File Lines (Before → After) Statements (Before → After)
src/enclave/host-executor-server.ts 91.0% → 91.0% (+0.00%) 89.7% → 90.0% (+0.29%)
src/nvx/one-shot-adapter.ts 82.9% → 83.4% (+0.56%) 80.2% → 80.7% (+0.52%)
src/cli.ts 85.7% → 87.5% (+1.79%) 85.7% → 87.5% (+1.79%)
✨ New Files (1 files)
  • src/tls-trust-policy.ts: 94.1% lines

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.

🟡 Changes recommended

Confirmed trust-handling and runtime regressions need correction before this security mitigation can be deployed safely.

10 open issues
What changed in this PR

Mitigates disclosed eMudhra keys across AWF-controlled TLS trust and release installation paths.

Changes:

  • Centralizes CA distrust and distributes filtered OpenSSL/Node trust across images and chroots.
  • Updates image-owned gh toolchains and requires authenticated release metadata and image pins.
  • Adds regression checks and rollout documentation.
File Description
tests/​entrypoint-phase-functions.test.sh Tests filtered chroot trust staging.
src/​tls-trust-policy.ts Defines canonical Node distrust policy.
src/​squid/​ssl-bump.ts Configures filtered upstream trust.
src/​squid-config-ssl-bump.test.ts Checks Squid trust configuration.
src/​cli.ts Loads host CLI trust policy.
scripts/​security/​tls-runtime-smoke.cjs Exercises Node TLS enforcement.
scripts/​security/​install-system-trust.sh Installs filtered system trust.
scripts/​security/​install-node-trust.sh Installs Node preload launcher.
scripts/​security/​generate-trust-policy.cjs Generates synchronized component policies.
scripts/​security/​fixtures/​emsign-ecc-g3.pem Supplies distrusted-root fixture.
scripts/​security/​filter-ca-store.sh Filters certificates by key.
scripts/​security/​chroot-trust-smoke.sh Checks Linux trust overlays.
scripts/​security/​ca-trust.test.ts Covers filtering and image wiring.
scripts/​ci/​release-bootstrap-provenance.test.ts Covers authenticated release bootstrap.
README.md Links distrust documentation.
install.sh Requires authenticated release provenance.
docs/​security-ca-trust.md Documents coverage and rollout boundaries.
docs/​releasing.md Documents release authentication requirements.
containers/​trust/​node-trust.cjs Shared generated Node policy.
containers/​trust/​install-system-trust.sh Shared system-trust installer.
containers/​trust/​install-node-trust.sh Shared Node launcher installer.
containers/​trust/​filter-ca-store.sh Shared certificate filter.
containers/​trust/​distrusted-spki.txt Shared key denylist.
containers/​squid/​trust/​install-system-trust.sh Generated system-trust installer.
containers/​squid/​trust/​filter-ca-store.sh Generated certificate filter.
containers/​squid/​trust/​distrusted-spki.txt Generated key denylist.
containers/​squid/​Dockerfile Filters Squid image trust.
containers/​router/​trust/​install-system-trust.sh Generated system-trust installer.
containers/​router/​trust/​filter-ca-store.sh Generated certificate filter.
containers/​router/​trust/​distrusted-spki.txt Generated key denylist.
containers/​router/​Dockerfile Configures filtered router trust.
containers/​router/​.dockerignore Includes trust build files.
containers/​gh-aw-node/​trust/​node-trust.cjs Generated Node policy.
containers/​gh-aw-node/​trust/​install-system-trust.sh Generated system-trust installer.
containers/​gh-aw-node/​trust/​install-node-trust.sh Generated Node launcher installer.
containers/​gh-aw-node/​trust/​filter-ca-store.sh Generated certificate filter.
containers/​gh-aw-node/​trust/​distrusted-spki.txt Generated key denylist.
containers/​gh-aw-node/​Dockerfile Installs system and Node filtering.
containers/​enclave/​Dockerfile Adds trust filtering across enclave stages.
containers/​dind-ubuntu/​trust/​node-trust.cjs Generated Node policy.
containers/​dind-ubuntu/​trust/​install-system-trust.sh Generated system-trust installer.
containers/​dind-ubuntu/​trust/​install-node-trust.sh Generated Node launcher installer.
containers/​dind-ubuntu/​trust/​filter-ca-store.sh Generated certificate filter.
containers/​dind-ubuntu/​trust/​distrusted-spki.txt Generated key denylist.
containers/​dind-ubuntu/​Dockerfile Installs DinD trust filtering.
containers/​cloud-hypervisor/​Dockerfile Filters guest-image trust stores.
containers/​cli-proxy/​trust/​node-trust.cjs Generated Node policy.
containers/​cli-proxy/​trust/​install-system-trust.sh Generated system-trust installer.
containers/​cli-proxy/​trust/​install-node-trust.sh Generated Node launcher installer.
containers/​cli-proxy/​trust/​filter-ca-store.sh Generated certificate filter.
containers/​cli-proxy/​trust/​distrusted-spki.txt Generated key denylist.
containers/​cli-proxy/​entrypoint.sh Filters combined gateway trust.
containers/​cli-proxy/​Dockerfile Updates Go and installs filtering.
containers/​build-tools/​trust/​install-system-trust.sh Generated system-trust installer.
containers/​build-tools/​trust/​filter-ca-store.sh Generated certificate filter.
containers/​build-tools/​trust/​distrusted-spki.txt Generated key denylist.
containers/​build-tools/​Dockerfile Updates Go and filters trust.
containers/​api-proxy/​trust/​node-trust.cjs Generated Node policy.
containers/​api-proxy/​trust/​install-system-trust.sh Generated system-trust installer.
containers/​api-proxy/​trust/​install-node-trust.sh Generated Node launcher installer.
containers/​api-proxy/​trust/​filter-ca-store.sh Generated certificate filter.
containers/​api-proxy/​trust/​distrusted-spki.txt Generated key denylist.
containers/​api-proxy/​Dockerfile Installs proxy trust enforcement.
containers/​agent/​trust/​node-trust.cjs Generated Node policy.
containers/​agent/​trust/​install-system-trust.sh Generated system-trust installer.
containers/​agent/​trust/​install-node-trust.sh Generated Node launcher installer.
containers/​agent/​trust/​filter-ca-store.sh Generated certificate filter.
containers/​agent/​trust/​distrusted-spki.txt Generated key denylist.
containers/​agent/​entrypoint.sh Stages filtered host-trust overlays.
containers/​agent/​Dockerfile.minimal Adds minimal-image trust filtering.
containers/​agent/​Dockerfile Updates Go and installs filtering.
action.yml Verifies releases and requires image digests.
.github/​workflows/​release.yml Attests payloads and release identity.

Review effort: Max

Comment thread containers/agent/entrypoint.sh Outdated
echo "[entrypoint][WARN] SSL Bump enabled but CA certificate not found"
fi
fi
sh /opt/awf/trust/install-system-trust.sh
Comment thread containers/agent/entrypoint.sh Outdated
Comment on lines +1147 to +1148
for candidate in "${directories[@]}" \
/host/etc/ssl/cert.pem /host/etc/pki/tls/cert.pem; do
cp /opt/awf/trust/node-trust.cjs "$trust/node-trust.cjs"
# The /run staging root is container-local; none of these operations writes
# through the read-only host /etc bind mounts.
for candidate in "${directories[@]}"; do
Comment thread containers/enclave/Dockerfile Outdated
Comment on lines +76 to +78
RUN apk add --no-cache openssl ca-certificates \
&& sh /opt/awf/trust/install-system-trust.sh \
&& sh /opt/awf/trust/install-node-trust.sh
Comment thread install.sh
#
# Requirements:
# - curl
# - A trusted gh CLI with attestation verify support (and GitHub authentication)
Comment thread scripts/security/ca-trust.test.ts Outdated
const script = `
const tls = require('tls'), {X509Certificate,createHash} = require('crypto');
const {distrustedSpkis} = require(${JSON.stringify(path.join(policyDir, 'node-trust.cjs'))});
for (const pem of tls.getCACertificates('default')) {
Comment on lines +28 to +34
awk -v dir="$work" '
/-----BEGIN CERTIFICATE-----/ { if (active) exit 1; active=1; count++; file=dir "/cert-" count ".pem" }
active { print > file }
/-----END CERTIFICATE-----/ { if (!active) exit 1; close(file); active=0 }
/-----BEGIN TRUSTED CERTIFICATE-----/ { exit 1 }
END { if (active || !count) exit 1 }
' "$work/input.pem" || { echo "AWF trust policy: invalid or empty PEM CA store" >&2; exit 1; }
Comment thread src/tls-trust-policy.ts Outdated
Comment on lines +54 to +56
const defaults = tls.getCACertificates
? [...tls.getCACertificates('default')]
: [...tls.rootCertificates];
Comment thread src/tls-trust-policy.ts Outdated
Comment on lines +68 to +71
tls.createSecureContext = (options = {}) => createSecureContext({
...options,
ca: options.ca === undefined ? filteredDefaults : filterCaCertificates(options.ca),
});
Comment on lines +222 to +225
cmp "${host_root}/etc/pki/tls/certs/ca-bundle.crt" "${tmp_dir}/original.crt"
grep -q 'remount,ro,bind' "${tmp_dir}/mounts"
grep -q '/etc/pki/tls/certs' "${tmp_dir}/mounts"
[ "${SSL_CERT_DIR}" = "/run/awf-lib/trust/certs" ]
lpcox and others added 2 commits October 20, 2026 09:29
Exercise modern and legacy Node trust APIs, null/default/explicit CA options, malformed or unreadable stores, empty results, and idempotent installation. Cover every canonical policy branch without weakening coverage gates.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 89097bc0-0800-4855-965e-ceaab0cef6d3
@github-actions

Copy link
Copy Markdown
Contributor

✅ Copilot review passed with no inline comments.

@lpcox Add the ready-for-aw label to this PR to trigger agentic CI smoke tests.

Copilot AI commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

@copilot address review feedback

Added fail-closed policy validation and explicit grep error handling, with regression tests and synchronized copies. Committed as f10dbc6.

@lpcox
lpcox enabled auto-merge (squash) October 20, 2026 16:33
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

✅ Build Test Suite completed successfully!

Generated by Build Test Suite for #10343

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

✅ Smoke Claude passed

Generated by Smoke Claude for #10343

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

✅ Security Guard completed successfully!

Security Guard

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 Security Guard · haiku45 · 11 AIC · ⊞ 6.0K · ◷

Generated by Security Guard for #10343

@github-actions

github-actions Bot commented Oct 20, 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 20, 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 20, 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

Copy link
Copy Markdown
Contributor

🪪 Smoke Copilot BYOK AOAI (Entra) is testing Azure OpenAI BYOK (Entra / GitHub OIDC) mode on this pull request...

@github-actions

Copy link
Copy Markdown
Contributor

🔑 Smoke Copilot BYOK AOAI (api-key) is testing Azure OpenAI BYOK (api-key) mode on this pull request...

@github-actions

Copy link
Copy Markdown
Contributor

🪪 Smoke Copilot BYOK AOAI (Entra) is testing Azure OpenAI BYOK (Entra / GitHub OIDC) mode on this pull request...

@github-actions

github-actions Bot commented Oct 20, 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 20, 2026 •

Copy link
Copy Markdown
Contributor

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

Tested by Smoke Chroot

@github-actions

Copy link
Copy Markdown
Contributor

🔑 Smoke Copilot BYOK AOAI (api-key) is testing Azure OpenAI BYOK (api-key) mode on this pull request...

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

✅ Build Test Suite completed successfully!

Generated by Build Test Suite for #10343

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

✅ Smoke Gemini completed. All facets verified. 💎

💎 Faceted by Smoke Gemini

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Security Guard has started processing this pull request

@github-actions

github-actions Bot commented Oct 20, 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 20, 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 · 15.2 AIC · ⊞ 22.8K · ◷

🔮 The oracle has spoken through Smoke Codex

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

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

🔑 BYOK report filed by Smoke Copilot BYOK

Comment on lines +1142 to +1146
local directories=(
/host/etc/ssl/certs
/host/etc/pki/ca-trust/extracted/pem
/host/etc/pki/tls/certs
)
@github-actions

Copy link
Copy Markdown
Contributor

Smoke test (Copilot):

  • ✅ GitHub MCP: "Upgrade gh-aw to v0.92.6 prerelease"
  • ✅ GitHub.com connectivity (200)
  • ✅ 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

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

EGRESS_RESULT allow=pass deny=pass

  • ✅ Allowed domain (api.github.com): 200
  • ✅ Blocked domain (example.com): blocked (TLS error, curl exit non-zero)
  • Overall: PASS

cc @lpcox

🛡️ Egress verdict from Smoke Copilot Network Isolation
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 #10343 · claude · haiku45 · 34.1 AIC · ⊞ 6.1K · ◷
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

Smoke services: ✅ Redis PONG · ✅ pg_isready · ✅ SELECT 1 → PASS

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

@github-actions

Copy link
Copy Markdown
Contributor

OTEL smoke test

  • ✅ S1 Module loading: otel.js loads (exports startRequestSpan, setTokenAttributes, setBudgetAttributes, endSpan, endSpanError, shutdown, isEnabled, ...)
  • ✅ S2 Tests: 3 suites, 68 tests passed
  • ✅ S3 Env forwarding: trace context in env-passthrough.ts; OTEL vars in api-proxy-env-config.ts
  • ✅ S4 Token tracker: onUsage hook present in token-tracker-http.js
  • ✅ S5 Diagnostics: /tmp/gh-aw/otel.jsonl exists with 1 line (span export recorded)

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

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Copilot BYOK (Direct) Mode ✅ PASS

Running in direct BYOK mode via api-proxy → api.githubcopilot.com

🔑 BYOK report filed by Smoke Copilot BYOK
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 ✅ all passed ✅ PASS
Node.js execa ✅ all passed ✅ PASS
Node.js p-limit ✅ all passed ✅ PASS
Rust fd ✅ 1/1 passed ✅ PASS
Rust zoxide ✅ 1/1 passed ✅ PASS

Overall: 4/8 ecosystems passed — FAIL

Failures

  • Bun / Deno: the install-script command (curl ... | bash / | sh) was denied by the sandbox permission policy, so the tools were never installed and the tests did not run.
  • .NET: dotnet restore crashed with System.IO.IOException ... lstat("/run/user/1001") ENOENT in NuGet migrations (the mutex needs /run/user/<uid>, which doesn't exist on this runner).
  • Java: Maven failed with LocalRepositoryNotAccessibleException, so compile and test did not run. I did not modify the Maven config beyond creating ~/.m2.

All 8 repositories cloned successfully. The build-test label was not added because of the failures.

Generated by Build Test Suite for #10343 · copilot · auto · 21.5 AIC · ⊞ 12K · ◷
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 ✅

Node.js differs, so the tests did not all pass and the smoke-chroot label was not added. The chroot's v2.98.0 looks odd for a Node version, so the chroot's node may be resolving to a different binary.

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

@github-actions

Copy link
Copy Markdown
Contributor

PR titles:

  • Extract backend-neutral enclave execution policy and lifecycle
  • Avoid root-owned placeholders for missing credential files

✅ GitHub merged PRs
✅ GitHub PR details
❌ Playwright
✅ File write/read
❌ Discussion lookup
✅ Build AWF

Overall status: FAIL

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

@lpcox
lpcox enabled auto-merge (squash) October 20, 2026 17:33
@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Gemini Engine Validation

  • Last merged PRs:
    • Extract backend-neutral enclave execution policy and lifecycle
    • Avoid root-owned placeholders for missing credential files
  • GitHub MCP Testing: ✅
  • GitHub.com Connectivity: ❌
  • File Writing Testing: ✅
  • Bash Tool Testing: ✅
  • Overall status: FAIL

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

@lpcox
lpcox merged commit a6e3ce9 into main Oct 20, 2026
155 of 162 checks passed
@lpcox
lpcox deleted the lpcox-ca-compromise-mitigation branch October 20, 2026 17:42

This branch had an error being deployed

1 failed deployment
aoai-model — 84e1aae3 Deployed Oct 20, 2026 by lpcox via conclusion #2064
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.

4 participants