comments(examples): state the constraint, drop the citation — the last tree (refs #792) - #799
Merged
Merged
Conversation
…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 Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The third and last tree of the repository-wide comment cleanup.
include/morphand
srcwent first, thendocs/spec,scripts,.github,cmakeandtests;examples/was what remained, and it was the largest single tree.523 references removed, 13 left. 466 in the
morph#NNNform and 57 in thebare
#NNN/issue #NNN/ GitHub-URL forms the first pass's grep never saw.morph#before#beforecommonbankbookmarkscrmkanbanledgerlimspastebinpollsconcepts/forms/qt_tls_clientIMPLEMENTATION.md/LADDER.md/TESTING.md/rungs.txt/CMakeLists.txtThe 13 are Catch2 tags —
[kanban][journal][morph#757]and nine[kanban][board][morph#751]-shaped siblings intests/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/andscripts/were grepped and no selector names any of them.examples/kanban/gui/qml/BoardView.qmlandexamples/kanban/tests/test_board_layout.cppare untouched — morph#794 holdsthem.
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'sReadTxnGuard: the rollback-journal vs. WAL contentioncontrast, the
DataMapperPool::Returnconsequence, the 60sbusy_timeoutthat follows from it, and why turning WAL on to make a snapshot name true is
a separate decision. Only the ticket left.
bank'sunique_test_database.hpp: 21 of 21 cases failing withHY000 (10) - [SQLite]disk I/O error (10)underctest -j.test_bank_gui_format.cpp: the0.49999999999999994 + 0.5 == 1.0table, andwhy
0.005is kept as the half-way input that must still round away fromzero.
test_action_driver.cpp: the 0.9^60 = 1.8e-3 sampling argument, and the seedsweep that found 314, 779 and 2522 failing.
crm's GCC 16-Warray-boundsblock: the diagnostic text, the speculativedevirtualization that reaches it, the 112-vs-136-byte holder sizes, and the
== 16bound that makes the suppression lapse rather than accumulate.examples/*/include/.clang-tidy: theVariable/ClassConstant/ConstexprVariableIgnoredRegexpprobe table, which is the whole reason thenarrower-reading option is the wrong one.
TESTING.md: the 165 TSan warnings that make a Qt-linked rung unsanitisable,the 95.85%
examples/commonbaseline with the four-file split that accountsfor the drop since, and the
ctest -L ladder-lims85-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-findingvocabularies are exempt and untouched.
UAX #44and thetest_a_nullable_ref_member_keeps_morph189s_numeric_encodingQML function donot occur under
examples/.User-visible strings changed
Six string literals, each grepped for readers first.
PoolTransactionAudit's leak diagnostic:"morph#740: a pooled DataMapper was …"→"PoolTransactionAudit: …"test_pool_transaction_audit.cpp:107, whosecontains("morph#740")moves tocontains("PoolTransactionAudit")in the same commit. TheSQL_ATTR_AUTOCOMMIT still OFFphrase that test also asserts on is untouched.kanban::BoardEventId::fromRowId's throw:… sentinel (morph#215)→… sentinelunrepresentable; the only assertion on this path isCHECK_THROWS_AS(…, kanban::KanbanError).polls::OptionId::fromRowId,polls::PollEventId::fromRowId: same shapeledger'sstatic_assertonLedgerRecord::owner:… locking them out of it (morph#382).static_assertmessage, grepped forlocking them out.test_gui_forms_render.cpp's inline// morph#387beside acontinueonOptionsReceived/DynamicForm.qml) is unchanged.No
TEST_CASEwas renamed. Every ticket reference that survives in aTEST_CASEline is in the tag argument, not the name, so no ctest entry namemoved and no
-R/-Eselector in.github/workflows/orscripts/isaffected. (
ci.yml:678's-E "OomInjector|morph#108"names nothing underexamples/.)Non-comment changes, exhaustively
A script over
git diff -U0 origin/master...HEADprinting every changed line ina
.cpp/.hpp/.qml/CMake/.clang-tidyfile that is not a comment returnsexactly ten lines: the five string-literal pairs above and two trailing
comments. No behaviour change anywhere else.
Gates
clang-format --dry-run -Werror(22.1.8) over the 131 changed.cpp/.hppclang-tidy-diff.py(22.1.8) againstorigin/master...HEAD, CI's ownfilter-unbuilt-sources.py,-paththe augmented dbexamples/— above the 600/200 floors.--target doc,WARN_AS_ERROR = FAIL_ON_WARNINGSctestfull,linux-everythingfuzz+ 4bench/soak)Each label filter was checked with
ctest -N -L <label>for a non-zero countbefore being trusted:
bank37,ladder-0159,ladder-bookmarks130,ladder-crm169,ladder-kanban184,ladder-ledger162,ladder-lims140,ladder-pastebin60,ladder-polls79,ladder(prefix) 1083.clang-tidy-difffirst reported one finding —error: 'test_qml_surface.moc' file not found— which is the configure-onlyartefact
ci.yml:2904documents at length. Buildingladder_common_tests_autogenandmorph_forms_qml_tests_autogen, exactly asthat 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-tidyfiles, thencommon,bank,ledger,kanban,crm,lims, then polls/pastebin/bookmarks, then the ladder's own docs, then awhitespace-only reflow of the paragraphs the citation removals left ragged.
🤖 Generated with Claude Code
https://claude.ai/code/session_01VptDWG2fKr2vBnLSJcgzgW