Skip to content

feat: add sealed probes for private repositories - #6673

Merged
lpcox merged 7 commits into
mainfrom
feat/sealed-probes
Jul 28, 2026
Merged

feat: add sealed probes for private repositories#6673
lpcox merged 7 commits into
mainfrom
feat/sealed-probes

Conversation

@lpcox

@lpcox lpcox commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add top-level sealedProbes configuration with schema, stdin-config, defaults, validation, and fail-closed preflight support
  • stage credential-isolated private repository seeds before any runtime container starts
  • run an offline trusted broker and fresh writable one-repository probe sandbox for every invocation
  • expose a fixed agent-local sealed-probe CLI and generated skill with exactly three caller-declared outcomes plus reserved ERROR
  • publish and version the new sealed-probe container image through the release workflow

Security model

The broker and probe have no network access. Private repository credentials are used only by trusted host staging and are excluded from the primary agent. Each probe receives only a fresh ephemeral repository copy and a read-only script, with a read-only root filesystem, non-root identity, dropped capabilities, seccomp, resource bounds, and no Docker socket.

The broker validates the request before launch, enforces the invocation budget, rejects non-zero exits and invalid output, and emits only canonical {"result":"..."} JSON. All failure paths collapse to {"result":"ERROR"} with the same exit status and no diagnostics exposed to the agent.

Closes #6661

Add trusted offline repository staging and a no-network probe broker.

Run Python in hardened per-invocation sandboxes and expose a narrow CLI
with four-symbol result closure.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 21364940-ae16-48b5-a577-321ef7f3fc74
Copilot AI review requested due to automatic review settings July 28, 2026 02:45
@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Documentation Preview

Documentation build failed for this PR. View logs.

Built from commit fed2242

Comment thread src/sealed-probe/skill.test.ts Fixed
Comment thread src/sealed-probe/staging.test.ts Fixed
Comment thread src/sealed-probe/staging.ts Fixed
@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 99.11% 98.82% 📉 -0.29%
Statements 99.03% 98.48% 📉 -0.55%
Functions 99.53% 99.24% 📉 -0.29%
Branches 95.67% 95.15% 📉 -0.52%
📁 Per-file Coverage Changes (4 files)
File Lines (Before → After) Statements (Before → After)
src/services/optional-services.ts 100.0% → 100.0% (+0.00%) 100.0% → 99.1% (-0.94%)
src/commands/main-action.ts 99.3% → 99.3% (+0.01%) 98.7% → 98.7% (+0.02%)
src/commands/build-config.ts 97.1% → 97.2% (+0.08%) 97.1% → 97.2% (+0.08%)
src/log-directory-setup.ts 96.2% → 100.0% (+3.78%) 96.3% → 100.0% (+3.71%)
✨ New Files (10 files)
  • src/parsers/sealed-probe-parser.ts: 100.0% lines
  • src/sealed-probe/manager.ts: 91.5% lines
  • src/sealed-probe/paths.ts: 100.0% lines
  • src/sealed-probe/preflight.ts: 88.7% lines
  • src/sealed-probe/protocol.ts: 93.0% lines
  • src/sealed-probe/skill.ts: 100.0% lines
  • src/sealed-probe/staging.ts: 95.7% lines
  • src/sealed-probe/types.ts: 100.0% lines
  • src/services/sealed-probe-service.ts: 100.0% lines
  • src/types/sealed-probe-options.ts: 100.0% 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.

Pull request overview

Adds sealed probes for bounded computation over staged private repositories.

Changes:

  • Adds configuration, validation, staging, protocol, broker, and lifecycle integration.
  • Adds hardened probe containers, agent wrapper/skill, and extensive tests.
  • Publishes the sealed-probe image through the release workflow.
