# KRB Boarding full-section importer v1

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

- Boarding at KRB — `/boarding`
- Boarding Tour — `/boarding/boardingtour`
- Facilities — `/boarding/facilities`
- International — `/boarding/international`
- Support — `/boarding/support`

Excluded: International Boarding Scholarships (`/boarding/international-boarding-scholarships`) because the source URL returned 404 in the source-availability check.

## 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 `krb-webflow-other-static-images-uploaded-to-webflow.csv`; 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.
- 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
{
  "Boarding at KRB": {
    "Section / Text Content": 4,
    "Section / Gateway CTA": 4,
    "Section / CTA": 5,
    "Section / Two Column Text & Image": 2,
    "Section / Image Cluster": 3
  },
  "Boarding Tour": {
    "Section / Text Content": 1,
    "Section / CTA": 3,
    "Section / Two Column Text & Image": 1
  },
  "Facilities": {
    "Section / Text Content": 1,
    "Section / Two Column Text & Image": 2,
    "Section / Image Cluster": 2
  },
  "International": {
    "Section / Text Content": 5,
    "Section / Two Column Text & Image": 3,
    "Section / Image Cluster": 1
  },
  "Support": {
    "Section / Text Content": 4
  }
}
```

## Manual / visual verification notes

- Boarding Tour: source child 4 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding Tour: source child 6 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding Tour: source child 7 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding Tour: source child 8 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding at KRB: source child 11 (block lazy-component tabbed-content tabbed-content--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding at KRB: source child 12 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding at KRB: source child 13 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding at KRB: source child 5 (block lazy-component call-to-action call-to-action--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding at KRB: source child 6 (block lazy-component video video--default) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding at KRB: source child 8 (block lazy-component call-to-action call-to-action--simple) was not natively recognised by scraper; mapped where safe, verify visually.
- Boarding at KRB: tabbed-content source block expanded into static text/image sections; verify whether a native tab interaction is required.
- International: source child 10 (block lazy-component gallery-slider gallery-slider--default) was not natively recognised by scraper; mapped where safe, verify visually.

## Run marker

Dry-run output marker: `KRB_BOARDING_FULL_SECTION_IMPORT_V1_ALL_RESULT`

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