Skip to content

refactor: centralize network policy into sandbox-network-policy.json#6387

Merged
lpcox merged 2 commits into
mainfrom
centralize-network-policy
Jul 18, 2026
Merged

refactor: centralize network policy into sandbox-network-policy.json#6387
lpcox merged 2 commits into
mainfrom
centralize-network-policy

Conversation

@lpcox

@lpcox lpcox commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

What

Introduces a single declarative source of truth for network configuration across all runtimes — src/config/sandbox-network-policy.json + a validating loader src/config/network-policy.ts — mirroring the existing sandbox-mount-policy.json pattern.

This is step 1 of centralizing network policy: a non-behavioral refactor. Every existing exported constant keeps its name and value; the definitions now derive from the policy JSON instead of being scattered across the codebase.

Why

Network parameters were duplicated and drift-prone across host-iptables-shared.ts, constants.ts, types/ports.ts (which literally documented a manual "keep in sync" list), dns-resolver.ts, topology.ts, and compose-network.ts. Centralizing them removes the drift risk and gives us one place to reason about the network model.

Design focus: the default, iptables-less path

The schema is organized around network-isolation (topology) mode — the default (--no-network-isolation requires --legacy-security). In that mode the agent runs on an internal Docker network whose only egress is the dual-homed Squid proxy: no host or container iptables. Egress restriction is structural (default-deny by routing), so blocked ports/CIDRs are denied by construction.

  • CORE (topology, proxies, dns) — the values the default path actually consumes.
  • legacyIptables (host gateway, blocked ports, blocked CIDRs) — consumed only by the uncommon --legacy-security / --enable-host-access path. Captured here now so a follow-up can consolidate the bash-only DANGEROUS_PORTS array and the host-iptables-only blocked CIDRs against one list.

ARC / DinD safety

Every value is a logical Docker network address (subnet, static IP, port, network name) resolved by the daemon — none carries a host-filesystem assumption, so the policy is ARC/DinD safe and needs no --docker-host-path-prefix translation (unlike the mount policy). The host-network touch points (host gateway, host.docker.internal, NET_ADMIN) are confined to the legacyIptables section, reinforcing why topology mode is the default.

Changes

  • New src/config/sandbox-network-policy.json$comment-documented schema (topology / proxies / dns / legacyIptables).
  • New src/config/network-policy.ts — static import + validate() (IPv4/CIDR/port/uniqueness checks) → frozen typed policy + typed accessors, no runtime file read.
  • New src/config/network-policy.test.ts — 20 tests: schema invariants + non-behavioral parity + downstream-module sync.
  • Wired to derive from the policy (identical exports): host-iptables-shared.ts, constants.ts, dns-resolver.ts, topology.ts, types/ports.ts, and compose-network.ts (replaces awf-ext / 127.0.0.11 literals).

Validation

  • npm run build ✅ · npm run type-check ✅ · npm run lint ✅ (0 errors)
  • npm test ✅ — 3872 passed (3852 baseline + 20 new)

Follow-up (out of scope)

Step 2 — legacy consolidation: feed legacyIptables.blockedPorts into an AWF_BLOCKED_PORTS env consumed by setup-iptables.sh (retiring the bash array) and apply blockedCidrs in sbx. Only touches the uncommon iptables path.

Introduce a single declarative source of truth for network configuration
across all runtimes, mirroring the existing sandbox-mount-policy.json pattern.

The default, iptables-less network-isolation (topology) path is the focus:
its topology (network name, subnet, static sidecar IPs), proxy ports, and DNS
config now live in src/config/sandbox-network-policy.json and are loaded and
validated by src/config/network-policy.ts. The legacy host/container iptables
deny lists (blocked ports/CIDRs, host gateway) are captured in the same file
under `legacyIptables` for the uncommon --legacy-security path (consolidation
of their call sites is a follow-up).

All values are logical Docker network addresses with no host-filesystem
assumptions, so the policy is ARC/DinD safe and needs no path translation.

