summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BASELINES.md26
-rw-r--r--PAPER_PLAN.md12
-rw-r--r--README.md12
-rw-r--r--RESULTS.md19
-rw-r--r--REVIEW_SCORECARD.md7
-rw-r--r--ROADMAP.md20
-rw-r--r--results/native/dualprop_cifar10_vgg16_a0_b0p1_seed1988.json287
-rw-r--r--results/native_baseline_audit.md24
8 files changed, 377 insertions, 30 deletions
diff --git a/BASELINES.md b/BASELINES.md
index 5051fca..9c3a320 100644
--- a/BASELINES.md
+++ b/BASELINES.md
@@ -4,7 +4,8 @@ This ledger separates three comparison types:
1. matched architectures/budgets inside this repository;
2. native author protocols reproduced without tracked source edits;
-3. published author numbers used for context while reproduction is pending.
+3. published author numbers retained as multi-seed context beside the completed
+ one-seed executable-fidelity reproductions.
Native protocols are not equal-compute comparisons. Their value is to prevent
weak in-house reimplementations from defining the state of the art.
@@ -80,10 +81,11 @@ WANDB_DIR=/scratch/yurenh2/burstccn-wandb CUDA_VISIBLE_DEVICES=5 \
```
The native trainer evaluates test every epoch and records both latest and best
-test error. It has a validation loader but model saving is disabled in this
-configuration. We will report final test accuracy as the primary reproduction,
-native best-test accuracy separately, and explicitly label the latter as
-test-selected. No run will be removed for a poor endpoint.
+test error. The completed seed-0 record reports `80.07%` final test accuracy,
+`80.10%` at the validation-selected epoch, and `80.25%` test-selected, versus
+the published `82.97 +/- 0.21%`. Audited W&B wall time is `15451.3 s`. The lower
+reproduced endpoint is retained rather than removed; the best-test value is
+explicitly labelled test-selected.
## Dual Propagation native CIFAR-10
@@ -132,9 +134,13 @@ TF_FORCE_GPU_ALLOW_GROWTH=true \
The actual command also prepends the environment's NVIDIA wheel `lib`
directories to `LD_LIBRARY_PATH`; this changes runtime linkage, not author
source. A one-epoch full-VGG smoke completed without OOM/NaN in 203.4 training
-seconds, reaching 20.48% validation and 20.04% test accuracy. The 130-epoch
-seed is therefore scheduled as a long native reproduction rather than treated
-as a cheap matched baseline.
+seconds, reaching 20.48% validation and 20.04% test accuracy. The completed
+130-epoch seed-1988 reproduction reaches `92.46%` test accuracy from the
+best-validation checkpoint, versus the published `92.41 +/- 0.07%`. Test was
+evaluated exactly once. Author-measured training, validation, and test time
+sums to `23119.8 s`; this excludes setup and checkpoint I/O. The near-exact
+accuracy reproduction establishes executable fidelity, not equal compute with
+SDIL.
## Reporting rules for external runs
@@ -155,5 +161,5 @@ freeze, the wrong physical GPU, and missing dataset hashes. Completed records
live under `results/native/<protocol-id>.json`. The separate strict aggregator
`experiments/audit_native_baselines.py` distinguishes final,
validation-selected, and test-selected metrics and generates
-`results/native_baseline_audit.md`. `experiments/finalize_accept.sh` remains
-red until both author runs have passed this C4 audit.
+`results/native_baseline_audit.md`. Both author runs pass this C4 audit, and
+`experiments/finalize_accept.sh` is green.
diff --git a/PAPER_PLAN.md b/PAPER_PLAN.md
index 1c958ff..1055738 100644
--- a/PAPER_PLAN.md
+++ b/PAPER_PLAN.md
@@ -43,11 +43,13 @@ as a limitation rather than a title claim.
5. Report the frozen depth panel: SDIL changes by only
`-0.214 +/- 0.349` points over 12x hidden depth while DFA alignment falls to
`0.047`; qualify that flattened CIFAR is depth-flat.
-6. Report the failed standard-ResNet A3 gate as a limitation: short-run SDIL
- beat tuned DFA, but the full recipe became nonfinite and did not open A4.
- End with the supported scope: innovation is useful for soma-predictable
- traffic, while learned feedback amortization and long-horizon stability
- remain the useful-depth bottlenecks.
+6. Report native BurstCCN and Dual Prop as method-native context, including
+ their unmatched protocols and audited walls. Report the failed
+ standard-ResNet A3 gate as a limitation: short-run SDIL beat tuned DFA, but
+ the full recipe became nonfinite and did not open A4. End with the supported
+ scope: innovation is useful for soma-predictable traffic, while learned
+ feedback amortization and long-horizon stability remain the useful-depth
+ bottlenecks.
The abstract should not mention the failed desired-velocity hypothesis unless
the paper explicitly positions that falsification as a contribution. It must
diff --git a/README.md b/README.md
index b5f5af8..2c9dc7a 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,11 @@ and scaling behavior. See `NOVELTY.md` for the exact prior-art boundary.
became nonfinite at epoch 90 and ended at chance, while DFA remained finite
at `33.06%`. A4 was therefore not opened and no confirmation test seed was
touched.
+- Native author-code fidelity is complete. BurstCCN reaches `80.10%` at its
+ validation-selected epoch versus published `82.97 +/- 0.21%`; Dual Prop
+ reaches `92.46%` versus published `92.41 +/- 0.07%`. Their audited walls are
+ `15451.3 s` and `23119.8 s`, respectively, and they are not presented as
+ matched-compute points.
The broad endogenous-traffic gate and the Harnett desired-velocity/online-control
screen failed. Those results are retained and explicitly constrain the paper:
@@ -96,9 +101,10 @@ eligibilities, the BatchNorm-coupled perturbation objective, predictor fitting,
translation-shared feedback, and parameter/cost accounting.
`experiments/finalize_accept.sh` additionally requires strict imports of the
-frozen BurstCCN and Dual Propagation author-code runs. It is intentionally red
-until both long native jobs are complete. The standard ResNet branch stopped
-at its failed A3 validation gate; the untouched A4 test panel remains sealed.
+frozen BurstCCN and Dual Propagation author-code runs. Both records now pass;
+the accept-bar mechanical audit is green. The standard ResNet branch stopped
+at its failed A3 validation gate, and the untouched A4 test panel remains
+sealed.
## Result discipline
diff --git a/RESULTS.md b/RESULTS.md
index 5ef402a..6b11b34 100644
--- a/RESULTS.md
+++ b/RESULTS.md
@@ -586,6 +586,25 @@ strong modern EP variant remains necessary. DFA is also strong on easy MNIST, so
comes from the five-depth CIFAR panel; this comparison establishes that SDIL need not trade away
accuracy to obtain a large cost advantage over canonical EP.
+### Native author-code CIFAR-10 baselines
+
+These are executable-fidelity reproductions under the authors' architectures
+and schedules, not equal-compute comparisons with SDIL:
+
+| method | reproduced seed | primary test (%) | validation-selected test (%) | test-selected test (%) | published (%) | audited wall (s) |
+|:--|--:|--:|--:|--:|--:|--:|
+| BurstCCN | 0 | 80.070 | 80.100 | 80.250 | 82.97 +/- 0.21 | 15451.3 |
+| Dual Prop | 1988 | 92.460 | 92.460 | n/a | 92.41 +/- 0.07 | 23119.8 |
+
+BurstCCN's primary value is the final epoch and its best-test value is
+test-selected because native code evaluates test every epoch. Dual Prop
+restores the best-validation checkpoint and evaluates test once, so primary
+and validation-selected values coincide. Both strict records include source,
+environment, dataset, artifact, selection, and wall-definition audits. Dual
+Prop reproduces its published accuracy almost exactly, but uses VGG16 with 16
+nudged inference passes and about 6.42 hours of author-measured compute on a
+GTX 1080.
+
### Frozen standard-ResNet development funnel
The prospective Oral-A funnel used a 45k/5k training-only CIFAR-10 split; no
diff --git a/REVIEW_SCORECARD.md b/REVIEW_SCORECARD.md
index 25d1247..861ba0e 100644
--- a/REVIEW_SCORECARD.md
+++ b/REVIEW_SCORECARD.md
@@ -47,15 +47,15 @@ Every formal result report records:
3. Innovation was not uniformly beneficial for arbitrary endogenous top-down traffic, so the
supported mechanism is narrower than the initial claim.
4. The frozen oral-B screen falsified the desired-velocity and Harnett error-derivative claims.
-5. The frozen ResNet-20 A3 run became nonfinite and ended at chance; native Dual Prop is the only
- remaining incomplete baseline endpoint. The failed gate forbids the A4 test panel.
+5. The frozen ResNet-20 A3 run became nonfinite and ended at chance. The failed gate forbids the
+ A4 test panel; completed native baselines improve fairness but do not supply SDIL scale evidence.
## Score trajectory and prospective gates
| Checkpoint | Overall | What changed | Remaining ceiling |
|:--|--:|:--|:--|
| Current audited package | 5 | Strong depth-preservation and residual-necessity evidence; negative gates retained | Standard useful scale is absent |
-| Native baselines complete | pending | Can close fairness/completeness objections, but cannot by itself establish the main claim | Usually no automatic score increase |
+| Native baselines complete | 5 | BurstCCN is below its published endpoint; Dual Prop reproduces 92.46% versus 92.41%, with strict provenance and cost semantics | Fairness objection narrows, but SDIL gains no standard-scale evidence |
| Oral-A A1/A2 | 5 | BP reached 91.62%; short channel-gated SDIL reached 41.98% versus tuned DFA at 37.16% | Development screening alone cannot raise the score |
| Oral-A A3 fails | 5 | Full ResNet-20 SDIL became nonfinite at epoch 90 and ended at 10%; DFA ended finite at 33.06% | Standard-scale and oral-A claims are closed; A4 remains untouched |
| Oral-A A4 | not opened | The prerequisite A3 gate failed | No oral-A confirmation claim is available |
@@ -71,6 +71,7 @@ retroactively reopened by success on standard vision benchmarks.
| 2026-07-22 / `2304e83` | Audit of all completed frozen branches | baseline → 5 | Strong preservation/residualization core, but no standard useful-scale result |
| 2026-07-22 / `c753f51`, `1b24c87`, `6d19078` | Existing 60-run innovation panel promoted to a strict main figure; conditional-projection and norm-direction identities made executable | 5 → 5 | Closes a presentation/theory objection and makes the narrow novelty legible, but adds no new held-out evidence and therefore earns no score inflation |
| 2026-07-22 / frozen Oral-A A1--A3 | A1 and A2 pass; full A3 SDIL becomes nonfinite and fails four of six checks; A4 untouched | 5 → 5 | Closes the standard-scale question negatively. The narrow mechanism paper survives, while any standard-ResNet or oral claim does not |
+| 2026-07-22 / native C4 | BurstCCN and Dual Prop author-code records pass the strict audit; Dual Prop reproduces 92.46% test in 23119.8 s | 5 → 5 | Closes a baseline-fidelity objection and confirms a strong expensive comparator, but does not repair SDIL's failed A3 evidence |
Future rows are appended only after an audited frozen stage. A score staying flat is informative:
engineering, theory exposition, or visualization may make the paper more defensible without
diff --git a/ROADMAP.md b/ROADMAP.md
index ee71db8..e2dd375 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -272,15 +272,17 @@ competitive under the frozen protocol.
Each method receives a documented validation budget. Native-protocol and exact-architecture
comparisons are labelled separately; neither substitutes for a matched compute/query comparison.
-**Status: in progress.** In-repository BP/FA/DFA, direct NP, learned NP, PEPITA,
-Forward-Forward, and canonical EP are complete. `BASELINES.md` freezes the author revisions,
-commands, data provenance, and selection semantics for BurstCCN and Dual Prop. Paper-faithful
-BurstCCN seed 0 is running on GPU5; author-code Dual Prop VGG16 seed 1988 is running on GPU7 after
-a complete one-epoch smoke. C4 remains incomplete until both long runs finish and their artifacts
-are imported and audited. The native protocol ledger, strict importer, result aggregator, and
-`finalize_accept.sh` gate are frozen before either endpoint is observed. C4 does not impose an
-accuracy threshold: poor faithful reproductions remain reportable and cannot be discarded, while
-published multi-seed values remain explicitly separate from the one-seed executable-fidelity runs.
+**Status: passed on 2026-07-22.** In-repository BP/FA/DFA, direct NP, learned NP,
+PEPITA, Forward-Forward, and canonical EP are complete. Paper-faithful BurstCCN
+seed 0 reaches `80.07%` final / `80.10%` validation-selected / `80.25%`
+test-selected accuracy in `15451.3 s`, versus published `82.97 +/- 0.21%`.
+Author-code Dual Prop VGG16 seed 1988 reaches `92.46%` from the best-validation
+checkpoint in `23119.8 s`, versus published `92.41 +/- 0.07%`, with one test
+evaluation. Both records pass artifact, source, environment, dataset,
+completeness, finiteness, selection, and cost-definition checks in
+`finalize_accept.sh`. These one-seed method-native reproductions remain
+separate from matched-compute comparisons and from published multi-seed
+uncertainty.
### C5. Theory predicts the observed regimes
diff --git a/results/native/dualprop_cifar10_vgg16_a0_b0p1_seed1988.json b/results/native/dualprop_cifar10_vgg16_a0_b0p1_seed1988.json
new file mode 100644
index 0000000..519c883
--- /dev/null
+++ b/results/native/dualprop_cifar10_vgg16_a0_b0p1_seed1988.json
@@ -0,0 +1,287 @@
+{
+ "audit": {
+ "complete": true,
+ "expected_epochs": 130,
+ "finite": true,
+ "selection_semantics_frozen": true,
+ "source_revision_match": true,
+ "source_tracked_clean": true
+ },
+ "dataset": "CIFAR-10",
+ "dataset_artifacts": [
+ {
+ "bytes": 170498071,
+ "path": "/home/yurenh2/sdrn/data/cifar-10-python.tar.gz",
+ "sha256": "6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce"
+ },
+ {
+ "bytes": 169566452,
+ "path": "/scratch/yurenh2/cifar10-binary-converted-v1.tar.gz",
+ "sha256": "0b97b0a786c64f4cd0996cace20e81e189669aba9f4b4e517eb529f9c7105cec"
+ }
+ ],
+ "gpu": {
+ "driver_version": "535.183.01",
+ "memory_total_mib": "8192",
+ "name": "NVIDIA GeForce GTX 1080",
+ "physical_index": "7",
+ "uuid": "GPU-df3d5933-c3e9-9ea1-d595-9d2a3b68c14b"
+ },
+ "importer_provenance": {
+ "path": "/home/yurenh2/sdil",
+ "revision": "04de9326e60bb9e3592c0ddb5474265d228cbce0",
+ "tracked_dirty": false
+ },
+ "method": "Dual Propagation",
+ "metrics": {
+ "epochs_observed": 130,
+ "final_epoch": 130,
+ "final_train_accuracy_percent": 99.96444702148438,
+ "final_validation_accuracy_percent": 92.76000213623047,
+ "primary_test_accuracy_percent": 92.45999908447266,
+ "primary_test_loss": 0.33965352177619934,
+ "primary_test_top5_accuracy_percent": 99.80000305175781,
+ "test_evaluations": 1,
+ "test_selected_test_accuracy_percent": null,
+ "test_wall_s": 3.2275850772857666,
+ "training_wall_s": 23052.372897148132,
+ "validation_selected_epoch": 118,
+ "validation_selected_test_accuracy_percent": 92.45999908447266,
+ "validation_selected_validation_accuracy_percent": 92.86000061035156,
+ "validation_wall_s": 64.21902823448181,
+ "wall_definition": "sum of author-measured train, validation, and final test runtimes; excludes setup, checkpoint I/O, and diagnostic plotting",
+ "wall_s": 23119.8195104599
+ },
+ "protocol": {
+ "command": [
+ "python",
+ "train.py",
+ "--model",
+ "VGG16",
+ "--dataset",
+ "cifar10",
+ "--num-epochs",
+ "130",
+ "--batch-size",
+ "100",
+ "--alpha",
+ "0.0",
+ "--beta",
+ "0.1",
+ "--loss",
+ "sce",
+ "--inference-sequence",
+ "fwK",
+ "--inference-passes-nudged",
+ "16",
+ "--learning-rate",
+ "0.025",
+ "--learning-rate-final",
+ "0.000002",
+ "--warmup-learning-rate",
+ "0.001",
+ "--learning-algorithm",
+ "dualprop-lagr-ff",
+ "--activation",
+ "relu",
+ "--decay-epochs",
+ "120",
+ "--warmup-epochs",
+ "10",
+ "--momentum",
+ "0.9",
+ "--weight-decay",
+ "5e-4",
+ "--dtype",
+ "float32",
+ "--param-dtype",
+ "float32",
+ "--percent-train",
+ "90",
+ "--percent-val",
+ "10",
+ "--seeds",
+ "1988",
+ "--experiment-name",
+ "sdil-dp-full-a0-b0p1-seed1988-v1"
+ ],
+ "dataset": "CIFAR-10",
+ "expected_epochs": 130,
+ "expected_gpu": {
+ "name": "NVIDIA GeForce GTX 1080",
+ "physical_index": "7"
+ },
+ "method": "Dual Propagation",
+ "paper_url": "https://arxiv.org/abs/2402.08573",
+ "published_accuracy_percent_mean": 92.41,
+ "published_accuracy_percent_sd": 0.07,
+ "repository_url": "https://github.com/Rasmuskh/dualprop_icml_2024",
+ "required_dataset_sha256": [
+ "6d958be074577803d12ecdefd02955f39262c83c16fe9348329d7fe0b5c001ce",
+ "0b97b0a786c64f4cd0996cace20e81e189669aba9f4b4e517eb529f9c7105cec"
+ ],
+ "resolved_config": {
+ "alpha": 0.0,
+ "batch_size": 100,
+ "beta": 0.1,
+ "decay_epochs": 120,
+ "inference_passes_nudged": 16,
+ "inference_sequence": "fwK",
+ "learning_algorithm": "dualprop-lagr-ff",
+ "learning_rate": 0.025,
+ "model": "VGG16",
+ "momentum": 0.9,
+ "percent_train": 90,
+ "percent_val": 10,
+ "warmup_epochs": 10,
+ "weight_decay": 0.0005
+ },
+ "seed": 1988,
+ "selection_semantics": {
+ "primary": "single test evaluation from the best-validation checkpoint",
+ "test_selected": "not available; test is evaluated only once",
+ "validation_selected": "same as primary"
+ },
+ "source_revision": "7b2595b34421e1483a721dbfdeff8cdabda3a1ff"
+ },
+ "protocol_id": "dualprop_cifar10_vgg16_a0_b0p1_seed1988",
+ "resolved_config": {
+ "alpha": 0.0,
+ "batch_size": 100,
+ "beta": 0.1,
+ "decay_epochs": 120,
+ "inference_passes_nudged": 16,
+ "inference_sequence": "fwK",
+ "learning_algorithm": "dualprop-lagr-ff",
+ "learning_rate": 0.025,
+ "model": "VGG16",
+ "momentum": 0.9,
+ "percent_train": 90,
+ "percent_val": 10,
+ "warmup_epochs": 10,
+ "weight_decay": 0.0005
+ },
+ "run_artifacts": [
+ {
+ "bytes": 7579669,
+ "path": "/scratch/yurenh2/sdil-reference/dualprop_icml_2024/runs/sdil-dp-full-a0-b0p1-seed1988-v1/2026_07_22_05_23_43/hist.npy",
+ "sha256": "401f24e1780b1ae1b57524694e9b9daaa68c5607ea7f68ef0c08698de87608dc"
+ }
+ ],
+ "runtime_environment": {
+ "pip_freeze": [
+ "Markdown==3.10.2",
+ "MarkupSafe==3.0.3",
+ "PyYAML==6.0.3",
+ "Pygments==2.20.0",
+ "Werkzeug==3.1.8",
+ "absl-py==1.4.0",
+ "array_record==0.8.1",
+ "astunparse==1.6.3",
+ "attrs==26.1.0",
+ "certifi==2026.7.22",
+ "cffi==2.1.0",
+ "charset-normalizer==3.4.9",
+ "chex==0.1.7",
+ "click==8.4.2",
+ "contourpy==1.3.2",
+ "cryptography==49.0.0",
+ "cycler==0.12.1",
+ "dm-pix==0.4.1",
+ "dm-tree==0.1.10",
+ "einops==0.8.2",
+ "etils==1.13.0",
+ "flatbuffers==25.12.19",
+ "flax==0.7.0",
+ "fonttools==4.63.0",
+ "fsspec==2026.6.0",
+ "gast==0.7.0",
+ "google-auth-oauthlib==1.4.0",
+ "google-auth==2.56.2",
+ "google-pasta==0.2.0",
+ "grpcio==1.82.1",
+ "h5py==3.16.0",
+ "idna==3.18",
+ "importlib_resources==7.1.0",
+ "jax==0.4.14",
+ "jaxlib==0.4.14+cuda11.cudnn86",
+ "keras==2.15.0",
+ "kiwisolver==1.5.0",
+ "libclang==18.1.1",
+ "markdown-it-py==4.2.0",
+ "matplotlib==3.8.0",
+ "mdurl==0.1.2",
+ "ml-dtypes==0.3.2",
+ "msgpack==1.2.1",
+ "nest-asyncio==1.6.0",
+ "numpy==1.25.2",
+ "nvidia-cublas-cu117==11.10.1.25",
+ "nvidia-cublas-cu11==11.11.3.6",
+ "nvidia-cuda-cupti-cu117==11.7.50",
+ "nvidia-cuda-cupti-cu11==11.8.87",
+ "nvidia-cuda-nvcc-cu117==11.7.64",
+ "nvidia-cuda-nvcc-cu11==2022.5.4",
+ "nvidia-cuda-runtime-cu117==11.7.60",
+ "nvidia-cuda-runtime-cu11==11.8.89",
+ "nvidia-cudnn-cu116==8.4.0.27",
+ "nvidia-cudnn-cu11==8.6.0.163",
+ "nvidia-cufft-cu117==10.7.2.50",
+ "nvidia-cufft-cu11==10.9.0.58",
+ "nvidia-curand-cu11==10.3.0.86",
+ "nvidia-cusolver-cu117==11.3.5.50",
+ "nvidia-cusolver-cu11==11.4.1.48",
+ "nvidia-cusparse-cu117==11.7.3.50",
+ "nvidia-cusparse-cu11==11.7.5.86",
+ "nvidia-nccl-cu11==2.19.3",
+ "oauthlib==3.3.1",
+ "opt_einsum==3.4.0",
+ "optax==0.1.7",
+ "orbax-checkpoint==0.3.5",
+ "packaging==26.0",
+ "pandas==2.3.3",
+ "pillow==12.3.0",
+ "promise==2.3",
+ "protobuf==3.20.3",
+ "psutil==7.2.2",
+ "pyasn1==0.6.4",
+ "pyasn1_modules==0.4.2",
+ "pycparser==3.0",
+ "pyparsing==3.3.2",
+ "python-dateutil==2.9.0.post0",
+ "pytz==2026.2",
+ "requests-oauthlib==2.0.0",
+ "requests==2.34.2",
+ "rich==15.0.0",
+ "scipy==1.11.4",
+ "seaborn==0.13.2",
+ "six==1.17.0",
+ "tensorboard-data-server==0.7.2",
+ "tensorboard==2.15.2",
+ "tensorflow-datasets==4.9.4",
+ "tensorflow-estimator==2.15.0",
+ "tensorflow-io-gcs-filesystem==0.37.1",
+ "tensorflow-metadata==1.15.0",
+ "tensorflow==2.15.1",
+ "tensorstore==0.1.74",
+ "termcolor==3.3.0",
+ "toml==0.10.2",
+ "toolz==1.1.0",
+ "tqdm==4.69.0",
+ "typing_extensions==4.16.0",
+ "tzdata==2026.3",
+ "urllib3==2.7.0",
+ "wrapt==1.14.2",
+ "zipp==4.1.0"
+ ],
+ "pip_freeze_sha256": "ea5bd886c4dcc61041aef10f12cf1a21ac018ae3e13cd64c64e3d90d5b1daf59",
+ "python_executable": "/scratch/yurenh2/venvs/dualprop/bin/python",
+ "python_version": "3.10.20 (main, Jun 11 2026, 15:17:37) [GCC 14.3.0]"
+ },
+ "schema_version": 1,
+ "seed": 1988,
+ "source_provenance": {
+ "path": "/scratch/yurenh2/sdil-reference/dualprop_icml_2024",
+ "revision": "7b2595b34421e1483a721dbfdeff8cdabda3a1ff",
+ "tracked_dirty": false
+ }
+}
diff --git a/results/native_baseline_audit.md b/results/native_baseline_audit.md
new file mode 100644
index 0000000..73262db
--- /dev/null
+++ b/results/native_baseline_audit.md
@@ -0,0 +1,24 @@
+# Native author-code baseline audit
+
+Both records passed the strict C4 artifact, source, protocol, environment,
+dataset, completeness, finiteness, selection, and cost-definition checks.
+These are method-native reproductions, not equal-compute comparisons with SDIL.
+
+| method | reproduced seed | primary test (%) | validation-selected test (%) | test-selected test (%) | published (%) | audited wall (s) |
+|:--|--:|--:|--:|--:|--:|--:|
+| BurstCCN | 0 | 80.070 | 80.100 | 80.250 | 82.97 ± 0.21 | 15451.3 |
+| Dual Prop | 1988 | 92.460 | 92.460 | — | 92.41 ± 0.07 | 23119.8 |
+
+BurstCCN's primary metric is its final epoch. Its validation-selected metric is
+the test accuracy from the minimum-validation-error epoch; its best test value
+is explicitly test-selected because the native trainer evaluates test every
+epoch. The `n_epochs=400` author configuration performs an epoch-0 evaluation
+and 399 optimization epochs. Dual Prop evaluates test once after restoring the
+best-validation checkpoint, so its primary and validation-selected values are
+identical and no test-selected value exists.
+
+The BurstCCN wall value is W&B run time through the final epoch log. The Dual
+Prop wall value sums author-measured train, validation, and final test time and
+excludes setup, checkpoint I/O, and diagnostic plotting. One reproduced seed
+establishes executable fidelity; published multi-seed uncertainty is retained
+for context and is not replaced by a one-seed error bar.