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.

TypesLocal event map

Makes the writer compile.

Envelopeignorable?: true

Travels with the stored record.

ReaderGenerated known types

Controls cold reconstruction.

Choose storage by semantics.

Reconstruction requiredOfficial event or compatible runtime contract

Never mark state-changing records ignorable.

Purely informational todayPlugin-owned versioned store

Key audit and telemetry records by Session ID without making resume depend on them.

Test the boundary cold.

  1. WriteExercise one disposable Session.
  2. StopEnd the owning process cleanly.
  3. ResumeStart a fresh process with the plugin.
  4. RemoveRepeat without the plugin.
  5. 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
No generated-list patch

It is local, regenerated, and does not travel with the Session.

No loose-read default

Skipping a required event can produce convincing corruption.

No live-log surgery

Sequence and source references may depend on the record.

Primary evidence.

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