Commit 876b82ec authored by Vacaliuc, Bogdan's avatar Vacaliuc, Bogdan
Browse files

slides: update README index with all 8 slides



Reorganize the index table to a numbered 1–8 list with SVG, PNG and
source (hand-authored vs gen_slide_*.py) columns. Add a "What each
slide is for" section describing the intended conversation each
slide supports during the pre-meeting and the hack-a-thon sessions.

Documents the regeneration path for the matplotlib-backed slides
(venv + uv install matplotlib numpy), so anyone on any machine can
rebuild the deck.

Co-Authored-By: default avatarClaude Opus 4.7 (1M context) <noreply@anthropic.com>
parent de244b55
Loading
Loading
Loading
Loading
+87 −25
Original line number Diff line number Diff line
# Pre-hack-a-thon slides — Day PRE-2 (2026-04-21)

Scientist-facing slides for the pre-hack-a-thon meeting on
2026-04-21.  Authored in SVG (hand-written; no template dependency)
and rendered to PNG for drop-in use in PowerPoint / Google Slides.
2026-04-21.  Authored in SVG (hand-written) or generated via small
Python scripts using matplotlib; rendered to PNG for drop-in use in
PowerPoint / Google Slides.

## Files

| Slide | SVG | PNG | Notes |
|---|---|---|---|
| 1 — Current vs. ideal coupling | [slide-1-current-vs-ideal.svg](slide-1-current-vs-ideal.svg) | [slide-1-current-vs-ideal.png](slide-1-current-vs-ideal.png) | Left = today, right = ideal, arrow in middle |
| 2 — API mapping, mr_reduction ↔ lr_reduction | [slide-2-api-mapping.svg](slide-2-api-mapping.svg) | [slide-2-api-mapping.png](slide-2-api-mapping.png) | Three-column table: phase, mr_reduction ideal, lr_reduction:new_workflow |
| # | Title | SVG | PNG | Source |
|---:|---|---|---|---|
| 1 | Current vs. ideal coupling | [slide-1-current-vs-ideal.svg](slide-1-current-vs-ideal.svg) | [slide-1-current-vs-ideal.png](slide-1-current-vs-ideal.png) | hand-authored |
| 2 | Functional API mapping — mr_reduction ↔ lr_reduction | [slide-2-api-mapping.svg](slide-2-api-mapping.svg) | [slide-2-api-mapping.png](slide-2-api-mapping.png) | hand-authored |
| 3 | Five silent MRR default disagreements | [slide-3-silent-defaults.svg](slide-3-silent-defaults.svg) | [slide-3-silent-defaults.png](slide-3-silent-defaults.png) | hand-authored |
| 4 | What scientists see today — GUI vs autoreduce curves | [slide-4-curves-disagree.svg](slide-4-curves-disagree.svg) | [slide-4-curves-disagree.png](slide-4-curves-disagree.png) | [gen_slide_4.py](gen_slide_4.py) |
| 5 | A peak drag traced from click to plot | [slide-5-peak-drag-sequence.svg](slide-5-peak-drag-sequence.svg) | [slide-5-peak-drag-sequence.png](slide-5-peak-drag-sequence.png) | hand-authored |
| 6 | The ideal reduce() contract | [slide-6-reduce-contract.svg](slide-6-reduce-contract.svg) | [slide-6-reduce-contract.png](slide-6-reduce-contract.png) | hand-authored |
| 7 | Technical-debt triage (effort vs payoff) | [slide-7-debt-triage.svg](slide-7-debt-triage.svg) | [slide-7-debt-triage.png](slide-7-debt-triage.png) | [gen_slide_7.py](gen_slide_7.py) |
| 8 | A/B equivalence harness proposal | [slide-8-equivalence-harness.svg](slide-8-equivalence-harness.svg) | [slide-8-equivalence-harness.png](slide-8-equivalence-harness.png) | hand-authored |

## Regenerating the PNGs
## What each slide is for

Requires `cairosvg` (install once with `uv tool install cairosvg`).
- **Slide 1 (`current-vs-ideal`)** — the high-level argument for
  modularization.  Left = today's tangled state, right = the target.
  Lead slide for the pre-hack-a-thon pitch.
- **Slide 2 (`api-mapping`)** — same reduction phases on both
  REF_M and REF_L; the public-API shape converges even where the
  implementations differ (Mantid vs h5py/numpy).  Supports the
  "mr_core" case by showing a peer that already fits.
