Skip to content

v0.8.4 release notes

v0.8.4 builds the organ the engine was missing: it verifies the whole assembled deliverable against the brief, not just the parts. A run could join eight real parts into one product and still ship it bare — no title or table of contents, parts mis-numbered so eight read like nine, several under the brief’s per-part length floor — and both QC and the lead’s verify would pass it. This release closes that gap end to end, and keeps it product- and agent-agnostic.


The lead can’t verify a deliverable it can’t read. The engine now extracts, at assembly time, a structural digest (the parts, their sizes in the family’s native unit, which structural elements are present) plus a readable text twin of any bound binary, and feeds those to verify — never the opaque bytes a rendered PDF or a media file would otherwise present. A binary deliverable the engine can’t read can no longer ship clean: it forces an UNVERIFIED reservation calling for a human check.

A DeliverableSpec — a sibling of OutputSpec (checkable facts vs control-flow) — carries the per-part floor, required structure, and title from the job template into the run. A deterministic check runs the assembled whole against it at verify, in the family’s own native unit. An empty spec is exactly the prior behavior.

The engine stamps each unit producer with the per-part floor up front, where QC already enforces a size band — so the cheap producer is held to it upstream instead of being caught at the end. The stamp targets the assembler’s real part set, never a same-kind front-matter / preface page that shares the artifact kind but isn’t a part.

The engine generates the framing the brief declares — title and table of contents — from the spec, per family (a document gets a text head; a video would get a title-card segment; each family renders its own). And it normalizes cross-part numbering to a clean 1..N, conservatively: only when every part self-numbers and the run is actually inconsistent, never fabricated onto unlabeled or mixed-label parts.


Every product-specific move is a per-family dispatch — _STRATEGIES (join), _DIGEST_BUILDERS (eyes), _HEAD_BUILDERS (framing), _CONTINUITY_NORMALIZERS (numbering) — document-first, every other family a graceful no-op, so the engine names no family’s unit, head, or sequence mechanic. The arc cleared a fresh hull + coherence review; the hull pass found and blocked a real over-stamp bug (a same-kind auxiliary inheriting the part floor) and a false smoke command, both fixed before sign-off. 2993 tests pass.