Boring Docs
Lock Checklist — Criteria for v1.0-locked
Green gates before freezing verbs forever.
Lock Checklist (v1.0-locked)
Do not tag until every box is green. Goal: frozen verbs, just-works binary.
P0 — money + data
- Single Stripe webhook truth via
access.js, dedupe onproviderPaymentRef(unique everywhere), 4xx on bad sig, 500 on failure for retry. - Checkout price from product row only;
priceId/modeallowlisted; redirect URLs relative same-origin. - Cancel binds subscription → order buyer/customer or admin (403 else).
- Claim-repo session-bound + username regex;
githubUsernamepersists on all DBs. - Order
pricingType+ unique refs on all three; SQLite/Supabase/Mongo smoke-passing. - Dockerfile boots from clean build;
/dbvolume +SQLITE_PATHverified; backups includeanalytics.sqlite.
P1 — auth + abuse + rendering
- Stale sessions →
/authwithout loops; admin fail-closed in prod. - In-app rate limits on auth/lead/vote/track/webhooks (nginx is not enough alone).
- Markdown HTML sanitized + CSP; no fake SEO ratings/prices.
- Lead validation + idempotent 200s; vote race handled gracefully.
P2 — hygiene
-
images.remotePatterns, deps upgraded (npm auditclean on high/critical),next lintreplaced/pinned. - Thin-route (≤40) and table-name docs match code, or docs amended once.
-
scripts/test-matrix.sh: sqlite → supabase → mongo + webhook replay, all green.
Tag
git add data/docs && git commit -m "docs: boring guides v1" && git tag v1.0-locked
After the tag: verbs frozen. New capability = new provider file + one registry line + parity test. No new pages, no new top-level folders.
Zero-Lockin Engine