chuzom/loophole

CI for AI agents — a swarm works until a falsifiable verifier PROVES the goal is done. Bring your own agent; loophole is the trusted gate.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
contractPath to the Goal Contract (from `loophole init`). Ignored when `goal` is set.noloophole.json
goalAd-hoc goal text — an alternative to --contract for a one-off check. Requires `verify`.no""
verifyHard verifier command for an ad-hoc `goal` (exit 0 = done).no""
workspaceDirectory the swarm works in.no.
executorA registered framework adapter (see `loophole executor list`).no""
executor-commandBring-your-own executor CLI, e.g. 'claude -p {task}'. Sandboxed either way; the verifier boundary is unchanged.no""
planner-modelprovider:model for planning.nochuzom:moderate
executor-modelprovider:model for execution.nochuzom:complex
max-roundsRound circuit-breaker.no25
versionloophole-agents version to install (pip version spec). Empty = latest from PyPI.no""
fail-on'not-done' (default) fails this step when the run isn't verified done; 'never' always exits 0 so the workflow can branch on the outputs instead (report-only mode).nonot-done
commentPost/update a sticky PR comment with the Residual-Risk Report, and create a Check Run annotated with any write-allowlist violations. Only meaningful on pull_request-triggered workflows; requires `permissions: { pull-requests: write, checks: write }` in the caller's workflow (the default GITHUB_TOKEN otherwise lacks these scopes).nofalse
github-tokenToken used for --comment. Defaults to the job token.no${{ github.token }}
namedescription
status'done' | 'paused' | 'failed'
verified-done'true' | 'false'
exit-codeloophole's own exit code: 0 = done, 1 = not done, 2 = config error
result-jsonAbsolute path to the full machine-readable run result.