Preserve complete P08 OS proof and resume exact validator reuse with measured image context

This commit is contained in:
Takeshi
2026-10-14 09:25:08 +09:00
parent 2a67ecbb90
commit 96006c60eb
12 changed files with 1236 additions and 7 deletions
@@ -141,5 +141,14 @@ if adapter_path:
adapter_spec.loader.exec_module(adapter_module)
adapter_module.install(Runner)
p08_read_adapter = os.environ.get("OWNER_P08_R09_PROOF_READER_ADAPTER")
if p08_read_adapter:
import importlib.util
import runner.core as p08_core
adapter_spec = importlib.util.spec_from_file_location("owner_p08_r09_proof_read_scope", p08_read_adapter)
adapter_module = importlib.util.module_from_spec(adapter_spec)
adapter_spec.loader.exec_module(adapter_module)
adapter_module.install(p08_core)
from runner.cli import main
main()
@@ -0,0 +1,7 @@
{
"action": "request-repair",
"task_id": "P08-03",
"reason": "Repair12 stopped on two context gaps: no recorded before/after screenshot dimensions, and the original R09 root could not be read. Both are now resolved by Root-supplied inputs. Continue the same bounded repair. Edit only tools/check_p08_normal_placement_evidence.py, tools/test_p08_normal_placement_evidence.py, and scoped docs under docs/plans/original-completion-2026-10-02/execution/p08-03/** (CONDITION_MATRIX.md, implementation.json, a repair note).\n\nInputs to read and pin:\n(1) ROOT_R09_READONLY_IMAGE_DIMENSIONS.json. This is an honest read-only sips measurement taken after collection. It covers the 138 immutable originals, 1280x752 each, and binds to original_index_sha256 68c29eb3… and per-image source_sha256. Treat it as an attributable post-collection measurement record, not as capture-time metadata. Do not invent pre-capture dimensions and do not use request window_size (1280x720) as a substitute.\n(2) ROOT_NATIVE_R09_COLLECTION_PINS.json, for the index, runner-input, runner-ended and writer/reader ended receipt paths, bytes, SHA, PIDs 80337/92565, and the 64/5 request counts.\n(3) The original R09 root, now readable task-only. Verify index SHA, then establish original/canonical byte equality instead of assuming it.\n\nChecker requirements:\n- For every one of the 138 screenshots, the checker independently parses the JPEG (SOI/SOF/EOI, a valid SOF marker, nonzero dimensions, magic consistent with the record despite the .png name).\n- The image bytes must hash to the pinned source_sha256 and to the R09 index entry.\n- The SOF width/height must equal the measurement record's values.\n- Before and after dimensions must be equal per request.\n- The record's index SHA must equal the pinned original index SHA.\n- The complete file set must be enforced, not just indexed members.\n- Keep the original absolute varbytes pin, the ORIGINAL_ROOT/os-runs/{writer,reader}/teardown/control.json control paths, and the os-runs/*/ended.json receipt names.\n\nRequired negatives in the test (fixtures under tests/fixtures/p08-03 only if needed; none in mutable Root docs):\n- tampered image byte or SHA mismatch vs record/index\n- record dimension drift vs SOF\n- before/after dimension mismatch\n- truncated JPEG, missing SOF, or bad magic\n- an image missing from or extra to the 138\n- a record bound to the wrong index SHA\n- window_size substituted for dimensions\n- a stale/foreign source or input SHA\n- a non-original root, or broken original/canonical equality\n- a wrong PID or request count vs the pins\n\nReuse chain: write it out explicitly in the docs. Previous candidate 31aa7706 → R09 index 68c29eb3 → runner-input ce680cac → runner-ended 23a7602f → writer receipt 645821cc and reader receipt 9dfb8c1d → measurement record. Reuse applies only where the actual source, input, config and engine SHAs match; anything else is marked not reusable.\n\nProhibitions: no edits to product, fixture, controller, spec, marker, input or engine files; no replay of the 69 inputs; no Godot/native/full regression, no git or Runner operations; original raw files stay untouched. Worker runs Python syntax and checker tests only and records actual results.\n\nState honestly as open: independent stair semantics acceptance, preview/domain-status disagreement, Windows same-distribution, Root final175/full regression and R09 re-check, separate Opus review, integration. Return genuine submitted when done; required Root collection is not grounds to block.",
"codex_model": "gpt-6-astra",
"codex_model_reason": "This is the 13th repair of the same Astra session; keeping the same model preserves continuity with the existing repair context. The remaining work is small (two Python files plus docs) but has many interlocking invariants:\n- independent JPEG SOF parsing\n- binding to the index and record SHAs\n- original/canonical byte equality over 753 files\n- a complete file-set gate\n- the varbytes/control-path pins\n- an explicit SHA reuse chain\n- around 10 semantic negatives\n\nEarlier stops show that getting the evidence semantics wrong (for example, self-consistent SOF comparison or window_size substitution) costs another full Root cycle. Astra's extra cost is small next to the Root final175 and review time a wrong result would waste. Sol is adequate for pure syntax, but the risk here is weak binding semantics, not code volume."
}
@@ -0,0 +1,7 @@
{
"action": "run",
"task_id": "P08-03",
"reason": "Repair13 is ready, and the context gap recorded in Repair12 is now closed. ROOT_R09_READONLY_IMAGE_DIMENSIONS.json gives a read-only sips measurement taken after collection for all 138 R09 screenshots (69 requests: reader 0001-0005 and writer 0001-0064, before and after). Each entry has its file path, source_sha256, width 1280, height 752, format_by_magic JPEG, and the original_index_sha256 pin 68c29eb3…. ROOT_NATIVE_R09_COLLECTION_PINS.json is also supplied, and the original folder is now readable for this P08 runtime only. The task is to run the same Astra worker in the same worktree on the checker/test-only plan carried over from Repair12, with no other scope.\n\n(1) tools/check_p08_normal_placement_evidence.py --verify-only: for every image it must read the bytes, check the SOI/EOI magic and parse the JPEG SOF0/SOF2 dimensions with its own code. It must then match each image's recomputed SHA256 and SOF dimensions against the Root dimensions file and the R09 index, and check that the dimensions file's original_index_sha256 equals the recomputed index hash. Window size (1280x720) must never be used in place of screenshot dimensions. It must also check original/canonical byte equality against the supplied collection pins, keep the original absolute varbytes pin, keep ORIGINAL_ROOT/os-runs/{writer,reader}/teardown/control.json, and keep the exact reuse chain (same31aa source/input/engine SHA).\n\n(2) tools/test_p08_normal_placement_evidence.py: add meaningful negatives using fixtures under tests/fixtures/p08-03. They must cover truncated or non-JPEG magic, an SOF dimension mismatch, a before/after dimension drift, a missing or extra image entry, a source_sha256 mismatch, a stale index pin, and original/canonical byte divergence. Every existing negative must be kept.\n\n(3) Update CONDITION_MATRIX.md and implementation.json with the final executed SHAs and honest status.\n\nHard limits: the dimension file is post-collection Root measurement, not capture-time metadata, and must not be presented as such. Do not invent records or replay the 69 OS steps. The same31aa bytes and rawR09 must stay untouched. No product, runtime or Godot changes, no native or full runs, and no writable, security or auth expansion. Worker runs local Python only. Leave these open: the stair preview/domain-status disagreement (for independent acceptance), Windows same-distribution, Root final175 after a frozen submission, the R09 re-check, independent Opus review, and integration.",
"codex_model": "gpt-6-astra",
"codex_model_reason": "The owner asked for the same Astra worker and worktree. The work keeps hand-written JPEG SOF parsing correct across baseline and progressive markers with no Pillow available. It joins three hash-pinned sources (index, Root dimensions file, collection pins) to original/canonical byte equality, and it must add tightly targeted corruption negatives without breaking the 13-repair reuse chain. A slip in any of these would trigger another repair cycle. That precise cross-artifact consistency work justifies Astra over the default gpt-6.1-sol, and reusing the existing Astra context also reduces re-discovery time and usage."
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,7 @@
{
"action": "run",
"task_id": "P08-03",
"reason": "Runner state is repair_ready and Repair12 is registered, so the next step is run. It goes to the SAME Codex worker in the same worktree (P08-03-implement), on top of submitted 31aa770. The R09 diagnosis is still in force: the original raw collection is unmodified, the writer (80337) and reader (92565) both exited 0, and the 138 actual CUA screenshots are JPEG even though they are named .png. Scope is validator-only, limited to tools/check_p08_normal_placement_evidence.py and tools/test_p08_normal_placement_evidence.py plus scoped docs under execution/p08-03/**. Required changes: (1) Derive the teardown path from the actual records as ORIGINAL_ROOT/os-runs/{writer,reader}/teardown, not os-pair/role/teardown, and guard against mismatches. (2) Bind every proof byte and file set listed in the actual index.json to its recomputed SHA. Leave unindexed source-stage preservation under the existing native guard receipts. Do not invent index entries or demand original SHAs that don't exist. (3) Resolve the canonical-copy versus original absolute-path pin with a verified original/canonical mapping. Do not relax the pin. (4) Replace the PNG-only gate with a gate that checks the real format. A JPEG must pass a strong validity check: SOI/EOI, a well-formed marker/segment structure, SOF-derived dimensions that match the recorded before/after dimensions, and a raw SHA binding. If a decoder is already available, use it; otherwise use a strict structural parse. Do not install dependencies or change security settings. Never accept a file on extension or magic bytes alone. Add negatives for malformed/truncated entropy data, dimension drift, SHA drift, wrong teardown path, and invented or missing index entries. Prove that source, fixtures, controller, recorder, marker contract, spec, inputs, and engine are unchanged. Keep originalR09 verbatim: no replay of the 69 OS requests and no byte modification or re-encoding. The preview/domain-status disagreement stays an open item for independent acceptance judgment. No product change, and do not claim that tests are sufficient. The worker runs Python only: no Godot, native, or full regression. Root's final full175, Root's re-check of the R09 collection, independent Opus review and integration are all still required. Windows same-distribution stays open.",
"codex_model": "gpt-6-astra",
"codex_model_reason": "Astra is chosen for difficulty, not scope. This is repair 13 on the same evidence checker, and Sol-class runs have not converged on the validator semantics so far. The remaining work is subtle in four ways. First, a strict JPEG validity check that rejects malformed entropy data must be built without new dependencies, possibly as a careful pure-Python marker/segment and SOF parse plus a decode check. Second, exact index-set binding must neither invent nor drop entries. Third, the teardown path and the original-versus-canonical absolute-path mapping must be derived from the actual records. Fourth, the negative tests must be meaningful rather than all-boolean. A mistake in any of these means another full Root native/OS re-check and review cycle, which costs far more than Astra's extra usage on a Python-only, two-file change. Quality and correctness matter more here than worker time."
}
@@ -0,0 +1,124 @@
{
"unit": "P08-03",
"native_candidate": "31aa7706d28a92e313c432d5a62e35d19503dcc3",
"original_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09",
"index": {
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/index.json",
"bytes": 301212,
"sha256": "68c29eb3d333ad0b6fb11664d8b0d18e326449da8b0dcca201343477744947fe"
},
"runner_input": {
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/runner-input.json",
"bytes": 316087,
"sha256": "ce680cac09e66c6758c7cc4901e154a67ec31e8df217db7c90cd53dd7e6afde9"
},
"runner_ended": {
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/runner-ended.json",
"bytes": 3196,
"sha256": "23a7602f293d7efb4c665a6d7456bb730c03bfa665ce93ac2a5d3427d4829cd2"
},
"OS": {
"writer": {
"receipt": {
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/os-runs/writer/ended.json",
"bytes": 1329615,
"sha256": "645821cca51868f84b93ce09735196fdb65b5f3add310e4695db036ba8b26e6a"
},
"actual_pid": 80337,
"passed": true,
"engine_ended": true,
"exit_code": 0,
"error": null,
"guard_errors": [],
"cleanup_errors": []
},
"reader": {
"receipt": {
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/os-runs/reader/ended.json",
"bytes": 1328376,
"sha256": "9dfb8c1d2f2930f6e48bce55146f0f02956cd7596c88f688442dc6d6ea5c0428"
},
"actual_pid": 92565,
"passed": true,
"engine_ended": true,
"exit_code": 0,
"error": null,
"guard_errors": [],
"cleanup_errors": []
}
},
"requests": {
"writer": 64,
"reader": 5
},
"actual_camera_cell": [
-8,
0,
0
],
"actual_selection": {
"entity_id": "facility_00000004",
"occupant_id": "facility_00000004",
"required": true
},
"camera_dispatch": {
"bounds": {
"max_x": 12,
"max_y": 6,
"min_x": -12,
"min_y": 0
},
"cell_dimensions": [
16.0,
24.0
],
"entity_id_before": "facility_00000001",
"local": [
546.5,
515.5
],
"map_position": [
475.0,
360.0
],
"occupant_id_before": "facility_00000004",
"pan": [
0.28118896484375,
109.441101074219
],
"screen": [
625.5,
580.5
],
"screen_transform": [
1.0,
0.0,
0.0,
1.0,
79.0,
65.0
],
"viewport": [
625.5,
580.5
],
"viewport_transform": [
1.0,
0.0,
0.0,
1.0,
79.0,
65.0
],
"world_cell": [
-8,
0,
0
],
"zoom": 0.5
},
"strict_registered_validation": "failed on mirrored absolute proof path; direct original check then failed PNG-only screenshot gate for actual JPEG",
"full_regression_final_candidate": "pending",
"independent_review": "pending",
"formal_acceptance": false
}
@@ -0,0 +1,31 @@
{
"candidate": "31aa7706d28a92e313c432d5a62e35d19503dcc3",
"native_collection": "R09 import/parse/handler writer/reader and actual OS writer80337(64 requests)/reader92565(5 requests) all exit0, all owned ended, guards/cleanup0",
"canonical_copy_error": "ordinary_gate absolute varbytes pin path expects original directory, not cloned build directory. checker.check(W,originalA) passes this gate",
"original_check_next_error": "missing OS screenshot; actual CUA getScreenshot bytes are JPEG although Root named them .png, PNG-only gate rejects",
"screenshot_formats": {
"JPEG": 138
},
"screenshots": 138,
"examples": [
{
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/os-pair/writer-request-0058/screen-after.png",
"bytes": 169431,
"signature": "JPEG",
"first16": "ffd8ffe000104a464946000101000048",
"sha256": "a13d0a1f5c8420700edbec576be93eceab1a7ea6be82802aa2d42365d17026f4"
},
{
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/os-pair/writer-request-0058/screen-before.png",
"bytes": 167891,
"signature": "JPEG",
"first16": "ffd8ffe000104a464946000101000048",
"sha256": "ce8959eaad1dc24de5f2d8e89ca77afc7286120647603dbdaa78525e91f07e44"
}
],
"original_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09",
"canonical_root": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/p08-normal-placement-evidence",
"original_raw_not_modified": true,
"formal_acceptance": false,
"required_decision": "Safely satisfy strict image proof and provenance with original raw bytes retained; assess content-preserving re-encoding and verified original/canonical path mapping without redoing actual OS steps or relabeling failed validators; no relaxed image/provenance/whole-model or independence criteria."
}
@@ -0,0 +1,9 @@
{
"scope": "only already-authorized R09 game artifact read in exact P08 runtime/checkout family",
"original_index_sha256": "68c29eb3d333ad0b6fb11664d8b0d18e326449da8b0dcca201343477744947fe",
"actual_original_index_read": "pass",
"actual_original_index_write_open": "denied; no byte write attempted",
"other_task_policy": "byte-identical to base",
"write_auth_common_denies": "base lines unchanged",
"adapter_sha256": "a1fe1154e6a0d84f73df3e9af0dbc5652e76bc7d0a83f788edd40f9011f8e915"
}
@@ -0,0 +1,976 @@
{
"scope": "post-collection read-only measurement of immutable R09 images; not invented capture-time metadata",
"original_index_sha256": "68c29eb3d333ad0b6fb11664d8b0d18e326449da8b0dcca201343477744947fe",
"measurement_tool": "/usr/bin/sips -g pixelWidth -g pixelHeight",
"tool_stdout_sha256": "03126a9cb750316569fededbc1b7b758806c1e603ba9e7cf3ce67c9cc413211c",
"images": [
{
"file": "os-pair/reader-request-0001/screen-after.png",
"source_sha256": "b54b6f7fa5ee014698ecaa2d5df50e3dfd28f404474d1d722dd09d08fec1636e",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/reader-request-0001/screen-before.png",
"source_sha256": "de219c703de4dfb8e44b1ce4b5c2f26df059931067e00a55b8fc15db53d1d7f9",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/reader-request-0002/screen-after.png",
"source_sha256": "cde7dfdf26c1b08a302441420c7175d08e73854fa17f4d7007403d68f25238fd",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/reader-request-0002/screen-before.png",
"source_sha256": "8d9fd9fe1408162c2032530e5d7e14931a0ab0f4a0a7b9c2afc8e71adb4dce74",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/reader-request-0003/screen-after.png",
"source_sha256": "61f9116fb3ba373de996fd8674da62fce781e4670e5a849ecd51b03309dfec52",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/reader-request-0003/screen-before.png",
"source_sha256": "8c338125bee670059af829b8208831bececf883afbd0cd20a3799d575ca2003f",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/reader-request-0004/screen-after.png",
"source_sha256": "eb97a85ccf570690d0f83f8f6a3a2fea2c5ae7b9af45f6d7433732480a93f2de",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/reader-request-0004/screen-before.png",
"source_sha256": "e39330e00bf85082cef937af1b42cfb7f1ee9ea6ca59ad27310ba2b5ba78cd14",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/reader-request-0005/screen-after.png",
"source_sha256": "8cac36016a2309451269b62b5f8ccc923b6818205260a9dc1c44d09dd8a7d86d",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/reader-request-0005/screen-before.png",
"source_sha256": "5c71fd681ed7b41350f431ed486e32e6df6c6a833a0c9c2d7d3506906eb0c4c1",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0001/screen-after.png",
"source_sha256": "685d672ff0349c317f0e6257512e25c1ce547606ec3d4d331970ae0c1d0ff7d8",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0001/screen-before.png",
"source_sha256": "7378e03e85dd92629883988fbe6420142a2012f4485f023231f3148697ea49b8",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0002/screen-after.png",
"source_sha256": "ef680cf46d904ba830115e833e332221bf6333995b013aa5157df0de92a49220",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0002/screen-before.png",
"source_sha256": "68f63798582a7404fe024afd8ddcc5680ac32d8efeefbb587f5e0be79091c43c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0003/screen-after.png",
"source_sha256": "806c43c47b4da5a19a41ecfb70014120f0fab9cca98c8641ab3f3c791e4e7321",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0003/screen-before.png",
"source_sha256": "91ddeee45a12b1e5c60630cc0bb5e3c9a2cb73b667c782c53d86b4540867ce48",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0004/screen-after.png",
"source_sha256": "c44d0b0d9540e54db5cb507cce9a160c8f746813d9b592c7bfca6f3fc34ace07",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0004/screen-before.png",
"source_sha256": "c3b351565a4f7a63771313f1f62201ba4912465e3a747a16edcdf6812f817f0e",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0005/screen-after.png",
"source_sha256": "9626def46a116578a06e7673bd9c4c52d1e6cc00df8e0f152028021c38206736",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0005/screen-before.png",
"source_sha256": "cce2a6ca77b1878dc3afccb59f11d44d2b12fdb8251ce188866f00b62ee39b21",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0006/screen-after.png",
"source_sha256": "915c9b10978026a1de5fc4efb4c6d49c5841431f0f947031de931289fd51fbbe",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0006/screen-before.png",
"source_sha256": "532d5e4f10549c7dad44cc4e07d161fc84069518f776140ae869b73fbf151ecd",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0007/screen-after.png",
"source_sha256": "4f6257841b5f37bc1e8b4429803216bddbfc8c212954685fdd6b2a12c301ae98",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0007/screen-before.png",
"source_sha256": "970a2a1986c18d9a26b3a7682de38b95cd3ba80fdb5e48e75a5f2af26c939761",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0008/screen-after.png",
"source_sha256": "a9cca8444c00ffcaa4a50a5bafea3204b8e007e0a61e31c9c119ed0d1a0a9f5c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0008/screen-before.png",
"source_sha256": "fb58d85c83c9e5c09f2c869e8171a577b1f53b7b8669f369f7e2e6ff46c01af2",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0009/screen-after.png",
"source_sha256": "bce7ecf4e8b288e05df5d098c7ea9d15918457e9360864923cf0283b13dcfaef",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0009/screen-before.png",
"source_sha256": "27926f876398d59ec12e4263f537997efc0c45a16f99e4e45e5bbd8df2f8b980",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0010/screen-after.png",
"source_sha256": "9109144c9aa892b9602b9b1c9bd76a33a3b77e64bf172e91db0b04b5117d7028",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0010/screen-before.png",
"source_sha256": "4e949455676f2c9b6a2e54a1c4535cdaad5443b2866bdbb1f00bb5bd8fe2d33f",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0011/screen-after.png",
"source_sha256": "9225d1306242056aab728674c0ddc70db352f7b340a2383ff2abfc71bcbd3545",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0011/screen-before.png",
"source_sha256": "484ba517d60755900d4b236591e5662800fe2d8920567589aca36dba51a527c8",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0012/screen-after.png",
"source_sha256": "5be61fbf3b8b97264734fe2485acd4351540e7d5a464acf28c1fc825ad63ad66",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0012/screen-before.png",
"source_sha256": "c405713b49527f218fe9b775398e6d5c5fa634659e9772e1f92f78f8900860e7",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0013/screen-after.png",
"source_sha256": "2d75692d7ca006c2a107dd4a1ec96169b97b74e10a893eccc769fff51f673c77",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0013/screen-before.png",
"source_sha256": "a0ad8e4afb6dfa02220b5b6f43f5db8753ceba9d0263551d1829655ab7b36e1c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0014/screen-after.png",
"source_sha256": "b76e0f4f1d6d241b862c888bb6a4d0f412c3cc128c63cf9431fa4ae909b3da65",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0014/screen-before.png",
"source_sha256": "f6d72f5de7e79bfa316664015e2b733c204eec170586161aa207a57967fe623a",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0015/screen-after.png",
"source_sha256": "122d9e6eadaaa453c6aeb0edb05f783d9d9290be29c89ff80f292728a03b6ac7",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0015/screen-before.png",
"source_sha256": "165d50aa0b26bd3244c311560f3ac95fbfd3e22d7ad9c3740638a060a61371f6",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0016/screen-after.png",
"source_sha256": "9d5db7ab5703d08319233d12d5c1324944692876d24904f27f8231137178c995",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0016/screen-before.png",
"source_sha256": "c58b82369638d39507b9e0ace7a674c2d75dc4be04022de3f8767e23751acc5f",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0017/screen-after.png",
"source_sha256": "e22b06968d21aaf7f4567e6fd0a15785680b54ac6e5285443f0ba6548e6fc4aa",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0017/screen-before.png",
"source_sha256": "9d2d785c6750daca47cfab652ee807697cea59469c8bbe4335766eeb49dbeb05",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0018/screen-after.png",
"source_sha256": "e3d72eea15ed516ce97f43f31b7627e5336467ae7a64a8bbbd72f9733869ea3d",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0018/screen-before.png",
"source_sha256": "57005d30173b51e58531c586dc10712786160d663e100b958f9d487ef09376ae",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0019/screen-after.png",
"source_sha256": "9255d120eb5021c636fc6e6f74c3af72f741aad278ee024eea4901d776a242d5",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0019/screen-before.png",
"source_sha256": "bb72bba570b3c3d97785ef0c2f084a5dd98eef600f95eea2a2163a12a68bd482",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0020/screen-after.png",
"source_sha256": "4a5e8d7d9d78bc670eb1a3775912506bf6bb1106ed9e8d270c977244ee382119",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0020/screen-before.png",
"source_sha256": "9482ff51c1c56dbb595587c9f1f42d73d2cf22eaf4c5cd965f79f34b882aae1c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0021/screen-after.png",
"source_sha256": "be21bf324daf892c34cc1726ff36a84d8312c584199c042cfc853af148d86ace",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0021/screen-before.png",
"source_sha256": "8551975c3ab1be67776b14771dce614b801ca56517740618e4270f4e3466cf22",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0022/screen-after.png",
"source_sha256": "a39a7688a3c5beab968d0a34e5a55791773b934d4158160cc54b6b37fe31550e",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0022/screen-before.png",
"source_sha256": "543cb4a1dc8976af90449297ee734539eea3361a9e4112ccab510f269a7bb94f",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0023/screen-after.png",
"source_sha256": "569715f733c918ec7b6211d953526b0df66b521df855ade7e3554476638509b6",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0023/screen-before.png",
"source_sha256": "cd09b4b43abf503f3b5b4cd397a002e88909dda37084fb090bf2278fe11e6255",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0024/screen-after.png",
"source_sha256": "1878386793d16510a1d8f289131688538542996d5f778118f606bb9f466a1d99",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0024/screen-before.png",
"source_sha256": "cd9a4f8050f06595460ad667307fa62b29b807eb59dd60d628024ca1ef60e345",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0025/screen-after.png",
"source_sha256": "4733c86f40ee9d66b4f2e801b17d46eed30e23979f8602899071de2be117d15c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0025/screen-before.png",
"source_sha256": "72586b2cdeb481c2ff1d956eec6aa9fdf08941e59f67e56c3d8665fc3ef89141",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0026/screen-after.png",
"source_sha256": "a31ed7d43307c05703d183eb6e639366312dfaa5513e0c19db6838505f6c0e50",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0026/screen-before.png",
"source_sha256": "46a6004cf1fffa7a8ebfcc93076267c45bfc4283beac25433aff35ab6d2312ed",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0027/screen-after.png",
"source_sha256": "aa44efd2415d0ef7dca4b46a700adf4d96f073727fee7888a15a2a2ae90270cf",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0027/screen-before.png",
"source_sha256": "cf0b99d7035f636961824c919bab0d93a0c814c97bf27f789a1d909f3160360f",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0028/screen-after.png",
"source_sha256": "87cbcc1b0c444a1073d0cb48a4e4687a88bed87bb0efabcc40d098f98aee4861",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0028/screen-before.png",
"source_sha256": "52dc193175d1a12a41d3bc55f368646e900caae479e8c8ef6c7bf2de4009ce49",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0029/screen-after.png",
"source_sha256": "e38a3a141816b242e8fcdea1a729877daa57a43094853002dec2497368f9211c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0029/screen-before.png",
"source_sha256": "acbe7607ec4a3b0a04c59c8f2b8cee7f79d21cdcd6d7c5a5f7aef0c4ecdb7253",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0030/screen-after.png",
"source_sha256": "0a8f71d79face5b53277171db1d8b7a5bef215972311efed527c2a9153a85d98",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0030/screen-before.png",
"source_sha256": "a0ed46e43d628ab7eab28ff0173634cf9adfd4d78ce0d255caadbf8659d0ff48",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0031/screen-after.png",
"source_sha256": "7081709f6e37d7d47db3592bb9a621f40daff426b27d17941a9a46369d90c4cb",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0031/screen-before.png",
"source_sha256": "3013e92573621d326f8bcc65e8f1d57ac1eefd0f71eb61f605fcabb56d6c44f6",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0032/screen-after.png",
"source_sha256": "add6518c2564fb76e7454151ca7d8f20c897f65e2db6355b460b1c2a86754c71",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0032/screen-before.png",
"source_sha256": "d938c4a4a2c2a0b203a31c123c03bd0f7ef73fb6d267d186edb44c5ef721d56b",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0033/screen-after.png",
"source_sha256": "dc4d8b182e13623560c72501e2abe436aeb118f69d99e4cc9360c8cc18971f1b",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0033/screen-before.png",
"source_sha256": "f331391c69347860d9c9184a7277fda3720cc1c4949b132b9346742c49716c61",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0034/screen-after.png",
"source_sha256": "771b00371fb8c4ef9797b0d62490be11fa48164beedd846f888207bc3c867175",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0034/screen-before.png",
"source_sha256": "81dae87e99555528f0cbb7fe19bb7485983c5a0f29a0692cfbc1b18690a4346f",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0035/screen-after.png",
"source_sha256": "dc6ffea5314485f9270f4f1ea78ade78afd59655b0613898365dc12ea0398b18",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0035/screen-before.png",
"source_sha256": "673c2f0fe3244ecc897b014699ef6491cae80d2bab8fbccdac8fd86f37203b9c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0036/screen-after.png",
"source_sha256": "3695ecb8109c3b1b4810adff8f8a112cc238ec8051fcb0aeec624e7df4be208d",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0036/screen-before.png",
"source_sha256": "d0386b449b9e91e85a0e05122202846e230facea4fa362c8583bfedf0f563c1e",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0037/screen-after.png",
"source_sha256": "99bf2fcc940d6e1351873024af933c30d5bed5e8b085f3f0ba7762097744bf26",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0037/screen-before.png",
"source_sha256": "2b5c953a0e02da363273e72832bbbd14d6aa13955a77ab8b58e8b0babd617b0e",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0038/screen-after.png",
"source_sha256": "ba98f3832f4a0ad8c365d4342c899accfacc2b2910621892adfeef2af2e741cd",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0038/screen-before.png",
"source_sha256": "01c5666579d78a58d49a7e8b11f3273e4bd5cd97d32f8c15bd57ec2982f0067d",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0039/screen-after.png",
"source_sha256": "f7368b2ccaab8fe218465f919fadeb75d18640bb5282fe7fd52a5e589b5e57cc",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0039/screen-before.png",
"source_sha256": "92f15737f3617e860fe288655134e995686401b32de6c561894a470e035a1c00",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0040/screen-after.png",
"source_sha256": "46d3b76b586a7ee3aa2943ed4f659f137933abb6d25f0eed5f60e546455dc0d6",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0040/screen-before.png",
"source_sha256": "ceb54f8d409778c90ac162b244822f718ff5a5e9471f6efde44643d154a3ff17",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0041/screen-after.png",
"source_sha256": "29024b76601c1ec5c5ea3e150eac42019be30aac9ab17d737835afff14fc3ed6",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0041/screen-before.png",
"source_sha256": "6aef1783644c4eb31ddbdd8fc26e4cfc08546d3d982a38a0e65caf1bc6b56d55",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0042/screen-after.png",
"source_sha256": "b7a0d3b23b609f6a66f1aee07f26d145005152627e3018a8975b785fcd365f0e",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0042/screen-before.png",
"source_sha256": "c1b61f3df55a383a24fa545f89a6a9e353ec9ce214ad3e8c3d972fd002aadae6",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0043/screen-after.png",
"source_sha256": "424a5ed967e5430646a09cb79e005a37e57180bc6bc45019c35297b5d1d11bf5",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0043/screen-before.png",
"source_sha256": "cbc3cddd3b2780c61da7ccf4d0685aff2af79652086cf7b4b3c8a0b2e60e3ce6",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0044/screen-after.png",
"source_sha256": "95c8f783cd2758d7c1ae7759e3143d5f6e2d12a6f7f6958982581a292a20e59c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0044/screen-before.png",
"source_sha256": "ea1dea1b2119438db7342ccf07099fce6bbf19306ab7e140ac0aae2bf904ad84",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0045/screen-after.png",
"source_sha256": "8384de8ca62d374c56602e0f02866334fb5952ae1769e772b458c23646046d47",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0045/screen-before.png",
"source_sha256": "747ef5a69382710d17d46d810941c6591763e51ea1c9ab9a06b1e1172348edd0",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0046/screen-after.png",
"source_sha256": "87303f72438035b05946b45e96fcfd5e1635acb6f045bef5882d1f54ab1d9c3e",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0046/screen-before.png",
"source_sha256": "01735714b37386f40b9e185c06ac994fa5d60736b6fcf4f8c653566317db2dff",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0047/screen-after.png",
"source_sha256": "0c22cc8246c5b5eb349147e9c2633ad280d1489d36313f8486a36909a0edf4dc",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0047/screen-before.png",
"source_sha256": "d74da0f11f706ec90d29c85fc61c8410e770fc512e51ffef8fd47cfeb7833314",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0048/screen-after.png",
"source_sha256": "f25c6679a66d53fa0baef6946cb09c6b34b5a3215132f8912176ac07ae4fd178",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0048/screen-before.png",
"source_sha256": "142264548642eeb26e3131199077433280f2abfc8e3c185c0b80b8ac7dc88368",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0049/screen-after.png",
"source_sha256": "f13497c3acf83c3d0d44e9bc55334000e62e830fb043d823d33845b8e0dd3243",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0049/screen-before.png",
"source_sha256": "4d09dd8f26cb9d23dd8be9e0e1ecd57cd0c314c5c0f3a69b8ede9fd21671478c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0050/screen-after.png",
"source_sha256": "16d49100dc19067be96c76e298bdba65912c067af2f25ade8069aaaecfb7f257",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0050/screen-before.png",
"source_sha256": "8b750551b8aedef80bf3e6648ed16ebeda5b78ae2f97f99202d9db1af89e8dea",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0051/screen-after.png",
"source_sha256": "57218dbfdf0d561d761c64e47c36c278bdec43e014431383a4ad2c1e23b1b0e4",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0051/screen-before.png",
"source_sha256": "65e5d9d93f57ebd6af5a88db73e44ac9084162e2c30895431490852b73aae07b",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0052/screen-after.png",
"source_sha256": "5e2f067f3e271c6f380454cd44268ee83203871a50710fbad456b23dfc1e429b",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0052/screen-before.png",
"source_sha256": "c4a945390bd626fff4f3f7af44f9e508c6af6aa97b1c7be356f9949dc6ede205",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0053/screen-after.png",
"source_sha256": "a989599abc63a7418c8b65ff64d65f9251e09a0de6dbf99b83524e066bb26c19",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0053/screen-before.png",
"source_sha256": "cf3fa4764f3d7ab2a2de43b477ad459fd63bf653d62a0e43ec515fc6033b7bf8",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0054/screen-after.png",
"source_sha256": "bde2224c59ec06f948dc889654bf0aa173ab4502d90605b33a501353217685de",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0054/screen-before.png",
"source_sha256": "7c30aec29a115a067e067393c04c1ef930976577456fd41a4583895b0903b94a",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0055/screen-after.png",
"source_sha256": "f330511835fd1d8526b0b9c758a117ed5a051f9bb9dc97eb519732b327fe092d",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0055/screen-before.png",
"source_sha256": "d73e160d1eec129f36ffcf10fd42bce77b7d0e0a794c00c9b7d28e0d8546f979",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0056/screen-after.png",
"source_sha256": "f1d0914ebfec58d8098dbf53c142fb27afe08891162e62244b6a69a335942658",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0056/screen-before.png",
"source_sha256": "06cfb2c3d8a74dd8a33aeb96830ed86e7bbaaa9714ff8423eb7a22098782945f",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0057/screen-after.png",
"source_sha256": "c4182734d4ea40bfe6dee01e2d7809a7e396b367fbde251c44fdebeca7ea832d",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0057/screen-before.png",
"source_sha256": "d5b59f180a124f74dff53fd3c0f7050a8022667ea4405929042ddb4c35fe962c",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0058/screen-after.png",
"source_sha256": "a13d0a1f5c8420700edbec576be93eceab1a7ea6be82802aa2d42365d17026f4",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0058/screen-before.png",
"source_sha256": "ce8959eaad1dc24de5f2d8e89ca77afc7286120647603dbdaa78525e91f07e44",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0059/screen-after.png",
"source_sha256": "5375cfadc79596c8f404d2ef7573fcec522f0f42f2049d6095a887578ef62d45",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0059/screen-before.png",
"source_sha256": "85f25e0e2edb225371e2d66adf4c733aee093d2774b03ea6bc1e2c57aecb41db",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0060/screen-after.png",
"source_sha256": "7782db3ef0a6a2c8f26695ad5aa6978d373c903ada226c987004bbdffdfcb544",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0060/screen-before.png",
"source_sha256": "fe29ed682a21b12f39c2f8329b934992ea14357f0738a5bbdb5918fe2dfcc3d4",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0061/screen-after.png",
"source_sha256": "0f1416c3bb88e58401c2e8a3151eadbd42609b96ce0f47dc1411da00a496fc1f",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0061/screen-before.png",
"source_sha256": "63aa95d1dda03f1a253364dadf9ebb4ce61dc8976482afe26e10a98c7d256290",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0062/screen-after.png",
"source_sha256": "c8dea8222efab5aa0d4a3c0de8387a38f0e8f9e43ff5d6796f160475c1ed06ea",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0062/screen-before.png",
"source_sha256": "78cacff1897f04525b06de0bec81689cdbb5027d8d388b9ea60b69ccb3a91238",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0063/screen-after.png",
"source_sha256": "a654e2584d16a8f6cf70822ad61c03925b13910511843b7bb6e3d8fb3c7044a1",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0063/screen-before.png",
"source_sha256": "ed9127c074512800ebb12e46cc3a4669308e84a2229a963abf2c8aef5e56c631",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0064/screen-after.png",
"source_sha256": "f62e00c37d09e382c04d321a2234f8794b71da88dfdacc86ab4c7b46a965ac27",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
},
{
"file": "os-pair/writer-request-0064/screen-before.png",
"source_sha256": "8751fad9f2fd8820d634889d984abebfb2c79f8af6c515a8e24e443569d7fe57",
"width": 1280,
"height": 752,
"format_by_magic": "JPEG"
}
],
"pairs_have_equal_dimensions": true,
"formal_acceptance": false
}
@@ -0,0 +1,40 @@
"""Owner routing for read-only, SHA-pinned game evidence already in task scope."""
import hashlib
import json
from pathlib import Path
def install(core):
pins = json.loads(Path(__file__).with_name('NATIVE_R09_COLLECTION_PINS.json').read_text())
origin = Path(pins['original_root']).resolve()
project = origin.parents[2]
runtime = project.parent/'TheTree-managed-worktrees/p08-03-code/.runtime/P08-03'
checkout_parent = runtime.parents[1]
expected_index = pins['index']['sha256']
original = core.seatbelt
def scoped(worktree, run_root, writable, service=None):
profile = original(worktree, run_root, writable, service)
if (Path(run_root).resolve() != runtime.resolve()
or Path(worktree).resolve().parent != checkout_parent.resolve()
or not Path(worktree).name.startswith('P08-03-')):
return profile
if pins['native_candidate'] != '31aa7706d28a92e313c432d5a62e35d19503dcc3':
raise ValueError('exact R09 captured candidate required')
if origin.name != 'p08-03-native-os-r09' or not origin.is_relative_to(project/'artifacts'):
raise ValueError('exact game artifact root required')
if hashlib.sha256((origin/'index.json').read_bytes()).hexdigest() != expected_index:
raise ValueError('original R09 index drift')
quote = lambda p: json.dumps(str(p), ensure_ascii=False)
exclusions = ['(require-not (subpath '+quote(origin)+'))']
for parent in origin.parents:
if parent.is_relative_to(Path.home()):
exclusions.append('(require-not (literal '+quote(parent)+'))')
rows = profile.splitlines()
slots = [i for i,s in enumerate(rows) if s.startswith('(deny file-read-data (require-all ')]
if len(slots) != 1 or not rows[slots[0]].endswith('))'):
raise ValueError('known outer read policy required')
i = slots[0]
rows[i] = rows[i][:-2]+' '+' '.join(exclusions)+'))'
return '\n'.join(rows)
core.seatbelt = scoped