Skip to content

Promote develop to main: the inverse trap - #87

Merged
ptr727 merged 2 commits into
mainfrom
develop
Aug 9, 2026
Merged

Promote develop to main: the inverse trap#87
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Promotes develop to main. Two commits, each already reviewed and squash-merged to develop.

TODO.md only, 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:

A correct prediction can be discarded because the world disagrees with it.

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 zero where every other use in this file does, and the host's size estimate given in MB like 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

main and develop converge. The four environments already run the code being promoted, and nothing here needs a deploy to take effect:

VPS production 20260809-190222
VPS staging 20260809-185908
local mirrors both 1052/3269 linked

The intent after this merge is to let it bake.

Merge

Plain --merge, never --delete-branch: on a develop -> main promotion that flag deletes develop.

Nothing publishes on this merge.

* 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>
Copilot AI lite review requested due to automatic review settings August 9, 2026 19:38

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 releases is 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.

Comment thread TODO.md Outdated
@ptr727

ptr727 commented Aug 9, 2026

Copy link
Copy Markdown
Owner Author

Both findings fixed in #88, which is open against develop and will land in this promotion once merged. Recording the suppressed one here since it carries no thread.

The unit in ~670 M for ten releases is ambiguous/inconsistent with the rest of this document, which uses "MB".

Measured against the file rather than taken on assertion:

This file uses The odd one out
the count zero shared, zero of measured 0 shared inodes
sizes 11.4 MB, 18 MB, 584 MB, 585 MB ×2 ~670 M

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>
Copilot AI review requested due to automatic review settings August 9, 2026 19:53

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit 30ecaff into main Aug 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants