Skip to content

Releases: ksimback/looper

v0.4.0 - looper lint + runner contract

Choose a tag to compare

@ksimback ksimback released this 07 Jul 22:17
48ed538

v0.4.0 — the rubrics become law, the spec becomes an interchange format.

looper lint — the design rubrics as a static checker

python scripts/looper.py lint path/to/loop.yaml   # --strict, --json

No wizard, no interview. Errors mean the spec won't behave the way it reads at runtime (judge criteria a runner never evaluates, undeclared cross-vendor egress, egress entries naming nobody); warnings are rubric coaching (all-vibe verification, same-family judge, missing caps, and ten more). Exit 1 on errors — wire lint --strict into CI to gate loop specs in PRs the same way you lint code. The wizard runs it after every compile.

Runner contract v1 + conformance suite

loop.resolved.json is now an interchange format. RUNNER-CONTRACT.md is the normative contract for third-party runners — gates, caps, fail-closed consent, two-layer redaction, state/log obligations, exit codes — and the conformance suite proves a runner honors it:

python conformance/check_runner.py path/to/your-runner

Ten scenarios, deterministic fixtures, no model CLIs needed. Sabotage-tested: a runner with redaction disabled fails five scenarios. The reference runner is held to the suite in CI.

Redaction covers every send

The host was the one recipient whose prompts were never scrubbed — flagged-file content that leaked into an artifact went verbatim to the host CLI. Now: every send is scrubbed (host included), cmd context-source output is scrubbed, caught leaks are logged and surfaced in state.json, the consent prompt shows leak warnings before asking, and unscrubbable flagged files (>1MB, non-UTF-8) are reported as blind spots instead of silently skipped.

Positioning

README reframed around the Claude Code team's loop taxonomy (turn-based / goal-based / time-based / proactive): each loop type hands something off — the check, the stop condition, the trigger, the whole prompt — and Looper is the design layer that supplies each hand-off.


Test suite 27 → 49; CI green on Python 3.9–3.13 × ubuntu/windows/macos. Every PR (#16#19) passed a pre-merge high-effort adversarial review. Full details in CHANGELOG.md.

v0.3.0 — Loop pattern library

Choose a tag to compare

@ksimback ksimback released this 06 Jul 05:12
269d8b6

Named, pre-designed loops the /looper wizard customizes instead of starting from a blank interview.

Highlights

  • Five templates under templates/loops/, each a compiler-validated loop.yaml with {{PLACEHOLDER}} slots, a README (use-when, placeholder table, customization notes), and helper check scripts where the pattern needs them:
    • security-scan — read-only sweep for secrets, PII, and vulnerabilities → triaged SECURITY-FINDINGS.md (promoted from the real run that produced hermes-ecosystem's security fixes)
    • code-review — review a branch's diff → typed, severity-rated REVIEW.md grounded in the diff
    • bug-hunt — reproduce a bug, fix the root cause, prove it with before/after repro evidence
    • docs-sync — find and fix doc/code drift → per-item DRIFT-REPORT.md; docs follow code, code untouched
    • research-synthesis — synthesize collected sources into a cited REPORT.md; every claim traceable to a file
  • /looper [target-dir] --template <name> — Template Mode: a compressed interview that asks only for the placeholder slots, model selection, and paths, while keeping the full critique, structural-rule, privacy, and preview flow. A template is a pre-answered interview, not a bypass.
  • Compile guardlooper.py compile warns on unresolved {{PLACEHOLDER}} tokens; the wizard treats the warning as an emit blocker.

Tests 16 → 27; CI green across Python 3.9–3.13 on ubuntu/windows/macos.

See CHANGELOG.md for the full list.

v0.2.1 — installer hotfix

Choose a tag to compare

@ksimback ksimback released this 05 Jul 17:42
5e206cc

Hotfix for the Windows install one-liner, which crashed on PowerShell 5.1 with Argument expected for the -c option (#14).

The Python-validation probe introduced in v0.2.0 hit two PowerShell 5.1 behaviors at once: empty-string arguments are dropped when calling native executables, and the probe's stderr redirect became a terminating error under the installer's strict error mode. The probe now validates interpreters with --version and judges them purely by exit code — still correctly rejecting the Microsoft Store python stub (verified on real hardware).

If v0.2.0's installer failed for you, just re-run:

irm https://raw.githubusercontent.com/ksimback/looper/main/install.ps1 | iex

macOS/Linux installs were unaffected.

v0.2.0 — audit remediation

Choose a tag to compare

@ksimback ksimback released this 05 Jul 06:11
c00096b

Remediation release from a full audit of the runner, compiler, installers, and docs (PRs #9#13). No loop spec format changes — version: 1 loop.yaml files compile unchanged.

Highlights

  • Runs on the declared Python floor again: datetime.timezone.utc replaces the 3.11-only datetime.UTC (#9 by @kenstephoang, fixes #8). CI now enforces 3.9–3.13 across ubuntu/windows/macos (#10).
  • Loop control fixed (#11): fixed_passes gates complete cleanly instead of tripping the stall detector on their own synthetic marker; nested-JSON judge verdicts parse (previously every structured verdict silently degraded to revise); a no-progress stop actually stops the run; gate-boundary resume works; failures are recorded in state.json.
  • Security hardening (#11, #12): consent fails closed for any non-local council member; context gathering honors configured redactions; redaction globs match nested paths (config/.env); workspace/context paths are confined to the loop directory at compile time and runtime; register-model refuses credential-shaped values.
  • Windows first-class (#11, #13): UTF-8 subprocess I/O, correct venv path resolution in SKILL.md, LF-stable generated artifacts, BOM-tolerant reads, and installer/skill detection of the Microsoft Store python stub (verified on real hardware).
  • Compiler as a gate (#12): timeouts on every external invocation, empty-argv/negative-budget/duplicate-id rejection, null-tolerant parsing, schemas reconciled with the real compile contract.
  • Project hygiene (#13): CHANGELOG, CONTRIBUTING, uninstall docs, documented ~/.looper/models.json footprint, repo topics.

Full details in CHANGELOG.md. Tests: 7 → 16, all green on the full CI matrix.