Add post-exit normal acquisition audit with frozen gate regression
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# Phase 4AR read-only progress and post-run audit
|
||||
|
||||
These tools are separate from the 16 registered scientific source files. They
|
||||
never launch a brain, change plastic delta, resample inputs, resume a partial
|
||||
epoch or authorize another assay. Tests use synthetic temporary data only.
|
||||
|
||||
## While the experiment runs
|
||||
|
||||
`progress_normal.py` reads the small committed ledger records. It distinguishes
|
||||
completed CPU-verified epochs, completed probes, pending processes and mere
|
||||
result files. It is not a whole-tree integrity check or a learning gate.
|
||||
|
||||
`normal_finalize.py check` makes a real Linux process query and examines the
|
||||
actual terminal receipts. It intentionally refuses a live or incomplete run,
|
||||
even when a completion-looking file exists. An absent PID alone proves nothing.
|
||||
No final-audit directory or result is created by this check.
|
||||
|
||||
## After all registered work has ended
|
||||
|
||||
An operator must first provision this exact, empty, separately owned directory:
|
||||
|
||||
`/data/digital-drosophila/experiments/phase4ar-normal-conditioning-final-audit/`
|
||||
|
||||
Then run the committed `normal_finalize.py audit` with the existing science
|
||||
environment and `-B`. The driver refuses uncommitted audit code, a nonempty
|
||||
destination, missing/failed exit evidence, a live runtime or a stopped phase.
|
||||
There is no automatic retry after a partial finalization.
|
||||
|
||||
The terminal ledger's authentic original PASS was written before
|
||||
`audit/execution-complete.json` existed. A fresh unmodified ledger audit will
|
||||
therefore report that exact one extra file. `terminal_ledger.py` retains both
|
||||
original reports unchanged. It accepts this boundary only if every other field,
|
||||
the full order, head, payload and compiler-cache identity agree, and both byte
|
||||
totals differ by exactly that completion file's actual length. It never deletes
|
||||
the file or changes a failure flag to PASS. Any other difference is rejected.
|
||||
|
||||
The terminal inventory includes all experiment payload, registered external
|
||||
inputs and all six administrative supervisor files. Startup identities were
|
||||
independently bound while the run was live. The driver additionally checks real
|
||||
process quiescence before and after analysis; file existence is not a lock or
|
||||
an atomic filesystem snapshot.
|
||||
|
||||
The frozen `normal_metrics.analyze` then runs in a fresh CPU process against all
|
||||
33,920 task records and 3,920 probes. Its real exit and file bytes are recorded.
|
||||
The old frozen data are reverified in a separate integrity process. Full
|
||||
terminal inventory is read again after analysis. All new reports and their
|
||||
manifest/checksums live outside the original experiment.
|
||||
|
||||
`normal_outcome.py` checks the internally consistent fixed terminal report:
|
||||
all eight cells, the same-replicate conjunction, all controls and both H control
|
||||
source mappings. Incomplete/invalid evidence is not a scientific negative result.
|
||||
It cannot authenticate a caller's evidence flags itself; the driver must supply
|
||||
the actual verified files and process evidence.
|
||||
|
||||
Even `NORMAL-ACQUISITION-PASS` is **not usable learning** or a model candidate.
|
||||
Delayed reward, reversal and retention remain unrun and are not automatically
|
||||
authorized. No parameter, seed or endpoint is chosen using intermediate results.
|
||||
|
||||
Historical integrity checks do not rerun the five old reference trials and are
|
||||
never labeled as new numerical regression. Git stores code and selected small
|
||||
evidence, not a second copy of the bulk experiment dataset.
|
||||
Reference in New Issue
Block a user