Releases: StructuPath/jig
Release list
v0.2.0
CI repair
Red CI is now repaired inside the attempt. A definition that waits for CI can declare what to do when it's red:
publish:
ci:
wait: true
on_fail: {run: build, budget: 2}Each round:
- hands the failing checks, plus the end of each failed GitHub Actions job's log, to the
runphase. The log is framed as data, never instructions. - re-runs every phase after it: tests, reviewers, the risk classifier;
- judges acceptance and the publish hold again;
- pushes the fix non-force to the same pull request only if all of that passes, then waits for CI again.
Safeguards:
- Bounded: at most 1–3 rounds, sharing the attempt's own send budget and time limit.
- Lease-checked before every push: a round whose lease was lost never pushes.
- Never builds on someone else's commit: if CI is red on a head jig didn't push, no round runs.
Any round that fails, is held, is cancelled or changes nothing leaves the job accepted_unpublished, exactly as red CI did before. The publish-only retry judges CI but never repairs.
factory.yaml opts in with two rounds. Its risk classifier now holds any change that edits CI or lint configuration, or removes more test lines than it adds, so a "fix" that weakens a check instead of the code waits for a person.
Proven live: three real runs with Claude Code on GitHub. One was repaired to green, one exhausted its budget, and one had a person push mid-wait and correctly ran no round. Results are in docs/plans/2026-09-27-001-feat-ci-repair-plan.md.
Also since v0.1.0
- CI gate:
publish.ci.wait. A job isacceptedonly once CI on its pull request is green, and the control plane enforces this. - Risk gate and publish hold: comparison
if:guards,reports_fieldscode phases, andpublish.hold_whento park work for a person. - Per-role controls:
budget_usdspend caps andeffort. - Fleet view: in the UI.
Fixes that matter
- macOS: Claude Code's login is now seeded from the keychain first, which is where the CLI keeps it. Previously a stale
~/.claude/.credentials.jsoncould make every agent fail with "OAuth session expired". - Prompt construction: placeholders are now substituted in one pass over the definition's own template. A
{{…}}inside a parameter value or inserted text now stays literal, and can no longer rewrite or suppress prompt sections.
Upgrading
- The database migrates automatically on first open. Migrations 004 and 005 rebuild
publish_recordsand addpublish_ci_repairs. Back upjig.dbfirst if you care about it. - Upgrade the control plane and every worker together. Definition parsing is strict, so a v0.1.0 binary rejects a frozen snapshot that uses
on_fail,hold_when,ci,budget_usdoreffort. - Parameter values containing
{{…}}placeholders now stay literal instead of being substituted. gh: job logs are read with--allow-escape-sequences. An olderghwithout that flag is detected and asked again without it.
What's Changed
- fix(worker): count in-flight events as undelivered by @Steel-tech in #7
- docs: make the release install concrete, and say that a verdict is stated by @Steel-tech in #8
- docs: add the MIT license by @Steel-tech in #9
- feat(controlplane): list the worker fleet, and show it by @Steel-tech in #10
- feat: current-model rosters, per-role effort and spend caps, and a risk-gated factory definition by @Steel-tech in #11
- Wait for green CI before a job is accepted (publish.ci) by @Steel-tech in #12
- feat(protocol): declare and validate publish.ci.on_fail (CI repair, U1) by @Steel-tech in #13
- Land CI repair U2 + U3 on main (merged into stacked bases by #14/#15) by @Steel-tech in #16
- feat(worker,engine): hand a repair round the tail of each failed CI job's log (CI repair, U4) by @Steel-tech in #17
- feat(worker): repair red CI in rounds inside the attempt (CI repair, U5) by @Steel-tech in #18
- Feat/ci repair factory by @Steel-tech in #19
Full Changelog: v0.1.0...v0.2.0
v0.1.0
What's Changed
- feat: jig Milestone 1 — control plane, worker, phase engine, and direct run harness by @Steel-tech in #1
- fix: address PR #1 review findings (includes a kill(-1) guard now missing from main) by @Steel-tech in #2
- feat: jig Milestone 2 — definitions, runs, admission triggers, publish, and Codex by @Steel-tech in #4
- fix: truncation guard, adapter drain bound, and fail-closed path resolution by @Steel-tech in #3
- fix: missing-verdict diagnostic and jig def argument order in docs by @Steel-tech in #5
- fix(worker): keep the trace buffer within its cap across a failed send by @Steel-tech in #6
New Contributors
- @Steel-tech made their first contribution in #1
Full Changelog: https://github.com/StructuPath/jig/commits/v0.1.0