Skip to content

docs: full currency sweep — the docs were three releases behind - #128

Merged
tbcsec merged 1 commit into
mainfrom
claude/docs-sweep
Aug 1, 2026
Merged

docs: full currency sweep — the docs were three releases behind#128
tbcsec merged 1 commit into
mainfrom
claude/docs-sweep

Conversation

@tbcsec

@tbcsec tbcsec commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Why

The repository's documentation still described a platform at initial-public-release readiness. Three releases and ~25 shipped features later, several claims were flatly wrong rather than merely stale — the README's headline paragraph told readers OIDC didn't exist.

This is a complete sweep of the platform repository's docs (not flagpost-website).

The corrections that mattered

Ordered by how badly each misled a reader:

Where Was Now
README.md:25 "Password auth only for now; SSO/LDAP … deliberately not built yet" OIDC shipped in #58
UI-INTEGRATION-NOTES.md ×2 SSO deferred; "AI and SSO stay off the roadmap" SSO shipped; AI is milestoned v1.4.0
ARCHITECTURE.md §7.1 Missing manage_auth_providers, view_submissions Both documented with their scope rationale
ARCHITECTURE.md §11.3 Predicted SSO would be an optional module It shipped required-core — recorded, with why
ARCHITECTURE.md No coverage of outbound calls anywhere New §13.4
adr/README.md ADR-0021 never indexed Added
CONTRIBUTING.md "all four checks" Five — the missing one is npm run build
Admin → Site settings → AI "Deferred past MVP" "planned for a future release"

Method note: §7.1 and the event catalogue were checked by diffing the doc against auth.permissions and utils.event_catalog in a REPL, not by reading. The 67 event types all matched; two permissions did not.

The §11.3 prediction is worth a look — SSO shipped required-core because module state is per-competition and authentication is a property of the install, so an optional sso module would have meant "OIDC works in this competition but not that one". Any future site-wide module (SAML #100, LDAP #101) inherits that shape.

ROADMAP

Structurally stale, not just factually: it ended at Tier 3 with no notion of the release milestones that replaced tiers as the unit of planning. Adds a Post-1.0 section — v1.0.0–v1.2.0 as shipped, v1.3.0–v1.5.0 as planned.

⚠️ #N means a roadmap item in the tier half and a GitHub issue in the new half, and the two collide (roadmap item 23 = analytics, issue #23 = insight cards). Called out in a note rather than renumbered, since renumbering breaks every inbound reference.

CLAUDE.md: restructured, not extended (951 → 331 lines)

The one judgement call here, flagged for review.

It had become an append-only build log — ~810 lines restating what git log, the ADRs and ARCHITECTURE.md already record — and it had still drifted past ~25 features, because nobody rereads 900 lines to check. Appending would have made the failure mode worse.

What replaces it: current status, a subsystem map, a "Things that will bite you" section for traps the code doesn't reveal (commit-before-emit, models/__init__ completeness, migrations-vs-tests, the Y.js singleton pin, MinIO having no local-filesystem backend, the OIDC proxy/SSRF env traps), setup/dev/demo, and an ADR lookup table.

It also still instructed readers to "work the phases in order", so docs/claude_plans/ gains a README marking those plans finished and historical.

Accuracy

Counts asserted in the new text were verified against code, not prose: 38 permissions, 67 event types, 19 modules of which 3 are optional. Likewise the claim that the audit consumer opens its own session (utils/audit_log.py:28) — that's what makes commit-before-emit load-bearing rather than a style preference.

Also corrected throughout: v1.2.0 is not tagged. Latest tag is v1.1.1; the milestone is complete on main and awaiting a tag. The docs now say that rather than implying a release exists.

Verification

tsc --noEmit clean · eslint clean · npm run build succeeds · 167/167 vitest tests pass.

Backend is untouched, so pytest was not run.

🤖 Generated with Claude Code

The repository's documentation still described a platform at
initial-public-release readiness. Three releases and ~25 shipped features
later, several claims were flatly wrong rather than merely stale.

Corrections, in order of how badly they misled:

- README announced "Password auth only for now; SSO/LDAP ... deliberately
  not built yet". OIDC shipped in #58. The feature tables were also missing
  ticket attachments, API tokens, email verification, rules/CoC, the
  submissions browser, announcement targeting, retention purge and
  spectator insights; the GHCR examples were pinned to v1.1.0.
- UI-INTEGRATION-NOTES described SSO as deferred in two places and said AI
  was "off the roadmap" (it's milestoned v1.4.0). Adds the 13 surfaces
  built after the handoff.
- ARCHITECTURE §7.1 was missing manage_auth_providers and view_submissions
  — found by diffing the doc against auth.permissions rather than reading
  it (the 67 event types all matched). §11.3 predicted SSO would be an
  *optional* module; it shipped required-core, because module state is
  per-competition and authentication is a property of the install. That
  wrong prediction is now recorded next to the real 19-module inventory.
- ARCHITECTURE gains §13.4 (outbound network calls). The update check
  added in #111 had no coverage in the binding design doc at all, which is
  a poor place for "what does this send where" to be undocumented.
- adr/README.md never listed ADR-0021.
- CONTRIBUTING said "all four checks". CI runs five, and the missing one
  is `npm run build` — the only one that exercises prerendering, and the
  one that broke PR #119.
- The in-app AI tab said "Deferred past MVP"; it's scheduled, not dropped.

ROADMAP was structurally stale, not just factually: it ended at Tier 3 with
no notion of the release milestones that replaced tiers as the unit of
planning. Adds a Post-1.0 section covering v1.0.0-v1.2.0 as shipped and
v1.3.0-v1.5.0 as planned. Note that `#N` means a roadmap item in the tier
half and a GitHub issue in the new half, and the two collide (roadmap item
23 is analytics, issue #23 is insight cards) — called out rather than
renumbered, since renumbering would break every inbound reference.

CLAUDE.md is restructured rather than extended, 951 -> 331 lines. It had
become an append-only build log, ~810 lines of it restating what git log,
the ADRs and ARCHITECTURE.md already record — and it had still drifted past
25 features, because nobody rereads 900 lines to check. Appending would
have made the failure mode worse. What replaces it: current status, a
subsystem map, a "Things that will bite you" section for the traps the code
doesn't reveal (commit-before-emit, models/__init__ completeness,
migrations-vs-tests, the Y.js singleton pin, MinIO having no local backend,
the OIDC proxy/SSRF env traps), and an ADR lookup table. It also still told
readers to "work the phases in order", so docs/claude_plans/ gains a README
marking those plans finished.

Counts asserted in the new text were verified against code, not prose: 38
permissions, 67 event types, 19 modules of which 3 are optional. Likewise
the claim that the audit consumer opens its own session (utils/audit_log.py
line 28), which is what makes commit-before-emit load-bearing.

VISION.md gets a header marking it the founding document — intent, not
status — and a note on the two design docs it required that were folded
into ARCHITECTURE.md instead of being written.

Verified: tsc, eslint, npm run build and 167/167 vitest tests pass. Backend
is untouched, so pytest was not run.

Co-Authored-By: Claude <noreply@anthropic.com>
@tbcsec
tbcsec merged commit 71b0563 into main Aug 1, 2026
4 checks passed
@tbcsec
tbcsec deleted the claude/docs-sweep branch August 1, 2026 16:50
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