GitHub
A website where teams store and share code.
Like this: Like Google Drive, but built for software projects and change history.
Project Terminus lives in a GitHub repository. Your track lead grants access. You mostly don’t need deep Git knowledge — Claude Code handles many git steps.
https://github.com/Syncrope/project-terminus
Repository (repo)
One project folder that remembers every change over time.
Like this: A shared notebook with “undo history” for every file.
The project-terminus repo holds tasks, skills, and docs. Each task usually lives on its own branch so people don’t overwrite each other.
Pull Request (PR)
A request to merge your changes into the shared project.
Like this: Asking the team to review your homework before it goes in the binder.
In week one you adapt your take-home into Harbor format and open a PR within 24 hours. Post it in your track channel for faster review.
Terminal / shell
A text window where you type commands instead of clicking buttons.
Like this: Talking to the computer with short typed sentences.
On Mac it’s usually zsh. On Windows we use Ubuntu inside WSL2. VS Code’s built-in terminal is where you run Harbor, Docker, and Claude Code.
harbor --help
WSL2
Linux (Ubuntu) running inside Windows.
Like this: A Linux room inside your Windows house — Harbor lives in that room.
Required on Windows. After install, connect VS Code to WSL and stay in the Ubuntu terminal. Don’t drive Harbor from PowerShell.
LF vs CRLF
Two ways computers end a line of text.
Like this: LF = Mac/Linux period. CRLF = Windows period with an extra invisible mark.
Linux containers hate CRLF. It causes “bad interpreter” errors. On Windows force LF in VS Code and Git. Mac is already LF.
files.eol = "\n" · git config core.autocrlf input
Worktree
A separate checkout of the repo so two tasks don’t collide.
Like this: Two desks for two homework assignments instead of one messy pile.
One task per branch, in its own worktree. The assistant usually manages this.
Docker
Runs a tiny self-contained computer inside your computer.
Like this: A shipping container: same tools and files everywhere the task runs.
Each task ships a Docker environment so every agent sees the same setup. If Docker Desktop isn’t running, Harbor can’t build or test.
docker run --rm hello-world
Harbor
The framework that defines the task format and runs tasks locally.
Like this: The exam proctor that grades oracle/nop on your laptop.
Main local checks: oracle must score 1, nop must score 0. Install with `uv tool install harbor`.
harbor run -p ./my-task -a oracle
uv
A fast installer for Python tools (including Harbor).
Like this: An app store for command-line Python tools.
Commands look like `uv tool install harbor` and `uv tool upgrade harbor`.
uv tool install harbor
Claude Code
An AI assistant in your terminal that can read, write, and run commands.
Like this: A junior engineer who follows your goals — and slash “skills” recipes.
Describe goals in plain English, or type `/optmodel-discover`. It does most heavy lifting; you review quality.
/datalake-discover
Skill (slash command)
A saved recipe Claude Code follows when you type `/something`.
Like this: A cookbook recipe with a short name.
Tracks: `/discover` → `/research` → `/convert`. Utilities: `/local-checks`, `/human-review`, `/snorkel-zip`, `/task-debug`.
/optmodel-convert my-slug
Ruff
A Python formatter/linter that must be clean before upload.
Like this: Spell-check for code style — the platform refuses messy uploads.
Run via uvx: `uvx ruff@latest check .` and `format --check .`.
uvx ruff@latest check .
Task
One self-contained coding challenge for an AI agent.
Like this: One exam question, fully packaged with answer key + grader.
Includes instruction, Docker environment, oracle solution, and hidden tests. Lives under tasks/<track>/<slug>/.
Agent
An AI model plus tools that can edit files and run commands.
Like this: The student taking the exam (with a laptop).
Snorkel evaluates strong models (e.g. Opus, GPT). Special local agents: oracle (our solution) and nop (do nothing).
Oracle
Our known-correct solution. It must always pass (reward 1).
Like this: The teacher’s answer key — proves the exam is solvable.
Stored in solution/solve.sh. If oracle fails, fix that before difficulty work.
harbor run -p <task> -a oracle
Nop
“No operation” — leave starter files alone. Must fail (reward 0).
Like this: Turning in a blank exam — should not get full marks.
If nop passes, the task is already solved for free and will be rejected.
harbor run -p <task> -a nop
Reward
The grade: almost always 0 (fail) or 1 (pass).
Like this: A pass/fail stamp — not a percentage.
Written by tests/test.sh to /logs/verifier/reward.txt. Always write it, even on errors. No partial scores like 0.7.
echo 1 > /logs/verifier/reward.txt
instruction.md
The only prose the agent reads — the exam question.
Like this: What you would type to a coding assistant at work.
Human, concise, absolute paths. No step-by-step solution recipe. State everything tests will grade.
task.toml
Settings sheet: timeouts, resources, tags, metadata.
Like this: The cover page of the exam (time limits, subject tags).
Edition 2 needs version 2.0 plus [metadata], [verifier], [agent], [environment]. See the Task page field dictionary.
number_of_milestones = 0 · tags = ["a","b","c"]
Track
A family of tasks that share a domain and skill pipeline.
Like this: A subject major: optimization, security, data pipelines…
Examples: optmodel, datalake, vulns, finpaper. Your track lead tells you which skills to use.
Leakage
Info that lets the agent shortcut the real work.
Like this: Leaving the answer key visible in the exam booklet.
Examples: step-by-step recipes in instructions, answer values in docs, tests visible in the agent image.
Snorkel
Platform where tasks are uploaded, AI-evaluated, and human-reviewed.
Like this: The official grading center for your exam.
Package with /snorkel-zip, upload in the web UI, then read difficulty, pass rates, and reviewer notes.
Submission ID
A unique ID (UUID) for one task on Snorkel.
Like this: An order number — never guess or retype it.
Copy/paste. Wrong ID = editing or uploading the wrong task.
b1caa84d-c2e0-4c9c-a4c9-2ab25626846c
Difficulty
How hard models found the task: TRIVIAL → EASY → MEDIUM → HARD.
Like this: The report card after the AI class takes the exam.
Target: HARD (or MEDIUM), Solvable, roughly ≤ 5/10 passes with at least one pass.
AHT (handling time)
Minutes you spent — entered when you upload.
Like this: Billing time on a ticket — it only goes up on re-uploads.
Never decrease AHT. An identical value can be rejected as a duplicate.
Rubric
Scorecard of good and bad agent behaviors.
Like this: Extra credit / demerit checklist for how the agent behaved.
Created in the Snorkel UI. Lines start with “Agent”, use +/− scores, plus totals 10–40, ≥3 negatives.
Agent writes a failing test first, +2
NEEDS_REVISION
Snorkel state meaning it’s your turn to fix and re-upload.
Like this: Teacher handed the paper back with notes.
Only updatable state. If EVALUATION_PENDING, wait. If REJECTED, ask a human to reopen.