Source of Truth
localStorage) — ticking a box in plan.html
does not rewrite PLAN.md itself.
Deadline Countdown: Pace Assumptions & How to Change Them
The countdown clocks on index.html and
plan.html aren't tied to a fixed calendar date. Each time
they render, assets/study-state.js recomputes a deadline from two
numbers defined at the top of assets/plan-data.js:
hoursPerWeek (currently 13.5) and hoursPerItem
(currently 4 — a rough per-checklist-item estimate). The formula: take the
remaining unchecked items in the current phase, multiply by
hoursPerItem, convert to days at hoursPerWeek / 7 hours
per day, and add that to an anchor instant — "right now" by default, so ticking
or unticking a box shifts the deadline immediately rather than drifting from
some fixed date set once and forgotten.
settings.html now provides an in-browser control for
this: enter hours/week and hours/item and save. The override is stored in this
browser's own localStorage (same scope as checklist progress) — it
does not touch assets/plan-data.js, so a different browser or machine
keeps using the file's defaults until set there too. "Reset to default" on that
page clears the override and falls back to assets/plan-data.js's
hoursPerWeek (13.5) / hoursPerItem (4). Hand-editing
those two constants directly is still the way to change the shared default for
every browser at once.
The same page also has a study start date control. Left at its default, that anchor instant is always "today" — recomputed fresh on every load, which is what keeps deadlines from drifting. Setting a specific date instead fixes the anchor: the schedule (and planner.html's calendar) projects forward from that date rather than always sliding to today, so falling behind pace shows up as overdue instead of quietly re-basing. "Reset to default" drops the override and goes back to the always-today anchor.
PLAN.md Live Sync (Write-Back)
By default, ticking a box on plan.html only updates this
browser's localStorage — PLAN.md itself is untouched, and
a different browser or machine starts from a blank checklist. The "Connect
PLAN.md…" control at the top of plan.html turns on real
write-back: once connected, every tick/untick rewrites the matching
- [ ] / - [x] marker directly in the file on disk,
leaving all surrounding text — headings, prose, wrapped continuation lines —
untouched.
This uses the browser's File System Access API, which comes with two hard requirements:
- Chrome or Edge only — Firefox and Safari don't implement it, and sync silently stays disabled there.
- Must be served over
http(s), not opened as afile://page — the API is blocked onfile://origins for security reasons. Run a static file server from themath_studyfolder, e.g.python -m http.server 8000, then openhttp://localhost:8000/plan.htmlinstead of double-clicking the file. No custom server code is needed — this only serves static files; the write itself happens in the browser.
Connecting: click "Connect PLAN.md…", pick PLAN.md
in the file dialog, and grant read-write permission when asked. On connect, the
browser reads the file's current checkbox states and adopts them — so if
you've hand-edited PLAN.md since the last sync, the file wins and
your browser's checklist updates to match. After that, the file follows the
browser: every click rewrites the file within about a third of a second.
Reloading the page: the file stays remembered, but Chrome
doesn't silently re-grant write permission after a full reload — expect the
status line to read "click to reconnect" each time you reload or reopen
plan.html. Click "Reconnect" once (it needs a real click, since
granting file permission requires a user gesture); that re-pulls the file's
current state, so if you or something else edited PLAN.md since
the last sync, the browser's checklist updates to match rather than silently
overwriting it.
Safety check: the browser matches checkboxes to
assets/plan-data.js's phase/item list purely by position — the same
pairing the checklist rendering already relies on. If you add or remove a
checklist item in PLAN.md by hand without mirroring that change in
plan-data.js, the item counts won't match and sync refuses to
read or write rather than risk marking the wrong item — it surfaces an error
instead.
Disconnecting: click "Disconnect" to forget the file and stop
writing to it. The checklist keeps working from localStorage exactly
as before.
The Study Procedure, End to End
- Pick the next open item in
PLAN.md, top to bottom within the current phase. Phase order already encodes prerequisites — don't skip ahead speculatively. - Find its materials in
resources.md. Read using the method instudy_methods.md§2 — cover worked examples, write definitions out by hand. - Create a
notes/file only once actually mid-topic — never scaffolded in advance. - Run the three-level benchmark test — mechanical, conceptual, application
— from
study_methods.md§3. - Record the result in
topic_coverage.md: tick the levels that passed, set status, date it. - Add a few lines to
log.mdfor the week. - For foundational topics, run a spaced cold-check roughly a month after
reaching benchmark. A fail isn't a setback — it goes back into
PLAN.mdasrevisit.
Five Topic Sectors
Out of scope unless a later strand demands it: pure/abstract algebra, topology, differential/algebraic geometry, number theory, PDE theory, complex analysis.