docs: preserve R11 evidence and prepare verified Root load point capture

This commit is contained in:
Takeshi
2026-10-15 13:19:50 +09:00
parent f135814b8b
commit d1ac5ba065
29 changed files with 82400 additions and 11 deletions
@@ -0,0 +1,13 @@
{
"archive": {
"id": "1kSecKHMC9WowsIMJKmQCgWRbt6MkZuIE",
"url": "https://drive.google.com/file/d/1kSecKHMC9WowsIMJKmQCgWRbt6MkZuIE/view?usp=drivesdk"
},
"manifest": {
"id": "1EHq6eDsWQbVuIRXTXFa6STlwjjKXbKl-",
"url": "https://drive.google.com/file/d/1EHq6eDsWQbVuIRXTXFa6STlwjjKXbKl-/view?usp=drivesdk"
},
"actual_readback_verified": true,
"archive_bytes": 65722730,
"archive_sha256": "94963ad1fd0841d7bf3c5baa5e33a3891772ef7fe70f28ccf92f6b617be47a47"
}
@@ -0,0 +1,3 @@
Archive: https://drive.google.com/file/d/1kSecKHMC9WowsIMJKmQCgWRbt6MkZuIE/view?usp=drivesdk
Manifest: https://drive.google.com/file/d/1EHq6eDsWQbVuIRXTXFa6STlwjjKXbKl-/view?usp=drivesdk
Verify bytes65722730 and SHA256 94963ad1fd0841d7bf3c5baa5e33a3891772ef7fe70f28ccf92f6b617be47a47. Extract selected paths under the manifest base; verify members and restore mode/mtime_ns. Current R11, accepted P08, sources/saves/assets retained.
@@ -0,0 +1,9 @@
{
"retired_files": 1395,
"retired_logical_bytes": 364344399,
"free_before_bytes": 423555072,
"free_after_bytes": 859770880,
"scratch_files": 0,
"current_R11_retained": true,
"formal_credit": 0
}
@@ -0,0 +1,26 @@
[
{
"id": "13U9vQ0fDYlojFBEe_jWeLHu16m7q_tZs",
"name": "p23-r10-closed-os-streams.RESTORE.md",
"bytes": "433",
"url": "https://drive.google.com/file/d/13U9vQ0fDYlojFBEe_jWeLHu16m7q_tZs/view?usp=drivesdk",
"shared": false,
"visibility": "not_shared"
},
{
"id": "1EHq6eDsWQbVuIRXTXFa6STlwjjKXbKl-",
"name": "p23-r10-closed-os-streams.manifest.json",
"bytes": "461319",
"url": "https://drive.google.com/file/d/1EHq6eDsWQbVuIRXTXFa6STlwjjKXbKl-/view?usp=drivesdk",
"shared": false,
"visibility": "not_shared"
},
{
"id": "1kSecKHMC9WowsIMJKmQCgWRbt6MkZuIE",
"name": "p23-r10-closed-os-streams.tar.gz",
"bytes": "65722730",
"url": "https://drive.google.com/file/d/1kSecKHMC9WowsIMJKmQCgWRbt6MkZuIE/view?usp=drivesdk",
"shared": false,
"visibility": "not_shared"
}
]
@@ -0,0 +1,80 @@
"""Lossless cloud preparation for eight explicitly closed diagnostic streams."""
from pathlib import Path
import datetime, hashlib, io, json, shutil, tarfile
ROOT = Path(__file__).resolve().parents[5]
BASE = ROOT / 'artifacts/original-completion-2026-10-02'
DOC = Path(__file__).resolve().parent
SCRATCH = Path('/private/tmp/the-tree-p23-r10-os-20261015')
TRIALS = ('p23-03-native-os-atomic-336a8cd-r10',)
NAME = 'p23-r10-closed-os-streams'
def sha(path):
digest = hashlib.sha256()
with Path(path).open('rb') as stream:
for block in iter(lambda: stream.read(1048576), b''):
digest.update(block)
return digest.hexdigest()
def inventory():
rows = []
for name in TRIALS:
ended = json.loads((BASE/name/'runner-ended.json').read_text())
assert not ended['cleanup_errors']
assert all(row['engine_ended'] for row in ended['cleanup'])
for label in ('os-pair', 'os-runs'):
root = BASE/name/label
assert root.is_dir() and not root.is_symlink()
for path in [root] + sorted(root.rglob('*')):
assert not path.is_symlink()
stat = path.stat()
row = dict(path=path.relative_to(BASE).as_posix(),
mode=stat.st_mode & 0o7777, mtime_ns=stat.st_mtime_ns)
if path.is_file():
row.update(type='file', bytes=stat.st_size, sha256=sha(path))
else:
assert path.is_dir()
row['type'] = 'directory'
rows.append(row)
return rows
def build():
assert shutil.disk_usage(BASE).free > 400*1024**2
SCRATCH.mkdir(exist_ok=True)
archive = SCRATCH/(NAME+'.tar.gz')
assert not archive.exists()
rows = inventory()
metadata = dict(schema='p23-closed-streams-cloud-v1', name=NAME,
base=str(BASE), roots=[f'{n}/{v}' for n in TRIALS for v in ('os-pair', 'os-runs')],
members=rows, files=sum(r['type']=='file' for r in rows),
logical_bytes=sum(r.get('bytes', 0) for r in rows),
selection='Closed rejected R10 OS streams and owned process receipts only; current R11 and accepted P08 retained',
created_at=datetime.datetime.now(datetime.timezone.utc).isoformat())
payload=(json.dumps(metadata, ensure_ascii=False, indent=2)+'\n').encode()
with tarfile.open(archive, 'w:gz', compresslevel=6, format=tarfile.PAX_FORMAT) as output:
for row in rows:
output.add(BASE/row['path'], arcname=row['path'], recursive=False)
info=tarfile.TarInfo('__P23_NATIVE_STREAM_ARCHIVE__.json')
info.size=len(payload)
output.addfile(info, io.BytesIO(payload))
with tarfile.open(archive, 'r:gz') as source:
assert len(source.getnames()) == len(rows)+1
assert source.extractfile('__P23_NATIVE_STREAM_ARCHIVE__.json').read() == payload
for row in rows:
member=source.getmember(row['path'])
if row['type']=='directory':
assert member.isdir()
continue
digest=hashlib.sha256()
with source.extractfile(member) as stream:
for block in iter(lambda: stream.read(1048576), b''):
digest.update(block)
assert member.isfile() and member.size==row['bytes'] and digest.hexdigest()==row['sha256']
assert inventory()==rows
metadata.update(archive=str(archive), archive_bytes=archive.stat().st_size,
archive_sha256=sha(archive), archive_members_verified=True)
(DOC/'MANIFEST.json').write_text(json.dumps(metadata, ensure_ascii=False, indent=2)+'\n')
print(json.dumps({k:v for k,v in metadata.items() if k!='members'}), flush=True)
if __name__=='__main__':
build()
@@ -0,0 +1,13 @@
{
"archive": {
"id": "1k-zMuWHhyyJOIbp4h_69GRTXAjcXplDF",
"url": "https://drive.google.com/file/d/1k-zMuWHhyyJOIbp4h_69GRTXAjcXplDF/view?usp=drivesdk"
},
"manifest": {
"id": "1bGPG4kKbjqBVj0wbiMW8xM600fwv6XaL",
"url": "https://drive.google.com/file/d/1bGPG4kKbjqBVj0wbiMW8xM600fwv6XaL/view?usp=drivesdk"
},
"actual_readback_verified": true,
"archive_bytes": 64489580,
"archive_sha256": "fc8e41b8fb43ac3f428b17b951741408fdcb9ac4aa5e4e259df971b95e5b9907"
}
@@ -0,0 +1,3 @@
Archive: https://drive.google.com/file/d/1k-zMuWHhyyJOIbp4h_69GRTXAjcXplDF/view?usp=drivesdk
Manifest: https://drive.google.com/file/d/1bGPG4kKbjqBVj0wbiMW8xM600fwv6XaL/view?usp=drivesdk
Verify archive bytes64489580 and SHA256 fc8e41b8fb43ac3f428b17b951741408fdcb9ac4aa5e4e259df971b95e5b9907. Extract selected paths under manifest base; verify members and restore mode/mtime_ns. R11 is failure history, no acceptance credit; no raw amendments or R12 splicing.
@@ -0,0 +1,11 @@
{
"retired_files": 2984,
"retired_logical_bytes": 388939316,
"free_before_bytes": 705490944,
"free_after_bytes": 1168535552,
"scratch_files": 0,
"immutable_R11_history_preserved": true,
"current_source_unchanged": true,
"accepted_P08_retained": true,
"formal_credit": 0
}
@@ -0,0 +1,26 @@
[
{
"id": "150W-XtmWY0qh-qnNVZC3BDzMd0Ilg3ed",
"name": "p23-r11-a-closed-native-os.RESTORE.md",
"bytes": "460",
"url": "https://drive.google.com/file/d/150W-XtmWY0qh-qnNVZC3BDzMd0Ilg3ed/view?usp=drivesdk",
"shared": false,
"visibility": "not_shared"
},
{
"id": "1bGPG4kKbjqBVj0wbiMW8xM600fwv6XaL",
"name": "p23-r11-a-closed-native-os.manifest.json",
"bytes": "995684",
"url": "https://drive.google.com/file/d/1bGPG4kKbjqBVj0wbiMW8xM600fwv6XaL/view?usp=drivesdk",
"shared": false,
"visibility": "not_shared"
},
{
"id": "1k-zMuWHhyyJOIbp4h_69GRTXAjcXplDF",
"name": "p23-r11-a-closed-native-os.tar.gz",
"bytes": "64489580",
"url": "https://drive.google.com/file/d/1k-zMuWHhyyJOIbp4h_69GRTXAjcXplDF/view?usp=drivesdk",
"shared": false,
"visibility": "not_shared"
}
]
@@ -0,0 +1,80 @@
"""Lossless cloud preparation for eight explicitly closed diagnostic streams."""
from pathlib import Path
import datetime, hashlib, io, json, shutil, tarfile
ROOT = Path(__file__).resolve().parents[5]
BASE = ROOT / 'artifacts/original-completion-2026-10-02'
DOC = Path(__file__).resolve().parent
SCRATCH = Path('/private/tmp/the-tree-p23-r11-a-20261015')
TRIALS = ('p23-03-native-os-budgetfix-49445d4-r11',)
NAME = 'p23-r11-a-closed-native-os'
def sha(path):
digest = hashlib.sha256()
with Path(path).open('rb') as stream:
for block in iter(lambda: stream.read(1048576), b''):
digest.update(block)
return digest.hexdigest()
def inventory():
rows = []
for name in TRIALS:
ended = json.loads((BASE/name/'runner-ended.json').read_text())
assert not ended['cleanup_errors']
assert all(row['engine_ended'] for row in ended['cleanup'])
for label in ('layout-A', 'os-pair/A', 'os-runs/A-writer', 'os-runs/A-reader'):
root = BASE/name/label
assert root.is_dir() and not root.is_symlink()
for path in [root] + sorted(root.rglob('*')):
assert not path.is_symlink()
stat = path.stat()
row = dict(path=path.relative_to(BASE).as_posix(),
mode=stat.st_mode & 0o7777, mtime_ns=stat.st_mtime_ns)
if path.is_file():
row.update(type='file', bytes=stat.st_size, sha256=sha(path))
else:
assert path.is_dir()
row['type'] = 'directory'
rows.append(row)
return rows
def build():
assert shutil.disk_usage(BASE).free > 512*1024**2
SCRATCH.mkdir(exist_ok=True)
archive = SCRATCH/(NAME+'.tar.gz')
assert not archive.exists()
rows = inventory()
metadata = dict(schema='p23-closed-streams-cloud-v1', name=NAME,
base=str(BASE), roots=[f'{n}/{v}' for n in TRIALS for v in ('layout-A', 'os-pair/A', 'os-runs/A-writer', 'os-runs/A-reader')],
members=rows, files=sum(r['type']=='file' for r in rows),
logical_bytes=sum(r.get('bytes', 0) for r in rows),
selection='Closed R11 A native and OS failure history; exact current source, immutable R11 history index and accepted P08 retained; no acceptance credit',
created_at=datetime.datetime.now(datetime.timezone.utc).isoformat())
payload=(json.dumps(metadata, ensure_ascii=False, indent=2)+'\n').encode()
with tarfile.open(archive, 'w:gz', compresslevel=6, format=tarfile.PAX_FORMAT) as output:
for row in rows:
output.add(BASE/row['path'], arcname=row['path'], recursive=False)
info=tarfile.TarInfo('__P23_NATIVE_STREAM_ARCHIVE__.json')
info.size=len(payload)
output.addfile(info, io.BytesIO(payload))
with tarfile.open(archive, 'r:gz') as source:
assert len(source.getnames()) == len(rows)+1
assert source.extractfile('__P23_NATIVE_STREAM_ARCHIVE__.json').read() == payload
for row in rows:
member=source.getmember(row['path'])
if row['type']=='directory':
assert member.isdir()
continue
digest=hashlib.sha256()
with source.extractfile(member) as stream:
for block in iter(lambda: stream.read(1048576), b''):
digest.update(block)
assert member.isfile() and member.size==row['bytes'] and digest.hexdigest()==row['sha256']
assert inventory()==rows
metadata.update(archive=str(archive), archive_bytes=archive.stat().st_size,
archive_sha256=sha(archive), archive_members_verified=True)
(DOC/'MANIFEST.json').write_text(json.dumps(metadata, ensure_ascii=False, indent=2)+'\n')
print(json.dumps({k:v for k,v in metadata.items() if k!='members'}), flush=True)
if __name__=='__main__':
build()
@@ -0,0 +1,13 @@
{
"archive": {
"id": "13tRNN1C1lhGJfEY9KooUwozUVC2bi3T6",
"url": "https://drive.google.com/file/d/13tRNN1C1lhGJfEY9KooUwozUVC2bi3T6/view?usp=drivesdk"
},
"manifest": {
"id": "1YkoXPDN597tffLxGPAoj_8cMzlc1E2l3",
"url": "https://drive.google.com/file/d/1YkoXPDN597tffLxGPAoj_8cMzlc1E2l3/view?usp=drivesdk"
},
"actual_readback_verified": true,
"archive_bytes": 63837114,
"archive_sha256": "17975e9c53d624e66d90c6be85841a7333475bec1a3ffe92af580e4a7d304275"
}
@@ -0,0 +1,3 @@
Archive: https://drive.google.com/file/d/13tRNN1C1lhGJfEY9KooUwozUVC2bi3T6/view?usp=drivesdk
Manifest: https://drive.google.com/file/d/1YkoXPDN597tffLxGPAoj_8cMzlc1E2l3/view?usp=drivesdk
Verify bytes63837114 and SHA256 17975e9c53d624e66d90c6be85841a7333475bec1a3ffe92af580e4a7d304275. Extract original selected paths under manifest base; verify all member hashes and preserve mode/mtime_ns. R11 is failure history, no acceptance credit or splicing.
@@ -0,0 +1,11 @@
{
"retired_files": 2301,
"retired_logical_bytes": 381506467,
"free_before_bytes": 1167638528,
"free_after_bytes": 1620664320,
"scratch_files": 0,
"immutable_R11_history_preserved": true,
"current_source_unchanged": true,
"accepted_P08_retained": true,
"formal_credit": 0
}
@@ -0,0 +1,26 @@
[
{
"id": "1HFqcyEssfS-UUrcQ1Lk2k3DwHXZ4QjVG",
"name": "p23-r11-b-closed-native-os.RESTORE.md",
"bytes": "449",
"url": "https://drive.google.com/file/d/1HFqcyEssfS-UUrcQ1Lk2k3DwHXZ4QjVG/view?usp=drivesdk",
"shared": false,
"visibility": "not_shared"
},
{
"id": "1YkoXPDN597tffLxGPAoj_8cMzlc1E2l3",
"name": "p23-r11-b-closed-native-os.manifest.json",
"bytes": "772061",
"url": "https://drive.google.com/file/d/1YkoXPDN597tffLxGPAoj_8cMzlc1E2l3/view?usp=drivesdk",
"shared": false,
"visibility": "not_shared"
},
{
"id": "13tRNN1C1lhGJfEY9KooUwozUVC2bi3T6",
"name": "p23-r11-b-closed-native-os.tar.gz",
"bytes": "63837114",
"url": "https://drive.google.com/file/d/13tRNN1C1lhGJfEY9KooUwozUVC2bi3T6/view?usp=drivesdk",
"shared": false,
"visibility": "not_shared"
}
]
@@ -0,0 +1,80 @@
"""Lossless cloud preparation for eight explicitly closed diagnostic streams."""
from pathlib import Path
import datetime, hashlib, io, json, shutil, tarfile
ROOT = Path(__file__).resolve().parents[5]
BASE = ROOT / 'artifacts/original-completion-2026-10-02'
DOC = Path(__file__).resolve().parent
SCRATCH = Path('/private/tmp/the-tree-p23-r11-b-20261015')
TRIALS = ('p23-03-native-os-budgetfix-49445d4-r11',)
NAME = 'p23-r11-b-closed-native-os'
def sha(path):
digest = hashlib.sha256()
with Path(path).open('rb') as stream:
for block in iter(lambda: stream.read(1048576), b''):
digest.update(block)
return digest.hexdigest()
def inventory():
rows = []
for name in TRIALS:
ended = json.loads((BASE/name/'runner-ended.json').read_text())
assert not ended['cleanup_errors']
assert all(row['engine_ended'] for row in ended['cleanup'])
for label in ('layout-B', 'os-pair/B', 'os-runs/B-writer', 'os-runs/B-reader'):
root = BASE/name/label
assert root.is_dir() and not root.is_symlink()
for path in [root] + sorted(root.rglob('*')):
assert not path.is_symlink()
stat = path.stat()
row = dict(path=path.relative_to(BASE).as_posix(),
mode=stat.st_mode & 0o7777, mtime_ns=stat.st_mtime_ns)
if path.is_file():
row.update(type='file', bytes=stat.st_size, sha256=sha(path))
else:
assert path.is_dir()
row['type'] = 'directory'
rows.append(row)
return rows
def build():
assert shutil.disk_usage(BASE).free > 512*1024**2
SCRATCH.mkdir(exist_ok=True)
archive = SCRATCH/(NAME+'.tar.gz')
assert not archive.exists()
rows = inventory()
metadata = dict(schema='p23-closed-streams-cloud-v1', name=NAME,
base=str(BASE), roots=[f'{n}/{v}' for n in TRIALS for v in ('layout-B', 'os-pair/B', 'os-runs/B-writer', 'os-runs/B-reader')],
members=rows, files=sum(r['type']=='file' for r in rows),
logical_bytes=sum(r.get('bytes', 0) for r in rows),
selection='Closed R11 B native and OS failure history; exact current source, immutable R11 history index and accepted P08 retained; no acceptance credit',
created_at=datetime.datetime.now(datetime.timezone.utc).isoformat())
payload=(json.dumps(metadata, ensure_ascii=False, indent=2)+'\n').encode()
with tarfile.open(archive, 'w:gz', compresslevel=6, format=tarfile.PAX_FORMAT) as output:
for row in rows:
output.add(BASE/row['path'], arcname=row['path'], recursive=False)
info=tarfile.TarInfo('__P23_NATIVE_STREAM_ARCHIVE__.json')
info.size=len(payload)
output.addfile(info, io.BytesIO(payload))
with tarfile.open(archive, 'r:gz') as source:
assert len(source.getnames()) == len(rows)+1
assert source.extractfile('__P23_NATIVE_STREAM_ARCHIVE__.json').read() == payload
for row in rows:
member=source.getmember(row['path'])
if row['type']=='directory':
assert member.isdir()
continue
digest=hashlib.sha256()
with source.extractfile(member) as stream:
for block in iter(lambda: stream.read(1048576), b''):
digest.update(block)
assert member.isfile() and member.size==row['bytes'] and digest.hexdigest()==row['sha256']
assert inventory()==rows
metadata.update(archive=str(archive), archive_bytes=archive.stat().st_size,
archive_sha256=sha(archive), archive_members_verified=True)
(DOC/'MANIFEST.json').write_text(json.dumps(metadata, ensure_ascii=False, indent=2)+'\n')
print(json.dumps({k:v for k,v in metadata.items() if k!='members'}), flush=True)
if __name__=='__main__':
build()
@@ -0,0 +1,7 @@
{
"action": "wait",
"task_id": "P23-03",
"reason": "Judgment: the metadata repair is acceptable only under the conditions below. It is Root evidence post-processing. No worker, run, repair or source change. Stay in submitted/wait until Root has the amended evidence, the frozen strict checker output, full177 and the independent review.\n\nFindings from tools/check_p23_life_observation_evidence.py:238-274. screenshot_transform loops over every click event for the target PID. For each one it requires event['point'] with viewport, screen and viewport_to_screen. It then checks two things: affine(viewport_to_screen, viewport) ≈ screen, and the window matrix [s,0,0,s,0,titlebar] applied to screen ≈ the actual coordinates. So a missing point on any click is a hard KeyError. That is correct strictness and must not be relaxed.\n\n(1) First click (menu open). Faithful and sufficient. The engine load request's top-level viewport, screen and viewport_to_screen are what this click actually targeted. Copy them verbatim into point with source='engine_request:<request path>#sha256'. Check: screen [1397,764.5] + titlebar 32 at scale 1 = [1397,796.5], which equals the actual coordinates. This is a real, independent cross-check.\n\n(2) Second click (menu item). A derived point can be added, but it proves nothing independently. If screen is set to (coordinates - [0,32])/1 and viewport is set to inverse(viewport_to_screen)(screen), the checker's two close() checks pass by construction. Requirements:\n(a) Label it explicitly: point_provenance='derived:screenshot_to_content_inverse_of_independent_calibration'. Record the formula, the matrix, the viewport_to_screen source and engine_measured=false.\n(b) Do not describe it as a measured menu target, and do not count it toward independent calibration evidence.\n(c) Show the menu-item selection is correct from the actual facts instead: the preserved before/menu/after raw screenshots (the menu screenshot shows the item at [1300,771]), the raw actual_calls args for both call IDs, and the observer's later successful load status for the distinct PID.\n(d) The reviewer must confirm independent matches still exist without the derived point: the first click plus all the other engine-request clicks.\n\n(3) Required file method (keeps the spec's \"no raw receipt relabel\" rule).\n- Never overwrite or rename the original receipt, index or binding files. Keep them byte-identical and record their SHA-256 in an amendment manifest.\n- Write new derived files, e.g. reader-request-0001.cua-receipt.amended-1.json, plus a derived index/binding. The only difference from the original is the added point objects. Record a deterministic, field-level diff (JSON pointer list) showing nothing else changed: ACK, request, observed, timestamps, call IDs, args, events order, coordinates, calibration and raw image bytes all stay the same. Record full before/after SHA-256 for every amended file, plus the generator script path, its SHA and the exact argv.\n- The script must be pure and re-runnable, giving the same bytes from the originals. Keep it out of the frozen source tree, or record it as Root tooling. It is not a product change.\n- Update screenshot receipt-SHA bindings to the amended receipt SHAs and keep the original-SHA chain alongside.\n- Covers A PID78040 (call_8bbc0836…, call_73bfe7dc…) and B PID83980 (call_09143b9c…, call_db4b58e8…) only. No other receipts are touched.\n\n(4) Then:\n- Run the unchanged frozen strict checker at 49445d4 against the amended index. Record the full output whether it passes or fails. If it fails beyond this KeyError, report that and do not patch further ad hoc.\n- If the checker or required logic would need a provenance-aware change, that is a source change to an allowed path. It needs a new candidate plus a repair decision by Root/Opus and must not be slipped in here.\n- Then mandatory full177 regression on the exact frozen candidate, then an independent Opus all-condition review covering original and amended evidence and the amendment manifest. Then the ordinary Runner gates. The original R16 proof-method/review sequence, 7 conditions, 6 categories, 30/88 denominator and all-click geometry requirement all stay unchanged.\n\n(5) Alternative if the reviewer rejects the derived second-click point: a fresh Root OS run where the observer records point for both clicks. That needs an owner/Runner decision and is not authorized here.",
"codex_model": "gpt-6.1-sol",
"codex_model_reason": "No Codex worker run is requested or warranted. This is a wait decision about Root evidence post-processing, so the default model is kept. Astra's extra cost and time are not justified, and choosing a model does not authorize a run."
}
@@ -0,0 +1,7 @@
{
"action": "validate",
"task_id": "P23-03",
"reason": "My previous file method was wrong, and I'm withdrawing it. I checked tools/check_p23_life_observation_evidence.py:1424-1493 and your finding is right. inspect_os_requests reads ack['input_receipt'] directly (1444, 1486), binds its SHA (1471, 1493) and pins conversion png_path to the original absolute sips output (1478, with argv equality at 201). A derived index or binding cannot redirect those reads. A copied directory breaks the absolute conversion binding.\n\nDecision: (C). Do a fresh Root native/OS replay on the unchanged 49445d4, then the normal validation chain.\n\nWhy not (A): an overlay reader that maps the original metadata paths to sidecar bytes changes what the checker reads without changing its code. That is a provenance-aware logic change made through a side channel, which is exactly what my prior condition forbids. It is equivalent to a hidden monkeypatch, so I reject it.\n\nWhy not (B): it is legitimate but a worse value. It needs a same-task Codex repair (repair 22), a new candidate SHA and a new source map. The applicability-reuse argument must then show that the executed Godot code, settings and input are byte-identical. On top of that, full177 and the independent review must run again on the new candidate. That means more time, usage and review risk than C, and the core R11 evidence would still depend on a derived second point.\n\nWhy C: it costs about 20 minutes hands-on plus new proof disk. No source, spec or acceptance change is involved, and no full177 has been spent yet. It produces evidence whose point field exists at creation, so the unchanged strict checker consumes it through its public API. No relabel or overlay is needed.\n\nExact direction for Root:\n1. Preserve R11 untouched as failure history: all 4 normal-OS roles exit 0 / cleanup 0, all 4 semantic streams PASS, the strict-checker KeyError output, and the raw 2-call records, menu images and load status. Record their SHA-256 values in a history manifest. Do not splice R11 into the new run.\n2. Start a fresh, complete normal-OS run for both layouts A and B, all roles, on exact 49445d4. Use the same engine, settings, environment, seed and guarded profiles, the full collector request/ACK lifecycle, full CUA call IDs, args, screenshots and calibration from the start, and a distinct-PID formal load.\n3. Point schema at creation, for every click event:\n - Load first click (menu open): copy point.viewport, screen and viewport_to_screen verbatim from the engine load request. Set source='engine_request:<path>#sha256'.\n - Load second click (menu item): write point at capture time with point_provenance='derived:screenshot_to_content_inverse_of_independent_calibration', engine_measured=false, the formula and matrix, and the viewport_to_screen source. Do not claim measured menu geometry.\n - Record a calibration summary that counts the independent matches (the first click plus the other engine-request clicks) and excludes the derived point.\n - Keep the before/menu/after raw screenshots and the raw actual_calls args for both call IDs, and show successful load status for the distinct PID.\n4. Use the existing owned-process and audio teardown gates. Check engine end, cleanup and protection on every run.\n5. Run the unchanged frozen strict checker on the new index and record its full output.\n - If it passes, run the mandatory full177 on exact 49445d4. Then run the independent Opus all-condition review, which must confirm the derived second point is not counted as independent and that independent matches remain. Then the ordinary Runner gates.\n - If it fails for any other reason, stop and report the failing evidence. Do not patch ad hoc. Any checker logic change would go through (B) as an ordinary repair decision.\n\nUnchanged: the 7 conditions, 6 categories, the 30/88 denominator, the all-click geometry requirement, scope, permissions and billing.",
"codex_model": "gpt-6.1-sol",
"codex_model_reason": "No Codex worker run is involved. This continuation is a Root native/OS replay on the unchanged 49445d4 plus the standard validation chain, with no source repair. I'm keeping the default gpt-6.1-sol. Astra's extra quality, time and usage are not justified because there is no implementation work, and choosing a model does not authorize a run."
}
@@ -0,0 +1,43 @@
{
"scope": "Root serialization preflight only, no gameplay or acceptance credit",
"checker_sha256": "927f8f63eef7d55c4a9f96783e7240adb05ad236c9252dd8b9e27e9beb996683",
"results": [
{
"layout": "A",
"original_sha256": "cf434518c60d7834bc2f6ee50eb4e74d309e8a731207c5a80da1c5b3abbfe3de",
"missing_point_reproduced": true,
"serialization_compatible": true,
"wrong_independent_point_rejected": true,
"independent_clicks": 1,
"derived_clicks_excluded_from_independence": 1,
"matrix": [
1,
0,
0,
1,
0,
32
],
"original_bytes_unchanged": true
},
{
"layout": "B",
"original_sha256": "0f5fdbdf80f397a06c588e3985bd0e816774bbe6ec2234a09e96e9308bacb9f5",
"missing_point_reproduced": true,
"serialization_compatible": true,
"wrong_independent_point_rejected": true,
"independent_clicks": 1,
"derived_clicks_excluded_from_independence": 1,
"matrix": [
1,
0,
0,
1,
0,
32
],
"original_bytes_unchanged": true
}
],
"formal_credit": 0
}
@@ -11,7 +11,7 @@
"worker_source_clean": true,
"scope": "diagnostic setup costs from existing construction definitions, candidate signing_cost and effective/base RAW_FOOD quote; checker static preflight and meaningful missing-spend negatives. No product values changed.",
"native_os_evidence": "artifacts/original-completion-2026-10-02/p23-03-native-os-budgetfix-49445d4-r11",
"evidence_state": "collection running, not accepted",
"evidence_state": "R11 rejected for Root load point metadata; immutable originals/history archived. Actual Opus-directed R12 running on identical source with point schema at creation and frozen-checker pre-ACK gate.",
"formal_credit": 0,
"remaining": [
"complete A/B native/normalOS/formal distinctPID resume and strict semantic/provenance/mechanical checks",
@@ -22,5 +22,30 @@
"tests/fixtures/p23-03/observation.gd": "a9a0e611f1262151549ff033eae618436e52f661d52decbab5adb93efc4dcdf5",
"tools/check_p23_life_observation_evidence.py": "927f8f63eef7d55c4a9f96783e7240adb05ad236c9252dd8b9e27e9beb996683",
"tools/test_p23_life_observation_evidence.py": "721b187b86d45da7fd1d1815d466f6f34c1b941e7ffc9585fbffb5e7e1dc6eef"
}
},
"normal_os_actual_pids": {
"A_writer": 74506,
"A_reader": 78040,
"B_writer": 79195,
"B_reader": 83980
},
"actual_input_requests": {
"A_writer": 35,
"A_reader": 5,
"B_writer": 39,
"B_reader": 5
},
"setup_budget": {
"gold": 7610,
"materials": 82,
"construction_gold": 6460,
"signing_gold": 1030,
"raw_food_gold": 120,
"actual_A_B_budget_equal": true,
"failed_setup_commands_A": 0,
"failed_setup_commands_B": 0
},
"semantic_stream_recomputations": "A writer, A reader, B writer, B reader PASS",
"latest_evidence": "artifacts/original-completion-2026-10-02/p23-03-native-os-pointfix-49445d4-r12",
"R11_no_splice": true
}
@@ -0,0 +1,69 @@
"""Verify real load receipt point schema with frozen checker before atomic ACK."""
import hashlib
import importlib.util
import json
import os
from pathlib import Path
import sys
import time
sys.dont_write_bytecode = True
ROOT = Path(__file__).resolve().parents[5]
SOURCE = Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p23-03-code/P23-03-implement')
PROOF = ROOT / 'artifacts/original-completion-2026-10-02/p23-03-native-os-pointfix-49445d4-r12'
def sha(path):
return hashlib.sha256(path.read_bytes()).hexdigest()
def main():
assert len(sys.argv) == 2 and sys.argv[1] in ('A', 'B')
layout = sys.argv[1]
folder = PROOF / 'os-pair' / layout / 'reader-request-0001'
assert not (folder / 'ack.json').exists()
request = json.loads((folder / 'request.json').read_bytes())
receipt = json.loads((folder / 'cua-receipt.json').read_bytes())
started = json.loads((PROOF / 'os-runs' / (layout + '-reader') / 'process-started.json').read_bytes())
assert request['target_pid'] == receipt['target_pid'] == started['actual_pid']
assert request['action'] == 'load_menu' and request['sequence'] == 1
assert receipt['request_sha256'] == sha(folder / 'request.json')
assert len(receipt['actual_calls']) == 2 and len(receipt['events']) == 2
first, second = [event['point'] for event in receipt['events']]
assert all(first[key] == request[key] for key in ('viewport', 'screen', 'viewport_to_screen'))
assert first['engine_measured'] is True and first['point_provenance'] == 'engine_request'
assert second['engine_measured'] is False and second['independently_calibrating'] is False
assert second['point_provenance'] == 'derived:screenshot_to_content_inverse_of_independent_calibration'
summary = receipt['calibration_summary']
assert summary['independent_click_events'] == 1 and summary['derived_click_events'] == 1
assert summary['derived_events_excluded_from_independent_count'] is True
path = SOURCE / 'tools/check_p23_life_observation_evidence.py'
spec = importlib.util.spec_from_file_location('frozen_49445d4_checker', path)
checker = importlib.util.module_from_spec(spec)
spec.loader.exec_module(checker)
_, width, height = checker.image_kind((folder / 'screen-before.png').read_bytes())
matrix = checker.screenshot_transform(receipt['calibration'], request, (width, height), [receipt])
for shot in receipt['screenshots']:
assert sha(PROOF / shot['path']) == shot['raw_sha256']
assert shot['tool_call_id'] in {call['call_id'] for call in receipt['actual_calls']}
assert request['requested_unix_ns'] <= receipt['timestamp_ns'] <= time.time_ns()
result = dict(scope='Root serialization gate only; not game acceptance', passed=True,
target_pid=request['target_pid'], checker_sha256=sha(path),
receipt_sha256=sha(folder / 'cua-receipt.json'), request_sha256=sha(folder / 'request.json'),
independent_click_events=1, derived_events_excluded_from_independent_count=1,
matrix=matrix, actual_call_ids=[call['call_id'] for call in receipt['actual_calls']],
generator_sha256=sha(Path(__file__)), argv=[sys.executable, str(Path(__file__).resolve()), layout])
with (folder / 'root-point-schema-check.json').open('x') as stream:
json.dump(result, stream, indent=2)
stream.write('\n')
ack = dict(target_pid=request['target_pid'], sequence=1,
request_sha256=sha(folder / 'request.json'),
input_receipt='os-pair/' + layout + '/reader-request-0001/cua-receipt.json',
timestamp_ns=time.time_ns())
pending = folder / '.ack.schema-checked.pending.json'
with pending.open('x') as stream:
json.dump(ack, stream)
stream.write('\n')
os.replace(pending, folder / 'ack.json')
print(json.dumps(dict(result, atomic_ack_published=True)))
if __name__ == '__main__':
main()
File diff suppressed because one or more lines are too long
@@ -0,0 +1,82 @@
"""Root-only point serialization preflight. Does not amend original evidence."""
import copy
import hashlib
import importlib.util
import json
from pathlib import Path
import sys
sys.dont_write_bytecode = True
ROOT = Path(__file__).resolve().parents[5]
SOURCE = Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p23-03-code/P23-03-implement')
PROOF = ROOT / 'artifacts/original-completion-2026-10-02/p23-03-native-os-budgetfix-49445d4-r11'
def points(request, calibration, coordinates, request_path, request_sha):
transform = request['viewport_to_screen']
first = {key: copy.deepcopy(request[key]) for key in ('viewport', 'screen', 'viewport_to_screen')}
first.update(source='engine_request:' + str(request_path) + '#sha256=' + request_sha,
point_provenance='engine_request', engine_measured=True)
scale, title = calibration['backing_scale'], calibration['titlebar_pixels']
screen = [coordinates[0] / scale, (coordinates[1] - title) / scale]
a, b, c, d, tx, ty = transform
determinant = a * d - b * c
assert determinant != 0
x, y = screen[0] - tx, screen[1] - ty
viewport = [(d*x - c*y) / determinant, (-b*x + a*y) / determinant]
second = dict(viewport=viewport, screen=screen, viewport_to_screen=copy.deepcopy(transform),
point_provenance='derived:screenshot_to_content_inverse_of_independent_calibration',
engine_measured=False, independently_calibrating=False,
formula='screen=(native_xy-[0,titlebar])/backing_scale; viewport=inverse(engine_viewport_to_screen)(screen)',
screenshot_matrix=[scale, 0, 0, scale, 0, title],
viewport_to_screen_source='engine_request:' + str(request_path) + '#sha256=' + request_sha)
return first, second
def preflight():
path = SOURCE / 'tools/check_p23_life_observation_evidence.py'
spec = importlib.util.spec_from_file_location('frozen_49445d4_checker', path)
checker = importlib.util.module_from_spec(spec)
spec.loader.exec_module(checker)
results = []
for layout in ('A', 'B'):
folder = PROOF / 'os-pair' / layout / 'reader-request-0001'
request_path = folder / 'request.json'
request_bytes = request_path.read_bytes()
request = json.loads(request_bytes)
original_path = folder / 'cua-receipt.json'
original_bytes = original_path.read_bytes()
original = json.loads(original_bytes)
calibration = original['calibration']
try:
checker.screenshot_transform(calibration, request, calibration['screenshot_pixels'], [original])
except KeyError as error:
assert error.args == ('point',)
else:
raise AssertionError('original missing-point regression not reproduced')
derived = copy.deepcopy(original)
first, second = points(request, calibration, original['events'][1]['coordinates'], request_path,
hashlib.sha256(request_bytes).hexdigest())
derived['events'][0]['point'] = first
derived['events'][1]['point'] = second
matrix = checker.screenshot_transform(calibration, request, calibration['screenshot_pixels'], [derived])
wrong = copy.deepcopy(derived)
wrong['events'][0]['point']['screen'][0] += 1
try:
checker.screenshot_transform(calibration, request, calibration['screenshot_pixels'], [wrong])
except ValueError:
pass
else:
raise AssertionError('wrong independent point accepted')
assert original_path.read_bytes() == original_bytes and request_path.read_bytes() == request_bytes
results.append(dict(layout=layout, original_sha256=hashlib.sha256(original_bytes).hexdigest(),
missing_point_reproduced=True, serialization_compatible=True,
wrong_independent_point_rejected=True, independent_clicks=1,
derived_clicks_excluded_from_independence=1, matrix=matrix,
original_bytes_unchanged=True))
output = dict(scope='Root serialization preflight only, no gameplay or acceptance credit',
checker_sha256=hashlib.sha256(path.read_bytes()).hexdigest(), results=results, formal_credit=0)
destination = Path(__file__).with_name('ROOT_LOAD_POINT_SCHEMA_PREFLIGHT.json')
destination.write_text(json.dumps(output, indent=2) + '\n')
print(json.dumps(output))
if __name__ == '__main__':
preflight()