Skip to content

docs(root): name the check that cannot tell the defect from the fix - #841

Closed
mobeenabdullah wants to merge 1 commit into
mainfrom
docs/hook-non-discriminating-observables
Closed

mobeenabdullah wants to merge 1 commit into
mainfrom
docs/hook-non-discriminating-observables

Conversation

@mobeenabdullah

Copy link
Copy Markdown
Collaborator

Why a new entry rather than extending an existing one

derived-checks.md already has "A measurement standing in for a CATEGORY clears more than it checked". That one is about a measurement answering a narrower question than the claim built on it, and the repair is to measure the wider thing.

These are different, and conflating them sends you to the wrong repair. The measurement is correctly scoped and correctly taken — and returns the same value whether the code is broken or fixed. Re-running it, widening it, or taking it more carefully cannot help, because the two states are not distinguishable in that observable at all. The repair is to name a different property.

The three instances

Two turned up in one subsystem on one day, which is what made it worth naming rather than filing as three war stories.

observable what it was taken to prove why it cannot
the nearer target ranks higher the switch margin is correct every candidate metric orders correctly; only the WIDTH separates them
bracketed: false the resolver is sticky in one direction a correct bidirectional margin puts the two crossings a full margin apart and emits the identical signal
unresolved threads == 0 the review is clean a finding written into a review SUMMARY opens no thread, so a stated P1 leaves it at zero

The first cost two successive wrong metrics on #829 — an ordering assertion stayed green while a 10px requirement became roughly 36px once the pointer sat 100px off a zone's horizontal centre. The second is a live guard in e2e/tests/canvas/driver.ts whose own doc comment claims it separates those two cases. The third is an open finding against the merge gate.

What the entry adds

A tell that is a question rather than a checklist item — "what would this check report if the bug were present?" — run against the broken state you are worried about, not against the code in front of you.

And a second step that the #829 round is the argument for: make the failing case real before trusting the repair. A width assertion added after a wrong metric shipped is only evidence once it has been seen to reject that metric. I confirmed the new one fails when the metric is reverted to the hypotenuse rather than assuming it would, which is the only reason I believe it.

Provenance

Suggested by the page-builder lane after the same shape appeared a third time; the instances come from two lanes and three separate PRs, so it is a repository pattern rather than one person's mistake.

Documentation only — no changeset, no code paths touched.

Three instances turned up in one day, two of them in one subsystem, and the
existing entry on a measurement standing in for a category does not cover them:
there the measurement answered a narrower question than the claim, and widening
it is the repair. These measurements are correctly scoped and correctly taken,
and return the SAME value whether the code is broken or fixed, so no amount of
care with the same observable helps.

A drop-target ranking was asserted by ordering, which every candidate metric
gets right, so it stayed green across two metrics whose margin width was wrong.
An end-to-end probe reported an unbracketed edge to mean a one-directional
resolver, which a correct bidirectional margin produces identically. An
unresolved-thread count read as a clean review, which a finding written into a
review summary leaves at zero.

The tell is cheap and is stated as a question to run before trusting a green:
what would this check report if the bug were present. The repair is to name a
different property and then watch the new assertion reject the broken state,
rather than assuming it would have.
@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

@codex please review this PR

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@mobeenabdullah, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 19 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 7aa25333-ada1-4456-a1fe-96fbd4036c9a

📥 Commits

Reviewing files that changed from the base of the PR and between 682cc31 and 908ad2b.

📒 Files selected for processing (1)
  • .claude/rules/derived-checks.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 908ad2bc77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .claude/rules/derived-checks.md
Comment thread .claude/rules/derived-checks.md
@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

Closing: the distinction this entry claimed does not hold

Both findings are correct, and together they remove the PR's reason to exist.

The bracketed example was factually wrong, and I had disproved it myself before writing it. dragToZoneEdge searches back 27px; a compliant 8-12px band is found well inside that, so a correct resolver returns bracketed: true — measured on this branch, scenario 4b passes with exactly that. The false I built the example on came from an unbounded eligibility reprieve, which was my defect, and I had already retracted that diagnosis on #829 and rewritten the task file to say so.

The other two examples belong to the existing entry. Ordering is narrower than margin width, not a different observable of the same scope, so "measure the wider thing" is the remedy already prescribed by A measurement standing in for a CATEGORY clears more than it checked. Thread count is likewise a subset of "clean review" rather than an identical reading of it.

That leaves no example supporting a separate failure mode. The section restated an existing rule with weaker examples, one of them false.

What I am taking from it

The entry's own closing line is "make the failing case real before trusting the repair" — and I did not apply it to the entry. I generalised from three instances and never tested the generalisation against an instance I had not derived it from, which is a rule already in this repository and one I quoted to another lane today.

Not refiling this. If the pattern is real it will produce an instance that the existing category genuinely cannot explain, and that instance is what should motivate the entry. Writing the rule first is what produced a false example.

The underlying observations still hold and are recorded where they belong: the #829 ordering-versus-width lesson is in that PR's history with a width assertion that fails on revert, and the review-summary gap is filed against the merge gate.

@github-actions github-actions Bot added the type: docs Documentation only label Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: docs Documentation only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant