Conversation
* Record the inverse trap, where a correct prediction is thrown away Every trap in this section is over-reach: narrating past an observation, believing a negative a query could not have produced, trusting a tool that exited 0. This one runs the other way, and its remedy is not more caution because caution is what produces it. Checking a claim against measurement and dropping it when the two disagree is the right instinct. What is missing is asking which of the two is more likely to be wrong before assuming it is the prediction. A number derived from first principles that contradicts the world is at least as likely to be a finding about the world. This repository nearly tripped it on 1,052. The figure was derived three ways before any deploy proved it, and the host measured 0 shared inodes across every release for weeks. The tempting reading was that the estimate was wrong; it was exact, and the world was broken, because the restore had never run. Treating the disagreement as a defect rather than as bad arithmetic is what found it. The host tripped it in the other direction on the same mechanism and recorded it there. Kept here because the shape is re-trippable by this repository, which carries several counts that are derived rather than observed. Also removes a duplicate the general form introduced. "A rule naming a target that does not exist" now appears once as a class and once as the dead-pin incident, and the class points at the incident rather than restating it, so a reader meeting the second does not have to work out whether it is a different case. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Point the cross-reference at words that exist The reference called its target the "dead-pin trap", a name appearing nowhere, so a reader had nothing to search for. It now quotes the distinctive part of the actual entry, "reads as coverage", which is present once as the trap and once here. Quoting the whole lead phrase was tried first and stutters, since it is also the wording of the reference itself. And a comma after "above", where two clauses ran together. Both found by Copilot review on #86. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Promotes develop to main by updating TODO.md with a new “inverse trap” entry and by de-duplicating the “rule naming a target that does not exist” item so the class points to the incident rather than restating it.
Changes:
- Replace the duplicated “rule naming a target that does not exist” bullet with a cross-reference to the incident write-up later in the section.
- Add a new trap entry describing the “inverse trap” where a correct prediction is discarded due to contradictory measurements, with local and host-side examples.
Suppressed comments (1)
TODO.md:167
- The unit in
~670 M for ten releasesis ambiguous/inconsistent with the rest of this document, which uses "MB". Consider making the unit explicit to avoid confusion.
- The host tripped it in the other direction on the same mechanism, striking a `~670 M for ten releases` figure as wrong when it had been right all along and had simply never once been true. Recorded there beside its own resolution; kept here because the shape is re-trippable by this repository, which carries several counts derived rather than observed.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Both findings fixed in #88, which is open against
Measured against the file rather than taken on assertion:
One judgement worth stating. The size figure is the host's, and I had it in backticks — which presents it as a verbatim quotation and makes the unit awkward to correct, because changing a unit inside a quotation misrepresents what someone else wrote. It now reads as a paraphrase, its estimate of ~670 MB for ten releases: same quantity, no claim to be their exact words. That resolves the inconsistency without editing a quote. |
"measured 0 shared inodes" was the only numeral where this file spells the count out, and "~670 M" the only bare M against five uses of MB. The size figure is the host's and was carried in backticks, which presented it as a verbatim quotation and made the unit awkward to correct. It reads as a paraphrase now, "its estimate of ~670 MB for ten releases", which is the same quantity and does not claim to be their exact wording. Both found by Copilot review on #87. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Promotes
developtomain. Two commits, each already reviewed and squash-merged todevelop.TODO.mdonly, four insertions and one deletion. No behaviour changes.What it carries
[#86] The inverse trap. Every other trap in that section is a form of over-reach. This one runs the other way:
Its remedy is not more caution, because caution is what produces it. Dropping a claim when measurement disagrees is the right instinct; what is missing is asking which of the two is more likely to be wrong before assuming it is the prediction. A number derived from first principles that contradicts the world is at least as likely to be a finding about the world.
This repository nearly tripped it on 1,052. The figure was derived three ways before any deploy proved it, and the host measured zero shared inodes across every release for weeks. The tempting reading was that the estimate was wrong. It was exact, and the world was broken: the restore had never run. Treating the disagreement as a defect rather than as bad arithmetic is what found it.
It also collapses a duplicate introduced when the general form landed, so a rule naming a target that does not exist appears once as a class and once as the incident, with the class pointing at the incident rather than restating it.
[#88] Two consistency corrections to that entry, both measured against the file rather than asserted: the count spelled out as
zerowhere every other use in this file does, and the host's size estimate given inMBlike the five other sizes. That figure moved out of backticks in the same change, since presenting it as a verbatim quotation is what made the unit awkward to correct.State after this
mainanddevelopconverge. The four environments already run the code being promoted, and nothing here needs a deploy to take effect:20260809-19022220260809-1859081052/3269linkedThe intent after this merge is to let it bake.
Merge
Plain
--merge, never--delete-branch: on adevelop -> mainpromotion that flag deletesdevelop.Nothing publishes on this merge.