Why "permanent exclusion" is really the product of two reasonable patches
Measured: of 368 penalized seeds, 0 returned to routing. We said "caught once = removed permanently" — but the real mechanism is not a clock; it is that slash both halves the mean and doubles the observation count, and the observation count is the exponential coefficient of the return time.
Here is the experimental result: across 368 simulation seeds that were actually penalized, 0 returned to routing.
Our conclusion was written as:
Caught once = removed permanently.
The phenomenon in that sentence is right, but the mechanistic explanation is wrong. And a wrong mechanistic explanation leads to a wrong fix, so it is worth tracking down to the end.
#First, how extreme it is
| Parameters | Share returning to routing |
|---|---|
| Current (f = 0.5, λ = 1) | 0 / 368 |
| Move only the mean, not the observation count (λ = 0) | 214 / 368 (58.2%) |
| f = 0.7, λ = 0 | 308 / 368 |
| f = 0.7, λ = 1 | 0 / 368 |
| f = 0.9, λ = 0 | 309 / 368 |
| f = 0.9, λ = 1 | 308 / 368 |
#The closed form: not "a long wait," but "unreachable"
The penalty can be written in closed form as:
required observations ≥ exp( n' · ((target − mean') / c)² ) − 1
Taking m = 0.9, target = 0.95, c = 0.3, the total observations each setting needs (log₁₀) are:
| n before the penalty | f = 0.5, λ = 0 | f = 0.5, λ = 1 (current) | f = 0.9, λ = 0 | f = 0.9, λ = 1 |
|---|---|---|---|---|
| 1 | 1.21 | 4.83 | 0.09 | 0.13 |
| 3 | 3.62 | 9.65 | 0.28 | 0.34 |
| 10 | 12.06 | 26.54 | 0.95 | 1.07 |
| 48 | 57.91 | 118.22 | 4.54 | 5.07 |
#The real mechanism: three things hold at once
The main cause is the form in which slash is implemented:
β += (α + β) · (1/f − 1) α unchanged
This form has two effects:
| Effect | Result |
|---|---|
| Halves the posterior mean | target − mean grows |
| Doubles the effective observation count n | and n is the exponential coefficient of the return time |
#Confirmed by measurement
Single-point measurement (seed p1, 800 rounds, f = 0.5):
| Round of the penalty | Score after the penalty | Observation count | Returned to routing afterwards | Jobs received | |
|---|---|---|---|---|---|
| λ = 0 | 39 | 0.2887 | 0.7186 | after 10 rounds | 74 jobs |
| λ = 1 (current) | 39 | 0.2887 | 3.4373 | never (0 times in the remaining 761 rounds) | 0 jobs |
Grid sweep (30 seeds × 600 rounds, blind spot 0):
| Setting | Sustained attackers returned | Repentant attackers returned |
|---|---|---|
| f = 0.5, λ = 1 (current) | 0 / 19 | 0 / 21 |
| f = 0.5, λ = 0 | 10 / 19 | 10 / 21 (median 10 rounds) |
| f = 0.7, λ = 1 | 0 / 19 | 0 / 21 |
| f = 0.9, λ = 0 | 17 / 19 | 16 / 21 |
| f = 0.9, λ = 1 | 17 / 19 | 16 / 21 (return time about 55–182 rounds) |
#Where "caught once = removed permanently" originally went wrong
What we originally based it on: of the 16 seeds that were caught, 16 were never routed again afterwards.
But the re-verification found this was confounded. The other 14 seeds in the same cell that were never caught stalled just the same — they stalled not because they were excluded, but because their scores were low and they were not picked.
The numbers after clean isolation (defect_budget = 1, 4,000 rounds):
| Seeds | How far they ran | |
|---|---|---|
| Not caught | 27 / 30 | ran to round 3,993 (the end) |
| Caught | 3 / 3 | zero routing over the following 3,961 rounds |
And "permanent" is in fact conditional:
| slash coefficient | Round at which it returned to routing |
|---|---|
| 0.9 | round 177 |
| 0.8 | round 520 |
#We made a decision
On 2026-08-17, the project explicitly decided to keep this behavior. The reason was written very directly:
The reason is "having seen 0/368 and 214/368."
#The general lesson of this case
#Next
- The full mechanism of reputation and routing: Registry and reputation
- The whole defense axis: Defense axis

