Repository navigation
v0.41.0
- A holdout can attach to runs without the contract naming it (ADR-0045 widening). Give its machine.toml declaration
attach = { task_types = [...], paths = [...] }. Achangeorverifyrun whose routing type is listed and whose write scope could touch one of the paths then gets a mandatoryattached:<name>criterion, unless a mandatory contract criterion already names the holdout.unclassifiedis refused, and an error names the key path. The attached criterion is rebuilt from the ledger after preflight and inherited by successors. No model sees it in a first prompt; a retry shows only its statement, verdict and failing tests, andrelais decideadds where it was declared. - An attached holdout whose store cannot be read (unreachable, missing, or a ref that does not resolve) is skipped, with a
holdout_attach_skippedevent and a skipped row that is never a catch. A named holdout still refuses the run. - A run's holdouts run concurrently, each in its own copy and
CARGO_TARGET_DIR. The receipt recordswall_msandsource(namedorattached) for each holdout. - Ledger schema 46 adds
sourcetoholdout_definitionsandholdout_outcomes; existing rows read asnamed.relais report --jsonschema 16 addsholdouts.by_source(namedandattachedruns and catches, and attachedskipped), with a by-source line in the text view. relais planlists the holdouts that would attach (holdout <name> attached: task type <t>, path <glob>), and those it would skip, also underholdouts.attachedandholdouts.skippedin--json.
What's Changed
- feat: attach holdouts by declaration by @fredericrous in #349
- chore(release): v0.41.0 by @fredericrous in #350
Full Changelog: v0.40.0...v0.41.0