jev-builder-loop

September 16, 2026 ยท View on GitHub

A Grok skill: you write the questions and environment state, Jev returns typed probabilities, you mix them with priors into posteriors, then you act.

Jev is not a coder. The loop exists to cut wasted retries and operator babysitting.

Install

git clone https://github.com/rainbowpuffpuff/jev-builder-loop.git
mkdir -p ~/.grok/skills
ln -sfn "$(pwd)/jev-builder-loop" ~/.grok/skills/jev-builder-loop

Set TYPESAFE_API_KEY. Then at a loop boundary:

python3 ~/.grok/skills/jev-builder-loop/scripts/loop.py < state.json

See SKILL.md for when to call, the question bank, and the mix/policy.

Benchmark

Problem: ship a signed Android App Bundle after a UI change merged to main.

# uses committed Jev answers (no API key)
python3 scripts/benchmark.py

# refresh answers
TYPESAFE_API_KEY=... python3 scripts/benchmark.py --live

Scores land in benchmarks/RESULTS.md.

Before = what a coding agent did (or would do) without this skill. jev_raw = trust Jev's next_act argmax. skill = mix + hard-fact veto.

On the first snapshot, before is 1/9 and skill is 6/9 (historical 0/5 โ†’ 4/5). The mix removed wasted Gradle retries and "merge = store ship" errors. Leftover misses are over-cautious gather_facts. Jev argmax scored 9/9 here; one of those hits is ship_or_merge at confidence 0.29, and on a first timeout Jev's repeat_failure noul (0.97) contradicts its own retry_same choice. The mix is the conservative side of that disagreement.

Historical cases are anonymized from a real session (green PR left waiting for review; merge treated as a store ship; Gradle retried with an empty JAVA_HOME; extra upload ping after the operator already had the path). No private paths, keys, or product internals.

License

MIT