refactor: adopt bounded query naming - #6736
Conversation
Rename configuration, commands, images, services, paths, types, tests, and documentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ca8d9d74-46ab-48db-b05f-640cbc6d47be
✅ Coverage Check PassedOverall Coverage
📁 Per-file Coverage Changes (1 files)
✨ New Files (10 files)
🗑️ Removed Files (10 files)
Coverage comparison generated by |
Use Git commands to inspect tracked paths and text without a check-then-read sequence. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ca8d9d74-46ab-48db-b05f-640cbc6d47be
There was a problem hiding this comment.
Pull request overview
Renames the unreleased sealed-probe feature to bounded queries across configuration, runtime services, containers, tests, and documentation.
Changes:
- Renames APIs, paths, environment variables, images, and protocol symbols.
- Updates broker, sandbox, agent wrapper, release workflow, and tests.
- Adds bounded-query documentation and a legacy-name regression test.
Show a summary per file
| File | Description |
|---|---|
tests/integration/bounded-query-isolation.test.ts |
Renames Docker isolation integration coverage. |
src/types/wrapper-config.ts |
Adopts bounded-query options. |
src/types/index.ts |
Exports renamed public types. |
src/types/bounded-query-options.ts |
Renames configuration types and defaults. |
src/services/optional-services.ts |
Assembles renamed optional services. |
src/services/bounded-query-compose.test.ts |
Updates Compose integration tests. |
src/services/agent-volumes/docker-socket.ts |
Updates broker documentation. |
src/services/agent-environment/excluded-vars.ts |
Renames credential-isolation condition. |
src/services/agent-environment/excluded-vars.test.ts |
Updates credential-isolation tests. |
src/sealed-probe/preflight.ts |
Removes the former preflight module. |
src/schema.test.ts |
Expects the renamed schema section. |
src/parsers/bounded-query-parser.ts |
Renames configuration normalization. |
src/parsers/bounded-query-parser.test.ts |
Updates parser tests. |
src/image-tag.ts |
Renames supported image digest keys. |
src/image-tag.test.ts |
Covers bounded-query digest keys. |
src/container-start.test.ts |
Updates broker cleanup expectation. |
src/container-lifecycle.ts |
Uses the renamed broker constant. |
src/constants.ts |
Renames the broker container constant. |
src/config-mapper.ts |
Maps boundedQueries. |
src/config-file.ts |
Exposes the renamed config section. |
src/config-file-mapping.test.ts |
Updates config mapping tests. |
src/config-file-loading.test.ts |
Updates stdin loading coverage. |
src/config-file-bounded-queries-validation.test.ts |
Renames schema validation tests. |
src/commands/main-action.ts |
Wires renamed lifecycle functions. |
src/commands/build-config.ts |
Normalizes bounded-query configuration. |
src/commands/build-config.test.ts |
Updates configuration-building tests. |
src/cli-workflow.ts |
Renames trusted staging dependency. |
src/bounded-query/wrapper.test.ts |
Tests the renamed agent command. |
src/bounded-query/workflow-integration.test.ts |
Tests renamed staging ordering. |
src/bounded-query/types.ts |
Renames runtime and seed-map types. |
src/bounded-query/staging.ts |
Renames trusted staging APIs. |
src/bounded-query/staging.test.ts |
Updates staging tests and paths. |
src/bounded-query/skill.ts |
Generates renamed agent guidance. |
src/bounded-query/skill.test.ts |
Updates generated-skill tests. |
src/bounded-query/scheduler.test.ts |
Points timing tests at the new broker. |
src/bounded-query/query-seccomp.test.ts |
Renames seccomp invariants. |
src/bounded-query/protocol-parity.test.ts |
Updates host/broker parity tests. |
src/bounded-query/preflight.ts |
Adds renamed fail-closed preflight. |
src/bounded-query/preflight.test.ts |
Tests renamed preflight APIs. |
src/bounded-query/paths.ts |
Renames filesystem and container paths. |
src/bounded-query/paths.test.ts |
Updates path derivation tests. |
src/bounded-query/naming.test.ts |
Prevents legacy naming regressions. |
src/bounded-query/manager.ts |
Renames lifecycle orchestration. |
src/bounded-query/ledger.test.ts |
Points ledger tests at the new broker. |
src/bounded-query/end-to-end.test.ts |
Updates wrapper-to-broker coverage. |
src/awf-config-schema.json |
Renames the runtime schema section. |
README.md |
Links the bounded-query guide. |
docs/bounded-queries.md |
Renames and updates the feature guide. |
docs/awf-config.schema.json |
Renames the published schema section. |
containers/bounded-query/query-seccomp.json |
Updates seccomp documentation. |
containers/bounded-query/query-entrypoint.py |
Renames sandbox paths and script. |
containers/bounded-query/Dockerfile |
Renames image targets and artifacts. |
containers/bounded-query/broker/workspace.js |
Renames workspace APIs and paths. |
containers/bounded-query/broker/server.js |
Renames the broker route and startup. |
containers/bounded-query/broker/sensitivity.js |
Renames sensitivity constants. |
containers/bounded-query/broker/scheduler.js |
Updates timing documentation. |
containers/bounded-query/broker/query-runner.js |
Renames sandbox launch operations. |
containers/bounded-query/broker/protocol.js |
Renames broker protocol symbols. |
containers/bounded-query/broker/ledger.js |
Uses renamed budget constants. |
containers/bounded-query/broker/healthcheck.js |
Updates route documentation. |
containers/bounded-query/broker/framing.js |
Renames framing headers and version. |
containers/bounded-query/broker/config.js |
Renames broker environment variables. |
containers/bounded-query/broker/broker.js |
Renames query orchestration calls. |
containers/bounded-query/broker/audit.js |
Renames audit files and messages. |
containers/agent/entrypoint.sh |
Installs the renamed command and skill. |
containers/agent/Dockerfile |
Packages the renamed wrapper. |
containers/agent/bounded-query-wrapper.sh |
Renames the agent-facing protocol client. |
CLAUDE.md |
Updates subsystem guidance. |
.github/workflows/release.yml |
Publishes renamed images and attestations. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comments suppressed due to low confidence (3)
src/bounded-query/skill.ts:180
- This agent-facing skill contains the typo “queryd”; use “queried” so the generated guidance reads correctly.
src/types/bounded-query-options.ts:8 - This header still says no broker or sandbox exists, but this subsystem now includes staging, broker, and query-container implementations. Update the type documentation so it does not describe the implemented feature as foundation-only.
containers/agent/bounded-query-wrapper.sh:2 - This path comment names a binary that is not installed there. The image installs
/usr/local/bin/bounded-query-wrapper.sh, andentrypoint.shcopies it to/tmp/awf-lib/bounded-querybefore adding that directory toPATH.
- Files reviewed: 76/76 changed files
- Comments generated: 4
- Review effort level: Medium
| * Bounded-query sandbox configuration. | ||
| * | ||
| * Foundation only — configuration/protocol surface, no broker or sandbox | ||
| * runtime is implemented yet. See docs/awf-config-spec.md §14. |
| - Trusted host staging (`src/sealed-probe/staging.ts`) materializes an immutable seed per configured repo *before* the agent starts, using `GH_TOKEN`/`GITHUB_TOKEN` only in a child-process env — never in argv, a URL, a log, or the compose file | ||
| - Reachable only through one Unix socket in `<workDir>/bounded-queries/run/`, bind-mounted into the agent at `/run/awf-bounded-query/broker.sock` | ||
| - Receives the resolved Docker socket so it can launch per-invocation query containers; that path never enters the agent's env or volumes | ||
| - The same image is used for the query sandbox, which guarantees the query image is already local (the broker cannot pull — it has no network) |
| - Receives the resolved Docker socket so it can launch per-invocation query containers; that path never enters the agent's env or volumes | ||
| - The same image is used for the query sandbox, which guarantees the query image is already local (the broker cannot pull — it has no network) | ||
| - Queries run `python3` with `--network none`, `--read-only`, non-root, `--cap-drop ALL`, `no-new-privileges`, a seccomp profile, and time/memory/CPU/PID/file-size bounds | ||
| - Agent surface: `/usr/local/bin/bounded-query` (from `containers/agent/bounded-query-wrapper.sh`) plus a generated read-only `SKILL.md`; the wrapper always prints one canonical JSON line, writes nothing to stderr, and exits `0` |
| - Queries run `python3` with `--network none`, `--read-only`, non-root, `--cap-drop ALL`, `no-new-privileges`, a seccomp profile, and time/memory/CPU/PID/file-size bounds | ||
| - Agent surface: `/usr/local/bin/bounded-query` (from `containers/agent/bounded-query-wrapper.sh`) plus a generated read-only `SKILL.md`; the wrapper always prints one canonical JSON line, writes nothing to stderr, and exits `0` | ||
| - Trusted host staging (`src/bounded-query/staging.ts`) materializes an immutable seed per configured repo *before* the agent starts, using `GH_TOKEN`/`GITHUB_TOKEN` only in a child-process env — never in argv, a URL, a log, or the compose file | ||
| - See [docs/awf-config-spec.md](docs/awf-config-spec.md) §14 for the full model, including the two-bit disclosure bound and residual channels |
|
@copilot addressr review feedback |
- config-file.ts: replace stale "not implemented yet" JSDoc with accurate description of the broker/sandbox subsystem - CLAUDE.md/AGENTS.md line 36: clarify that broker and query sandbox are separate published images; one-shot Compose service ensures sandbox image is local before the networkless broker starts - CLAUDE.md/AGENTS.md line 38: correct agent command path from /usr/local/bin/bounded-query to /tmp/awf-lib/bounded-query (inside chroot), noting /usr/local/bin/bounded-query-wrapper.sh as source - CLAUDE.md/AGENTS.md line 40: remove incorrect "two-bit disclosure bound"; use "per-repository information-budget accounting" instead
Addressed all four reviewer comments in commit
|
|
✅ Copilot review passed with no inline comments. @lpcox Add the |
|
✅ Smoke Copilot BYOK AOAI (api-key) completed. Copilot AOAI BYOK (api-key) mode operational. 🔓 |
|
🛡️ Smoke Copilot Network Isolation confirmed the egress allowlist is enforced. ✅ |
|
✅ Smoke Copilot BYOK completed. Copilot BYOK mode operational. 🔓 |
|
✅ Smoke Claude passed |
|
✨ The prophecy is fulfilled... Smoke Codex has completed its mystical journey. The stars align. 🌟 |
|
📡 Smoke OTel Tracing completed. All tracing scenarios validated. ✅ |
|
❌ Security Guard failed. Please review the logs for details. |
|
Chroot tests passed! Smoke Chroot - All security and functionality tests succeeded. |
|
✅ Build Test Suite completed successfully! |
|
❌ Contribution Check failed. Please review the logs for details. |
|
✅ Smoke Copilot BYOK AOAI (Entra) completed. Copilot AOAI BYOK (Entra) mode operational. 🔓 |
|
🔌 Smoke Services — All services reachable! ✅ |
|
✅ Smoke Gemini completed. All facets verified. 💎 Smoke test completed. Results commented on PR #6736. |
|
📰 VERDICT: Smoke Copilot has concluded. All systems operational. This is a developing story. 🎤 |
Smoke Test: Claude Engine Validation
Overall result: PASS
|
Smoke Test Results: Copilot BYOK (Direct Mode)✅ GitHub MCP Connectivity - PR data retrieved (2 merged PRs from @lpcox) Overall: PASS — Direct BYOK inference path operational
|
|
@lpcox Smoke test results for Copilot network isolation egress enforcement: EGRESS_RESULT allow=pass deny=pass
Overall status: PASS Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "example.com"See Network Configuration for more information.
|
|
Copilot Engine Smoke Test — @lpcox
Overall: PASS
|
Smoke Test: Services Connectivity
Overall: FAIL —
|
Smoke Test: Gemini Engine Validation
Overall status: FAIL
|
Chroot Version Comparison Results
Overall: FAILED — Node.js version differs between host and chroot environment (v24.18.0 vs v22.23.1). No label added since not all tests passed.
|
|
docs: add sealed probes guide: ✅ 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
|
|
Smoke Test Results:
Running in direct BYOK mode (COPILOT_PROVIDER_API_KEY + COPILOT_PROVIDER_BASE_URL) via api-proxy → Azure OpenAI (Foundry, o4-mini-aw) Overall: PASS
|
|
#6734 docs: add sealed probes guide ✅ Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "registry.npmjs.org"See Network Configuration for more information.
|
Smoke Test: API Proxy OTEL Tracing Results
Overall: ✅ All scenarios pass. Graceful degradation confirmed by clean test run with no OTEL endpoint configured in this sandbox.
|
🏗️ Build Test Suite Results
Overall: 8/8 ecosystems passed — PASS Notes:
|
|
Smoke Test: Docker Sbx Validation Recent merged PRs: #6734 (docs: add sealed probes guide), #6728 (feat: add confidentiality-aware sealed probe budgets)
Overall: PASS
|
Summary
bounded-queryand the configuration section asboundedQueriesdocs/bounded-queries.mdand link it from the READMEValidation