slides/openslide/README.md

OpenSlide Support

Decision: use Markdown direct import as the v1 OpenSlide source format.

Markdown remains the canonical, reviewable source. HTML/PDF/JSON exports are derived artifacts only and must not become the source of truth unless John explicitly changes this contract.

Contract

student deck.

prefix, for example:

Expected Import Behavior

OpenSlide 顯示時只讀 student deck:

slides/student/00-course-deck.md

講師版另外讀 notes:

slides/speaker-notes/00-course-deck-notes.md

Export Policy

side by side.

spec in this folder and keep Markdown as the canonical source.

Minimal Validation

Before a deck is treated as OpenSlide-ready:

Original Markdown source
# OpenSlide Support

Decision: use Markdown direct import as the v1 OpenSlide source format.

Markdown remains the canonical, reviewable source. HTML/PDF/JSON exports are
derived artifacts only and must not become the source of truth unless John
explicitly changes this contract.

## Contract

- Student deck source: `slides/student/*.md`
- Speaker notes: `slides/speaker-notes/*-notes.md`
- Slide delimiter: `---`
- Front matter: YAML block at file start
- Source references: slide body 使用 `Sources: SOURCE-ID`,完整來源在 `references/source-map.md`
- Student export must not include files under `slides/speaker-notes/`
- One Markdown file represents one deck.
- Speaker notes are separate Markdown files and are never embedded in the
  student deck.
- Student deck filenames and speaker-note filenames must share the same numeric
  prefix, for example:
  - `slides/student/00-course-deck.md`
  - `slides/speaker-notes/00-course-deck-notes.md`

## Expected Import Behavior

OpenSlide 顯示時只讀 student deck:

```text
slides/student/00-course-deck.md
```

講師版另外讀 notes:

```text
slides/speaker-notes/00-course-deck-notes.md
```

## Export Policy

- Default review path: OpenSlide reads `slides/student/*.md` directly.
- Student export path: export only `slides/student/*.md`.
- Instructor prep path: read the matching `slides/speaker-notes/*-notes.md`
  side by side.
- If a future OpenSlide workflow requires HTML, PDF, or JSON, add the exporter
  spec in this folder and keep Markdown as the canonical source.

## Minimal Validation

Before a deck is treated as OpenSlide-ready:

1. The student deck has YAML front matter.
2. Slides are separated by `---`.
3. Student slides do not contain speaker-only notes.
4. Every `Sources:` line uses IDs present in `references/source-map.md`.
5. The matching notes file exists when the student deck is not just a stub.