github m0n0x41d/haft v9.1.0
Haft v9.1.0

3 hours ago

Haft 9.1.0

Haft 9.1.0 gives each EvidenceRecord an independent, version-controlled
Markdown carrier. Its published predecessor is
v9.0.3.

Evidence collaboration

Evidence attached through the existing decision, measurement, maintenance, and
verification paths is written to .haft/evidence/<evidence-id>.md. The local
SQLite row remains the runtime query projection. The Markdown file is the git
collaboration carrier, so two additions to the same parent produce distinct
files instead of editing the parent solely to attach evidence.

The v1 carrier preserves the EvidenceRecord ID, exact parent, content, verdict,
source carrier, claim references and scope, validity, formality scale and
bridge, causal support basis, provenance, and creation/update timestamps.
haft sync validates that envelope and imports it through evidence_items, not
the generic artifact table. Once the exact parent exists in the receiving
ledger, a clean evidence projection can therefore reconstruct the record and
retain the same R_eff, F_eff, G_eff, decay, and freshness inputs.

The parent boundary remains strict. Evidence does not create an absent parent,
and in particular cannot create or broaden a WorkCommission or MethodRun. A
carrier with a missing parent, conflicting identity, changed parent binding, or
unsupported schema fails closed. If a 9.0.x client previously imported the
exact 9.1 carrier as a generic EvidencePack, 9.1 repairs that matching row;
it does not remove a conflicting artifact.

Projection debt and repair

SQLite commit and carrier publication are separate effects. If the semantic row
commits but the atomic file publication fails, Haft returns a projection
warning and records durable debt. haft check includes each open debt as a
finding. haft sync validates and imports pulled Markdown before retrying the
remaining writes, so a queued backfill cannot overwrite a collaborator's
carrier. It returns non-zero before debt repair when any carrier is invalid,
and also returns non-zero when a remaining repair fails. If a carrier differs
from the exact digest recorded by a post-commit publication failure, sync
reports a projection conflict and preserves both the file and SQLite row for
explicit reconciliation.

Decision measurement also republishes evidence whose verdict changed to
superseded, so its carrier does not claim an active observation after the
SQLite transition.

FPF refresh compatibility

FPF refresh now accepts structurally recognizable new practical-use result
labels through one source-preserving domain projection. Admitted label families
retain their source blocks, future result-like labels remain visible as review
diagnostics, and malformed or unsupported source still fails strict parsing.

The bundled source and query index move to FPF revision 036c056e with 8,119
source units. Typed-memory carrier 1.6.0 pins the new Base TypeEnv; carrier
1.5.0 and its exact base artifact remain available unchanged for historical
replay.

Upgrade from v9.0.3

Install 9.1.0 and reconnect or restart each host so it loads the new binary.
haft serve may advance project-ledger schema 58 to 59 at startup. Haft writes
and verifies a private SQLite snapshot before that automatic migration. The
explicit CLI upgrade paths remain haft init and the exact haft project migrate command reported by a current-schema diagnostic; haft sync itself
does not migrate the database. Schema 59 preserves existing evidence rows, adds
their missing projection fields, and queues each pre-9.1 row as carrier
backfill debt.

Run this once in each upgraded project and commit the generated evidence files:

haft sync
git add .haft/evidence
git commit

Review the exact files before committing when the worktree contains unrelated
changes. haft check should report zero evidence carrier projection debt after
the backfill succeeds.

A 9.0.3 binary treats schema 59 as future. Binary downgrade therefore requires
an offline restore of the verified schema-58 snapshot; installing the older
binary alone is not a database rollback.

Existing public CLI and MCP evidence request/response fields are unchanged.
The new carrier path, projection warning, and haft check JSON field are
additive.

This committed note describes the release contract. It is not P13 or P14
evidence and does not authorize publication. Exact-main CI, race qualification,
installed-runtime qualification, tag validation, and GitHub Release publication
remain separate gates.

Don't miss a new haft release

NewReleases is sending notifications on new releases.