docs: why the CLI is one file, and that its split is a date rather than a rule - #60
Merged
Merged
Conversation
…an a rule 2042 lines and 21 subcommands is the first thing a reader judges about this package. The entry measures it instead of leaving it to be assumed: 17% of the source, a 178-line argparse table, no handler over 94 lines, 40 modules imported. It also records what the file's shape does not justify. Eleven of the fourteen `*_request_from` builders are in cli.py and three are beside the code they feed, and the only thing separating them is when they were written — everything up to 2026-08-28 went in cli.py, everything from 2026-08-29 did not, and nobody went back. None of the three has a caller inside its own module, so the placement changes nothing that runs. The eleven stay, because no test can fail on reverting the move, and the condition that would change that is written down.
The repository layout is where a reader decides whether to open cli.py, and it said nothing about the file being the longest one here. Three lines after the block, pointing at the entry rather than restating it: the counts live in one place and cannot drift apart from each other.
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.
src/darkvessel/cli.pyis 2042 lines and 21 subcommands. That is the first thing a reader judges about the package, and nothing in the repository said anything about it. This adds onedocs/decisions.mdentry that measures the file rather than leaving the reader to assume either way, and names what its shape does not justify.What it records, all of it measured on this branch:
mainat 178 lines and every line of it is the argparse table_archive_runat 94, then_retrieve84,_crops78*_request_frombuilders in the file are imported directly by the tests;docs/training-runbook.mdimports an eighthWhat it admits rather than glosses over:
_span,_exclusion_over,_clustering_over)cli.pyand three live beside the code they feed, and the only thing separating them is the date they were written: everything up to 2026-08-28 went intocli.py, everything from 2026-08-29 did not, and nobody went back. None of the three has a caller inside its own module, so the placement changes nothing that runs.The decision: the eleven stay. The move is 339 lines across eleven modules plus a changed import path in thirteen test files, and no test can fail on reverting it — which is a fair description of its value. The two conditions that would change it are written down.
Documentation only. No code, no config, no run journal, no figure touched: the diff is 56 added lines in
docs/decisions.mdand nothing else.make lintclean,make test572 passed / 1 skipped — unchanged.