Show a summary per file
File Description
src/types/wrapper-config.ts Adds sealed-probe options.
src/types/sealed-probe-options.ts Defines configuration and defaults.
src/types/index.ts Exports sealed-probe types.
src/services/sealed-probe-service.ts Builds broker and agent wiring.
src/services/sealed-probe-service.test.ts Tests service assembly.
src/services/sealed-probe-compose.test.ts Tests Compose integration.
src/services/optional-services.ts Registers the optional broker.
src/services/agent-volumes/docker-socket.ts Shares Docker socket resolution.
src/services/agent-environment/excluded-vars.ts Excludes GitHub tokens.
src/services/agent-environment/excluded-vars.test.ts Tests credential exclusion.
src/sealed-probe/wrapper.test.ts Tests agent wrapper behavior.
src/sealed-probe/workflow-integration.test.ts Tests staging order.
src/sealed-probe/types.ts Defines staging data types.
src/sealed-probe/skill.ts Generates agent guidance.
src/sealed-probe/skill.test.ts Tests generated guidance.
src/sealed-probe/protocol.ts Implements protocol validation.
src/sealed-probe/protocol.test.ts Tests protocol behavior.
src/sealed-probe/protocol-parity.test.ts Checks TS/JS parity.
src/sealed-probe/probe-seccomp.test.ts Checks seccomp invariants.
src/sealed-probe/preflight.ts Adds fail-closed preflight.
src/sealed-probe/preflight.test.ts Tests preflight checks.
src/sealed-probe/paths.ts Defines artifact paths.
src/sealed-probe/paths.test.ts Tests path derivation.
src/sealed-probe/staging.ts Stages private repository seeds.
src/sealed-probe/staging.test.ts Tests secure staging.
src/sealed-probe/manager.ts Orchestrates setup and teardown.
src/sealed-probe/manager.test.ts Tests lifecycle management.
src/sealed-probe/broker.test.ts Tests broker and launcher behavior.
src/sealed-probe/end-to-end.test.ts Tests wrapper-to-broker flow.
src/schema.test.ts Registers the schema section.
src/parsers/sealed-probe-parser.ts Normalizes configuration.
src/parsers/sealed-probe-parser.test.ts Tests normalization.
src/image-tag.ts Adds sealed-probe digests.
src/image-tag.test.ts Tests digest handling.
src/container-start.test.ts Updates cleanup expectations.
src/container-lifecycle.ts Cleans conflicting brokers.
src/constants.ts Defines the broker name.
src/config-mapper.ts Maps file configuration.
src/config-file.ts Adds raw config typing.
src/config-file-sealed-probes-validation.test.ts Tests schema validation.
src/config-file-mapping.test.ts Tests config mapping.
src/config-file-loading.test.ts Tests stdin loading.
src/commands/main-action.ts Integrates lifecycle cleanup.
src/commands/build-config.ts Builds normalized configuration.
src/commands/build-config.test.ts Tests config construction.
src/cli-workflow.ts Stages seeds before startup.
src/awf-config-schema.json Adds runtime schema.
docs/awf-config.schema.json Publishes configuration schema.
docs/awf-config-spec.md Documents the security model.
containers/sealed-probe/probe-seccomp.json Defines probe syscall policy.
containers/sealed-probe/Dockerfile Builds broker/probe image.
containers/sealed-probe/broker/workspace.js Manages invocation copies.
containers/sealed-probe/broker/server.js Serves the Unix-socket API.
containers/sealed-probe/broker/protocol.js Implements broker protocol.
containers/sealed-probe/broker/probe-runner.js Launches probe containers.
containers/sealed-probe/broker/healthcheck.js Checks broker health.
containers/sealed-probe/broker/framing.js Parses bounded requests.
containers/sealed-probe/broker/config.js Loads broker configuration.
containers/sealed-probe/broker/broker.js Coordinates probe execution.
containers/sealed-probe/broker/audit.js Writes protected diagnostics.
containers/agent/sealed-probe-wrapper.sh Adds the agent CLI.
containers/agent/entrypoint.sh Activates the CLI.
containers/agent/Dockerfile Packages the wrapper.
CLAUDE.md Documents the architecture.
.github/workflows/release.yml Publishes and signs the image.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 65/65 changed files
  • Comments generated: 10
  • Review effort level: Medium

