The deep dive's verified figures are re-derived by a test, or they are not on the line - #105

Merged
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers
Aug 13, 2026
Merged

The deep dive's verified figures are re-derived by a test, or they are not on the line#105
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers

Conversation

@Shashankss1205

Copy link
Copy Markdown
Collaborator

Closes#42.

The rot

The Verified this pass paragraph quotes concrete numbers and nothing checked them, so they drifted — twice:

the page saidthe tree had
1,533 passed … 103 submodules1,754 tests, 116 submodules
1,985 passed, 12 deselected2,137 selected, 13 live

Both were hand-corrected at the time; the mechanism that let them rot was still there.

The choice the issue offered, and which one this takes

The issue offered two: assert the figures, or remove them. This asserts them — the repo's stated discipline is that prose stating a checkable fact gets a check, the same one tests/test_readme.py and tests/test_cookbook_*.py already enforce by byte-comparing output.

But it rewords first, and the reword is the substance, not cosmetics: the figures are now what one command re-derives — how many tests pytestselects, and how many it holds back as live — rather than a pass count. A pass count cannot be re-derived without running the suite from inside itself, which is precisely how "1,985 passed" came to be a number no test owned. The suite being green is asserted by the suite being green.

How it re-derives

One collection pass in a subprocess. In-process is not an option — this module is collected by the session doing the asking, and re-entering the collector from inside it is not supported. -m "" clears the -m 'not live' that pyproject's addopts supplies, and the marker is read off each item, so a single pass yields both figures rather than two passes yielding one each. Cost: ~2s.

Two guards behind the two comparisons

Both close ways a check can pass while proving nothing:

  • test_the_paragraph_still_quotes_every_figure_this_file_checks — deleting a number from the sentence makes the test red rather than vacuous. Same trap test_the_section_still_holds_the_two_blocks_this_file_checks closes for the README.
  • test_the_paragraph_quotes_no_figure_that_nothing_re_derives — any bare count with a unit that this file does not own fails, with wording that says to add a check or take it off the line. This is what stops the next "1,985 passed" from being added.

The version the paragraph claims is on PyPI is held against pyproject.toml, for the same reason ci.yml already refuses a grapharc.__version__ that disagrees with it.

Verification

  • uv run pytest tests/test_deep_dive.py — 5 passed.
  • uv run ruff check grapharc tests — clean.
  • Restoring the exact historical drift (1,985 passed, 12 selected) turns two red: the selection comparison and the unowned-figure guard.

🤖 Generated with Claude Code

Shashankss1205and others added 2 commits August 13, 2026 23:49
…e not on the line
The **Verified this pass** paragraph closes the deep dive with concrete
numbers, and nothing checked them, so they drifted twice: it read "1,533
passed … 103 submodules" against a tree with 1,754 tests and 116 submodules,
and it read "1,985 passed, 12 deselected" against a tree with 2,137 selected
and 13 live. The paragraph's whole value is that its numbers are real. A
reader who spots one stale figure discounts every other verified claim on the
page, including the ones the suite genuinely enforces.
The figures are now quoted as what one command re-derives — how many tests
`pytest` selects, and how many it holds back as `live` — rather than as a pass
count. That reword is the point, not cosmetics: a pass count cannot be
re-derived without running the suite from inside itself, which is exactly how
"1,985 passed" came to be a number no test owned. The suite being green is
asserted by the suite being green.
tests/test_deep_dive.py re-derives both in one collection pass, in a
subprocess — this module is collected by the session doing the asking, so
re-entering the collector in-process is not on. `-m ""` clears the addopts
`-m 'not live'` and the marker is read off each item, so one pass yields both
figures instead of two passes yielding one each; it costs about two seconds.
Two guards sit behind the two comparisons, both closing ways the check could
pass while saying nothing. One asserts the figures are still quoted at all, so
deleting a number makes the test red rather than vacuous — the trap
`tests/test_readme.py` already closes for its fenced blocks. The other asserts
no *unowned* figure has appeared on the line: any bare count with a unit that
this file does not re-derive fails, with wording that says to add a check or
take the number off. That is the rule the issue settled on.
The version the paragraph says is on PyPI is held against pyproject's, for the
same reason `ci.yml` already refuses a `grapharc.__version__` that disagrees
with it: a release note naming a third number is that failure with no check.
Restoring the historical drift turns both the comparison and the unowned-figure
guard red.
Closes#42
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ht tests
Which is the mechanism working as intended — merging a PR that adds tests
made the deep dive's figure stale, and the check caught it rather than
letting it sit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shashankss1205
Shashankss1205force-pushed the fix/issue-42-verified-numbers branch from e25ecaf to 95d7ed9CompareAugust 13, 2026 18:20
@Shashankss1205
Shashankss1205 merged commit ac3270e into mainAug 13, 2026
6 checks passed
@Shashankss1205
Shashankss1205 deleted the fix/issue-42-verified-numbers branch August 13, 2026 18:24
@Shashankss1205Shashankss1205 mentioned this pull request Aug 13, 2026
Sign up for freeto 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.

docs: the README's 'Verified this pass' numbers rot silently — nothing re-derives them

1 participant

@Shashankss1205
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

The deep dive's verified figures are re-derived by a test, or they are not on the line - #105

Merged
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers
Aug 13, 2026
Merged

The deep dive's verified figures are re-derived by a test, or they are not on the line#105
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers

Conversation

@Shashankss1205

Copy link
Copy Markdown
Collaborator

Closes#42.

The rot

The Verified this pass paragraph quotes concrete numbers and nothing checked them, so they drifted — twice:

the page saidthe tree had
1,533 passed … 103 submodules1,754 tests, 116 submodules
1,985 passed, 12 deselected2,137 selected, 13 live

Both were hand-corrected at the time; the mechanism that let them rot was still there.

The choice the issue offered, and which one this takes

The issue offered two: assert the figures, or remove them. This asserts them — the repo's stated discipline is that prose stating a checkable fact gets a check, the same one tests/test_readme.py and tests/test_cookbook_*.py already enforce by byte-comparing output.

But it rewords first, and the reword is the substance, not cosmetics: the figures are now what one command re-derives — how many tests pytestselects, and how many it holds back as live — rather than a pass count. A pass count cannot be re-derived without running the suite from inside itself, which is precisely how "1,985 passed" came to be a number no test owned. The suite being green is asserted by the suite being green.

How it re-derives

One collection pass in a subprocess. In-process is not an option — this module is collected by the session doing the asking, and re-entering the collector from inside it is not supported. -m "" clears the -m 'not live' that pyproject's addopts supplies, and the marker is read off each item, so a single pass yields both figures rather than two passes yielding one each. Cost: ~2s.

Two guards behind the two comparisons

Both close ways a check can pass while proving nothing:

  • test_the_paragraph_still_quotes_every_figure_this_file_checks — deleting a number from the sentence makes the test red rather than vacuous. Same trap test_the_section_still_holds_the_two_blocks_this_file_checks closes for the README.
  • test_the_paragraph_quotes_no_figure_that_nothing_re_derives — any bare count with a unit that this file does not own fails, with wording that says to add a check or take it off the line. This is what stops the next "1,985 passed" from being added.

The version the paragraph claims is on PyPI is held against pyproject.toml, for the same reason ci.yml already refuses a grapharc.__version__ that disagrees with it.

Verification

  • uv run pytest tests/test_deep_dive.py — 5 passed.
  • uv run ruff check grapharc tests — clean.
  • Restoring the exact historical drift (1,985 passed, 12 selected) turns two red: the selection comparison and the unowned-figure guard.

🤖 Generated with Claude Code

Shashankss1205and others added 2 commits August 13, 2026 23:49
…e not on the line
The **Verified this pass** paragraph closes the deep dive with concrete
numbers, and nothing checked them, so they drifted twice: it read "1,533
passed … 103 submodules" against a tree with 1,754 tests and 116 submodules,
and it read "1,985 passed, 12 deselected" against a tree with 2,137 selected
and 13 live. The paragraph's whole value is that its numbers are real. A
reader who spots one stale figure discounts every other verified claim on the
page, including the ones the suite genuinely enforces.
The figures are now quoted as what one command re-derives — how many tests
`pytest` selects, and how many it holds back as `live` — rather than as a pass
count. That reword is the point, not cosmetics: a pass count cannot be
re-derived without running the suite from inside itself, which is exactly how
"1,985 passed" came to be a number no test owned. The suite being green is
asserted by the suite being green.
tests/test_deep_dive.py re-derives both in one collection pass, in a
subprocess — this module is collected by the session doing the asking, so
re-entering the collector in-process is not on. `-m ""` clears the addopts
`-m 'not live'` and the marker is read off each item, so one pass yields both
figures instead of two passes yielding one each; it costs about two seconds.
Two guards sit behind the two comparisons, both closing ways the check could
pass while saying nothing. One asserts the figures are still quoted at all, so
deleting a number makes the test red rather than vacuous — the trap
`tests/test_readme.py` already closes for its fenced blocks. The other asserts
no *unowned* figure has appeared on the line: any bare count with a unit that
this file does not re-derive fails, with wording that says to add a check or
take the number off. That is the rule the issue settled on.
The version the paragraph says is on PyPI is held against pyproject's, for the
same reason `ci.yml` already refuses a `grapharc.__version__` that disagrees
with it: a release note naming a third number is that failure with no check.
Restoring the historical drift turns both the comparison and the unowned-figure
guard red.
Closes#42
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ht tests
Which is the mechanism working as intended — merging a PR that adds tests
made the deep dive's figure stale, and the check caught it rather than
letting it sit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shashankss1205
Shashankss1205force-pushed the fix/issue-42-verified-numbers branch from e25ecaf to 95d7ed9CompareAugust 13, 2026 18:20
@Shashankss1205
Shashankss1205 merged commit ac3270e into mainAug 13, 2026
6 checks passed
@Shashankss1205
Shashankss1205 deleted the fix/issue-42-verified-numbers branch August 13, 2026 18:24
@Shashankss1205Shashankss1205 mentioned this pull request Aug 13, 2026
Sign up for freeto 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.

docs: the README's 'Verified this pass' numbers rot silently — nothing re-derives them

1 participant

@Shashankss1205
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

The deep dive's verified figures are re-derived by a test, or they are not on the line - #105

Merged
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers
Aug 13, 2026
Merged

The deep dive's verified figures are re-derived by a test, or they are not on the line#105
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers

Conversation

@Shashankss1205

Copy link
Copy Markdown
Collaborator

Closes#42.

The rot

The Verified this pass paragraph quotes concrete numbers and nothing checked them, so they drifted — twice:

the page saidthe tree had
1,533 passed … 103 submodules1,754 tests, 116 submodules
1,985 passed, 12 deselected2,137 selected, 13 live

Both were hand-corrected at the time; the mechanism that let them rot was still there.

The choice the issue offered, and which one this takes

The issue offered two: assert the figures, or remove them. This asserts them — the repo's stated discipline is that prose stating a checkable fact gets a check, the same one tests/test_readme.py and tests/test_cookbook_*.py already enforce by byte-comparing output.

But it rewords first, and the reword is the substance, not cosmetics: the figures are now what one command re-derives — how many tests pytestselects, and how many it holds back as live — rather than a pass count. A pass count cannot be re-derived without running the suite from inside itself, which is precisely how "1,985 passed" came to be a number no test owned. The suite being green is asserted by the suite being green.

How it re-derives

One collection pass in a subprocess. In-process is not an option — this module is collected by the session doing the asking, and re-entering the collector from inside it is not supported. -m "" clears the -m 'not live' that pyproject's addopts supplies, and the marker is read off each item, so a single pass yields both figures rather than two passes yielding one each. Cost: ~2s.

Two guards behind the two comparisons

Both close ways a check can pass while proving nothing:

  • test_the_paragraph_still_quotes_every_figure_this_file_checks — deleting a number from the sentence makes the test red rather than vacuous. Same trap test_the_section_still_holds_the_two_blocks_this_file_checks closes for the README.
  • test_the_paragraph_quotes_no_figure_that_nothing_re_derives — any bare count with a unit that this file does not own fails, with wording that says to add a check or take it off the line. This is what stops the next "1,985 passed" from being added.

The version the paragraph claims is on PyPI is held against pyproject.toml, for the same reason ci.yml already refuses a grapharc.__version__ that disagrees with it.

Verification

  • uv run pytest tests/test_deep_dive.py — 5 passed.
  • uv run ruff check grapharc tests — clean.
  • Restoring the exact historical drift (1,985 passed, 12 selected) turns two red: the selection comparison and the unowned-figure guard.

🤖 Generated with Claude Code

Shashankss1205and others added 2 commits August 13, 2026 23:49
…e not on the line
The **Verified this pass** paragraph closes the deep dive with concrete
numbers, and nothing checked them, so they drifted twice: it read "1,533
passed … 103 submodules" against a tree with 1,754 tests and 116 submodules,
and it read "1,985 passed, 12 deselected" against a tree with 2,137 selected
and 13 live. The paragraph's whole value is that its numbers are real. A
reader who spots one stale figure discounts every other verified claim on the
page, including the ones the suite genuinely enforces.
The figures are now quoted as what one command re-derives — how many tests
`pytest` selects, and how many it holds back as `live` — rather than as a pass
count. That reword is the point, not cosmetics: a pass count cannot be
re-derived without running the suite from inside itself, which is exactly how
"1,985 passed" came to be a number no test owned. The suite being green is
asserted by the suite being green.
tests/test_deep_dive.py re-derives both in one collection pass, in a
subprocess — this module is collected by the session doing the asking, so
re-entering the collector in-process is not on. `-m ""` clears the addopts
`-m 'not live'` and the marker is read off each item, so one pass yields both
figures instead of two passes yielding one each; it costs about two seconds.
Two guards sit behind the two comparisons, both closing ways the check could
pass while saying nothing. One asserts the figures are still quoted at all, so
deleting a number makes the test red rather than vacuous — the trap
`tests/test_readme.py` already closes for its fenced blocks. The other asserts
no *unowned* figure has appeared on the line: any bare count with a unit that
this file does not re-derive fails, with wording that says to add a check or
take the number off. That is the rule the issue settled on.
The version the paragraph says is on PyPI is held against pyproject's, for the
same reason `ci.yml` already refuses a `grapharc.__version__` that disagrees
with it: a release note naming a third number is that failure with no check.
Restoring the historical drift turns both the comparison and the unowned-figure
guard red.
Closes#42
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ht tests
Which is the mechanism working as intended — merging a PR that adds tests
made the deep dive's figure stale, and the check caught it rather than
letting it sit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shashankss1205
Shashankss1205force-pushed the fix/issue-42-verified-numbers branch from e25ecaf to 95d7ed9CompareAugust 13, 2026 18:20
@Shashankss1205
Shashankss1205 merged commit ac3270e into mainAug 13, 2026
6 checks passed
@Shashankss1205
Shashankss1205 deleted the fix/issue-42-verified-numbers branch August 13, 2026 18:24
@Shashankss1205Shashankss1205 mentioned this pull request Aug 13, 2026
Sign up for freeto 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.

docs: the README's 'Verified this pass' numbers rot silently — nothing re-derives them

1 participant

@Shashankss1205
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

