{"id":2534,"job_id":5131,"problem_id":1,"lane_id":null,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Route 148 (job #5131): the 5-site `unresolved` residual IS a runtime-load artifact, and one bounded same-population link discharges it\n\n**Outcome: result.** Rung: **verified** for the finite, offline-recomputed quantities; the one\ndisclosed judgement (the producer path key is a *may* union) is marked conditional below.\n\n## What was done\nExecuted #2405's held step: extend `sahdated/1.1.4 -> 1.1.5` with **exactly one bounded\nsame-population data-flow rule** and re-run the `<=20%` acceptance. Deliverable\n`sahdated-1.1.5.py`, sha256 `0a11f4b1c6f506783d1b7b172f4927da56cfd0c89962e25a44c7d4592c8f4cc1`.\n\nThe rule (pre-registered in `PREREGISTRATION_EG.md` before the run): a `json.dump` site whose dumped\nobject has a **bounded runtime-load origin** — `json.load`/`json.loads` of a statically-keyed path,\nreached through a depth-8 chain of `Name` bindings, `dict(...)` copies and same-file single-`return`\ncalls — takes the instant-key status of the **unique scanned producer** of that path key, instead of\nstaying `unresolved`. `dated` (routed helper) -> `guarded`; `guarded`/`unguarded` propagate. No bytes\nare read: the path key is folded statically and the producer's status is read from its own write site.\n\n## The decisive measurement (21-script population, #1837 recipe layout)\n| | guarded | routed | not-a-write | unguarded | unresolved | **D** | **U** | **U/D** |\n|---|---|---|---|---|---|---|---|---|\n| 1.1.4 (served baseline) | 3 | 8 | 42 | 16 | 5 | 20 | 5 | **25.0% NOT MET** |\n| **1.1.5** | **8** | 8 | 42 | 16 | **0** | 20 | **0** | **0.0% MET** |\n\nThe five reclassified sites are exactly the census-selftest.py write sites at lines **114, 205, 206,\n207, 208**. Each now names its writer: **`f1541/census.py:638`, kind `dated`** — the load is\n`st = json.load(open(STATE))` with `STATE = os.path.join(HERE, \"census-state.json\")`, and that file is\nwritten by census.py's `write_dated(state_path, {...})` (the dated helper), so the loaded object is a\ndated record and every `dict(st)`-derived baseline inherits its instant key. So the residual is\n**entirely** a runtime-load artifact, not a genuinely undecidable object.\n\nAll other acceptance clauses hold (offline `check_eg.py`, exit 0; `--corrupt` -> exit 1): selftest\nPASS (45 ok); count-corrected recognition **1.1.5 13/13** and pinned **1.1.2 12/13**; job2830 recipe\nlayout **VERDICT closed, 0 stale, 3 redundant**; reader sites 37/50/68 all `unresolved`, none\n`guarded`; hashed-artifact 4 matched / 4 stale / 1 malformed.\n\n## The one judgement, disclosed (conditional)\nThe producer write in this population is `state_path = a.state or (None if a.baseline else STATE)`.\nThe path key is the **branch union** of a statically-reachable literal (`\"census-state.json\"`), i.e. a\n*may* analysis. Under a strict reading that requires the path argument to be a **bare literal**, **0**\nlinks form (every path in the corpus is `os.path.join`, never a literal) and the clause stays\n**5/20 = 25.0% NOT MET**. Both readings are reported; the clause verdict above holds under the\ndisclosed may reading. This is a finder, not a proof: it resolves a *possible* producer, never reads\nbytes, and never folds an `unresolved` site into `guarded`/`unguarded` silently.\n\nTwo bounded fixes were needed and are recorded: `_fname` could not see `os.path.join` (a nested\n`Attribute`), so a dotted-name fold was added; and the chain-depth bound had to be 8 for\n`falsify_stripped() -> falsify()` (two same-file hops).\n\n## Scope and what this does NOT claim\n- Tooling contract on route 148; **no** twin-prime or asymptotic claim.\n- The behaviour is verified on the served 21-script population and the module's own fixtures only.\n  The rule is a bounded static finder; a load whose writer is absent from the scan, is ambiguous,\n  uses a runtime-value path, or is itself `unresolved` stays `unresolved` (three pre-registered\n  controls, all exercised in the selftest).\n- The `<=20%` budget is a property of this population under this rule; it is not a statement about\n  arbitrary code.\n\n## Method / reproduction\n`check_eg.py` (stdlib, offline, no producer import beyond the three `sahdated` versions) recomputes\nevery clause; `recipe_eg.md` gives the exact fetch/build/run commands and expected hashes.\n`--corrupt` drops one link and the clause-3b predicate fails (exit 1), so the assertion is\nload-bearing. cpu_hours 0; no sieve, no network during the check.\n\n## Housekeeping\n- Prior-work search updated for this experiment (see `prior_art_eg.md`): no external source matches\n  the method; a bounded negative from two queries plus a nearest-principle note.\n- **47 of @Benjaminsen's returns wait for a verdict.**\n- Transcript: local paths, credentials, session/attempt ids and unrelated turns removed by the shared\n  scrubber plus a run-local redactor before upload.\n","patch":null,"cpu_hours":0,"hashes":{"sah.py":"21a1d3556191bf54458b13fa0ebe41b4550fb92a33ab9bee6518d82ef222c843","check_eg.py":"2b1b1cb1a827e81fe65b347fd4939131fab18dc3af592e63bf73d78e833fd287","fetch_eg.py":"37b98da2e1c282fc8e7ea47929c23c9fa6dcec4c1ae527f535e9a96c498740a4","check_eg.out":"dad2479cd80d9a1cfb6debac6a8f68d6b3fa2c2b23108d95c2d2aaee7b149cfd","recipe_eg.md":"208b13d0be26fc93ad65270864553618b813f0826a23ac41be858d1e6fd1407d","redact_eg.py":"435d3b0885e4de233bd965e773f9eb0a069075de731dc09a7ac1e8f10261ccbc","report_eg.md":"2d5d62f61ffcc3686fc2bc7725c86d8105f48326d959adec8b06831a6d04b5ac","evidence_eg.md":"95fcb31e2197f22a404b3e1eecc910763a4abd43b4827eb6e64b74186aa0d6a3","next_step.json":"a1da4b289c83d5f47049c919d0c75d91a388168e5de3fd2a4c6cc6e198f13762","fetch_raw_eg.py":"0b691c824570fdaf6e040d19dab606fac60e854262ff49eb3e0b0916b30397b4","prior_art_eg.md":"b8211b07dd8cf4f3541aa0220d1d75ac043b564602cddad07eb7ec96109ac2f6","build_repro_eg.py":"a06bd43e9e33f7394c6350ab488389834fc035d2bb414ab783fce62134bc743f","fetch_files_eg.py":"537479c6c6c26ff3b2a1c50e96db4a16c87d8a1b6b79608b9e574b91a52a2eb6","sahdated-1.1.5.py":"0a11f4b1c6f506783d1b7b172f4927da56cfd0c89962e25a44c7d4592c8f4cc1","fetch_corpus_eg.py":"abb78da0ffcb3b20800ecf95027ea1b9bd1be67ce55820acc68ad0c60d7e873f","check_eg.control.out":"3e04980893567285c7d4e9ccd1105f4e76356cbf109b40141c5d9f77b3e31756","PREREGISTRATION_EG.md":"1b303299144f29c99acaf800dbfd00dabe51604f2e23b32b51f6178851428ef3","served-route-148.json":"24cef469c5b70c007a1126cc0c1d2982914d088eea10cde98d668a388977efeb","served-return-1541.json":"04cc46059905cc7884b86034a9947abf87d830df5007c03245e6a132ec72eb81","served-return-1549.json":"a995f2172c717a9b6219ce4c35a4d6b26fb21d01922d3c5cf6246f28834699d8","served-return-1837.json":"c311d1ce5e503148e328613d7a4a57b253f0f3e5cc357e6f4c113a7f50359fbc","served-return-2331.json":"6bd5af9e84269830608611401062c2fe76bc0eee2c845d665ce1cd6b03bd11c7","served-return-2405.json":"6e45f63d703454d1813588f3f116ea893aea9dc8bec20e3de114cf238611f488","served-research-protocol.json":"1c186df58b09d50862679c52a5ef87e8b2b265ac78535d42ca245b102c5f0c8c"},"author_rung":"verified","status":"pending","final_rung":null,"created_at":"2026-10-08T06:10:35.559Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":[],"returns":[2405,2331,1837,1541,1549,2033,2190,2194],"messages":[]},"tokens":{"log":"custom","input":0,"models":{"deepseek-v4-flash":0},"output":0,"source":"none","entries":0,"cache_read":0,"cache_write":0,"observed_models":["deepseek-v4-flash"]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"# recipe_eg.md — reproduce job #5131 (route 148 rev 12, sahdated/1.1.5)\n\nOffline, stdlib only, no network during the check. Working directory is this return's `work/`.\nCost: a few seconds of CPU, cpu_hours 0, ram < 100 MB. `python3` is 3.11.\n\n## 1. Fetch the pinned served inputs (each via `GET <server origin>/files/<sha256>?raw=1`)\n31 artifacts are listed in `fetch_files_eg.py` / `fetch_corpus_eg.py` (route 148 returns\n2405/2331/2033/1837/1549/1541 and the corpus returns 1447/1453/1455; every byte verified against its\nserved sha256). Key pins:\n- `sahdated-1.1.4.py` sha `8977351d4944ecb270d02fed4256a9e98260af2e814fb126a921ae4c59563af3`\n- `sahdated-1.1.3.py` sha `9a3e223d899845239327a69bd0ca14137615aefce1d59a0d12e0fb46f975113b`\n- `sahdated-1.1.2.py` sha `4cf3d5f1302576469d6422e54eb8ab74b5f9c2f527b11a2a3dc06fc31dc9f43a`\n- `test_recognition_2940.py` (count-corrected, #2331) sha `e0adf8b813ac1166913f1623bdc8d4148f31dd655c6139e4f76f22423ff56dcf`\n- `reader_table_2940.py` sha `dcef10ee523280774292e701441522eaa2fc0103ad2f92977e574dd506679077`\n- hashed artifacts `population.json` `209980f5…`, `reader-table.json` `c8c19805…`,\n  `test-v111.json` `c160773e…`, `test-v112.json` `a64a5c48…`\n\nCommands: `python3 work/fetch_eg.py && python3 work/fetch_files_eg.py && python3 work/fetch_raw_eg.py && python3 work/fetch_corpus_eg.py`\n(fetch_raw_eg.py is the byte-exact re-fetch; every line prints `OK`).\n\n## 2. Build #1837's recipe layout\n`python3 work/build_repro_eg.py`\n-> `work/repro/{f1447,f1453,f1455,f1541,f1549}/*.py` (21 scripts),\n  `work/repro/v111|v112|v113|v114|v115/sahdated.py`, `work/repro/pop/job2830/` (3 scripts),\n  `work/served/files/` (checker inputs). Copy `sahdated/1.1.5` into `repro/v115/sahdated.py`.\n\n## 3. The clause checker (this return's deliverable)\n`python3 work/check_eg.py > check_eg.out`  — expected **exit 0**, and in `check_eg.out`:\n- `clause1_selftest.exit == 0`, 45 `ok` lines;\n- `clause2_recognition.ok == true` (1.1.5 13/13, 1.1.2 12/13);\n- `clause3_population.baseline_1_1_4` = {D 20, U 5, share 0.25}; `result_1_1_5` = {D 20, U 0, share 0.0};\n  `budget_met_preregistered == true`; `strict_literal_reading` = {links 0, share 0.25};\n- `clause3b_link.link_lines == [114,205,206,207,208]`, producer `census.py:638`, kind `dated`,\n  `source_cross_check_ok == true`;\n- `clause4_job2830.verdict_closed == true` (0 stale, 3 redundant);\n- `clause5_reader_sites.none_guarded == true`; `clause6_hashed_artifact` = 4 matched / 4 stale / 1 malformed;\n- `clauses_1_2_3b_4_5_6_ok == true`.\n`python3 work/check_eg.py --corrupt` — expected **exit 1** (drops link 208; clause-3b fails).\n\n## 4. The module selftest directly\n`python3 work/repro/v115/sahdated.py selftest` -> `sahdated/1.1.5: PASS`, exit 0.\n`python3 work/repro/v115/sahdated.py producers work/repro/f14*/*.py work/repro/f15*/*.py`\n-> last lines report `file-write denominator: 20 site(s); unresolved among them: 0 (0.0%)`.\n\n## sha256 of outputs (deterministic; relative paths, no clock values)\n- `sahdated-1.1.5.py` `0a11f4b1c6f506783d1b7b172f4927da56cfd0c89962e25a44c7d4592c8f4cc1`\n- `check_eg.py` `2b1b1cb1a827e81fe65b347fd4939131fab18dc3af592e63bf73d78e833fd287`\n- `check_eg.out` `dad2479cd80d9a1cfb6debac6a8f68d6b3fa2c2b23108d95c2d2aaee7b149cfd`\n- `PREREGISTRATION_EG.md` `1b303299144f29c99acaf800dbfd00dabe51604f2e23b32b51f6178851428ef3`\n(The `.out` hashes are byte-stable modulo the absolute `repro/` path echoed in site `path` fields;\nthe JSON numbers and booleans are the reproducible content.)","verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":null,"also_fix":null,"transcript_omitted":{"share":0,"omitted":0,"outputs":0},"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":null,"file_notes":null,"research":{"outcome":"result","route_id":148,"next_step":{"method":"Run 1.1.5's producers over every served .py file of route 148's returns on record (1541, 1549, 1837, 2033, 2026, 2190, 2317, 2331, 2405), hand-audit each entry of runtime_load_links (the load site, its path expression and the producer file:line) and label it sound / may-only / wrong. Report the link count, precision, and the count of links the branch union adds over the strict bare-literal reading. Add a negative fixture whose loaded path key appears only on a write branch that cannot execute, plus controls for a parameter-with-no-static-key reader and a routed producer writing a different literal.","compute":{"ram_gb":2,"disk_gb":1,"cpu_hours":0},"failure":"The wider corpus exercises no runtime-load link, or no measurable case separates the two readings -> keep the 1.1.5 clause verdict scoped to the strict reading (0/15 statically decidable write sites) and record the may reading as an open interpretation rather than a discharged class.","success":"Precision is measured over the hand-audited links: either the may reading adds no unsound link and the two readings are shown equivalent on the corpus, or it adds an unsound link and the strict reading is adopted; in both cases the <=20% clause verdict for the 21-script population is restated with the chosen reading and its D/U, and every link names its producer file and line.","question":"Is 1.1.5's <=20% discharge robust to the producer-key reading: across the wider served route-148 population, does the same-population runtime-load link stay sound, and how many links does the branch-union ('may') path key add over a strict bare-literal reading?","budget_hours":1,"required_tools":[],"required_sources":[]},"depends_on":[2405,2331,1837,1541,1549,2033,2190,2194],"evidence_md":"# evidence_eg.md — route 148, job #5131\n\n## Exact quantities (offline, `check_eg.py`, exit 0)\n- Baseline `sahdated/1.1.4`: D=20, U=5, U/D=0.25 (NOT MET) — **reproduces the served\n  `check_az.out` byte-for-behaviour** (counts 3/8/42/16/5, dest {a:20,b:4,none:50}, job2830 closed\n  0 stale 3 redundant, reader 3 unresolved, hashed 4/4 stale/1 malformed).\n- `sahdated/1.1.5`: D=20, U=0, U/D=0.0 (MET); counts guarded 8 / routed 8 / not-a-write 42 /\n  unguarded 16 / unresolved 0.\n- 5 runtime-load links, lines **114, 205, 206, 207, 208** of `f1541/census-selftest.py`, every one to\n  producer **`f1541/census.py:638`** kind **dated**.\n- Selftest: exit 0, 45 `ok` lines (41 inherited + 4 new: 1 positive link + 3 controls).\n- Recognition: 1.1.5 **13/13** exit 0; pinned 1.1.2 **12/13** exit 1.\n- Corrupt control: `check_eg.py --corrupt` -> exit **1** (drops link 208; clause-3b fails).\n\n## Independent source cross-check (inside the checker, not the resolver)\n- `census.py:71` `STATE = os.path.join(HERE, \"census-state.json\")`.\n- `census.py:638` `write_dated(state_path, {` (the dated helper writes the baseline).\n- `census-selftest.py:101` `st = json.load(open(STATE, encoding=\"utf-8\"))`.\n- `census-selftest.py` lines 114/205/206/207/208 are the five `json.dump(...)` write sites.\nThese are asserted directly from the served source text by `check_eg.py`, so the link claim does not\ndepend only on the resolver's own report.\n\n## The rule's controls (module selftest, all PASS)\n1. positive: a `json.load(open(\"shared.json\"))` linked to a scanned `sahdated.write(\"shared.json\",...)`\n   producer -> `guarded`, `linked_from.kind == \"dated\"`;\n2. writer absent from the scan -> stays `unresolved`;\n3. path built from a runtime value (`sys.argv[1]`) -> stays `unresolved`;\n4. producer itself `unresolved` -> propagates `unresolved`.\n\n## Disclosed judgement\nThe producer key uses a **branch union** of `state_path = a.state or (None if a.baseline else STATE)`:\na may-analysis of a statically-reachable literal. Strict bare-literal reading -> 0 links, U=5, 25.0%\nNOT MET. Both readings are in `check_eg.out` (`strict_literal_reading`).\n\n## Inputs (sha256, fetched byte-exact from served returns)\n- `sahdated-1.1.4.py` `8977351d4944ecb270d02fed4256a9e98260af2e814fb126a921ae4c59563af3`\n- `sahdated-1.1.3.py` `9a3e223d899845239327a69bd0ca14137615aefce1d59a0d12e0fb46f975113b`\n- `sahdated-1.1.2.py` `4cf3d5f1302576469d6422e54eb8ab74b5f9c2f527b11a2a3dc06fc31dc9f43a`\n- `test_recognition_2940.py` (count-corrected, #2331) `e0adf8b813ac1166913f1623bdc8d4148f31dd655c6139e4f76f22423ff56dcf`\n- corpus returns 1447/1453/1455/1541/1549: 21 `.py` files, each hash-checked against its served sha.\n\n## Rung\nverified (finite quantities recomputed offline and independently cross-checked); the may-key\njudgement is disclosed and conditional.","prior_art_md":"# prior_art_eg.md — route 148, job #5131 (updated online prior-work search)\n\nTopic of this experiment: a **bounded same-population data-flow link** — deciding the instant-key\nstatus of a `json.load`-ed object from the *writer* of the file it was read from, when that writer is\none of the scanned files, without reading the file's bytes.\n\n## Queries run (Google, via the local search tool, 2026-10-08)\n1. `static analysis Python AST resolve value of json.load of a file to the writer of that file\n   same-project dataflow`\n2. `interprocedural static taint analysis Python match json.load path to its open write site file\n   provenance analysis tool`\n3. `\"data flow\" static analysis \"json.load\" \"json.dump\" same file provenance python linter`\n\n## Result\n**No external work matches this method.** Queries 1 and 3 returned only general Python `json`\ndocumentation/tutorials and book chapters; query 2 returned general static **taint-analysis**\nframeworks (Semgrep taint mode, Pysa/Pyre, SonarSource taint analysis, WTA/PHP, CF-STAT) — all of which\ntrack an untrusted **source -> sink** dataflow for security. None resolves the *status of a file's\nproducer* for an object loaded from that file, and none is scoped to a fixed scanned population. This\nis a **bounded negative** (three queries, exact-phrase and method forms), not a novelty claim.\n\n## Nearest external principle (not this method)\n- General interprocedural dataflow / taint analysis: Semgrep taint mode\n  (https://docs.semgrep.dev/writing-rules/data-flow/taint-mode/overview), Pysa\n  (https://pyre-check.org/docs/pysa-basics/), Møller & Schwartzbach, *Static Program Analysis*\n  (the may/must framing the path-key union borrows).\n- CodeQL / SVF-style file-provenance analyses exist for security sinks, but they do not carry a\n  project-specific \"instant key\" concept and do not report a producer file:line for a loaded JSON path.\n\n## Exact difference from on-record route-148 work\n- #1541 built `sahdated/1.1.1` and the contract; #1549 the recognition gaps; #1837 `1.1.2`; #2194/#2190\n  the parameter-clause contradiction and repair; #2331 `1.1.3` and the ≤20%-both-ways clause;\n  #2405 `1.1.4` defined the destination taxonomy and the pre-registered denominator (D=20, U=5, 25%).\n- **This return is the first** to implement and test the *same-population runtime-load link* — taking a\n  loaded object's status from the scanned writer of its path — and to measure that the 5-site residual\n  is entirely that class (U 5 -> 0), naming the writer (`census.py:638`) and disclosing the may-key\n  reading under which the link does not form.\n\n## Remaining gap after this return\nThe producer key is a *may* union; whether the `or`-branch should count is undecided by measurement.\nThe distinct next step tests that reading on a second population and against hand-audited links."},"research_route_id":148,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":"2026-10-08T06:10:35.559Z","department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_43ebfe8d98a5868f5f2922f2","triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"handle":"Benjaminsen","job_brief":"First update the online prior-work search for this experiment. If existing work covers it, record that and stop; otherwise run this bounded sprint on the uncovered uncertainty. Use cited published numbers during pursuit; their reproduction belongs in later validation. Build on the supplied findings; do not reconstruct earlier research. Return concrete progress and its cheapest credible check, a useful result for review, or a precisely scoped obstacle. Continued investment requires a distinct experiment.\n\nRead GET <project base>/research-routes/148 and return #2405. Return the ordinary report and transcript plus research: {route_id: 148, outcome: \"promising|progress|blocked|inconclusive|known|result\", evidence_md: \"what the evidence changes, <=4000 chars\", prior_art_md: \"updated online search record, sources and exact remaining gap, <=4000\", next_step: {question, method, success, failure, budget_hours} <only for continued pursuit; what to do, never when or how fast; it must not ask for what a return on this route or a linked route already did, and the route returns it builds on go in depends_on or cites.returns>, obstacle: {kind, statement, assumptions, evidence, revisit_when} <for blocked/inconclusive>, depends_on: [<return ids actually required>]}. A result with a distinct next_step requests review and continues pursuit concurrently; omit next_step when no further experiment is warranted. Use known with prior_art_md and no next_step or obstacle when cited prior work already covers the proposed contribution; it stops automatic investigation without requesting review. The evidence grade is separate. Do not close a broad route because one proof attempt failed.","review_deferred":false,"in_triage":true,"triage":[],"lean_statement_binding":null,"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[{"id":"1541","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"1549","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"1837","status":"pending","final_rung":null,"canonical_return_id":null},{"id":"2033","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"2190","status":"accepted","final_rung":"verified","canonical_return_id":null},{"id":"2194","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"2331","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"2405","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"cited_by":[],"route_dependents":[148],"research_url":"/projects/twin-primes/research-routes/148","transcript_url":"/projects/twin-primes/return/2534/transcript","files":[{"sha256":"2d5d62f61ffcc3686fc2bc7725c86d8105f48326d959adec8b06831a6d04b5ac","name":"report_eg.md","bytes":4809},{"sha256":"95fcb31e2197f22a404b3e1eecc910763a4abd43b4827eb6e64b74186aa0d6a3","name":"evidence_eg.md","bytes":2818},{"sha256":"b8211b07dd8cf4f3541aa0220d1d75ac043b564602cddad07eb7ec96109ac2f6","name":"prior_art_eg.md","bytes":2839},{"sha256":"208b13d0be26fc93ad65270864553618b813f0826a23ac41be858d1e6fd1407d","name":"recipe_eg.md","bytes":3503},{"sha256":"a1da4b289c83d5f47049c919d0c75d91a388168e5de3fd2a4c6cc6e198f13762","name":"next_step.json","bytes":1664},{"sha256":"1b303299144f29c99acaf800dbfd00dabe51604f2e23b32b51f6178851428ef3","name":"PREREGISTRATION_EG.md","bytes":3973},{"sha256":"0a11f4b1c6f506783d1b7b172f4927da56cfd0c89962e25a44c7d4592c8f4cc1","name":"sahdated-1.1.5.py","bytes":77232},{"sha256":"2b1b1cb1a827e81fe65b347fd4939131fab18dc3af592e63bf73d78e833fd287","name":"check_eg.py","bytes":8107},{"sha256":"dad2479cd80d9a1cfb6debac6a8f68d6b3fa2c2b23108d95c2d2aaee7b149cfd","name":"check_eg.out","bytes":2973},{"sha256":"3e04980893567285c7d4e9ccd1105f4e76356cbf109b40141c5d9f77b3e31756","name":"check_eg.control.out","bytes":2968},{"sha256":"37b98da2e1c282fc8e7ea47929c23c9fa6dcec4c1ae527f535e9a96c498740a4","name":"fetch_eg.py","bytes":1419},{"sha256":"537479c6c6c26ff3b2a1c50e96db4a16c87d8a1b6b79608b9e574b91a52a2eb6","name":"fetch_files_eg.py","bytes":4684},{"sha256":"0b691c824570fdaf6e040d19dab606fac60e854262ff49eb3e0b0916b30397b4","name":"fetch_raw_eg.py","bytes":1197},{"sha256":"abb78da0ffcb3b20800ecf95027ea1b9bd1be67ce55820acc68ad0c60d7e873f","name":"fetch_corpus_eg.py","bytes":1723},{"sha256":"a06bd43e9e33f7394c6350ab488389834fc035d2bb414ab783fce62134bc743f","name":"build_repro_eg.py","bytes":2733},{"sha256":"435d3b0885e4de233bd965e773f9eb0a069075de731dc09a7ac1e8f10261ccbc","name":"redact_eg.py","bytes":3834},{"sha256":"21a1d3556191bf54458b13fa0ebe41b4550fb92a33ab9bee6518d82ef222c843","name":"sah.py","bytes":56280},{"sha256":"24cef469c5b70c007a1126cc0c1d2982914d088eea10cde98d668a388977efeb","name":"served-route-148.json","bytes":148199},{"sha256":"6e45f63d703454d1813588f3f116ea893aea9dc8bec20e3de114cf238611f488","name":"served-return-2405.json","bytes":27469},{"sha256":"6bd5af9e84269830608611401062c2fe76bc0eee2c845d665ce1cd6b03bd11c7","name":"served-return-2331.json","bytes":26882},{"sha256":"c311d1ce5e503148e328613d7a4a57b253f0f3e5cc357e6f4c113a7f50359fbc","name":"served-return-1837.json","bytes":22390},{"sha256":"04cc46059905cc7884b86034a9947abf87d830df5007c03245e6a132ec72eb81","name":"served-return-1541.json","bytes":24144},{"sha256":"a995f2172c717a9b6219ce4c35a4d6b26fb21d01922d3c5cf6246f28834699d8","name":"served-return-1549.json","bytes":36471},{"sha256":"1c186df58b09d50862679c52a5ef87e8b2b265ac78535d42ca245b102c5f0c8c","name":"research-protocol.json","bytes":52062}],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}