Comment thread src/sealed-probe/manager.ts
Comment thread src/sealed-probe/manager.ts
Comment thread containers/sealed-probe/broker/server.js Outdated
Comment thread src/services/sealed-probe-service.ts
Comment thread src/sealed-probe/staging.ts
Comment thread containers/sealed-probe/Dockerfile Outdated
Comment thread containers/sealed-probe/broker/probe-runner.js
Comment thread containers/sealed-probe/broker/probe-runner.js
Comment thread src/sealed-probe/preflight.ts
Comment thread containers/sealed-probe/broker/broker.js Outdated
@lpcox

lpcox commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator Author

@copilot Fix the code for all comments in this review thread.

When a review comment includes a suggested change, apply the suggestion exactly.

Do not make changes beyond what is described in the linked review thread.

Copilot AI commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

@copilot Fix the code for all comments in this review thread.

When a review comment includes a suggested change, app...

All ten review comments addressed in commit fix: sealed probe security and isolation review fixes:

  1. sbx runtime removed — dropped from SealedProbeRuntime, both JSON schemas, config-file.ts, and all tests; every sbx configuration now fails closed at preflight with an unsupported-runtime error.

  2. CodeQL TOCTOU racesstaging.ts:278 uses try/catch around readFileSync instead of existsSync + read; test files use openSync(O_RDONLY | O_NOFOLLOW) + fstatSync + readFileSync(fd).

  3. Timeout covers workspace creation — deadline captured before createInvocationWorkspace (which calls the synchronous cpSync); if the copy already exhausted the budget the broker returns ERROR immediately; remaining budget passed as timeoutMs to runProbeContainer.

  4. /health removed from agent-visible socket — the route is gone; broker writes a broker.ready file after listenOnSocket; healthcheck.js checks that file with fs.accessSync.

  5. Staging token via file, not envAWF_SEALED_PROBE_STAGING_TOKEN_FILE carries the path to a 0600 file; the askpass helper does cat "${file}"; the token value never appears in any child process's environment (and thus not in /proc/<pid>/environ); token file cleaned up in finally.

  6. Work-directory symlink checkprepareSealedProbes calls lstatSync on config.workDir before prepareDirectories; if it is a symlink the function throws immediately.

  7. Masking mounts — an empty sealed-probes-mask/ directory (sibling of sealed-probes/) is mounted over the sealed-probe root for both bare and /host-prefixed paths; isSealedProbeAgentMount recognises the new masking targets.

  8. Aggregate storage bound/probe is now a size-limited tmpfs (256 MiB); the seed repo is a separate read-only bind mount at /probe/repo; the output is a pre-created bind-mounted file at /probe/out; createInvocationWorkspace makes the broker-side repo copy owner-writable so cleanup succeeds.

  9. Separate probe imageDockerfile is now a two-stage build: probe stage (python:3.12-alpine, no Node/docker-cli/apk) tagged as sealed-probe; broker stage (node:22-alpine + docker-cli) tagged as sealed-probe-broker; resolveSealedProbeImages returns both refs; IMAGE_DIGEST_KEYS includes sealed-probe-broker.

  10. SKILL.md at standard discovery pathentrypoint.sh copies the file from $AWF_SEALED_PROBE_SKILL into ~/.github/skills/sealed-probe/SKILL.md (both chroot and non-chroot paths), the path scanned by GitHub Copilot skill discovery.

Copilot finished work on behalf of lpcox July 28, 2026 03:43
Build and publish both container targets, keep readiness broker-private,
and materialize writable repository copies inside bounded tmpfs.

Add a real Docker isolation integration test for the probe runtime.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 21364940-ae16-48b5-a577-321ef7f3fc74
@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.

