# Reproduce the Afrikaans IAG2 assets

Download the complete `/sources/af/` directory listed in `SOURCE-MANIFEST.json`, including `compiled/`, to a fresh directory. Install a compatible Node.js 24 runtime before going offline. No private checkout, review archive or source-download cache is required. The NCHLT bulk corpus is not needed for this candidate-to-asset reproduction.

With network disabled, run `node reproduce.mjs /absolute/path/to/fresh-output-directory` from this directory. The output directory must not exist. The command validates the candidate, policy and curation identities, then uses the bundled minimum IAG2 builder closure. It rejects any asset or manifest whose bytes differ from `generation-lock.json` and emits exactly the 51 locked assets. Run it twice with two fresh output directories to check determinism.

For upstream reacquisition and candidate selection, use `source-matrix.json`, `pipeline.py` and an external copy of the NCHLT archive whose identity matches the matrix. The full archive and corpus are intentionally not mirrored in this source directory. The original non-UTF-8 README bytes are retained in the repository's `data-sources/af-nchlt/Info.NCHLT.Corpora.Readme.raw.bin.gz`, with their uncompressed identity documented by `source-matrix.json`; the `.normalized.utf8.txt` file here is an analytical rendering, not the original.