The deep dive's verified figures are re-derived by a test, or they are not on the line - #105

Merged
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers
Aug 13, 2026
Merged

The deep dive's verified figures are re-derived by a test, or they are not on the line#105
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers

Conversation

@Shashankss1205

Copy link
Copy Markdown
Collaborator

Closes#42.

The rot

The Verified this pass paragraph quotes concrete numbers and nothing checked them, so they drifted — twice:

the page saidthe tree had
1,533 passed … 103 submodules1,754 tests, 116 submodules
1,985 passed, 12 deselected2,137 selected, 13 live

Both were hand-corrected at the time; the mechanism that let them rot was still there.

The choice the issue offered, and which one this takes

The issue offered two: assert the figures, or remove them. This asserts them — the repo's stated discipline is that prose stating a checkable fact gets a check, the same one tests/test_readme.py and tests/test_cookbook_*.py already enforce by byte-comparing output.

But it rewords first, and the reword is the substance, not cosmetics: the figures are now what one command re-derives — how many tests pytestselects, and how many it holds back as live — rather than a pass count. A pass count cannot be re-derived without running the suite from inside itself, which is precisely how "1,985 passed" came to be a number no test owned. The suite being green is asserted by the suite being green.

How it re-derives

One collection pass in a subprocess. In-process is not an option — this module is collected by the session doing the asking, and re-entering the collector from inside it is not supported. -m "" clears the -m 'not live' that pyproject's addopts supplies, and the marker is read off each item, so a single pass yields both figures rather than two passes yielding one each. Cost: ~2s.

Two guards behind the two comparisons

Both close ways a check can pass while proving nothing:

  • test_the_paragraph_still_quotes_every_figure_this_file_checks — deleting a number from the sentence makes the test red rather than vacuous. Same trap test_the_section_still_holds_the_two_blocks_this_file_checks closes for the README.
  • test_the_paragraph_quotes_no_figure_that_nothing_re_derives — any bare count with a unit that this file does not own fails, with wording that says to add a check or take it off the line. This is what stops the next "1,985 passed" from being added.

The version the paragraph claims is on PyPI is held against pyproject.toml, for the same reason ci.yml already refuses a grapharc.__version__ that disagrees with it.

Verification

  • uv run pytest tests/test_deep_dive.py — 5 passed.
  • uv run ruff check grapharc tests — clean.
  • Restoring the exact historical drift (1,985 passed, 12 selected) turns two red: the selection comparison and the unowned-figure guard.

🤖 Generated with Claude Code

Shashankss1205and others added 2 commits August 13, 2026 23:49
…e not on the line
The **Verified this pass** paragraph closes the deep dive with concrete
numbers, and nothing checked them, so they drifted twice: it read "1,533
passed … 103 submodules" against a tree with 1,754 tests and 116 submodules,
and it read "1,985 passed, 12 deselected" against a tree with 2,137 selected
and 13 live. The paragraph's whole value is that its numbers are real. A
reader who spots one stale figure discounts every other verified claim on the
page, including the ones the suite genuinely enforces.
The figures are now quoted as what one command re-derives — how many tests
`pytest` selects, and how many it holds back as `live` — rather than as a pass
count. That reword is the point, not cosmetics: a pass count cannot be
re-derived without running the suite from inside itself, which is exactly how
"1,985 passed" came to be a number no test owned. The suite being green is
asserted by the suite being green.
tests/test_deep_dive.py re-derives both in one collection pass, in a
subprocess — this module is collected by the session doing the asking, so
re-entering the collector in-process is not on. `-m ""` clears the addopts
`-m 'not live'` and the marker is read off each item, so one pass yields both
figures instead of two passes yielding one each; it costs about two seconds.
Two guards sit behind the two comparisons, both closing ways the check could
pass while saying nothing. One asserts the figures are still quoted at all, so
deleting a number makes the test red rather than vacuous — the trap
`tests/test_readme.py` already closes for its fenced blocks. The other asserts
no *unowned* figure has appeared on the line: any bare count with a unit that
this file does not re-derive fails, with wording that says to add a check or
take the number off. That is the rule the issue settled on.
The version the paragraph says is on PyPI is held against pyproject's, for the
same reason `ci.yml` already refuses a `grapharc.__version__` that disagrees
with it: a release note naming a third number is that failure with no check.
Restoring the historical drift turns both the comparison and the unowned-figure
guard red.
Closes#42
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ht tests
Which is the mechanism working as intended — merging a PR that adds tests
made the deep dive's figure stale, and the check caught it rather than
letting it sit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shashankss1205
Shashankss1205force-pushed the fix/issue-42-verified-numbers branch from e25ecaf to 95d7ed9CompareAugust 13, 2026 18:20
@Shashankss1205
Shashankss1205 merged commit ac3270e into mainAug 13, 2026
6 checks passed
@Shashankss1205
Shashankss1205 deleted the fix/issue-42-verified-numbers branch August 13, 2026 18:24
@Shashankss1205Shashankss1205 mentioned this pull request Aug 13, 2026
Sign up for freeto 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.

docs: the README's 'Verified this pass' numbers rot silently — nothing re-derives them

1 participant

@Shashankss1205
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

The deep dive's verified figures are re-derived by a test, or they are not on the line - #105

