import
36 beliefs (34 IN, 2 OUT)
-
IN
agent-import-creates-two-control-nodes
Covered by existing `active-inactive-relay-pair` which captures the same two-node control structure -
IN
hash-file-import-unused
Trivial/unstable detail about an unused import; not a meaningful architectural invariant. -
OUT
import-achieves-ordered-convergent-reconciliation
Import achieves correct final state through two reinforcing mechanisms: deliberate ordering discipline (add → propagate → retract) ensures deferred retractions don't corrupt intermediate states, while deterministic convergence (dual reconciliation modes reaching stable states, propagation terminating via fixpoint) ensures the result is unique and reproducible regardless of input ordering within each phase. -
IN
import-agent-inactive-always-in-outlist
Every imported belief unconditionally has `agent:inactive` in its outlist, enforced in `_build_justifications()` with no code path that omits it — this is the mechanism behind the per-agent kill switch. -
IN
import-agent-infra-nodes-excluded-from-removal
`_sync_claims()` filters out infrastructure nodes (active/inactive) via `infra_ids` before computing the removal set, so the kill-switch pair is never retracted by remote-wins sync. -
IN
import-agent-namespace-prefix
Every node imported from agent X gets the ID prefix `X:`, including infrastructure nodes `X:active` and `X:inactive`, ensuring zero collision with local or other-agent beliefs -
IN
import-agent-normalizers-share-intermediate-schema
Both `_normalize_markdown()` and `_normalize_json()` produce identical intermediate dicts (id, text, is_out, source, source_hash, date, metadata, raw_justifications) before hitting shared `_import_claims`/`_sync_claims` logic. -
IN
import-agent-out-beliefs-get-empty-justifications
Beliefs that are OUT or STALE in the source are imported with empty justification lists, preventing `recompute_all` from resurrecting them to IN. -
IN
import-agent-out-beliefs-not-resurrected
Beliefs marked OUT or STALE in the source are imported as OUT and are never resurrected by `recompute_all`, even when their justification antecedents are all IN in the local database. -
IN
import-agent-outlist-not-antecedent
Duplicates existing belief `kill-switch-uses-outlist-not-antecedent`. -
IN
import-agent-retraction-survives-recompute
After retracting an imported belief, `recompute_all()` must not resurrect it — the justification structure must not provide alternative paths to IN (issue #16 regression invariant). -
IN
import-agent-topo-sort-breaks-cycles
`_topo_sort_claims` breaks dependency cycles by appending all remaining unsorted nodes after `max_passes = len(remaining) + 1` iterations rather than raising an error, ensuring import always completes. -
IN
import-beliefs-nogood-id-uses-high-water-mark
`_next_nogood_id` is set to `max(current, parsed_id + 1)` during import, preventing future auto-generated nogood IDs from colliding with imported ones. -
IN
import-beliefs-parser-is-forward-compatible
Unknown `- ` metadata lines in belief markdown are silently skipped via a `pass` branch, making the parser forward-compatible with new export format fields. -
IN
import-beliefs-path-import-unused
Vestigial import detail — too trivial and unstable to track as a belief; it could be cleaned up at any time. -
IN
import-functions-parse-before-dispatch
API import functions (`import_json`, `import_beliefs`, `import_agent`) read and parse files into structured data in the API layer before delegating to `PgApi` — PgApi never receives raw file paths -
IN
import-handles-heterogeneous-truth-states
The import pipeline handles mixed truth states: OUT/STALE beliefs arrive without justifications, topological sort tolerates cycles, and two-phase truth maintenance reconciles everything post-import -
IN
import-is-idempotent
Covered by existing `import-skips-existing-sync-is-remote-wins` -
IN
import-json-uses-topological-sort
`api.import_json()` reconstructs networks via a multi-pass topological sort loop — repeatedly adding nodes whose dependencies are already loaded — with a force-add fallback for cycles or missing deps. -
IN
import-ordering-ensures-correct-final-state
Import follows a deliberate ordering discipline — add nodes first, propagate truth values second, apply explicit retractions last — ensuring deferred retractions correctly override any truth values that propagation would compute, producing a final state that respects both structural dependencies and explicit intent. -
IN
import-paths-bump-nogood-counter
Both `import_json` and `import_into_network` update `_next_nogood_id` to at least `max_imported_id + 1`, ensuring imported nogoods with explicit IDs don't create future collisions -
OUT
import-reconciliation-converges-deterministically
Import reconciliation achieves both completeness and convergence: dual import/sync modes handle heterogeneous truth states with namespace isolation and topological cycle tolerance (completeness), while all reconciliation operations — individual propagation, agent sync, and global recompute — converge to deterministic fixed points on repeated application (convergence), ensuring that import never introduces oscillation or nondeterminism. -
IN
import-skips-existing-nodes
Duplicates existing belief `import-skips-existing-sync-is-remote-wins`. -
IN
import-skips-existing-sync-is-remote-wins
Import mode (`import_agent`) is a one-time load that skips existing nodes; sync mode updates text/justifications/truth values with remote-wins semantics and retracts locally any beliefs removed from the remote -
IN
import-sync-has-dual-reconciliation-modes
The import/sync subsystem offers two distinct reconciliation strategies: import is additive (skips existing nodes), while sync is remote-wins (overwrites text, justifications, and truth values from the remote source). -
IN
import-topo-sort-cycle-tolerant
Topological sorting of imported claims is best-effort: cycles cause remaining nodes to be appended in arbitrary order rather than raising an error, a pragmatic choice that avoids crashing on circular references. -
IN
import-topo-sort-tolerates-cycles
`_topo_sort_claims` attempts topological ordering but appends remaining nodes when progress stalls, gracefully handling dependency cycles instead of erroring -
IN
import-two-phase-truth-maintenance
Import/sync adds all nodes first, then runs `recompute_all()` to propagate truth values, then performs explicit retractions — this ordering prevents incorrect cascades from partially-constructed networks -
IN
import-wires-reverse-index
Covered by existing `dependents-is-manual-reverse-index` which captures that the reverse index is manually maintained -
IN
nogood-id-import-sync
Both `import_json` and `import_into_network` must advance `_next_nogood_id` past the highest imported nogood ID to prevent collisions with pre-existing IDs -
IN
pg-import-is-deferred
`PgApi` is imported inside the `pg_api` fixture body, not at module top-level, so the test suite loads without Postgres dependencies when running SQLite-only tests. -
IN
stale-maps-to-out-on-import
Nodes marked `[STALE]` in beliefs.md are stored with truth value OUT during both initial import and subsequent syncs -
IN
sync-agent-first-call-equals-import
Calling `sync_agent` for an agent with no prior import produces identical results to `import_agent`, including all node creation and namespace wiring -
IN
sync-agent-first-sync-equals-import
When no prior import exists for an agent, `sync_agent` behaves identically to `import_agent` — creating the `agent:active` premise and returning `created_premise: True` — rather than requiring a separate import step. -
IN
unused-node-import-in-dangling-test
Unstable trivia — an unused import is likely to be cleaned up and is not an architectural invariant. -
IN
unused-path-import
Dead code observation (`Path` imported but unused) — unstable detail that will change when cleaned up.