Skip to main content
Status: accepted · ADR-16 · Filed 2026-04-17

Decision

PRISM.md is sync’d as a WHOLE-FILE OVERWRITE from the composed SOR (prism-base.md + prism-<ptype>.md). This matches CLAUDE.md and AGENTS.md behavior. PRISM.md replicas have NO user-modifiable zones. No marker blocks, no preservation logic. Project-specific content that the operator wants to survive sync MUST be migrated upstream — either into the appropriate template (base or ptype overlay), or into ORG.md for org-scope content. The live case: PID-PGR01’s PRISM.md §6 ‘Communication Style’ (Paul rule + exotic-dancer line) must be either (a) promoted into templates/prism-application.md if it applies to every application-ptype project, or (b) moved to ORG.md if it’s org-wide style, or (c) explicitly discarded. This migration MUST happen before the first prism_sync_bios run against PID-PGR01. Until then, prism_sync_bios MUST refuse to overwrite PRISM.md if local content exists that does not match the composed SOR — a pre-flight check that forces the operator to resolve before destruction.

Rationale

Consistency is the principle that wins here. ADR #14 killed the LOCAL marker concept for CLAUDE.md and AGENTS.md with the argument that BIOS files are immutable-per-version. PRISM.md is Ring 2 not Ring 1, so ADR #14 did not technically cover it — but the argument generalizes perfectly. The moment we allow markers in PRISM.md, agents and humans will drift content into them that should have been promoted, and we lose the same drift-detection discipline. Worse, we end up with different sync semantics per file. The pre-flight check requirement converts ‘silent data loss’ to ‘explicit operator decision.’ This decision also unblocks SPEC-016 (TODO #55).

Rationale

(none)

Alternatives Considered

Option B — allow PRISM:LOCAL-START/END marker block in PRISM.md only. Rejected because it re-introduces the preservation logic we just killed in ADR #14 and creates a place where content will stash that should have been promoted. Option C — third template slot prism-{pid}.md per-project overlay. Rejected as YAGNI — one project, no live need. Option D — defer, confirm each sync interactively. Rejected because it turns every sync into manual review and does not scale to multi-agent / multi-machine.
Last modified on April 20, 2026