Lateral inhibition: the first claimant suppresses its neighborsSIMULATEDMEASURED

Before, a claim on a file only lowered the stimulus of other intents that write it, so the age term and reinforced thresholds let agents take claimed files anyway and read-set validation sent the later change back. Now ColonyDO.take keeps that soft repulsion and adds winner-take-all: an open intent whose own files carry at least half a fresh claim from other agents is skipped (core chooseIntent, LATERAL_INHIBITION = 0.5). Co-change neighbors still only repel. It is not a lock: there is no lock manager and no release protocol, and a silent agent's claim decays below the threshold after one half-life (about 3.5 minutes; FT_LATERAL_INHIBITION tunes it, off disables it).

hono workload, 20 simulated minutes, mean of 3 seeds (min-max) (SIMULATED)

agentsmodellanded/minrework %conflicts/1kclaim to land p50 swindow inhibited %
100Locks + one merge queue56.25.7 (5.2-6.0)7276-
100FireTrident + co-change (before)63.410.0 (7.3-12.4)6364-
100FireTrident + co-change + lateral inhibition (after)63.410.0 (7.3-12.4)636410
100Group commit + co-change (before)64.510.1 (7.8-11.5)6563-
100Group commit + co-change + lateral inhibition (after)64.510.1 (7.8-11.5)656310
100FireTrident, claims repel softly only62.112.3 (11.0-13.3)7564-
100FireTrident + lateral inhibition62.112.3 (11.0-13.3)756410
100Group commit, claims repel softly only62.012.7 (10.7-14.8)7764-
100Group commit + lateral inhibition62.012.7 (10.7-14.8)776410
1,000Locks + one merge queue51.921.7 (20.8-22.1)318563-
1,000FireTrident + co-change (before)85.938.7 (37.3-40.3)354325-
1,000FireTrident + co-change + lateral inhibition (after)86.431.2 (29.8-33.7)28529497
1,000Group commit + co-change (before)19240.4 (39.7-41.3)27969-
1,000Group commit + co-change + lateral inhibition (after)17631.2 (30.2-31.9)2006695
1,000FireTrident, claims repel softly only85.642.5 (41.4-44.1)397355-
1,000FireTrident + lateral inhibition86.332.2 (30.5-33.2)283298100
1,000Group commit, claims repel softly only20545.3 (44.4-46.7)31972-
1,000Group commit + lateral inhibition17333.0 (32.5-33.5)21368100
10,000Locks + one merge queue51.921.7 (20.8-22.1)318563-
10,000FireTrident + co-change (before)85.838.6 (37.2-39.9)365326-
10,000FireTrident + co-change + lateral inhibition (after)86.231.4 (29.6-33.3)28229296
10,000Group commit + co-change (before)19240.3 (39.8-40.7)27969-
10,000Group commit + co-change + lateral inhibition (after)17331.6 (30.1-32.7)2076795
10,000FireTrident, claims repel softly only85.841.4 (40.1-43.2)386355-
10,000FireTrident + lateral inhibition86.331.7 (31.1-32.7)275299100
10,000Group commit, claims repel softly only20646.9 (46.1-48.0)33470-
10,000Group commit + lateral inhibition17631.5 (30.5-32.4)20766100

Draining 1,500 tasks to zero, seconds, mean over seeds (median for the last task) (SIMULATED)

agentsmodel50% landed90%95%all (median)rework %
100Locks + one merge queue8131,4551,5372,0085.2
100FireTrident + co-change (before)6981,2681,3412,82811.4
100FireTrident + co-change + lateral inhibition (after)6981,2681,3422,04210.2
100Group commit + co-change (before)6871,2531,3262,81111.4
100Group commit + co-change + lateral inhibition (after)6871,2531,3272,02910.1
1,000Locks + one merge queue8461,5541,6412,31915.7
1,000FireTrident + co-change (before)5319511,0812,26235.4
1,000FireTrident + co-change + lateral inhibition (after)5299481,0701,98725.7
1,000Group commit + co-change (before)1314285982,36433.3
1,000Group commit + co-change + lateral inhibition (after)1424325961,69723.9
10,000Locks + one merge queue8461,5541,6412,31915.7
10,000FireTrident + co-change (before)5309521,0822,40236.0
10,000FireTrident + co-change + lateral inhibition (after)5309471,0741,98625.9
10,000Group commit + co-change (before)1304325922,25333.1
10,000Group commit + co-change + lateral inhibition (after)1424325871,69723.8

Co-change weight with lateral inhibition on, 1,000 agents: rework % @ landed/min, mean of 3 seeds (SIMULATED; 2 = deployed)

trunk writer02510
per-lane landing32.2% @ 8631.2% @ 8626.2% @ 8626.5% @ 86
group commit33.0% @ 17331.2% @ 17627.6% @ 15824.8% @ 156

Candidate window (open intents a take considers, oldest first), 1,000 agents: rework % @ landed/min, mean of 3 seeds (SIMULATED analysis; ColonyDO's window stays 200)

model2004001,000
FireTrident + co-change (before)38.7% @ 8638.8% @ 8726.3% @ 88
FireTrident + co-change + lateral inhibition (after)31.2% @ 8633.3% @ 8724.9% @ 88
Group commit + co-change (before)40.4% @ 19244.8% @ 22347.7% @ 288
Group commit + co-change + lateral inhibition (after)31.2% @ 17636.3% @ 21842.3% @ 277

Live check on a preview deployment (MEASURED: real takes, a real landing, real decay)

X writes [shared, a] (priority 5) and Y writes [shared, b] (priority 4); agent A takes first, then agent B tries for the other intent. Claims that only repel would let B take it with p = 0.9 per try.

checkresult
B tries once while A's claim is live (fresh agents each round)turned away in 20 of 20 rounds, took the other intent in 0
A's change landsB inhibited before, inhibited while queued; proposal landed in 3,147 ms; then B took the other
A goes silent (no heartbeats); B retries every 10 sturned away through 207 s, took the other intent at 218 s (one half-life of a claim: 208 s)