Skip to content

Harden Study Studio data integrity and learner flow - #2

Merged
zengdaniel7 merged 23 commits into
mainfrom
codex/study-studio-hardening
Jul 23, 2026
Merged

Harden Study Studio data integrity and learner flow#2
zengdaniel7 merged 23 commits into
mainfrom
codex/study-studio-hardening

Conversation

@zengdaniel7

Copy link
Copy Markdown
Owner

What changed

  • Makes FastAPI authoritative for attempt grading, idempotency, review scheduling, schema migrations, backups, import recovery, and Frontier decisions.
  • Binds frontend, backend, manifest, schema, and database identities into one verified release.
  • Routes MCP through authenticated loopback supervisor APIs and serves later lessons from a read-only allowlisted archive.
  • Provides an honest non-persistent GitHub Pages preview.
  • Repairs the learner flow, including an explicit Next card step, durable Again repeats, clearer status, responsive navigation, focus handling, and microphone cleanup.
  • Adds performance budgets and setup heartbeats.

Why

The previous Studio could accept browser-supplied mastery flags, lose the meaning of a timed-out save, collapse a packet of flashcard ratings into one final result, mix runtime releases, expose an unsafe legacy boundary, and hide navigation labels at compact widths. The review flow also gave no clear way to advance after rating a card.

Learner impact

Existing mastery, review dates, course sequencing, exam claims, quiz answers, videos, and learner history are grandfathered and unchanged. W1 remains the only authoritative interactive unit; W2-W23 remain a read-only archive.

Verification

  • 825 course checks.
  • 4 protected curriculum files unchanged.
  • 23 canonical units matched.
  • TypeScript and production release verification passed.
  • 23 frontend unit tests passed.
  • 53 Studio/server/MCP/release tests passed.
  • 9 legacy save-server tests passed.
  • 25 browser journeys passed, including phone, 200% zoom, keyboard, reduced motion, import/export, W1 completion, and durable Again repeats.
  • Non-AI navigation is below 150 ms p95; idempotent save acknowledgement is below 500 ms p95.
  • Live release health and browser console are clean.

Council review reference: 9497a8c4-8bfd-4f28-9c7c-f95f013a3303.

D Z and others added 23 commits July 15, 2026 15:55
Library page grows a searchable two-tab directory: every unit's lesson
sources plus the 20 reviewed community episodes with local thumbnails,
clip/full links, and the community-source notice. The manifest exporter
now folds video-data.js into the protected course manifest, and the
launcher fingerprints the legacy archive without hydrating
cloud-offloaded files. Includes review repairs to this feature: a
details-toggle crash, an exact-title test assertion, launcher
friendly-error messages, stale cache temp cleanup, and the missing
--line-strong variable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Frontend: a failed final quiz save can no longer corrupt the answer
list; 401/409 responses now tell the learner to reload with the
server's own words instead of an endless retry; the skip link focuses
the lesson instead of routing Home; Settings restore/import report what
actually happened when only the session refresh fails; Review load
failures get a retry button; oversized Build files are rejected with a
clear message before upload; buttons default to type=button; units
without a guided lesson show an honest placeholder; the preview env
flag can no longer diverge from the vite alias; focus rings meet
non-text contrast.

Server: migration and pre-import backups live outside the routine
7-slot rotation so boots and exports cannot evict them; exports no
longer leave a redundant plaintext snapshot; rating retries replay
their receipt even when elapsedMs moved; the review stage checks quiz
qualification locally; benign macOS metadata cannot disable /legacy/;
backup inspection warns when the incoming file is older than current
progress.

Docs and CI: README describes the real architecture (Studio at 8765,
preview-only Pages); release identity is verified in CI and the
verified build is uploaded as an artifact; pretest question 15 avoids
the debunked isRetryable phrasing; my-plan labels exam weights as
community-reported.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@zengdaniel7
zengdaniel7 merged commit 3fdaf12 into main Jul 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant