v0.2.7
Booley 0.2.7 adds per-test cycle criteria, directed Target comparisons, reusable ticket guidance, CLI-readable review packages, and optional Target cleanup. It fixes image refresh, cancellation, Target resolution, tracing, completion recovery, and acceptance evidence.
New features
- Cycle Count criteria can grade each Target and test with absolute limits or relative percentage and cycle-delta thresholds. Directed Target pairs run the frozen baseline and candidate on different Targets for synthesis, FPGA, and cycle comparisons. Existing single-Target syntax still compares the same Target on both sides. (Cycle Count criteria, directed Target pairs)
- Project-owned Ticket Creation Guidance can describe defaults and policy as free-form Markdown. Booley applies the relevant guidance, validates the resolved Ticket, records its
on_successpolicy, and keepsticket_defaults.mdas a fallback. (guidance, defaults and policy)
Quality of life
- Ticket Mode now writes a versioned JSON review package for every Ticket that reaches review, including runs without a triage agent. CLI agents receive the package path through
BOOLEY_RUN_RESULT, andbooley board prepare-reviewreports it directly. (review packages) - Ticket branches can carry prepared Target contracts for the outer repository and an optional paired Project repository. Contracts bind the selected branches and source commits before validation or candidate preparation. (prepared Ticket workspaces)
on_success.remove_targetscan remove criterion-bound.coreTargets and ownedtests.tomltables from an accepted candidate. The sealed contract fixes the exact removal set before completion. (Target cleanup)- Setup documentation now explains ownership of the stealth Project repository and where project-specific state belongs. The README and PyPI description describe Booley as an integrated RTL IDE built around agent workflows. (Project repository guidance, README)
Bug fixes
- Normal-use fixes cover Ticket control-artifact round trips, compiler-isolated mutation variants, staged Reviewer contracts, focused Cocotb trace diagnostics, Doctor fail-path fixtures, clean Developer handoffs, and release-matched sandbox images. Mutation evidence names the exact source variant, trace requests validate real B-Wave content, and expected Codex recovery is no longer a warning. (issue #88)
- Fixes from the Ibex port require provider and authentication selection before init seeds runtime state, allow no-EDA sessions with a read-only authority store, keep elaboration on simulation Targets, refresh stale Doctor output, use the project root for an unset simulation
run_cwd, support Ticket-less Interactive Reviewer receipts, parse legacy Cycle Count mappings, and prevent paired-contract archive collisions. (issue #127) - Session Image refresh now uses one provenance lifecycle for pulled, locally built, flavored, and Project-derived images. Same-version images from another source revision are stale; managed parents rebuild in order; custom external images remain unmanaged; and refresh verifies the recreated runtime. (issue #128)
- Interrupting
booley session enter -- <command>now cancels and reaps the complete container process tree. Renewable job leases, zombie detection, PID identity checks, and bounded recovery prevent an abandoned HEAVY slot from blocking later work. (issue #129) - Verilator tracing now resolves one VCD or native FST recipe across compiler flags, runtime objects, harness behavior, transport, and validation. Authored FST Targets are no longer partially rewritten into VCD builds. (issue #130)
- Contracts, prompts, Doctor, and Flows now share one canonical resolved Target interface. It separates durable identity from the exact callable selector, resolves conditional FuseSoC inputs once, omits fabricated bindings for Target-independent criteria, and preserves schema 3 contracts while writing schema 4. (issue #131)
- Paired-repository completion now validates an immutable plan before mutation and records each publication and cleanup step in a durable journal. Retries resume from verified commit identities, and cleanup cannot delete a destination branch. (issue #132)
- Ticket acceptance evidence is now separate from Doctor diagnostics and other live runtime state. Completion freezes an accepted snapshot, so cleanup and self-tests cannot erase red-green evidence or make completed Tickets display
0/N. (issue #133) - Isolated worktrees can materialize configured submodules from an already initialized Project without remotes, SSH, global Git configuration, or shared
.gitpointers. The destination gitlinks remain authoritative, and unsafe or incomplete local sources fail with actionable errors. (offline submodule setup) - CRLF repair now refreshes only normalized tracked index entries, heals stale index metadata, and never stages content. Doctor detects status-only failures and points Windows users to a fresh-clone repair path. (issue #107)
Upgrade notes
booley initno longer selects a default agent provider. Choose the provider and authentication method explicitly before init creates or refreshes provider-dependent runtime state.- Recreate Ticket contracts older than schema 3. Schema 3 contracts remain readable after the schema 4 Target-interface update.
- New projects use
ticket_creation.md. Existingticket_defaults.mdfiles remain supported as a legacy fallback and do not require immediate migration.