Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,11 @@ now nearly reaches the mathematical ceiling of the non-injective sender
codebooks, so another horizon-only extension is not justified. Batch 26 added
one sender/receiver route cycle and reached 85.38% validation, but did not add
a single net unique code: shared errors became link-specific errors instead.
The replay-routing family is therefore closed; future work must target sender
capacity directly. See
Batch 27 directly penalized globally mined sender collisions after step 30,000.
It reduced collision multiplicity and reached 85.38% validation, but unique
code counts again remained unchanged and worst-link validation regressed to
82.13%. Both replay routing and the existing collision-loss schedule are now
closed; future work must change sender representation or code occupancy. See
[`docs/development-log-ecp7.md`](docs/development-log-ecp7.md).

## Build on this work
Expand Down Expand Up @@ -126,6 +129,7 @@ Do not translate those artifacts in place. New experiment configurations and all
- [`config/ecp7-b24-development.yaml`](config/ecp7-b24-development.yaml) — Batch 23 routing with sender messages detached for receiver-only replay after step 20,000.
- [`config/ecp7-b25-development.yaml`](config/ecp7-b25-development.yaml) — Batch 24 receiver-only catch-up with an isolated 45,000-step maximum horizon.
- [`config/ecp7-b26-development.yaml`](config/ecp7-b26-development.yaml) — Batch 25 with one preregistered sender/receiver replay-route cycle.
- [`config/ecp7-b27-development.yaml`](config/ecp7-b27-development.yaml) — Batch 25 plus one late bounded direct sender-collision pulse.
- [`config/ecp7-positive-control-development.yaml`](config/ecp7-positive-control-development.yaml) — ECP-6 positive control on the ECP-7 split.
- [`config/ecp0.yaml`](config/ecp0.yaml) — machine-readable configuration from step 1.
- [`config/ecp1.yaml`](config/ecp1.yaml) — frozen configuration of the population trial.
Expand Down
24 changes: 24 additions & 0 deletions config/ecp7-b27-development.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
extends: ecp7-b25-development.yaml

experiment:
title: ECP-7 late bounded sender-collision pulse
arm: late_bounded_sender_collision_pulse
objective: >-
Test whether a direct bounded separation pulse on globally mined sender
collisions can increase codebook capacity after receivers have saturated,
without sacrificing the established weak-structure reconstruction result.

