Skip to content

fix(course): capstone extras as links, progress counts live lessons - #1425

Merged
gHashTag merged 1 commit into
mainfrom
fix/course-capstone-and-text
Oct 5, 2026
Merged

gHashTag merged 1 commit into
mainfrom
fix/course-capstone-and-text

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Fixes from an audit of #/course after #1420.

  • Empty frame in the capstone. Its extra widget wars is a site tab (preview: null), and the lesson page framed it anyway. Extras without a framable page now open as links in their own row, outside the tablist, so the tabs stay valid ARIA.
  • Progress. Saved ids of lessons the course no longer has are dropped, so "N of 30" cannot run high after a rename; a finished course offers Start instead of "Continue" to lesson 1.
  • Lesson 12 says "seven backends" but named six languages; it now says Verilog comes two ways (straight and through the HIR), in EN and RU.
  • The website-checks comment counts 30 lessons (27 and a lab of 3).

Closes #1424

{
  "version": 1,
  "head_sha": "3c4ce84c872972b6c797674d2af6f2f4fa73a6ee",
  "summary": "The course's capstone no longer frames a widget with no page, saved progress counts only live lessons, and lesson 12 names all seven backends.",
  "changes": [
    "src/pages/Course.tsx: extras with no preview render as links in a row outside the tablist; readDone keeps only ids the course has; the overview offers Start when every lesson is done.",
    "specs/course/course.t27 and i18n/course.ru.json: lesson 12 says Verilog comes two ways, straight from the spec and through the HIR; generated files rewritten by course-from-spec.",
    ".github/workflows/website-checks.yml: the course comment counts 30 lessons."
  ],
  "tests": [
    {"command": "node scripts/course-from-spec.mjs --check", "result": "30 lessons in 10 modules, 45 widgets, 10 lesson specs compile clean; locales en, ru; spec tests 6, asserts 24, all hold", "status": "passed", "evidence": "Local run on this branch."},
    {"command": "npm run test:course", "result": "15 pass, 0 fail", "status": "passed", "evidence": "Local run on this branch."},
    {"command": "npm run typecheck:ratchet", "result": "179 errors across 26 files; baseline 179 across 26; no file gained", "status": "passed", "evidence": "Local run on this branch."},
    {"command": "vite build, then vite preview of #/course/capstone", "result": "the WARS extra shows as a link to #/queen?tab=wars; the gatle widget frames as before", "status": "passed", "evidence": "Local preview read in the browser."}
  ],
  "limitations": [
    "eslint reports react-hooks/set-state-in-effect in Course.tsx; it is on main already and this PR does not touch that effect.",
    "Ordering of the tutorial specs across lessons and per-lesson preview cards are left for a separate change."
  ],
  "tags": ["Course", "Website"],
  "blog": {
    "title": "Small fixes to the t27 course after launch",
    "summary": "An audit of the 30-lesson course found an empty frame in the capstone, a progress count that could run high and a lesson that named six of seven backends.",
    "outline": [
      "Why a widget with no framable page, such as the WARS tab on the Queen board, now becomes a link in its own row instead of an empty iframe.",
      "Counting progress only against lessons the course still has, so a renamed lesson cannot push the count past 30, and what a finished course offers.",
      "The seventh backend: Verilog written a second way, through the HIR, and why lesson 12 now names it in English and Russian."
    ]
  }
}

🤖 Generated with Claude Code

The capstone's extra widget wars is a site tab with no framable page, so
the lesson framed null. Extras without a preview now open as links in
their own row, outside the tablist. Saved progress keeps only ids the
course still has, and a finished course offers Start, not Continue to
lesson 1. Lesson 12 names the seventh backend (Verilog through the HIR)
in EN and RU; the CI comment counts 30 lessons.

Closes #1424

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the status:in-progress 🔵 Agent working label Oct 5, 2026
@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

X Brain Health Check

Score: 100.0/100
Status: 🟢 HEALTHY
Threshold: 80/100

X Brain is above merge threshold

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

🚨 CRITICAL: Brain Health Below Threshold

The brain health CI gate has failed. This PR cannot be merged until:

  1. All brain region unit tests pass
  2. Integration tests pass (zig build test-brain)
  3. Every stress test passes with no leaks (zig build test-brain-stress)
  4. Brain health score >= 80/100, and every probe passes in CLI Smoke

Please review the failed job logs and fix the issues.

@github-actions

github-actions Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

🧪 Brain Stress Test Results

Tests: 261/261 passed, 0 leaked
Status: 🟢 PASS
Gate: every test in zig build test-brain-stress passes and none leaks

@gHashTag
gHashTag merged commit 31f9b3e into main Oct 5, 2026
47 of 50 checks passed
@github-actions github-actions Bot added status:completed Done and removed status:in-progress 🔵 Agent working labels Oct 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Course: capstone extra widget renders an empty frame; progress counts stale lessons

1 participant