mirror of
https://github.com/garrytan/gbrain.git
synced 2026-08-14 00:48:18 +00:00
Closes the audit's biggest gap ("no real harness ever drives a turn"). Adapts
gstack's PTY/headless agent harness to prove the bootstrap install + smoke work
against the REAL binaries, not PATH shims. Test/CI/docs only — zero src changes.
- test/helpers/agent-harness.ts: hermetic clean-room child env (ported from
gstack; drops CONDUCTOR_/CLAUDE_/GSTACK_/MCP_/GBRAIN_, promotes
GSTACK_ANTHROPIC_API_KEY→ANTHROPIC_API_KEY), real-binary resolvers + auth
probes, headless `claude -p --output-format stream-json` and `codex exec
--json` turn runners, a gbrain stdio MCP-config writer, and a keyless brain
seeder. + a fixture-parse unit test (no binary needed).
- test/e2e/bootstrap-real-claude.serial.test.ts: real `gbrain bootstrap`
install → REAL `claude mcp add` (verified via `claude mcp get`) → verify
exit 0 → a real `claude -p --mcp-config --strict-mcp-config` turn that
invokes mcp__gbrain__search and answers from the brain (proven: toolCalls
include mcp__gbrain__search, final text carries the seeded fact).
- test/e2e/bootstrap-real-codex.serial.test.ts: same install with REAL `codex
mcp add` into a real ~/.codex/config.toml + Gate-3 pull-protocol assertion,
then a real `codex exec --json` turn surfacing the fact (MCP or the pull-
protocol shell path). Bounded retry absorbs codex's occasional MCP-call
cancellation without softening the fact-requiring assertion.
- Everything hermetic (temp HOME/CLAUDE_CONFIG_DIR/CODEX_HOME/GBRAIN_HOME;
real ~/.codex auth copied read-only) and skipIf-gated so it self-skips
cleanly where the binaries/auth are absent.
- heavy-tests.yml: gated `real-agent-e2e` job (nightly/label, never the PR
shard; no-op on a runner without authed binaries).
- TODOS: compiled `gbrain` binary can't serve a PGLite brain (bun compile
omits the WASM/extension payloads); harness falls back to `bun run` serve.
Verified against live claude 4.6 + codex 0.147.0: 15 pass / 0 fail; verify
36/36; typecheck clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>