Merged
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers
Aug 13, 2026
Merged

The deep dive's verified figures are re-derived by a test, or they are not on the line#105
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers

Conversation

@Shashankss1205

Copy link
Copy Markdown
Collaborator

Closes#42.

The rot

The Verified this pass paragraph quotes concrete numbers and nothing checked them, so they drifted — twice:

the page saidthe tree had
1,533 passed … 103 submodules1,754 tests, 116 submodules
1,985 passed, 12 deselected2,137 selected, 13 live

Both were hand-corrected at the time; the mechanism that let them rot was still there.

The choice the issue offered, and which one this takes

The issue offered two: assert the figures, or remove them. This asserts them — the repo's stated discipline is that prose stating a checkable fact gets a check, the same one tests/test_readme.py and tests/test_cookbook_*.py already enforce by byte-comparing output.

But it rewords first, and the reword is the substance, not cosmetics: the figures are now what one command re-derives — how many tests pytestselects, and how many it holds back as live — rather than a pass count. A pass count cannot be re-derived without running the suite from inside itself, which is precisely how "1,985 passed" came to be a number no test owned. The suite being green is asserted by the suite being green.

How it re-derives

One collection pass in a subprocess. In-process is not an option — this module is collected by the session doing the asking, and re-entering the collector from inside it is not supported. -m "" clears the -m 'not live' that pyproject's addopts supplies, and the marker is read off each item, so a single pass yields both figures rather than two passes yielding one each. Cost: ~2s.

Two guards behind the two comparisons

Both close ways a check can pass while proving nothing:

  • test_the_paragraph_still_quotes_every_figure_this_file_checks — deleting a number from the sentence makes the test red rather than vacuous. Same trap test_the_section_still_holds_the_two_blocks_this_file_checks closes for the README.
  • test_the_paragraph_quotes_no_figure_that_nothing_re_derives — any bare count with a unit that this file does not own fails, with wording that says to add a check or take it off the line. This is what stops the next "1,985 passed" from being added.

The version the paragraph claims is on PyPI is held against pyproject.toml, for the same reason ci.yml already refuses a grapharc.__version__ that disagrees with it.

Verification

  • uv run pytest tests/test_deep_dive.py — 5 passed.
  • uv run ruff check grapharc tests — clean.
  • Restoring the exact historical drift (1,985 passed, 12 selected) turns two red: the selection comparison and the unowned-figure guard.

🤖 Generated with Claude Code

Shashankss1205and others added 2 commits August 13, 2026 23:49
…e not on the line
The **Verified this pass** paragraph closes the deep dive with concrete
numbers, and nothing checked them, so they drifted twice: it read "1,533
passed … 103 submodules" against a tree with 1,754 tests and 116 submodules,
and it read "1,985 passed, 12 deselected" against a tree with 2,137 selected
and 13 live. The paragraph's whole value is that its numbers are real. A
reader who spots one stale figure discounts every other verified claim on the
page, including the ones the suite genuinely enforces.
The figures are now quoted as what one command re-derives — how many tests
`pytest` selects, and how many it holds back as `live` — rather than as a pass
count. That reword is the point, not cosmetics: a pass count cannot be
re-derived without running the suite from inside itself, which is exactly how
"1,985 passed" came to be a number no test owned. The suite being green is
asserted by the suite being green.
tests/test_deep_dive.py re-derives both in one collection pass, in a
subprocess — this module is collected by the session doing the asking, so
re-entering the collector in-process is not on. `-m ""` clears the addopts
`-m 'not live'` and the marker is read off each item, so one pass yields both
figures instead of two passes yielding one each; it costs about two seconds.
Two guards sit behind the two comparisons, both closing ways the check could
pass while saying nothing. One asserts the figures are still quoted at all, so
deleting a number makes the test red rather than vacuous — the trap
`tests/test_readme.py` already closes for its fenced blocks. The other asserts
no *unowned* figure has appeared on the line: any bare count with a unit that
this file does not re-derive fails, with wording that says to add a check or
take the number off. That is the rule the issue settled on.
The version the paragraph says is on PyPI is held against pyproject's, for the
same reason `ci.yml` already refuses a `grapharc.__version__` that disagrees
with it: a release note naming a third number is that failure with no check.
Restoring the historical drift turns both the comparison and the unowned-figure
guard red.
Closes#42
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ht tests
Which is the mechanism working as intended — merging a PR that adds tests
made the deep dive's figure stale, and the check caught it rather than
letting it sit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shashankss1205
Shashankss1205force-pushed the fix/issue-42-verified-numbers branch from e25ecaf to 95d7ed9CompareAugust 13, 2026 18:20
@Shashankss1205
Shashankss1205 merged commit ac3270e into mainAug 13, 2026
6 checks passed
@Shashankss1205
Shashankss1205 deleted the fix/issue-42-verified-numbers branch August 13, 2026 18:24
@Shashankss1205Shashankss1205 mentioned this pull request Aug 13, 2026
Sign up for freeto 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.

docs: the README's 'Verified this pass' numbers rot silently — nothing re-derives them

1 participant

@Shashankss1205
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

The deep dive's verified figures are re-derived by a test, or they are not on the line - #105

