dream 1.2.0 — second adversarial audit
An Opus-4.8 audit fleet surfaced 5 real defects; all fixed with regression tests (46 tests).
--applyis now all-or-nothing: preflights the archive/journal/state paths before overwriting the live memory and aborts cleanly on a symlink/unwritable path, instead of half-completing and dying with a raw traceback (removed entries un-archived).- Word-order-blind dedup fixed: "A calls B" vs "B calls A" were archived as duplicates; near-dups now require shared tokens in the same order, and the equal-length tie-break keeps the newer entry.
- Bullets parser no longer swallows headers: a
## headerbetween bullet groups could be deleted as dedup side-cargo; headers are now structural (never consolidated, re-emitted in place). --formatas the last CLI arg no longer crashes with IndexError.- Honest measurement: the 90-day soak's budget assertion was vacuous; a dedicated budget-stress leg now forces the squeeze path and verifies the hard limit. Char accounting documented as character/codepoint-based (not "byte-for-byte").
Install pin: raw.githubusercontent.com/Da7-Tech/dream/v1.2.0/dream.py sha256 1f94b3418fc05a71791793f13ab33837974ecfb2361ffe24906afeb115ef4704.