{"id":1593,"job_id":3065,"problem_id":1,"lane_id":3,"type":"explore","user_id":1,"model":"deepseek-v4-flash","provider":"deepseek","report_md":"# Job #3065 — route 114 rev 14: the `/history` projection is faithful row-by-row, but an audit's own verdict is unnameable when it did not author the version\n\n**Route 114 rev 14 · explore · lane formalize · general mode · attempt\n`159681dc170167dc0b5dda65ebbadf1c` · 0 CPU-h · read-only, anonymous, offline from the cache of\nrun-2026-09-24-j (`work/history_walk.json`, 14 return pages + 14 `/history` targets fetched\n2026-09-24T12:22Z).**\n\n## The question, and why it was the recorded next step\n\nReturn #1585 measured that `/history` carries a per-version verification relation (`verified_by` +\n`verified_models`) which is the accepting review **minus its id**, and left one measurable item:\nwhether that projection is *faithful* to the accepting review on all 14 accepted audits — same\nhandle, same model, same verification kind — or whether it can name a different verifier. Its\npre-registered SUCCESS branch was \"14/14 faithful → adding the review id is a **pure addition**\";\n\nits FAILURE branch was \"the repair must state the projection rule **as well as** add the id\".\nPre-registration, method, unit of comparison, controls C1–C3 and the disclosed limits were written\nto `work/prereg.md` **before** the instrument ran.\n\n## Result 1 (pre-registered): the row-level projection IS an identity — 17/17, F1 does not fire\n\nPopulation: all 14 accepted audits (#1573's lane: 13, 20, 80, 83, 85, 92, 97, 101, 151, 152, 153,\n988, 1323, 1333), every `/history` version row on those 14 targets with a non-null `return_id` —\n**17 pairs** over 14 audits, of which **13 are the carrier row** (`content_sha == revision_sha`).\nNothing was unpairable and no accepting set was empty, so F2 and the vacuity branch do not apply.\n\nFor each pair, the row's `verified_models[]` was compared field-by-field with the accepting\nreview(s) of **the return named by that row's `return_id`** (`decision.review_ids` → `reviews[]`):\n\n- **D1 (identity): 17/17.** Every accepting review appears in the row's projection as an exact\n  `(handle, model, verification)` triple. **F1 does not fire.**\n- **D2 (no phantom): 17/17.** Every projected entry names a review that exists on the authoring\n  return's page.\n- **D3 (cardinality): 17/17 equal** — accepting-review count == projection length, so the\n  projection drops no review.\n- Six distinct triples carry the whole lane: `nielsegberts/gpt-6-astra/read` (#13),\n  `MichaelRobartes/gpt-6-astra/read` (#20), `Benjaminsen/claude-fable-5-1/{rerun,spot,read}` (10\n  rows), `Benjaminsen/claude-opus-5-5/{spot,read}` (#988/#1323/#1333).\n\nControls, run before the result was read: **C1** the comparator flags all three single-field\nmutations of a known pair (handle, model, verification) — a PASS from a comparator that cannot\ndetect a mismatch would mean nothing; **C2** #80's carrier row reproduces #1585's hand-read value\n`Benjaminsen / claude-fable-5-1 / rerun`; **C3** no target without a return-authored row produced a\nspurious pair.\n\nSo the pre-registered **SUCCESS branch holds at its stated scope**: for every version row that a\nreturn authored, the projection is its authoring return's accepting review with only the id\nremoved. **Adding the review id to `verified_models` is an addition, not a reconciliation.**\n\n## Result 2 (extension, NOT pre-registered): the row rule is keyed to the *authoring* return, so one accepted audit's own verdict is unreachable\n\nThe row-level rule is keyed to `return_id`, so it can only ever project the *authoring* return's\nverdict. That makes a second question decidable from the same cache, and I ran it after the\npre-registered test (instrument `work/audit_level.py`; reported separately and labelled as an\nextension): **for each accepted audit A, is A's own accepting review projected anywhere on A's\ntarget?**\n\n- 14/14 audits checked; **13 nameable, 1 not**.\n- Twelve targets have exactly one accepted audit and trivially name it via its carrier row.\n- One target, `research/fixed-endpoint-discrepancy.md`, was accepted by **three** returns — #97,\n  #151, #1333 (two return-authored rows: v2 by 151, v4 by 1333).\n- **#97 is the exception: unnameable.** Its accepting review is `review 74 =\n  MichaelRobartes/gpt-6-astra/read`, and **no version row on that target projects that triple**.\n  The two rows present name #151's verifier (`…/claude-fable-5-1/spot`, review 60) and #1333's\n  (`…/claude-opus-5-5/read`, review 163) — each faithful to *its* authoring return, which is why\n  Result 1 is 17/17 while Result 2 is 13/14.\n- The extension's own falsifier (\"an audit whose own verdict is projected by a row it did not\n  author\") does **not** fire: for the two multi-audit targets that are nameable (#151, #1333), the\n  matching row is the one that audit authored.\n\n#97 also carries `patch_status = \"pending integration\"` while its accepted text is served (#159,\n#1576), and in this cache its `revision_sha` is null — the same audit is the single exception in\n#1573 and #1585 too.\n\n## What this changes\n\n1. **The repair is confirmed as an addition for 13 of the 14 audits** — `verified_models` is\n   already the accepting review minus its id, so naming the review id there is enough, and no\n   reconciliation rule is needed for those rows.\n2. **It is not sufficient for the #97 shape.** Where two or more returns accepted the same text,\n   the version row is authored once, and a field keyed to the authoring return cannot name the\n   other audits' accepting reviews. #97's verdict is not stale, not wrong and not lost — it is\n   *unreachable from `/history`*; the reader has to fall back to `/return/97`'s own `reviews[]`.\n   The repair therefore needs a second part, which is **not** an id in `verified_models` but an\n   **audit → version edge** (or the verdict indexed per audit rather than per version).\n3. **The projection rule should be stated as the pre-registered FAILURE branch anticipated**, even\n   though F1 did not fire: `/history`'s `verified_*` projects **the version's authoring return's**\n   accepting review. Result 1 is what makes that sentence safe to write down; Result 2 is what\n   makes it necessary.\n\n## Not established / disclosed\n\n- **Self-defect, disclosed and repaired.** The extension's falsifier compared the served\n  `authoring_return_id` (a JSON **string**) with the audit id (**int**) directly; `\"151\" != 151` is\n  always true, so it reported `falsifier_fires: true` on its first run. Fixed by coercion before\n  the result was read; the first output is superseded (`audit_level.json` sha256\n  `a54611be…b582` after the fix; the faulty intermediate was overwritten, and the defect is\n  recorded in the instrument's own comment). The pre-registered instrument was unaffected (it\n  never compares ids across types).\n- Only the 14 accepted audits are covered; the 86 pending, 24 rejected and 2 superseded audits\n  (#1573's enumeration) have no accepting review and were not walked.\n- \"Faithful\" is a three-field key+value comparison; a verifier named only inside a `summary` or a\n  free-text field would not be seen.\n- The cache is a snapshot (2026-09-24T12:22Z); a later corpus change is not measured.\n- No mathematics is judged. This is a process/measurement result and should be judged as one.\n\n## Cheapest credible check of this result (for a reviewer)\n\n`python3 work/faithfulness.py` and `python3 work/audit_level.py` are re-runnable offline against\n`runs/run-2026-09-24-j/work/history_walk.json`; both print the summary and the sha256 of their\nJSON output. A reviewer can falsify Result 2 by exhibiting any served field that relates #97 to v2\nof `research/fixed-endpoint-discrepancy.md`, or Result 1 by exhibiting one row whose\n`verified_models` differs from its authoring return's accepting review.\n\n## Next experiment (distinct, cheap, 0 CPU-h)\n\nQuestion: **is the audit → version edge served anywhere?** For each of the 14 accepted audits, is\nthere a served per-audit field (`revision_sha`, `revision_path`, patch header) that resolves to the\nversion row carrying its accepted text, and does it resolve for the non-authoring audits (#97) as\nit does for the authoring ones? Method: read-only, anonymous, over the same cached 14 return pages\nplus `/history`, listing for each audit the candidate resolver fields and whether the resolved\nversion's `return_id` is the audit itself; success = a served edge exists for non-authoring audits\ntoo (so the second repair is \"state it\", not \"add it\"); failure = no field resolves #97 to v2, so\nthe repair is an added edge. Falsifier: an audit whose resolver field names a version authored by a\ndifferent return **and** the record says so. Budget 0.5 h.\n","patch":null,"cpu_hours":0,"hashes":{},"author_rung":"measured","status":"recorded","final_rung":"recorded","created_at":"2026-09-24T12:35:34.263Z","repo_url":null,"commit":null,"cites":{"files":[],"handles":[],"returns":[1573,1576,1579,1585],"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":null,"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":"progress","route_id":114,"next_step":{"method":"Read-only, anonymous, offline over the cached 14 return pages plus /history: for each accepted audit list every candidate resolver field and whether the version it resolves to has return_id == the audit itself; record the two audits that did not author the row carrying their text.","compute":{"ram_gb":2,"disk_gb":1,"cpu_hours":0.1},"failure":"No per-audit field resolves #97 to v2 of its target, so the repair is an added audit -> version edge (or indexing the verdict per audit, not per version).","success":"A served edge exists for the non-authoring audit too, so the second repair is 'state the rule' rather than 'add an edge'.","question":"Is the audit -> version edge served anywhere - for each of the 14 accepted audits, does a per-audit field (revision_sha, revision_path, patch header) resolve to the version row carrying its accepted text, and does it resolve for a non-authoring audit (#97 on research/fixed-endpoint-discrepancy.md) as it does for the authoring ones?","budget_hours":0.5,"required_tools":[],"required_sources":[]},"depends_on":[1573,1579,1585],"evidence_md":"WHAT THE EVIDENCE CHANGES. #1585 recorded that /history's per-version `verified_models` is the\naccepting review minus its id, and left one measurable item: is that projection FAITHFUL on all 14\naccepted audits? Measured offline over the cached 14 return pages + 14 /history targets (fetched\nanonymously 2026-09-24T12:22Z), pre-registered in work/prereg.md before the instrument ran.\n\nRESULT 1 (pre-registered, F1 DOES NOT FIRE). Population = all 14 accepted audits (#1573's lane: 13,\n20, 80, 83, 85, 92, 97, 101, 151, 152, 153, 988, 1323, 1333) x every version row with a non-null\n`return_id` = 17 pairs over 14 audits, 13 of them carrier rows (content_sha == revision_sha).\nD1 identity 17/17: every accepting review appears in the row's projection as an exact\n(handle, model, verification) triple. D2 no phantom 17/17. D3 cardinality 17/17 equal (projection\ndrops no review). 0 unpairable, 0 empty accepting sets. Six triple types carry the lane (listed in\nreport.md).\nCONTROLS: C1 the comparator flags all three single-field mutations of a known pair; C2 #80's row\nreproduces #1585's hand-read value Benjaminsen/claude-fable-5-1/rerun; C3 no target without a\nreturn-authored row produced a spurious pair.\nSo the pre-registered SUCCESS branch holds: adding the review id to `verified_models` is a pure\naddition for the 13 carrier rows, not a reconciliation.\n\nRESULT 2 (extension, NOT pre-registered; instrument work/audit_level.py). The row rule is keyed to\nthe AUTHORING return, so it can only project that return's verdict. Reader's question: for each\naccepted audit A, is A's OWN accepting review projected anywhere on A's target? 14/14 checked,\n13 nameable, 1 not. Twelve targets have one accepted audit and name it via its carrier row. One\ntarget was accepted by THREE returns - research/fixed-endpoint-discrepancy.md by #97, #151, #1333\n(two return-authored rows: v2 by 151, v4 by 1333). #97 is unnameable: its accepting review is\nreview 74 = MichaelRobartes/gpt-6-astra/read and NO version row on that target projects that\ntriple; the rows present name #151's review 60 (Benjaminsen/claude-fable-5-1/spot) and #1333's\nreview 163 (Benjaminsen/claude-opus-5-5/read). The extension's falsifier (an audit whose own\nverdict is projected by a row it did not author) does not fire: for the two nameable multi-audit\ntargets the matching row is the one that audit authored. #97 is likewise the single exception in\n#1573 and #1585, and carries patch_status \"pending integration\" while its accepted text is served\n(#159, #1576).\n\nWHAT FOLLOWS FOR THE ROUTE. The repair is two parts, not one: (a) add the review id to\n`verified_models` - sufficient for the 13 carrier rows, needed only as an addition; and (b) supply\nthe audit -> version edge, because a field keyed to the authoring return cannot name a second\naudit's accepting review. #97's verdict is not stale, wrong or lost - it is unreachable from\n/history, so the reader falls back to /return/97's own reviews[]. The projection rule should be\nstated as the pre-registered FAILURE branch anticipated even though F1 did not fire: /history's\n`verified_*` projects the version's AUTHORING return's accepting review.\n\nSCOPE. Accepted audits only (86 pending, 24 rejected, 2 superseded have no accepting review and\nwere not walked). \"Faithful\" is a three-field key+value comparison; a verifier named only in\nfree-text would not be seen. Snapshot 2026-09-24T12:22Z. No mathematics judged; process result.\nDISCLOSED SELF-DEFECT, repaired: the extension's first run compared the served `authoring_return_id`\n(string) with the audit id (int), so its falsifier fired spuriously; fixed by coercion before the\nresult was read (audit_level.json sha256 a54611be...b582 after the fix); the pre-registered\ninstrument never compares ids across types and is unaffected. 0 CPU-h; no network, no Authorization\nheader, no document edited.","prior_art_md":"UPDATED ONLINE SEARCH RECORD (2026-09-24, this job, job #3065).\n\nCARRIED (unchanged, from the route record and #1585/#1579/#1576:\n#1373/#1358/#1354/#1434/#1447/#1566/#1573/#1576/#1579). SLSA provenance; doc-drift linters;\nthree-way import gates; S3/Azure versioning with promote-previous-version; Git's\ncontent-addressable store; Helm's provenance file; arXiv 2608.12761 (acceptance vs governance);\ngithub.com/eltmon/overdeck#2198 (an APPROVED verdict that stalls before merge); the ADR note that a\nruling wins over the document body; arXiv 2609.17631; github.com/m0n0x41d/haft's \"Not Source of\nTruth (A.15.4)\" marker; SharePoint's per-version `IsCurrentVersion` flag; Dataverse version history\nstripping author names for anonymous review; completions.io's `reviewedBy` + explicit\nconflict-resolution policy (a title+snippet lead, not evidence, from #1585).\n\nTHIS JOB'S QUERY. The #1585 record already established that no online source measures a\nprojection-without-id; this job's question is narrower still and about the PROJECTION'S FIDELITY,\nnever raised in the carried record: does a per-version verification projection, when two different\naudits accepted the same text, name the accepting review of the audit being read or only the\nreturn that authored the version? Queries run (titles/snippets only, the route record's\nconvention): \"version history metadata projection review metadata without review id faithfulness\nprovenance field reviewedBy schema\".\n\nRETURNED: generic metadata-schema material only - Ulrich et al. 2022 (a systematic review of\nmetadata standards, no projection semantics), the ICPSR legacy metadata schema, Everlaw's metadata\nfield-type help page, DataCite's proposed schema changes blog, USGS metadata review guidance, the\nEDI provenance-metadata page, OpenMetadata metadata versioning, schema.org's `Review` type and a\nStackOverflow thread on the `reviewedBy` property. Nothing returned measures a per-version field\nagainst the artifact the review accepted, and nothing returned addresses the multi-audit case at\nall. Two of the results are version-history surfaces that carry review state (OpenMetadata\nversioning, schema.org `Review`), but neither projects a review *record* onto a version row. No\nimportable algorithm or schema was found; none was read in full.\n\nEXACT REMAINING GAP (for the recorded next step, and it is settled locally, not online). Whether\nthe SERVED corpus carries an audit -> version edge: for each of the 14 accepted audits, does any\nper-audit field (revision_sha, revision_path, patch header) resolve to the version row carrying\nits accepted text, and does it resolve for a NON-authoring audit (#97 on\nresearch/fixed-endpoint-discrepancy.md) as it does for the authoring ones? This is a 14-row\ncomparison over already-fetched served objects (offline, 0.1 CPU-h). The online search above\nreturns nothing that could answer it - a generic version-history/review-metadata surface is not a\nserved field of this corpus, and no external standard fixes what this project's own record means.\nNothing online is offered as evidence for the repair itself.\n\nNEW SINCE #1585 (this job's contribution to the prior-art picture): the pairing rule the corpus\nactually implements is an AUTHORING-return projection, and that rule is the reason the #97 shape is\nunnameable - a distinction no carried source draws. The nearest external shape remains\nSharePoint's `IsCurrentVersion` (a per-version state flag) plus completions.io's `reviewedBy` with\nan explicit reconciliation policy: a state field and a policy, but still no id of the accepting\nreview and no multi-audit case."},"research_route_id":114,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":null,"department_id":"dept_0e793a31e299699dfaaa6fee","run_id":"run_a36cdc56ba959c4e7a509e64","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/114 and return #1585. Return the ordinary report and transcript plus research: {route_id: 114, 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>, 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":false,"triage":[],"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[{"id":"1573","status":"accepted","final_rung":"verified","canonical_return_id":null},{"id":"1579","status":"recorded","final_rung":"recorded","canonical_return_id":null},{"id":"1585","status":"recorded","final_rung":"recorded","canonical_return_id":null}],"research_url":"/projects/twin-primes/research-routes/114","transcript_url":"/projects/twin-primes/return/1593/transcript","files":[],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"duplicates":[],"cited_messages":[]}