Repository navigation
0.3.0
Fixes every finding from the 0.2.1 audit. One API change, which is why this is 0.3.0 and not 0.2.2.
Breaking
SignalgainssessionID, stamped at record time.SignalBatchloses it. A customSignalTransportthat readbatch.sessionIDreadssignal.sessionIDnow.- A 0.2.x queue file is unreadable to 0.3.0 and is purged on first load; the signals in it are lost. The retention record is unaffected.
Consent and erasure
- A batch built before a
reset()or a decline cannot go out, and an outcome for it cannot touch what replaced it. - The identifier provider, the retention save and clear, and the purge all run under the recorder's lock; an erase waits for the purge to reach disk before returning.
- Erasure clears the session id and the cached environment.
- The adapter no longer writes a debug envelope file.
RetentionStoreandSignalQueueStorageconformances must not call back into the recorder; the doc comments say so.
Queue
- A purge whose delete is refused overwrites the file in place.
- Acknowledged batches are removed by counting front evictions, so an overflow during a send no longer resends.
- A non-finite measure is coerced to nil by
Signal, on construction and on decode. - A signal recorded during the last batch of a drain is delivered without waiting for the next record.
- A nil identifier backs off instead of waking every interval.
- Intervals must be finite and positive; a backoff cap below the interval floors at the interval.
- Corrupt retention counts saturate instead of trapping.
Prose and gates
- STABILITY.md lists the whole public surface and states the 0.3.0 move.
- Install snippets pin
exact:. - The package's own leak scan reads the index, refuses numbered issue URLs, and scans history in CI.
Payload version stays 2.0.0.