--- uai: "1.0" type: topic-memory status: active stable_id: iarpg-campaign-archive project: iarpg.com release: IARPG-OPS-2 version: "2.0.21-wip" review_state: current-until-superseded --- # Campaign Branch Archive ## Current Campaign Archive Contract - **Verified:** `/campaign-archive` imports two or more local campaign-record JSON files, validates known fields, replays every turn from the immutable 2.0.16-wip baseline, and compares selected return points. Evidence: [branch comparison findings](../docs/long-term-memory/reports/deterministic-campaign-branch-comparison-and-replay-report.md#findings). - **Verified:** source files are read into original byte arrays before parsing. Valid and invalid originals remain downloadable unchanged while the active tab is open; invalid imports are quarantined instead of repaired. Evidence: [original preservation finding](../docs/long-term-memory/reports/deterministic-campaign-branch-comparison-and-replay-report.md#original-bytes-and-extension-values-are-preserved). - **Verified:** unknown extension values remain inside the preserved original. The compact comparison lists extension paths but does not copy extension bodies. Evidence: [extension preservation](../docs/long-term-memory/reports/deterministic-campaign-branch-comparison-and-replay-report.md#original-bytes-and-extension-values-are-preserved). - **Verified:** aliases are generated by import order and never from filenames, player identities, organizations, countries, diagnoses, or protected characteristics. Evidence: [neutral-alias finding](../docs/long-term-memory/reports/deterministic-campaign-branch-comparison-and-replay-report.md#neutral-aliases-prevent-accidental-identity-signaling). - **Verified:** comparison remains relationship- and domain-specific. Do not add global friend/enemy, loyalty, morality, trustworthiness, threat, dangerousness, recruitability, or targetability scores. Evidence: [domain-specific comparison](../docs/long-term-memory/reports/deterministic-campaign-branch-comparison-and-replay-report.md#relationship-comparison-remains-domain-specific). - **Verified:** the runtime uses no account, analytics, network request, localStorage, sessionStorage, or personal-identity input. Evidence: [browser-local boundary](../docs/long-term-memory/reports/deterministic-campaign-branch-comparison-and-replay-report.md#the-browser-local-boundary-is-explicit-and-testable). ## Current Machine Records - [Campaign state](../campaign-state.json) - [Campaign-record schema](../campaign-record.schema.json) - [Campaign branch example A](../campaign-branch-example-a.json) - [Campaign branch example B](../campaign-branch-example-b.json) - [Campaign comparison example](../campaign-comparison-example.json) - [Campaign comparison schema](../campaign-comparison.schema.json) ## Operating Rules 1. Accept only campaign records sharing the published campaign ID and immutable baseline version. 2. Reconstruct known turn and state fields deterministically before treating a branch as valid. 3. Preserve imported bytes and unknown fields; never silently repair or overwrite a source record. 4. Keep branch identity neutral and generated locally. 5. Expose evidence, consultation, corrections, burdens, dependencies, internal responses, community consequences, and reversible return points beside state differences. 6. Keep `.menu-strip` as the only sticky surface and preserve the non-sticky search/release masthead. 7. Retain WIP status until every stable-promotion gate has current direct evidence. ## Open Work - A future branch assembler may create a new proposed campaign record from explicitly selected, reviewed turns, but it must never mutate or overwrite imported branches. - Native Firefox, native assistive-technology speech output, externally reachable production-host behavior, field performance, and moderated human comprehension remain unverified.