school-core Setup
school-core Setup
Two tiers. Tier A is required to run what actually works today (the verify-gate). Tier B is optional — it enriches context but is NOT needed for verification, and is not wired in the current run.
Tier A — required (verify-gate)
1. Install Determinate Nix
The verify-gate runs student code inside a hermetic Nix shell. If you use the
kunchenguid/dotfiles repo, bootstrap.sh installs it. Otherwise:
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
2. Enter the verify shell
From the school-core repo root:
nix develop .#verifyShell
This drops you into a shell with node, pnpm, python, ripgrep, fd,
jq and no network provisioned. The repo is mounted read-only at runtime
by verify_gate.py; outputs go to a temp scratch dir.
3. Run the pipeline
python issue_bridge.py --repo owner/repo --once
After each student task, the pipeline now calls verify_gate.run_verify_gate
on the cached clone, then merges any compile/typecheck/test failures into the
adversarial review as CRITICAL findings (see config/anchors.yaml →
[Compile-Before-Critic]). A broken build cannot earn a PASS.
4. Verify commands discovered
verify_gate finds commands from, in priority order:
project_verify.yamlat the repo root (explicit manifest), or- inferred from
package.jsonscripts (typecheck/lint/test/check), including sub-projects (e.g. amobile/dir with its own package.json that typechecks independently), andpyproject.toml(pytest/ruff).
Example project_verify.yaml (with the Orca per-subproject-motivation):
see verify_gate.example.yaml at the repo root.
Tier B — optional (context enrichment)
These are designed but not required for the verify-gate. Skip unless you want Layer 0/1 context enrichment.
- CocoIndex (
ccc) — forcontext_orchestrator._cocoindex_context. Requires a built vault. Install + index per the CocoIndex docs. - Engram — for
engram_adapter.search_trajectories(Layer 2). Requires an Engram instance + credentials.
Neither is needed to execute or verify code. They only add retrieval context
to prompts. See campus.md → Operational Reality for the full status table.
Safety notes
verify_gateruns only the repo's own declared verify commands. It never executes free-form student scripts.- The cached clone is copied to a writable scratch dir; the original cache is never mutated.
- Every command is timeout-bounded. A gate failure is reported as a finding, never a crash.
- v1 uses a Nix devShell (user-space isolation). If you later need to run arbitrary untrusted binaries (not just the repo's tests), graduate to a microVM boundary (Firecracker/Linux) for a kernel-level boundary — user-space sandboxing alone is escapeable.