How to Prevent Semantic Drift — MO§ES
A practical guide to detecting and preventing semantic drift in recursive AI transformations using resonance thresholds and commitment conservation.
Semantic drift is the gradual degradation of meaning that occurs when AI signals are transformed recursively. A "shall" becomes a "should," then a "may," then a suggestion, then nothing. The Conservation Law of Commitment predicts that this drift is not random but systematic — it degrades commitment by 15-20% per iteration without enforcement. This guide shows you how to detect and prevent semantic drift using resonance thresholds and commitment conservation.
Overview
Preventing semantic drift requires two things: detection (measuring commitment at every transformation and comparing it to a threshold) and prevention (blocking transformations that would cause drift). Detection without prevention is monitoring — you can see the drift but cannot stop it. Prevention without detection is blind enforcement — you block transformations but do not know which ones are degrading.
The MO§ES approach combines both: measure commitment at every hop using NLI bidirectional entailment and Jaccard surface stability, compare the commitment ratio to a resonance threshold, and block any transformation that falls below the threshold. This creates a closed loop: measure, compare, enforce, log.
Prerequisites
- An AI pipeline with recursive transformations (summarization, translation, agent chains)
- An NLI model for bidirectional entailment measurement
- A tokenization library for Jaccard surface stability
- An append-only audit trail for drift trajectory logging
- Understanding of commitment conservation and commitment measurement
Step 1: Establish a Baseline Commitment Measurement
Before any transformation is applied, measure the commitment of the original signal. This baseline — C(S) — is the reference point against which all subsequent transformations are compared. Without a baseline, you cannot detect drift — you have nothing to compare against.
The baseline measurement uses the same two methods as all subsequent measurements: NLI bidirectional entailment (for semantic preservation) and Jaccard surface stability (for lexical preservation). The baseline is not a single number but a pair: (entailment_score, jaccard_score). Store both values alongside the signal hash in the audit trail.
baseline = {
"signal_hash": sha256(original_signal),
"entailment": 1.0, # self-entailment is perfect
"jaccard": 1.0, # self-similarity is perfect
"commitment": 1.0 # composite score
}
Step 2: Set a Resonance Threshold
The resonance threshold is the minimum acceptable commitment ratio C(T(S)) / C(S). A threshold of 0.80 means a transformed signal must retain at least 80% of the original commitment. Transformations that produce a ratio below this threshold are rejected.
The threshold is the primary control for drift prevention. Set it too high and you reject legitimate transformations (false positives). Set it too low and you allow drift (false negatives). In the MO§ES experimental record, a threshold of 0.80 conserved commitment at 80-85% across 10 iterations — an effective balance between strictness and flexibility.
Different domains may require different thresholds. A legal contract pipeline may demand 0.95. A creative summarization pipeline may accept 0.70. Document your threshold choice and the rationale.
Step 3: Measure Commitment After Each Transformation
After every transformation, measure the commitment of the output signal. Use the same two methods as the baseline: NLI bidirectional entailment and Jaccard surface stability. Compute the commitment ratio relative to the baseline.
The measurement must happen at every hop, not just at the end. Drift compounds — a 15% degradation at hop 1 becomes a 28% degradation by hop 2 (0.85 × 0.85 = 0.72) and a 39% degradation by hop 3. By measuring at every hop, you catch drift before it compounds.
def measure_drift(original, transformed, baseline):
entailment = bidirectional_entailment(original, transformed)
jaccard = jaccard_similarity(original, transformed)
commitment = 0.7 * entailment + 0.3 * jaccard
ratio = commitment / baseline["commitment"]
return ratio
Step 4: Detect Drift Early
Compare the commitment ratio to the threshold after every transformation. If the ratio falls below the threshold, drift has been detected. Do not wait for the final output to check — by then, drift has compounded across multiple hops and is much harder to remediate.
Early detection is the key to drift prevention. A transformation that degrades commitment by 15% at hop 1 is easy to catch and remediate. The same transformation, allowed to proceed through 10 hops, degrades commitment by over 80% — and the original meaning is effectively lost. Catch it early, at the first hop where it occurs.
Step 5: Block Degrading Transformations
When a transformation falls below the resonance threshold, block it. Do not apply the transformation. The signal should either:
- Pass through unchanged: If the transformation is optional (e.g., a formatting step), skip it and pass the signal to the next stage in its current form.
- Retry with adjusted parameters: If the transformation is necessary but the parameters are too aggressive (e.g., a compression ratio that is too high), retry with more conservative parameters.
- Escalate to human review: If the transformation is necessary and automatic retry fails, route the signal to a human reviewer with the audit context.
Blocking is the prevention mechanism. Without blocking, detection is just monitoring — you can see the drift but cannot stop it. The block is what prevents drift from compounding.
Step 6: Track Drift Trajectories Across Iterations
Record the commitment ratio at every iteration in the audit trail. This creates a drift trajectory — a sequence of commitment ratios that shows how commitment changes across the pipeline. A healthy trajectory is flat or gently declining. A degrading trajectory declines steeply, often accelerating with depth.
Drift trajectories are the primary diagnostic tool for drift prevention. They reveal:
- Which transformations cause drift: A sudden drop in the trajectory at a specific hop identifies the responsible transformation.
- Whether drift is accelerating: A trajectory that declines faster than linear indicates compounding drift — a sign that enforcement is not working.
- Whether thresholds need tuning: A trajectory that hovers just above the threshold suggests the threshold is well-calibrated. A trajectory that never approaches the threshold suggests it may be too low.
Use drift trajectory data to tune thresholds, identify problematic transformations, and demonstrate compliance. The trajectory is the evidence that your drift prevention is working — or, if it is not, the diagnostic that tells you why.
Common Pitfalls
- Measuring only at the end: End-of-pipeline measurement catches drift after it has compounded. Measure at every hop to catch drift early.
- Setting the threshold too low: A threshold below 0.70 allows significant drift. Start at 0.80 and adjust based on your drift trajectories.
- Detecting without blocking: Detection without prevention is monitoring, not governance. When drift is detected, block the transformation.
- Not tracking trajectories: Individual measurements are data points; trajectories are patterns. Without tracking trajectories, you cannot identify systematic drift or tune thresholds effectively.
- Using only one measurement method: NLI alone misses surface drift; Jaccard alone misses semantic drift. Use both to catch both failure modes.
- Ignoring the baseline: Without a baseline measurement, you cannot compute a commitment ratio. Always measure the baseline before the first transformation.
Next Steps
Once drift prevention is operational, combine it with lineage verification to prove that your drift prevention is working, and multi-agent auditing to extend drift prevention across agent chains. For the full enforcement workflow, see How to Enforce Commitment Conservation, and for the theoretical foundation, read the Conservation Law of Commitment and the research papers.