M100: Absent Expectation Filter
An expectation already present in the active error record needs an exact duplicate check. A fixed-size membership filter proves many new expectations absent before scanning the ordered set.
Mechanism and Invariants
A hash of the complete expectation ID, including its message flag, selects one of 64 bits. An unset bit permits insertion without a scan; a set bit requires the exact ordered check. Collisions cannot remove distinct expectations. Farthest-position reset, isolation, memo/recovery marks and parser recycling preserve or clear the filter consistently. Saturation retains linear duplicate work.
Scope and State
Default Go expectation paths in closure, both VMs, generated Node/recognition and typed output. TypeScript is unchanged.
Reference Control
No maintained same-source filter-disable control exists.
Evidence and Implementation
Historical record 075 measures typed Python _pydecimal.py CodePoints from
26.723 to 23.026 ms and 12.14 to 11.82 MB, with similar scoped Bytes results.
Added parser/mark footprint and hash cost are explicit tradeoffs. Saturated
filters retain linear duplicate scans, and the unadopted TypeScript filter
showed no clear gain. These results do not establish universal constant-time or
zero-overhead expectation handling.
Evidence records: 075.
Source owners: parser.expect and record marks, generated expectation filter, VM label/recovery state.
The comparison policy distinguishes same-source controls, historical changes and full checkpoints.
Related mechanisms: A110.