render-install-roster.mjs — install roster renderer
Renders the consumer install roster for INSTALL-FOR-AI.md from the SAME manifest the installer executes — the doc and the installer cannot disagree silently; --write emits, --check exits 1 on drift.
Census id: F41 · Family: F — rules corpus + generated-rule tooling + shipped audit scripts · Provenance: framework pin
b069c59328aa8e08671d3a19fd25efa618dfc1c5(stagingFETCH_HEAD, read 2026-09-11; re-anchored from census pina1337cb301). Everyfile:linebelow is at that pin. Raw reference drafted by stage E4 — factual, unpolished by design.
| Field | Value |
|---|---|
| Status | raw reference (census row F41: MISSING → drafted E4; census satellite A — installer engine family) |
| Ships-to | clone only — framework tooling |
| Fires-at | manual regen / CI drift check over the INSTALL-FOR-AI.md roster |
Invocation
node scripts/render-install-roster.mjs (--write | --check) [--root <dir>] — scripts/render-install-roster.mjs:108 «const mode = argv.includes('--check') ? 'check' : argv.includes('--write') ? 'write' : null;» and :109 «if (!mode) { console.error('usage: render-install-roster.mjs (--write | --check) [--root ]'); return 2; }»
Exit codes
- 0 — write emitted / check clean.
- 1 — drift on check:
scripts/render-install-roster.mjs:28« * Modes:--write(emit) |--check(drift, exit 1 on any failure).» with region-missing drift at:139« if (!present.has(id)) drift.push(${TARGET}: region \${id}` missing (run --write));» and the fix hint:146` « Fix: npx tsx scripts/render-install-roster.mjs --write»;». - 2 — usage error.
What it probes
That the documented install roster equals what the installer actually ships. Header: scripts/render-install-roster.mjs:2 « * render-install-roster — deterministic consumer install roster for INSTALL-FOR-AI.md»; the lying-doc origin: :6-8 « * WHY: the "This installs" roster in INSTALL-FOR-AI.md restated the installer's shipped / * agent/skill sets by hand and drifted (the same lying-doc class the D1 inventory records). / * This renderer extracts the roster from the SAME manifest the installer executes, so the / * doc and the installer cannot disagree silently.»; the SSOT: :10-12 « * SOURCES OF TRUTH (read, never re-stated from memory): / * - agents shipped by default: every agents/*.md MINUS the authoring-only skip-list». Lineage note: :30 « * Precedent: scripts/render-rule-index.mjs --write/--check; scripts/render-harness-config.mjs.»
Where it lives
Clone-only at scripts/render-install-roster.mjs; renders the framework's own INSTALL-FOR-AI.md (the installer-engine family's consumer-facing doc, census satellites A1/A2); the CI --check arm follows the same pattern as the rule-index renderer.
render-harness-config.mjs — harness config renderer
Derives per-harness runtime config (CC + zcode) from ONE neutral SSOT (.ai-factory/harness-model.json) — every harness config a thin, drift-gated derivation; off-set hook events are declared loudly, never dropped silently.
audit-r4.ts — R4 audit probe
ts-morph-based R4 probe: every named export from src/domain/*.ts must have a co-located <base>.unit.ts whose text mentions the export; exits 1 on any violation. Shipped to consumers as scripts/audit-r4.ts.