Merged
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers
Aug 13, 2026
Merged

The deep dive's verified figures are re-derived by a test, or they are not on the line#105
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers

Conversation

@Shashankss1205

Copy link
Copy Markdown
Collaborator

Closes#42.

The rot

The Verified this pass paragraph quotes concrete numbers and nothing checked them, so they drifted — twice:

the page saidthe tree had
1,533 passed … 103 submodules1,754 tests, 116 submodules
1,985 passed, 12 deselected2,137 selected, 13 live

Both were hand-corrected at the time; the mechanism that let them rot was still there.

The choice the issue offered, and which one this takes

The issue offered two: assert the figures, or remove them. This asserts them — the repo's stated discipline is that prose stating a checkable fact gets a check, the same one tests/test_readme.py and tests/test_cookbook_*.py already enforce by byte-comparing output.

But it rewords first, and the reword is the substance, not cosmetics: the figures are now what one command re-derives — how many tests pytestselects, and how many it holds back as live — rather than a pass count. A pass count cannot be re-derived without running the suite from inside itself, which is precisely how "1,985 passed" came to be a number no test owned. The suite being green is asserted by the suite being green.

How it re-derives

One collection pass in a subprocess. In-process is not an option — this module is collected by the session doing the asking, and re-entering the collector from inside it is not supported. -m "" clears the -m 'not live' that pyproject's addopts supplies, and the marker is read off each item, so a single pass yields both figures rather than two passes yielding one each. Cost: ~2s.

Two guards behind the two comparisons

Both close ways a check can pass while proving nothing:

  • test_the_paragraph_still_quotes_every_figure_this_file_checks — deleting a number from the sentence makes the test red rather than vacuous. Same trap test_the_section_still_holds_the_two_blocks_this_file_checks closes for the README.
  • test_the_paragraph_quotes_no_figure_that_nothing_re_derives — any bare count with a unit that this file does not own fails, with wording that says to add a check or take it off the line. This is what stops the next "1,985 passed" from being added.

The version the paragraph claims is on PyPI is held against pyproject.toml, for the same reason ci.yml already refuses a grapharc.__version__ that disagrees with it.

Verification

  • uv run pytest tests/test_deep_dive.py — 5 passed.
  • uv run ruff check grapharc tests — clean.
  • Restoring the exact historical drift (1,985 passed, 12 selected) turns two red: the selection comparison and the unowned-figure guard.

🤖 Generated with Claude Code

Shashankss1205and others added 2 commits August 13, 2026 23:49
…e not on the line
The **Verified this pass** paragraph closes the deep dive with concrete
numbers, and nothing checked them, so they drifted twice: it read "1,533
passed … 103 submodules" against a tree with 1,754 tests and 116 submodules,
and it read "1,985 passed, 12 deselected" against a tree with 2,137 selected
and 13 live. The paragraph's whole value is that its numbers are real. A
reader who spots one stale figure discounts every other verified claim on the
page, including the ones the suite genuinely enforces.
The figures are now quoted as what one command re-derives — how many tests
`pytest` selects, and how many it holds back as `live` — rather than as a pass
count. That reword is the point, not cosmetics: a pass count cannot be
re-derived without running the suite from inside itself, which is exactly how
"1,985 passed" came to be a number no test owned. The suite being green is
asserted by the suite being green.
tests/test_deep_dive.py re-derives both in one collection pass, in a
subprocess — this module is collected by the session doing the asking, so
re-entering the collector in-process is not on. `-m ""` clears the addopts
`-m 'not live'` and the marker is read off each item, so one pass yields both
figures instead of two passes yielding one each; it costs about two seconds.
Two guards sit behind the two comparisons, both closing ways the check could
pass while saying nothing. One asserts the figures are still quoted at all, so
deleting a number makes the test red rather than vacuous — the trap
`tests/test_readme.py` already closes for its fenced blocks. The other asserts
no *unowned* figure has appeared on the line: any bare count with a unit that
this file does not re-derive fails, with wording that says to add a check or
take the number off. That is the rule the issue settled on.
The version the paragraph says is on PyPI is held against pyproject's, for the
same reason `ci.yml` already refuses a `grapharc.__version__` that disagrees
with it: a release note naming a third number is that failure with no check.
Restoring the historical drift turns both the comparison and the unowned-figure
guard red.
Closes#42
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ht tests
Which is the mechanism working as intended — merging a PR that adds tests
made the deep dive's figure stale, and the check caught it rather than
letting it sit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shashankss1205
Shashankss1205force-pushed the fix/issue-42-verified-numbers branch from e25ecaf to 95d7ed9CompareAugust 13, 2026 18:20
@Shashankss1205
Shashankss1205 merged commit ac3270e into mainAug 13, 2026
6 checks passed
@Shashankss1205
Shashankss1205 deleted the fix/issue-42-verified-numbers branch August 13, 2026 18:24
@Shashankss1205Shashankss1205 mentioned this pull request Aug 13, 2026
Sign up for freeto 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.

docs: the README's 'Verified this pass' numbers rot silently — nothing re-derives them

1 participant

@Shashankss1205
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

The deep dive's verified figures are re-derived by a test, or they are not on the line - #105

