Skip to content

Harden install + notebook flow for the workshop room (council points 1-5)#12

Merged
daharoni merged 2 commits into
mainfrom
workshop-prep/install-hardening
Jun 28, 2026
Merged

Harden install + notebook flow for the workshop room (council points 1-5)#12
daharoni merged 2 commits into
mainfrom
workshop-prep/install-hardening

Conversation

@daharoni

Copy link
Copy Markdown
Contributor

We're 3 days out and install instructions ship tomorrow, so this prioritizes a reproducible, CI-verified install and guarantees the per-tool teaching notebooks are present — implementing points 1–5 from the install-friction council review.

Changes

1 · Non-destructive fetch_notebooks.py — fetches each tool into a temp dir, requires ≥1 .ipynb, then atomically swaps. The old code did shutil.rmtree(dest) before the copy, so a failed re-run (flaky wifi, upstream drift) destroyed a working set. Now a failure leaves the committed copy untouched and exits loud.

2 · Teaching notebooks are vendored/committedtutorials/<tool>/notebooks/ is un-gitignored and the 9 known-good notebooks (minisim ×4, minian ×3, eztrack ×2) are committed, so they're present on clone. Each dir gets a PROVENANCE.md (upstream source + GPL license + refresh note). fetch_notebooks.py becomes an optional, version-matched refresh.

3 · CI gates the notebookssmoke.yml now runs fetch_notebooks.py (a red build the moment an upstream notebook-CLI drifts), and validate_notebooks.py validates the vendored teaching notebooks instead of skipping them.

4 · Cross-platform lockpywinpty marked ; sys_platform == "win32" so requirements.lock installs on Linux/macOS. CI now installs the lock (the set the room runs), not the unpinned requirements.txt.

5 · Pre-flight gate — new scripts/verify.py self-checks Python / ffmpeg / venv / tool versions / kernel / notebooks / data with PASS/FAIL + exact fix commands. ORGANIZER.md adds the "run verify before the room" email gate and a cross-OS clean-machine dry-run checklist (the lock is CI-verified on Linux but untested on macOS/ARM — that dry run is the real cross-OS guarantee).

Docs aligned — README/INSTALL/ORGANIZER + per-tool READMEs: lock is the recommended install, kernel registration added to the quick start (it was missing), notebooks documented as committed + optionally refreshed, verify.py added as a step.

Verification

  • validate_notebooks.py passes on all 13 committed notebooks locally.
  • verify.py runs clean (ASCII output, Windows-safe).
  • CI on this PR exercises: lock install on Linux, kernel registration, fetch_notebooks.py (all 3 tools), data fetch, capstone execution.

Not in this PR (flagged for the organizer)

  • macOS/ARM dry run — can't be done in CI; checklisted in ORGANIZER.md.
  • Conference-wifi mitigation (USB wheelhouse) and executing the per-tool notebooks in CI — deferred.

🤖 Generated with Claude Code

daharoni and others added 2 commits June 28, 2026 10:36
Implements the council's points 1-5 so the per-tool teaching notebooks
reliably materialize across OSs and experience levels, and the room runs a
reproducible, CI-verified install.

1. Non-destructive fetch_notebooks.py: fetch each tool into a temp dir, require
   >=1 .ipynb, then atomically swap. A failed/repeated run can no longer
   shutil.rmtree a working set before the copy — committed copies stay put.
2. Vendor the teaching notebooks: tutorials/<tool>/notebooks/ are now committed
   (un-gitignored) so they're present on clone; each dir has a PROVENANCE.md
   (upstream source + license). fetch_notebooks.py becomes an optional refresh.
3. CI gates them: smoke.yml runs fetch_notebooks.py (red build on upstream
   notebook-CLI drift), and validate_notebooks.py now validates the vendored
   teaching notebooks too.
4. Cross-platform lock: mark pywinpty win32-only so requirements.lock installs
   on Linux/macOS; switch CI + docs to install the lock (the room's set).
5. Pre-flight gate: scripts/verify.py self-checks python/ffmpeg/venv/tool
   versions/kernel/notebooks/data with PASS/FAIL + fix hints; ORGANIZER.md adds
   the "verify before the room" email gate + a cross-OS dry-run checklist.

Docs aligned (README, INSTALL, ORGANIZER, per-tool READMEs): lock is the
recommended install, kernel registration added to the quick start, notebooks
documented as committed + optionally refreshed, verify.py added as a step.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…stall error

A participant on the wrong Python hit "No matching distribution found for
camap[notebook]" — camap caps at <3.14 and needs >=3.11, so 3.14 (newest) and
3.10 both fail. Document the exact symptom and point at verify.py.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@daharoni daharoni merged commit 5332005 into main Jun 28, 2026
2 checks passed
@daharoni daharoni deleted the workshop-prep/install-hardening branch June 28, 2026 17:56
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