Skip to content

comments(examples): state the constraint, drop the citation — the last tree (refs #792) - #799

Merged
Yaraslaut merged 10 commits into
masterfrom
comments/examples-tree
Sep 24, 2026
Merged

Yaraslaut merged 10 commits into
masterfrom
comments/examples-tree

Conversation

@Yaraslaut

Copy link
Copy Markdown
Member

The third and last tree of the repository-wide comment cleanup. include/morph
and src went first, then docs/spec, scripts, .github, cmake and
tests; examples/ was what remained, and it was the largest single tree.

523 references removed, 13 left. 466 in the morph#NNN form and 57 in the
bare #NNN / issue #NNN / GitHub-URL forms the first pass's grep never saw.

area morph# before bare # before after
common 38 4 0
bank 51 0 0
bookmarks 10 6 0
crm 18 1 0
kanban 114 26 13
ledger 118 3 0
lims 49 14 0
pastebin 17 0 0
polls 27 2 0
concepts / forms / qt_tls_client 3 0 0
IMPLEMENTATION.md / LADDER.md / TESTING.md / rungs.txt / CMakeLists.txt 21 1 0
total 466 57 13

The 13 are Catch2 tags — [kanban][journal][morph#757] and nine
[kanban][board][morph#751]-shaped siblings in
tests/test_board_post_commit_tail.cpp, plus one [kanban][board][morph#566].
Renaming a tag is a code change, not a comment one, so they stay; .github/ and
scripts/ were grepped and no selector names any of them.

examples/kanban/gui/qml/BoardView.qml and
examples/kanban/tests/test_board_layout.cpp are untouched — morph#794 holds
them.

What this is not

Most of the diff is rewriting, not deleting: +1390/−1514 over 173 files, in
line with the second pass's +2144/−2657 over 179. Removing a citation frees one
clause; restating "before morph#373 this was accepted" as what accepting it
would cost
costs about what it saves.

Measured blocks stay whole. A few, so the shape is on the record:

  • ledger_model.cpp's ReadTxnGuard: the rollback-journal vs. WAL contention
    contrast, the DataMapperPool::Return consequence, the 60s busy_timeout
    that follows from it, and why turning WAL on to make a snapshot name true is
    a separate decision. Only the ticket left.
  • bank's unique_test_database.hpp: 21 of 21 cases failing with
    HY000 (10) - [SQLite]disk I/O error (10) under ctest -j.
  • test_bank_gui_format.cpp: the 0.49999999999999994 + 0.5 == 1.0 table, and
    why 0.005 is kept as the half-way input that must still round away from
    zero.
  • test_action_driver.cpp: the 0.9^60 = 1.8e-3 sampling argument, and the seed
    sweep that found 314, 779 and 2522 failing.
  • crm's GCC 16 -Warray-bounds block: the diagnostic text, the speculative
    devirtualization that reaches it, the 112-vs-136-byte holder sizes, and the
    == 16 bound that makes the suppression lapse rather than accumulate.
  • examples/*/include/.clang-tidy: the Variable /ClassConstant /
    ConstexprVariable IgnoredRegexp probe table, which is the whole reason the
    narrower-reading option is the wrong one.
  • TESTING.md: the 165 TSan warnings that make a Qt-linked rung unsanitisable,
    the 95.85% examples/common baseline with the four-file split that accounts
    for the drop since, and the ctest -L ladder-lims 85-against-87 count.

A comparison arguing for the current design stays, restated as what each
alternative costs rather than as what was tried when. Where a paragraph's only
content was "a gate used to check this, and it was removed", the rule it was
holding is now written as a rule to keep by hand — which is what is true.

CHANGELOG.md, docs/superpowers/**, Catch2 tags and the audit-finding
vocabularies are exempt and untouched. UAX #44 and the
test_a_nullable_ref_member_keeps_morph189s_numeric_encoding QML function do
not occur under examples/.

User-visible strings changed

Six string literals, each grepped for readers first.

string what reads it
PoolTransactionAudit's leak diagnostic: "morph#740: a pooled DataMapper was …" → "PoolTransactionAudit: …" its own self-test, test_pool_transaction_audit.cpp:107, whose contains("morph#740") moves to contains("PoolTransactionAudit") in the same commit. The SQL_ATTR_AUTOCOMMIT still OFF phrase that test also asserts on is untouched.
kanban::BoardEventId::fromRowId's throw: … sentinel (morph#215) → … sentinel nothing. Grepped for the message text and for unrepresentable; the only assertion on this path is CHECK_THROWS_AS(…, kanban::KanbanError).
polls::OptionId::fromRowId, polls::PollEventId::fromRowId: same shape nothing, same check.
ledger's static_assert on LedgerRecord::owner: … locking them out of it (morph#382). nothing — a static_assert message, grepped for locking them out.
test_gui_forms_render.cpp's inline // morph#387 beside a continue a comment, not a string; the filtered warning text it describes (onOptionsReceived / DynamicForm.qml) is unchanged.

No TEST_CASE was renamed. Every ticket reference that survives in a
TEST_CASE line is in the tag argument, not the name, so no ctest entry name
moved and no -R/-E selector in .github/workflows/ or scripts/ is
affected. (ci.yml:678's -E "OomInjector|morph#108" names nothing under
examples/.)

Non-comment changes, exhaustively

A script over git diff -U0 origin/master...HEAD printing every changed line in
a .cpp/.hpp/.qml/CMake/.clang-tidy file that is not a comment returns
exactly ten lines: the five string-literal pairs above and two trailing
comments. No behaviour change anywhere else.

Gates

gate result
clang-format --dry-run -Werror (22.1.8) over the 131 changed .cpp/.hpp clean
clang-tidy-diff.py (22.1.8) against origin/master...HEAD, CI's own filter-unbuilt-sources.py, -path the augmented db exit 0; 168 of 173 file sections analysed, 49 headers pinned, 0 sources skipped as unbuilt. Compile db: 741 in-workspace sources, 288 under examples/ — above the 600/200 floors.
Doxygen --target doc, WARN_AS_ERROR = FAIL_ON_WARNINGS exit 0, no warnings
ctest full, linux-everything 3048/3048 pass (3042 + 2 fuzz + 4 bench/soak)
ladder + bank labels 1120/1120 pass

Each label filter was checked with ctest -N -L <label> for a non-zero count
before being trusted: bank 37, ladder-0 159, ladder-bookmarks 130,
ladder-crm 169, ladder-kanban 184, ladder-ledger 162, ladder-lims 140,
ladder-pastebin 60, ladder-polls 79, ladder (prefix) 1083.

clang-tidy-diff first reported one finding —
error: 'test_qml_surface.moc' file not found — which is the configure-only
artefact ci.yml:2904 documents at length. Building
ladder_common_tests_autogen and morph_forms_qml_tests_autogen, exactly as
that job does, cleared it; the re-run is the exit 0 above.

Commits

One per rung or coherent group, so a bad slice can be dropped without redoing
the rest: the 16 .clang-tidy files, then common, bank, ledger, kanban,
crm, lims, then polls/pastebin/bookmarks, then the ladder's own docs, then a
whitespace-only reflow of the paragraphs the citation removals left ragged.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW

Yaraslaut and others added 10 commits September 24, 2026 02:50
…e citations

Every `.clang-tidy` under `examples/` -- the shared testkit one, seven rung
`tests/` copies and eight rung `include/` copies. The suppressions' arguments,
probe tables and measured counts all stay; what goes is the ticket numbers, the
narration of what a paragraph used to claim, and the description of gates that
no longer exist. Where a removed gate was the only thing holding a placement
rule, the rule is now stated as one to keep by hand, which is what is true.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW
The shared testkit, its GUI helpers and examples/common/CMakeLists.txt. The
measured blocks stay whole -- the 165 TSan warnings behind deadline.hpp's
Qt-free rule, the 0.9^60 sampling argument in test_action_driver.cpp, the
seed sweep that found 314/779/2522, the clang-tidy reach argument in
test_db_fixture.cpp. What goes is the ticket numbers, the dates of gates that
have since been removed, and the paragraphs written as "this used to ..." --
each restated as the constraint that is true now.

One user-visible string changed: `PoolTransactionAudit`'s leak diagnostic
opened with `morph#740:` and now opens with `PoolTransactionAudit:`. Its only
reader is the audit's own self-test, whose `contains("morph#740")` moves to
`contains("PoolTransactionAudit")` in the same commit; the rest of the message,
including the `SQL_ATTR_AUTOCOMMIT still OFF` phrase that test also asserts on,
is untouched.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW
bank's CMakeLists, the GUI controllers and its three test suites. The
measurements stay: the 21-of-21 `disk I/O error (10)` under `ctest -j` behind
unique_test_database.hpp, `parseMinor`'s 0.49999999999999994 + 0.5 == 1.0
table, and the pool-hand-off count that makes test_pool_scope.cpp's zero
evidence rather than an unwired counter. What goes is the ticket numbers and
the "before the fix it did X" framing, each restated as the constraint the
code holds now.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW
The largest rung tree: README, SYNC-BENCHMARK.md, the DTO and model headers,
book_access.hpp's ownership/scope argument, and eleven test suites.

Kept whole, because each is a live constraint rather than a story: the
rollback-journal vs. WAL contention contrast on `ReadTxnGuard` (with the
`DataMapperPool::Return` consequence and the 60s `busy_timeout` that follows
from it), `requireCategoryInBook`'s argument for a write-side-only guard and
why the refusal is `NotFound` and not `ValidationError`, the report-job
scope comparison's worked failure (`Done` is terminal, so the correct body
can never be computed afterwards), and SYNC-BENCHMARK.md's +50.00 balance
that the per-currency zero-sum invariant cannot see.

Rewritten rather than deleted: everywhere a paragraph argued from when a
thing changed. "Until morph#373 this was accepted" becomes what accepting it
would cost; "morph#183 replaced the hand-written traits" becomes what a
hand-written trait has to do that the macro does not.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW
README, the two schema-driven QML views, board_model.{hpp,cpp} and ten test
suites. `gui/qml/BoardView.qml` and `tests/test_board_layout.cpp` are left
alone -- an open PR holds them.

Kept whole: the post-commit-tail argument in board_model.cpp (why the
four re-reads moved inside the transaction rather than being shielded, and
why a re-read failing after the commit leaves nothing truthful to return),
the 165 ThreadSanitizer warnings behind test_kanban_stress.cpp's Qt-free
rule and why a prebuilt Qt makes them unusable either way, and the
`WaitBudget`/`WaitStep` argument against a NOLINT.

The README's "Findings" section was a list of tracker links. It now records
what each finding *is*, and says the tracker holds their state -- which is
the part a reader of this file cannot get from the link anyway.

Catch2 tags (`[kanban][board][morph#751]` and friends) are left as they are:
renaming a tag is a code change, not a comment one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW
crm's README, the offline outbox header and four test suites. The GCC 16
`-Warray-bounds` false-positive block in test_pipeline.cpp keeps every part
that is evidence -- the diagnostic text, the devirtualization GCC performs to
reach it, the measured 112 vs. 136 byte holder sizes, and the `== 16` bound
that makes the suppression lapse rather than accumulate; only the ticket
number left.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW
The rung with the longest README in the tree. Its "Findings raised by this
rung" section was ten tracker links; each entry keeps its whole body -- the
`ModelKey`/`WrappedModelKey` rule-of-three argument, the
`x-versionDecimalPlaces` two-keys-for-one-concept reasoning, the semicolon
in a TEST_CASE name that made `ctest -L ladder-lims` report 85 against the
binary's 87 -- and loses the link and the issue number.

§3 decision 7's retag-vs-round argument and §7's "a lab reading replayed
with no identified author is disqualifying" both stay in full: they are the
reason this rung is stricter than the framework, not a record of a request.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW
…pastebin and bookmarks

The three remaining rungs. Kept: pastebin's sqliteodbc
`RETURNING`/`SQLFetch` finding (the upstream Lightweight issue stays -- it is
a third-party defect record, not this tracker) and the 1-in-1,640 exhaustion
arithmetic behind `paste_id_source.hpp`'s seam; polls's `messagesPerSecond`
correction, restated as what a silently dropped frame would cost rather than
as what changed.

Three user-visible strings changed, all of the same shape: the
`fromRowId` refusals in `polls::OptionId`, `polls::PollEventId` and
`kanban::BoardEventId` ended `... sentinel (morph#NNN)` and now end
`... sentinel`. Nothing reads them -- grepped for the message text and for
`unrepresentable` across the tree; the only assertions on these paths are
`CHECK_THROWS_AS` on the exception type.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW
…der's own docs

IMPLEMENTATION.md, TESTING.md, LADDER.md, rungs.txt, examples/CMakeLists.txt
and the three non-rung trees (forms, concepts, qt_tls_client).

TESTING.md keeps every measurement it rests on -- the 165 TSan warnings that
make a Qt-linked rung unsanitisable, the 95.85% `examples/common` baseline and
the four-file split that accounts for the drop since, the `ctest -L
ladder-lims` 85-vs-87 count. What goes is the tickets and the "was documented
long before anything enforced it" framing: a path filter that matches nothing
succeeds as loudly as one with nothing to do whether or not that has happened
yet, and that is the sentence worth keeping.

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

Whitespace only, and confined to comment paragraphs the earlier commits in
this branch already touched: dropping a parenthetical citation mid-sentence
leaves one short line, and this pulls the following words up so the paragraph
reads at its usual width again. No wording changes, no code.

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

codecov Bot commented Sep 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@Yaraslaut
Yaraslaut merged commit 1a36bea into master Sep 24, 2026
38 checks passed
@Yaraslaut
Yaraslaut deleted the comments/examples-tree branch September 24, 2026 04:42
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