Skip to content

extras: notebooks that are not sections (#53) - #56

Merged
project-delphi merged 1 commit into
mainfrom
feat/issue-53-extras
Sep 3, 2026
Merged

extras: notebooks that are not sections (#53)#56
project-delphi merged 1 commit into
mainfrom
feat/issue-53-extras

Conversation

@project-delphi

Copy link
Copy Markdown
Owner

Closes #53.

The repo had no concept of a notebook outside the twelve sections, and two places actively refused one: check_links.py failed any .ipynb it could not match to a declared section, and gen_notebooks.py built every header and footer out of sections.sNN. The two deep dives that follow are take-home material rather than sections, so the kind has to exist before either can be committed.

extras: in _variables.yml

A new top-level mapping: sections: minus minutes, start, end and part. That absence is the mechanism — scripts/timeline.py only ever walks sections, so nothing declared under extras: can move a start time, the agenda or workshop.minutes. Extras get no #sec-NN slide anchor and no Kahoot.

Two are declared: 12 · Matrix factorizations and 13 · Tensor factorizations.

The changes

  • scripts/gen_notebooks.py — iterates SECTIONS + EXTRAS. The format line drops part and minutes when they are absent; the footer gives an extra no Kahoot block, chains Next up within the extras, and closes the last one on a link back to the site rather than on the workshop's closing words. Section 11 still does not point at extra 12: the workshop ends there.
  • scripts/check_links.py — extras are notebooks in checks 1 (validity, badges), 3 (Colab URLs) and 8 (solution independence), and are absent from checks 4 (deck anchors), 5 (landing-page parity) and 6 (the clock). Check 6 needed no change by construction, which is the point.
  • scripts/gen_tables.py — three new generated tables: _includes/notebooks-extra-en.md for notebooks.qmd, and _includes/extras-en.md / extras-es.md for the README's two language halves. Columns are # | Deep dive | Colab — no Slides column, because an extra has no deck anchor, and no Quiz column, because no Kahoot covers one.
  • README.md — a ## Going further / ## Para seguir heading in each language half, wrapping new marker regions injected by the existing inject() helper. The 165/195-minute prose is untouched: it is about the timed day, not about what is in notebooks/.
  • notebooks.qmd — a ## Going further section, two new rows in the hand-written What each notebook needs table, and the subtitle reworded off the bare word "Twelve".
  • notebooks/README.md, CLAUDE.md — the same rewording, plus a short section on what an extra is and which checks it does and does not belong to.
  • notebooks/12-*.ipynb, notebooks/13-*.ipynb — placeholder notebooks with their generated header and footer and a scope table. The teaching bodies arrive in the two follow-up issues.

Acceptance

  • gen_tables.py and gen_notebooks.py are byte-stable on a second run — verified, zero files changed.
  • check_links.py passes all nine checks with the two extras declared:
    • [1] 14 notebooks (12 sections, 2 extras): valid, no outputs, no execution counts, badges self-consistent
    • [3] 64 Colab URLs, all well-formed, 14/14 notebooks referenced
    • [4] 15 anchors present in both decks, no extras in either
    • [5] both pages list all 12 sections with slide anchors and notebook links
    • [6] 12 sections end at +03:15 — 195 min including quizzes and breaks
    • [8] 145 visible code cells across 14 notebooks are self-sufficient
  • The generated agenda includes are byte-identical to main.
  • quarto render (1.6.40) run and docs/ committed. That render also picks up the twelve section notebooks in docs/notebooks/, which were stale from the previous merge.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Bis2w9X1oAX9MEVvKh4Ndo

The repo had no concept of a notebook outside the twelve sections, and two
places actively refused one: check_links.py failed any .ipynb it could not
match to a declared section, and gen_notebooks.py built every header and
footer out of `sections.sNN`. Two deep dives are coming that are take-home
material, not sections, so the kind has to exist first.

`extras:` in _variables.yml is `sections:` minus `minutes`, `start`, `end`
and `part`. That absence is the mechanism: timeline.py only ever walks
`sections`, so nothing under `extras:` can move a start time, the agenda or
workshop.minutes. Extras get no #sec-NN anchor and no Kahoot either.

- gen_notebooks.py iterates SECTIONS + EXTRAS. The format line drops `part`
  and `minutes` when they are absent; the footer gives an extra no Kahoot
  block, chains Next up within the extras, and closes the last one on a link
  back to the site rather than on the workshop's closing words. Section 11
  still does not point at extra 12.
- check_links.py treats extras as notebooks in checks 1, 3 and 8, and as
  nothing at all in checks 4, 5 and 6 — the decks, the landing pages and the
  clock stay on the twelve sections. Check 6 needed no change, which is the
  point.
- gen_tables.py writes three new tables over extras: notebooks-extra-en.md
  for notebooks.qmd, and extras-{en,es}.md for the README's two halves.
  Columns are `# | Deep dive | Colab` — no Slides column, no Quiz column.
- README.md gains a `## Going further` region in each language half;
  notebooks.qmd and notebooks/README.md are reworded off the bare "Twelve".
- Placeholder notebooks 12 and 13 land on disk with their generated header
  and footer; the teaching bodies arrive in the two follow-up issues.

check_schedule still reports 195 minutes across twelve sections and the
agenda table is byte-identical. Both generators are stable on a second run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bis2w9X1oAX9MEVvKh4Ndo
@project-delphi
project-delphi merged commit 17c4ea0 into main Sep 3, 2026
1 check passed
@project-delphi

Copy link
Copy Markdown
Owner Author

close #53

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.

extras: notebooks that are not sections

1 participant