An honest register of the gaps in LearnAurelle, written so nobody discovers them by accident. Last updated 14 October 2026.
learnaurelle.com is still
serving the old pre-rename build. None of the mathematics exists there yet.supabase/schema-math.sql or no maths progress
is saved. It is step 5 of SETUP.html.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.
| Course | Written | Total | Coverage |
|---|---|---|---|
| Algebra 1 | 39 | 39 | complete |
| Integrated Math I | 7 | 33 | |
| Integrated Math II | 4 | 30 | |
| Integrated Math III | 1 | 33 | |
| AP Calculus AB | 1 | 33 | |
| AP Statistics | 1 | 31 | |
| Geometry | 0 | 38 | outline only |
| Algebra 2 | 0 | 35 | outline only |
| Precalculus / Math Analysis | 0 | 33 | outline only |
| AP Precalculus | 0 | 32 | outline only |
| AP Calculus BC | 0 | 18 | outline only |
| Introduction to Data Science | 0 | 30 | outline only |
| Financial Algebra | 0 | 26 | outline only |
| Discrete Mathematics | 0 | 25 | outline only |
| Competition Mathematics | 0 | 23 | outline only |
| Total | 53 | 459 |
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.
Complete. 150 skills across nine files generate unlimited randomised problems with worked solutions, and all 102 units in the catalogue now map to at least one of them — 252 unit–skill links in total. Numeric and algebraic answers are graded by the maths engine, so any equivalent form is accepted; conceptual topics that do not reduce to an expression use multiple choice or a short written answer instead.
| File | Skills | Covers |
|---|---|---|
math-problems.js | 30 | Algebra 1, Integrated Math I–III core, Algebra 2 core, trigonometry, early calculus, basic statistics, finance |
problems-geometry.js | 16 | Vocabulary, constructions, midpoint/distance, transformations, rigid motions, congruence criteria, angle pairs, triangles, quadrilaterals, similarity, proportional segments, circle angles, arcs and sectors, chords and tangents, coordinate proof, logical structure of a proof |
problems-algebra2.js | 16 | Parent functions, transformations, piecewise, inverses, rational expressions and operations, asymptotes and holes, radical equations, extraneous solutions, arithmetic/geometric/recursive sequences, end behaviour, Remainder and Factor theorems, complex zeros, polynomial identities |
problems-precalc.js | 17 | Composition, average rate of change, zeros and multiplicity, slant asymptotes, polynomial inequalities, the trig identities (fundamental, sum/difference, double/half angle, proof steps), vectors, dot product, matrices, determinants and inverses, systems by matrices, conics, parametrics, polar |
problems-calculus.js | 24 | Chain rule, implicit and inverse derivatives, motion, related rates, linearisation, L'Hospital, MVT, monotonicity, concavity, optimisation, slope fields, separation of variables, exponential models, average value, area between curves, volumes, parametric and polar calculus, and the full BC series unit (convergence tests, geometric and p-series, ratio test, Taylor/Maclaurin, alternating and Lagrange error) |
problems-statistics.js | 19 | Two-way tables, correlation, least-squares regression, residuals, sampling methods and bias, experimental design, scope of inference, confidence intervals and tests for proportions, t procedures, two-sample inference, chi-square (goodness of fit, homogeneity, independence), regression-slope inference, and the Data Science units: variable types, provenance and ethics, simulation and bootstrapping, classifier evaluation, communicating with data |
problems-discrete.js | 11 | Propositional logic, truth tables, induction, set operations, inclusion–exclusion, graphs and the handshake lemma, shortest path and colouring, recurrences, algorithm efficiency, divisibility and primes, modular arithmetic and Caesar ciphers |
problems-finance.js | 6 | Wages and overtime, payroll deductions and net pay, budgeting, progressive income tax, credit cards, amortisation for car loans and mortgages |
problems-competition.js | 11 | Vieta, clever factoring and SFFT, AM–GM, digit problems, CRT and Diophantine equations, stars and bars, complementary counting, power of a point, angle chasing, area techniques, and AMC scoring/guessing strategy |
Three answer modes are supported. answerType: "number" and
"expression" go through the algebraic grader; "choice" renders
lettered options (clicking one selects it, Check grades it, the right option is then
highlighted); "text" accepts a short written answer with an
accepts[] list of synonyms and tells a student when they are only a spelling slip
away.
New generators go in the matching js/problems-*.js file via
register(), then into the UNIT_SKILLS map in
js/math-ui.js. Run node tests/math-problems.test.js afterwards: it
generates 40 items per skill (6,000 in total), fails if any cannot be graded correct against
its own key, checks every distractor on every multiple-choice item, and fails if any
catalogue unit is left without practice.
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.
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.
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.
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.
A skill's next appearance is a function of its current correct streak only:
0 → due now, 1 → 1 day, 2 → 2, 3 → 4,
4 → 7, mastered → 21. There is no per-item ease factor, no response-time
weighting and no forgetting curve fitted to the individual. The interval is computed from
last_seen_at, which comes from the database, so the queue is the same on every device
— but a student who answers nothing for two months simply sees everything due at once rather
than a graded backlog.
A standard is shown as held when every practice skill tagged with that code has been
answered correctly five times in a row. That is a proxy. A code with two generators attached is
easier to “hold” than one with six, and 79 of the 205 codes the app references have no
generator at all — those are drawn with a dashed outline and labelled no practice
generator yet rather than silently counted as unmastered. The page also states both totals
plainly: 205 codes are referenced across units and generators, while the course catalogue itself
lists 178. The 27 extra are course-local codes (AP-*, CM-*,
DS-*, FA-*) and six CCSSM codes a generator cites that no unit currently
lists. Treat the map as a study aid, not as a standards-based grade.
The worksheet builder lays out real generated problems for paper and prints through the browser's own dialog (choose Save as PDF there to keep a file). There is no server-side PDF renderer, no page-count control, and no way to email a sheet from inside the app. The sheet is reproducible from its seed — the form number is printed on both the questions and the key — but nothing records which seed was handed to which student; that is still a paper exercise.
There is one code (the Konami code, or the wordmark tapped seven times on a
touch screen), one switch (“Hidden panels” in Settings ›
Appearance, mirrored on the panel itself) and one page
(#/secrets, four tabs: Panels, Terminal, Arcade, Lore). Switching it off hides the
nav entry and closes every panel without forgetting the code.
None of it is a permission boundary and none of it is treated as one. The terminal reports only
what the signed-in session can already read, every command runs in the browser against data it
already holds, and the database still checks the role on every request —
whoami says so in as many words. Reaching the page by guessing the address grants
nothing, which is why guessing it is allowed. The unlock is remembered in
localStorage, so it is per-browser and a new device starts locked again; that is a
toy's persistence, not an account setting.
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.
| Item | State |
|---|---|
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. |
Three items that used to sit in this list have been built and tested: the
per-standard mastery report (#/standards), spaced
repetition (#/review), and the printable worksheet with answer
key (#/worksheet). Their limits are described in section 4 above rather
than hidden here.
| Idea | Priority |
|---|---|
| Assign a maths unit or skill as homework, the way trading lessons can already be assigned | high |
| A teacher-side view of which worksheet seed went to which student, so a lost paper can be regraded without asking | high |
| Equation editor so students can enter fractions and radicals visually | medium |
| Per-item ease factors so the review ladder adapts to the individual rather than to the streak alone | medium |
| Generators for the 79 referenced standards that still have none | medium |
| Geometry construction tool for compass-and-straightedge lessons | low |
| Offline service worker | low |