chore: track audit-runs summary artifacts (md/csv/diff/txt/json/etc)
Snapshot of every non-log artifact under audit-runs/ from audits 003 through 058: findings.md per audit, comparison CSVs, probe diffs, schema docs, register-dump txts, lr-trace JSONL streams, the saved canary patch diffs, etc. ~284 files / ~52 MB total. Excluded (per .gitignore): probe stdout/stderr/log streams (the raw firehose), guest-memory dumps under audit-026/027/029 (4.5 GB of .bin files; *.bin pattern added to .gitignore this commit). Also adds the orphan audit-058-sub825070F0-activation directory that a subagent accidentally created at project-root instead of under xenia-rs/audit-runs/; relocated to its proper home. Purpose: cross-machine continuity. With these summaries committed, a fresh clone gives the next session the full per-audit context (findings + tables + cascade predictions) without dependence on local-only working tree. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
46
audit-runs/audit-026-mem-diff/sanity.py
Normal file
46
audit-runs/audit-026-mem-diff/sanity.py
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sanity-check the v80 captures: byte-counts, equal-dword counts, raw PC counts."""
|
||||
import struct
|
||||
import os
|
||||
|
||||
here = os.path.dirname(os.path.abspath(__file__))
|
||||
canary = open(os.path.join(here, "canary-v80.bin"), "rb").read()
|
||||
ours = open(os.path.join(here, "ours-v80.bin"), "rb").read()
|
||||
print(f"canary len: {len(canary)}")
|
||||
print(f"ours len: {len(ours)}")
|
||||
|
||||
c_nonzero = sum(1 for b in canary if b != 0)
|
||||
o_nonzero = sum(1 for b in ours if b != 0)
|
||||
print(f"canary non-zero bytes: {c_nonzero} ({c_nonzero/len(canary)*100:.2f}%)")
|
||||
print(f"ours non-zero bytes: {o_nonzero} ({o_nonzero/len(ours)*100:.2f}%)")
|
||||
|
||||
# Sliding 64KB window: byte-equal pages
|
||||
PG = 65536
|
||||
c_pgs = sum(1 for i in range(0, len(canary), PG) if any(canary[i:i+PG]))
|
||||
o_pgs = sum(1 for i in range(0, len(ours), PG) if any(ours[i:i+PG]))
|
||||
print(f"canary 64K-pages with any non-zero: {c_pgs}")
|
||||
print(f"ours 64K-pages with any non-zero: {o_pgs}")
|
||||
|
||||
# Compare per 64K page where canary has data:
|
||||
both, only_c, only_o, neither, equal = 0, 0, 0, 0, 0
|
||||
for i in range(0, len(canary), PG):
|
||||
cnz = any(canary[i:i+PG])
|
||||
onz = any(ours[i:i+PG])
|
||||
if cnz and onz:
|
||||
both += 1
|
||||
if canary[i:i+PG] == ours[i:i+PG]:
|
||||
equal += 1
|
||||
elif cnz:
|
||||
only_c += 1
|
||||
elif onz:
|
||||
only_o += 1
|
||||
else:
|
||||
neither += 1
|
||||
print(f"64K-page comparison: both_have_data={both} byte_equal_among_those={equal} canary_only={only_c} ours_only={only_o}")
|
||||
|
||||
# Count PC-range dwords on each side overall
|
||||
PC_LO, PC_HI = 0x82000000, 0x82A00000
|
||||
c_pc = sum(1 for i in range(0, len(canary), 4) if PC_LO <= struct.unpack_from(">I", canary, i)[0] < PC_HI)
|
||||
o_pc = sum(1 for i in range(0, len(ours), 4) if PC_LO <= struct.unpack_from(">I", ours, i)[0] < PC_HI)
|
||||
print(f"canary dwords in PC range: {c_pc}")
|
||||
print(f"ours dwords in PC range: {o_pc}")
|
||||
Reference in New Issue
Block a user