Comment thread src/sealed-probe/staging.test.ts Fixed
Validate opened descriptors directly before reading credential-scan fixtures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 21364940-ae16-48b5-a577-321ef7f3fc74
@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 99.11% 98.76% 📉 -0.35%
Statements 99.03% 98.41% 📉 -0.62%
Functions 99.53% 99.13% 📉 -0.40%
Branches 95.67% 95.03% 📉 -0.64%
📁 Per-file Coverage Changes (4 files)
File Lines (Before → After) Statements (Before → After)
src/services/optional-services.ts 100.0% → 100.0% (+0.00%) 100.0% → 99.1% (-0.93%)
src/commands/main-action.ts 99.3% → 99.3% (+0.01%) 98.7% → 98.7% (+0.02%)
src/commands/build-config.ts 97.1% → 97.2% (+0.08%) 97.1% → 97.2% (+0.08%)
src/log-directory-setup.ts 96.2% → 100.0% (+3.78%) 96.3% → 100.0% (+3.71%)
✨ New Files (10 files)
  • src/parsers/sealed-probe-parser.ts: 100.0% lines
  • src/sealed-probe/manager.ts: 88.5% lines
  • src/sealed-probe/paths.ts: 100.0% lines
  • src/sealed-probe/preflight.ts: 88.7% lines
  • src/sealed-probe/protocol.ts: 93.0% lines
  • src/sealed-probe/skill.ts: 100.0% lines
  • src/sealed-probe/staging.ts: 95.9% lines
  • src/sealed-probe/types.ts: 100.0% lines
  • src/services/sealed-probe-service.ts: 95.3% lines
  • src/types/sealed-probe-options.ts: 100.0% lines

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

1 similar comment
@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 99.11% 98.76% 📉 -0.35%
Statements 99.03% 98.41% 📉 -0.62%
Functions 99.53% 99.13% 📉 -0.40%
Branches 95.67% 95.03% 📉 -0.64%
📁 Per-file Coverage Changes (4 files)
File Lines (Before → After) Statements (Before → After)
src/services/optional-services.ts 100.0% → 100.0% (+0.00%) 100.0% → 99.1% (-0.93%)
src/commands/main-action.ts 99.3% → 99.3% (+0.01%) 98.7% → 98.7% (+0.02%)
src/commands/build-config.ts 97.1% → 97.2% (+0.08%) 97.1% → 97.2% (+0.08%)
src/log-directory-setup.ts 96.2% → 100.0% (+3.78%) 96.3% → 100.0% (+3.71%)
✨ New Files (10 files)
  • src/parsers/sealed-probe-parser.ts: 100.0% lines
  • src/sealed-probe/manager.ts: 88.5% lines
  • src/sealed-probe/paths.ts: 100.0% lines
  • src/sealed-probe/preflight.ts: 88.7% lines
  • src/sealed-probe/protocol.ts: 93.0% lines
  • src/sealed-probe/skill.ts: 100.0% lines
  • src/sealed-probe/staging.ts: 95.9% lines
  • src/sealed-probe/types.ts: 100.0% lines
  • src/services/sealed-probe-service.ts: 95.3% lines
  • src/types/sealed-probe-options.ts: 100.0% lines

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

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

