Skip to content

docs: make TODO forward-looking, correct stale claims in README - #32

Merged
mburns merged 1 commit into
mainfrom
docs/refresh-todo-readme
Aug 25, 2026
Merged

docs: make TODO forward-looking, correct stale claims in README#32
mburns merged 1 commit into
mainfrom
docs/refresh-todo-readme

Conversation

@mburns

@mburns mburns commented Aug 25, 2026

Copy link
Copy Markdown
Member

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] — with
only two genuinely open items buried inside it. It's now about what's next:

  • In flight — nothing.
  • Next up — bearer-token auth for the API (the largest functional gap: /api
    writes need a browser session + CSRF, so no script or mobile client can use
    it), and awards/gold.
  • Known limits — a table of things that work but have a documented ceiling,
    each with what changing it would cost.
  • Deliberately out of scope — so they aren't re-proposed.

Nothing was lost. The sqlean per-module verdicts it carried already live in
docs/sqlean-plan.md; the schema reasoning is in docs/sqlite-features.md;
the history is in CHANGELOG.md.

Stale claims corrected

Claim Reality
"317 specs" (TODO ×2) 421
vote counts use votes_post_id_idx dropped as redundant in [113]
sqlean pinned 0.28.3 0.28.4
CI matrix is 5.1 / 5.4 / luajit (README) 5.1 / luajit / luajit-openresty
CI runs "super-linter" replaced by actionlint/shellcheck/hadolint
TODO.md is "the living roadmap and changelog of what's shipped" it's neither now
uuid "minted with sqlean's uuid4()" stamped at insert by utils/public_id, openssl.rand fallback
API route /api/user/:name/about :username
docs/sqlite-features.md points at TODO.md for removed-views history that history is in CHANGELOG.md

The one worth calling out is in docs/sqlean-plan.md (and TODO), which
recorded:

stats / mathnot adopted: hot/rising math stays in sort.lua;
revisit if SQL-side ranking becomes a bottleneck.

SQL-side ranking was adopted in #23controversial orders by POW. A doc
that 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:
uuid was listed as "deferred, for the future API phase"; it's adopted.

README additions

  • The three-way split of where things are written down, with a read this
    before changing the schema
    pointer at docs/sqlite-features.md.
  • Cursor semantics: new pages by keyset with no depth limit; ranked sorts
    address the first 1000.
  • The full CI picture — the stylua job, the 80% coverage gate, and the separate
    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.
  • Account deletion in the feature list.

One thing I could not verify

I corrected the lapis migrate instructions: the entrypoint runs lapis server
only, so migrations need a docker exec that repeats the entrypoint's two path
exports (otherwise lapis can't find its rocks). That's read off
docker-entrypoint.sh and the Dockerfile rather than executed — Docker isn't
running in my environment. Worth a sanity check next time you bring the
container up.

🤖 Generated with Claude Code

https://claude.ai/code/session_0128hUpuk1spKzk4UHburdki

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
@mburns
mburns merged commit 5a57172 into main Aug 25, 2026
16 checks passed
@mburns
mburns deleted the docs/refresh-todo-readme branch August 25, 2026 05: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