Skip to content

tools/README: --states means two different things, and that is #39's concrete blocker - #498

Merged
jobordu merged 3 commits into
mainfrom
architect/states-format
Aug 21, 2026
Merged

tools/README: --states means two different things, and that is #39's concrete blocker#498
jobordu merged 3 commits into
mainfrom
architect/states-format

Conversation

@jobordu

@jobordu jobordu commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

ARCHITECT. #39's criterion 2 needs the covered population to grow. ⇒ I went to find why it
hasn't, and the blocker is not effort — it is a name.

doctrine-version.py --states     VERDICT<TAB>ok<TAB>the read resolves to the version at HEAD
runnable-condition.py --states   VERDICT<TAB>RUNNABLE<TAB>names a command AND the result…
                                 ⇒ DECLARES the tool's own state space

close-condition-scan.py --states NONE 486
                                 NONE 451
                                 ⇒ REPORTS current findings, grouped BY state

⇒ ⛔ These are not two formats of one thing. They are two RELATIONS under one namewhat states
can I emit
versus which subjects are in which state right now. ★ A format convention cannot fix
a name that means two things.

This is DEV3's class (#443) exactly: a name inherits the scope of the method that produced it,
and carries it only if someone puts it there.
--states carries neither relation, so each author
supplied one — and both supplied a reasonable, different one.

⇒ Why it is the concrete blocker on criterion 2

A row can only be GENERATED from a DECLARATION. ⇒ A tool whose --states reports findings has
nothing to generate from — which is why states-index-check --emit returns exit 2 VOID on it
rather than inventing a row, and why the covered population is 2 of 51 rather than 3.

The ratchet in #495 already refuses to demand a fix that does not exist. This says why it
doesn't.

⛔ NOT proposing which name moves

Two tools declare, one reports.That is a count, not a claim about which is right, and both
flags belong to their authors. ⇒ What is stated here is only that one flag answers two questions,
and that a reader cannot tell which without running it.

What is NOT established

  • Three tools is the whole population--states is rare enough that a convention now is
    cheap and a convention later is not, but three is not evidence of a trend.
  • I did not check which came first. Two declare may simply mean I wrote two of them, and
    priority is not a majority.
  • Zero removed lines · churn on this file in the last 60 minutes: 0.

…s concrete blocker

Measured at origin/main, three tools, one flag:

  doctrine-version.py --states     VERDICT<TAB>ok<TAB>...     DECLARES its own state space
  runnable-condition.py --states   VERDICT<TAB>RUNNABLE<TAB>...  same
  close-condition-scan.py --states NONE 486 / NONE 451        REPORTS findings BY state

⇒ Not two formats of one thing. TWO RELATIONS UNDER ONE NAME — "what states can I emit" and
"which subjects are in which state right now". A format convention cannot fix a name that
means two things.

★ DEV3's class (#443): a name inherits the scope of the method that produced it and carries
it only if someone puts it there. --states carries neither relation, so each author supplied
one — and both supplied a reasonable different one.

⇒ AND IT IS THE CONCRETE BLOCKER ON #39's CRITERION 2. A row can only be GENERATED from a
DECLARATION. A tool whose --states reports findings has nothing to generate from, which is
why states-index-check --emit returns exit 2 VOID on it rather than inventing a row — and
why the covered population is 2 of 51 rather than 3.

⛔ NOT PROPOSING WHICH NAME MOVES. Two declare and one reports; that is a count, not a claim
about which is right, and both flags belong to their authors. What is stated is only that
one flag answers two questions and a reader cannot tell which without running it.

⚠ Zero removed lines. Churn on this file in the last 60 min: 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RTX4A8KkC9cRRrt17yzjWQ
@coderabbitai

coderabbitai Bot commented Aug 21, 2026

Copy link
Copy Markdown

Warning

Review limit reached

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

Next review available in: 26 minutes

Limit details: You’ve used the included review currently available.

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?

Wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

An organization admin can change what happens after included review limits in Billing.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: aca01773-2174-4a59-b9b8-0ec6e6011a60

📥 Commits

Reviewing files that changed from the base of the PR and between a44e23b and 4b9700b.

📒 Files selected for processing (1)
  • tools/README.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.

Jonathan Borduas and others added 2 commits August 21, 2026 11:10
…rgument is DEV3's third

⛔ I read 'shipped as #499' as 'landed' and went to verify. It is OPEN, not merged:
close-condition-scan.py --states still reports on origin/main, --by-state does not exist
there, and my --emit still returns exit 2. ⇒ The branch carries the work; main does not.
'Shipped' and 'merged' are landed-vs-loaded, one word over, and I nearly amended this PR
to describe a state that does not yet exist.

⇒ Amended so the text is true either way: the measurement is DATED and REF'd, #499 is named
as the resolution in flight, and the durable claim is about the CLASS rather than the board.

★ DEV3 ran the priority check this section declined to run, and it went AGAINST them:
  doctrine-version      2026-08-20 19:07  DECLARE  ← first
  close-condition-scan  2026-08-20 20:09  REPORT     62 min later, theirs

⇒ Priority and count both favour DECLARE — AND NEITHER IS THE REASON. Their third argument
is the one that settles it and neither of us made it: '--states' READS AS 'tell me the
states'. It names a state SPACE. The flag was never named for the reporting relation, so
the one that moved is the one whose name never fitted.

★ The fix is CONFORMANCE, not exemption — a declaring --states alongside --by-state. An
exemption would have preserved the collision behind a special case, which is exactly what a
ratchet keyed on the FLAG rather than the PROPERTY would have forced (#495).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RTX4A8KkC9cRRrt17yzjWQ
…neath it

⛔ My previous amendment opened with 'measured at origin/main; the fix is in flight as #499
and had not landed when this was written' — and then said 'close-condition-scan.py NOW
emits a declaring --states'. That 'now' is FALSE on main.

⇒ A caveat at the top does not make the sentences under it true. That is #474's defect
exactly: 'the total is not worth quoting', followed by a quoted total — committed by the
same author, in the same file, four hours later.

Re-tensed: the claims are attributed to #499 in the text where they are made, not only in a
header above them.

⚠ AND I CREATED A CROSS-PR DEPENDENCY: #498 and #499 both touch tools/README.md, and my
text now cites #499's content. If #499 is amended or rejected, my section asserts a
resolution that did not happen. The dating limits the damage; it does not remove it, and
whoever merges should take #499 first or ask me to re-take this.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RTX4A8KkC9cRRrt17yzjWQ
@jobordu

jobordu commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

⚠ MERGE ORDER MATTERS, and it is a dependency I created.

#498 (this)  tools/README.md                                     documents the collision
#499 (DEV3)  tools/README.md · close-condition-scan.py · its suite   RESOLVES it

This PR's text now cites #499's content.If #499 is amended or rejected, this section
asserts a resolution that did not happen.

Take #499 first. Then this is a dated record of a collision that was resolved. ⚠ Taken alone,
it is a dated record of one that still exists — which is also true, but only if the reader honours the
date.

⛔ And a second amendment, against myself

My first amendment opened with "measured at origin/main; the fix is in flight as #499 and had not
landed"
and then said close-condition-scan.py NOW emits a declaring --states.That
"now" is false on main.

A caveat at the top does not make the sentences under it true.That is #474's defect
exactly
"the total is not worth quoting", followed by a quoted total — committed by the same
author, in the same file, four hours later.
Re-tensed: the claims are attributed to #499 where
they are made
, not only in a header above them.

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.

1 participant