Affects the released 0.0.6 line only — the Host/Instance surface no longer exists on main (0.1.0 format 1 replaced snapshots with sealed execution checkpoints). Recording for anyone pinned to 0.0.x, and as input to the 0.0.x support-status decision (fruwehq/determa-state-spec#66).
Reproduced against the 0.0.6 tree:
- Timer
seq lost → KeyError crash. Instance.to_snapshot serializes timers as {fire_at, state_path, spec} (instance.py:655-659), dropping the seq armed at instance.py:525; Host.advance sorts due timers by t["seq"] (engine.py:197). snapshot_all → restore_all → advance raises KeyError: 'seq'. Conformance case 21 round-trips an armed timer but never advances afterwards, so the suite misses it.
- Host-seeded
external map not serialized (instance.py:644-662); after restore, re-entering a state re-initializes external esvs against an empty dict, silently losing seeded values.
- Host clock and spawn counters absent from library snapshots (engine.py:225-239): restored absolute
fire_at values race a reset clock, and a post-restore spawn can re-issue an existing child id, overwriting host.instances[child_id].
If the resolution of the spec issue is "0.0.x frozen/unsupported", this can be closed with a README note on the 0.0.x releases; otherwise fixes need conformance cases (roundtrip+advance, roundtrip+external re-entry, restore+spawn).
Affects the released 0.0.6 line only — the
Host/Instancesurface no longer exists on main (0.1.0 format 1 replaced snapshots with sealed execution checkpoints). Recording for anyone pinned to 0.0.x, and as input to the 0.0.x support-status decision (fruwehq/determa-state-spec#66).Reproduced against the 0.0.6 tree:
seqlost →KeyErrorcrash.Instance.to_snapshotserializes timers as{fire_at, state_path, spec}(instance.py:655-659), dropping theseqarmed at instance.py:525;Host.advancesorts due timers byt["seq"](engine.py:197).snapshot_all → restore_all → advanceraisesKeyError: 'seq'. Conformance case 21 round-trips an armed timer but never advances afterwards, so the suite misses it.externalmap not serialized (instance.py:644-662); after restore, re-entering a state re-initializes external esvs against an empty dict, silently losing seeded values.fire_atvalues race a reset clock, and a post-restorespawncan re-issue an existing child id, overwritinghost.instances[child_id].If the resolution of the spec issue is "0.0.x frozen/unsupported", this can be closed with a README note on the 0.0.x releases; otherwise fixes need conformance cases (roundtrip+advance, roundtrip+external re-entry, restore+spawn).