Skip to documentation
Documentation navigation

Documentation navigation

Documentation / guides

Compaction Policy

Describe CompactionPolicy fields and validation.

developer

loop.CompactionPolicy is the complete explicit policy attached to one Loop. It supplies no timeout, threshold, output reservation, or summary budget defaults.

Exact policy API

// package loop
type CompactionPolicy struct {
	Automatic        bool
	CounterPolicy    CounterPolicy
	CompactAt        event.BasisPoints
	RearmBelow       event.BasisPoints
	ReservedOutput   content.TokenCount
	SafetyMargin     content.TokenCount
	MaxSummaryTokens content.TokenCount
	CountTimeout     time.Duration
	Hustle           hustle.Name
}

func (p CompactionPolicy) Validate(contextcount.CounterCapability) error
func WithCompaction(CompactionPolicy) Option

CounterPolicy is CounterPolicyUnknown, CounterPolicyRequireExact, or CounterPolicyAllowConservative.

Proof: policy types and validation and policy tests.

Field requirements

FieldRequirement
AutomaticEnables threshold-triggered attempts when true.
CounterPolicyRequired for automatic mode; selects accepted count quality.
CompactAtAutomatic threshold, strictly below event.FullScaleBasisPoints.
RearmBelowAutomatic re-arm threshold, nonzero and strictly below CompactAt.
ReservedOutputPositive output reservation used to resolve input limits.
SafetyMarginPositive when the counter quality is heuristic.
MaxSummaryTokensPositive summary output budget.
CountTimeoutPositive context count timeout.
HustleValid named Hustle; Rig checks registration and compatibility.

When Automatic is false, threshold and counter-policy checks are skipped, but the common reservation, summary budget, timeout, Hustle, and heuristic margin requirements remain.

Proof: CompactionPolicy.Validate and configuration tests.

Counter compatibility

PolicyAccepted contextcount.CountQuality
CounterPolicyRequireExactCountQualityExactProvider, CountQualityExactLocal.
CounterPolicyAllowConservativeExact qualities plus CountQualityHeuristicEstimate.
CounterPolicyUnknownNone in automatic mode.

WithContextObservation and WithCompaction are mutually exclusive. Both install a context admission policy, and the Loop cannot select both.

Proof: counter policy checks and context option exclusivity tests.

Request identity

loop.RequestFingerprintInput contains SystemRevision, ToolPolicyRevision, the full model.Model, event.ContextBasis, RuntimeContextRevision, CounterCapability, and InferenceCapability. loop.RequestFingerprint validates each field and returns a SHA-256 identity. Changing any request-shape revision, model, basis, or capability invalidates a previous compaction result.

Proof: request fingerprint and fingerprint tests.

Source and proof

← back to documentation