What is not finished

An honest register of the gaps in LearnAurelle, written so nobody discovers them by accident. Last updated 14 October 2026.

Read this first: three things will bite you.
  1. The live site is out of date. learnaurelle.com is still serving the old pre-rename build. None of the mathematics exists there yet.
  2. You must run supabase/schema-math.sql or no maths progress is saved. It is step 5 of SETUP.html.
  3. The maths database layer has never been executed. It was written and reviewed, not tested. Verify it yourself after deploying.

1. Lesson prose — the largest gap

The catalogue describes 15 courses, 102 units and 459 lessons. Every one of those lessons has a real title, sits in a real sequence, and is tagged to real California standards. 53 of them have a written explanation. The other 406 show a page that says so plainly, lists where the lesson sits and which standards its unit covers, and links to any practice that exists. Nothing renders blank and nothing pretends to be finished.

CourseWrittenTotalCoverage
Algebra 13939complete
Integrated Math I733
Integrated Math II430
Integrated Math III133
AP Calculus AB133
AP Statistics131
Geometry038outline only
Algebra 2035outline only
Precalculus / Math Analysis033outline only
AP Precalculus032outline only
AP Calculus BC018outline only
Introduction to Data Science030outline only
Financial Algebra026outline only
Discrete Mathematics025outline only
Competition Mathematics023outline only
Total53459
Why Integrated Math already has lessons nobody wrote for it. Lessons are keyed by title in one shared pool, not owned by a course, because California's 2023 framework says the traditional and integrated pathways cover the same standards in a different order. Writing Solving multi-step equations once made it appear in Algebra 1 and in Integrated Math I automatically. 43 written entries produce 53 lesson appearances today, and that multiplier grows as more are written.

How to add one

Open js/math-lessons.js and call L() with the exact lesson title from the catalogue. The file header documents the content format, and the 39 Algebra 1 entries are working examples of every feature: prose with inline $maths$, worked examples with steps, plotted figures, key ideas, common mistakes, vocabulary, and links to practice skills. No other file needs touching — the lesson page and the Lesson badge both appear on their own. MathLessons.stats() recounts coverage live.

2. Practice generators

30 skills generate unlimited randomised problems with worked solutions, and every one is graded algebraically, so any equivalent form is accepted. They are mapped to 54 of the 102 units. The remaining 48 units show an honest "practice not built yet" note rather than an empty panel.

AreaState
Algebra 1, Integrated Math I–II, Geometry basics, Algebra 2 corecovered
Calculus — derivatives, definite integrals, limits3 skills; enough for AB practice, not for BC series
Statistics — mean/median, probability, binomial, z-score, expected value5 skills
Financial Algebra — compound interest, percent change2 skills
Discrete Mathematics, Data Science, Competition Mathematicsno generators
Geometric proof, constructions, transformationsno generators — needs a different interaction model than a text answer box

New generators go in js/math-problems.js via register(), then into the UNIT_SKILLS map in js/math-ui.js to attach them to units. Run node tests/math-problems.test.js afterwards; it generates 40 items per skill and fails if any cannot be graded correct against its own answer.

3. Not tested, and not claimed to be

supabase/schema-math.sql has never been run. Three tables, eight RLS policies, three guard triggers and four functions were written by following the patterns already proven in schema.sql, and reviewed by reading. No PostgreSQL instance was available in this session: the scratch database was lost and sudo was broken. Do not assume these policies work. Section 6 of TESTING.html gives the exact checks to run after you deploy.

Also untested: Supabase Auth itself, Supabase Storage (unused), rate limiting, and load. The 127 database assertions from the original build were not re-run this session for the same reason. The browser suite in tests/browser/ was run — 60 assertions, 0 failures — but against the offline demo backend, so it proves the interface, not the policies.

4. Known design limits

Practice can be faked, by design

Problems are generated and graded in the browser, so the server cannot independently verify a result. A student who opens the console can record a correct answer they did not earn. This is acceptable only because practice is never a gradebook source. Graded work goes through submit_quiz(), which scores inside Postgres against an answer key the student's browser never receives. The teacher's Class Progress page says so on the page itself.

localStorage is a cache, not the database

Maths progress is written to Postgres through math_record_attempt(). localStorage holds two things only: a read-through cache so a page can paint before the round trip finishes, and a bounded retry queue (500 items) so a dropped connection does not silently lose work. The queue is flushed on the next successful load. If you sign in on another device your real progress follows you; only the cache stays behind.

Standards are cited by code, not by text

Every unit lists its CA CCSSM codes and the lesson page decodes the domain (A-REI → Algebra · Reasoning with Equations and Inequalities). The verbatim text of each standard is deliberately not reproduced, because paraphrasing an official standard and presenting it as official would be worse than omitting it.

Graphing calculator

Plots explicit functions y = f(x) with pan, zoom, asymptote breaks, shading and auto-fit. It does not do parametric, polar or implicit curves, inequalities in two variables as a shaded region driven by the user, regression on entered data, or tables of values.

5. Deployment

ItemState
learnaurelle.com stale Live and on a valid certificate, but serving the build from before the rename. Every change since — the new name, the palette, all the mathematics — is undeployed. Re-upload the folder.
learnaurelle.org unconfigured On Cloudflare nameservers but still carrying leftover IONOS records. No redirect yet. Plan in DOMAINS.html.
tradingdesk.me Serving via the Worker. Not yet redirected to the canonical domain.
Supabase Site URL Must be set to https://learnaurelle.com once the above is done, or password reset emails will point at the wrong host.
No cloud resources were created for you. Nobody with access to your Cloudflare or Supabase accounts performed these steps. Every instruction in SETUP.html and DOMAINS.html is written for you to carry out, with the exact place to click.

6. Things that would be nice

IdeaPriority
Assign a maths unit or skill as homework, the way trading lessons can already be assignedhigh
Per-standard mastery report rather than per-skillhigh
Spaced repetition — resurface a skill a week after it was masteredmedium
Printable worksheet and answer key from any skill setmedium
Equation editor so students can enter fractions and radicals visuallymedium
Geometry construction tool for compass-and-straightedge lessonslow
Offline service workerlow