62 lines
3.3 KiB
Markdown
62 lines
3.3 KiB
Markdown
# 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.
|