|
| 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