Copilot-Session: 21364940-ae16-48b5-a577-321ef7f3fc74
Comment thread src/sealed-probe/manager.ts Fixed
Comment thread src/sealed-probe/skill.ts Fixed
@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 99.11% 99.20% 📈 +0.09%
Statements 99.03% 99.10% 📈 +0.07%
Functions 99.53% 99.45% 📉 -0.08%
Branches 95.67% 95.75% 📈 +0.08%
📁 Per-file Coverage Changes (4 files)
File Lines (Before → After) Statements (Before → After)
src/services/optional-services.ts 100.0% → 100.0% (+0.00%) 100.0% → 99.1% (-0.93%)
src/commands/main-action.ts 99.3% → 99.3% (+0.01%) 98.7% → 98.7% (+0.02%)
src/commands/build-config.ts 97.1% → 97.2% (+0.08%) 97.1% → 97.2% (+0.08%)
src/log-directory-setup.ts 96.2% → 100.0% (+3.78%) 96.3% → 100.0% (+3.71%)
✨ New Files (10 files)
  • src/parsers/sealed-probe-parser.ts: 100.0% lines
  • src/sealed-probe/manager.ts: 100.0% lines
  • src/sealed-probe/paths.ts: 100.0% lines
  • src/sealed-probe/preflight.ts: 100.0% lines
  • src/sealed-probe/protocol.ts: 100.0% lines
  • src/sealed-probe/skill.ts: 100.0% lines
  • src/sealed-probe/staging.ts: 100.0% lines
  • src/sealed-probe/types.ts: 100.0% lines
  • src/services/sealed-probe-service.ts: 100.0% lines
  • src/types/sealed-probe-options.ts: 100.0% lines

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

@lpcox

lpcox commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator Author

@copilot address the failed codeql ci checks

Copilot AI commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

@copilot address the failed codeql ci checks

Fixed in the latest commit. Both writeSeedMap (manager.ts:81) and writeSealedProbeSkill (skill.ts:136) now open the target file with O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW before writing, ensuring the file is created atomically without following symlinks and without racing an existing file. CodeQL reports 0 alerts after this change.

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

🔌 Smoke Services — All services reachable! ✅

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Smoke Copilot BYOK completed. Copilot BYOK mode operational. 🔓

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Contribution Check failed. Please review the logs for details.

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Build Test Suite completed successfully!

@github-actions

github-actions Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test Results — Services Connectivity

Check Result
Redis PING ❌ Name resolution failed (host.docker.internal unreachable)
PostgreSQL pg_isready ❌ No response
PostgreSQL SELECT 1 ❌ Name resolution failed

Overall: FAILhost.docker.internal does not resolve in this environment. Service containers are not reachable from the runner.

🔌 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) ✅ PASS

Test Results:

  • ✅ GitHub MCP connectivity: API accessible
  • ✅ GitHub.com connectivity: HTTP 200
  • ✅ File write/read: OK
  • ✅ BYOK inference: Direct mode via api-proxy → api.githubcopilot.com working

Mode: Running in direct BYOK mode (COPILOT_PROVIDER_API_KEY) with api-proxy sidecar injecting credentials.

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

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Claude Engine Validation

Check Result
API Status ✅ PASS
GH Check ✅ PASS
File Status ✅ PASS

Overall result: PASS

Generated by Smoke Claude for #6673 · haiku45 · 60 AIC · ⊞ 3.3K ·
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

@lpcox

Smoke Test: ✅ MCP, ✅ GitHub.com, ✅ File I/O, ✅ BYOK

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)

PASS

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

@github-actions

This comment has been minimized.

@github-actions

Copy link
Copy Markdown
Contributor

feat: add sealed probes for private repositories
✅ GitHub PR check
✅ GitHub title check
✅ File write/read
✅ Discussion lookup
✅ Build
Overall: PASS

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • registry.npmjs.org

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "registry.npmjs.org"

See Network Configuration for more information.

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

@github-actions

Copy link
Copy Markdown
Contributor

🔬 Smoke Test Results

Test Status
GitHub MCP connectivity ✅ PASS (MCP responded, secrecy policy applied)
GitHub.com HTTP connectivity ✅ PASS (HTTP 200)
File write/read ✅ PASS (pre-step verified)

Overall: PASS

Triggered on PR #6673 by @lpcox

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

@github-actions

Copy link
Copy Markdown
Contributor

🔥 Smoke Test: Copilot Network Isolation

EGRESS_RESULT allow=pass deny=pass

  • ✅ Allowed domain (api.github.com): allowed=200
  • ✅ Blocked domain (example.com): OK: example.com was blocked (403 from proxy)

