Repository navigation
Fix what the documentation got wrong, and stop it repeating itself - #21
Merged
Merged
Conversation
A read-through of the README, docs/DESIGN.md and demo/README.md, checking every claim against the code rather than against the last time it was true. The one that mattered: the documented development setup did not work. `cp .env.example .env` followed by "point DATABASE_URL at a PostgreSQL instance" pointed at a variable the file did not contain, and the setting has no default on purpose — so following the README literally ends in a pydantic ValidationError at import with nothing to say the fix is to add a line. DATABASE_URL is now in .env.example, commented, saying that Compose builds it from the POSTGRES_* values and that a local run is the case that needs it. DEFAULT_FIRST_NAME and DUPLICATE_WINDOW_SECONDS were documented in prose and absent from the file too; both are there now. Stale facts: * the upload endpoint still advertised `.tcx` or `.gpx` only * the test count said 311, and it is 343 * the repository tree omitted database.py, schemas/, services/archives.py and hooks/ — archives.py in particular, with archive import a headline feature * "CORS never comes into it either way" sat next to a wired CORSMiddleware. The middleware is for the case the sentence was not describing, so it now says which case each covers Repetition: * the phone bullet and the phone screenshot's caption said the same sentence twice, sixty lines apart * "Why it works the way it does" was a section whose whole content was a link to docs/DESIGN.md, immediately after a paragraph linking to docs/DESIGN.md. One signpost now, in the section that earns it And two smaller ones: docs/DESIGN.md listed its last two sections in the wrong order, and demo/README.md had a paragraph with a broken wrap and no word on why the demo set has no FIT file now that the app reads FIT. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019mNxXmXqwMZf6MG8PoWbq4
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.
Why
A read-through of
README.md,docs/DESIGN.mdanddemo/README.md, checking every claim against the code rather than against the last time it was true. Every API row, script name, flag, version and count in here was verified against what the repository actually contains.The one that mattered
The documented development setup did not work. The README said:
cp .env.example .env # point DATABASE_URL at a PostgreSQL instance.env.examplecontained noDATABASE_URL, and the setting has no default on purpose — a test asserts it must fail at boot rather than fall back. So following the README literally ends in a pydanticValidationErrorat import time with nothing to suggest the fix is to add a line. I reproduced it, fixed it, and reproduced the fix: the copied file now loads, withdisplay_timezone,default_first_nameandduplicate_window_secondsresolving to their documented values.DATABASE_URLis now in.env.example, commented out, saying that Compose builds it from thePOSTGRES_*values above and that a local run is the case that needs it.DEFAULT_FIRST_NAMEandDUPLICATE_WINDOW_SECONDSwere documented in prose and absent from the file too; both are there now.Stale facts
.tcxor.gpxonly.database.py,schemas/,services/archives.pyandhooks/—archives.pyin particular, with archive import a headline feature.CORSMiddleware. The middleware is for the case that sentence was not describing, so it now says which case each one covers.Repetition
docs/DESIGN.md— immediately after a paragraph linking todocs/DESIGN.md. One signpost now, in the section that earns it.Smaller
docs/DESIGN.mdlisted its last two sections in the wrong order. A check now confirms the contents match the heading order exactly.demo/README.mdhad a paragraph with a broken wrap, and said nothing about why the demo set has no FIT file now that the app reads FIT.Verified
Backend 343 tests, frontend 223,
ruff check,ruff format --checkandeslintclean. The README's mermaid diagram was re-rendered in a browser after its label changed, and the twelve referenced screenshots all resolve.One correction to my own work in here: I first described
hooks/as "the data each panel needs, fetched once" from assumption. It holds one hook that reports whether the viewer is in dark mode, and that is what the tree says now.Generated by Claude Code