Files

3.4 KiB

Gate audit: is this a real gate or smoke and mirrors?

A test only counts if breaking the thing it guards turns it RED. This is the red-team of our own gate: for each check, the claim, the fault we injected, the result, and an honest note on what it still does NOT cover. Re-run the evidence with node scripts/ci/selftest-gate.js (pure, mutation tests) plus the live fault-injections noted below.

Verdict: it has teeth (with one gap found + fixed)

Check Claim Fault injected Result Real?
boot: provenance the running app is the build at HEAD built at an older sha, ran against HEAD RED ("provenance sha X != git HEAD Y"), seen live yes
boot: provenance/marks a good log passes; broken logs don't missing [provenance], sha mismatch, missing mark, out-of-order, all-zero RED on each, good log green (selftest-gate.js) yes
boot: health backend actually serves port not serving RED (health != 200) yes
signature: reject unsigned bits can't ship --require-signed on the unsigned local build RED (exit 1) yes
signature: recognize a real signature is seen as valid --require-signed on node.exe (OpenJS-signed) GREEN, signed=Valid (not "always unsigned") yes
resilience: locked-port survives a taken preferred port held 8324-8333 app served on :8334 (behavior changed vs default :8324) yes
resilience: multi-instance 2nd launch exits, 1st keeps serving launched a 2nd instance 2nd exited code 0, 1st still 200 yes
network: auth the bearer is validated, not just present no-token / wrong-token / real-token 401 / 401 / 200 yes (after fix)
network: 9router the bundled router is up TCP probe :20128 open when up, RED when down yes
agent turn a real model reply on the user's creds fresh session, tool-free prompt completed, tokens.output > 0 (can't be faked: a fresh session starts at 0) yes
gui hand a CC instance can drive the real GUI launched + screenshotted + read log works; render gate asserts #root has children (not a blank window) yes
verify-all one failure fails the whole gate bogus app path 3 sub-checks RED -> exit 1 (not silently green) yes

The gap we found and closed

verify-network originally tested only no-token (401) vs real-token (200). A backend that accepted ANY Authorization header would have passed both while auth was actually broken. Added a wrong-token probe that must also get 401; the 200 now means "validated", not "a header was present". Proven live: 401 / 401 / 200.

What this gate still does NOT cover (honest residuals)

  • macOS signing path is unverified locally (no Mac here). The codesign + spctl + staple logic is written but only CI on a Mac runner proves it.
  • Full port-range exhaustion isn't exercised; we hold the bottom of the range (common real case). All-101-taken relies on get-port's own ephemeral fallback.
  • Agent-turn content isn't asserted (models vary); we assert real output tokens were produced, not that the words are correct.
  • Perf marks are emitted by product code; the gate trusts the app isn't lying about its own lifecycle. first-paint only exists if the renderer painted, so a no-paint boot is still caught.
  • The gate proves boot/serve/resilience/auth, not feature correctness. That is the CC-instance apex layer's job (drive the GUI, judge "does it actually work").