Releases: boldaxolotl/booley
Releases · boldaxolotl/booley
Release list
v0.2.15
New features
- Every built-in Flow now returns the same versioned
FlowPlanfrom a dry run.
The plan records each Target or baseline work unit, timeout, resolved inputs,
recipe, command, expected artifacts, and planning errors without running EDA
or changing durable Project state. When--report-diris set, the dry run
writes only<report-dir>/<flow>/flow_plan.json.
(PR #398,
PR #406) - Simulation now uses one explicit mode selector for ordinary simulation,
elaboration-only checks, and elaboration plus standalone module checks. The
CLI values aresimulate,elab-only, andelab-only-standalone.
(PR #400,
PR #406)
Quality of life
- Built-in Flow timeouts now use one positive
timeout_mscontract across
configuration, CLI, and MCP calls. Each work unit gets the full active-time
budget; time waiting for a job slot is excluded.
(PR #398) - Reviewer and Mutation Tester calls now share required scope, repeatable
steering, and non-persisting dry-run inputs. Reviewer calls are source-scoped
and targetless. Mutation calls take one Target and derive the testbench and
RTL closure from it.
(PR #405) - The Session Runtime now uses Verilator v5.052 at source commit
ea338be98e1e838d3518809ce8899f85a009963c. The release passed the compiler,
Cocotb, waveform, diagnostic, and native coverage compatibility matrix.
(PR #233,
#153)
Bug fixes
- Doctor keeps its known-good and known-bad Simulation overlays in separate,
freshly reset build variants. Stale timestamps or a cached good executable
can no longer make the deliberate failure probe pass.
(PR #397) - Target validation distinguishes executable inputs from simulator option
values. Valid settings such as the Verilator timescale1ns/1nsno longer
appear as missing programs, while missing executables still fail strictly.
(PR #399) - Acceptance Basis validation reconstructs Booley-generated core projections
from the accepted commit. Setup, Flow entry, resume, and final handoff accept
unchanged generated files and still reject altered or externally routed
projections. (PR #410) - Returning a Ticket to draft now preflights standalone submodules before
moving worktrees, recovers interruptions after the filesystem move, and
reports the deinitialization command for unsupported native Git submodules.
(PR #412)
Upgrade notes
- Replace
--timeoutwith--timeout-ms. The old CLI spelling remains a
deprecated alias for one compatibility window. Configuration and MCP calls
usetimeout_ms. - Replace Simulation's agent-facing
elab_onlyandstandalonebooleans with
mode: simulate,mode: elab_only, ormode: elab_only_standalone. The CLI
accepts--mode simulate,--mode elab-only, or
--mode elab-only-standalone;--elab-only,--build-only, and
--standaloneremain deprecated CLI aliases for one compatibility window. - Physical synthesis Targets must own an SDC fileset that creates a clock.
Booley no longer accepts a per-run default clock or generates a timing
constraint. Logical synthesis does not require or consume SDC. - Reviewer callers must pass
--scope; standalone specification reviews use
--specinstead of--ticket. Remove--diff-refand Reviewer--target.
Mutation callers must select one Target instead of supplying DUT or testbench
topology separately. - When Acceptance Basis inputs must change, run
booley board return-to-draft <slug>. Booley archives the previous run and
starts a new authoring generation. Deinitialize native Git submodules first
if the command reports them. - After upgrading, run
booley bootstrap. Refresh a headless runtime with
booley session refresh, or use Dev Containers: Rebuild Container for a
VS Code runtime so the Verilator v5.052 image is installed.
v0.2.14
Bug fixes
- Python release publication now grants reusable source validation permission
to inspect workflow artifacts, allowing exact-tag validation to start before
PyPI upload and GitHub Release creation. This patch supersedes v0.2.13, whose
tested container images published successfully but whose Python publication
workflow was rejected before any job started.
v0.2.12
New features
- B-Wave's
--virtualoption now works across the documented five-command
matrix. Virtual Signals support fail-fast ordered resolution,sample
trigger and capture expressions, andvaluepoint evaluation. The CLI,
public docs, and Coverage Analyst guidance now describe the same behavior.
(#320)
Quality of life
booley authnow mints Claude credentials inside the validated Session
Runtime while credential storage and runtime-spec reseeding remain on the
host. It safely reuses running runtimes and recovers interrupted refreshes.- Doctor now probes the live MCP catalog through a supported entry point and
reconciles positively identified stopped VS Code Session Runtimes. Deep
Doctor resolves only its selected Targets, avoiding unnecessary work across
large vendored Target matrices. - Project initialization and Doctor now share a typed, guarded line-ending
reconciliation path. Repairs revalidate the worktree, index, attributes, and
Git configuration before changing files, preserving unrelated staged work.
(#259) - The Session Runtime now includes Claude Code 2.1.259 and Codex CLI 0.153.1.
Development checks use Ruff 0.16.6. - Installation guidance now distinguishes first-time setup from upgrades.
Bug fixes
- Concurrent synthesis runs can no longer delete a shared Target workspace
while another run is using it. Workspace leases remain held through report
snapshotting, and timeouts or release failures are reported as infrastructure
errors. - Acceptance Journal recovery now tracks and reconciles exact prepared and
finalized commit identities, preserves finalized commits across interrupted
cleanup, and safely handles concurrent or symbolic ref movement.
(#257) - Cycle Count grading preserves both the durable Target identity and callable
selector across current and baseline evidence, and rejects ambiguous or
identity-drifting baseline resolution.
(#267) - Testbench reviews bind their selected simulation Target before inspecting
candidates, so unrelated or ambiguous Targets cannot redirect the review.
(#268) - Doctor runs simulation probes from the correct Project directory and opens
generated contracts transactionally, leaving failed attempts retryable.
(#269) - Doctor's simulation fail-path check now applies bad firmware and vector
overlays through an isolated runtime view, preventing configured run
directories from masking the deliberate failure or replacing real inputs. - Doctor now recognizes tests generated by cocotb 2
@cocotb.parametrize,
treating rendered IDs as statically unverifiable while retaining warnings
for ordinary misspelled test names. - Successful cocotb trace conversion removes simulator-owned raw VCD files,
including files emitted outside the managed work directory. Failed
conversions retain raw traces and diagnostics in the simulation work area. - Simulation elaboration-only checks now classify missing build executables as
EDA tool errors while preserving report metadata and leaving the design
verdict unset. - Windows initialization again recognizes trusted installed console launchers
after path normalization without accepting Project-controlled executables.
(#313) - Managed Project Images now force PEP 517 isolation when installing pinned
dependencies, restoring packages with legacy source distributions such as
cocotb-teston the Python 3.13 sandbox. - Native B-Wave metadata now remains correct for both single-root and
multi-root traces. (#266)
Upgrade notes
- No configuration migration is required. After upgrading, run
booley bootstrap, then usebooley session refreshfor a headless runtime
or Dev Containers: Rebuild Container for a VS Code runtime.
v0.2.11
Quality of life
- Added the host-owned Project Inventory and
booley projectscommand, with
shared discovery, status, access-grant, and JSON views. Help text now marks
commands by host or Session Runtime. - FPGA setup now exposes target-aware Doctor probes and dry-run checks across
the CLI and MCP surfaces, including clearer Vivado and board-target guidance. - Updated the Session Runtime to Verible v0.0-4163-g6cce8f19, Claude Code
2.1.258, and Codex CLI 0.152.1, and refreshed the immutable Python and Docker
CLI bases used by sidecars. - Version-change warnings are more prominent during startup, and the demo
guidance now links directly to feedback.
Bug fixes
- Host bootstrap now requires Git 2.37.2 or newer, avoiding a Git for Windows
temporary-name exhaustion failure during large line-ending repairs. - Host bootstrap now secures the shared Booley configuration directory before
preparing the PDK cache, so existing caches cannot block Session Runtime
issuance during an upgrade. - Flow entry points now validate Target compatibility and identity before EDA
setup, and implementation comparison evidence retains durable Target
identities instead of relying on checkout-local objects. - Session Runtime issuance now finds trusted Booley executables installed in
Python's per-user scripts directory even when that directory is absent from
PATH. - Skill reconciliation now always deploys packaged skills to
.agents/skills
for Codex, while continuing to deploy to a distinct existing.claude/skills
directory. booley session refreshnow journals replacement checkpoints and recovers
safely after interruption. It parks the target Session Runtime, reconciles
dependencies, commits forward only after verifying the replacement, and
retains recoverable state when cleanup cannot finish.- Source checkouts no longer acquire Project or Stealth policy accidentally;
repository classification, hook installation, and managed-state placement
now preserve the source-checkout boundary. - Session Image provenance is now scoped to the image that actually runs the
Project, avoiding stale rebuild prompts from unrelated images. - Stealth projects now keep core projections and FPGA target metadata within
their protected project state.
Upgrade notes
- Percentage-based acceptance-criterion values must include an explicit
%
suffix, for examplecycle_count_reduce_at_least: 5%. - Custom MCP clients must negotiate protocol version
2026-07-28. Booley's
built-in Claude Code and Codex configurations are updated automatically. - Host bootstrap now requires Git 2.37.2 or newer. The complete demo stack
requires at least 21 GB of free storage.
v0.2.10
New features
- Bare
booleynow opens the Project's configured Claude Code or Codex chat;
booley chatis the explicit equivalent andbooley --helpremains the
command reference. - Added Project-independent
booley bootstrapfor host prerequisites, skills,
the shared PDK cache, the base Session Image, and global proxy and reaper
services.booley initperforms the same reconciliation when needed. - Added durable, version-aware upgrade review state with scriptable status and
compare-and-swap acknowledgment. Doctor and Session Runtime startup identify
pending or stale reviews;/booley-healreviews the exact packaged changelog
range and acknowledges it only after verification.
Quality of life
- Updated the Session Runtime to Node.js 24.20.0 and Claude Code 2.1.252.
- Updated the egress proxy, FlexNet relay, and reaper sidecars to Python 3.14.7,
with tests for CONNECT streaming, relay forwarding, owned-container cleanup,
unavailable-daemon handling, and container hardening. - Replaced the unavailable historical OpenROAD package with the official 26Q3
OCI channel at an immutable digest. Logical and physical synthesis matched
the 0.2.9 area, utilization, cell count, and netlist results. - The RISC-V image now pins Spike to a validated upstream snapshot and runs its
upstream test suite during the build. The PicoRV32 release smoke now tests
the project's publicmaincommit rather than a private CI-only branch. - Documentation now distinguishes simulation, lint, synthesis, and FPGA
implementation as separate Booley Flows. It also describes the current stock
VS Code interface and agent-written development process, and expands the
Ticket Mode and CI roadmap.
Bug fixes
- Claude Code and Codex now install their required Linux/x64 native artifacts
explicitly so optional-package failures cannot leave unusable launchers. - Updated to cocotb 2.1.0 and its Icarus GPI contract while retaining cocotb
1.x and 2.0 compatibility. Production-image Icarus and Verilator cocotb flows
now run in CI. - Confidential-content pre-push checks now validate destination refs and scan
changed tree entries. They still cover newly exposed history, merges,
renames, deletions, and malformed input. - Runtime-image builds now use bounded pip download timeouts and retries.
Upgrade notes
- Run
booley bootstraponce after upgrading. Existing Project
booley.toml [interactive]host-policy fields are retired; move them to the
host policy file named bybooley initorbooley doctor. - When Booley reports a version change, invoke
/booley-healto review these
notes, repair drift, and acknowledge the upgrade.
v0.2.9
Booley 0.2.9
Booley 0.2.9 moves elaboration checks into sim, gives synthesis and FPGA implementation a shared report format, fixes setup, ticket, image, and diagnostic failures, and updates the runtime toolchain.
New features
synthandfpgawrite the same versionedimplementationobject with the policy-resolved grade, Target identity, quality-of-results metrics, recipe, provenance, baseline comparison, cache state, and immutable report and log pointers. Both Flows also write atomic stable aliases, numbered reports, and live multi-Target progress. PR #187booley flow sim --elab-onlycompiles, elaborates, and links an ordinary untraced Simulation Target without running tests.--build-onlyis a permanent alias,--standaloneadds the reusable-module sweep, and successful builds recordelab_pass_<target>before simulation. See Upgrade notes for migration steps. PR #185booley initaccepts links into another live checkout when the packaged skill trees match. Retargeting a managed or equivalent link requiresbooley init --force, displays both targets, and preserves unrelated files, directories, links, and junctions. Issue #178
Quality of life
- The ticket-creation approval gate shows each new Target's name, destination, and full definition with the Ticket. If validation changes a Target, the gate asks for approval again. PR #170
booley session refreshand Session and Project Image builds stream redirected output and emit heartbeats during silent stages. Bounded failure diagnostics remain available. Issue #176- Booley keeps user guides under
docs/user/and implementation material underdocs/internals/, with separate Flow reference and troubleshooting guides. Setup directs new Tickets tobooley runand labels the host checkhost_prerequisites. PR #162, PR #171 - The Session Runtime ships Verible v0.0-4157-gfdbac312, Claude Code 2.1.251, and Codex CLI 0.151.0. PR #189
Bug fixes
- Pulled GHCR sandbox flavors verify parent ancestry by registry digest, retain their short tags, and pass an immutable local image ID into Interactive Mode. Locally built images still reject stale ancestry. Issue #172
- Sealed Tickets resolve criterion Targets in the contract worktree after creating it. Contract-only Targets work during fresh setup and resume, while destination-only Targets cannot replace the reviewed contract. Issue #173
- On Windows,
booley initapplies guarded LF normalization to the project checkout and a separately cloned project-data repository. Doctor identifies the repository that remains unsafe. Issue #174 - Deep Doctor carries its internal Target authority into Lint. The deliberate bad-case Target receives a design-failure grade without becoming visible on public Target surfaces. Issue #175
- Live checkouts read their own
VERSIONinstead of combining stale distribution metadata with the checkout's commit identity. Wheels still report their owning distribution metadata. Issue #177
Upgrade notes
- Replace
booley flow elabwithbooley flow sim --elab-only. Movestandalone_frontendfrom[flows.elab]to[flows.sim], removeelabfrom Target Doctor lists, and readsim_<target>.jsonwithmode: "elab_only"instead ofelab_<target>.json. Removekeep_build_dir; Simulation now retains its untraced build cache after success and failure.
v0.2.8
Booley 0.2.8 makes project setup safer for automation, expands ticket acceptance-criteria guidance, and corrects Claude runtime and deep Doctor behavior. Release preflight now catches Docker/demo failures before tagging.
New features
booley init --skip-credentialsconfigures a project's provider and authentication policy without entering or storing placeholder credentials. Normal policy validation still applies.- Ticket acceptance-criteria guidance now explains how projects can use area and cycle-count criteria to enforce PPA budgets, and coverage and mutation-testing criteria to strengthen testbenches.
Bug fixes
- Claude agents now use the supported Claude Agent SDK launcher and command construction, including Windows launchers. Authentication and traffic overrides stay scoped to the child process.
- Deep Doctor checks now use the same isolated FuseSoC registry and build context as execution. This prevents generated projections or good firmware from masking bad simulation and lint fixtures.
- The release Docker/demo preflight is now credential-free and candidate-only. It validates the exact release commit before tagging without promoting version or
latestimages, using a reviewed, pristine, Doctor-clean PicoRV32 demo (#166, #167).
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.
v0.2.6
What's Changed
- feat(ticket): use one post-grill draft gate by @boldaxolotl in #62
- docs: document disk space requirement by @boldaxolotl in #72
- ci: isolate native B-Wave integration tests by @boldaxolotl in #78
- ci: parallelize coverage collection by @boldaxolotl in #79
- ci: parallelize production image validations by @boldaxolotl in #80
- ci: deepen Docker cache boundary by @boldaxolotl in #81
- ci: add change-aware required check by @boldaxolotl in #82
- ci: publish stable EDA/runtime base by @boldaxolotl in #83
- fix(init): use published RISC-V image for demo setup by @boldaxolotl in #74
- fix(init): preserve sidecar failure diagnostics by @boldaxolotl in #85
- Fail early when generated bind sources disappear by @boldaxolotl in #84
- fix(init): normalize clean CRLF checkouts by @boldaxolotl in #73
- Fix stale Dev Container bind reconciliation by @boldaxolotl in #86
- Enforce Session Runtime-only Flow execution by @boldaxolotl in #87
- fix(ci): reuse stable base cache in PR smoke by @boldaxolotl in #95
- Redesign synthesis modes and reporting by @boldaxolotl in #89
- fix(setup): keep runtime diagnostics coherent by @boldaxolotl in #98
- fix(criteria): enforce F-46 acceptance evidence contracts by @boldaxolotl in #102
- docs(ticket-board): clarify review lifecycle by @boldaxolotl in #101
- chore(deps): integrate validated Dependabot updates by @boldaxolotl in #104
- chore(deps): bump actions/checkout from 6.1.0 to 7.0.1 by @dependabot[bot] in #90
- chore(deps): bump docker/build-push-action from 6.19.2 to 7.3.0 by @dependabot[bot] in #91
- chore(deps): bump docker/setup-buildx-action from 3.12.0 to 4.3.0 by @dependabot[bot] in #92
- chore(deps-dev): bump ruff from 0.15.18 to 0.16.4 by @dependabot[bot] in #93
- chore: release 0.2.6 by @boldaxolotl in #106
Full Changelog: v0.2.5...v0.2.6
v0.2.5
What's Changed
- Fix release demo smoke runtime setup by @boldaxolotl in #76
- Release 0.2.5 by @boldaxolotl in #77
Full Changelog: v0.2.4...v0.2.5