challenge-defense-is-crash-safe
IN derived (depth 2)
The dialectical challenge/defend system reaches correct truth states through recursive outlist injection evaluated by deterministic terminating propagation.
Summary
When someone challenges a belief and the system needs to resolve the dispute, it does so by reusing the same propagation engine that handles all other truth updates — no special dispute-resolution code exists. Because that propagation engine is guaranteed to finish without hanging or looping, the challenge/defense process is also guaranteed to reach a stable, correct answer every time.
Justifications
SL — Challenge/defend creates new nodes and dependent relationships dynamically; if propagation crashes on a dangling dependent reference, dialectical operations could leave the network inconsistent
Antecedents (all must be IN):
- dialectical-structure-is-recursive-outlist — The entire challenge/defend dialectical system is implemented as recursive outlist injection with no dedicated dialectical machinery
- propagation-terminates-deterministically — Truth propagation is guaranteed to terminate: BFS prevents stack overflow, stop-on-unchanged prevents oscillation, and fixpoint iteration bounds the outer loop
Unless (any of these IN defeats this justification):
- propagate-assumes-dependents-exist — Every ID in `node.dependents` is accessed via `self.nodes[dep_id]` without a membership check; a dangling dependent reference will raise `KeyError` — this is intentional (broken invariant = bug)
Dependents
These beliefs depend on this one:
- dialectical-transformation-is-fully-reliable — The irreversible premise-to-justified transformation during challenge is both semantics-preserving (the resulting node inherits complete outlist evaluation with conjunction, absence, and persistence semantics) and crash-safe (recursive dialectical chains terminate deterministically), making dialectical operations reliable despite their irreversibility.