Overall: PASS

@lpcox

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • example.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "example.com"

See Network Configuration for more information.

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

@github-actions

Copy link
Copy Markdown
Contributor

Chroot Version Comparison Results

Runtime Host Version Chroot Version Match?
Python Python 3.12.13 Python 3.12.13 ✅ YES
Node.js v24.18.0 v22.23.1 ❌ NO
Go go1.22.12 go1.22.12 ✅ YES

Overall: ❌ FAILED — Node.js version mismatch (host: v24.18.0, chroot: v22.23.1).

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

@github-actions

Copy link
Copy Markdown
Contributor

🔭 Smoke Test: API Proxy OpenTelemetry Tracing

Scenario Status Notes
S1: Module Loading otel.js loads successfully; exports: startRequestSpan, setTokenAttributes, setBudgetAttributes, endSpan, endSpanError, shutdown, isEnabled
S2: Test Suite 59 tests passed across otel.test.js + otel-fanout.test.js (0 failures)
S3: Env Var Forwarding observability-environment.ts forwards all OTEL_* vars to api-proxy via keyPredicate: (key) => key.startsWith('OTEL_')
S4: Token Tracker Integration token-tracker-http.js onUsage callback exists and is invoked after token normalization (line 406)
S5: OTEL Diagnostics isEnabled export present; graceful degradation confirmed when OTEL_EXPORTER_OTLP_ENDPOINT is unset (no errors)

All 5 scenarios pass. GenAI semantic conventions (gen_ai.usage.input_tokens, gen_ai.usage.output_tokens, gen_ai.provider.name) are correctly set on spans.

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

@github-actions

Copy link
Copy Markdown
Contributor

🔬 Smoke Test: Docker Sbx Validation

Test Result
GitHub MCP connectivity ⚠️ Filtered by secrecy policy
GitHub.com HTTP ⚠️ Pre-step vars unexpanded
File write/read ⚠️ Pre-step vars unexpanded

Overall: ⚠️ INCONCLUSIVE — pre-computed step outputs were not expanded (template vars literal). MCP data filtered by secrecy policy.

cc @lpcox

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

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test Results

✅ GitHub MCP Testing
✅ GitHub.com Connectivity (Status 200)
✅ File Writing Testing
✅ Bash Tool Testing

Overall status: PASS

Warning

Firewall blocked 1 domain

The following domain was blocked by the firewall during workflow execution:

  • localhost

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "localhost"

See Network Configuration for more information.

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

@github-actions

Copy link
Copy Markdown
Contributor

@lpcox
Smoke Test Results:

  • GitHub MCP Test: ✅
  • GitHub.com connectivity: ✅
  • 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: PASS

🔑 BYOK (AOAI api-key) report filed by Smoke Copilot BYOK AOAI (api-key)
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 1/1 passed ✅ PASS
Bun hono 1/1 passed ✅ PASS
C++ fmt N/A ✅ PASS
C++ json N/A ✅ PASS
Deno oak N/A 1/1 passed ✅ PASS
Deno std N/A 1/1 passed ✅ PASS
.NET hello-world N/A ✅ PASS
.NET json-parse N/A ✅ PASS
Go color 1/1 passed ✅ PASS
Go env 1/1 passed ✅ PASS
Go uuid 1/1 passed ✅ PASS
Java gson 1/1 passed ✅ PASS
Java caffeine 1/1 passed ✅ PASS
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: 8/8 ecosystems passed — ✅ PASS

Generated by Build Test Suite for #6673 · sonnet46 · 39.1 AIC · ⊞ 8.4K ·
Add label ready-for-aw to run again

@lpcox
lpcox merged commit 46dc73e into main Jul 28, 2026
138 of 141 checks passed
@lpcox
lpcox deleted the feat/sealed-probes branch July 28, 2026 15:52
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.

Implement sealed probes for bounded private-repository computation

4 participants