The invariantCompile-time declaration merging does not update the durable vocabulary of another Harness build.
Incident #34168 informational plugin events made 2 otherwise healthy Sessions unreadable.
Valid framing and sequence isolated the missing ignorable: true envelope as the blocking boundary.
Three contracts must agree.
Makes the writer compile.
ignorable?: trueTravels with the stored record.
Controls cold reconstruction.
Choose storage by semantics.
Never mark state-changing records ignorable.
Key audit and telemetry records by Session ID without making resume depend on them.
Test the boundary cold.
- WriteExercise one disposable Session.
- StopEnd the owning process cleanly.
- ResumeStart a fresh process with the plugin.
- RemoveRepeat without the plugin.
- UpgradeRepeat on the next supported Harness.
Recover without inventing semantics.
PreserveStop writer and copy/export evidence
→RestoreUse a trusted compatible reader
→ContinueStart fresh from a reviewed summary if needed
It is local, regenerated, and does not travel with the Session.
Skipping a required event can produce convincing corruption.
Sequence and source references may depend on the record.
Primary evidence.
- Real rc.7 incident #3416
- Compatibility design discussion #3191
- Generated reader vocabulary
- Durable envelope contract
- Strict read validation
Keep the plugin compatibility record.
The canonical guide includes storage rules, version gates, cold-resume tests, recovery steps, and a release checklist.
Read and star on GitHub