@@ -9,6 +9,142 @@ A machine definition is treated as a schema: see the
99counts as an additive (minor) versus breaking (major) change. Use the
1010` state/evolution ` package to classify a machine change and decide the bump.
1111
12+ ## [ Unreleased] — v1.0.0 release candidate
13+
14+ Freeze-ready, pending human sign-off. This release candidate resolves the v1.0
15+ freeze-readiness gap analysis: the parallel-region commit path now matches the
16+ documented semantics, the serialized IR round-trips losslessly, and the frozen
17+ public surface is locked. It is intentionally ** not tagged** ; the data model,
18+ serialized IR, context model, effect envelope, and emission-ordering contract are
19+ ready to freeze on sign-off. The ` analysis ` , ` evolution ` , ` conformance ` , and
20+ ` verify ` subpackages ship as advisory (not part of the frozen contract).
21+
22+ ### Fixed
23+
24+ - A ` Raise ` declared on a region-internal transition is now delivered instead of
25+ silently dropped (kernel parallel-region commit path).
26+ - A region-internal transition targeting a same-region history pseudostate now
27+ resolves history correctly instead of leaving the pseudostate permanently stuck as
28+ an active leaf.
29+ - A compound nested inside a parallel region now emits its done event and fires
30+ ` OnDone ` when its leaf reaches final.
31+ - A parallel state that completes inside an enclosing compound now cascades that
32+ compound's ` OnDone ` (and any guarded completion transition) up the spine, instead
33+ of silently dropping it; the parallel's own ` OnDone ` still fires exactly once.
34+ - Region transition and entry actions now observe the threaded, exit-assign-folded
35+ context, consistent with the main commit path.
36+ - Eventless (` Always ` ) transitions now fire in every active parallel region and no
37+ longer collapse a sibling region's configuration.
38+ - Exiting a parallel state now runs every active region leaf's ` OnExit ` actions
39+ innermost-first, in declaration order; an event handled only by a sibling region
40+ of an outer parallel is now delivered through nested parallels correctly.
41+ - A panicking host action is recovered into a typed ` ActionPanicError ` instead of
42+ crashing ` Fire ` .
43+ - An event matched by a guard-failed candidate inside a region now bubbles to the
44+ parallel-state-level handler instead of causing the fire to fail silently.
45+ - The raised-event queue is reset when a macrostep errors, so a queued event no
46+ longer leaks into the next ` Fire ` .
47+ - Effects are emitted only on a fully successful ` Fire ` ; a failed fire emits no
48+ effects (transactional effect emission on the main commit path).
49+ - ` Snapshot ` /` Restore ` preserves bounded-history (` WithHistory(n) ` ) retention
50+ instead of reverting to unbounded.
51+ - ` SnapshotActors ` refuses a non-quiesced actor tree with a typed
52+ ` NonQuiescentActorError ` instead of silently dropping queued messages.
53+ - ` Trace.AssignsApplied ` is aggregated across all microsteps of a macrostep instead
54+ of reporting only the triggering microstep's assigns.
55+ - ` Region ` , ` Invocation ` , and ` IOSpec ` IR nodes now preserve unknown JSON fields and
56+ ` Meta ` losslessly, making the lossless round-trip guarantee true for every
57+ IR-reachable node type.
58+ - ` GuardPanicError ` and ` AssignPanicError ` now ` Unwrap ` to the recovered error, and
59+ ` SnapshotError ` exposes its cause, so ` errors.As ` /` errors.Is ` can reach a wrapped
60+ sentinel through any of them.
61+ - ` SchemaOf ` returns an honest ` SchemaAny ` for interface, func, chan, and complex
62+ types instead of coercing them to ` SchemaString ` .
63+ - Builder cursor consumers (` When ` , ` Do ` , ` Assign ` , ` Raise ` , ` GoTo ` , and friends)
64+ now panic with an actionable construction-time message when no transition is open,
65+ instead of silently dropping the call.
66+ - ` analysis ` honors wildcard (` OnAny ` ) edges and excludes forbidden (` Forbid ` /
67+ ` ForbidAny ` ) edges from reachability and dead-end analysis, removing false
68+ unreachable and dead-end findings.
69+ - ` evolution ` now detects transition order/priority, guard-operator structure,
70+ initial-child, history, context-schema, and eventless-edge changes, and classifies
71+ any unmodeled structural difference as breaking (fail-safe), closing silent
72+ under-reporting of behavior-changing edits.
73+ - ` conformance ` compares effects order-sensitively and payload-aware, and captures
74+ trace and final context, so it no longer passes a reordering or wrong-payload
75+ regression.
76+ - The pointer-context determinism diagnostic is advisory and is not rejected under
77+ ` Quench(Strict()) ` ; pointer context remains a supported escape hatch.
78+
79+ ### Added
80+
81+ - Typed errors ` ActionPanicError ` , ` RegionEscapeError ` , ` HistoryCrossRegionError ` ,
82+ and ` NonQuiescentActorError ` ; ` Quench ` now rejects a region-escaping transition
83+ target and a cross-region history target at build time.
84+ - ` WithRestoreInspector ` and ` WithRestoreLogger ` restore options to re-attach
85+ observability after ` Restore ` .
86+ - ` SchemaAny ` schema kind; ` Cause ` field on ` SnapshotError ` .
87+ - A v1.0 interface-surface freeze: ` ContextView ` is sealed (crucible-only) while
88+ ` Clock ` , ` ContextCodec ` , ` Snapshotter ` , and ` ActorInstance ` are documented as
89+ frozen, host-implementable interfaces grown post-v1 via optional interfaces, with
90+ compile-time conformance assertions.
91+ - ` analysis ` finding kinds ` KindUndefinedTarget ` and ` KindInternalError ` .
92+ - ` conformance ` ` WithSnapshotSink ` option and ` AssertEffectsPayloads ` .
93+ - ` verify ` kind-specific ` Finding ` accessors (` IsReachable ` , ` Holds ` , ` Violated ` ,
94+ ` Covered ` ).
95+ - An advisory pointer-context determinism diagnostic surfaced through Temper/Assay.
96+
97+ ### Changed
98+
99+ - ` WaitMode ` , ` HistoryType ` , and ` ActorKind ` integer wire values are documented as
100+ frozen and append-only; ` JournalRandom ` is specified to ride
101+ ` JournalEntry.Payload ` .
102+
103+ ### Documentation
104+
105+ - Stability banners: ` analysis ` , ` evolution ` , ` conformance ` , ` verify ` , and
106+ ` verify/symbolic ` are documented as advisory (not part of the frozen contract);
107+ ` expr ` documents its guard-expression semantics and deterministic evaluation
108+ environment as part of the v1.0 contract.
109+ - ` verify ` docs corrected to state that bounded simulation enumerates
110+ configurations (not traces), the covering suite is a structural guarantee, and
111+ only the holding verdict is exact.
112+ - Documented that ` Instance ` is not safe for concurrent use; that timer absolute
113+ deadlines are a host concern (` ResumeEffects ` re-arms at the full declared delay
114+ while ` durable ` persists deadlines); the guard eval-error asymmetry (eventless
115+ guards fail closed, event-driven guards fail loud); the v1.0 stability scope; and
116+ the known limitation that entering a compound via initial descent onto a final
117+ leaf does not raise that compound's done event.
118+ - ` Trace.PoliciesEvaluated ` documented as reserved (always empty in v1.0).
119+
120+ ### Tests
121+
122+ - Exhaustive symbolic op-table regression tests over every guard operator (the only
123+ unsoundness-capable code path).
124+ - Seeded property tests for snapshot resume-equivalence and parallel-region
125+ determinism.
126+ - Regression tests porting the parallel-region kernel probes: Raise-in-region,
127+ history-into-region, interior-compound done, sibling-region eventless and exit,
128+ nested-parallel delivery, and a simultaneous-region-completion pin.
129+
130+ ### Deferred to a future release (with reason)
131+
132+ - Entering a compound via initial descent directly onto a final leaf does not raise
133+ that compound's done event (documented known limitation; additively fixable, but
134+ emission-changing, so deferred to an opt-in minor).
135+ - The transactional-effects fix is scoped to the main commit path; the region
136+ commit path retains partial-emit-on-error behavior at the freeze.
137+ - ` verify.Finding.Reachable ` polarity reshape (verify is advisory; additive
138+ kind-specific accessors are provided instead of a breaking field change).
139+ - ` conformance ` ` Assertion.Expected ` /` Event ` payload reshape and auto-derived effect
140+ assertions in generated goldens (advisory; needs a host entity/codec, which would
141+ be a breaking change).
142+ - Snapshot-carried absolute timer deadlines (` Pending.TimerDeadlines ` ) — documented
143+ as a host concern in v1.0; additive in a later release.
144+ - Post-v1.0 performance items: lazy hot-path trace-string construction, ref-slice
145+ copy-on-write, trace-history bounding, and random-IR fixpoint and
146+ eventless-termination fuzzing.
147+
12148## [ 1.0.0]
13149
14150The first stable release. The 0.2.0 to 1.0.0 step finalizes the breaking changes
0 commit comments