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
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ The protocol uses no words or alphabet, but four meaning-free local symbols. For
See [`docs/results-ecp6.md`](docs/results-ecp6.md) for the conclusion, [`docs/protocol-specification-ecp6.md`](docs/protocol-specification-ecp6.md) for the wire format and [`evidence/ecp6/report.md`](evidence/ecp6/report.md) for the compact confirmatory evidence.

ECP-7 development now tests how much of that result depends on the explicit
one-factor-per-slot architecture. Its first nineteen sealed batches are valid
development results but none passes the full gate. Batch 15 remains strongest:
the position-aware design at 30,000 optimization steps reaches 83.46% train
one-factor-per-slot architecture. Its first twenty sealed batches are valid
development results but none passes the full gate. Batch 15 established the
strong position-aware base: at 30,000 optimization steps it reaches 83.46% train
exactness, 82.59% validation and 83.37% translator validation while using
12,585–13,200 hard messages per sender. Validation and translator thresholds pass
together, but the registered train and injectivity thresholds do not. Batch 16
Expand All @@ -39,7 +39,9 @@ recovering 80.71% validation and a new-best 84.06% translator score, but train
exactness and injectivity still failed. Batch 19 bounded replay to a pulse and
reached 82.04% validation plus a new-best 80.57% worst-link validation, but
again failed train exactness and injectivity. The ECP-6 positive controls remain
perfect and the ECP-7 confirmatory test remains sealed. See
perfect. Batch 20 replayed population-hard training meanings and established
new-best 83.45% mean and 82.13% worst-link validation, but again failed train
exactness and injectivity. The ECP-7 confirmatory test remains sealed. See
[`docs/development-log-ecp7.md`](docs/development-log-ecp7.md).

