Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 31 additions & 21 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,29 @@ All notable changes to Looper are documented here. Versions follow
[Semantic Versioning](https://semver.org/); the loop spec format is versioned
separately via `version:` in `loop.yaml` (currently `1`).

## Unreleased
## 0.4.0 — 2026-07-07

### Added — `looper lint`
- `looper.py lint <loop.yaml>` — the design rubrics as a static checker, no
wizard required. Compiles the spec first (compile rejections exit 2), then
reports findings in two severities: **errors** for specs that will not
behave the way they read at runtime (`judge-criterion-unreachable` — judge
criteria on a `fixed_passes` gate, or under a human verdict source, are
never evaluated; `unscoped-egress` — a gate-referenced cross-vendor member
with no `privacy.egress` declaration; `egress-unknown-member` — an egress
entry naming nobody) and **warnings** for rubric coaching
(`all-vibe-verification`, `no-verification-criteria`, `same-family-judge`,
`delivery-gate-no-programmatic`, `non-local-member-without-egress`,
`egress-consent-pregranted`, `unreferenced-council-member`,
`unhonored-human-checkpoint`, `missing-max-revisions`,
`no-wall-clock-cap`, `no-stop-conditions`, `shell-string-check`,
`unresolved-placeholders`). Exit 1 on errors, or on any finding with
`--strict`; `--json` emits machine-readable findings for CI (exit 2
compile failures print to stderr, no JSON).
- The wizard now runs `lint` after every compile and treats errors as
blockers, warnings as coaching to relay (SKILL.md step 10).
- A test sweep asserts all five shipped templates and the example lint with
zero errors.

### Added — runner contract v1 + conformance suite
- `RUNNER-CONTRACT.md` — the normative contract for third-party runners
Expand Down Expand Up @@ -62,26 +84,14 @@ separately via `version:` in `loop.yaml` (currently `1`).
match the documented evaluator-model behavior (single-vendor evaluation,
not literal self-grading).

### Added — `looper lint`
- `looper.py lint <loop.yaml>` — the design rubrics as a static checker, no
wizard required. Compiles the spec first (compile rejections exit 2), then
reports findings in two severities: **errors** for specs that will not
behave the way they read at runtime (`judge-criterion-unreachable` — judge
criteria on a `fixed_passes` gate are never evaluated; `unscoped-egress` —
a gate-referenced cross-vendor member with no `privacy.egress` declaration;
`egress-unknown-member` — an egress entry naming nobody) and **warnings**
for rubric coaching (`all-vibe-verification`, `no-verification-criteria`,
`same-family-judge`, `delivery-gate-no-programmatic`,
`non-local-member-without-egress`, `egress-consent-pregranted`,
`unreferenced-council-member`, `unhonored-human-checkpoint`,
`missing-max-revisions`, `no-wall-clock-cap`, `no-stop-conditions`,
`shell-string-check`, `unresolved-placeholders`). Exit 1 on errors, or on
any finding with `--strict`; `--json` emits machine-readable findings for
CI (exit 2 compile failures print to stderr, no JSON).
- The wizard now runs `lint` after every compile and treats errors as
blockers, warnings as coaching to relay (SKILL.md step 10).
- 10 new tests (37 total), including a sweep asserting all five shipped
templates and the example lint with zero errors.
### Tests
- Suite grew 27 → 49 across this release: lint checks (positive and
negative per check), redaction regressions (cmd-output scrub, host-prompt
scrub, leak attribution, unscrubbable surfacing, consent-shows-warning,
crash-leaves-terminal-state), and the conformance wrapper holding the
reference runner to the contract in CI. Every PR in this release
(#16–#19) received a pre-merge high-effort adversarial review; all
confirmed findings were fixed before merge.

## 0.3.0 — 2026-07-05

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "looper-skill"
version = "0.3.0"
version = "0.4.0"
description = "A Claude Code skill that scaffolds well-designed agent loops."
readme = "README.md"
requires-python = ">=3.9"
Expand Down
Loading