Releases: MilindGaharwar/fettle
Release list
docs(release): authored v1.13.0 release notes
Fettle v1.13.0: Evidence Integrity Hardening
Fettle v1.13.0 closes every finding from an adversarial audit of its own
evidence chain. The attacks are pinned by tests so they stay fixed: forged or
stale evidence can no longer turn a gate green, live agent runners lose their
blanket permission bypasses, and policy resolution now governs every consumer.
What Changed
- The assurance record's behavior dimension requires a passing verify stamp
bound to the current session and HEAD revision; a red run is FAIL and a
hand-written or stale stamp stays UNKNOWN. A red stamp also overrides a
completed mutation report. - The verify and CI Stop gates fail closed when a green stamp omits its
canonical-evidence reference; deleting the key from the agent-writable stamp
no longer skips the canonical validation layer. - Assurance dimensions consume real, verifiable evidence: the CI dimension
reads the stampfettle ci waitactually writes and requires a green
verdict bound to HEAD; authorization verifies capsule digest integrity;
UAT requires the canonical sidecar to bind the exact report content,
session, and completion. - Live agent runners replace
--dangerously-skip-permissionsand--yolo
with deny-by-default tool grants; a test invariant pins that no runner argv
carries a permission-bypass flag. - Profile command overrides and assurance release policies resolve through
the layered policy resolver, so a repository-level override can no longer
silently defeat org policy — and org packs can now supply release policies. - UAT sessions, evaluator passes, and eval scenarios launch child agents
under delegation capsules visible tofettle report --lineage; a
provisioning failure downgrades to a traced ungoverned launch, never a
silent one. - The quality gate surfaces subprocess timeout, crash, and unparseable output
astool_errorinstead of a silent allow, restoring failure visibility and
escalation. - The host capability matrix declares per-event enforcement (block vs
notify);fettle doctordiscloses hosts where enforce-mode gates can only
notify, and bridge fail-open toasts say so explicitly. - Supply chain: the TLA+ verification workflow checksum-verifies
tla2tools.jarand runs with least-privilege permissions; workflows and the
published action pin actions by commit SHA and install analyzers at the
pinned tool versions; workflow inputs reach shells only via environment
indirection. - LOW-severity sweep: the
FETTLE_GATE_MODE=offkill switch is screened in
every Bash command segment; mutation subprocesses no longer inherit
credential-bearing environment variables; per-check budget overruns are
traced; the agent-writable profile cache cannot override resolver-governed
commands; published bridge directories are owner-only. - Documentation now leads with
pipx install "finefettle[all]"as the single
installer covering analyzers, mutation, evaluation, commit hooks, and
browser automation on top of the dependency-free core.
Deprecations and Accepted Risks
- The
scripts→fettle/compatibility symlink will be removed in the next
minor release. - Recorded accepted risks: runner prompts remain visible in process argv, and
delegation environment export briefly mutates process environment on
single-threaded launch paths.
Upgrade Notes
pipx upgrade finefettle
fettle doctorLive UAT and eval runners now execute with scoped tool grants instead of
permission bypasses. If an agent run needs a tool outside the default grant,
the denial is visible in the transcript; no configuration migration is
required.
v1.12.3
Fettle v1.12.3: Dependency-Free Installed Demo
Fettle v1.12.3 makes the product's control loop directly observable from the
base package. The bundled demonstration runs offline in a temporary directory
with Git and without third-party Python dependencies.
What Changed
- Added
fettle demo, a deterministic four-stage walkthrough that introduces a
broad exception handler, detects it, repairs it, and independently verifies
the repaired behavior with four bundled tests. - Added an actionable prerequisite error with macOS, Debian/Ubuntu, and Windows
installation commands when Git is unavailable. - Kept the base
finefettleinstallation dependency-free. External quality,
mutation, evaluation, and UAT capabilities remain available through optional
extras, includingfinefettle[all]. - Added assurance sufficiency policies and standalone capability, multi-agent,
and guided-workflow references. - Corrected the release smoke test to distinguish the package from standard
virtual-environment bootstrap tooling. - Added a post-publication canary in a clean
python:3.11-slimcontainer that
installs Git, reports the installed Python package count, and runs the public
PyPI wheel's complete demo.
The v1.12.2 tag is retained as an unpublished failed release; no v1.12.2
artifacts reached PyPI.
Upgrade Notes
pipx upgrade finefettle
fettle demoNo configuration migration is required.
v1.12.1
Fettle v1.12.1: Apache-2.0 License
Fettle v1.12.1 adopts the Apache License 2.0 for this and later releases.
Releases through v1.12.0 remain available under the MIT License under which
they were published.
What Changed
- Replaced the repository and package license with Apache-2.0.
- Added
NOTICE,TRADEMARK.md, andCITATION.cff. - Added Developer Certificate of Origin sign-off guidance for contributions.
- Synchronized Python, Claude plugin, and VS Code package metadata.
- Included
LICENSEandNOTICEin both wheel and source distributions.
Upgrade Notes
This release changes licensing and project metadata only. It does not change
Fettle's runtime behavior or configuration contract.
v1.12.0
Fettle v1.12.0: Enforced Mutation Gate, Governance Ledger, Graph Intelligence
Fettle's mutation gate is no longer advisory on Fettle's own repository:
changed-scope survivors now block merges, backed by more than ten qualifying
retained runs and a reviewer-confirmed actionability precedent. This release
also lands the change-integrity hypergraph through its advisory CLI, a
tamper-evident governance ledger, artifact-bound acceptance verdicts, and
frozen cross-view consistency contracts.
Start With The New Capabilities
pipx install "finefettle[all]"
cd your-project
fettle pipeline # composed gate/check pipeline with provenance
fettle graph status # ephemeral hypergraph digest + provider completeness
fettle graph impact src/ # advisory blast-radius closure
fettle ledger status # governance evidence ledger stateWhat Changed
Mutation Quality — Enforcement Live (on Fettle's own repo)
- Required
mutation evidencePR check with bounded shard fan-out, automatic
replay of timed-out or lost shards, and fail-closed aggregation that names
the offending shard. - Changed-scope survivor enforcement ratified and enabled after >=10
qualifying retained runs; first enforced-week triage checklist and
demotion/re-entry criteria documented (docs/mutation-ratchet-decision.md).
Change Integrity (P38, P45, P46, P47, P48)
- Canonical specification traceability with drift evidence: stable-ID marker
index, executed-result binding (declaration is linked; only a pass
verifies), governed-change advisories. - Graph-independent source snapshots: deterministic committed manifests,
content-hashed working manifests, verified materialization, read-set
revalidation. - Deterministic ephemeral hypergraph with five native providers and atomic
snapshot-bound publication. - Advisory graph CLI:
fettle graph status|impact|shadow, including shadow
parity against the legacy semantic layer (zero unexplained narrower
results on maintained fixtures).
Governance Evidence (P41)
- Commit-linked, tamper-evident ledger (
fettle ledger status|verify|anchor):
hash chain with precise break localization, commit/CI-artifact anchoring
with explicit known/unknown coverage, rotation checkpoints, default secret
redaction.
Authorship Separation (P52) — Graduated
- Adversarial hardening (symlink aliases, traversal, absolute paths),
topology advisor role-separation recommendations, evidenced two-role
sessions.
User Acceptance (P72, P73, P74)
- Artifact-bound reconciliation: sessions retain per-scenario observation
bundles; CONFIRMED without artifacts degrades to INDETERMINATE; transcript
drift is detected. - Exploration charters ([uat].explore) with Saboteur/Money/Supermodel tours;
CANDIDATE findings recorded verbatim for human review. - Web surface driving (playwright) with full-page screenshot +
accessibility-tree capture.
State Consistency (P53/SC1)
- Frozen canonical contract schema with unknown-key rejection, comparator
and consistency-model validation, TEMPLATE_V1, and lint.
Authorship Gate Rule
- New enforced rule
test-flow-root-cwd(CWE-362): mutation-flow calls in
test functions must not use cwd-relative roots.
Packaging
- Extras are real install targets;
pip install "finefettle[all]"composes
every capability over the batteries-included core wheel. - Release checklist codified (docs/RELEASE_CHECKLIST.md), including the
squash-merge head-SHA rule.
Upgrade Notes
fettle initre-run recommended after upgrading (bridge versioning).- Mutation gate enforcement is repository-local policy; downstream repos
graduate independently (see docs/mutation-ratchet-decision.md). - Filename-substring requirement inference in
fettle trace_requirements
is deprecated — declare# traces: <spec-id>/<scenario-id>markers.
v1.11.1: Python 3.11 Evidence Compatibility
Fixed
- Restored canonical evidence parsing on Python 3.11 by validating serialized
result states through the enum constructor instead of version-dependent enum
containment behavior.
Verification
- CI passed on Python 3.11, 3.12, 3.13, and 3.14, plus macOS, coverage, lint,
completion evidence, and the repository self-scan. - The release wheel and source distribution passed package smoke tests and
source reconstruction checks. - PyPI Trusted Publishing, build provenance, and CycloneDX SBOM generation
completed successfully.
v1.11.0
Fettle v1.11.0: Wheel-Native Agent Governance
Fettle's core promise now starts from the package users actually install. The
v1.11.0 wheel can register Claude Code, Codex CLI, Gemini CLI, and OpenCode
without requiring a Fettle source checkout.
Start With The Complete Loop
pipx install finefettle
pipx inject finefettle ruff
cd your-project
fettle init --dry-run
fettle init
fettle doctorInitialization publishes a versioned bridge under the platform user-data
directory, binds it to the exact Fettle version and Python executable, and
preserves unrelated host configuration. --dry-run previews every mutation.
What Changed
- Wheel-native transports for Claude Code, Codex CLI, Gemini CLI, and OpenCode.
- SHA-256 manifest validation for every bridge-owned file.
- Atomic bridge publication, idempotent reinitialization, tamper detection, and
explicit recovery throughfettle doctor. - Bundled Claude SubagentStart transport and all 17 guided workflows.
- A contract-tested two-minute assurance example with accessible visual and
text proof. - Structured bug and feature intake plus three bounded starter issues for new
contributors.
Trust Boundaries
- Hooks remain advisory-first session feedback; CI remains independently
authoritative. - Fettle does not overwrite malformed or foreign host configuration.
- Ruff, Semgrep, and other analyzers remain explicit and user-controlled.
- Codex still requires its documented
[features] hooks = truesetting. - The bridge is not an operating-system sandbox.
Verification
- Bridge/init/doctor/workflow/proof focused suite: 81 tests passed.
- Wheel and source distribution installed in separate clean environments.
- Dry-run immutability, idempotency, paths with spaces, tamper recovery, and a
normalized out-of-checkout hook event were verified. - Release artifacts include PyPI provenance, GitHub build provenance, and a
CycloneDX SBOM.
Full Changelog
v1.10.0
Fettle v1.10.0: Reproducible Mutation Evidence
Fettle v1.10.0 turns full-repository Python mutation testing from an expensive
experiment into reproducible assurance evidence.
What Changed
- Two independent full calibrations reproduced all 28,723 canonical outcomes:
14,107 killed, 14,611 survived, five native timeouts, zero suspicious, and
zero untested mutants. - Fingerprint-keyed checkpoints can resume compatible full calibrations without
rerunning terminal mutants. - Baseline comparison now separates surviving-mutant changes from timeout,
suspicious, and skipped evidence debt. fettle mutation statuscorrectly evaluates retained reports against a
committed baseline.- README and active documentation now route users by adoption outcome and state
current product boundaries explicitly.
Adoption And Upgrade
Install or upgrade the zero-runtime-dependency CLI:
pipx upgrade finefettle
# or: pipx install finefettleRuff, Semgrep, and mutation tooling remain explicit, user-controlled tools. The
v1.10.0 wheel supports CLI workflows, rules, and templates; live agent
transports still require the documented Git checkout path in this release.
Evidence
- The accepted repository mutation floor is 49.1 percent for this pinned
calibration, not a universal quality target. - Release artifacts include the wheel, source distribution, CycloneDX SBOM,
and GitHub build-provenance attestations. - Changed-scope mutation enforcement remains advisory until representative
runtime and reviewer-actionability criteria pass.