Skip to content

Commit 809b1da

Browse files
Merge pull request #215 from SaplingLearn/docs/program-state
docs: PROGRAM.md — cleanup/hardening program state and conventions
2 parents cb1265e + fba47a2 commit 809b1da

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

PROGRAM.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Cleanup & Hardening Program
2+
3+
State of the multi-wave cleanup-and-hardening program. Read this at session start
4+
instead of being re-briefed. **Update this file as waves land — don't duplicate it.**
5+
6+
## Done (all merged, CI-green)
7+
8+
- **Wave 1** — 8 scoped PRs. Security: #206 auth-gated the unauthenticated
9+
`/api/users` decrypted-name dump (now 401); #204 closed a cross-user quiz IDOR
10+
(now 404) — each with a negative test that fails on pre-fix code.
11+
Cleanups: #200, #201, #202, #203, #205, #207.
12+
- **Infra**#162 CI pipeline (GitHub Actions: backend pytest + frontend
13+
eslint/tsc/vitest on every PR and push). #208 time-bomb test fixed.
14+
#210 test_documents_routes hermetic and un-quarantined (gated suite ~614, all
15+
genuinely passing). #212 ESLint bulk-suppressions ratchet (every rule at error,
16+
164 existing violations baselined, new ones fail CI).
17+
- **Wave 2 Phase 1** (PR #213) — design-system consolidation: #104 token
18+
consolidation (pixel-identical), #102 glassmorphism removed, #103 gradient-text
19+
headings → solid, #106 fabricated hero stat cards removed, #112 polish (warm
20+
off-white panels, state cues by shape/label not color-only, DM Sans).
21+
- **Wave 2 Phase 2** (PR #214) — a11y: #107 contrast fixes (five token/control AA
22+
fixes; primary button moved to `--brand-forest` — keep it there), #108 focus
23+
rings on 13 inputs, accessible names, SignInModal focus trap, graph/plot a11y.
24+
Final commit: rarity toast label set to neutral `var(--text)` (last #107 cue
25+
finding; verified 17.28:1 on all five tiers — rarity stays signaled by the
26+
colored dot plus the tier name as text).
27+
28+
Wave 2 is closed.
29+
30+
## Backlog / known items
31+
32+
- **Duplicate rarity token blocks in `frontend/src/app/globals.css`**: the legacy
33+
`:root` block (~line 551, from commit 9e303fa) redefines `--rarity-*` *after*
34+
the revamp block (~line 107), so the line-107 values are dead code and the
35+
legacy values are what actually render. Consequences: #107's recorded rarity
36+
ratios were measured against the dead tokens (rendered pre-fix label failures
37+
were actually rare 3.87 / epic 4.13 / legendary 2.10); the rendered legendary
38+
dot (#e8a33a) is ~2.1:1, under the 3:1 non-text bar (mitigated: dot is
39+
aria-hidden and redundant with the text label). Fix: delete the legacy block,
40+
then re-verify every rarity surface (AchievementUnlockToast, Achievements,
41+
ProfileView, TitleFlair) and re-measure dot ratios.
42+
- **3 moderate Dependabot vulnerabilities** on the default branch (as of
43+
2026-06-12) — https://github.com/SaplingLearn/Sapling/security/dependabot
44+
- **PR #96** (feat/knowledge-graph-3d): pre-existing feature branch, outside this
45+
program — leave it alone.
46+
- **GTM-Builds #173**: workers.dev → custom-domain hardening, deferred until a
47+
domain exists. Don't re-raise.
48+
49+
## Conventions (keep all of these)
50+
51+
- One scoped commit per issue; tight diffs.
52+
- No parallel implementation subagents on shared files (globals.css, design
53+
tokens) — that caused worktree contamination in Wave 1. Use worktree-relative
54+
paths. A fresh-context verifier subagent per commit (re-check diff scope;
55+
re-measure ratios for contrast work) is the right use of delegation.
56+
- Audit every "done" against an actual tool result before reporting it — no
57+
fabricated status.
58+
- Merges are CI-gated on the Actions pipeline. "Workers Builds: frontend"
59+
(Cloudflare) is a non-required deploy mirror; if it fails on a code-clean
60+
commit, verify with a local `npm run build` and check the post-merge build on
61+
main.
62+
- Pure refactors: pixel-identical is the acceptance test, verified with a
63+
dangling-ref grep.
64+
- Every commit authored solely by Jose-Gael-Cruz-Lopez — no Co-Authored-By, no
65+
AI trailers.
66+
- Lead check-ins with the outcome in plain sentences, not working shorthand.
67+
Session length is never a reason to stop, summarize, or suggest a new session.

0 commit comments

Comments
 (0)