dependents-index-is-fragile-denormalization

OUT derived (depth 1)

The dependents set is a manually-maintained denormalized reverse index that is never persisted and must be rebuilt on every load, creating a consistency obligation on all mutation paths

Summary

The system tracks which beliefs depend on which others using a reverse index that exists only in memory, never saved to the database. Every time the system starts up it has to reconstruct this index from scratch, and every operation that changes relationships between beliefs is responsible for keeping it accurate — if any of those code paths forgets to update it, the index silently goes stale.

Justifications

SL — Three beliefs triangulate the same fragility: any mutation path that forgets to update dependents silently corrupts propagation

Antecedents (all must be IN):

  • dependents-is-manual-reverse-index — `Node.dependents` is a denormalized reverse pointer set that must be kept in sync by external code (primarily `network.py`); nothing in the data model enforces consistency.
  • dependents-index-derived-on-load — The `node.dependents` set is never persisted to SQLite; it is rebuilt by walking all justification antecedents and outlists during `load()`.
  • dependents-bidirectional-index — Each node maintains a `dependents` set (reverse of antecedent/outlist edges), eagerly maintained by `add_node`, `add_justification`, `supersede`, `challenge`, and `convert_to_premise`.

Dependents

These beliefs depend on this one:

Details