- **Slide 3 (`silent-defaults`)** — the five concrete MRR parameter
  tensions.  Shows scientists the specific physics/observable
  decisions they own.  Use when the conversation turns to "do I trust
  the numbers?"
- **Slide 4 (`curves-disagree`)** — visceral visual: two R(Q)
  curves for the same data, annotated with each mechanism from
  slide 3.  Companion to slide 3 when the audience wants to *see* the
  disagreement.
- **Slide 5 (`peak-drag-sequence`)** — a four-lane sequence diagram
  answering "why does the UI freeze when I move a peak line?"
  Supports the Day-1 discussion of Qt/reduction coupling and the
  Day-2 discussion of the computational pipeline.
- **Slide 6 (`reduce-contract`)** — the target signature: one
  function, called by both GUI and autoreduce, with a typed
  `ReductionConfig` and `ReducedRun`.  Directly supports the Day-3
  requirements document.
- **Slide 7 (`debt-triage`)** — 18 debt items on a cost/payoff
  scatter, quadrant-shaded.  Use during Day-1 assessment and Day-4
  ticket-generation to agree on priorities.
- **Slide 8 (`equivalence-harness`)** — the A/B test harness that
  catches every debt item in slide 3 *before* and *after* the
  refactor.  The structural investment that makes the other work
  safe; Tier-2 (item 10 on slide 7).

## Regenerating

Requires `cairosvg` plus `matplotlib + numpy` for the two
Python-generated slides.  Install once:

```bash
./render.sh
# SVG → PNG renderer
uv tool install cairosvg

# venv for generator scripts
uv venv /tmp/slides-venv --python python3
/tmp/slides-venv/bin/python -m ensurepip --upgrade
/tmp/slides-venv/bin/python -m pip install matplotlib numpy
```

Then:

```bash
./render.sh        # re-emits every *.png from its *.svg
```

`render.sh` simply loops over every `.svg` in this directory and
rewrites the corresponding `.png` at native 1920×1080.  The SVGs are
the source of truth; the PNGs are artifacts.
For the Python-generated slides (4 and 7), run the generator first to
update the SVG, then `./render.sh`:

```bash
/tmp/slides-venv/bin/python gen_slide_4.py
/tmp/slides-venv/bin/python gen_slide_7.py
./render.sh
```

## Design choices (for future slide authors)
## Design choices

- **Dimensions:** 1920×1080 (16:9 HD).  Fits modern projectors and
  meeting-room displays without scaling.
- **Font:** `Helvetica, Arial, sans-serif` — renders acceptably on
  every platform without needing to embed a font file.
- **Colors:** ORNL-ish navy (`#002E5D`), amber (`#F5C13A`), warm
  warning orange (`#E87722`), calm green (`#53A548`).  Current state
  uses warm tones; ideal/target state uses cool tones.
- **No emoji, no Mermaid:** every graphic is hand-authored SVG so the
  output is deterministic and the XML is editable in any text editor.
- **Footer:** each slide carries source citations (file paths, SHAs)
  so scientists can trace every claim back to code.
- **Font:** `Helvetica, Arial, sans-serif` for hand-authored SVGs;
  `DejaVu Sans` for matplotlib-generated slides (bundled with
  matplotlib so no font-missing warnings at render).
- **Colour semantics:**
  - Current state / warm palette: warm orange `#E87722`, red `#C8102E`,
    background `#FFF3E6`.
  - Ideal state / cool palette: navy `#002E5D`, green `#53A548`,
    blue `#4A90C2`.
  - Accent: amber `#F5C13A`.
- **No emoji, no Mermaid, no LaTeX dependencies.**  SVGs render in any
  browser and in PowerPoint (Insert → Picture).  PNGs are a backup.
- **Every slide's footer** carries source citations (file:line or
  document § reference) so scientists can trace each claim.

## Cross-references

- `../README.md` — knowledge-base reading map
- `../00-executive-summary.md` — the 10-minute orient
- `../10-mantid-algorithms-deep-dive.md` — the physics behind slide 1's "5 silent default disagreements"
- `../11-technical-debt.md` — the item list on the left panel of slide 1
- `../12-parameter-propagation-and-qt-leakage.md` — the Qt-signal timing and class-attr globals that make up the "tangle"
- `../10-mantid-algorithms-deep-dive.md` — the physics behind slides 3 & 4
- `../11-technical-debt.md` — the item list in slide 7
- `../12-parameter-propagation-and-qt-leakage.md` — the pipeline in slide 5