docs: make TODO forward-looking, correct stale claims in README - #32
Merged
Conversation
TODO.md had grown into a 308-line log of completed work -- nearly every line was [x] -- with only two genuinely open items buried in it, and several entries that this run had since invalidated. It is now a short document about what is next and what is known-incomplete, pointing at CHANGELOG.md for shipped work and docs/ for the reasoning behind decisions. Nothing was lost: the sqlean per-module verdicts it carried are already in docs/sqlean-plan.md, and the schema decisions are in docs/sqlite-features.md. What it says now: nothing in flight; bearer-token auth for the API and awards/gold as next up; a table of known limits with what each would cost to change; and the deliberately-out-of-scope list so those are not re-proposed. Stale claims corrected: - TODO/README said "317 specs"; it is 421. - TODO said vote counts use votes_post_id_idx, dropped as redundant in [113]. - TODO said sqlean is pinned at 0.28.3; the Dockerfile says 0.28.4. - TODO and docs/sqlean-plan.md both recorded "math -- not adopted, hot/rising math stays in sort.lua, revisit if SQL-side ranking becomes a bottleneck". SQL-side ranking was adopted; the controversial ordering uses POW. That one described a decision that had been reversed, which is the most misleading kind of stale doc. - sqlean-plan listed uuid as "deferred, for the future API phase"; it is adopted and now stamped at insert by utils/public_id. - README claimed the CI matrix is 5.1/5.4/luajit; it is 5.1/luajit/ luajit-openresty. It also omitted the 80% coverage gate, the stylua job and the whole lint workflow, and still called TODO.md a changelog. - README described the uuid as minted by sqlean's uuid4(); it is minted at insert with an openssl.rand fallback. - README documented an API route as /api/user/:name/about; it is :username. - docs/sqlite-features.md pointed at TODO.md for history that now lives in CHANGELOG.md. README also gains a note that CI only proves migrations against a fresh database, and corrected `lapis migrate` instructions -- the entrypoint runs `lapis server` only, so migrations need a docker exec that repeats the entrypoint's two path exports. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0128hUpuk1spKzk4UHburdki
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.
Docs only — no code changes. Suite still 421 passing.
TODO.md: 308 lines → 57
It had become a log of completed work — nearly every line was
[x]— withonly two genuinely open items buried inside it. It's now about what's next:
/apiwrites need a browser session + CSRF, so no script or mobile client can use
it), and awards/gold.
each with what changing it would cost.
Nothing was lost. The sqlean per-module verdicts it carried already live in
docs/sqlean-plan.md; the schema reasoning is indocs/sqlite-features.md;the history is in
CHANGELOG.md.Stale claims corrected
votes_post_id_idx[113]0.28.30.28.45.1 / 5.4 / luajit(README)5.1 / luajit / luajit-openrestyTODO.mdis "the living roadmap and changelog of what's shipped"uuid4()"utils/public_id,openssl.randfallback/api/user/:name/about:usernamedocs/sqlite-features.mdpoints atTODO.mdfor removed-views historyCHANGELOG.mdThe one worth calling out is in
docs/sqlean-plan.md(and TODO), whichrecorded:
SQL-side ranking was adopted in #23 —
controversialorders byPOW. A docthat records a decision which has since been reversed is worse than one
that's merely out of date, because it reads as current intent. Also fixed there:
uuidwas listed as "deferred, for the future API phase"; it's adopted.README additions
before changing the schema pointer at
docs/sqlite-features.md.newpages by keyset with no depth limit; ranked sortsaddress the first 1000.
lint workflow — plus a note that the Docker job builds a fresh database, so
it proves migrations on a new install but never exercises the upgrade path.
One thing I could not verify
I corrected the
lapis migrateinstructions: the entrypoint runslapis serveronly, so migrations need a
docker execthat repeats the entrypoint's two pathexports (otherwise lapis can't find its rocks). That's read off
docker-entrypoint.shand the Dockerfile rather than executed — Docker isn'trunning in my environment. Worth a sanity check next time you bring the
container up.
🤖 Generated with Claude Code
https://claude.ai/code/session_0128hUpuk1spKzk4UHburdki