AbstractionPass

class AbstractionPass constructor(abstractor: PropositionAbstractor, abstractionThreshold: Int = 5, abstractionTargetCount: Int = 3, maxLevel: Int = 3) : ConsolidationPass

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

Link copied to clipboard
constructor(abstractor: PropositionAbstractor, abstractionThreshold: Int = 5, abstractionTargetCount: Int = 3, maxLevel: Int = 3)

Properties

Link copied to clipboard
open override val name: String

Short, stable identifier used in reports and logging (e.g. "abstraction").

Functions

Link copied to clipboard
open override fun run(contextId: <Error class: unknown class>, propositions: List<Proposition>): ConsolidationPassResult

Consolidate the snapshot propositions for contextId, reporting the outcome.