fix(stage-1b): allowlist semgrep.dev, poll proxy log in check 07

The semgrep MCP server contacts semgrep.dev at startup and exits when denied; the domain is allowlisted as a documented toolchain dependency (requests logged per expert). Check 07 polls up to a minute for proxy log lines instead of asserting on unflushed writes.
This commit is contained in:
John Smith committed 2026-10-13 19:19:08 -04:00
1 parent ca822e0d6f
commit 717d07014a
4 files changed
+56 -4

No files matched your search

@@ -0,0 +1,39 @@
accept stage 1b (2026-10-13T23:14:17Z), timeout 1500s per check
===== 1b/01-render-check (exit 0) =====
CHECK 1b/01-render-check: PASS
===== 1b/02-compose-config (exit 0) =====
CHECK 1b/02-compose-config: PASS
===== 1b/03-compose-hardening (exit 0) =====
CHECK 1b/03-compose-hardening: PASS
===== 1b/04-images-pinned-and-built (exit 0) =====
CHECK 1b/04-images-pinned-and-built: PASS
===== 1b/05-up-healthy (exit 0) =====
CHECK 1b/05-up-healthy: PASS
===== 1b/06-smoke (exit 1) =====
CHECK 1b/06-smoke: FAIL make smoke failed: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError BAD semgrep failed smoke: expert security: /api/mcp shows a failed server make: *** [Makefile:72: smoke] Error 1
===== 1b/07-egress-allow-deny (exit 1) =====
CHECK 1b/07-egress-allow-deny: FAIL proxy log lacks the allowed line for scout
===== 1b/08-no-direct-route (exit 0) =====
CHECK 1b/08-no-direct-route: PASS
===== 1b/09-unique-passwords (exit 0) =====
CHECK 1b/09-unique-passwords: PASS
===== 1b/10-protocol-examples-parse (exit 0) =====
CHECK 1b/10-protocol-examples-parse: PASS
===== 1b/11-workspace-demo (exit 0) =====
CHECK 1b/11-workspace-demo: PASS
===== 1b/12-no-published-ports (exit 0) =====
CHECK 1b/12-no-published-ports: PASS
CHECKS for stage 1b
1b/01-render-check PASS
1b/02-compose-config PASS
1b/03-compose-hardening PASS
1b/04-images-pinned-and-built PASS
1b/05-up-healthy PASS
1b/06-smoke FAIL make smoke failed: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError BAD semgrep failed smoke: expert security: /api/mcp shows a failed server make: *** [Makefile:72: smoke] Error 1
1b/07-egress-allow-deny FAIL proxy log lacks the allowed line for scout
1b/08-no-direct-route PASS
1b/09-unique-passwords PASS
1b/10-protocol-examples-parse PASS
1b/11-workspace-demo PASS
1b/12-no-published-ports PASS
stage 1b: 10 pass, 0 skip, 2 fail (12 checks)
+1
View File
@@ -14,3 +14,4 @@ models.opencode.ai
opencode.ai
pypi.org
registry.npmjs.org
semgrep.dev
+11 -4
View File
@@ -26,9 +26,16 @@ check_expert agency-backend
check_expert agency-scout
log=$(docker logs agency-egress 2>&1) || fail "cannot read the proxy log"
for expert in backend scout; do
echo "$log" | grep -q "TCP_TUNNEL.*opencode.ai.*$expert" \
|| fail "proxy log lacks the allowed line for $expert"
echo "$log" | grep -q "TCP_DENIED.*denied.invalid.*$expert" \
|| fail "proxy log lacks the denied line for $expert"
allowed_found=""
denied_found=""
for _ in $(seq 1 12); do
echo "$log" | grep -q "TCP_TUNNEL.*opencode.ai.*$expert" && allowed_found="yes"
echo "$log" | grep -q "TCP_DENIED.*denied.invalid.*$expert" && denied_found="yes"
[ -n "$allowed_found" ] && [ -n "$denied_found" ] && break
sleep 5
log=$(docker logs agency-egress 2>&1) || fail "cannot read the proxy log"
done
[ -n "$allowed_found" ] || fail "proxy log lacks the allowed line for $expert"
[ -n "$denied_found" ] || fail "proxy log lacks the denied line for $expert"
done
pass
+5
View File
@@ -22,6 +22,11 @@ huggingface.co
mcp.figma.com
mcp.linear.app
mcp.sentry.dev
# Toolchain-required API endpoints (documented additions beyond the
# registries: the security expert's semgrep MCP server contacts
# semgrep.dev at startup and exits when denied; every request is logged
# with the expert's name).
semgrep.dev
# Documented documentation hosts for webfetch/websearch research.
docs.python.org
developer.mozilla.org