## Build on this work
Expand Down Expand Up @@ -99,6 +101,7 @@ Do not translate those artifacts in place. New experiment configurations and all
- [`config/ecp7-b17-development.yaml`](config/ecp7-b17-development.yaml) — late training-only global collision-pair replay on the Batch 15 base.
- [`config/ecp7-b18-development.yaml`](config/ecp7-b18-development.yaml) — the Batch 17 replay mechanism with final weight reduced to 0.1.
- [`config/ecp7-b19-development.yaml`](config/ecp7-b19-development.yaml) — the Batch 18 replay mechanism decayed back to zero after step 20,000.
- [`config/ecp7-b20-development.yaml`](config/ecp7-b20-development.yaml) — late ordinary task replay on population-hard training meanings.
- [`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
19 changes: 19 additions & 0 deletions config/ecp7-b20-development.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
extends: ecp7-b15-development.yaml

experiment:
title: ECP-7 late global hard-meaning task replay
arm: late_global_hard_meaning_task_replay
objective: >-
Test whether ordinary reconstruction updates concentrated on training
meanings failed by any current population link can repair the residual
known-meaning bottleneck without a meaning-to-slot binding, factor weight,
code-distance surrogate, or validation-driven sampling.

training:
global_hard_meaning_replay:
enabled: true
weight: 0.25
start_step: 15000
warmup_steps: 5000
batch_size: 64
refresh_interval: 200
55 changes: 30 additions & 25 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: 105 passing tests and split sizes `14336/1024/1024`.
Expected baseline: 109 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 19
Do not modify ECP-0 through ECP-6 or the completed ECP-7 Batch 1 through Batch 20
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 @@ -112,18 +112,25 @@ validation and 83.01% translator validation without becoming injective. The
confirmatory ECP-7 test is still sealed.
ECP7-B18-I reduced replay weight to `0.1` and recovered 84.08% train, 80.71%
validation and a new-best 84.06% translator validation. Validation and
translator gates pass, but train and injectivity do not. Batch 15 retains the
best validation result, and the confirmatory ECP-7 test remains sealed.
translator gates pass, but train and injectivity do not. Batch 15 retained the
best validation result at that stage, and the confirmatory ECP-7 test remains
sealed.
ECP7-B19-I decayed replay back to zero from steps 20,000–25,000. It reached
83.74% train, 82.04% validation, a new-best 80.57% worst-link validation and
83.50% translator validation. The bounded pulse improved cross-link balance but
still failed train thresholds and injectivity. Batch 15 retains the best mean
validation result, and the confirmatory ECP-7 test remains sealed.
still failed train thresholds and injectivity. Batch 15 retained the best mean
validation result at that stage, and the confirmatory ECP-7 test remains
sealed.
ECP7-B20-I replayed ordinary task updates on training meanings failed by any
population link. It reached 83.77% train, a new-best 83.45% mean and 82.13%
worst-link validation, and 83.96% translator validation. The pool shrank but its
remaining errors became more population-wide, so train thresholds and
injectivity still failed. The confirmatory ECP-7 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-B20 intervention and its failure criterion.
2. Define exactly one ECP7-B21 intervention and its failure criterion.
3. Register the variant and immutable configuration hashes before training.
4. Add tests for every new invariant.
5. Use only `smoke` and `develop`; keep the ECP-7 test split sealed.
Expand All @@ -136,27 +143,25 @@ Continue with this sequence:

## 6. Recommended next experiment

Batches 17–19 show that collision-pair replay changes code use but does not
stably separate the remaining collisions. Batch 19 improves validation only
after replay is removed, while known-meaning train exactness remains near 84%.
The clean next question is whether the residual error is concentrated in a
sparse set of hard training meanings that uniform task batches do not repair.
A clean ECP7-B20 progression is:

- keep the same world, bit budget, Batch 15 architecture and 30,000-step horizon;
- do not enable collision replay or factor reweighting;
- periodically evaluate only the training codebook and deterministically mine
meanings reconstructed incorrectly by the current population;
- add ordinary reconstruction updates on one fixed, registered number of mined
meanings after step 15,000, using a separate seed-derived sampler;
- keep the ordinary random task batch and all base objectives unchanged;
Batch 20 shows that ordinary task replay on any-link errors improves
generalization and cross-link balance, but mostly removes link-specific errors.
At its selected checkpoint, 1,937 of 2,848 hard meanings fail for all 16 links,
up from 1,469 of 3,406 at the Batch 15 checkpoint. The clean next question is
whether the fixed replay budget should target only those population-shared
errors. A clean ECP7-B21 progression is:

- inherit the complete Batch 20 implementation and Batch 15 base;
- change only the mining predicate from at least one failed link to all 16
failed links;
- keep weight `0.25`, the 64-meaning uniform replay batch, 200-step refresh,
seed-derived sampler, warmup and horizon unchanged;
- continue to mine and replay training meanings only;
- measure train exactness, injectivity, validation composition and new-reader
induction, and rerun the frozen ECP-6 positive control.

Preregister the mining score, refresh interval, replay batch size, coefficient
and schedule before training. Do not combine hard-meaning replay with collision
pressure, a new architecture, factor-specific weights, optimizer changes,
longer training, variable-length messages or negotiation.
Do not combine the predicate change with another coefficient, graded sampling,
collision pressure, a new architecture, factor-specific weights, optimizer
changes, longer training, variable-length messages or negotiation.

## 7. Definition of done for any contribution

Expand Down
112 changes: 112 additions & 0 deletions docs/development-log-ecp7.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ this log.
| ECP7-B17-I | Intervention | B15 with late global collision-pair replay | Position-aware MLP | completed; gate failed |
| ECP7-B18-I | Intervention | B17 replay with final weight 0.1 | Position-aware MLP | completed; gate failed |
| ECP7-B19-I | Intervention | B18 with replay decayed to zero after step 20,000 | Position-aware MLP | valid negative; validation 82.04%, train and injectivity fail |
| ECP7-B20-I | Intervention | Late global replay of population-hard training meanings | Position-aware MLP | valid negative; new-best validation 83.45%, train and injectivity fail |

## Batch 1 preregistration

Expand Down Expand Up @@ -1454,3 +1455,114 @@ remaining train error is a sparse hard-example problem without adding a
meaning-to-slot binding or a code-distance surrogate. Collision replay, factor
reweighting, architecture, optimizer, horizon, data, translator and thresholds
must remain unchanged or absent as appropriate.

## Batch 20 preregistration

Preregistered: July 18, 2026 at 15:42:06 UTC<br>
Seed: `11`<br>
Maximum population steps: `30,000`<br>
Minimum selection steps: `15,000`<br>
Early-stopping patience: `5,000` steps<br>
Hard-meaning predicate: any incorrect factor from any of 16 current population links<br>
Replay weight: `0` through step `15,000`, linear to `0.25` at step `20,000`, then hold<br>
Replay batch size: `64` meanings, uniform with replacement<br>
Training-only pool refresh interval: `200` steps<br>
Replay sampler seed offset: `+1211`<br>
Raw configuration SHA-256: `01afcad913222db6a6ef858919664cc50bfac9269f8405eb8cae0dd9832c7319`<br>
Effective configuration SHA-256: `44b1dbd8b767e4b3e58e88e7f1645e6dc1578b04fd30fa174777dffaf96c3b75`<br>
Split-SHA-256: `4947058c75ab07cb43a87eb82776b12cb2a7e2eeba7114de110d3b852cbc64cd`<br>
Test unsealed: **no**

A selected-checkpoint diagnostic on completed Batch 15 found 3,406 training
meanings with at least one population-link error. They fail for 11.14 of 16
links on average. Their ordinary reconstruction loss is `0.20870`, compared
with `0.06442` on the full training set, so the registered coefficient gives an
estimated task-scale contribution of `0.0522`.

ECP7-B20-I is identical to Batch 15 through step 15,000. The first pool is then
mined from hard training predictions only. Each subsequent replay update uses
the same all-senders/all-receivers factor reconstruction loss and current
straight-through temperature as the ordinary task batch. The independent
sampler prevents replay-index draws from changing the base batch sequence. No
validation meaning participates in mining or replay. The positive control is
rerun, and no alternative hard predicate, coefficient, sampler or accompanying
intervention is admitted into this batch.

## Batch 20 results

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

| Metric | Positive control | ECP7-B20-I |
|---|---:|---:|
| Population train, mean | 100% | **83.7721%** |
| Population train, worst link | 100% | 82.7148% |
| Population validation, mean | 100% | **83.4473%** |
| Population validation, worst link | 100% | **82.1289%** |
| Universal translator, validation | 100% | **83.9600%** |
| Exact sender-message agreement | 100% | **92.40%** |
| Unique messages per sender | 15,360 | 12,795–13,304 |
| Collision meanings per sender | 0 | 2,056–2,565 |
| Message entropy | 13.91 bits | 13.56–13.62 bits |
| Development gate | pass | **fail** |

The positive control passed every gate at 100%. ECP7-B20-I establishes the
strongest ECP-7 mean validation, worst-link validation and sender agreement so
far. It passes the validation and universal-translator thresholds, but still
fails both known-meaning train thresholds and sender injectivity. The joint gate
therefore fails and confirmatory access remains unauthorized.

All 76 logged records through step 15,000 match Batch 15 exactly on every 25
shared trajectory field. The first registered mining pass found 3,452 hard
training meanings. Replay weight rose from zero to `0.25` by step 20,000, where
the pool had fallen to 2,862. Its minimum was 2,705 at step 27,400; it then
continued to fluctuate rather than converging to zero.

The selected checkpoint was step 29,800 with a 2,848-meaning pool. Task loss was
`0.06719`, hard-meaning replay loss `0.14823`, replay weight `0.25`, and
utilization loss `-0.73711`. The weighted replay contribution was approximately
`0.0371`, below the ordinary task loss. The run reached the registered 30,000
step horizon. Its final checkpoint had 3,084 hard meanings and 82.84%
validation, so selection correctly retained step 29,800 using validation only.

Compared with Batch 15, train exactness improved by 0.31 percentage points,
mean validation by 0.86 points, worst-link validation by 2.34 points, translator
validation by 0.59 points and sender agreement by 0.07 points. Batch 20 now
holds the strongest ECP-7 validation result; Batch 18 retains the strongest
train and translator results.

The hard pool did shrink, but its remaining errors became more population-wide.
At the selected Batch 15 checkpoint, 3,406 meanings fail for at least one link,
1,469 fail for all 16 links, and a hard meaning fails for 11.14 links on
average. At the selected Batch 20 checkpoint, those values are 2,848, 1,937 and
13.07. Uniform any-link replay therefore repairs many link-specific errors while
leaving a smaller set of more consistently wrong meanings. Its hard-pool loss
rose from the diagnostic `0.20870` to `0.25880` despite the smaller pool.

Selected sender codebooks contain 12,795, 12,960, 12,898 and 13,304 unique
messages, with 2,565, 2,400, 2,462 and 2,056 collision meanings. Population
validation factor accuracies were `[99.58%, 99.96%, 98.44%, 85.35%]`;
universal-translator factor accuracies were
`[100%, 100%, 98.44%, 85.52%]`. The generalization gain comes primarily from
near-complete population color and shape recovery, while size and especially
texture remain fixed bottlenecks.

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 20 decision

ECP7-B20-I is a valid and informative negative result. Ordinary task replay on
any-link failures improves cross-link consistency and establishes the strongest
weak-structure validation result, but it does not materially lift train
exactness or reach injectivity. The confirmatory split remains sealed.

A future ECP7-B21 may keep the complete Batch 20 mechanism and parameters while
changing only the mining predicate from “at least one of 16 links fails” to
“all 16 links fail.” This tests the observed concentration directly by spending
the same registered replay budget exclusively on population-shared errors. No
coefficient, replay batch, refresh, schedule, architecture, base loss,
optimizer, horizon, data, translator or threshold change may accompany that
predicate test.
50 changes: 50 additions & 0 deletions docs/research-design-ecp7.md
Original file line number Diff line number Diff line change
Expand Up @@ -838,3 +838,53 @@ sealed-test requirement fails. No alternative decay, endpoint, mining, pair
sampler, architecture, base loss, optimizer, duration, data, translator or seed
may be tried inside Batch 19. Failure is recorded without confirmatory test
access.

## Batch 20 preregistration — Global hard-meaning task replay

Status: **preregistered for sealed development**<br>
Preregistered: July 18, 2026 at 15:42:06 UTC<br>
Configuration: `config/ecp7-b20-development.yaml`<br>
Raw configuration SHA-256: `01afcad913222db6a6ef858919664cc50bfac9269f8405eb8cae0dd9832c7319`<br>
Effective configuration SHA-256: `44b1dbd8b767e4b3e58e88e7f1645e6dc1578b04fd30fa174777dffaf96c3b75`

Batches 17–19 show that direct collision replay changes code use but does not
stably repair the known-meaning error. A training-only diagnostic on the
selected Batch 15 checkpoint found that 3,406 of 14,336 training meanings fail
for at least one of the 16 sender-receiver links. Those meanings fail for 11.14
links on average and have mean ordinary reconstruction loss `0.20870`, versus
`0.06442` over the complete training set. Batch 20 tests whether this
concentrated residual error is a hard-example sampling problem.

ECP7-B20-I inherits the complete Batch 15 architecture, random task batch,
utilization objective, optimizer, data, temperature schedule, 30,000-step
horizon, selection rule, translator and thresholds. It adds one mechanism:

- after the normal step-15,000 evaluation, and every 200 steps thereafter,
evaluate hard predictions over training meanings only;
- include a meaning in the replay pool when any current sender-receiver link
reconstructs at least one factor incorrectly;
- sample 64 pool meanings uniformly with replacement using a separate
seed-derived generator;
- compute the ordinary all-senders/all-receivers reconstruction loss on that
batch with the unchanged straight-through sender and current temperature;
- keep replay weight `0` through step 15,000, warm it linearly to `0.25` at
step 20,000, and hold it through step 30,000.

At the Batch 15 diagnostic scale, weight `0.25` contributes approximately
`0.0522` for the hard-example loss, comparable to rather than larger than the
remaining ordinary task loss. The base random batch remains unchanged. Mining
uses no validation meaning, factor-specific weight, slot assignment,
code-distance target or collision pair. The complete trajectory through step
15,000 must match Batch 15 exactly.

The batch contains exactly two seed-11 runs:

1. the unchanged ECP-6 positive control;
2. ECP7-B20-I with late global hard-meaning task replay.

All existing validity and development gates remain unchanged. The intervention
fails if any train, validation, translator, injectivity, channel-integrity or
sealed-test requirement fails. No alternative predicate, score, replay weight,
batch size, refresh, schedule, architecture, base loss, optimizer, duration,
data, translator or seed may be tried inside Batch 20. Failure is recorded
without confirmatory test access.
7 changes: 7 additions & 0 deletions evidence/ecp7-development/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,13 @@ validation and 83.50% translator validation. The bounded pulse improved
cross-link balance but still failed train thresholds and injectivity. Exact
identities and hashes are in `batch19-manifest.json`.

Batch 20 replayed ordinary task updates on training meanings failed by any
population link. It reached 83.77% train exactness, a new-best 83.45% mean and
82.13% worst-link validation, and 83.96% translator validation. The hard pool
shrunk but concentrated into population-wide failures, so train thresholds and
injectivity still failed. Exact identities and hashes are in
`batch20-manifest.json`.

Reproduce the development arms with:

```bash
Expand Down
Loading