Skip to content

Commit d3269ef

Browse files
committed
docs: record deferred post-1.0 additive surface in state freeze
Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
1 parent dd28159 commit d3269ef

2 files changed

Lines changed: 45 additions & 0 deletions

File tree

state/CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,35 @@ ready to freeze on sign-off. The `analysis`, `evolution`, `conformance`, and
183183
copy-on-write, trace-history bounding, and random-IR fixpoint and
184184
eventless-termination fuzzing.
185185

186+
### Deferred additive API surface (post-1.0, non-breaking)
187+
188+
These are deliberate v1.0 boundaries, not oversights. Each lands later as a purely
189+
additive change — a new builder method, a new option on an existing variadic tail,
190+
or a new optional IR field — so adopting it never breaks a v1 caller. The freeze
191+
locks today's surface precisely so these can be added without a major bump.
192+
193+
- Payload-carrying `Raise`: the raised internal-event queue is runtime-internal
194+
today, so a transition raises an event without data. A future builder method
195+
carries a payload, backed by an additive optional field on the IR transition;
196+
the existing `Raise []E` slice is unchanged.
197+
- Multi-target transitions: a single transition targets one state via `To`. A
198+
future `.ToAll(...)` builder, backed by an optional `Targets` IR field, expresses
199+
a fan-out; `To` keeps its current single-target meaning.
200+
- `context.Context` on `Verify` / `PlanPath` / `Cast` / `Restore` and the snapshot
201+
codecs: these take no `context.Context` at v1. A future `WithContext` option on
202+
each existing option tail threads cancellation and deadlines without changing a
203+
signature. (`RestoreActors` already takes a `context.Context`.)
204+
- Relaxing `SnapshotActors`' non-quiesced refusal: it refuses to snapshot a
205+
non-quiesced actor system by design. A future `SnapshotActorsOption` lets a host
206+
opt into a defined non-quiesced capture; the strict refusal stays the default.
207+
- Finer Inspector cadence: the Inspector fires once per macrostep — that
208+
once-per-macrostep cadence is the documented v1 contract. A future additive
209+
`InspectKind` exposes per-microstep events for callers that want them; existing
210+
inspectors keep their macrostep cadence.
211+
- A metrics `Meter` seam: there is no metrics hook at v1. A future `WithMeter`
212+
option attaches a meter through the existing option tail, alongside the structured
213+
logger and inspector seams.
214+
186215
## [1.0.0]
187216

188217
The first stable release. The 0.2.0 to 1.0.0 step finalizes the breaking changes

state/doc.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,4 +417,20 @@
417417
// Trace records a structured EventPayload alongside the human Event label so a
418418
// recorded event stream replays the exact event — the journal/durable-execution
419419
// seam the deterministic step makes sound.
420+
//
421+
// # Deferred additive surface
422+
//
423+
// Some capabilities are deliberately out of scope at v1.0 and reserved for a later
424+
// release as purely ADDITIVE, non-breaking work — each arrives as a new builder
425+
// method, a new option on an existing variadic tail, or a new optional IR field,
426+
// so adopting it never breaks a v1 caller. These are intentional boundaries, not
427+
// oversights: a payload-carrying raise, multi-target transitions (a .ToAll builder
428+
// over an optional Targets field, leaving To single-target), a context.Context
429+
// option on Verify/PlanPath/Cast/Restore and the snapshot codecs (RestoreActors
430+
// already takes one), an opt-in to snapshot a non-quiesced actor tree (today
431+
// SnapshotActors refuses with a typed error), a finer per-microstep Inspector
432+
// cadence (the v1 contract fires the Inspector once per macrostep), and a metrics
433+
// Meter seam alongside the logger and inspector seams. The frozen v1 surface is
434+
// locked precisely so these land without a major bump; the module CHANGELOG tracks
435+
// the full list.
420436
package state

0 commit comments

Comments
 (0)