This is a non-behavioral refactor: existing modules (host-iptables-shared,
constants, dns-resolver, topology, types/ports, compose-network) now derive
their constants from the policy, preserving every exported name and value.
Parity tests assert the refactor is behavior-preserving.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4bdbe67a-cb99-41a2-944b-49cfd949360e
Copilot AI review requested due to automatic review settings July 18, 2026 18:28
@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 98.64% 98.46% 📉 -0.18%
Statements 98.46% 98.29% 📉 -0.17%
Functions 99.24% 99.15% 📉 -0.09%
Branches 94.55% 94.25% 📉 -0.30%
📁 Per-file Coverage Changes (2 files)
File Lines (Before → After) Statements (Before → After)
src/topology.ts 98.8% → 98.8% (+0.01%) 98.8% → 98.8% (+0.02%)
src/log-directory-setup.ts 96.2% → 100.0% (+3.78%) 96.3% → 100.0% (+3.71%)
✨ New Files (1 files)
  • src/config/network-policy.ts: 85.7% 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

Centralizes network topology, proxy, DNS, and legacy firewall values into a declarative policy.

Changes:

  • Adds a validated network policy and compatibility accessors.
  • Rewires existing constants and Compose configuration.
  • Adds policy invariant and parity tests.
Show a summary per file
File Description
src/config/sandbox-network-policy.json Defines centralized network policy.
src/config/network-policy.ts Validates and exposes policy values.
src/config/network-policy.test.ts Tests invariants and compatibility.
src/compose-network.ts Uses policy bridge and DNS values.
src/constants.ts Re-exports Squid port.
src/dns-resolver.ts Re-exports DNS defaults.
src/host-iptables-shared.ts Re-exports topology constants.
src/topology.ts Derives topology network name.
src/types/ports.ts Maps policy ports to legacy exports.

Review details

Tip

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

  • Files reviewed: 9/9 changed files
  • Comments generated: 4
  • Review effort level: Medium

Comment thread src/config/network-policy.ts Outdated
Comment on lines +286 to +297
function validate(input: unknown): NetworkPolicy {
const p = asObject(input, 'root');
return {
topology: parseTopology(p.topology),
proxies: parseProxies(p.proxies),
dns: parseDns(p.dns),
legacyIptables: parseLegacyIptables(p.legacyIptables),
};
}

/** The validated, frozen network policy loaded from the JSON config. */
export const networkPolicy: NetworkPolicy = validate(rawPolicy);

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Good catch — readonly is erased at runtime. Added a deepFreeze() and now export deepFreeze(validate(rawPolicy)), so the whole tree (including the object returned by apiProxyPorts()) is frozen. Added tests asserting nested objects/arrays are frozen and that mutating apiProxyPorts() throws. (5917b29)

