# Stored synthetic route-following evidence

This export contains100existing controller-enabled trial summaries and300stored event flags. It is a numerical teaching benchmark, not observations of a physical robot. The expensive simulation was **not rerun**. Controller aggregates were independently recalculated from the stored trial rows; baseline values were copied from a stored summary and were **not independently reproduced**.

## Files and provenance

- `stored-trials.csv`:100rows, one per stored controller trial, with seed inferred from the reviewed simulator's base-seed-plus-index rule.
- `aggregate.json`: recalculated controller aggregates, separately labelled baseline and paired summaries, and verification scope.
- `source-hashes.json`:SHA-256 fingerprints of the exact reviewed results and simulator plus the exported CSV. A matching hash establishes file identity, not scientific validity.
- `export.py`: standard-library extraction/checking script. It expects the original internal results and simulator at their workspace paths; it does not run them. This is an export audit tool, not a standalone reconstruction of the missing raw trajectories.

## What the simulator represents

A synthetic feature map contains240points with random64-bit descriptors. Current observations apply missed detections, descriptor-bit flips and lateral coordinate noise. The projection uses a fixed80pixels/metre scale; it is not a complete calibrated perspective camera. Mutual nearest Hamming-distance matching with cutoff12 supplies lateral displacement estimates; at least6matches are required. The controller applies−0.8times the estimate, capped at±0.05m per step. If no estimate is available it applies zero correction, not a demonstrated safe stop. Random lateral process disturbance remains.

There are200updates with a nominal0.1m forward increment, described as a20m route. Observations are evaluated at x=step×0.1 for step0…199, so the last sampled forward coordinate is19.9m. The lateral endpoint is after the final update. No speed, seconds, wheel dynamics, collision avoidance or successful physical arrival is measured. The map reference contains all feature descriptors; longitudinal progress is prescribed by the simulation, not estimated by the robot. Illumination and occlusion events modify synthetic detection probabilities rather than actual images.

Each trial includes3lateral perturbations and3scheduled intervals each of darkness/occlusion. Intervals can overlap. The nominal matching noise, descriptor distributions and controller settings define this particular synthetic test, not validated real-camera performance.

## Exact metric meanings and denominators

The legacy “arrival” means only final absolute lateral error≤0.25m. All100stored controller trials meet that condition. It says nothing about obstacles, collision-free motion, longitudinal localisation or safe completion.

The median error is the **median across100trial medians** of absolute lateral error sampled **after correction and process noise** at each update. It is not the pooled median of all20000steps, a time-weighted error or the worst error. Its value is0.0015821648659800353m. The endpoint P95 is nearest rank: sorted endpoint value number95out of100,0.004469298311528375m; no interpolated percentile or confidence interval is used.

An event is counted as recovered if **any** post-update absolute error≤0.25m occurs in indices[event step,min(200,event step+100)), including the first post-correction sample. Thus a single threshold crossing counts; sustained recovery or return to the pre-event trajectory is not required. Later perturbations may fall inside an earlier event window, and near-end windows are shortened. These300event flags are not300independent experiments. All300stored controller event flags are true. The raw trajectories and event indices were not stored, so those flags cannot be independently reconstructed from this export.

Mean matches per frame is the mean of100trial means, with200frames per trial; it equals a frame-weighted mean here because every trial has the same number of frames. Stored value24.944650000000003.

The stored no-correction baseline reports28/100endpoint successes and160/300event threshold hits. Its per-trial records are absent. The stored paired median error reduction0.23731107555273262m cannot be reconstructed from aggregate medians. The72percentage-point endpoint difference and46.6667percentage-point event-rate difference are arithmetically consistent with the stored aggregate counts, but do not constitute an independent rerun or external baseline. No confidence interval or real-world success probability is claimed.

## Review outcome and public use

All100row types/finite metrics and endpoint threshold flags checked. All recalculated controller aggregates match the existing source at1e−14 tolerance. Data contain no fabricated frame traces or interpolated paths. Do not plot an invented route as if measured; use aggregate distributions or clearly labelled schematic paths. A claim that fixed targets were preregistered cannot be established from the stored JSON alone, so this export calls them declared illustrative thresholds.

No physical robot, actual camera, learned visual feature extractor, full vehicle dynamics or environmental safety was tested. This model can illustrate feedback under its declared disturbances; it cannot demonstrate general autonomous-navigation performance.

## Standalone verification of this download

Keep `verify-export.py`, `stored-trials.csv` and `aggregate.json` together. With Python3, run `python verify-export.py`. Only the standard library is needed. The verifier reads these two downloaded data files, checks100rows and300stored event flags, recomputes all9controller aggregate fields and checks endpoint threshold flags. It does not modify files or require the internal corpus.

This verifies exported summaries, not the original simulation or absent raw event traces. Baseline aggregates and the paired median reduction remain unreproduced. The separate `export.py` is an internal-corpus extraction tool and requires the original workspace source files; use `verify-export.py` for standalone checks.
