v6.1.0 — the field-study release: no defects in raft/xstate/hatchet, seven traps fixed in the tool
Four field studies (hashicorp/raft role + commitment machines, xstate's transition-resolution engine, hatchet's workflow-status rollup) found no defects in any target — and every multi-spec failure traced to a structural gap in what the tool told the generations, never model comprehension. This release fixes all of them, each milestone adversarially reviewed.
Since v5.0.0
sam-pattern 2.2.0 vendored (includes the 6.0.0 move to 2.1.2 prime semantics, previously unreleased). Both upstream issues drafted from the field studies shipped in the library and are adopted here:
- Union types (sam-lib #35):
renderModelShapeemits real union declarations ({ type: ['string','object'] }) for keys detected as unions from trace evidence, init, or pure-type-token notes — the xstate trap (5/5 generations mistypedstate.value) is closed with shape checking intact. - Reject-after-write hard-fail (sam-lib #36): the hatchet trap (5/5 generations annotated success with
reject(reason), silently discarding correct work) now throwsSamFrameErrorat step time; verify keeps a trace-signature fallback (rejectedActedWindows, projection-basis) and findings.md surfaces per-window spec runtime errors.
verify enhancements (plan M1–M7, docs/verify-enhancements-plan.md):
- M1 — frozen-state-key warning: a key no action changes leaves Part 2 structurally blind behind it (raft's
startIndex— a deleted safety gate still model-checked clean); now warned per spec, with--initial-statesplumbed through verify as the remedy. - M2 — runaway-exploration guardrails: drift detection flags likely-unbounded keys (raft's term bump) within seconds instead of a silent 15-minute grind, with a progress heartbeat; completed explorations loudly retract mid-run suspicion.
- M3 — spec-vs-spec agreement: pairwise agreement, named outliers, and a per-finding split column (
4-vs-1 (minority: …)) — with the report stressing the majority is NOT automatically right (in the raft study the lone dissenter was correct). - M4 — scripted negative control (
scripts/mutate.mjs): one command replaces hand-edited controls — polynv's four mutation operators applied to the reference and replayed with pipeline-parity scoring; zero flipped windows on a distinguishable mutation = a corpus blind spot, exit 1. - M5 — skill guidance: real-traces prerequisite (no captured traces → wrong tool), capture-by-subscription-not-polling (the raft Candidate miss), and reading guides for every new report signal.
- findings.md gains: frozen-key and drift warnings, the agreement/consensus line, the reject-as-annotation triage hint, and a distinct spec-runtime-errors section.
Field-study reports: eval/FINDING-raft-field-study.md, eval/FINDING-xstate-union-schema.md, eval/FINDING-hatchet-reject-annotation.md.
🤖 Generated with Claude Code