The correlation evaluation tooling runs against a stale image, so every dump taken via docker compose run silently measures old code — it broke outright on 2026-09-01
#101
Reference in New Issue
Block a user
Found on the unattended run of 2026-09-01 when the standing correlation dump (#57) failed outright. Worked around this run; the underlying defect stands and it silently corrupts measurement rather than failing loudly.
Symptom
/opt/drb/aiwin/corr_dump.shdied with:ai_systems_onlywas added todebug_correlationin140dfbf, which is an ancestor of liveb722223. So the dump was executing code older than production.Root cause — confirmed by direct comparison
Both run on the same host, at the same moment:
The long-running
c2-corecontainer has current code. The image thatdocker compose run --rm --no-deps c2-coreresolves to on the VM is stale. The wrapper does not bind-mount/opt/drb/drb-c2-core/app, sorunexecutes whatever the host's locally-resolved image tag contains — which has drifted behind the image the live container was actually started from.Why this is the dangerous kind of bug
It only failed loudly because a signature changed. Any drift that is not a signature change — a scoring threshold, a prompt, a gate condition, a veto literal — produces a dump that runs cleanly and reports numbers from old code. Nothing in the output says which build produced it.
Everything downstream inherits that:
docker compose run. Every dump it has ever taken this way is of unverified provenance.correlation-logs-<date>.jsonseries exists to be compared run over run. A trend line across mixed builds is not a trend line. This is exactly the "trend matters more than the snapshot" rule the procedure is built on, silently violated.Workaround applied this run
The 2026-09-01 dump was taken by piping the script into the live container over
exec -Tinstead ofrun --rm, which is guaranteed to be the deployed build. Saved asVersion 5C/correlation-logs-2026-09-01.json(100 incidents, 187 linked calls, 22 orphans,orphan_scan_truncated: false). Helper left on the VM at/opt/drb/aiwin/corr_dump_exec.py.Fix shape
execagainst the running container, notrun --rm, and update #57's procedure text along with it. Cheapest and removes the whole class.runmust stay (e.g. to avoid loading the live process), pin it to the exact deployed tag —TAG=$(curl -s .../health | ...)— rather than whatever the host resolves.docker image prune/ re-pull hygiene issue on the VM, and it is the same registry-tag surface as the mixed-version risk in the CI credential issue filed alongside this.Related: #57, #96, #35, #21.