Comment thread src/compose-network.ts
squidService.networks = {
...(squidService.networks || {}),
'awf-ext': {},
[EXTERNAL_BRIDGE_NAME]: {},

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed — EXTERNAL_BRIDGE_NAME is now used at all three sites: the Squid attachment, the network declaration (compose-network.ts:58), and the sbx api-proxy attachment (compose-generator.ts:156). (5917b29)

Comment thread src/config/network-policy.ts Outdated
Comment on lines +309 to +310
/** Default IPv4 subnet (CIDR) of the internal topology network. */
export const NETWORK_SUBNET: string = networkPolicy.topology.subnet;

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed — main-action.ts now imports NETWORK_SUBNET (re-exported from host-iptables-shared) and uses it at both sbx sites (:282 and :300) so the sbx environment/credential config tracks the policy. (5917b29)

Comment thread src/config/sandbox-network-policy.json Outdated
"$comment": "Central declarative NETWORK policy shared by ALL runtimes. The PRIMARY, default path is network-isolation (topology) mode: the agent runs on an `internal` Docker network whose only egress is the dual-homed Squid proxy — NO iptables (host or container), no NET_ADMIN. In that mode egress restriction is STRUCTURAL (default-deny by routing): blocked ports/CIDRs have no route out, so they are denied by construction rather than by rules. The `legacyIptables` section below is consumed ONLY by the uncommon --legacy-security / --enable-host-access path (host iptables + the container setup-iptables.sh NAT script). Every value here is a logical Docker network address (subnet, static IP, port, network name) that the daemon resolves — it carries NO host-filesystem or host-network assumptions, so the policy is ARC/DinD safe and needs no --docker-host-path-prefix translation. Loaded and validated by src/config/network-policy.ts.",

"topology": {
"$comment": "CORE — consumed by the default iptables-less path. Compose IPAM assigns these static IPs on the internal `networkName`; Squid is dual-homed onto `externalBridgeName` as the sole egress. `subnet` is overridable via CLI to avoid collisions on a shared DinD daemon. `hostGateway` lives in `legacyIptables`, not here — the default path never touches the host network.",

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Removed — dropped the CLI-override claim from the policy JSON $comment and reworded the loader doc. There is no subnet CLI option, and this PR is non-behavioral. (5917b29)

- Deep-freeze the validated policy tree so immutability holds at runtime
  (not just via erased `readonly` types); prevents live accessors like
  apiProxyPorts() from diverging through stray mutation. Add freeze tests.
- Use EXTERNAL_BRIDGE_NAME at all three awf-ext sites: the Compose network
  declaration and the sbx api-proxy attachment in compose-generator, not
  just the Squid attachment.
- Use NETWORK_SUBNET in the sbx path (main-action.ts) so editing the policy
  updates the sbx environment/credential config too, not only Docker/iptables.
- Drop the inaccurate "subnet is CLI-overridable" claim from the policy JSON
  and loader doc — there is no subnet CLI option.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4bdbe67a-cb99-41a2-944b-49cfd949360e
@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.

@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 98.64% 98.46% 📉 -0.18%
Statements 98.46% 98.30% 📉 -0.16%
Functions 99.24% 99.16% 📉 -0.08%
Branches 94.55% 94.22% 📉 -0.33%
📁 Per-file Coverage Changes (4 files)
File Lines (Before → After) Statements (Before → After)
src/services/agent-environment/env-passthrough.ts 96.8% → 96.3% (-0.48%) 96.8% → 96.3% (-0.48%)
src/topology.ts 98.8% → 98.8% (+0.01%) 98.8% → 98.8% (+0.02%)
src/services/cli-proxy-service.ts 94.7% → 95.0% (+0.27%) 94.7% → 95.0% (+0.27%)
src/log-directory-setup.ts 96.2% → 100.0% (+3.78%) 96.3% → 100.0% (+3.71%)
✨ New Files (2 files)
  • src/config/network-policy.ts: 86.4% lines
  • src/services/no-proxy-utils.ts: 100.0% lines

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

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Smoke Claude passed

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🔑 Smoke Copilot PAT PAT auth validated. All systems operational. ✅

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Build Test Suite completed successfully!

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 18, 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 18, 2026

Copy link
Copy Markdown
Contributor

Security Guard failed. Please review the logs for details.

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Smoke Copilot BYOK completed. Copilot BYOK mode operational. 🔓

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Contribution Check failed. Please review the logs for details.

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🔌 Smoke Services — All services reachable! ✅

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Smoke Gemini completed. All facets verified. 💎

@github-actions

github-actions Bot commented Jul 18, 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 18, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Claude Engine Validation

Check Result
API ✅ PASS
GH ✅ PASS
File ✅ PASS

Overall Result: PASS

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

Generated by Smoke Claude for #6387 · 55.4 AIC · ⊞ 3.3K ·
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

🔬 Smoke Test Results

  • ✅ GitHub MCP: Connected (MCP tools verified available)
  • ✅ GitHub.com Connectivity: HTTP 200
  • ✅ File Write/Read: Smoke test passed for Copilot at Sat Jul 18 22:39:39 UTC 2026

Overall: PASS

@lpcox — all smoke tests passed.

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

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

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Services Connectivity

  • Redis PING: ❌ (host.docker.internal DNS fails; bridge 172.17.0.1 unreachable)
  • PostgreSQL pg_isready: ❌ (same)
  • PostgreSQL SELECT 1: ❌ (same)

Overall: FAIL — Service containers are not reachable from this runner (no host.docker.internal DNS resolution, Docker bridge network unreachable).

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

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

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test Results

Overall status: FAIL

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

Smoke test: network isolation egress enforcement

EGRESS_RESULT allow=pass deny=pass

✅ Test 1 (allowed domain): allowed=200 — github.com reachable
✅ Test 2 (blocked domain): OK: example.com was blocked — example.com denied

Overall: PASS@lpcox

Warning

Firewall blocked 2 domains

The following domains were blocked by the firewall during workflow execution:

  • awmgmcpg
  • example.com

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

network:
  allowed:
    - defaults
    - "awmgmcpg"
    - "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 github-actions Bot added the smoke-copilot-network-isolation Copilot network-isolation egress smoke test label Jul 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Copilot PAT Auth — PASS ✅

Test Result
GitHub MCP connectivity
GitHub.com HTTP
File write/read

Overall: PASS
Auth mode: PAT (COPILOT_GITHUB_TOKEN)

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

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

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: Copilot BYOK (Direct)

✅ GitHub MCP connectivity (MCP server responding)
✅ GitHub.com HTTP 200 OK
✅ File write/read functional
✅ BYOK inference active (api-proxy → api.githubcopilot.com)

Mode: Direct BYOK via COPILOT_PROVIDER_API_KEY
Status: PASS

@lpcox

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

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

@github-actions

Copy link
Copy Markdown
Contributor

Smoke Test: API Proxy OpenTelemetry Tracing

Scenario Result Notes
1. Module Loading ✅ Pass otel.js loads successfully; exports: startRequestSpan, setTokenAttributes, setBudgetAttributes, endSpan, endSpanError, shutdown, isEnabled + internal helpers
2. Test Suite ✅ Pass 59 tests passed across otel.test.js and otel-fanout.test.js (2 suites, 0 failures)
3. Env Var Forwarding ✅ Pass src/services/api-proxy-service.ts forwards GH_AW_OTLP_ENDPOINTS, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS, GITHUB_AW_OTEL_TRACE_ID, GITHUB_AW_OTEL_PARENT_SPAN_ID, and OTEL_SERVICE_NAME to the api-proxy container
4. Token Tracker Integration ✅ Pass onUsage callback exists in token-tracker-http.js as the OTEL hook point
5. OTEL Diagnostics ✅ Pass No OTLP endpoint configured → graceful degradation to FileSpanExporter (/var/log/api-proxy/otel.jsonl); no errors

All scenarios pass. OTEL tracing integration is fully functional.

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

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

@github-actions

Copy link
Copy Markdown
Contributor

@lpcox

  • MCP connectivity (pre-fetched PR data): ✅
  • GitHub.com HTTP 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
    Status: PASS

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

🪪 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

Smoke Test

  • fix: don't mask Copilot CLI's ~/.copilot/config.json
  • refactor: extract shared buildNoProxyEnv helper to eliminate duplicate NO_PROXY assembly
  • GitHub reads: ✅
  • Playwright title check: ✅
  • File write/cat: ✅
  • Build (npm ci && npm run build): ✅
  • Overall: PASS

Warning

Firewall blocked 2 domains

The following domains were blocked by the firewall during workflow execution:

  • awmgmcpg
  • registry.npmjs.org

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

network:
  allowed:
    - defaults
    - "awmgmcpg"
    - "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

Chroot Version Comparison Results

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

Overall: ❌ Not all tests passed — Python and Node.js versions differ between host and chroot environments.

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

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 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

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

Generated by Build Test Suite for #6387 · 38.8 AIC · ⊞ 7.1K ·
Add label ready-for-aw to run again

@github-actions

Copy link
Copy Markdown
Contributor

🔥 Smoke Test Results

Test Status
GitHub MCP Connectivity ✅ PASS (server responded)
GitHub.com HTTP ✅ PASS (HTTP 200)
File Write/Read ⚠️ SKIP (template vars unresolved)

Overall: PASS (2/2 functional tests passed; file test skipped due to unresolved template variables in workflow)

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

@github-actions

Copy link
Copy Markdown
Contributor

test body

Warning

Firewall blocked 1 domain

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

  • awmgmcpg

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

network:
  allowed:
    - defaults
    - "awmgmcpg"

See Network Configuration for more information.

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

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