training:
global_collision_replay:
enabled: true
weight: 0.1
start_step: 30000
warmup_steps: 5000
pair_batch_size: 32
refresh_interval: 200
relaxed_temperature: 1.0
weight_decay:
enabled: true
start_step: 35000
end_step: 40000
final_weight: 0.0
40 changes: 23 additions & 17 deletions docs/AI_AGENT_START.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ python3.12 -m venv .venv
.venv/bin/ecp6 --config config/ecp6.yaml validate
```

Expected baseline: 125 passing tests and split sizes `14336/1024/1024`.
Expected baseline: 127 passing tests and split sizes `14336/1024/1024`.

## 4. Reproduce ECP-6

Expand Down Expand Up @@ -71,7 +71,7 @@ This reruns a known experiment. It must not be presented as a new independent co

## 5. Continue ECP-7 scientifically

Do not modify ECP-0 through ECP-6 or the completed ECP-7 Batch 1 through Batch 26
Do not modify ECP-0 through ECP-6 or the completed ECP-7 Batch 1 through Batch 27
configs. ECP7-B1-I collapsed to 130–139 hard messages. ECP7-B2-I improved its
soft objective but collapsed further to 85–104 hard messages. ECP7-B3-I applied
that loss to straight-through hard messages and improved to 585–972 messages,
Expand Down Expand Up @@ -155,11 +155,17 @@ and translator validation, but its unique-message counts were effectively
unchanged. Shared failures fell while any-link failures rose, closing the
replay-routing family as an error-redistribution mechanism rather than an
injectivity solution. The confirmatory ECP-7 test remains sealed.
ECP7-B27-I added a late bounded direct collision-pair penalty. It reached
85.38% mean validation and reduced collision-pair multiplicity, but produced
exactly the same 13,440, 12,960, 12,720 and 13,440 unique-message counts as
Batch 25. Worst-link validation regressed to 82.13%, so the existing collision
loss is also closed as a capacity solution. The confirmatory test remains
sealed.

Continue with this sequence:

1. Read `docs/research-design-ecp7.md` and `docs/development-log-ecp7.md`.
2. Define exactly one ECP7-B27 direct sender-capacity intervention and its
2. Define exactly one ECP7-B28 sender-representation or occupancy intervention and its
failure criterion.
3. Register the variant and immutable configuration hashes before training.
4. Add tests for every new invariant.
Expand All @@ -173,20 +179,20 @@ Continue with this sequence:

## 6. Recommended next experiment

Batch 26 shows that another one-sided replay cycle cannot increase sender code
capacity. Receiver-only phases fit the existing codebook ceiling; sender-only
ordinary-task replay converts shared errors into link-specific errors. Do not
try another route boundary, route cycle or horizon extension.

For ECP7-B27, preregister exactly one direct sender-capacity intervention on the
strongest stable base. A defensible candidate is a late, bounded pulse that
explicitly separates globally mined hard-message collisions while preserving
the ordinary reconstruction task. Reuse an already tested loss and coefficient
where possible, activate it only after a shared unchanged trajectory, and
define success primarily as a reproducible increase in unique messages without
loss of worst-link validation. Do not combine this with a new architecture,
new predicate, optimizer change, factor-specific supervision, variable-length
messages or negotiation in the same batch.
Batch 27 shows that the existing relaxed collision-pair loss can reduce
collision multiplicity but cannot create newly occupied hard codes. Do not try
another coefficient, pulse boundary, route cycle or horizon extension.

For ECP7-B28, preregister exactly one factor-agnostic sender representation or
genuinely different occupancy-creation intervention. A defensible
representation candidate is an identity-preserving residual interaction block
on the successful bounded-parallel sender: retain the complete shallow joint
context and slot heads, add one shared nonlinear residual branch initialized to
zero output, and change no receiver, loss, data or training schedule. This
isolates whether missing joint-context interaction capacity caused the stable
code ceiling while avoiding Batch 13's replacement of the successful shallow
path. Do not combine it with collision replay, a new coefficient, factor-slot
bindings, optimizer changes, variable-length messages or negotiation.

## 7. Definition of done for any contribution

Expand Down
104 changes: 104 additions & 0 deletions docs/development-log-ecp7.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ this log.
| ECP7-B24-I | Intervention | B23 sender-only warmup followed by receiver-only replay catch-up | Position-aware MLP | valid negative; new-best means but link-specific errors and injectivity fail |
| ECP7-B25-I | Intervention | B24 receiver-only catch-up with a 45,000-step maximum horizon | Position-aware MLP | valid negative; new-best means reach the non-injective code-cap |
| ECP7-B26-I | Intervention | B25 with a second sender-only pulse and final receiver-only catch-up | Position-aware MLP | valid negative; route cycle changes error sharing but not code capacity |
| ECP7-B27-I | Intervention | B25 plus one late bounded direct sender-collision pulse | Position-aware MLP | valid negative; collision multiplicity falls but unique-code capacity is unchanged |

## Batch 1 preregistration

Expand Down Expand Up @@ -2184,3 +2185,106 @@ sender-only training reduces shared errors by fragmenting them across links.
The ECP-7 confirmatory split remains sealed. Any future batch must change the
sender collision objective or sender representation directly, rather than add
another route phase, route boundary or horizon extension.

## Batch 27 preregistration

Preregistered: July 18, 2026 at 18:05:30 UTC<br>
Seed: `11`<br>
Maximum population steps: `45,000`<br>
Minimum selection steps: `15,000`<br>
Early-stopping patience: `5,000` steps<br>
Base hard-meaning replay: unchanged B25 sender-only warmup, then receiver-only catch-up<br>
Direct sender-collision pulse start: step `30,000`, weight `0`<br>
Direct sender-collision pulse peak: step `35,000`, weight `0.1`<br>
Direct sender-collision pulse end: step `40,000`, weight `0`<br>
Collision pairs: globally mined hard-message collisions per sender on training meanings only<br>
Collision pair batch: `32` pairs per sender, uniform with replacement<br>
Collision refresh interval: `200` steps<br>
Relaxed replay temperature: `1.0`<br>
Raw configuration SHA-256: `d44df83436f5ca81a2a51229b8ffe1a6fd6832d28dff4c7ab2ead3ace8efc9bd`<br>
Effective configuration SHA-256: `649ddca4a285fbbb00b29c1cab82678e42ab8d6810f89f2131766cd82496c463`<br>
Split-SHA-256: `4947058c75ab07cb43a87eb82776b12cb2a7e2eeba7114de110d3b852cbc64cd`<br>
Test unsealed: **no**

ECP7-B27-I inherits Batch 25 and adds only one bounded direct sender-collision
loss after the unchanged trajectory through step 30,000. It reuses Batch 18's
task-scale `0.1` coefficient and Batch 19's registered 5,000-step rise and
5,000-step decay. The existing shared-hard-meaning replay remains receiver-only
after step 20,000, so readers continue fitting while the new branch acts only
on sender code separation. A final 5,000-step zero-collision-loss phase permits
unperturbed receiver catch-up.

The positive control is rerun. All existing validity and development gates
remain unchanged. The direct-capacity hypothesis also requires a selected
minimum sender codebook larger than Batch 25's 12,720-message minimum without a
lower worst-link validation score. No alternative coefficient, pulse boundary,
pair sampler, replay route, predicate, architecture, optimizer, horizon, data,
translator or seed may be tried inside Batch 27. Failure is recorded without
confirmatory test access.

## Batch 27 results

Positive-control run: `runs/ecp7-batch27-control-development/20260718T180724Z-ecp7-development`<br>
Intervention run: `runs/ecp7-batch27-intervention-development/20260718T180838Z-ecp7-development`<br>
Test unsealed: **no**

| Metric | Positive control | ECP7-B27-I |
|---|---:|---:|
| Population train, mean | 100% | **85.3760%** |
| Population train, worst link | 100% | 82.1498% |
| Population validation, mean | 100% | **85.3760%** |
| Population validation, worst link | 100% | 82.1289% |
| Universal translator, validation | 100% | **85.3516%** |
| Exact sender-message agreement | 100% | 92.36% |
| Unique messages per sender | 15,360 | 12,720–13,440 |
| Collision meanings per sender | 0 | 1,920–2,640 |
| Message entropy | 13.91 bits | 13.56–13.66 bits |
| Development gate | pass | **fail** |

The positive control passed every gate at 100%. ECP7-B27-I modestly exceeds
Batch 25's mean train, mean validation and translator scores, but fails both
train thresholds, sender injectivity and the preregistered direct-capacity
criterion. Worst-link validation falls from Batch 25's 82.7148% to 82.1289%.
The joint gate fails and confirmatory access remains unauthorized.

All 151 optimization records through step 30,000 match Batch 25 exactly after
excluding the new zero-weight collision diagnostics. The first mining boundary
finds 2,429, 2,578, 2,912 and 2,128 unordered collision pairs. At the pulse
peak on step 35,000, the pair banks contain 1,792, 2,605, 2,480 and 2,128
pairs. Once the pulse reaches zero at step 40,000 they stabilize at 1,792,
2,240, 2,464 and 1,792 pairs through the selected step 43,800 and final step
45,000.

For comparison, Batch 25's selected hard codebooks contain 2,128, 2,576,
2,912 and 2,128 unordered collision pairs. B27 therefore reduces collision
pair multiplicity substantially. It nevertheless produces exactly the same
unique-message counts as B25: 13,440, 12,960, 12,720 and 13,440. Collision
meaning counts are likewise unchanged at 1,920, 2,400, 2,640 and 1,920. The
higher 13.56–13.66-bit entropies show that the loss redistributes multiplicity
among already occupied codes instead of creating new occupied codes.

The selected diagnostic finds 1,792 meanings failed by all links and 2,812
failed by at least one link, with 11.93 mean failed links per erroneous
meaning. Relative to Batch 25, any-link failures fall by 155 while shared
failures rise by 115. The direct pulse therefore produces a different
error-sharing tradeoff from route cycling, but still cannot raise the minimum
sender code capacity above 12,720.

Population validation factor accuracies were
`[100%, 100%, 98.44%, 86.94%]`; universal-translator factor accuracies were
`[100%, 100%, 98.44%, 86.91%]`. Both sealed analyses report 65 matching
artifact hashes, 16,384 validation-only episodes, no confirmatory-test keys,
valid local alphabets, and exactly 14 declared bits for every logged message.

## Batch 27 decision

ECP7-B27-I is a valid negative result. Direct relaxed collision-pair pressure
can reduce high-multiplicity hard collisions while preserving mean accuracy,
but it does not occupy additional codes and it weakens the worst population
link. Repeating this loss with another late coefficient or pulse boundary is
not justified.

The ECP-7 confirmatory split remains sealed. A future batch must change the
factor-agnostic sender representation or introduce a genuinely different
occupancy-creation mechanism; it may not combine that change with another
replay-route or collision-coefficient search.
58 changes: 58 additions & 0 deletions docs/research-design-ecp7.md
Original file line number Diff line number Diff line change
Expand Up @@ -1147,3 +1147,61 @@ train and injectivity gates without accessing the confirmatory split.
This completes the registered replay-routing family. Further route cycling or
horizon extension is disallowed as an unsupported repetition; any later
development batch must preregister a direct sender-capacity intervention.

## Batch 27 preregistration — Late bounded sender-collision pulse

Status: **completed sealed development; valid negative**<br>
Preregistered: July 18, 2026 at 18:05:30 UTC<br>
Configuration: `config/ecp7-b27-development.yaml`<br>
Raw configuration SHA-256: `d44df83436f5ca81a2a51229b8ffe1a6fd6832d28dff4c7ab2ead3ace8efc9bd`<br>
Effective configuration SHA-256: `649ddca4a285fbbb00b29c1cab82678e42ab8d6810f89f2131766cd82496c463`

Batch 25 establishes the strongest stable receiver-saturated base. Batch 26
shows that ordinary-task route cycling cannot add sender code capacity. Batch
27 therefore changes the objective rather than the route: it directly
penalizes each sender's globally mined hard-message collisions only after the
complete Batch 25 trajectory through step 30,000.

ECP7-B27-I inherits the full Batch 25 configuration and implementation. The
sole addition is the existing factor-agnostic global collision-pair mechanism
with this fixed schedule:

1. weight zero through step 30,000;
2. linear warmup to `0.1` at step 35,000;
3. linear decay to zero at step 40,000;
4. weight zero through the 45,000-step ceiling.

Pairs are mined independently for every sender from hard messages over training
meanings only, refreshed every 200 steps and sampled as 32 pairs per sender
with replacement. Their relaxed full-message collision probability is measured
at temperature `1.0`. The coefficient is reused from Batch 18; the 5,000-step
rise and decay durations are reused from Batch 19. The unchanged hard-meaning
replay branch stays receiver-only after step 20,000, and the ordinary task
continues to update both sides.

The batch contains exactly two seed-11 runs:

1. the unchanged ECP-6 positive control;
2. ECP7-B27-I with the late bounded sender-collision pulse.

All existing validity and development gates remain unchanged. Additionally,
the direct-capacity claim requires the selected minimum unique-message count to
exceed Batch 25's 12,720 while worst-link validation is at least Batch 25's
82.7148%. No alternative coefficient, pulse boundary, pair sampler, replay
route, hard-meaning predicate, architecture, base loss, optimizer, horizon,
data, translator or seed may be tried inside Batch 27. Failure is recorded
without confirmatory test access.

### Batch 27 outcome

The registered seed-11 intervention reached 85.38% mean train and validation,
82.15% worst-link train, 82.13% worst-link validation and 85.35% universal-
translator validation. Its global collision-pair banks became substantially
smaller and message entropy increased, but sender codebooks still contained
exactly 13,440, 12,960, 12,720 and 13,440 unique messages—the same capacities
as Batch 25. It failed the unchanged train and injectivity gates and the added
minimum-capacity/worst-link criterion without accessing the confirmatory split.

This closes coefficient and timing development for the existing relaxed
collision-pair loss. Any later batch must preregister a distinct sender
representation or occupancy-creation mechanism.
7 changes: 7 additions & 0 deletions evidence/ecp7-development/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,13 @@ rose from 2,967 to 3,262, confirming that route cycling redistributes errors
without fixing sender collisions. Exact identities and hashes are in
`batch26-manifest.json`.

Batch 27 added a late bounded direct penalty on globally mined sender
collisions. It reduced unordered collision-pair multiplicity and increased
message entropy, but produced exactly the same unique-message counts as Batch
25 while worst-link validation fell to 82.13%. The existing collision loss
therefore reshapes occupied codes without creating new ones. Exact identities
and hashes are in `batch27-manifest.json`.

Reproduce the development arms with:

```bash
Expand Down
Loading