# KRB School Stages full-section importer v1

Dry-run-first Code Lab / Design API Playground importer for:

- Early Learning Centre — `/early-learning-centre`
- Junior School — `/junior-school`
- Senior School — `/senior-school`
- New Year 5 Honours Program — `/our-school/new-year-5-honours-program`
- The Year 7 Experience — `/our-school/year-7`

Excluded: Our School (`/our-school`) and Beyond Class (`/our-school/beyond-class`) because those source URLs returned 404 in the prior source-availability batch.

## Safety

- `dryRun: true` by default.
- No publish, delete, remove, redirect, site settings, CMS schema, global styles, or visibility cleanup.
- Inserts missing top-level sections in source order.
- Uses existing Webflow assets from the KRB uploaded static/page-image CSVs; does not upload new assets.
- Image prop handling uses the v3 Asset-object fallback pattern.

## Mapping notes

- Source CTA blocks map to `Section / CTA`; if more than one link is present, the first is set and extra links are reported for visual/manual follow-up.
- Source video blocks map to `Section / Two Column Text & Image` using its `Visual/Video Embed` prop.
- Source tabbed content is expanded into static Text Content/Image Cluster sections and reported for manual verification.
- Source accordions map to `Section / FAQs` with Accordion Item children.
- Source blockquotes map to `Section / Text Content` and are flagged for visual quote treatment.
- Multi-image two-column galleries keep the first image on the Two Column component and add an Image Cluster for extra source images.

## Expected section counts

```json
{
  "Early Learning Centre": {
    "Section / CTA": 2,
    "Section / Text Content": 2,
    "Section / FAQs": 1,
    "Section / Image Cluster": 2,
    "Section / Two Column Text & Image": 1
  },
  "Junior School": {
    "Section / Text Content": 2,
    "Section / CTA": 2,
    "Section / Two Column Text & Image": 5,
    "Section / Image Cluster": 2,
    "Section / FAQs": 1
  },
  "Senior School": {
    "Section / Two Column Text & Image": 4,
    "Section / CTA": 2,
    "Section / Text Content": 1,
    "Section / Image Cluster": 1
  },
  "New Year 5 Honours Program": {
    "Section / Text Content": 2,
    "Section / FAQs": 1
  },
  "The Year 7 Experience": {
    "Section / Text Content": 3,
    "Section / CTA": 7,
    "Section / Two Column Text & Image": 2,
    "Section / Image Cluster": 1
  }
}
```

## Manual / visual verification notes

- Early Learning Centre: source child 10 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Early Learning Centre: source child 4 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Early Learning Centre: source child 9 (block lazy-component gallery-slider gallery-slider--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Junior School: source child 11 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Junior School: source child 12 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Junior School: source child 4 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Junior School: source child 5 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Junior School: source child 8 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Senior School: source child 10 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Senior School: source child 11 (block lazy-component gallery-slider gallery-slider--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Senior School: source child 5 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: blockquote source child 12 mapped to Text Content; verify visual quote treatment.
- The Year 7 Experience: blockquote source child 8 mapped to Text Content; verify visual quote treatment.
- The Year 7 Experience: source child 10 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 11 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 12 (block lazy-component blockquote blockquote--default) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 13 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 15 (block lazy-component gallery-slider gallery-slider--default) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 16 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 4 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 5 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 6 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 7 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 8 (block lazy-component blockquote blockquote--default) was not natively recognised by scraper; mapped where safe, verify visually.
- The Year 7 Experience: source child 9 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.

## Run marker

Dry-run output marker: `KRB_SCHOOL_STAGES_FULL_SECTION_IMPORT_V1_ALL_RESULT`

After dry-run review, change only `dryRun: true` to `dryRun: false` for live run.