Merged
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers
Aug 13, 2026
Merged

The deep dive's verified figures are re-derived by a test, or they are not on the line#105
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers

Conversation

@Shashankss1205

Copy link
Copy Markdown
Collaborator

Closes#42.

The rot

The Verified this pass paragraph quotes concrete numbers and nothing checked them, so they drifted — twice:

the page saidthe tree had
1,533 passed … 103 submodules1,754 tests, 116 submodules
1,985 passed, 12 deselected2,137 selected, 13 live

Both were hand-corrected at the time; the mechanism that let them rot was still there.

The choice the issue offered, and which one this takes

The issue offered two: assert the figures, or remove them. This asserts them — the repo's stated discipline is that prose stating a checkable fact gets a check, the same one tests/test_readme.py and tests/test_cookbook_*.py already enforce by byte-comparing output.

But it rewords first, and the reword is the substance, not cosmetics: the figures are now what one command re-derives — how many tests pytestselects, and how many it holds back as live — rather than a pass count. A pass count cannot be re-derived without running the suite from inside itself, which is precisely how "1,985 passed" came to be a number no test owned. The suite being green is asserted by the suite being green.

How it re-derives

One collection pass in a subprocess. In-process is not an option — this module is collected by the session doing the asking, and re-entering the collector from inside it is not supported. -m "" clears the -m 'not live' that pyproject's addopts supplies, and the marker is read off each item, so a single pass yields both figures rather than two passes yielding one each. Cost: ~2s.

Two guards behind the two comparisons

Both close ways a check can pass while proving nothing:

  • test_the_paragraph_still_quotes_every_figure_this_file_checks — deleting a number from the sentence makes the test red rather than vacuous. Same trap test_the_section_still_holds_the_two_blocks_this_file_checks closes for the README.
  • test_the_paragraph_quotes_no_figure_that_nothing_re_derives — any bare count with a unit that this file does not own fails, with wording that says to add a check or take it off the line. This is what stops the next "1,985 passed" from being added.

The version the paragraph claims is on PyPI is held against pyproject.toml, for the same reason ci.yml already refuses a grapharc.__version__ that disagrees with it.

Verification

  • uv run pytest tests/test_deep_dive.py — 5 passed.
  • uv run ruff check grapharc tests — clean.
  • Restoring the exact historical drift (1,985 passed, 12 selected) turns two red: the selection comparison and the unowned-figure guard.

🤖 Generated with Claude Code

Shashankss1205and others added 2 commits August 13, 2026 23:49
…e not on the line
The **Verified this pass** paragraph closes the deep dive with concrete
numbers, and nothing checked them, so they drifted twice: it read "1,533
passed … 103 submodules" against a tree with 1,754 tests and 116 submodules,
and it read "1,985 passed, 12 deselected" against a tree with 2,137 selected
and 13 live. The paragraph's whole value is that its numbers are real. A
reader who spots one stale figure discounts every other verified claim on the
page, including the ones the suite genuinely enforces.
The figures are now quoted as what one command re-derives — how many tests
`pytest` selects, and how many it holds back as `live` — rather than as a pass
count. That reword is the point, not cosmetics: a pass count cannot be
re-derived without running the suite from inside itself, which is exactly how
"1,985 passed" came to be a number no test owned. The suite being green is
asserted by the suite being green.
tests/test_deep_dive.py re-derives both in one collection pass, in a
subprocess — this module is collected by the session doing the asking, so
re-entering the collector in-process is not on. `-m ""` clears the addopts
`-m 'not live'` and the marker is read off each item, so one pass yields both
figures instead of two passes yielding one each; it costs about two seconds.
Two guards sit behind the two comparisons, both closing ways the check could
pass while saying nothing. One asserts the figures are still quoted at all, so
deleting a number makes the test red rather than vacuous — the trap
`tests/test_readme.py` already closes for its fenced blocks. The other asserts
no *unowned* figure has appeared on the line: any bare count with a unit that
this file does not re-derive fails, with wording that says to add a check or
take the number off. That is the rule the issue settled on.
The version the paragraph says is on PyPI is held against pyproject's, for the
same reason `ci.yml` already refuses a `grapharc.__version__` that disagrees
with it: a release note naming a third number is that failure with no check.
Restoring the historical drift turns both the comparison and the unowned-figure
guard red.
Closes#42
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ht tests
Which is the mechanism working as intended — merging a PR that adds tests
made the deep dive's figure stale, and the check caught it rather than
letting it sit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shashankss1205
Shashankss1205force-pushed the fix/issue-42-verified-numbers branch from e25ecaf to 95d7ed9CompareAugust 13, 2026 18:20
@Shashankss1205
Shashankss1205 merged commit ac3270e into mainAug 13, 2026
6 checks passed
@Shashankss1205
Shashankss1205 deleted the fix/issue-42-verified-numbers branch August 13, 2026 18:24
@Shashankss1205Shashankss1205 mentioned this pull request Aug 13, 2026
Sign up for freeto 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.

docs: the README's 'Verified this pass' numbers rot silently — nothing re-derives them

1 participant

@Shashankss1205
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

The deep dive's verified figures are re-derived by a test, or they are not on the line - #105

