A doomed LLM automaton stuck in a competitive-programming hellscape.
Attempt history · Prompt · Latest summary
Every day at 13:37 UTC, GitHub Actions picks one Exercism Zig problem, sends it through OpenRouter's openrouter/free model router, runs zig test, and commits the result. Pass/fail is logged here and published on this website.
Attempt history: https://s04.github.io/zigsyphus/
The runner is a small Zig CLI. It asks Zigsyphus for one replacement source file, copies it into the exercise, and runs the official tests.
The project uses the MIT-licensed Exercism Zig practice bank. Difficulty is a small ladder: the first adaptive run starts at 1, a pass moves the next run up one level, and any non-pass moves it down one level, clamped between 1 and 9.
Each run has a full audit trail:
data/bronze/runs/: prompt, response metadata, selected problem, and writer log.data/silver/attempts/: submittedsolution.zig, attempt metadata, and deterministic test result.data/gold/:runs.csv,summary.json,difficulty.json, and dashboard-ready scoring history.
The prompt lives in .github/workflows/daily.yml under ZIGSYPHUS_SYSTEM_PROMPT. The logs also keep the routed OpenRouter model, token counts, reported cost, retry state, selected exercise, pass/fail counts, and final score.
Archived solutions were revalidated with isolated Zig caches on 2026-09-02 after a shared-cache bug was found. Corrected result files retain their previous verdicts under revalidation.previous.
Run the repository, dashboard-link, and deterministic good/bad control checks:
./check.shUse the pinned local Zig 0.16 binary when present:
./.tools/zig-0.16.0/zig versionInstall it locally on Apple Silicon macOS:
mkdir -p .tools
curl -L --fail -o .tools/zig-0.16.0.tar.xz https://ziglang.org/download/0.16.0/zig-aarch64-macos-0.16.0.tar.xz
tar -C .tools -xf .tools/zig-0.16.0.tar.xz
mv .tools/zig-aarch64-macos-0.16.0 .tools/zig-0.16.0
rm .tools/zig-0.16.0.tar.xzFixture good run:
ZIGSYPHUS_DATA_ROOT=/tmp/zigsyphus-good \
./.tools/zig-0.16.0/zig build run -- daily --mode fixture-good --problem-slug leap --min-difficulty 1 --max-difficulty 9 --repair-attempts 0 --skip-readmeFixture bad run:
ZIGSYPHUS_DATA_ROOT=/tmp/zigsyphus-bad \
./.tools/zig-0.16.0/zig build run -- daily --mode fixture-bad --problem-slug leap --min-difficulty 1 --max-difficulty 9 --repair-attempts 0 --skip-readmeLive OpenRouter run:
OPENROUTER_API_KEY=... ./.tools/zig-0.16.0/zig build run -- daily --mode liveThe daily workflow runs at 13:37 UTC and can also be started manually. It picks the current adaptive difficulty unless a manual difficulty range is supplied, writes one attempt, tests it, updates this README table, commits the audit log, and deploys the Pages dashboard.
Required GitHub secret:
OPENROUTER_API_KEY
| Date | Exercise | Difficulty | Model | Status | Passed | Score | Attempt |
|---|---|---|---|---|---|---|---|
| 2026-09-25 | Rectangles (rectangles) |
7 | openrouter/free |
pass/compiled | 15/15 | 100 | 180221Z-r03-rectangles |
| 2026-09-25 | Rectangles (rectangles) |
7 | openrouter/free |
compile_error/compile_error | 0/15 | 10 | 180221Z-r02-rectangles |
| 2026-09-25 | Rectangles (rectangles) |
7 | openrouter/free |
compile_error/compile_error | 0/15 | 0 | 180221Z-r01-rectangles |
| 2026-09-25 | Rectangles (rectangles) |
7 | openrouter/free |
compile_error/compile_error | 0/15 | 0 | 180221Z-r00-rectangles |
| 2026-09-24 | Say (say) |
6 | openrouter/free |
pass/compiled | 23/23 | 100 | 175521Z-r01-say |
| 2026-09-24 | Say (say) |
6 | openrouter/free |
compile_error/compile_error | 0/23 | 0 | 175521Z-r00-say |
| 2026-09-23 | Wordy (wordy) |
7 | openrouter/free |
compile_error/compile_error | 0/28 | 10 | 175537Z-r07-wordy |
| 2026-09-23 | Wordy (wordy) |
7 | openrouter/free |
compile_error/compile_error | 0/28 | 10 | 175537Z-r06-wordy |
| 2026-09-23 | Wordy (wordy) |
7 | openrouter/free |
fail/compiled | 27/28 | 98 | 175537Z-r05-wordy |
| 2026-09-23 | Wordy (wordy) |
7 | openrouter/free |
compile_error/compile_error | 0/28 | 10 | 175537Z-r04-wordy |
| 2026-09-23 | Wordy (wordy) |
7 | openrouter/free |
compile_error/compile_error | 0/28 | 10 | 175537Z-r03-wordy |
| 2026-09-23 | Wordy (wordy) |
7 | openrouter/free |
compile_error/compile_error | 0/28 | 10 | 175537Z-r02-wordy |
| 2026-09-23 | Wordy (wordy) |
7 | openrouter/free |
compile_error/compile_error | 0/28 | 0 | 175537Z-r01-wordy |
| 2026-09-23 | Wordy (wordy) |
7 | openrouter/free |
compile_error/compile_error | 0/28 | 0 | 175537Z-r00-wordy |
| 2026-09-22 | Palindrome Products (palindrome-products) |
8 | openrouter/free |
compile_error/compile_error | 0/15 | 0 | 174347Z-r03-palindrome-products |
| 2026-09-22 | Palindrome Products (palindrome-products) |
8 | openrouter/free |
compile_error/compile_error | 0/15 | 10 | 174347Z-r02-palindrome-products |
| 2026-09-22 | Palindrome Products (palindrome-products) |
8 | openrouter/free |
compile_error/compile_error | 0/15 | 0 | 174347Z-r01-palindrome-products |
| 2026-09-22 | Palindrome Products (palindrome-products) |
8 | openrouter/free |
compile_error/compile_error | 0/15 | 0 | 174347Z-r00-palindrome-products |
| 2026-09-21 | Binary Search Tree (binary-search-tree) |
7 | openrouter/free |
pass/compiled | 12/12 | 100 | 185239Z-r04-binary-search-tree |
| 2026-09-21 | Binary Search Tree (binary-search-tree) |
7 | openrouter/free |
compile_error/compile_error | 0/12 | 10 | 185239Z-r03-binary-search-tree |
