Skip to content

Releases: StructuPath/jig

Release list

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 05:29
a1b67a5

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:

  1. hands the failing checks, plus the end of each failed GitHub Actions job's log, to the run phase. The log is framed as data, never instructions.
  2. re-runs every phase after it: tests, reviewers, the risk classifier;
  3. judges acceptance and the publish hold again;
  4. 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 is accepted only once CI on its pull request is green, and the control plane enforces this.
  • Risk gate and publish hold: comparison if: guards, reports_fields code phases, and publish.hold_when to park work for a person.
  • Per-role controls: budget_usd spend caps and effort.
  • 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.json could 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_records and add publish_ci_repairs. Back up jig.db first 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_usd or effort.
  • Parameter values containing {{…}} placeholders now stay literal instead of being substituted.
  • gh: job logs are read with --allow-escape-sequences. An older gh without 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

Choose a tag to compare

@github-actions github-actions released this 07 Aug 05:00
891890e

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

Full Changelog: https://github.com/StructuPath/jig/commits/v0.1.0