The per-file counter (max 3 reads) and cross-file counter (max 6
reads without edit) contradicted the actual rule. They allowed up
to 3 re-reads of the same range and capped total ranges per file.
The rule:
- Each unique (file, range) → exactly 1 read while data is unchanged.
- N different ranges of the same unchanged file → N reads (one each).
- File changes → all slots reset, each range can be read once again.
sha256 dedup already enforces this perfectly. Removed:
- FileReadCount struct + _readCounts dict
- checkAndIncrementReadCount
- _readsSinceEditByTab dict + checkConsecutiveReadsWithoutEdit
- readsWithoutEditThreshold constant
- The two extra guard calls in FileTools.swift read_file case
Block message updated to use the user's language: "you can only
read each file (or each section) 1 time unless the data has
changed … data is stale — no read is allowed."