Merged
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers
Aug 13, 2026
Merged

The deep dive's verified figures are re-derived by a test, or they are not on the line#105
Shashankss1205 merged 2 commits into
mainfrom
fix/issue-42-verified-numbers

Conversation

@Shashankss1205

Copy link
Copy Markdown
Collaborator

Closes#42.

The rot

The Verified this pass paragraph quotes concrete numbers and nothing checked them, so they drifted — twice:

the page saidthe tree had
1,533 passed … 103 submodules1,754 tests, 116 submodules
1,985 passed, 12 deselected2,137 selected, 13 live

Both were hand-corrected at the time; the mechanism that let them rot was still there.

The choice the issue offered, and which one this takes

The issue offered two: assert the figures, or remove them. This asserts them — the repo's stated discipline is that prose stating a checkable fact gets a check, the same one tests/test_readme.py and tests/test_cookbook_*.py already enforce by byte-comparing output.

But it rewords first, and the reword is the substance, not cosmetics: the figures are now what one command re-derives — how many tests pytestselects, and how many it holds back as live — rather than a pass count. A pass count cannot be re-derived without running the suite from inside itself, which is precisely how "1,985 passed" came to be a number no test owned. The suite being green is asserted by the suite being green.

How it re-derives

One collection pass in a subprocess. In-process is not an option — this module is collected by the session doing the asking, and re-entering the collector from inside it is not supported. -m "" clears the -m 'not live' that pyproject's addopts supplies, and the marker is read off each item, so a single pass yields both figures rather than two passes yielding one each. Cost: ~2s.

Two guards behind the two comparisons

Both close ways a check can pass while proving nothing:

  • test_the_paragraph_still_quotes_every_figure_this_file_checks — deleting a number from the sentence makes the test red rather than vacuous. Same trap test_the_section_still_holds_the_two_blocks_this_file_checks closes for the README.
  • test_the_paragraph_quotes_no_figure_that_nothing_re_derives — any bare count with a unit that this file does not own fails, with wording that says to add a check or take it off the line. This is what stops the next "1,985 passed" from being added.

The version the paragraph claims is on PyPI is held against pyproject.toml, for the same reason ci.yml already refuses a grapharc.__version__ that disagrees with it.

Verification

  • uv run pytest tests/test_deep_dive.py — 5 passed.
  • uv run ruff check grapharc tests — clean.
  • Restoring the exact historical drift (1,985 passed, 12 selected) turns two red: the selection comparison and the unowned-figure guard.

🤖 Generated with Claude Code

Shashankss1205and others added 2 commits August 13, 2026 23:49
…e not on the line
The **Verified this pass** paragraph closes the deep dive with concrete
numbers, and nothing checked them, so they drifted twice: it read "1,533
passed … 103 submodules" against a tree with 1,754 tests and 116 submodules,
and it read "1,985 passed, 12 deselected" against a tree with 2,137 selected
and 13 live. The paragraph's whole value is that its numbers are real. A
reader who spots one stale figure discounts every other verified claim on the
page, including the ones the suite genuinely enforces.
The figures are now quoted as what one command re-derives — how many tests
`pytest` selects, and how many it holds back as `live` — rather than as a pass
count. That reword is the point, not cosmetics: a pass count cannot be
re-derived without running the suite from inside itself, which is exactly how
"1,985 passed" came to be a number no test owned. The suite being green is
asserted by the suite being green.
tests/test_deep_dive.py re-derives both in one collection pass, in a
subprocess — this module is collected by the session doing the asking, so
re-entering the collector in-process is not on. `-m ""` clears the addopts
`-m 'not live'` and the marker is read off each item, so one pass yields both
figures instead of two passes yielding one each; it costs about two seconds.
Two guards sit behind the two comparisons, both closing ways the check could
pass while saying nothing. One asserts the figures are still quoted at all, so
deleting a number makes the test red rather than vacuous — the trap
`tests/test_readme.py` already closes for its fenced blocks. The other asserts
no *unowned* figure has appeared on the line: any bare count with a unit that
this file does not re-derive fails, with wording that says to add a check or
take the number off. That is the rule the issue settled on.
The version the paragraph says is on PyPI is held against pyproject's, for the
same reason `ci.yml` already refuses a `grapharc.__version__` that disagrees
with it: a release note naming a third number is that failure with no check.
Restoring the historical drift turns both the comparison and the unowned-figure
guard red.
Closes#42
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ht tests
Which is the mechanism working as intended — merging a PR that adds tests
made the deep dive's figure stale, and the check caught it rather than
letting it sit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Shashankss1205
Shashankss1205force-pushed the fix/issue-42-verified-numbers branch from e25ecaf to 95d7ed9CompareAugust 13, 2026 18:20
@Shashankss1205
Shashankss1205 merged commit ac3270e into mainAug 13, 2026
6 checks passed
@Shashankss1205
Shashankss1205 deleted the fix/issue-42-verified-numbers branch August 13, 2026 18:24
@Shashankss1205Shashankss1205 mentioned this pull request Aug 13, 2026
Sign up for freeto 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.

docs: the README's 'Verified this pass' numbers rot silently — nothing re-derives them

1 participant

@Shashankss1205