# Bundled Runtime Base

This build runs from the files declared in `ext_manifest.v2.js`.

- Runtime loads bundle files (one per section/category) plus the supporting
  core, data, i18n, and extension files declared by that manifest.
- Legacy per-version section files are retained under `./legacy_sections/`
  only as source material for legacy-backed bundles.
- The old translation dictionary file is not loaded; current i18n packs are
  declared directly in `ext_manifest.v2.js`.

## Runtime loading rules

- `ext_manifest_loader.v1.js` boots the core first, then loads
  `ext_manifest.v2.js`.
- The manifest's duplicate core entry is skipped by the loader after the
  required bootstrap load.
- Legacy category scanning is disabled by default.
  - To enable scan for debugging: open with `?scan=1`

## Safe bundle regeneration

Always inspect before rebuilding:

```bash
python3 build_bundles.py --check
```

The default command stops without writing when an existing bundle differs from
the legacy-generated output. This protects manually maintained current bundles:

```bash
python3 build_bundles.py
```

Use force only when intentionally replacing those current bundles with the
legacy output:

```bash
python3 build_bundles.py --force
```

## i18n maintenance

Keep canonical prompt tokens unchanged. Localize only UI labels through the
current i18n modules.
