Abstraction Pass
Consolidation pass that synthesizes higher-level propositions from groups of related ground-level propositions by delegating to an injected PropositionAbstractor.
This pass does NOT re-implement abstraction — it groups level-0 ACTIVE snapshot propositions by resolved entity, hands each qualifying group to the abstractor, and marks the consumed sources SUPERSEDED. It adds only pass-level concerns: snapshot filtering, an idempotency guard, and a maxLevel cap.
Why the idempotency guard exists
Without a guard, every cycle would re-abstract the same groups, producing fresh higher-level propositions whose own sources are then re-abstracted again — unbounded level inflation that never settles. The guard skips a group whenever an existing higher-level proposition already covers all of the group's member IDs (sourceIds.containsAll(memberIds)), so a re-run over an unchanged snapshot is a ConsolidationPassResult.NoOp. The maxLevel cap is a secondary safeguard that drops any abstraction whose resulting level exceeds the configured ceiling.
Constructors
Properties
Functions
Consolidate the snapshot propositions for contextId, reporting the outcome.