From ac0060f624703d076e22033e828ea15d3861e6d5 Mon Sep 17 00:00:00 2001 From: leej3 Date: Wed, 14 Oct 2026 20:18:52 -0400 Subject: [PATCH 01/15] docs: add STAMPED example poster placeholder Keep editable sources, artwork, exports, and checks in one poster module. Link the preserved study archive and existing skills proposals for the next discussion while retaining the verified poster bytes. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- .pre-commit-config.yaml | 2 +- 2026-usrse/README.md | 2 + 2026-usrse/stamped-ai-study/.gitattributes | 4 + 2026-usrse/stamped-ai-study/.gitignore | 2 + 2026-usrse/stamped-ai-study/README.md | 47 +++ .../assets/con-ccn-dartmouth-letterhead.svg | 1 + .../assets/con-logo-outlined.svg | 1 + .../stamped-ai-study/assets/repronim_logo.svg | 396 ++++++++++++++++++ .../assets/stamped-qr-con.svg | 2 + .../assets/stamped-qr-poster.svg | 1 + .../assets/stamped-qr-skills.svg | 1 + .../assets/stamped-qr-study.svg | 1 + 2026-usrse/stamped-ai-study/build-poster.cjs | 110 +++++ .../exports/agent-visual-review.json | 7 + .../stamped-ai-study/exports/html-audit.json | 378 +++++++++++++++++ .../stamped-ai-study/exports/link-audit.json | 121 ++++++ .../stamped-ai-study/exports/pdf-audit.json | 63 +++ .../stamped-ai-study/exports/pdf-preview.png | 1 + .../exports/source-integrity.json | 141 +++++++ .../exports/stamped-ai-poster.pdf | 1 + 2026-usrse/stamped-ai-study/index.html | 168 ++++++++ 2026-usrse/stamped-ai-study/make-logo-qrs.py | 232 ++++++++++ 2026-usrse/stamped-ai-study/poster.css | 76 ++++ 2026-usrse/stamped-ai-study/results-data.json | 216 ++++++++++ .../stamped-ai-study/source-manifest.json | 36 ++ 2026-usrse/stamped-ai-study/template.css | 128 ++++++ 2026-usrse/stamped-ai-study/update-results.py | 240 +++++++++++ 2026-usrse/stamped-ai-study/verify-links.py | 72 ++++ 2026-usrse/stamped-ai-study/verify-pdf.py | 99 +++++ INDEX.md | 5 + REUSE.toml | 70 ++++ 31 files changed, 2623 insertions(+), 1 deletion(-) create mode 100644 2026-usrse/stamped-ai-study/.gitattributes create mode 100644 2026-usrse/stamped-ai-study/.gitignore create mode 100644 2026-usrse/stamped-ai-study/README.md create mode 120000 2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg create mode 120000 2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg create mode 100644 2026-usrse/stamped-ai-study/assets/repronim_logo.svg create mode 100644 2026-usrse/stamped-ai-study/assets/stamped-qr-con.svg create mode 120000 2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg create mode 120000 2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg create mode 120000 2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg create mode 100644 2026-usrse/stamped-ai-study/build-poster.cjs create mode 100644 2026-usrse/stamped-ai-study/exports/agent-visual-review.json create mode 100644 2026-usrse/stamped-ai-study/exports/html-audit.json create mode 100644 2026-usrse/stamped-ai-study/exports/link-audit.json create mode 100644 2026-usrse/stamped-ai-study/exports/pdf-audit.json create mode 120000 2026-usrse/stamped-ai-study/exports/pdf-preview.png create mode 100644 2026-usrse/stamped-ai-study/exports/source-integrity.json create mode 120000 2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf create mode 100644 2026-usrse/stamped-ai-study/index.html create mode 100644 2026-usrse/stamped-ai-study/make-logo-qrs.py create mode 100644 2026-usrse/stamped-ai-study/poster.css create mode 100644 2026-usrse/stamped-ai-study/results-data.json create mode 100644 2026-usrse/stamped-ai-study/source-manifest.json create mode 100644 2026-usrse/stamped-ai-study/template.css create mode 100644 2026-usrse/stamped-ai-study/update-results.py create mode 100644 2026-usrse/stamped-ai-study/verify-links.py create mode 100644 2026-usrse/stamped-ai-study/verify-pdf.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2f588683..f1041109 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,4 +7,4 @@ repos: rev: v0.9.1 hooks: - id: snapper - files: ^2026-usrse/(stamped-abcd-poster-draft|orinoco-lite/README)\.md$ + files: ^2026-usrse/(stamped-abcd-poster-draft\.md|orinoco-lite/README\.md|stamped-ai-study/(?!logs/).*\.md)$ diff --git a/2026-usrse/README.md b/2026-usrse/README.md index d9afc27a..380a523f 100644 --- a/2026-usrse/README.md +++ b/2026-usrse/README.md @@ -3,6 +3,8 @@ This is folder to collect ideas/drafts for submissions for https://us-rse.org/us The Orinoco Lite poster is available as [editable poster](orinoco-lite_poster.html), with [editing, PDF export and release notes](orinoco-lite/README.md). Its [submitted abstract](orinoco-lite-poster-draft.md) remains alongside it. +The [STAMPED example poster](stamped-ai-study/README.md) is a discussion placeholder with editable HTML and a checked PDF. + ### Meeting theme etc That meeting is about/for Software Research Engineers. And this particular meeting has following diff --git a/2026-usrse/stamped-ai-study/.gitattributes b/2026-usrse/stamped-ai-study/.gitattributes new file mode 100644 index 00000000..1729d51e --- /dev/null +++ b/2026-usrse/stamped-ai-study/.gitattributes @@ -0,0 +1,4 @@ +# Module-scoped equivalent for its binary types; works without MagicMime. +# Text sources remain in Git. Large SVGs retain the repository threshold. +* annex.largefiles=((include=*.png)or(include=*.pdf)or(include=*.jpg)or(include=*.jpeg)or(include=*.gif)or(include=*.webp)or(include=*.woff)or(include=*.woff2)or(include=*.ttf)or(include=*.otf)or(include=*.zip)or(include=*.gz)or(include=*.xz)or(include=*.zst)or(include=*.mp4)or(include=*.webm)or(include=*.bin)) +*.svg annex.largefiles=(largerthan=100K) diff --git a/2026-usrse/stamped-ai-study/.gitignore b/2026-usrse/stamped-ai-study/.gitignore new file mode 100644 index 00000000..043c7270 --- /dev/null +++ b/2026-usrse/stamped-ai-study/.gitignore @@ -0,0 +1,2 @@ +# Keep the exported poster in this module. +!exports/stamped-ai-poster.pdf diff --git a/2026-usrse/stamped-ai-study/README.md b/2026-usrse/stamped-ai-study/README.md new file mode 100644 index 00000000..f2dbda40 --- /dev/null +++ b/2026-usrse/stamped-ai-study/README.md @@ -0,0 +1,47 @@ +# STAMPED example poster — discussion placeholder + +An editable **44 × 44 inch** poster adapted from [PR 20](https://github.com/con/talks/pull/20), preserving its layout and institutional artwork. +This is a placeholder for discussion on October 15, 2026, alongside the existing skills proposals: [con/skills#23](https://github.com/con/skills/pull/23), [#24](https://github.com/con/skills/pull/24), and [#26](https://github.com/con/skills/pull/26). + +Open [index.html](index.html), view the [PDF preview](exports/pdf-preview.png), or [download the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf). +The [study report](https://github.com/leej3/stamped-ai-research/blob/3db3674d639e63407fa5ac0f9c9012bf48c12727/research/REPORT.md) documents three exploratory paired tasks, including the skills arm's missing-value screening failure. +These results do not establish general skill efficacy or reproduce the proposed ABCD analysis. + +## Retrieve and edit + +Large assets, the PDF, and preview use git-annex; GitHub displays pointers. +After cloning this branch, use an environment with DataLad and git-annex: + +```sh +datalad get 2026-usrse/stamped-ai-study/assets/ \ + 2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf \ + 2026-usrse/stamped-ai-study/exports/pdf-preview.png +``` + +Edit `index.html` and `poster.css`; preserve the artwork and minimum **32 CSS px / 24 pt** text. +From this directory, with Node/Playwright, uv, Poppler, Inkscape and `rsvg-convert` available: + +```sh +uv run --python 3.12 make-logo-qrs.py --check-dir exports/qr-source +node build-poster.cjs --out-dir exports +uv run --python 3.12 verify-pdf.py --review-dir exports +python3 verify-links.py --review-dir exports +``` + +Retrieve assets first and unlock annexed outputs before replacing them. +The supplied scripts pin their Python dependencies; the builder also supports the bundled Codex Playwright runtime. +Reinspect the PDF after content changes. + +## Snapshot and provenance + +The existing [PDF audit](exports/pdf-audit.json), [link checks](exports/link-audit.json), and [visual review](exports/agent-visual-review.json) apply to the unchanged exported poster: one 44-inch square page, minimum 24 pt text, 17 link annotations and four QR codes decoded from PDF pixels. +This is agent verification, not author review. +The PDF SHA-256 is `ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d`. + +The [complete source snapshot and execution records](https://github.com/con/talks/tree/1e96d413e43ca048c7f45674ada9d5f316a68b91/2026-usrse/stamped-ai-study) remain preserved separately, including superseded layouts and retrieval reports. +The QR destinations continue to point to that study's existing branches. +Private transcript payloads remain withheld, and two optional diagnostic images plus two large logs await upload; none is required to view this poster. +[source-manifest.json](source-manifest.json) identifies the original artwork and template. + +Composition and prose are CC BY-SA 4.0; scripts are Apache-2.0. +Institutional marks retain their original rights and exceptions in [REUSE.toml](../../REUSE.toml). diff --git a/2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg b/2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg new file mode 120000 index 00000000..2b38590c --- /dev/null +++ b/2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg @@ -0,0 +1 @@ +../../../.git/annex/objects/fw/X3/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg b/2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg new file mode 120000 index 00000000..2929a02b --- /dev/null +++ b/2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg @@ -0,0 +1 @@ +../../../.git/annex/objects/X6/J1/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/repronim_logo.svg b/2026-usrse/stamped-ai-study/assets/repronim_logo.svg new file mode 100644 index 00000000..073a5a1c --- /dev/null +++ b/2026-usrse/stamped-ai-study/assets/repronim_logo.svg @@ -0,0 +1,396 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/stamped-qr-con.svg b/2026-usrse/stamped-ai-study/assets/stamped-qr-con.svg new file mode 100644 index 00000000..a9127902 --- /dev/null +++ b/2026-usrse/stamped-ai-study/assets/stamped-qr-con.svg @@ -0,0 +1,2 @@ + +CON QR code: conhttps://dev.centerforopenneuroscience.org/; high error correction; four-module quiet zone. \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg b/2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg new file mode 120000 index 00000000..fae6d3f3 --- /dev/null +++ b/2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg @@ -0,0 +1 @@ +../../../.git/annex/objects/Qw/09/MD5E-s72489--0686f3984df0eb61ccb759c66ae50aa4.svg/MD5E-s72489--0686f3984df0eb61ccb759c66ae50aa4.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg b/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg new file mode 120000 index 00000000..45b699a8 --- /dev/null +++ b/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg @@ -0,0 +1 @@ +../../../.git/annex/objects/7X/qW/MD5E-s69859--b76ec9502c2311354e72b95bb2116724.svg/MD5E-s69859--b76ec9502c2311354e72b95bb2116724.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg b/2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg new file mode 120000 index 00000000..e2a1fe37 --- /dev/null +++ b/2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg @@ -0,0 +1 @@ +../../../.git/annex/objects/Z2/mQ/MD5E-s73018--c6465f09577434e540f749d487a3829b.svg/MD5E-s73018--c6465f09577434e540f749d487a3829b.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/build-poster.cjs b/2026-usrse/stamped-ai-study/build-poster.cjs new file mode 100644 index 00000000..e9d74438 --- /dev/null +++ b/2026-usrse/stamped-ai-study/build-poster.cjs @@ -0,0 +1,110 @@ +#!/usr/bin/env node +// SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +// SPDX-License-Identifier: Apache-2.0 +// Build one editable HTML poster with a strict 32 CSS px print-text floor. +const fs = require('node:fs'); +const path = require('node:path'); +const os = require('node:os'); +const crypto = require('node:crypto'); +const { pathToFileURL } = require('node:url'); +let playwright; +try { playwright = require('playwright'); } +catch { + const moduleRoot = process.env.CODEX_NODE_MODULES || path.join(os.homedir(), + '.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules'); + playwright = require(path.join(moduleRoot, 'playwright')); +} +const root = __dirname; +const outArg = process.argv.indexOf('--out-dir'); +if (outArg < 0 || !process.argv[outArg + 1]) { + throw new Error('Usage: node build-poster.cjs --out-dir /absolute/review-directory [--check-only]'); +} +const output = path.resolve(process.argv[outArg + 1]); +const checkOnly = process.argv.includes('--check-only'); +fs.mkdirSync(output, { recursive: true }); +const sha = file => crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex'); + +(async () => { + const browser = await playwright.chromium.launch({ headless: true }); + try { + const page = await browser.newPage({ viewport: { width: 4224, height: 4224 }, deviceScaleFactor: 1 }); + const errors = []; + page.on('pageerror', e => errors.push(String(e))); + // Every asset is local; building never needs website content. + await page.route(/^https?:/, route => route.abort()); + await page.goto(pathToFileURL(path.join(root, 'index.html')).href, { waitUntil: 'load' }); + await page.emulateMedia({ media: 'print' }); + await page.evaluate(async () => { await document.fonts.ready; await Promise.all([...document.images].map(i => i.decode())); }); + const audit = await page.evaluate(() => { + const poster = document.querySelector('.poster'); + const bounds = poster.getBoundingClientRect(); + const rect = r => ({ x: r.x - bounds.x, y: r.y - bounds.y, width: r.width, height: r.height }); + const text = [], small = [], outside = [], regionOverflow = [], internalOverflow = [], unlinkedImages = [], sectionOverlap = []; + const walker = document.createTreeWalker(poster, NodeFilter.SHOW_TEXT); + while (walker.nextNode()) { + const node = walker.currentNode; + if (!node.textContent.trim()) continue; + const el = node.parentElement; + const style = getComputedStyle(el); + if (style.display === 'none' || style.visibility === 'hidden') continue; + const range = document.createRange(); range.selectNodeContents(node); + if (!range.getClientRects().length) continue; + const row = { text: node.textContent.trim(), px: parseFloat(style.fontSize), element: el.tagName }; + text.push(row); + if (row.px < 32) small.push(row); + } + for (const el of poster.querySelectorAll('*')) { + const r = el.getBoundingClientRect(); + if (!r.width || !r.height) continue; + if (r.left < bounds.left - 1 || r.top < bounds.top - 1 || r.right > bounds.right + 1 || r.bottom > bounds.bottom + 1) { + outside.push({ element: el.tagName, class: el.className, rect: rect(r) }); + } + const s = getComputedStyle(el); + if (s.display !== 'inline' && el.clientWidth && el.scrollWidth > el.clientWidth + 2) { + internalOverflow.push({ element: el.tagName, class: el.className, width: el.clientWidth, scroll: el.scrollWidth }); + } + } + // The page can contain an overlapping footer even if every element fits + // its outer canvas. Check the four original template regions separately. + for (const region of poster.children) { + const area = region.getBoundingClientRect(); + for (const el of region.querySelectorAll('*')) { + const r = el.getBoundingClientRect(); + if (r.width && r.height && (r.top < area.top - 1 || r.bottom > area.bottom + 1)) { + regionOverflow.push({ region: region.className, element: el.tagName, class: el.className, rect: rect(r) }); + } + } + } + for (const parent of poster.querySelectorAll('.study-main, .outcomes')) { + const sections = [...parent.children]; + for (let i = 1; i < sections.length; i++) { + const previous = sections[i - 1].getBoundingClientRect(); + const next = sections[i].getBoundingClientRect(); + if (next.top < previous.bottom - 1) sectionOverlap.push({ parent: parent.className, previous: sections[i - 1].className, next: sections[i].className }); + } + } + const images = [...poster.querySelectorAll('img')].map(img => { + const link = img.closest('a'); + if (!link || !link.href.startsWith('https://')) unlinkedImages.push(img.src); + return { src: img.getAttribute('src'), loaded: img.complete && img.naturalWidth > 0, href: link?.href, rect: rect(img.getBoundingClientRect()) }; + }); + const qrs = [...poster.querySelectorAll('[data-qr]')].map(a => ({ name: a.dataset.qr, url: a.href, rect: rect(a.querySelector('img').getBoundingClientRect()) })); + const links = [...new Set([...poster.querySelectorAll('a')].map(a => a.href))]; + const blocks = [...poster.querySelectorAll('.property-section, .property-table, .property-table tbody tr, .stages-section, .section-heading, .stage-cards, .stages-figure, .scientific-results, .scope-note, .outcomes > section')].map(el => ({ element: el.tagName, class: el.className, rect: rect(el.getBoundingClientRect()) })); + return { size_css_px: { width: bounds.width, height: bounds.height }, minimum_text_px: Math.min(...text.map(t => t.px)), text_node_count: text.length, small, outside, regionOverflow, internalOverflow, sectionOverlap, unlinkedImages, images, qrs, links, blocks }; + }); + audit.browser = browser.version(); + audit.created_utc = new Date().toISOString(); + audit.source_sha256 = Object.fromEntries(['index.html', 'template.css', 'poster.css', 'build-poster.cjs', 'verify-pdf.py', 'verify-links.py', 'make-logo-qrs.py', 'source-manifest.json', 'update-results.py', 'results-data.json'].map(n => [n, sha(path.join(root, n))])); + audit.errors = errors; + fs.writeFileSync(path.join(output, 'html-audit.json'), JSON.stringify(audit, null, 2) + '\n'); + if (errors.length || audit.small.length || audit.outside.length || audit.regionOverflow.length || audit.internalOverflow.length || audit.sectionOverlap.length || audit.unlinkedImages.length || audit.images.some(i => !i.loaded)) { + throw new Error('HTML layout or asset audit failed; inspect html-audit.json.'); + } + if (!checkOnly) { + await page.pdf({ path: path.join(output, 'stamped-ai-poster.pdf'), preferCSSPageSize: true, printBackground: true, tagged: true }); + await page.screenshot({ path: path.join(output, 'html-fullsize.png'), fullPage: true }); + } + console.log(JSON.stringify({ output, check_only: checkOnly, minimum_text_px: audit.minimum_text_px, qrs: audit.qrs.length, links: audit.links.length })); + } finally { await browser.close(); } +})().catch(e => { console.error(e.stack); process.exitCode = 1; }); diff --git a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json new file mode 100644 index 00000000..71b1ed12 --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json @@ -0,0 +1,7 @@ +{ + "pdf_sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", + "preview_sha256": "14c9514014a363c55ed49aae1cd3caaebfe8a9edc24bea624bdb222389525a38", + "reviewer": "Root coordinating agent and poster subagent", + "review": "Clear cream/navy/green layout, intact logos, generous spacing; scientific/scoping/failure text legible; no clipping or overlap. Automated PDF audit records 44x44in, minimum24pt,17annotations/14destinations and all4QRs upright+rotated. This is agent visual review, not human review.", + "source": "Root coordinating agent message 2026-10-14 after final export; exact artifacts hashed by poster subagent." +} diff --git a/2026-usrse/stamped-ai-study/exports/html-audit.json b/2026-usrse/stamped-ai-study/exports/html-audit.json new file mode 100644 index 00000000..2b881e5b --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/html-audit.json @@ -0,0 +1,378 @@ +{ + "size_css_px": { + "width": 4224, + "height": 4224 + }, + "minimum_text_px": 32, + "text_node_count": 156, + "small": [], + "outside": [], + "regionOverflow": [], + "internalOverflow": [], + "sectionOverlap": [], + "unlinkedImages": [], + "images": [ + { + "src": "assets/con-logo-outlined.svg", + "loaded": true, + "href": "https://dev.centerforopenneuroscience.org/", + "rect": { + "x": 1798.453125, + "y": 129.328125, + "width": 840, + "height": 259.328125 + } + }, + { + "src": "assets/stamped-qr-poster.svg", + "loaded": true, + "href": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "rect": { + "x": 3926.984375, + "y": 116.203125, + "width": 204, + "height": 204 + } + }, + { + "src": "assets/stamped-qr-study.svg", + "loaded": true, + "href": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "rect": { + "x": 2548.328125, + "y": 2391.609375, + "width": 204, + "height": 204 + } + }, + { + "src": "assets/stamped-qr-skills.svg", + "loaded": true, + "href": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "rect": { + "x": 3926.984375, + "y": 1481.984375, + "width": 204, + "height": 204 + } + }, + { + "src": "assets/stamped-qr-con.svg", + "loaded": true, + "href": "https://dev.centerforopenneuroscience.org/", + "rect": { + "x": 2332.8125, + "y": 3917.578125, + "width": 204, + "height": 204 + } + }, + { + "src": "assets/con-ccn-dartmouth-letterhead.svg#svgView(viewBox(13,33,230,246))", + "loaded": true, + "href": "https://pbs.dartmouth.edu/", + "rect": { + "x": 2924.71875, + "y": 3968.671875, + "width": 126, + "height": 136 + } + }, + { + "src": "assets/repronim_logo.svg", + "loaded": true, + "href": "https://www.repronim.org/", + "rect": { + "x": 3777.625, + "y": 3971.96875, + "width": 146, + "height": 140 + } + } + ], + "qrs": [ + { + "name": "poster", + "url": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "rect": { + "x": 3926.984375, + "y": 116.203125, + "width": 204, + "height": 204 + } + }, + { + "name": "study", + "url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "rect": { + "x": 2548.328125, + "y": 2391.609375, + "width": 204, + "height": 204 + } + }, + { + "name": "skills", + "url": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "rect": { + "x": 3926.984375, + "y": 1481.984375, + "width": 204, + "height": 204 + } + }, + { + "name": "con", + "url": "https://dev.centerforopenneuroscience.org/", + "rect": { + "x": 2332.8125, + "y": 3917.578125, + "width": 204, + "height": 204 + } + } + ], + "links": [ + "https://dev.centerforopenneuroscience.org/", + "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/REPORT.md", + "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "https://github.com/OpenNeuroDatasets/ds000005/tree/b094fc2f41487f92d382a1a432165ae58caae386", + "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research/mixed-gambles-design", + "https://github.com/con/skills/tree/codex/stamped-research-skills", + "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-01/assessment.json", + "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json", + "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json", + "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json", + "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json", + "https://pbs.dartmouth.edu/", + "https://www.repronim.org/" + ], + "blocks": [ + { + "element": "SECTION", + "class": "property-section", + "rect": { + "x": 88, + "y": 792, + "width": 2669.328125, + "height": 1507.609375 + } + }, + { + "element": "TABLE", + "class": "property-table", + "rect": { + "x": 88, + "y": 1016.609375, + "width": 2669.328125, + "height": 1174.625 + } + }, + { + "element": "TR", + "class": "", + "rect": { + "x": 88, + "y": 1106.109375, + "width": 2669.328125, + "height": 148.34375 + } + }, + { + "element": "TR", + "class": "", + "rect": { + "x": 88, + "y": 1254.453125, + "width": 2669.328125, + "height": 148.34375 + } + }, + { + "element": "TR", + "class": "", + "rect": { + "x": 88, + "y": 1402.796875, + "width": 2669.328125, + "height": 148.34375 + } + }, + { + "element": "TR", + "class": "", + "rect": { + "x": 88, + "y": 1551.140625, + "width": 2669.328125, + "height": 148.34375 + } + }, + { + "element": "TR", + "class": "", + "rect": { + "x": 88, + "y": 1699.484375, + "width": 2669.328125, + "height": 148.34375 + } + }, + { + "element": "TR", + "class": "", + "rect": { + "x": 88, + "y": 1847.828125, + "width": 2669.328125, + "height": 148.34375 + } + }, + { + "element": "TR", + "class": "", + "rect": { + "x": 88, + "y": 1996.171875, + "width": 2669.328125, + "height": 194.0625 + } + }, + { + "element": "SECTION", + "class": "stages-section", + "rect": { + "x": 88, + "y": 2351.609375, + "width": 2669.328125, + "height": 1354.8125 + } + }, + { + "element": "DIV", + "class": "section-heading", + "rect": { + "x": 88, + "y": 2391.609375, + "width": 2669.328125, + "height": 285.59375 + } + }, + { + "element": "FIGURE", + "class": "stages-figure", + "rect": { + "x": 88, + "y": 2834.359375, + "width": 2669.328125, + "height": 390.1875 + } + }, + { + "element": "A", + "class": "image-link stage-cards", + "rect": { + "x": 88, + "y": 2834.359375, + "width": 2669.328125, + "height": 325 + } + }, + { + "element": "SECTION", + "class": "scientific-results", + "rect": { + "x": 88, + "y": 3252.546875, + "width": 2669.328125, + "height": 317.28125 + } + }, + { + "element": "DIV", + "class": "scope-note", + "rect": { + "x": 88, + "y": 3605.828125, + "width": 2669.328125, + "height": 100.59375 + } + }, + { + "element": "SECTION", + "class": "", + "rect": { + "x": 2843.328125, + "y": 792, + "width": 1292.65625, + "height": 610.984375 + } + }, + { + "element": "SECTION", + "class": "value-section skills-section", + "rect": { + "x": 2843.328125, + "y": 1446.984375, + "width": 1292.65625, + "height": 320.59375 + } + }, + { + "element": "SECTION", + "class": "measurement-section", + "rect": { + "x": 2843.328125, + "y": 1811.578125, + "width": 1292.65625, + "height": 346.671875 + } + }, + { + "element": "SECTION", + "class": "result-box", + "rect": { + "x": 2843.328125, + "y": 2202.25, + "width": 1292.65625, + "height": 948.953125 + } + }, + { + "element": "SECTION", + "class": "failure-summary", + "rect": { + "x": 2843.328125, + "y": 3195.203125, + "width": 1292.65625, + "height": 235.921875 + } + }, + { + "element": "SECTION", + "class": "callout", + "rect": { + "x": 2843.328125, + "y": 3440.75, + "width": 1292.65625, + "height": 409.25 + } + } + ], + "browser": "151.0.7922.34", + "created_utc": "2026-10-14T23:17:24.996Z", + "source_sha256": { + "index.html": "59aa1d1c3f1cedd69000e7acb138c84a2c39ec379d7db0c1309f1e7ccd028436", + "template.css": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", + "poster.css": "878332525bbaa508869b86c74fba4ca69248dea42f65c2f9e7683ca69dc397b4", + "build-poster.cjs": "113e2fc4ecff9d73acb94c7e3faa478944a81f3802b5ad33502f98b99eebe13a", + "verify-pdf.py": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", + "verify-links.py": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", + "make-logo-qrs.py": "0ebb386cb998bbf3a872848627e5b5066ac3da10733242897613ad5f67a49858", + "source-manifest.json": "d2de681dcd1b8564e155f6c438ff37a8215929c992908e398c3752712f22419e", + "update-results.py": "7e6db439ac299178942cfc104930529e22a23d5e4d69f731dda914a4f17626cc", + "results-data.json": "24d7e20bfe07ade368ffb13b1267e840e4ef833df75d5fee6fd61da7e2406ab9" + }, + "errors": [] +} diff --git a/2026-usrse/stamped-ai-study/exports/link-audit.json b/2026-usrse/stamped-ai-study/exports/link-audit.json new file mode 100644 index 00000000..050a6241 --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/link-audit.json @@ -0,0 +1,121 @@ +{ + "html_audit_sha256": "2660d3009197f7bb407f086ecd3f4dc6b381826618d8c5039e239105ddccdba0", + "checked_at": "2026-10-14T23:27:31.912093+00:00", + "authentication": "none", + "results": [ + { + "url": "https://dev.centerforopenneuroscience.org/", + "checked_at": "2026-10-14T23:27:29.382156+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://dev.centerforopenneuroscience.org/", + "passed": true + }, + { + "url": "https://github.com/OpenNeuroDatasets/ds000005/tree/b094fc2f41487f92d382a1a432165ae58caae386", + "checked_at": "2026-10-14T23:27:29.382518+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/OpenNeuroDatasets/ds000005/tree/b094fc2f41487f92d382a1a432165ae58caae386", + "passed": true + }, + { + "url": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "checked_at": "2026-10-14T23:27:29.382598+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "passed": true + }, + { + "url": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "checked_at": "2026-10-14T23:27:29.382646+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/REPORT.md", + "checked_at": "2026-10-14T23:27:29.648254+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/REPORT.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-01/assessment.json", + "checked_at": "2026-10-14T23:27:30.304170+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-01/assessment.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json", + "checked_at": "2026-10-14T23:27:30.334948+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json", + "checked_at": "2026-10-14T23:27:30.381742+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json", + "checked_at": "2026-10-14T23:27:30.474042+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json", + "checked_at": "2026-10-14T23:27:30.883733+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "checked_at": "2026-10-14T23:27:30.982886+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research/mixed-gambles-design", + "checked_at": "2026-10-14T23:27:30.988948+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research/mixed-gambles-design", + "passed": true + }, + { + "url": "https://pbs.dartmouth.edu/", + "checked_at": "2026-10-14T23:27:31.002894+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://pbs.dartmouth.edu/", + "passed": true + }, + { + "url": "https://www.repronim.org/", + "checked_at": "2026-10-14T23:27:31.309800+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://repronim.org/", + "passed": true + } + ], + "all_passed": true, + "scope": "Public destination HTTP availability; annex content integrity is checked separately." +} diff --git a/2026-usrse/stamped-ai-study/exports/pdf-audit.json b/2026-usrse/stamped-ai-study/exports/pdf-audit.json new file mode 100644 index 00000000..ab6812d9 --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/pdf-audit.json @@ -0,0 +1,63 @@ +{ + "pdf_sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", + "page_count": 1, + "page_points": [ + 3168.0, + 3168.0 + ], + "minimum_html_text_px": 32, + "minimum_html_text_pt": 24.0, + "minimum_pdf_text_pt": 24.0, + "inspected_pdf_text_runs": 184, + "link_annotation_count": 17, + "unique_expected_links": 14, + "missing_links": [], + "raster_dpi": 150, + "qr_results": [ + { + "name": "poster", + "expected": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study" + ], + "decoded_rotated": [ + "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study" + ], + "passed": true + }, + { + "name": "study", + "expected": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "decoded": [ + "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research" + ], + "decoded_rotated": [ + "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research" + ], + "passed": true + }, + { + "name": "skills", + "expected": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "decoded": [ + "https://github.com/con/skills/tree/codex/stamped-research-skills" + ], + "decoded_rotated": [ + "https://github.com/con/skills/tree/codex/stamped-research-skills" + ], + "passed": true + }, + { + "name": "con", + "expected": "https://dev.centerforopenneuroscience.org/", + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ], + "decoded_rotated": [ + "https://dev.centerforopenneuroscience.org/" + ], + "passed": true + } + ], + "visual_review": "Required separately; not established by this script." +} diff --git a/2026-usrse/stamped-ai-study/exports/pdf-preview.png b/2026-usrse/stamped-ai-study/exports/pdf-preview.png new file mode 120000 index 00000000..8600de7c --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/pdf-preview.png @@ -0,0 +1 @@ +../../../.git/annex/objects/xW/7q/MD5E-s1024548--93424049cf2a727fe3b3e8ea8d21337d.png/MD5E-s1024548--93424049cf2a727fe3b3e8ea8d21337d.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/exports/source-integrity.json b/2026-usrse/stamped-ai-study/exports/source-integrity.json new file mode 100644 index 00000000..30a5568a --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/source-integrity.json @@ -0,0 +1,141 @@ +{ + "handoff_manifest_sha256": "9e2a82a7bc88f2cfc8770a47de1c4f4966150bcde583f96a733d5abcf3b425a8", + "all_19_verified_before_copy": true, + "scientific_and_build_sources_unchanged": true, + "documentation_change": "README adapted for final retrieval, licenses, superseded initial layout and publication holds.", + "files": [ + { + "path": "README.md", + "handoff_sha256": "507efd7014b44e6f11ab5af1800e2b4a1841e499b04d3cb80b37cace05379087", + "delivered_sha256": "380f5d16dee56641fcfcf20a26b4ffc871ac14e5908750a2760f879534bfb61a", + "bytes": 8206, + "matches_handoff": false + }, + { + "path": "assets/con-ccn-dartmouth-letterhead.svg", + "handoff_sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", + "delivered_sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", + "bytes": 379034, + "matches_handoff": true + }, + { + "path": "assets/con-logo-outlined.svg", + "handoff_sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", + "delivered_sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", + "bytes": 125811, + "matches_handoff": true + }, + { + "path": "assets/repronim_logo.svg", + "handoff_sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", + "delivered_sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", + "bytes": 33939, + "matches_handoff": true + }, + { + "path": "assets/stamped-qr-con.svg", + "handoff_sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", + "delivered_sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", + "bytes": 67605, + "matches_handoff": true + }, + { + "path": "assets/stamped-qr-poster.svg", + "handoff_sha256": "a21e0078d98f2ecc05ac5afcb404f459814df0fb8b8be32d56fce4a22f11f04e", + "delivered_sha256": "a21e0078d98f2ecc05ac5afcb404f459814df0fb8b8be32d56fce4a22f11f04e", + "bytes": 72489, + "matches_handoff": true + }, + { + "path": "assets/stamped-qr-skills.svg", + "handoff_sha256": "07e0002ae67f6a491ac421b76386e7ea7cf957d76b1c57ef7b5c798734b8d324", + "delivered_sha256": "07e0002ae67f6a491ac421b76386e7ea7cf957d76b1c57ef7b5c798734b8d324", + "bytes": 69859, + "matches_handoff": true + }, + { + "path": "assets/stamped-qr-study.svg", + "handoff_sha256": "304f7fe5a93d693824d00b1ee2f14b25c5e6f6d291b129aee44b35f10e77496a", + "delivered_sha256": "304f7fe5a93d693824d00b1ee2f14b25c5e6f6d291b129aee44b35f10e77496a", + "bytes": 73018, + "matches_handoff": true + }, + { + "path": "build-poster.cjs", + "handoff_sha256": "113e2fc4ecff9d73acb94c7e3faa478944a81f3802b5ad33502f98b99eebe13a", + "delivered_sha256": "113e2fc4ecff9d73acb94c7e3faa478944a81f3802b5ad33502f98b99eebe13a", + "bytes": 7205, + "matches_handoff": true + }, + { + "path": "index.html", + "handoff_sha256": "59aa1d1c3f1cedd69000e7acb138c84a2c39ec379d7db0c1309f1e7ccd028436", + "delivered_sha256": "59aa1d1c3f1cedd69000e7acb138c84a2c39ec379d7db0c1309f1e7ccd028436", + "bytes": 16412, + "matches_handoff": true + }, + { + "path": "make-logo-qrs.py", + "handoff_sha256": "0ebb386cb998bbf3a872848627e5b5066ac3da10733242897613ad5f67a49858", + "delivered_sha256": "0ebb386cb998bbf3a872848627e5b5066ac3da10733242897613ad5f67a49858", + "bytes": 10134, + "matches_handoff": true + }, + { + "path": "poster.css", + "handoff_sha256": "878332525bbaa508869b86c74fba4ca69248dea42f65c2f9e7683ca69dc397b4", + "delivered_sha256": "878332525bbaa508869b86c74fba4ca69248dea42f65c2f9e7683ca69dc397b4", + "bytes": 5379, + "matches_handoff": true + }, + { + "path": "results-data.json", + "handoff_sha256": "24d7e20bfe07ade368ffb13b1267e840e4ef833df75d5fee6fd61da7e2406ab9", + "delivered_sha256": "24d7e20bfe07ade368ffb13b1267e840e4ef833df75d5fee6fd61da7e2406ab9", + "bytes": 8330, + "matches_handoff": true + }, + { + "path": "results-placeholder.json", + "handoff_sha256": "b58ecb51b49f778cf3da7739edd7ce95e8094a306c7f14e2325e332e23e5b5c1", + "delivered_sha256": "b58ecb51b49f778cf3da7739edd7ce95e8094a306c7f14e2325e332e23e5b5c1", + "bytes": 2399, + "matches_handoff": true + }, + { + "path": "source-manifest.json", + "handoff_sha256": "d2de681dcd1b8564e155f6c438ff37a8215929c992908e398c3752712f22419e", + "delivered_sha256": "d2de681dcd1b8564e155f6c438ff37a8215929c992908e398c3752712f22419e", + "bytes": 1353, + "matches_handoff": true + }, + { + "path": "template.css", + "handoff_sha256": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", + "delivered_sha256": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", + "bytes": 9470, + "matches_handoff": true + }, + { + "path": "update-results.py", + "handoff_sha256": "7e6db439ac299178942cfc104930529e22a23d5e4d69f731dda914a4f17626cc", + "delivered_sha256": "7e6db439ac299178942cfc104930529e22a23d5e4d69f731dda914a4f17626cc", + "bytes": 13739, + "matches_handoff": true + }, + { + "path": "verify-links.py", + "handoff_sha256": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", + "delivered_sha256": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", + "bytes": 3122, + "matches_handoff": true + }, + { + "path": "verify-pdf.py", + "handoff_sha256": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", + "delivered_sha256": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", + "bytes": 4891, + "matches_handoff": true + } + ] +} diff --git a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf new file mode 120000 index 00000000..b0cf8df7 --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf @@ -0,0 +1 @@ +../../../.git/annex/objects/4Z/ZZ/MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf/MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/index.html b/2026-usrse/stamped-ai-study/index.html new file mode 100644 index 00000000..ef27238c --- /dev/null +++ b/2026-usrse/stamped-ai-study/index.html @@ -0,0 +1,168 @@ + + + + + + + + STAMPED in Practice: Checking AI-assisted Analysis and Its Research Record + + + + + + + +
+
+
+
+

STAMPED · US-RSE 2026

+

STAMPED in PracticeChecking AI-assisted analysis
and its research record

+
+ +
+
+

John A. LeeAustin MacdonaldCody C. BakerYaroslav O. Halchenko

+

Center for Open Neuroscience
Psychological and Brain Sciences
Dartmouth College

+
+ QR code for this poster and its editable sourcePoster + source +
+
+ +
+

An AI assistant can write analysis code. Can another person check its result, rerun the work, and reuse what it produced? STAMPED gives us seven practical questions to ask about that research.

+

We compare the same tasks with and without five reusable skills.A skill is a short set of instructions and checks an assistant can follow. We check scientific results and the records needed to reproduce them.

+
+ +
+
+
+ +

Seven properties, with evidence for each

+

Three paired tasks show useful evidence and limits. A recorded command alone does not show that an analysis is correct.

+ + + + + + + + + + + + +
PropertyPractical questionOriginal abstract: tool planThree pairs: evidence and gaps
Self-containedIs everything needed identified?DataLad + git-annexPartial · both armsPinned inputs and locked software; offline setup untested.
TrackableCan we follow how it changed?Git · DataLad run · con-duct · NIDM · PROVPartial · both armsGit and row audits retained; native DataLad rerun incomplete.
ActionableCan someone run or use it?Tested BIDS Apps + Pixi tasksDemonstrated · both armsAll six science commands replayed; full reports untested.
ModularCan a part be reused on its own?DataLad compositionDemonstrated · both armsThree supplied datasets; workers separated code and outputs.
PortableCan it run in another environment?ApptainerPartial · both armsNew software environments, one Mac; other systems untested.
EphemeralCan a fresh workspace reproduce it?Apptainer · BABS · SlurmPartial · both armsOutputs rebuilt in new checkouts; shared caches retained.
DistributableCan others obtain the right parts?Persistent git-annex remotesPartial · both armsInput license known; new code licensing and external retrieval unverified.
+

Tools preserve the original proposal; many were not used. Judgments cover these three pairs. The coordinator supplied datasets and ran independent replay; later log packaging is curation. Containers and clusters are untested.

+
+ +
+
+

How do response times change across runs?

+ QR code for the study protocol and research evidenceStudy + evidence +
+

We use public mixed-gambles task records from OpenNeuro ds000005: 16 participants and three runs each. We summarize recorded decision times; we do not infer why they changed.

+
+ +
01

One participant

Compare the median response time in the first and third runs.

+
02

The group

Estimate the average within-person change and its uncertainty.

+
03

Sensitivity

Vary the summary and response-time rule; add the middle run.

+
+
Each stage uses two fresh assistant contexts. Progress depends on a correct result and an independent successful replay at the preceding stage.
+
+
+

Checked scientific results

+ +

One participant: median response time 1272 → 1261 ms; change -11 ms. Both arms agree.

+

16 participants: average within-person change +31.3 ms; 95% bootstrap interval [-70.3, 132.7] ms. Both arms agree.

+

Change is third minus first run; the interval includes zero. Missing responses limit interpretation. This is not a causal effect.

+

Sensitivity: median/mean summaries, with or without a 0.2–3.0 s response-time band, gave +11.2 to +58.7 ms; all four 95% intervals include zero.

+ +
+
Scope change: public behavioral data replace the proposed ABCD neuroimaging case. The ABCD result has not been reproduced.
+
+
+ + +
+ +
+
+

Three local pairs, October 2026. Source: Tom et al. (2007), mixed-gambles task, OpenNeuro ds000005 (PDDL). Code, input versions, protocol, and review notes are linked from the study.

+

STAMPED means Self-contained, Trackable, Actionable, Modular, Portable, Ephemeral, Distributable. Poster layout adapted from CON’s US-RSE 2026 ORINOCO Lite poster.

+

OpenAI Codex assisted the analyses and poster draft.

+
+ +
+
+
+ + + diff --git a/2026-usrse/stamped-ai-study/make-logo-qrs.py b/2026-usrse/stamped-ai-study/make-logo-qrs.py new file mode 100644 index 00000000..111df2d8 --- /dev/null +++ b/2026-usrse/stamped-ai-study/make-logo-qrs.py @@ -0,0 +1,232 @@ +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +# /// script +# requires-python = ">=3.11" +# dependencies = ["qrcode==8.2", "Pillow==11.3.0", "zxing-cpp==2.3.0"] +# /// +"""Generate the poster's four vector QR codes and verify their destinations. + +Run with `uv run make-logo-qrs.py --check-dir /tmp/con-qr-checks`. +Requires Inkscape (only to measure the already outlined logo) and rsvg-convert +(for independent rasterization). SVG assets are written to assets/; check images and +the JSON report stay in --check-dir, outside the repository by default. +""" + +import argparse +import copy +import json +from pathlib import Path +import shutil +import subprocess +import tempfile +import xml.etree.ElementTree as ET + +from PIL import Image, ImageDraw, ImageFilter +import qrcode +import zxingcpp + + +ROOT = Path(__file__).resolve().parent +SVG = "http://www.w3.org/2000/svg" +INK = "#193c4d" +BORDER = 4 # Four completely clear modules on every side. +LOGO_WIDTH_FRACTION = 0.42 +DESTINATIONS = { + "poster": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "study": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "skills": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "con": "https://dev.centerforopenneuroscience.org/", +} + +ET.register_namespace("", SVG) + + +def element(tag, attrs=None, text=None): + node = ET.Element(f"{{{SVG}}}{tag}", attrs or {}) + node.text = text + return node + + +def load_logo(inkscape): + """Reuse the corrected paths and original blue; never regenerate its type.""" + source = ROOT / "assets/con-logo-outlined.svg" + original = ET.parse(source).getroot() + # The source retains hidden alternate artwork and wide canvas margins. + # Query the visible blue layer, then convert page-pixel bounds to its + # original SVG coordinates. Only our embedding viewport is cropped. + measured = subprocess.run( + [inkscape, str(source), "--query-id=layer1", "--query-x", "--query-y", + "--query-width", "--query-height"], + check=True, text=True, capture_output=True, + ) + x, y, width, height = map(float, measured.stdout.split()) + vx, vy, vw, vh = map(float, original.get("viewBox").split()) + scale_x = vw / float(original.get("width")) + scale_y = vh / float(original.get("height")) + # A tiny margin absorbs rounding in Inkscape's reported bounds. + margin = 0.05 + logo = element("svg", {"viewBox": ( + f"{vx+x*scale_x-margin:.6f} {vy+y*scale_y-margin:.6f} " + f"{width*scale_x+2*margin:.6f} {height*scale_y+2*margin:.6f}" + )}) + + def visible_copy(node): + if not node.tag.startswith(f"{{{SVG}}}"): + return None + if node.tag in {f"{{{SVG}}}{tag}" for tag in ("metadata", "title", "desc")}: + return None + if "display:none" in node.get("style", "").replace(" ", ""): + return None + result = ET.Element(node.tag, { + key: value for key, value in node.attrib.items() + if not key.startswith("{") # Drop editor-only namespaced metadata. + }) + for child in node: + copied = visible_copy(child) + if copied is not None: + result.append(copied) + return result + + for child in original: + copied = visible_copy(child) + if copied is not None: + logo.append(copied) + assert not logo.findall(f".//{{{SVG}}}text"), "Visible logo must be outlined" + assert not logo.findall(f".//{{{SVG}}}image"), "Logo must remain native vector" + return logo + + +def write_qr(name, url, logo): + qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_H, + border=BORDER, box_size=1) + qr.add_data(url) + qr.make(fit=True) + modules = qr.get_matrix() + size = len(modules) + body_size = size - 2 * BORDER + assert all(not any(row) for row in modules[:BORDER] + modules[-BORDER:]) + assert all(not any(row[:BORDER] + row[-BORDER:]) for row in modules) + root = element("svg", { + "version": "1.1", "width": "45mm", "height": "45mm", + "viewBox": f"0 0 {size} {size}", "role": "img", + "aria-labelledby": "qr-title qr-description", + }) + root.append(element("title", {"id": "qr-title"}, f"CON QR code: {name}")) + root.append(element("desc", {"id": "qr-description"}, + f"{url}; high error correction; four-module quiet zone.")) + root.append(element("rect", {"width": str(size), "height": str(size), + "fill": "#ffffff"})) + # Combine consecutive dark cells into horizontal runs, retaining square + # module geometry and avoiding hairline seams between adjacent cells. + runs = [] + for y, row in enumerate(modules): + x = 0 + while x < size: + if not row[x]: + x += 1 + continue + start = x + while x < size and row[x]: + x += 1 + runs.append(f"M{start},{y}h{x-start}v1h-{x-start}z") + root.append(element("path", {"d": "".join(runs), "fill": INK})) + + _, _, logo_vw, logo_vh = map(float, logo.get("viewBox").split()) + logo_width = body_size * LOGO_WIDTH_FRACTION + logo_height = logo_width * logo_vh / logo_vw + padding = 1.0 + pad_width, pad_height = logo_width + 2 * padding, logo_height + 2 * padding + root.append(element("rect", { + "x": f"{(size-pad_width)/2:.6f}", "y": f"{(size-pad_height)/2:.6f}", + "width": f"{pad_width:.6f}", "height": f"{pad_height:.6f}", + "rx": "0.55", "fill": "#ffffff", + })) + logo_box = element("svg", { + "x": f"{(size-logo_width)/2:.6f}", "y": f"{(size-logo_height)/2:.6f}", + "width": f"{logo_width:.6f}", "height": f"{logo_height:.6f}", + "viewBox": logo.get("viewBox"), "preserveAspectRatio": "xMidYMid meet", + }) + for child in logo: + # Inkscape export may retain metadata/hidden layers; only SVG drawing + # content belongs in the embedded mark. + if not child.tag.startswith(f"{{{SVG}}}"): + continue + if child.tag in {f"{{{SVG}}}metadata", f"{{{SVG}}}title", f"{{{SVG}}}desc"}: + continue + if "display:none" in child.get("style", "").replace(" ", ""): + continue + logo_box.append(copy.deepcopy(child)) + root.append(logo_box) + assert not root.findall(f".//{{{SVG}}}text") + assert not root.findall(f".//{{{SVG}}}image"), "Logo must remain native vector" + destination = ROOT / f"assets/stamped-qr-{name}.svg" + ET.ElementTree(root).write(destination, encoding="utf-8", xml_declaration=True) + assert destination.stat().st_size < 100_000, "QR should remain a small SVG" + return { + "name": name, "url": url, "file": str(destination), + "qr_version": qr.version, "error_correction": "H", + "modules_including_border": size, "quiet_border_modules": BORDER, + "logo_source": "assets/con-logo-outlined.svg", + "logo_width_fraction_of_body": LOGO_WIDTH_FRACTION, + "file_bytes": destination.stat().st_size, + "logo_pad_percent_of_body_area": round(100*pad_width*pad_height/body_size**2, 2), + } + + +def check_code(row, check_dir): + checks = [] + # 200–220 px cover the planned poster CSS sizes; 144/180 retain earlier + # screen-size checks. These are raster checks, not physical-camera scans. + # 177/266 px approximate 30/45 mm at + # 150 dpi; 354/531 px approximate 30/45 mm at 300 dpi. + for pixels in (144, 177, 180, 200, 210, 220, 240, 266, 354, 531, 720): + raster = check_dir / f"qr-{row['name']}-{pixels}px.png" + subprocess.run(["rsvg-convert", "-w", str(pixels), "-h", str(pixels), + "-o", str(raster), row["file"]], check=True) + image = Image.open(raster).convert("RGB") + variants = {"original": image, "rotated-90": image.transpose(Image.Transpose.ROTATE_90)} + if pixels >= 177: + variants["grayscale-softened"] = image.convert("L").filter(ImageFilter.GaussianBlur(0.35)) + variants["rotated-13"] = image.rotate( + 13, resample=Image.Resampling.BICUBIC, expand=True, fillcolor="white" + ) + for variant, candidate in variants.items(): + decoded = zxingcpp.read_barcodes(candidate) + ok = len(decoded) == 1 and decoded[0].text == row["url"] + checks.append({"pixels": pixels, "variant": variant, "passed": ok, + "decoded": [code.text for code in decoded]}) + row["checks"] = checks + return all(check["passed"] for check in checks) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--check-dir", type=Path, + default=Path(tempfile.gettempdir()) / "con-qr-checks") + parser.add_argument("--inkscape", default=shutil.which("inkscape") or + "/Applications/Inkscape.app/Contents/MacOS/inkscape") + args = parser.parse_args() + args.check_dir.mkdir(parents=True, exist_ok=True) + logo = load_logo(args.inkscape) + report = [write_qr(name, url, logo) for name, url in DESTINATIONS.items()] + success = True + for row in report: + passed = check_code(row, args.check_dir) + success = passed and success + print(f"{row['name']}: version {row['qr_version']} / H; " + f"{sum(check['passed'] for check in row['checks'])}/" + f"{len(row['checks'])} decoding checks passed") + (args.check_dir / "decode-report.json").write_text(json.dumps(report, indent=2)+"\n") + overview = Image.new("RGB", (len(report)*360, 400), "white") + draw = ImageDraw.Draw(overview) + for i, row in enumerate(report): + image = Image.open(args.check_dir / f"qr-{row['name']}-354px.png") + overview.paste(image, (360*i+3, 5)) + draw.text((360*i+20, 370), row["name"], fill=INK) + overview.save(args.check_dir / "qr-overview.png") + if not success: + raise SystemExit("QR verification failed; inspect decode-report.json") + + +if __name__ == "__main__": + main() diff --git a/2026-usrse/stamped-ai-study/poster.css b/2026-usrse/stamped-ai-study/poster.css new file mode 100644 index 00000000..bb41c7da --- /dev/null +++ b/2026-usrse/stamped-ai-study/poster.css @@ -0,0 +1,76 @@ +/* SPDX-License-Identifier: CC-BY-SA-4.0 */ +/* Content-specific additions retain the PR 20 canvas, palette, and column grid. */ +.poster { grid-template-rows: 350px 286px 1fr 280px; } +.masthead { grid-template-columns: 1.15fr 840px 1fr; } +.authors { font-size: 40px; } +.authors .affiliation { font-size: 32px; margin-top: 16px; } +.qr-badge { font-size: 32px; } +.study-main { display: flex; flex-direction: column; gap: 52px; } +.study-main > section { flex-shrink: 0; } +.property-section .intro { max-width: 2300px; } +.property-table { width: 100%; border-collapse: collapse; table-layout: fixed; margin-top: 34px; font-size: 36px; line-height: 1.27; } +.property-col { width: 15%; } +.question-col { width: 21%; } +.method-col { width: 23%; } +.evidence-col { width: 41%; } +.property-table th, .property-table td { padding: 25px 23px; text-align: left; vertical-align: top; border-bottom: 2px solid var(--rule); } +.property-table thead { color: white; background: var(--green); } +.property-table thead th { font-size: 34px; line-height: 1.25; padding: 23px; } +.property-table tbody th { font-size: 36px; color: var(--green); } +.property-table tbody tr:nth-child(even) { background: var(--tint); } +.pending { display: block; color: var(--warm); font-size: 32px; font-weight: 700; margin-bottom: 10px; } +.judgment { display: block; color: var(--warm); font-size: 32px; font-weight: 700; margin-bottom: 10px; } +.judgment.demonstrated { color: var(--green); } +.table-note { font-size: 32px; line-height: 1.35; color: var(--muted); margin: 22px 0 0; } +.stages-section { border-top: 6px solid var(--green); padding-top: 34px; } +.section-heading { display: grid; grid-template-columns: 1fr 214px; gap: 44px; align-items: center; margin-bottom: 22px; } +.section-heading h2 { margin-bottom: 0; } +.section-heading .qr-badge { justify-self: end; } +.stage-cards { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 28px; margin-top: 36px; text-decoration: none; } +.stage-cards > div { border-top: 8px solid var(--con-blue); background: white; padding: 28px 32px 32px; min-height: 325px; } +.stage-number { font-size: 44px; color: var(--green); font-weight: 700; } +.stage-cards h3 { margin: 18px 0; font-size: 44px; } +.stage-cards p { margin: 0; font-size: 36px; line-height: 1.3; } +.stages-figure figcaption { margin-top: 22px; font-size: 32px; } +.scientific-results { margin-top: 28px; border-top: 3px solid var(--rule); padding-top: 26px; } +.scientific-results h3 { font-size: 42px; margin-bottom: 16px; } +.scientific-results p { font-size: 36px; line-height: 1.3; margin: 0; } +.scientific-results p + p { margin-top: 14px; } +.scientific-results .science-note { font-size: 32px; color: var(--muted); } +.scope-note { border-left: 7px solid var(--warm); background: #f0e4d5; padding: 26px 32px; margin-top: 36px; font-size: 36px; line-height: 1.35; } +.outcomes > section + section { margin-top: 44px; } +.pair-comparison { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 32px; } +.pair-comparison > div { background: var(--tint); border-top: 8px solid var(--green); padding: 28px; } +.pair-comparison > div + div { border-color: var(--con-blue); } +.pair-comparison h3 { font-size: 43px; margin-bottom: 15px; } +.pair-comparison p { font-size: 36px; line-height: 1.3; margin: 0; } +.method-spec { font-size: 32px; line-height: 1.35; color: var(--muted); margin: 24px 0 0; } +.skills-section { display: grid; grid-template-columns: 1fr 214px; gap: 30px; align-items: center; padding-top: 32px; border-top: 3px solid var(--rule); } +.skills-section p { margin-bottom: 0; } +.measurement-section { padding-top: 32px; border-top: 3px solid var(--rule); } +.measurement-section ul { margin: 0; padding-left: 43px; font-size: 36px; line-height: 1.35; } +.measurement-section li + li { margin-top: 19px; } +.result-box { background: var(--tint); padding: 32px; border-top: 8px solid var(--con-blue); } +.result-box p { font-size: 36px; line-height: 1.35; margin: 0; } +.result-box .section-label { font-size: 32px; margin-bottom: 18px; } +.result-box .result-note { font-size: 32px; color: var(--muted); margin-top: 24px; } +.outcome-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 32px; line-height: 1.25; } +.outcome-table th, .outcome-table td { text-align: left; vertical-align: top; padding: 16px 8px; border-bottom: 2px solid var(--rule); } +.outcome-table th:first-child { width: 26%; } +.outcome-table th { font-size: 32px; } +.outcome-table td { width: 37%; } +.outcome-table .worker-time { display: block; font-weight: 700; font-size: 38px; margin-bottom: 10px; } +.outcome-table .check-status { display: block; font-size: 32px; } +.outcome-table .screening-failed { color: var(--warm); font-weight: 700; } +.failure-summary { border-top: 3px solid var(--rule); padding-top: 26px; } +.failure-summary h3 { font-size: 42px; } +.failure-summary p { font-size: 34px; line-height: 1.32; margin: 0; } +.outcomes > .callout { margin-top: auto; } +.callout p { font-size: 36px; } +.footer p, .footer .thanks { font-size: 32px; } +.footer { grid-template-columns: 1.2fr 1fr; } +.partner-affiliation { font-size: 32px; } +.partner-affiliation strong { font-size: 36px; } +.partners .qr-badge img { max-height: none; } +.con-footer { flex-shrink: 0; } +.repronim-support { display: flex; gap: 22px; align-items: center; font-size: 32px; line-height: 1.3; text-decoration: none; } diff --git a/2026-usrse/stamped-ai-study/results-data.json b/2026-usrse/stamped-ai-study/results-data.json new file mode 100644 index 00000000..c07d559a --- /dev/null +++ b/2026-usrse/stamped-ai-study/results-data.json @@ -0,0 +1,216 @@ +{ + "status": "complete_evaluations", + "timing_definition": "Worker wall seconds only; setup and evaluator replay excluded; 480-second cap per attempt.", + "display_rounding": "Whole seconds for worker timing; one decimal millisecond for cohort results.", + "data_check_scope": "Correctness on the pinned source data, not complete implementation-contract correctness. Separate screening probes are shown when available.", + "reviewed_stages": [ + "01", + "02", + "03" + ], + "property_judgment_scope": "Three reviewed pairs; worker evidence distinguished from supplied seeds and coordinator replay/curation; no aggregate score or general certification.", + "stages": [ + { + "stage": "01", + "label": "One person", + "baseline": { + "worker_wall_seconds": 270.2424976249458, + "correctness": "passed", + "fresh_replay": "passed", + "evidence": "research/mixed-gambles-design/evaluator/stage-01/assessment.json" + }, + "treatment": { + "worker_wall_seconds": 358.4730830839835, + "correctness": "passed", + "fresh_replay": "passed", + "evidence": "research/mixed-gambles-design/evaluator/stage-01/assessment.json" + } + }, + { + "stage": "02", + "label": "Cohort", + "baseline": { + "worker_wall_seconds": 387.1459320409922, + "correctness": "passed", + "fresh_replay": "passed", + "evidence": "research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json", + "worker_outcome": "completed", + "scalar_checks": 489, + "replay_byte_identical": true + }, + "treatment": { + "worker_wall_seconds": 412.5168959159637, + "correctness": "passed", + "fresh_replay": "passed", + "evidence": "research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json", + "worker_outcome": "completed", + "scalar_checks": 489, + "replay_byte_identical": true + } + }, + { + "stage": "03", + "label": "Sensitivity", + "baseline": { + "worker_wall_seconds": 382.97944491694216, + "correctness": "passed", + "fresh_replay": "passed", + "evidence": "research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json", + "worker_outcome": "completed", + "scalar_checks": 2042, + "replay_byte_identical": true, + "screening_contract": "passed", + "screening_contract_evidence": { + "path": "research/mixed-gambles-design/evaluator/stage-03/baseline-screening-probes.json", + "sha256": "fbe60031ebbd94657a59d26603ec54545e0af0ea1c274203aef37fd1b47c7ee2" + } + }, + "treatment": { + "worker_wall_seconds": 474.4654870419763, + "correctness": "passed", + "fresh_replay": "passed", + "evidence": "research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json", + "worker_outcome": "completed", + "scalar_checks": 2042, + "replay_byte_identical": true, + "screening_contract": "failed", + "screening_contract_evidence": { + "path": "research/mixed-gambles-design/evaluator/stage-03/treatment-screening-probes.json", + "sha256": "b427318d0b4d6fc4e83c710acfd0fa3123d23396c78354ee32b6ae285518abfd" + } + } + } + ], + "scientific_results": { + "stage01": { + "run01_median_ms": 1272.0, + "run03_median_ms": 1261.0, + "change_ms": -11.0 + }, + "stage02": { + "ci95_ms": [ + -70.284375, + 132.65781249999998 + ], + "mean_change_ms": 31.343749999999993, + "n": 16, + "checked_arms": [ + "baseline", + "treatment" + ], + "cohort_by_arm": { + "baseline": { + "ci95_ms": [ + -70.284375, + 132.65781249999998 + ], + "mean_change_ms": 31.343749999999993, + "n": 16 + }, + "treatment": { + "ci95_ms": [ + -70.284375, + 132.65781249999998 + ], + "mean_change_ms": 31.343749999999993, + "n": 16 + } + }, + "checked_arms_agree": true + }, + "stage03": { + "variants_by_arm": { + "baseline": { + "mean_band": { + "ci95_ms": [ + -69.95707276536827, + 128.12038918360184 + ], + "mean_change_ms": 27.7099102239331, + "n": 16 + }, + "mean_primary": { + "ci95_ms": [ + -36.58981756853354, + 150.72133936355112 + ], + "mean_change_ms": 58.70382847148604, + "n": 16 + }, + "median_band": { + "ci95_ms": [ + -93.71953124999997, + 120.93984374999997 + ], + "mean_change_ms": 11.156250000000007, + "n": 16 + }, + "median_primary": { + "ci95_ms": [ + -70.284375, + 132.65781249999998 + ], + "mean_change_ms": 31.343749999999993, + "n": 16 + } + }, + "treatment": { + "mean_band": { + "ci95_ms": [ + -69.95707276536827, + 128.12038918360182 + ], + "mean_change_ms": 27.709910223933086, + "n": 16 + }, + "mean_primary": { + "ci95_ms": [ + -36.58981756853354, + 150.72133936355112 + ], + "mean_change_ms": 58.70382847148604, + "n": 16 + }, + "median_band": { + "ci95_ms": [ + -93.71953124999997, + 120.93984374999997 + ], + "mean_change_ms": 11.156250000000007, + "n": 16 + }, + "median_primary": { + "ci95_ms": [ + -70.284375, + 132.65781249999998 + ], + "mean_change_ms": 31.343749999999993, + "n": 16 + } + } + }, + "checked_arms": [ + "baseline", + "treatment" + ], + "checked_arms_agree": true + } + }, + "source_sha256": { + "research/mixed-gambles-design/evaluator/stage-01/assessment.json": "7481c0a07ab8ee82dd13ef124666ff6deb017700887f43a977636bf6e7b5fce0", + "research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json": "ac7178690f04f8df091269a0a81db8310884c8bc588497b7f34979fd6889c6ee", + "research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json": "cec1d97939ff78bc0b7df991b1357a8d6ee1e33be51035e1c6e3610979aee379", + "research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json": "5607651b7bdb2f5311219021ffed301be000167dda02f8a2cd1d8a2e6a624bd9", + "research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json": "cdb3b579667234de7a28d98c98e43d8d748633345836a9c72b889ef051cc3211", + "research/mixed-gambles-design/evaluator/stage-01/pair-review.json": "95cd955f3ef038fd6a188fab37bc03f41a8907b83badfb660e0ada88b879ad6f", + "research/mixed-gambles-design/evaluator/stage-02/assessment.json": "be41ba2194ae4afa4ef063e9906ff1d9481d52676320605567b2f623382bb691", + "research/mixed-gambles-design/evaluator/stage-02/pair-review.json": "47b7eacd5ac40970375bc4c9568e27e2583cc430869f0e202fecb082dbbb66ce", + "research/mixed-gambles-design/evaluator/stage-03/assessment.json": "3617219d7e21ec949cabb7ee8a9e554b37df2f7972d843277b6d6e014cc0d0f5", + "research/mixed-gambles-design/evaluator/stage-03/pair-review.json": "8fa644b275bbd1906fc823f45477fb5c09503d7a939c468a0cfdfc20ae3d63be", + "research/mixed-gambles-design/evaluator/stage-01/baseline-original-normalized.json": "8018742de7c0e382a0f7529be54669638da3401c92d4743512f21a75b2be1a81", + "research/mixed-gambles-design/evaluator/stage-02/baseline-original-normalized.json": "9ba020055ccfe59adea31db21ab70de78ecceca5488faa29887e733694988058", + "research/mixed-gambles-design/evaluator/stage-02/treatment-original-normalized.json": "9ba020055ccfe59adea31db21ab70de78ecceca5488faa29887e733694988058", + "research/mixed-gambles-design/evaluator/stage-03/baseline-original-normalized.json": "8bac3c8c0253def4bf3e852a02693529c9b8ef0409a2229bbcc0de2c0e667e0a", + "research/mixed-gambles-design/evaluator/stage-03/treatment-original-normalized.json": "51a9c6e284fe52b272865a86a0501a6cab497316fa6fe388acc5f00e55eec2be" + } +} diff --git a/2026-usrse/stamped-ai-study/source-manifest.json b/2026-usrse/stamped-ai-study/source-manifest.json new file mode 100644 index 00000000..017b65fc --- /dev/null +++ b/2026-usrse/stamped-ai-study/source-manifest.json @@ -0,0 +1,36 @@ +{ + "reference": { + "repository": "https://github.com/con/talks", + "pull_request": 20, + "commit": "8a15964ed5cbcd07b04d1f325e848c788e672b05", + "html": "2026-usrse/orinoco-lite_poster.html" + }, + "submitted_title": "STAMPED in Practice: Reproducing a Scientific Result Using ABCD Neuroimaging Data", + "current_scope": "Public mixed-gambles response-time case study; ABCD reproduction not performed.", + "authors": [ + "John A. Lee", + "Austin Macdonald", + "Cody C. Baker", + "Yaroslav O. Halchenko" + ], + "assets": { + "con-logo-outlined.svg": { + "bytes": 125811, + "md5": "5429db5139ba49cc5a94dceb1532abe0", + "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", + "source": "2026-usrse/orinoco-lite/assets/con-logo-outlined.svg" + }, + "con-ccn-dartmouth-letterhead.svg": { + "bytes": 379034, + "md5": "be7ae71a14ff2301bb0cf1cde08457e9", + "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", + "source": "2026-usrse/orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg" + }, + "repronim_logo.svg": { + "bytes": 33939, + "md5": "cfe9b83acfb1f1292027c0a214c4b0f9", + "sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", + "source": "2026-usrse/orinoco-lite/assets/repronim_logo.svg" + } + } +} diff --git a/2026-usrse/stamped-ai-study/template.css b/2026-usrse/stamped-ai-study/template.css new file mode 100644 index 00000000..32100f02 --- /dev/null +++ b/2026-usrse/stamped-ai-study/template.css @@ -0,0 +1,128 @@ +/* SPDX-License-Identifier: CC-BY-SA-4.0 + * Adapted from con/talks PR 20, 8a15964ed5cbcd07b04d1f325e848c788e672b05. + * All poster text has a minimum 32 CSS px (24 pt) at full size. */ + + /* Editable 44 × 44 inch poster. Screen and print share the same canvas. */ + :root { + --paper: #f6f2e9; --ink: #193c4d; --green: #286857; + --muted: #526c76; --rule: #cbd6ce; --tint: #e6eee5; + --body-text: 36px; --con-blue: #87aade; + --warm: #b55c28; --canvas-width: 4224px; --canvas-height: 4224px; + } + * { box-sizing: border-box; } + body { margin: 0; background: #d8ddd9; color: var(--ink); font-family: Arial, Helvetica, sans-serif; } + a { color: inherit; text-decoration-thickness: 2px; text-underline-offset: 5px; } + a:focus-visible { outline: 6px solid var(--warm); outline-offset: 6px; } + .screen-tools { display: flex; gap: 18px; align-items: center; padding: 14px 24px; font-size: 32px; } + .screen-tools button { padding: 7px 14px; border: 1px solid #94a49a; border-radius: 5px; color: var(--ink); background: white; cursor: pointer; } + .screen-tools a { margin-left: auto; } + #viewport { position: relative; margin: 0 auto 24px; } + .poster { width: var(--canvas-width); height: var(--canvas-height); transform-origin: top left; + background: var(--paper); border-top: 24px solid var(--green); padding: 60px 88px 58px; + display: grid; grid-template-rows: 350px 286px 1fr 280px; gap: 36px; } + .masthead { display: grid; grid-template-columns: 1.15fr 840px 1fr; gap: 78px; align-items: center; } + .eyebrow { color: var(--green); font-size: 32px; font-weight: 700; text-transform: uppercase; letter-spacing: 2px; margin: 0 0 22px; } + h1 { margin: 0; font-size: 91px; line-height: 1.03; letter-spacing: -2px; } + h1 span { display: block; margin-top: 22px; font-size: 48px; font-weight: 400; letter-spacing: 0; line-height: 1.17; } + .con-logo { display: block; width: 840px; } + .author-panel { display: flex; align-items: center; gap: 52px; justify-self: end; } + .authors { font-size: 43px; line-height: 1.25; } + .authors p { margin: 0; } + .authors .name { display: block; } + .authors .affiliation { font-size: 32px; margin-top: 22px; color: var(--muted); line-height: 1.3; } + .lead { background: var(--ink); color: white; margin: 0 -88px; padding: 34px 88px; + display: grid; grid-template-columns: 1fr 1fr; gap: 76px; align-items: center; } + .lead p { margin: 0; font-size: 39px; line-height: 1.33; } + .lead .pitch { border-left: 3px solid #647d86; padding-left: 64px; } + .pitch strong { display: block; font-size: 45px; line-height: 1.2; margin-bottom: 18px; } + .pitch span { font-size: 35px; } + .columns { display: grid; grid-template-columns: 2fr 1fr; gap: 44px; min-height: 0; } + .comparison { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto 1fr; gap: 36px 42px; min-height: 0; } + .deployment { min-width: 0; } + .deployment + .deployment { border-left: 2px solid var(--rule); padding-left: 40px; } + .outcomes { border-left: 2px solid var(--rule); padding-left: 40px; display: flex; flex-direction: column; min-height: 0; } + .outcomes > * { flex-shrink: 0; } + .section-label { margin: 0 0 14px; color: var(--green); font-size: 32px; letter-spacing: 1.7px; text-transform: uppercase; font-weight: 700; } + h2 { margin: 0 0 22px; font-size: 63px; line-height: 1.08; } + h3 { margin: 0 0 24px; font-size: 46px; line-height: 1.15; } + .intro { font-size: 37px; line-height: 1.34; margin: 0; } + .column-head { height: 350px; position: relative; } + .with-video h2, .with-video .intro { margin-right: 242px; } + .with-video .video-qr { position: absolute; top: 45px; right: 0; } + figure { margin: 0; } + .image-link { display: block; } + .component-art { height: 550px; } + .component-art img { width: 100%; height: 100%; object-fit: contain; display: block; } + .diagram-note { min-height: 238px; display: grid; grid-template-columns: 1fr 214px; gap: 32px; align-items: center; } + .component-figure { margin-bottom: 18px; } + figcaption { font-size: 32px; line-height: 1.35; color: var(--muted); } + figcaption strong { color: var(--ink); } + .art-credit { display: block; font-size: 32px; margin-top: 12px; } + .qr-badge { display: flex; flex-direction: column; align-items: center; gap: 8px; width: 214px; color: var(--ink); text-decoration: none; text-align: center; font-size: 32px; line-height: 1.15; font-weight: 700; } + .qr-badge img { width: 204px; height: 204px; display: block; background: white; border-radius: 7px; } + .site-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } + .figure { background: white; border: 2px solid var(--rule); border-radius: 12px; overflow: hidden; } + .figure img { display: block; width: 100%; height: 100%; object-fit: contain; } + .webshot { height: 740px; } + .webshot img { object-fit: contain; object-position: top center; } + .site-pair figcaption { font-size: 32px; margin-top: 12px; } + .site-caption { display: grid; grid-template-columns: 1fr 214px; gap: 30px; align-items: center; min-height: 242px; } + .site-caption h3 { font-size: 39px; margin: 0 0 13px; } + .site-caption p { font-size: 32px; line-height: 1.35; margin: 0; color: var(--muted); } + .shared-editor { grid-column: 1 / -1; border-top: 6px solid var(--green); padding-top: 32px; display: grid; grid-template-columns: 1.6fr 1fr; gap: 46px; align-items: center; min-height: 0; } + .editor { height: 730px; } + .editor img { object-fit: contain; object-position: center; } + .shared-editor figcaption { margin-top: 14px; } + .editor-copy h2 { font-size: 61px; margin: 0 0 30px; } + .editor-copy p { font-size: 40px; line-height: 1.4; margin: 0 0 27px; } + .editor-copy .editor-caption { color: var(--muted); font-size: 32px; } + .workflow-example { display: grid; grid-template-columns: 1fr 214px; gap: 28px; align-items: center; border-top: 2px solid var(--rule); padding-top: 22px; } + .editor-copy .workflow-example p { font-size: 32px; line-height: 1.35; margin: 0; } + .value-section { margin-top: 28px; } + .value-section p { margin: 0 0 28px; font-size: var(--body-text); line-height: 1.4; } + .local-value { display: grid; grid-template-columns: .75fr 1.25fr; gap: 30px; align-items: center; } + .local-value .graph-description { margin: 0; } + .graph-copy .qr-badge { margin-top: 30px; } + .graph { height: 890px; background: transparent; border: 0; } + .graph img { object-fit: contain; } + .local-value figcaption { font-size: 32px; margin-top: 12px; } + .meaning { margin-top: 52px; border-top: 3px solid var(--rule); padding-top: 32px; } + .meaning h3 { font-size: 50px; } + .meaning p { font-size: 36px; } + .linked-records { margin: 18px 0 28px; } + .linked-records svg { display: block; width: 100%; height: auto; } + .linked-records .source { fill: var(--ink); font-size: 32px; font-weight: 700; } + .linked-records .node { fill: var(--tint); stroke: var(--rule); stroke-width: 2px; } + .linked-records .name { fill: var(--ink); font-size: 32px; font-weight: 700; } + .linked-records .match { fill: var(--green); font-size: 32px; font-weight: 700; } + .linked-records .relation { fill: var(--ink); font-size: 32px; } + .linked-records .vocabulary { fill: var(--muted); font-size: 32px; } + .ai-copy { border-top: 3px solid var(--rule); padding-top: 32px; } + .report-example { font-size: 34px; line-height: 1.4; padding: 28px; background: var(--tint); margin-top: 32px; } + .report-example strong { display: block; font-size: 38px; margin-bottom: 15px; } + .callout { margin-top: auto; border-top: 7px solid var(--warm); background: #f0e4d5; padding: 32px; font-size: 37px; line-height: 1.4; } + .callout h3 { font-size: 42px; margin-bottom: 20px; } + .callout p { margin: 0; } + .callout p + p { margin-top: 18px; } + .footer { border-top: 3px solid var(--rule); padding-top: 28px; display: grid; grid-template-columns: 1.1fr 1fr; gap: 70px; align-items: center; } + .footer p { margin: 0 0 14px; font-size: 32px; line-height: 1.3; } + .footer .thanks { color: var(--muted); font-size: 32px; } + .snapshot strong { color: var(--green); } + .snapshot a { white-space: nowrap; } + .partners { display: flex; align-items: center; justify-content: space-between; gap: 35px; } + .partners img { max-height: 140px; max-width: 440px; object-fit: contain; } + .partners .repronim { width: 146px; height: 146px; } + .partners .dartmouth { width: 126px; height: 136px; object-fit: fill; } + .partner-affiliation { display: flex; gap: 22px; align-items: center; font-size: 32px; line-height: 1.3; color: #00693e; } + .partner-affiliation strong { display: block; font-size: 33px; } + .partner-affiliation a { text-decoration: none; } + .partners .psychoinformatics { display: flex; align-items: center; gap: 20px; font-size: 32px; color: var(--ink); text-decoration: none; } + .partners .psychoinformatics img { width: 108px; height: 140px; } + @page { size: 44in 44in; margin: 0; } + @media print { + html, body { width: 44in; height: 44in; background: white; print-color-adjust: exact; -webkit-print-color-adjust: exact; } + .screen-tools { display: none; } + #viewport { width: 44in !important; height: 44in !important; margin: 0; } + .poster { transform: none !important; break-inside: avoid; } + } + diff --git a/2026-usrse/stamped-ai-study/update-results.py b/2026-usrse/stamped-ai-study/update-results.py new file mode 100644 index 00000000..56119019 --- /dev/null +++ b/2026-usrse/stamped-ai-study/update-results.py @@ -0,0 +1,240 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +"""Copy checked evaluator evidence into editable poster text; never run workers. + +The generated JSON preserves precise values and source hashes. Display rounding +applies only to HTML. Missing evaluations stay pending. No study result is +inferred from a worker's self-report or a successful process return code. +""" +import argparse +import hashlib +import html +import json +import math +import re +from pathlib import Path + +HERE = Path(__file__).resolve().parent +WEB = ("https://github.com/leej3/stamped-ai-research/blob/" + "codex/stamped-poster-study/") +ARMS = ("baseline", "treatment") + + +def load(root, relative, sources): + path = root / relative + raw = path.read_bytes() + sources[relative] = hashlib.sha256(raw).hexdigest() + return json.loads(raw) + + +def status(value): + if value is True: + return "passed" + if value is False: + return "failed" + return "pending" + + +def wall(value): + if not isinstance(value, (int, float)) or not math.isfinite(value) or value < 0: + raise ValueError(f"Invalid elapsed seconds: {value!r}") + return value + + +def numbers_match(left, right, label): + if len(left) != len(right) or any(not math.isfinite(v) for v in [*left, *right]): + raise ValueError(f"Invalid numeric evidence in {label}") + return all(abs(a - b) <= 1e-6 for a, b in zip(left, right, strict=True)) + + +def replace(text, key, content): + pattern = rf"().*?()" + output, count = re.subn(pattern, lambda m: m[1] + "\n" + content + "\n " + m[2], text, flags=re.S) + if count != 1: + raise ValueError(f"Expected exactly one {key} section, found {count}") + return output + + +def linked(label, evidence): + return f'{html.escape(label)}' + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--study-root", required=True, type=Path) + parser.add_argument("--require-complete", action="store_true", + help="Refuse any unassessed arm before changing poster files.") + args = parser.parse_args() + root = args.study_root.resolve(strict=True) + prefix = "research/mixed-gambles-design/evaluator" + sources = {} + stages = [] + for number, label in (("01", "One person"), ("02", "Cohort"), ("03", "Sensitivity")): + row = {"stage": number, "label": label} + for arm in ARMS: + result = {"worker_wall_seconds": None, "correctness": "pending", + "fresh_replay": "pending", "evidence": None} + if number == "01": + rel = f"{prefix}/stage-01/assessment.json" + if (root / rel).exists(): + assessment = load(root, rel, sources) + value = assessment["arms"][arm] + result.update(worker_wall_seconds=wall(value["effort"]["wall_seconds"]), + correctness=value["numeric_comparison"]["status"], + fresh_replay=value["fresh_replay"]["status"], evidence=rel) + if value["counts_and_exclusions"]["status"] != "passed" or value["source_and_scope"]["status"] != "passed": + result["correctness"] = "failed" + else: + rel = f"{prefix}/stage-{number}/{arm}-evaluation.json" + if (root / rel).exists(): + value = load(root, rel, sources) + if value.get("worker_stopped") is not True: + raise ValueError(f"Evaluation is not a stopped attempt: {rel}") + result.update(worker_wall_seconds=wall(value["wall_seconds"]), + correctness=status(value.get("science_passed")), + fresh_replay=status(value.get("replay_passed")), evidence=rel) + result["worker_outcome"] = value.get("worker_outcome") + result["scalar_checks"] = value.get("versions", {}).get("original", {}).get("scalar_checks") + result["replay_byte_identical"] = value.get("replay_byte_identical") + if "screening_contract_passed" in value: + result["screening_contract"] = status(value["screening_contract_passed"]) + result["screening_contract_evidence"] = value.get("screening_contract_evidence") + for name in ("correctness", "fresh_replay"): + if result[name] not in {"passed", "failed", "pending", "not_attempted"}: + raise ValueError(f"Unsupported {name} status in {number} {arm}: {result[name]}") + row[arm] = result + stages.append(row) + reviewed_stages = [] + for number in ("01", "02", "03"): + assessment_rel = f"{prefix}/stage-{number}/assessment.json" + pair_rel = f"{prefix}/stage-{number}/pair-review.json" + if (root / assessment_rel).exists() and (root / pair_rel).exists(): + assessment = load(root, assessment_rel, sources) + pair = load(root, pair_rel, sources) + if all(pair.get(k) is True for k in ("both_arms_stopped", "failures_retained", + "replay_accounted", "scientific_checks_accounted")): + if set(assessment.get("arms", {})) != set(ARMS): + raise ValueError(f"Pair assessment lacks an arm: {assessment_rel}") + reviewed_stages.append(number) + complete = (len(reviewed_stages) == 3 and + all(row[arm][name] != "pending" for row in stages for arm in ARMS + for name in ("correctness", "fresh_replay"))) + if args.require_complete and not complete: + raise ValueError("At least one arm or paired assessment is incomplete; no poster files changed.") + + rows = [] + names = {"passed": "Passed", "failed": "Failed", "pending": "Pending", + "not_attempted": "Not attempted"} + for row in stages: + cells = [] + for arm in ARMS: + value = row[arm] + timing = f'{value["worker_wall_seconds"]:.0f} s' if value["worker_wall_seconds"] is not None else "Pending" + if value["evidence"]: + timing = linked(timing, value["evidence"]) + cells.append(f'{timing}' + f'Data checks: {names[value["correctness"]]}' + f'Replay: {names[value["fresh_replay"]]}' + + (f'' + f'Screening: {names[value["screening_contract"]]}' + if "screening_contract" in value else "") + '') + rows.append(f'{row["label"]}{"".join(cells)}') + matrix = ('' + '' + '' + "\n".join(rows) + '
TaskBaselineWith skills
') + + science = [] + scientific_values = {} + if all(stages[0][arm]["correctness"] == "passed" for arm in ARMS): + rel = f"{prefix}/stage-01/baseline-original-normalized.json" + value = load(root, rel, sources) + summaries = {row["run"]: row["rt_ms"] for row in value["run_summaries"]} + change = value["participant_changes_ms"]["sub-01"] + scientific_values["stage01"] = {"run01_median_ms": summaries["01"], + "run03_median_ms": summaries["03"], "change_ms": change} + science.append(f'

One participant: median response time ' + f'{summaries["01"]:.0f} → {summaries["03"]:.0f} ms; ' + f'change {change:+.0f} ms. Both arms agree.

') + cohort = [] + for arm in ARMS: + if stages[1][arm]["correctness"] == "passed": + rel = f"{prefix}/stage-02/{arm}-original-normalized.json" + value = load(root, rel, sources) + cohort.append((arm, value["cohort"])) + if cohort: + chosen = cohort[0][1] + agree = True + for _, candidate in cohort[1:]: + agree = agree and numbers_match([chosen["n"], chosen["mean_change_ms"], *chosen["ci95_ms"]], + [candidate["n"], candidate["mean_change_ms"], *candidate["ci95_ms"]], "stage 02 cohort") + scientific_values["stage02"] = {**chosen, "checked_arms": [arm for arm, _ in cohort], + "cohort_by_arm": dict(cohort), "checked_arms_agree": agree if len(cohort) == 2 else None} + lo, hi = chosen["ci95_ms"] + if len(cohort) == 2: + scope = "Both arms agree." if agree else "Baseline shown; checked arms disagree. See study evidence." + else: + scope = f'Verified {"skills" if cohort[0][0] == "treatment" else "baseline"} arm only; see paired outcomes.' + science.append(f'

{chosen["n"]} participants: average within-person change ' + f'{chosen["mean_change_ms"]:+.1f} ms; 95% bootstrap interval ' + f'[{lo:.1f}, {hi:.1f}] ms. {scope}

') + science.append('

Change is third minus first run; the interval includes zero. ' + 'Missing responses limit interpretation. This is not a causal effect.

') + if "03" not in reviewed_stages: + science.append('

Sensitivity results await assessment.

') + else: + variants = {} + variant_names = {"mean_band", "mean_primary", "median_band", "median_primary"} + for arm in ARMS: + if stages[2][arm]["correctness"] != "passed": + continue + rel = f"{prefix}/stage-03/{arm}-original-normalized.json" + value = load(root, rel, sources) + if set(value["all_variants"]) != variant_names: + raise ValueError(f"Expected all four declared sensitivity variants: {rel}") + variants[arm] = {k: v["cohort"] for k, v in value["all_variants"].items()} + agree = None + if len(variants) == 2: + agree = all(numbers_match( + [variants["baseline"][name]["n"], variants["baseline"][name]["mean_change_ms"], *variants["baseline"][name]["ci95_ms"]], + [variants["treatment"][name]["n"], variants["treatment"][name]["mean_change_ms"], *variants["treatment"][name]["ci95_ms"]], + "stage 03 " + name) for name in sorted(variant_names)) + scientific_values["stage03"] = {"variants_by_arm": variants, "checked_arms": list(variants), "checked_arms_agree": agree} + if variants: + shown_arm = next(iter(variants)) + shown = variants[shown_arm] + changes = [v["mean_change_ms"] for v in shown.values()] + include_zero = sum(v["ci95_ms"][0] <= 0 <= v["ci95_ms"][1] for v in shown.values()) + interval_note = ("all four 95% intervals include zero" if include_zero == 4 + else f"{include_zero} of four 95% intervals include zero") + scope = "" + if len(variants) == 1: + scope = f' Verified {"skills" if shown_arm == "treatment" else "baseline"} arm only.' + elif not agree: + scope = " Baseline shown; checked arms disagree." + science.append('

Sensitivity: median/mean summaries, with or without a ' + f'0.2–3.0 s response-time band, gave {min(changes):+.1f} to {max(changes):+.1f} ms; ' + f'{interval_note}.{scope}

') + else: + science.append('

Neither arm produced a verified sensitivity result. ' + 'Failed or missing checks are retained in the study evidence.

') + + data = {"status": "complete_evaluations" if complete else "interim_checked_results", + "timing_definition": "Worker wall seconds only; setup and evaluator replay excluded; 480-second cap per attempt.", + "display_rounding": "Whole seconds for worker timing; one decimal millisecond for cohort results.", + "data_check_scope": "Correctness on the pinned source data, not complete implementation-contract correctness. Separate screening probes are shown when available.", + "reviewed_stages": reviewed_stages, + "property_judgment_scope": "Three reviewed pairs; worker evidence distinguished from supplied seeds and coordinator replay/curation; no aggregate score or general certification." if complete else "Interim stage-specific evidence; no aggregate score or general certification.", + "stages": stages, "scientific_results": scientific_values, "source_sha256": sources} + document = (HERE / "index.html").read_text() + document = replace(document, "ARM_RESULTS", matrix) + document = replace(document, "SCIENCE_RESULTS", "\n".join(science)) + # Write only once every source and generated claim has been checked above. + (HERE / "results-data.json").write_text(json.dumps(data, indent=2, allow_nan=False) + "\n") + (HERE / "index.html").write_text(document) + print(json.dumps({"evaluations_complete": complete, "checked_arms": sum(row[arm]["correctness"] != "pending" for row in stages for arm in ARMS), + "source_files": len(sources), "output": str(HERE / "results-data.json")})) + + +if __name__ == "__main__": + main() diff --git a/2026-usrse/stamped-ai-study/verify-links.py b/2026-usrse/stamped-ai-study/verify-links.py new file mode 100644 index 00000000..596a6de1 --- /dev/null +++ b/2026-usrse/stamped-ai-study/verify-links.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +"""Check published destinations from a current poster layout audit. + +This read-only network check records endpoint availability, not scientific +validity or the retrievability of every asset linked from those pages. +""" +import argparse +from concurrent.futures import ThreadPoolExecutor +from datetime import datetime, timezone +import hashlib +import json +from pathlib import Path +import urllib.error +import urllib.parse +import urllib.request + + +def inspect(url): + parsed = urllib.parse.urlsplit(url) + if parsed.scheme != 'https' or parsed.username or parsed.password: + return {'url': url, 'passed': False, 'error': 'Expected public HTTPS URL'} + row = {'url': url, 'checked_at': datetime.now(timezone.utc).isoformat()} + for method in ('HEAD', 'GET'): + try: + request = urllib.request.Request(url, method=method, + headers={'User-Agent': 'STAMPED-poster-link-check/1.0'}) + with urllib.request.urlopen(request, timeout=30) as response: + row.update(method=method, http_status=response.status, + final_url=response.url, passed=200 <= response.status < 300) + if method == 'GET': + row['body_read_limit'] = 65536 + row['prefix_sha256'] = hashlib.sha256(response.read(65536)).hexdigest() + return row + except urllib.error.HTTPError as error: + if method == 'HEAD' and error.code in (403, 405): + continue + row.update(method=method, http_status=error.code, passed=False) + return row + except (urllib.error.URLError, TimeoutError) as error: + row.update(method=method, passed=False, error=str(error)) + return row + return row + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--review-dir', required=True, type=Path) + args = parser.parse_args() + root = args.review_dir.resolve(strict=True) + audit_path = root / 'html-audit.json' + raw = audit_path.read_bytes() + audit = json.loads(raw) + links = sorted(set(audit['links'])) + if not links: + raise SystemExit('No poster links in the layout audit') + with ThreadPoolExecutor(max_workers=4) as pool: + results = list(pool.map(inspect, links)) + report = {'html_audit_sha256': hashlib.sha256(raw).hexdigest(), + 'checked_at': datetime.now(timezone.utc).isoformat(), + 'authentication': 'none', 'results': results, + 'all_passed': all(row['passed'] for row in results), + 'scope': 'Public destination HTTP availability; annex content integrity is checked separately.'} + (root / 'link-audit.json').write_text(json.dumps(report, indent=2) + '\n') + print(json.dumps({'links': len(links), 'passed': sum(r['passed'] for r in results), + 'report': str(root / 'link-audit.json')})) + raise SystemExit(0 if report['all_passed'] else 1) + + +if __name__ == '__main__': + main() diff --git a/2026-usrse/stamped-ai-study/verify-pdf.py b/2026-usrse/stamped-ai-study/verify-pdf.py new file mode 100644 index 00000000..52473352 --- /dev/null +++ b/2026-usrse/stamped-ai-study/verify-pdf.py @@ -0,0 +1,99 @@ +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +# /// script +# requires-python = ">=3.11" +# dependencies = ["pypdf==6.0.0", "Pillow==11.3.0", "zxing-cpp==2.3.0"] +# /// +"""Verify the exported page, PDF links, and every QR from the actual PDF raster. + +uv run verify-pdf.py --review-dir /absolute/review-directory +Requires pdftoppm. The report does not replace human visual review. +""" +import argparse +import hashlib +import json +from math import hypot +from pathlib import Path +import subprocess + +from PIL import Image +from pypdf import PdfReader +import zxingcpp + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--review-dir", required=True, type=Path) + args = parser.parse_args() + root = args.review_dir.resolve() + pdf = root / "stamped-ai-poster.pdf" + audit = json.loads((root / "html-audit.json").read_text()) + reader = PdfReader(pdf) + assert len(reader.pages) == 1, f"Expected one page, got {len(reader.pages)}" + page = reader.pages[0] + width, height = float(page.mediabox.width), float(page.mediabox.height) + assert abs(width - 3168) < 0.1 and abs(height - 3168) < 0.1, (width, height) + uris = [] + for ref in page.get("/Annots", []): + ann = ref.get_object() + action = ann.get("/A", {}) + if action.get("/S") == "/URI": + uris.append(str(action.get("/URI"))) + missing = sorted(set(audit["links"]) - set(uris)) + assert not missing, f"Missing clickable PDF links: {missing}" + assert audit["minimum_text_px"] >= 32 + font_sizes = [] + + def inspect_text(text, current_matrix, text_matrix, font, font_size): + if not text.strip(): + return + # Transform the text-space vertical unit vector into page points. + # Chromium records CSS font sizes with a 0.75 page scale. Include both + # matrices so a transformed text node cannot evade the 24-point floor. + cm, tm = current_matrix, text_matrix + scale = hypot(tm[2] * cm[0] + tm[3] * cm[2], + tm[2] * cm[1] + tm[3] * cm[3]) + font_sizes.append({"text": text.strip()[:100], "points": font_size * scale}) + + page.extract_text(visitor_text=inspect_text) + assert font_sizes, "No inspectable PDF text; cannot establish font sizes" + small_pdf_text = [row for row in font_sizes if row["points"] < 24 - 0.001] + assert not small_pdf_text, f"PDF text smaller than 24 pt: {small_pdf_text}" + # The full page is also the visual-review image. Actual PDF pixels are the + # source for QR checks, not the original SVG or a browser screenshot. + dpi = 150 + subprocess.run(["pdftoppm", "-f", "1", "-singlefile", "-r", str(dpi), + "-png", str(pdf), str(root / "pdf-fullsize")], check=True) + Image.MAX_IMAGE_PIXELS = 100_000_000 + raster = Image.open(root / "pdf-fullsize.png").convert("RGB") + sx, sy = raster.width / 4224, raster.height / 4224 + qrs = [] + for qr in audit["qrs"]: + r = qr["rect"] + # White quiet zone is already in the SVG; add only a two-pixel margin. + crop = raster.crop((int(r["x"] * sx) - 2, int(r["y"] * sy) - 2, + round((r["x"] + r["width"]) * sx) + 2, + round((r["y"] + r["height"]) * sy) + 2)) + crop.save(root / f"pdf-qr-{qr['name']}.png") + decoded = [b.text for b in zxingcpp.read_barcodes(crop)] + rotated = [b.text for b in zxingcpp.read_barcodes(crop.transpose(Image.Transpose.ROTATE_90))] + qrs.append({"name": qr["name"], "expected": qr["url"], "decoded": decoded, + "decoded_rotated": rotated, "passed": decoded == [qr["url"]] and rotated == [qr["url"]]}) + preview = raster.copy() + preview.thumbnail((1600, 1600)) + preview.save(root / "pdf-preview.png") + report = {"pdf_sha256": hashlib.sha256(pdf.read_bytes()).hexdigest(), + "page_count": len(reader.pages), "page_points": [width, height], + "minimum_html_text_px": audit["minimum_text_px"], "minimum_html_text_pt": audit["minimum_text_px"] * 72 / 96, + "minimum_pdf_text_pt": round(min(row["points"] for row in font_sizes), 4), + "inspected_pdf_text_runs": len(font_sizes), + "link_annotation_count": len(uris), "unique_expected_links": len(audit["links"]), + "missing_links": missing, "raster_dpi": dpi, "qr_results": qrs, + "visual_review": "Required separately; not established by this script."} + (root / "pdf-audit.json").write_text(json.dumps(report, indent=2) + "\n") + assert qrs and all(q["passed"] for q in qrs), "A PDF QR failed; inspect pdf-audit.json" + print(json.dumps({"page_inches": [width / 72, height / 72], "qrs_passed": len(qrs), "links_present": len(set(uris)), "report": str(root / "pdf-audit.json")})) + + +if __name__ == "__main__": + main() diff --git a/INDEX.md b/INDEX.md index e07f1110..af2456c5 100644 --- a/INDEX.md +++ b/INDEX.md @@ -532,6 +532,11 @@ Cross-references in the per-topic lookup point at the shelved path ## Posters +### `2026-usrse/stamped-ai-study/index.html` — *STAMPED in Practice* + +- Discussion placeholder: [editable poster, PDF and notes](2026-usrse/stamped-ai-study/README.md). + + Posters are not reveal.js decks and have no slide IDs. HTML posters live in their venue directory; `tools/create_index.sh` lists them (with a *poster* tag) on `index.html` from its hand-maintained `LISTED` array — diff --git a/REUSE.toml b/REUSE.toml index 32896a00..d382deaf 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -499,3 +499,73 @@ path = "2026-usrse/orinoco-lite/assets/repronim_logo.svg" precedence = "aggregate" SPDX-FileCopyrightText = "NOASSERTION" SPDX-License-Identifier = "LicenseRef-ThirdPartyLogo" + +# STAMPED example poster source and verification reports. +# Institutional artwork retains its separate attribution below. +[[annotations]] +path = [ + "2026-usrse/stamped-ai-study/index.html", + "2026-usrse/stamped-ai-study/*.css", + "2026-usrse/stamped-ai-study/*.md", + "2026-usrse/stamped-ai-study/*.json", + "2026-usrse/stamped-ai-study/.gitattributes", + "2026-usrse/stamped-ai-study/.gitignore", + "2026-usrse/stamped-ai-study/exports/*.json", + "2026-usrse/stamped-ai-study/exports/qr-source/decode-report.json", + "2026-usrse/stamped-ai-study/assets/stamped-qr-*.svg", + "2026-usrse/stamped-ai-study/exports/pdf-qr-*.png", + "2026-usrse/stamped-ai-study/exports/qr-source/*.png", +] +precedence = "closest" +SPDX-FileCopyrightText = "2026 Center for Open Neuroscience" +SPDX-License-Identifier = "CC-BY-SA-4.0" + +# Reference layout from con/talks PR 20, pinned in source-manifest.json. +[[annotations]] +path = "2026-usrse/stamped-ai-study/template.css" +precedence = "aggregate" +SPDX-FileCopyrightText = ["2026 John Lee", "2026 Isaac To", "2026 Yaroslav O. Halchenko", "2026 Center for Open Neuroscience"] +SPDX-License-Identifier = "CC-BY-SA-4.0" + +[[annotations]] +path = [ + "2026-usrse/stamped-ai-study/build-poster.cjs", + "2026-usrse/stamped-ai-study/make-logo-qrs.py", + "2026-usrse/stamped-ai-study/update-results.py", + "2026-usrse/stamped-ai-study/verify-links.py", + "2026-usrse/stamped-ai-study/verify-pdf.py", +] +precedence = "closest" +SPDX-FileCopyrightText = "2026 Center for Open Neuroscience" +SPDX-License-Identifier = "Apache-2.0" + +# Exact repository-authored CON mark; no redrawing or new ownership claim. +[[annotations]] +path = "2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg" +precedence = "closest" +SPDX-FileCopyrightText = "2022-2026 Yaroslav O. Halchenko " +SPDX-License-Identifier = "CC-BY-SA-4.0" + +[[annotations]] +path = "2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg" +precedence = "aggregate" +SPDX-FileCopyrightText = "Dartmouth College (institutional artwork)" +SPDX-License-Identifier = "LicenseRef-ThirdPartyLogo" + +[[annotations]] +path = "2026-usrse/stamped-ai-study/assets/repronim_logo.svg" +precedence = "aggregate" +SPDX-FileCopyrightText = "NOASSERTION" +SPDX-License-Identifier = "LicenseRef-ThirdPartyLogo" + +# CC-BY-SA covers the poster composition, not its embedded institutional marks. +[[annotations]] +path = [ + "2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf", + "2026-usrse/stamped-ai-study/exports/html-fullsize.png", + "2026-usrse/stamped-ai-study/exports/pdf-fullsize.png", + "2026-usrse/stamped-ai-study/exports/pdf-preview.png", +] +precedence = "aggregate" +SPDX-FileCopyrightText = ["2026 Center for Open Neuroscience (composition)", "Dartmouth College (institutional artwork)", "NOASSERTION"] +SPDX-License-Identifier = "CC-BY-SA-4.0 AND LicenseRef-ThirdPartyLogo" From 4d7e8eef0aea7d9627b77857f5a1a7dc0a4c1598 Mon Sep 17 00:00:00 2001 From: leej3 Date: Wed, 14 Oct 2026 20:28:42 -0400 Subject: [PATCH 02/15] fix(poster): reuse shared artwork and publish annex assets Reference the existing institutional marks and CON QR without duplicate files. Annex and upload the three poster-specific QR images, and deliver three previously missing archival images to the CON Hub. Verify anonymous retrieval and a pixel-identical PDF rebuild while retaining the existing checked PDF and private transcript boundaries. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- 2026-usrse/stamped-ai-study/.gitattributes | 3 + 2026-usrse/stamped-ai-study/README.md | 15 +- .../assets/con-ccn-dartmouth-letterhead.svg | 1 - .../assets/con-logo-outlined.svg | 1 - .../stamped-ai-study/assets/repronim_logo.svg | 396 ------------------ .../assets/stamped-qr-con.svg | 2 - .../stamped-ai-study/exports/asset-reuse.json | 234 +++++++++++ .../stamped-ai-study/exports/html-audit.json | 16 +- .../exports/source-integrity.json | 3 +- 2026-usrse/stamped-ai-study/index.html | 8 +- 2026-usrse/stamped-ai-study/make-logo-qrs.py | 19 +- .../stamped-ai-study/source-manifest.json | 19 +- REUSE.toml | 19 +- 13 files changed, 293 insertions(+), 443 deletions(-) delete mode 120000 2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg delete mode 120000 2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg delete mode 100644 2026-usrse/stamped-ai-study/assets/repronim_logo.svg delete mode 100644 2026-usrse/stamped-ai-study/assets/stamped-qr-con.svg create mode 100644 2026-usrse/stamped-ai-study/exports/asset-reuse.json diff --git a/2026-usrse/stamped-ai-study/.gitattributes b/2026-usrse/stamped-ai-study/.gitattributes index 1729d51e..e02500fc 100644 --- a/2026-usrse/stamped-ai-study/.gitattributes +++ b/2026-usrse/stamped-ai-study/.gitattributes @@ -2,3 +2,6 @@ # Text sources remain in Git. Large SVGs retain the repository threshold. * annex.largefiles=((include=*.png)or(include=*.pdf)or(include=*.jpg)or(include=*.jpeg)or(include=*.gif)or(include=*.webp)or(include=*.woff)or(include=*.woff2)or(include=*.ttf)or(include=*.otf)or(include=*.zip)or(include=*.gz)or(include=*.xz)or(include=*.zst)or(include=*.mp4)or(include=*.webm)or(include=*.bin)) *.svg annex.largefiles=(largerthan=100K) + +# Poster-specific image assets are distributed through the annex remote. +assets/*.svg annex.largefiles=anything diff --git a/2026-usrse/stamped-ai-study/README.md b/2026-usrse/stamped-ai-study/README.md index f2dbda40..3187c785 100644 --- a/2026-usrse/stamped-ai-study/README.md +++ b/2026-usrse/stamped-ai-study/README.md @@ -9,11 +9,16 @@ These results do not establish general skill efficacy or reproduce the proposed ## Retrieve and edit -Large assets, the PDF, and preview use git-annex; GitHub displays pointers. +Poster-specific image assets, the PDF, and preview use git-annex; GitHub displays pointers. +The three institutional marks and CON QR are reused directly from `../orinoco-lite/assets/`. After cloning this branch, use an environment with DataLad and git-annex: ```sh -datalad get 2026-usrse/stamped-ai-study/assets/ \ +datalad get 2026-usrse/orinoco-lite/assets/con-logo-outlined.svg \ + 2026-usrse/orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg \ + 2026-usrse/orinoco-lite/assets/repronim_logo.svg \ + 2026-usrse/orinoco-lite/assets/orinoco-qr-con.svg \ + 2026-usrse/stamped-ai-study/assets/ \ 2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf \ 2026-usrse/stamped-ai-study/exports/pdf-preview.png ``` @@ -29,6 +34,7 @@ python3 verify-links.py --review-dir exports ``` Retrieve assets first and unlock annexed outputs before replacing them. +The QR generator reads shared artwork without rewriting it. The supplied scripts pin their Python dependencies; the builder also supports the bundled Codex Playwright runtime. Reinspect the PDF after content changes. @@ -37,10 +43,13 @@ Reinspect the PDF after content changes. The existing [PDF audit](exports/pdf-audit.json), [link checks](exports/link-audit.json), and [visual review](exports/agent-visual-review.json) apply to the unchanged exported poster: one 44-inch square page, minimum 24 pt text, 17 link annotations and four QR codes decoded from PDF pixels. This is agent verification, not author review. The PDF SHA-256 is `ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d`. +The [asset reuse check](exports/asset-reuse.json) verifies four shared files, all ten public annex payloads used or uploaded here, and a pixel-identical rebuild after changing the asset paths. +The existing PDF and preview are retained. The [complete source snapshot and execution records](https://github.com/con/talks/tree/1e96d413e43ca048c7f45674ada9d5f316a68b91/2026-usrse/stamped-ai-study) remain preserved separately, including superseded layouts and retrieval reports. The QR destinations continue to point to that study's existing branches. -Private transcript payloads remain withheld, and two optional diagnostic images plus two large logs await upload; none is required to view this poster. +The three previously missing archival images are now on the annex remote. +Private transcript payloads remain withheld; two large non-asset logs remain local. [source-manifest.json](source-manifest.json) identifies the original artwork and template. Composition and prose are CC BY-SA 4.0; scripts are Apache-2.0. diff --git a/2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg b/2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg deleted file mode 120000 index 2b38590c..00000000 --- a/2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg +++ /dev/null @@ -1 +0,0 @@ -../../../.git/annex/objects/fw/X3/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg b/2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg deleted file mode 120000 index 2929a02b..00000000 --- a/2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg +++ /dev/null @@ -1 +0,0 @@ -../../../.git/annex/objects/X6/J1/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/repronim_logo.svg b/2026-usrse/stamped-ai-study/assets/repronim_logo.svg deleted file mode 100644 index 073a5a1c..00000000 --- a/2026-usrse/stamped-ai-study/assets/repronim_logo.svg +++ /dev/null @@ -1,396 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/stamped-qr-con.svg b/2026-usrse/stamped-ai-study/assets/stamped-qr-con.svg deleted file mode 100644 index a9127902..00000000 --- a/2026-usrse/stamped-ai-study/assets/stamped-qr-con.svg +++ /dev/null @@ -1,2 +0,0 @@ - -CON QR code: conhttps://dev.centerforopenneuroscience.org/; high error correction; four-module quiet zone. \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/exports/asset-reuse.json b/2026-usrse/stamped-ai-study/exports/asset-reuse.json new file mode 100644 index 00000000..2f2f9076 --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/asset-reuse.json @@ -0,0 +1,234 @@ +{ + "checked_at": "2026-10-15T00:27:39.922974+00:00", + "reused_repository_assets": [ + { + "name": "con-logo-outlined.svg", + "path": "../orinoco-lite/assets/con-logo-outlined.svg", + "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", + "bytes": 125811 + }, + { + "name": "con-ccn-dartmouth-letterhead.svg", + "path": "../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", + "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", + "bytes": 379034 + }, + { + "name": "repronim_logo.svg", + "path": "../orinoco-lite/assets/repronim_logo.svg", + "sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", + "bytes": 33939 + }, + { + "name": "orinoco-qr-con.svg", + "path": "../orinoco-lite/assets/orinoco-qr-con.svg", + "sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", + "bytes": 67605 + } + ], + "removed_duplicate_files": 4, + "new_poster_specific_annex_assets": 3, + "new_historical_asset_uploads": 3, + "pdf_equivalence": { + "same_pixels_at_150_dpi": true, + "pixels": [ + 6600, + 6600 + ], + "retained_pdf_sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", + "rebuilt_pdf_sha256": "de7cf0eb56c20226101c1741d1b7a67d69d5417ff7ab4201239b4bf32630f2cb" + }, + "current_rebuild_checks": { + "pdf_sha256": "de7cf0eb56c20226101c1741d1b7a67d69d5417ff7ab4201239b4bf32630f2cb", + "page_count": 1, + "page_points": [ + 3168.0, + 3168.0 + ], + "minimum_html_text_px": 32, + "minimum_html_text_pt": 24.0, + "minimum_pdf_text_pt": 24.0, + "inspected_pdf_text_runs": 184, + "link_annotation_count": 17, + "unique_expected_links": 14, + "missing_links": [], + "raster_dpi": 150, + "qr_results": [ + { + "name": "poster", + "expected": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study" + ], + "decoded_rotated": [ + "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study" + ], + "passed": true + }, + { + "name": "study", + "expected": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "decoded": [ + "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research" + ], + "decoded_rotated": [ + "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research" + ], + "passed": true + }, + { + "name": "skills", + "expected": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "decoded": [ + "https://github.com/con/skills/tree/codex/stamped-research-skills" + ], + "decoded_rotated": [ + "https://github.com/con/skills/tree/codex/stamped-research-skills" + ], + "passed": true + }, + { + "name": "con", + "expected": "https://dev.centerforopenneuroscience.org/", + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ], + "decoded_rotated": [ + "https://dev.centerforopenneuroscience.org/" + ], + "passed": true + } + ], + "visual_review": "Required separately; not established by this script." + }, + "visual_review": "Coordinator inspected the rebuilt preview: same layout and artwork, no clipping or overlap. Pixel equivalence supports retaining the existing delivered PDF and its audit.", + "anonymous_annex_retrieval": { + "checked_at": "2026-10-15T00:26:51.285880+00:00", + "authentication": "none", + "method": "Full-byte HTTP retrieval compared with locally retained annex objects.", + "all_passed": true, + "assets": [ + { + "path": "2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg", + "key": "MD5E-s72489--0686f3984df0eb61ccb759c66ae50aa4.svg", + "scope": "current_poster_dependency", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s72489--0686f3984df0eb61ccb759c66ae50aa4.svg", + "bytes": 72489, + "sha256": "a21e0078d98f2ecc05ac5afcb404f459814df0fb8b8be32d56fce4a22f11f04e", + "http_status": 200, + "received_bytes": 72489, + "received_sha256": "a21e0078d98f2ecc05ac5afcb404f459814df0fb8b8be32d56fce4a22f11f04e", + "passed": true + }, + { + "path": "2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg", + "key": "MD5E-s73018--c6465f09577434e540f749d487a3829b.svg", + "scope": "current_poster_dependency", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s73018--c6465f09577434e540f749d487a3829b.svg", + "bytes": 73018, + "sha256": "304f7fe5a93d693824d00b1ee2f14b25c5e6f6d291b129aee44b35f10e77496a", + "http_status": 200, + "received_bytes": 73018, + "received_sha256": "304f7fe5a93d693824d00b1ee2f14b25c5e6f6d291b129aee44b35f10e77496a", + "passed": true + }, + { + "path": "2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg", + "key": "MD5E-s69859--b76ec9502c2311354e72b95bb2116724.svg", + "scope": "current_poster_dependency", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s69859--b76ec9502c2311354e72b95bb2116724.svg", + "bytes": 69859, + "sha256": "07e0002ae67f6a491ac421b76386e7ea7cf957d76b1c57ef7b5c798734b8d324", + "http_status": 200, + "received_bytes": 69859, + "received_sha256": "07e0002ae67f6a491ac421b76386e7ea7cf957d76b1c57ef7b5c798734b8d324", + "passed": true + }, + { + "path": "2026-usrse/orinoco-lite/assets/con-logo-outlined.svg", + "key": "MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", + "scope": "current_poster_dependency", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", + "bytes": 125811, + "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", + "http_status": 200, + "received_bytes": 125811, + "received_sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", + "passed": true + }, + { + "path": "2026-usrse/orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", + "key": "MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", + "scope": "current_poster_dependency", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", + "bytes": 379034, + "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", + "http_status": 200, + "received_bytes": 379034, + "received_sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", + "passed": true + }, + { + "path": "2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf", + "key": "MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf", + "scope": "current_poster_dependency", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf", + "bytes": 694949, + "sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", + "http_status": 200, + "received_bytes": 694949, + "received_sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", + "passed": true + }, + { + "path": "2026-usrse/stamped-ai-study/exports/pdf-preview.png", + "key": "MD5E-s1024548--93424049cf2a727fe3b3e8ea8d21337d.png", + "scope": "current_poster_dependency", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1024548--93424049cf2a727fe3b3e8ea8d21337d.png", + "bytes": 1024548, + "sha256": "14c9514014a363c55ed49aae1cd3caaebfe8a9edc24bea624bdb222389525a38", + "http_status": 200, + "received_bytes": 1024548, + "received_sha256": "14c9514014a363c55ed49aae1cd3caaebfe8a9edc24bea624bdb222389525a38", + "passed": true + }, + { + "path": "2026-usrse/stamped-ai-study/exports/qr-source/qr-skills-210px.png", + "key": "MD5E-s16854--f393b086bc0781a22d002aae5d0f8e9e.png", + "scope": "preserved_archive_asset", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s16854--f393b086bc0781a22d002aae5d0f8e9e.png", + "bytes": 16854, + "sha256": "db85e885bef3b3fb35dce785e332b1782d1a181cfd93f5f9df52bebffeb762d2", + "http_status": 200, + "received_bytes": 16854, + "received_sha256": "db85e885bef3b3fb35dce785e332b1782d1a181cfd93f5f9df52bebffeb762d2", + "passed": true + }, + { + "path": "2026-usrse/stamped-ai-study/exports/qr-source/qr-study-177px.png", + "key": "MD5E-s19729--903e8cbbb790d389b5112ba254f66e8c.png", + "scope": "preserved_archive_asset", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s19729--903e8cbbb790d389b5112ba254f66e8c.png", + "bytes": 19729, + "sha256": "db5310cb3b1d32c5e4d0db3bbc9dafa27e45387b67b8172c1e57ab1f192c707d", + "http_status": 200, + "received_bytes": 19729, + "received_sha256": "db5310cb3b1d32c5e4d0db3bbc9dafa27e45387b67b8172c1e57ab1f192c707d", + "passed": true + }, + { + "path": "2026-usrse/stamped-ai-study/stamped-ai-poster-initial-preview.png", + "key": "MD5E-s534448--fe1bad7e693a547b0280d4dbc4508891.png", + "scope": "preserved_archive_asset", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s534448--fe1bad7e693a547b0280d4dbc4508891.png", + "bytes": 534448, + "sha256": "11fe229783480c4eed477a348a4969b9f3d54f4e7a9bbbbbb76026c25cbd1894", + "http_status": 200, + "received_bytes": 534448, + "received_sha256": "11fe229783480c4eed477a348a4969b9f3d54f4e7a9bbbbbb76026c25cbd1894", + "passed": true + } + ] + }, + "scope": "Public poster assets only. No transcript or execution-log payload was uploaded." +} diff --git a/2026-usrse/stamped-ai-study/exports/html-audit.json b/2026-usrse/stamped-ai-study/exports/html-audit.json index 2b881e5b..a3fa8ae9 100644 --- a/2026-usrse/stamped-ai-study/exports/html-audit.json +++ b/2026-usrse/stamped-ai-study/exports/html-audit.json @@ -13,7 +13,7 @@ "unlinkedImages": [], "images": [ { - "src": "assets/con-logo-outlined.svg", + "src": "../orinoco-lite/assets/con-logo-outlined.svg", "loaded": true, "href": "https://dev.centerforopenneuroscience.org/", "rect": { @@ -57,7 +57,7 @@ } }, { - "src": "assets/stamped-qr-con.svg", + "src": "../orinoco-lite/assets/orinoco-qr-con.svg", "loaded": true, "href": "https://dev.centerforopenneuroscience.org/", "rect": { @@ -68,7 +68,7 @@ } }, { - "src": "assets/con-ccn-dartmouth-letterhead.svg#svgView(viewBox(13,33,230,246))", + "src": "../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg#svgView(viewBox(13,33,230,246))", "loaded": true, "href": "https://pbs.dartmouth.edu/", "rect": { @@ -79,7 +79,7 @@ } }, { - "src": "assets/repronim_logo.svg", + "src": "../orinoco-lite/assets/repronim_logo.svg", "loaded": true, "href": "https://www.repronim.org/", "rect": { @@ -361,16 +361,16 @@ } ], "browser": "151.0.7922.34", - "created_utc": "2026-10-14T23:17:24.996Z", + "created_utc": "2026-10-15T00:24:51.520Z", "source_sha256": { - "index.html": "59aa1d1c3f1cedd69000e7acb138c84a2c39ec379d7db0c1309f1e7ccd028436", + "index.html": "527f2eaca6e412d66d56969d8bc105efa3336f46fd1a2b4653c66f6a8d66f171", "template.css": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", "poster.css": "878332525bbaa508869b86c74fba4ca69248dea42f65c2f9e7683ca69dc397b4", "build-poster.cjs": "113e2fc4ecff9d73acb94c7e3faa478944a81f3802b5ad33502f98b99eebe13a", "verify-pdf.py": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", "verify-links.py": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", - "make-logo-qrs.py": "0ebb386cb998bbf3a872848627e5b5066ac3da10733242897613ad5f67a49858", - "source-manifest.json": "d2de681dcd1b8564e155f6c438ff37a8215929c992908e398c3752712f22419e", + "make-logo-qrs.py": "c73a0d7b5468ed5b1a16424ac475fac0bf834ef129318abcb54e515d4179d47f", + "source-manifest.json": "113a23cd2d05214fb3aad567a47498ea64684e3fba627495c02c75c82dfc15d9", "update-results.py": "7e6db439ac299178942cfc104930529e22a23d5e4d69f731dda914a4f17626cc", "results-data.json": "24d7e20bfe07ade368ffb13b1267e840e4ef833df75d5fee6fd61da7e2406ab9" }, diff --git a/2026-usrse/stamped-ai-study/exports/source-integrity.json b/2026-usrse/stamped-ai-study/exports/source-integrity.json index 30a5568a..8020756c 100644 --- a/2026-usrse/stamped-ai-study/exports/source-integrity.json +++ b/2026-usrse/stamped-ai-study/exports/source-integrity.json @@ -137,5 +137,6 @@ "bytes": 4891, "matches_handoff": true } - ] + ], + "scope": "Historical initial handoff record; entries preserve their original paths and hashes. Current shared asset references and storage are verified in asset-reuse.json." } diff --git a/2026-usrse/stamped-ai-study/index.html b/2026-usrse/stamped-ai-study/index.html index ef27238c..e5860fcb 100644 --- a/2026-usrse/stamped-ai-study/index.html +++ b/2026-usrse/stamped-ai-study/index.html @@ -25,7 +25,7 @@

STAMPED · US-RSE 2026

STAMPED in PracticeChecking AI-assisted analysis
and its research record

- +

John A. LeeAustin MacdonaldCody C. BakerYaroslav O. Halchenko

@@ -142,9 +142,9 @@

Limits of this study

OpenAI Codex assisted the analyses and poster draft.

diff --git a/2026-usrse/stamped-ai-study/make-logo-qrs.py b/2026-usrse/stamped-ai-study/make-logo-qrs.py index 111df2d8..3f9de5c7 100644 --- a/2026-usrse/stamped-ai-study/make-logo-qrs.py +++ b/2026-usrse/stamped-ai-study/make-logo-qrs.py @@ -4,11 +4,11 @@ # requires-python = ">=3.11" # dependencies = ["qrcode==8.2", "Pillow==11.3.0", "zxing-cpp==2.3.0"] # /// -"""Generate the poster's four vector QR codes and verify their destinations. +"""Generate three poster QR codes, reuse the repository CON QR, and verify all four destinations. Run with `uv run make-logo-qrs.py --check-dir /tmp/con-qr-checks`. Requires Inkscape (only to measure the already outlined logo) and rsvg-convert -(for independent rasterization). SVG assets are written to assets/; check images and +(for independent rasterization). New SVG assets are written to assets/; shared artwork is read only. Check images and the JSON report stay in --check-dir, outside the repository by default. """ @@ -49,7 +49,7 @@ def element(tag, attrs=None, text=None): def load_logo(inkscape): """Reuse the corrected paths and original blue; never regenerate its type.""" - source = ROOT / "assets/con-logo-outlined.svg" + source = ROOT.parent / "orinoco-lite/assets/con-logo-outlined.svg" original = ET.parse(source).getroot() # The source retains hidden alternate artwork and wide canvas margins. # Query the visible blue layer, then convert page-pixel bounds to its @@ -159,14 +159,21 @@ def write_qr(name, url, logo): root.append(logo_box) assert not root.findall(f".//{{{SVG}}}text") assert not root.findall(f".//{{{SVG}}}image"), "Logo must remain native vector" - destination = ROOT / f"assets/stamped-qr-{name}.svg" - ET.ElementTree(root).write(destination, encoding="utf-8", xml_declaration=True) + if name == "con": + destination = ROOT.parent / "orinoco-lite/assets/orinoco-qr-con.svg" + generated = ET.tostring(root, encoding="utf-8", xml_declaration=True) + assert destination.read_bytes() == generated, "Shared CON QR differs from the expected composition" + else: + destination = ROOT / f"assets/stamped-qr-{name}.svg" + if destination.is_symlink(): + raise SystemExit(f"Unlock the annexed output before rebuilding: {destination}") + ET.ElementTree(root).write(destination, encoding="utf-8", xml_declaration=True) assert destination.stat().st_size < 100_000, "QR should remain a small SVG" return { "name": name, "url": url, "file": str(destination), "qr_version": qr.version, "error_correction": "H", "modules_including_border": size, "quiet_border_modules": BORDER, - "logo_source": "assets/con-logo-outlined.svg", + "logo_source": "../orinoco-lite/assets/con-logo-outlined.svg", "logo_width_fraction_of_body": LOGO_WIDTH_FRACTION, "file_bytes": destination.stat().st_size, "logo_pad_percent_of_body_area": round(100*pad_width*pad_height/body_size**2, 2), diff --git a/2026-usrse/stamped-ai-study/source-manifest.json b/2026-usrse/stamped-ai-study/source-manifest.json index 017b65fc..0bb43e99 100644 --- a/2026-usrse/stamped-ai-study/source-manifest.json +++ b/2026-usrse/stamped-ai-study/source-manifest.json @@ -18,19 +18,32 @@ "bytes": 125811, "md5": "5429db5139ba49cc5a94dceb1532abe0", "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", - "source": "2026-usrse/orinoco-lite/assets/con-logo-outlined.svg" + "source": "2026-usrse/orinoco-lite/assets/con-logo-outlined.svg", + "local_path": "../orinoco-lite/assets/con-logo-outlined.svg", + "reused_from_repository": true }, "con-ccn-dartmouth-letterhead.svg": { "bytes": 379034, "md5": "be7ae71a14ff2301bb0cf1cde08457e9", "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", - "source": "2026-usrse/orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg" + "source": "2026-usrse/orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", + "local_path": "../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", + "reused_from_repository": true }, "repronim_logo.svg": { "bytes": 33939, "md5": "cfe9b83acfb1f1292027c0a214c4b0f9", "sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", - "source": "2026-usrse/orinoco-lite/assets/repronim_logo.svg" + "source": "2026-usrse/orinoco-lite/assets/repronim_logo.svg", + "local_path": "../orinoco-lite/assets/repronim_logo.svg", + "reused_from_repository": true + }, + "orinoco-qr-con.svg": { + "bytes": 67605, + "sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", + "source": "2026-usrse/orinoco-lite/assets/orinoco-qr-con.svg", + "local_path": "../orinoco-lite/assets/orinoco-qr-con.svg", + "reused_from_repository": true } } } diff --git a/REUSE.toml b/REUSE.toml index d382deaf..cab02adb 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -539,24 +539,7 @@ precedence = "closest" SPDX-FileCopyrightText = "2026 Center for Open Neuroscience" SPDX-License-Identifier = "Apache-2.0" -# Exact repository-authored CON mark; no redrawing or new ownership claim. -[[annotations]] -path = "2026-usrse/stamped-ai-study/assets/con-logo-outlined.svg" -precedence = "closest" -SPDX-FileCopyrightText = "2022-2026 Yaroslav O. Halchenko " -SPDX-License-Identifier = "CC-BY-SA-4.0" - -[[annotations]] -path = "2026-usrse/stamped-ai-study/assets/con-ccn-dartmouth-letterhead.svg" -precedence = "aggregate" -SPDX-FileCopyrightText = "Dartmouth College (institutional artwork)" -SPDX-License-Identifier = "LicenseRef-ThirdPartyLogo" - -[[annotations]] -path = "2026-usrse/stamped-ai-study/assets/repronim_logo.svg" -precedence = "aggregate" -SPDX-FileCopyrightText = "NOASSERTION" -SPDX-License-Identifier = "LicenseRef-ThirdPartyLogo" +# Shared institutional artwork and CON QR retain the existing PR 20 annotations. # CC-BY-SA covers the poster composition, not its embedded institutional marks. [[annotations]] From 7080a8661c1555fdf11a0e06e142e7ca3531f861 Mon Sep 17 00:00:00 2001 From: leej3 Date: Thu, 15 Oct 2026 23:55:44 -0400 Subject: [PATCH 03/15] docs(poster): frame iterative skills study around NARPS evidence Replace the behavioral placeholder with the intended study argument, linked NARPS group maps, reproducible variability figures, and a matrix covering all allocated conditions and iterations. Keep unmeasured results as open slots and connect the invitation to skills and example studies. Document the evidence needed to complete the poster and the distinction between secondary extraction and changes requiring a new comparison. Preserve figure inputs, assessment validity, and public retrieval checks. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- 2026-usrse/stamped-ai-study/.gitignore | 8 + 2026-usrse/stamped-ai-study/README.md | 106 +- .../assets/stamped-qr-poster.svg | 2 +- .../assets/stamped-qr-skills.svg | 2 +- .../assets/stamped-qr-study.svg | 2 +- 2026-usrse/stamped-ai-study/build-poster.cjs | 3 +- .../stamped-ai-study/completion-plan.md | 102 ++ .../data/assessment-snapshot.json | 1173 ++++++++++++++ .../maps/anatomical-context.nii.gz | 1 + .../maps/common_brain_mask.nii.gz | 1 + .../maps/max_t_fwe_p05_mask.nii.gz | 1 + .../narps-2026-10-15/maps/one_sample_t.nii.gz | 1 + ...vmPFC_AAL_medial_orbitofrontal_mask.nii.gz | 1 + .../participant-map-sources.json | 473 ++++++ .../data/narps-2026-10-15/provenance.json | 329 ++++ .../narps-2026-10-15/source-analysis-run09.py | 270 ++++ .../summaries/narps-r1-01.json | 107 ++ .../summaries/narps-r1-02.json | 68 + .../summaries/narps-r1-03.json | 173 ++ .../summaries/narps-r1-05.json | 103 ++ .../summaries/narps-r1-06.json | 324 ++++ .../summaries/narps-r1-07.json | 53 + .../summaries/narps-r1-08.json | 96 ++ .../summaries/narps-r1-09.json | 83 + .../data/narps-figure-guidance.json | 23 + .../exports/agent-visual-review.json | 19 +- .../stamped-ai-study/exports/asset-reuse.json | 234 --- .../stamped-ai-study/exports/html-audit.json | 378 ++--- .../stamped-ai-study/exports/link-audit.json | 269 +++- .../stamped-ai-study/exports/pdf-audit.json | 26 +- .../stamped-ai-study/exports/pdf-preview.png | 2 +- .../exports/qr-source/decode-report.json | 1406 +++++++++++++++++ .../exports/retrieval-audit.json | 136 ++ .../exports/source-integrity.json | 142 -- .../exports/stamped-ai-poster.pdf | 2 +- .../figures/narps-analysis-variability.png | 1 + .../figures/narps-analysis-variability.svg | 386 +++++ .../figures/narps-figure-manifest.json | 15 + .../figures/narps-group-map.png | 1 + .../figures/narps-group-map.svg | 381 +++++ 2026-usrse/stamped-ai-study/index.html | 224 ++- 2026-usrse/stamped-ai-study/make-logo-qrs.py | 6 +- 2026-usrse/stamped-ai-study/package-lock.json | 58 + 2026-usrse/stamped-ai-study/package.json | 6 + 2026-usrse/stamped-ai-study/pixi.toml | 33 + 2026-usrse/stamped-ai-study/poster.css | 151 +- 2026-usrse/stamped-ai-study/results-data.json | 216 --- .../scripts/export-assessments.py | 278 ++++ .../scripts/render-narps-figures.py | 201 +++ .../scripts/snapshot-narps-figures.py | 184 +++ .../stamped-ai-study/source-manifest.json | 2 +- 2026-usrse/stamped-ai-study/update-results.py | 280 +--- REUSE.toml | 27 + 53 files changed, 7197 insertions(+), 1372 deletions(-) create mode 100644 2026-usrse/stamped-ai-study/completion-plan.md create mode 100644 2026-usrse/stamped-ai-study/data/assessment-snapshot.json create mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/anatomical-context.nii.gz create mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/common_brain_mask.nii.gz create mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz create mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/one_sample_t.nii.gz create mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/participant-map-sources.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/source-analysis-run09.py create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-01.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-02.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-03.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-05.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-06.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-07.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-08.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-09.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-figure-guidance.json delete mode 100644 2026-usrse/stamped-ai-study/exports/asset-reuse.json create mode 100644 2026-usrse/stamped-ai-study/exports/qr-source/decode-report.json create mode 100644 2026-usrse/stamped-ai-study/exports/retrieval-audit.json delete mode 100644 2026-usrse/stamped-ai-study/exports/source-integrity.json create mode 120000 2026-usrse/stamped-ai-study/figures/narps-analysis-variability.png create mode 100644 2026-usrse/stamped-ai-study/figures/narps-analysis-variability.svg create mode 100644 2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json create mode 120000 2026-usrse/stamped-ai-study/figures/narps-group-map.png create mode 100644 2026-usrse/stamped-ai-study/figures/narps-group-map.svg create mode 100644 2026-usrse/stamped-ai-study/package-lock.json create mode 100644 2026-usrse/stamped-ai-study/package.json create mode 100644 2026-usrse/stamped-ai-study/pixi.toml delete mode 100644 2026-usrse/stamped-ai-study/results-data.json create mode 100644 2026-usrse/stamped-ai-study/scripts/export-assessments.py create mode 100644 2026-usrse/stamped-ai-study/scripts/render-narps-figures.py create mode 100644 2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py diff --git a/2026-usrse/stamped-ai-study/.gitignore b/2026-usrse/stamped-ai-study/.gitignore index 043c7270..0f00ac7c 100644 --- a/2026-usrse/stamped-ai-study/.gitignore +++ b/2026-usrse/stamped-ai-study/.gitignore @@ -1,2 +1,10 @@ # Keep the exported poster in this module. !exports/stamped-ai-poster.pdf +.pixi/ +pixi.lock +node_modules/ +exports/html-fullsize.png +exports/pdf-fullsize.png +exports/pdf-qr-*.png +exports/qr-source/*.png +exports/layout-review.png diff --git a/2026-usrse/stamped-ai-study/README.md b/2026-usrse/stamped-ai-study/README.md index 3187c785..352c54bb 100644 --- a/2026-usrse/stamped-ai-study/README.md +++ b/2026-usrse/stamped-ai-study/README.md @@ -1,56 +1,84 @@ -# STAMPED example poster — discussion placeholder +# STAMPED in Practice poster -An editable **44 × 44 inch** poster adapted from [PR 20](https://github.com/con/talks/pull/20), preserving its layout and institutional artwork. -This is a placeholder for discussion on October 15, 2026, alongside the existing skills proposals: [con/skills#23](https://github.com/con/skills/pull/23), [#24](https://github.com/con/skills/pull/24), and [#26](https://github.com/con/skills/pull/26). +An editable **44 × 44 inch** poster about improving STAMPED research skills through the scientific work they produce. +It replaces the earlier behavioral example with the NARPS group-analysis study and presents the intended completed argument, with real example results and open slots for the remaining runs and revisions. -Open [index.html](index.html), view the [PDF preview](exports/pdf-preview.png), or [download the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf). -The [study report](https://github.com/leej3/stamped-ai-research/blob/3db3674d639e63407fa5ac0f9c9012bf48c12727/research/REPORT.md) documents three exploratory paired tasks, including the skills arm's missing-value screening failure. -These results do not establish general skill efficacy or reproduce the proposed ABCD analysis. +Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or retrieve [the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf). +The [completion plan](completion-plan.md) identifies the evidence needed to finish the poster and changes to data collection that can support it. +No research workers or study protocols are changed by this poster module. -## Retrieve and edit +## What is reproducible here -Poster-specific image assets, the PDF, and preview use git-annex; GitHub displays pointers. -The three institutional marks and CON QR are reused directly from `../orinoco-lite/assets/`. -After cloning this branch, use an environment with DataLad and git-annex: +- Scientific figures: saved worker summaries and group maps, input hashes, source revisions and plotting code. +- Outcomes matrix: all three allocated iterations and four conditions, generated from a saved assessment export; open cells remain missing observations. +- Poster: local HTML/CSS, reusable institutional artwork, branded QR generation, a Pixi environment, a pinned browser dependency and PDF/layout checks. + +The scientific panel illustrates [run 09](https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73), conditional on the supplied AO86 maps. +The native-analysis variability plot has eight completed runs; it deliberately preserves differing masks and corrections. +Figure provenance is in [data/narps-2026-10-15/provenance.json](data/narps-2026-10-15/provenance.json). +The [assessment data](data/assessment-snapshot.json) retain raw statuses, external validity overrides, missingness, source hashes and separate supplementary judgments. +The exported records are sufficient to regenerate the poster's displayed numbers; full research objects remain linked in the study. + +## Retrieve and build + +Run from this directory: ```sh -datalad get 2026-usrse/orinoco-lite/assets/con-logo-outlined.svg \ - 2026-usrse/orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg \ - 2026-usrse/orinoco-lite/assets/repronim_logo.svg \ - 2026-usrse/orinoco-lite/assets/orinoco-qr-con.svg \ - 2026-usrse/stamped-ai-study/assets/ \ - 2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf \ - 2026-usrse/stamped-ai-study/exports/pdf-preview.png +pixi install +pixi run datalad get ../orinoco-lite/assets/con-logo-outlined.svg \ + ../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg \ + ../orinoco-lite/assets/repronim_logo.svg \ + ../orinoco-lite/assets/orinoco-qr-con.svg assets data figures exports +pixi run setup-browser +pixi run build +pixi run verify +pixi run links ``` -Edit `index.html` and `poster.css`; preserve the artwork and minimum **32 CSS px / 24 pt** text. -From this directory, with Node/Playwright, uv, Poppler, Inkscape and `rsvg-convert` available: +The build uses saved local inputs and makes no requests for live study state. +`pixi run build` regenerates figures and the outcomes table, then exports the poster. +Before replacing tracked annexed outputs, run `pixi run git annex unlock assets figures exports/stamped-ai-poster.pdf exports/pdf-preview.png`. +The local `pixi.lock` is preserved on a separate environment snapshot branch, [`codex/env-stamped-poster-narps-20261015`](https://github.com/con/talks/tree/codex/env-stamped-poster-narps-20261015); it is excluded from poster history. +For an exact environment replay, retrieve that snapshot's `pixi.lock` into this directory before `pixi install --locked`. + +Institutional marks are reused from the ORINOCO Lite poster. +To change QR destinations, edit `make-logo-qrs.py` and run: ```sh -uv run --python 3.12 make-logo-qrs.py --check-dir exports/qr-source -node build-poster.cjs --out-dir exports -uv run --python 3.12 verify-pdf.py --review-dir exports -python3 verify-links.py --review-dir exports +pixi run python make-logo-qrs.py --check-dir exports/qr-source ``` -Retrieve assets first and unlock annexed outputs before replacing them. -The QR generator reads shared artwork without rewriting it. -The supplied scripts pin their Python dependencies; the builder also supports the bundled Codex Playwright runtime. -Reinspect the PDF after content changes. +QR regeneration additionally requires Inkscape and `rsvg-convert`. +Ordinary poster builds use the supplied QR assets and do not require those tools. + +## Refresh the evidence deliberately + +The assessment export reads allocation and completed judgments from an existing coordinator checkout without changing it: + +```sh +pixi run python scripts/export-assessments.py \ + --study /path/to/stamped-in-practice \ + --out data/assessment-snapshot.json +``` + +Review the export's warnings, validity overlays and source bindings before rebuilding. +A source hash does not by itself establish publication of the original assessment; null source URLs retain that distinction. +The poster's primary judgments remain separate from duplicate and supplementary reviews. +STAMPED cells contain met / partial / unmet counts, not an overall score. +Remaining unavailable, not-checked and not-applicable items remain in the linked export. + +The scientific input capture script documents the eight initial worker formats. +Extend its explicit parsers when adding new runs; do not use zero as a missing result or pool incompatible regional estimands. +See [completion-plan.md](completion-plan.md) before adding a common-support comparison. -## Snapshot and provenance +## Verification and provenance -The existing [PDF audit](exports/pdf-audit.json), [link checks](exports/link-audit.json), and [visual review](exports/agent-visual-review.json) apply to the unchanged exported poster: one 44-inch square page, minimum 24 pt text, 17 link annotations and four QR codes decoded from PDF pixels. -This is agent verification, not author review. -The PDF SHA-256 is `ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d`. -The [asset reuse check](exports/asset-reuse.json) verifies four shared files, all ten public annex payloads used or uploaded here, and a pixel-identical rebuild after changing the asset paths. -The existing PDF and preview are retained. +[HTML audit](exports/html-audit.json), [PDF audit](exports/pdf-audit.json), [link audit](exports/link-audit.json) and [visual review](exports/agent-visual-review.json) describe the current export. +The checks require one 44-inch square page, at least 24-point print text, no layout overflow, clickable PDF links, and all four QR codes decoded from PDF pixels. +These are agent checks; author review remains part of poster preparation. -The [complete source snapshot and execution records](https://github.com/con/talks/tree/1e96d413e43ca048c7f45674ada9d5f316a68b91/2026-usrse/stamped-ai-study) remain preserved separately, including superseded layouts and retrieval reports. -The QR destinations continue to point to that study's existing branches. -The three previously missing archival images are now on the annex remote. -Private transcript payloads remain withheld; two large non-asset logs remain local. -[source-manifest.json](source-manifest.json) identifies the original artwork and template. +The original placeholder and superseded verification reports remain in Git history at [efb1b05](https://github.com/con/talks/tree/efb1b059ffdf70d4e13f40cd5085aff6500e5269/2026-usrse/stamped-ai-study). +[source-manifest.json](source-manifest.json) records the inherited layout and artwork. Composition and prose are CC BY-SA 4.0; scripts are Apache-2.0. -Institutional marks retain their original rights and exceptions in [REUSE.toml](../../REUSE.toml). +Institutional marks and external scientific inputs retain their own rights, documented in [REUSE.toml](../../REUSE.toml) and the figure provenance. diff --git a/2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg b/2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg index fae6d3f3..547490ad 120000 --- a/2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg +++ b/2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg @@ -1 +1 @@ -../../../.git/annex/objects/Qw/09/MD5E-s72489--0686f3984df0eb61ccb759c66ae50aa4.svg/MD5E-s72489--0686f3984df0eb61ccb759c66ae50aa4.svg \ No newline at end of file +../../../.git/annex/objects/QM/2Q/MD5E-s72488--fcda447d1d4515e37ed70c0359039be9.svg/MD5E-s72488--fcda447d1d4515e37ed70c0359039be9.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg b/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg index 45b699a8..5dd329c7 120000 --- a/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg +++ b/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg @@ -1 +1 @@ -../../../.git/annex/objects/7X/qW/MD5E-s69859--b76ec9502c2311354e72b95bb2116724.svg/MD5E-s69859--b76ec9502c2311354e72b95bb2116724.svg \ No newline at end of file +../../../.git/annex/objects/Mq/Xq/MD5E-s71083--8f66e387d1e50c94a14c747cc1a363ab.svg/MD5E-s71083--8f66e387d1e50c94a14c747cc1a363ab.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg b/2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg index e2a1fe37..9d208ddb 120000 --- a/2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg +++ b/2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg @@ -1 +1 @@ -../../../.git/annex/objects/Z2/mQ/MD5E-s73018--c6465f09577434e540f749d487a3829b.svg/MD5E-s73018--c6465f09577434e540f749d487a3829b.svg \ No newline at end of file +../../../.git/annex/objects/jp/qZ/MD5E-s67623--fad8037a2c4eac1c81b0f96a75bb69e2.svg/MD5E-s67623--fad8037a2c4eac1c81b0f96a75bb69e2.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/build-poster.cjs b/2026-usrse/stamped-ai-study/build-poster.cjs index e9d74438..e32e3313 100644 --- a/2026-usrse/stamped-ai-study/build-poster.cjs +++ b/2026-usrse/stamped-ai-study/build-poster.cjs @@ -95,9 +95,10 @@ const sha = file => crypto.createHash('sha256').update(fs.readFileSync(file)).di }); audit.browser = browser.version(); audit.created_utc = new Date().toISOString(); - audit.source_sha256 = Object.fromEntries(['index.html', 'template.css', 'poster.css', 'build-poster.cjs', 'verify-pdf.py', 'verify-links.py', 'make-logo-qrs.py', 'source-manifest.json', 'update-results.py', 'results-data.json'].map(n => [n, sha(path.join(root, n))])); + audit.source_sha256 = Object.fromEntries(['index.html', 'template.css', 'poster.css', 'build-poster.cjs', 'verify-pdf.py', 'verify-links.py', 'make-logo-qrs.py', 'source-manifest.json', 'update-results.py', 'data/assessment-snapshot.json', 'figures/narps-figure-manifest.json', 'scripts/render-narps-figures.py', 'pixi.toml', 'package-lock.json'].map(n => [n, sha(path.join(root, n))])); audit.errors = errors; fs.writeFileSync(path.join(output, 'html-audit.json'), JSON.stringify(audit, null, 2) + '\n'); + await page.screenshot({ path: path.join(output, 'layout-review.png'), fullPage: true }); if (errors.length || audit.small.length || audit.outside.length || audit.regionOverflow.length || audit.internalOverflow.length || audit.sectionOverlap.length || audit.unlinkedImages.length || audit.images.some(i => !i.loaded)) { throw new Error('HTML layout or asset audit failed; inspect html-audit.json.'); } diff --git a/2026-usrse/stamped-ai-study/completion-plan.md b/2026-usrse/stamped-ai-study/completion-plan.md new file mode 100644 index 00000000..f6688ec5 --- /dev/null +++ b/2026-usrse/stamped-ai-study/completion-plan.md @@ -0,0 +1,102 @@ +# Completing the STAMPED in Practice poster + +The poster is the target argument for the study, with real example results and open comparison slots. +Its purpose is to help choose the evidence to collect, not to report a moving progress total. +The underlying data exports retain timestamps and hashes for reproducibility. + +## The argument to complete + +We iteratively improve research skills by testing the scientific work they produce. +A versioned research object lets others inspect both the scientific result and the process that changed the skills. +The completed poster should establish which revisions improved scientific adequacy, reproducibility and consistency, show costs and adverse outcomes, and invite new studies that test transfer. +An improved result is an empirical question, not an assumed conclusion. + +| Poster element | Present now | Evidence needed to finish | +| --- | --- | --- | +| Scientific case | NARPS H1; 54 fixed AO86 participant gain-effect maps; linked paper, task and data | Confirm the scientific panel is the intended scope of reproduction: group inference from supplied contrasts | +| Group maps and condensed result | Run 09 maps, correction, regional coefficient and CI, generated from archived artifacts | Choose the final illustrative analysis by a stated rule; keep its exact source revision and inference details | +| Variability across conditions | Individual native mask sizes and corrected positive voxel counts from eight completed runs | Extract all allocated runs and iterations; preserve native method choices; show points and ranges | +| Checked outcomes | All 36 allocated runs have slots; available primary judgments populate science, replay and checklist counts | Finish and bind all 36 primary and 12 assigned duplicate judgments; preserve item-level validity and disagreement | +| Iterative improvement | Revision 1 is pinned; two change-to-retest slots | For each revision, link the observed failure, reusable change, and next-round outcome; final round receives no further tuning | +| Evidence and reuse | Links to skills, inputs, source, outputs, plans and figure code | Finish registering and publishing the research objects and assessment evidence; verify a recipient can retrieve each required payload | +| Invitation | Use STAMPED; try the skills; contribute a hypothesis, data and reference result | Select the next studies with researchers at the conference | + +## Continue the experiment; add a consistent extraction layer + +The registered [comparison plan](https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md) already covers scientific adequacy, checklist attainment, operational outcomes, effort and descriptive variability. +These poster requirements do not by themselves require a restart. +Freeze a versioned secondary extraction specification, extract from stopped-worker artifacts, and leave the original work intact. +Record round-one additions as retrospective; apply the same specification to later rounds. + +The existing native mask/count figure shows analytic variation, including the choice of Bonferroni or permutation correction. +It is not an estimate of the effect of an assistance strategy, and different native regions should not be pooled as a single vmPFC effect. +A fixed-region mean recomputed from the same 54 input maps would be identical across conditions by construction. +That would be a useful reference value, but an uninformative comparison of the assistance conditions. + +A useful additional spatial endpoint is **pairwise agreement of corrected positive maps on common evaluation support**, reported within each condition and iteration: + +1. Verify image geometry, coordinate system and map semantics; do not mix effect, t, z or p maps. +2. Retain each worker's native search mask and corrected positive map, with method, family and alpha. +3. Define the evaluation support independently of the desired result, documenting its anatomical source and coverage rule. +Retain both common-support size and native-support size, plus each run’s coverage fraction. +Voxels outside a native search mask are unassessed, not negative. +4. Compute full-domain Dice only when both runs assessed the evaluation domain. +Otherwise mark it unavailable or report a separately labeled pair-specific intersection and its size. +On the declared support, compute pairwise Dice overlap of corrected positive maps and positive voxel counts. +Record both-empty maps explicitly; do not silently assign perfect agreement to an empty denominator. +5. Show all three pairwise comparisons for three runs, with run IDs and method labels. +Treat agreement as descriptive; a common mistake can also produce agreement. + +If all agents produce identical effect or t fields on shared support, report that null variation. +Do not manufacture variation by changing the endpoint after seeing the result. +Scientific adequacy, coverage choices and reproducibility can still differ. + +## Collect one bound record per run + +Retain a machine-readable record linking these fields to immutable artifact hashes and public or declared recipient URLs: + +| Record | Required fields | +| --- | --- | +| Assignment | study, iteration, run ID, condition, replicate, input revision, worker stop commit, skill revision, model/settings | +| Actual skill exposure | discovered, installed and used skills; versions; unsuccessful attempts; evidence | +| Scientific result | participant IDs/exclusions, model/design/weights, effect units, native region, effect/statistic maps, coverage/search mask, spatial reference, correction family/method/alpha, permutations/seed, hypothesis conclusion | +| Native estimate | effect, interval and interval method; corrected regional and whole-brain positive voxels; native mask/region sizes | +| Assessment | judgment ID/role, assessor/procedure revision, adequacy, every checklist item, validity overrides and missing reasons | +| Replay | entry point, generated-output manifest, input hashes before/after, candidate outputs, exact/numerical comparison per file, missing outputs, scope and elapsed time | +| Delivery and effort | worker delivery, coordinator preservation, independent retrieval, intervention, worker elapsed time and measured costs with their scope | +| Secondary extraction | specification/code version, source hashes, evaluation support, alignment, metric/value/units and missing reason | + +Do not make publication of an artifact or coordinator recovery count as worker delivery success. +Keep duplicate and supplementary judgments separate from the first assigned primary. + +## Repair measurement collection, not the scientific record + +The measurement disposition retains first-assigned judgments and marks infrastructure-affected measures unavailable. +The current aggregation scripts and documentation still need to be reconciled with that disposition; an older aggregation rule would exclude original primaries. +Preserve raw item verdicts and their external validity overlays instead of replacing historical grades. + +For future replay collection, distinguish generated outputs from inputs and authored reports. +An output manifest plus an input-hash guard prevents the replay tool from deleting a required input. +Define file-specific comparisons before evaluation: numerical arrays can have a declared tolerance; timestamps and authored prose need an explicit policy. +Run 09 illustrates why this matters: 12 of 14 candidate files were byte-identical, the JSON timestamp changed, and the report was not regenerated. + +These fixes need versioned assessment procedures and consistent interpretation across comparisons. +They do not justify selecting a more favorable reassessment as the primary. +Keep assessor amendments visible in the machine-readable results and stratify affected measures where necessary. + +## When a new comparison is needed + +Start a newly registered comparison if the desired poster requires a different scientific task, a mandatory common model/region, participant-level preprocessing, substantive changes to worker instructions, or a new primary assessment definition that cannot be applied comparably to existing objects. +That is a design decision to make before launching affected workers. +A new comparison should preserve and link the current study as evidence that motivated it, rather than discard it. + +## Finish the poster from the records + +1. Publish and bind each completed run, assessment and payload retrieval receipt. +2. Refresh the assessment export and figure inputs from those exact revisions. +3. Extend the variability figure by iteration using the extraction specification. +4. Replace the two revision slots with the actual changes and their subsequent outcomes. +5. Add a concise comparison result supported by the completed matrix, including null or adverse findings. +6. Rebuild the PDF, inspect its layout, and verify links and QR codes. + +The current figure inputs and assessment export are reproducible saved data, not promises that the later result slots have been measured. diff --git a/2026-usrse/stamped-ai-study/data/assessment-snapshot.json b/2026-usrse/stamped-ai-study/data/assessment-snapshot.json new file mode 100644 index 00000000..a88cd725 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/assessment-snapshot.json @@ -0,0 +1,1173 @@ +{ + "allocation_sha256": "3d8674fd7a404bb0020fc5a0bde0b913373e53c6cf9a3663de95f3600f472876", + "comparison_id": "narps-v1", + "coordinator_head": "3eb6f20f60a3375dcaadec071e9f099681d73d66", + "coordinator_url": "https://github.com/leej3/stamped-in-practice", + "disposition_sha256": "47dac2c943e01c08d22adbef5848746c23d6ecafd7b8f94780f3792780861e42", + "interpretation": { + "checklist": "Descriptive item counts, not a combined score or certification. Partial never counts as met. N/A and invalid/unavailable items are excluded only from the explicitly comparable applicable denominator. Not-checked items remain in that denominator and are shown separately.", + "missing": "Missing assessments and future runs are missing observations, never zero scores. Supplementary judgments cannot replace assigned primaries or duplicates.", + "publication": "Source hashes bind original local records. A null public_url means publication of that raw source is not established by this export; result_commit links are independent from assessment publication.", + "replay": "Assessor-infrastructure failures are unavailable, not worker failures. Same-host replay does not establish cross-host portability.", + "retrieval": "Coordinator preservation verifies exact stopped-worker bytes; it is not worker delivery credit or successful scientific execution.", + "scientific_adequacy": "Judge support for the scientific analysis is separate from support for the hypothesis. Infrastructure uncertainty flags preserve the raw scientific classification without regrading it." + }, + "other_judgments": [ + { + "assessment_scope": "amendment-01", + "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", + "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", + "checklist": { + "applicable_items": 29, + "comparable_applicable_items": 27, + "comparable_counts": { + "met": 12, + "not-applicable": 2, + "not-checked": 0, + "partial": 7, + "unmet": 8 + }, + "descriptive_met_denominator": 27, + "descriptive_met_numerator": 12, + "invalid_items": 0, + "item_statuses": { + "stamped-checklist:may/001": "unmet", + "stamped-checklist:may/002": "partial", + "stamped-checklist:may/003": "unmet", + "stamped-checklist:may/004": "not-applicable", + "stamped-checklist:may/005": "partial", + "stamped-checklist:must/001": "met", + "stamped-checklist:must/002": "met", + "stamped-checklist:must/003": "met", + "stamped-checklist:must/004": "met", + "stamped-checklist:must/005": "met", + "stamped-checklist:must/006": "partial", + "stamped-checklist:must/007": "unmet", + "stamped-checklist:must/008": "met", + "stamped-checklist:must/009": "met", + "stamped-checklist:must/010": "partial", + "stamped-checklist:must/011": "met", + "stamped-checklist:must/012": "partial", + "stamped-checklist:must/013": "met", + "stamped-checklist:must/014": "unmet", + "stamped-checklist:must/015": "partial", + "stamped-checklist:must/016": "met", + "stamped-checklist:must/017": "partial", + "stamped-checklist:should/001": "met", + "stamped-checklist:should/002": "unmet", + "stamped-checklist:should/003": "met", + "stamped-checklist:should/004": "unmet", + "stamped-checklist:should/005": "unmet", + "stamped-checklist:should/006": "not-checked", + "stamped-checklist:should/007": "unmet", + "stamped-checklist:should/008": "unmet", + "stamped-checklist:should/009": "not-applicable" + }, + "item_validity_overrides": { + "stamped-checklist:should/004": "unavailable", + "stamped-checklist:should/006": "unavailable" + }, + "raw_counts": { + "met": 12, + "not-applicable": 2, + "not-checked": 1, + "partial": 7, + "unmet": 9 + }, + "raw_retrieval_item": "met", + "retrieval_item_validity": "available", + "source_id": "narps-r1-07-judgment-02/response.json", + "total_items": 31, + "unavailable_items": 2, + "version": "0.3.1" + }, + "evidence_binding": "hashes-match", + "finished_at": "2026-10-16T03:07:04.857598+00:00", + "judgment_id": "narps-r1-07-judgment-02", + "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", + "replay": { + "candidate_outputs": null, + "comparable_status": "unavailable", + "different_outputs": [], + "host_scope": "same-host", + "identical_outputs": null, + "missing_outputs": [], + "raw_status": "unmet", + "source_id": "narps-r1-07-judgment-02/fresh-rerun.json", + "validity": "unavailable", + "within_tolerance_outputs": null + }, + "role": "supplementary", + "run": "narps-r1-07", + "science": { + "display_qualifier": "replay evidence unavailable", + "evidence_dependency": "uncertain", + "reported_adequacy": "qualified", + "source_id": "narps-r1-07-judgment-02/assessment.md" + }, + "status": "completed" + } + ], + "rounds": [ + { + "allocated_duplicate_judgments": 4, + "allocated_primary_judgments": 12, + "allocated_workers": 12, + "completed_primary_judgments": 3, + "final_untuned_evaluation": false, + "iteration": 1, + "ledger_updated_at": "2026-10-16T03:34:32.382717+00:00", + "skills_commit": "c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", + "status": "recorded-in-progress", + "workers_finished": 8 + }, + { + "allocated_duplicate_judgments": 4, + "allocated_primary_judgments": 12, + "allocated_workers": 12, + "completed_primary_judgments": 0, + "final_untuned_evaluation": false, + "iteration": 2, + "ledger_updated_at": null, + "skills_commit": null, + "status": "planned", + "workers_finished": 0 + }, + { + "allocated_duplicate_judgments": 4, + "allocated_primary_judgments": 12, + "allocated_workers": 12, + "completed_primary_judgments": 0, + "final_untuned_evaluation": true, + "iteration": 3, + "ledger_updated_at": null, + "skills_commit": null, + "status": "planned", + "workers_finished": 0 + } + ], + "rows": [ + { + "condition": "baseline", + "duplicate_assigned": false, + "iteration": 1, + "primary": null, + "replicate": 1, + "result_url": "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", + "retrieval": { + "annex_paths_verified": 74, + "completed_at": "2026-10-16T02:21:14.766149+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-01/recipient-check.json", + "verified": true, + "worker_delivery_credit": false + }, + "run": "narps-r1-01", + "status": "worker-completed-awaiting-judgment", + "worker_elapsed_seconds": 948.1464351660106, + "worker_finished_at": "2026-10-16T02:12:30.559106+00:00", + "worker_result_commit": "d90a335549f43007eac05902859224e6ce2eaada" + }, + { + "condition": "baseline", + "duplicate_assigned": false, + "iteration": 1, + "primary": null, + "replicate": 2, + "result_url": "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "retrieval": { + "annex_paths_verified": 56, + "completed_at": "2026-10-16T02:15:07.880399+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-02/recipient-check.json", + "verified": true, + "worker_delivery_credit": false + }, + "run": "narps-r1-02", + "status": "worker-completed-awaiting-judgment", + "worker_elapsed_seconds": 1061.4433347079903, + "worker_finished_at": "2026-10-16T02:12:01.209722+00:00", + "worker_result_commit": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4" + }, + { + "condition": "baseline", + "duplicate_assigned": true, + "iteration": 1, + "primary": null, + "replicate": 3, + "result_url": "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", + "retrieval": { + "annex_paths_verified": 58, + "completed_at": "2026-10-16T03:20:22.429031+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-03/recipient-check.json", + "verified": true, + "worker_delivery_credit": false + }, + "run": "narps-r1-03", + "status": "worker-completed-awaiting-judgment", + "worker_elapsed_seconds": 372.9900593330385, + "worker_finished_at": "2026-10-16T03:15:43.869438+00:00", + "worker_result_commit": "abf95b00c02fb55d16c4d269926c1428cedc0574" + }, + { + "condition": "discover-general", + "duplicate_assigned": true, + "iteration": 1, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r1-04", + "status": "running", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-general", + "duplicate_assigned": false, + "iteration": 1, + "primary": null, + "replicate": 2, + "result_url": "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "retrieval": null, + "run": "narps-r1-05", + "status": "worker-completed-awaiting-judgment", + "worker_elapsed_seconds": 1339.5679777499754, + "worker_finished_at": "2026-10-16T03:30:04.516025+00:00", + "worker_result_commit": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9" + }, + { + "condition": "discover-general", + "duplicate_assigned": false, + "iteration": 1, + "primary": null, + "replicate": 3, + "result_url": "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", + "retrieval": { + "annex_paths_verified": 56, + "completed_at": "2026-10-16T02:29:26.846873+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-06/recipient-check.json", + "verified": true, + "worker_delivery_credit": false + }, + "run": "narps-r1-06", + "status": "worker-completed-awaiting-judgment", + "worker_elapsed_seconds": 454.0117076250026, + "worker_finished_at": "2026-10-16T02:22:55.994726+00:00", + "worker_result_commit": "32d9cabf7b5d041f9efb97830bf5279068809357" + }, + { + "condition": "discover-science", + "duplicate_assigned": true, + "iteration": 1, + "primary": { + "assessment_scope": "original-procedure", + "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", + "assessor_source_commit": "0208f82504f15b82b7582f34143ab889dd52c68d", + "checklist": { + "applicable_items": 30, + "comparable_applicable_items": 28, + "comparable_counts": { + "met": 10, + "not-applicable": 1, + "not-checked": 0, + "partial": 8, + "unmet": 10 + }, + "descriptive_met_denominator": 28, + "descriptive_met_numerator": 10, + "invalid_items": 0, + "item_statuses": { + "stamped-checklist:may/001": "unmet", + "stamped-checklist:may/002": "partial", + "stamped-checklist:may/003": "partial", + "stamped-checklist:may/004": "unmet", + "stamped-checklist:may/005": "partial", + "stamped-checklist:must/001": "met", + "stamped-checklist:must/002": "met", + "stamped-checklist:must/003": "met", + "stamped-checklist:must/004": "met", + "stamped-checklist:must/005": "met", + "stamped-checklist:must/006": "partial", + "stamped-checklist:must/007": "unmet", + "stamped-checklist:must/008": "met", + "stamped-checklist:must/009": "met", + "stamped-checklist:must/010": "partial", + "stamped-checklist:must/011": "partial", + "stamped-checklist:must/012": "partial", + "stamped-checklist:must/013": "met", + "stamped-checklist:must/014": "unmet", + "stamped-checklist:must/015": "unmet", + "stamped-checklist:must/016": "partial", + "stamped-checklist:must/017": "partial", + "stamped-checklist:should/001": "met", + "stamped-checklist:should/002": "unmet", + "stamped-checklist:should/003": "met", + "stamped-checklist:should/004": "not-checked", + "stamped-checklist:should/005": "unmet", + "stamped-checklist:should/006": "unmet", + "stamped-checklist:should/007": "unmet", + "stamped-checklist:should/008": "unmet", + "stamped-checklist:should/009": "not-applicable" + }, + "item_validity_overrides": { + "stamped-checklist:must/016": "unavailable", + "stamped-checklist:should/004": "unavailable" + }, + "raw_counts": { + "met": 10, + "not-applicable": 1, + "not-checked": 1, + "partial": 9, + "unmet": 10 + }, + "raw_retrieval_item": "partial", + "retrieval_item_validity": "unavailable", + "source_id": "narps-r1-07-judgment-01/response.json", + "total_items": 31, + "unavailable_items": 2, + "version": "0.3.1" + }, + "evidence_binding": "hashes-match", + "finished_at": "2026-10-16T02:23:34.439766+00:00", + "judgment_id": "narps-r1-07-judgment-01", + "procedure_sha256": "c6f01b00ee6a4469be70eb8c85cc8a2553e6ef616e3b7fb8bc46707acaae4bd4", + "replay": { + "candidate_outputs": null, + "comparable_status": "unavailable", + "different_outputs": [], + "host_scope": "same-host", + "identical_outputs": null, + "missing_outputs": [], + "raw_status": "not-checked", + "source_id": "narps-r1-07-judgment-01/fresh-rerun.json", + "validity": "unavailable", + "within_tolerance_outputs": null + }, + "role": "primary", + "science": { + "display_qualifier": "replay evidence unavailable", + "evidence_dependency": "uncertain", + "reported_adequacy": "qualified", + "source_id": "narps-r1-07-judgment-01/assessment.md" + }, + "status": "completed" + }, + "replicate": 1, + "result_url": "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "retrieval": { + "annex_paths_verified": 64, + "completed_at": "2026-10-16T02:00:35.748266+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-07/recipient-check.json", + "verified": true, + "worker_delivery_credit": false + }, + "run": "narps-r1-07", + "status": "judgments-awaiting-retention", + "worker_elapsed_seconds": 659.525256749941, + "worker_finished_at": "2026-10-16T01:50:22.126181+00:00", + "worker_result_commit": "f30190d8144a9e15acfa1c0d973eadf0d655c83c" + }, + { + "condition": "discover-science", + "duplicate_assigned": false, + "iteration": 1, + "primary": { + "assessment_scope": "original-procedure", + "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", + "assessor_source_commit": "0208f82504f15b82b7582f34143ab889dd52c68d", + "checklist": { + "applicable_items": 30, + "comparable_applicable_items": 27, + "comparable_counts": { + "met": 15, + "not-applicable": 1, + "not-checked": 0, + "partial": 5, + "unmet": 7 + }, + "descriptive_met_denominator": 27, + "descriptive_met_numerator": 15, + "invalid_items": 0, + "item_statuses": { + "stamped-checklist:may/001": "unmet", + "stamped-checklist:may/002": "met", + "stamped-checklist:may/003": "met", + "stamped-checklist:may/004": "met", + "stamped-checklist:may/005": "met", + "stamped-checklist:must/001": "met", + "stamped-checklist:must/002": "met", + "stamped-checklist:must/003": "met", + "stamped-checklist:must/004": "met", + "stamped-checklist:must/005": "met", + "stamped-checklist:must/006": "unmet", + "stamped-checklist:must/007": "partial", + "stamped-checklist:must/008": "met", + "stamped-checklist:must/009": "met", + "stamped-checklist:must/010": "met", + "stamped-checklist:must/011": "partial", + "stamped-checklist:must/012": "partial", + "stamped-checklist:must/013": "met", + "stamped-checklist:must/014": "unmet", + "stamped-checklist:must/015": "unmet", + "stamped-checklist:must/016": "partial", + "stamped-checklist:must/017": "partial", + "stamped-checklist:should/001": "met", + "stamped-checklist:should/002": "unmet", + "stamped-checklist:should/003": "met", + "stamped-checklist:should/004": "unmet", + "stamped-checklist:should/005": "unmet", + "stamped-checklist:should/006": "unmet", + "stamped-checklist:should/007": "partial", + "stamped-checklist:should/008": "unmet", + "stamped-checklist:should/009": "not-applicable" + }, + "item_validity_overrides": { + "stamped-checklist:must/016": "unavailable", + "stamped-checklist:should/004": "unavailable", + "stamped-checklist:should/006": "unavailable" + }, + "raw_counts": { + "met": 15, + "not-applicable": 1, + "not-checked": 0, + "partial": 6, + "unmet": 9 + }, + "raw_retrieval_item": "partial", + "retrieval_item_validity": "unavailable", + "source_id": "narps-r1-08-judgment-01/response.json", + "total_items": 31, + "unavailable_items": 3, + "version": "0.3.1" + }, + "evidence_binding": "hashes-match", + "finished_at": "2026-10-16T02:28:51.611975+00:00", + "judgment_id": "narps-r1-08-judgment-01", + "procedure_sha256": "c6f01b00ee6a4469be70eb8c85cc8a2553e6ef616e3b7fb8bc46707acaae4bd4", + "replay": { + "candidate_outputs": null, + "comparable_status": "unavailable", + "different_outputs": [], + "host_scope": "same-host", + "identical_outputs": null, + "missing_outputs": [], + "raw_status": "not-checked", + "source_id": "narps-r1-08-judgment-01/fresh-rerun.json", + "validity": "unavailable", + "within_tolerance_outputs": null + }, + "role": "primary", + "science": { + "display_qualifier": "replay evidence unavailable", + "evidence_dependency": "uncertain", + "reported_adequacy": "not supported", + "source_id": "narps-r1-08-judgment-01/assessment.md" + }, + "status": "completed" + }, + "replicate": 2, + "result_url": "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", + "retrieval": { + "annex_paths_verified": 72, + "completed_at": "2026-10-16T02:09:34.813185+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-08/recipient-check.json", + "verified": true, + "worker_delivery_credit": false + }, + "run": "narps-r1-08", + "status": "judgments-awaiting-retention", + "worker_elapsed_seconds": 788.849569916958, + "worker_finished_at": "2026-10-16T01:52:40.705473+00:00", + "worker_result_commit": "42e957201315aa8221ba60fbe614119e22639ce8" + }, + { + "condition": "discover-science", + "duplicate_assigned": false, + "iteration": 1, + "primary": { + "assessment_scope": "amendment-01", + "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", + "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", + "checklist": { + "applicable_items": 30, + "comparable_applicable_items": 30, + "comparable_counts": { + "met": 13, + "not-applicable": 1, + "not-checked": 1, + "partial": 6, + "unmet": 10 + }, + "descriptive_met_denominator": 30, + "descriptive_met_numerator": 13, + "invalid_items": 0, + "item_statuses": { + "stamped-checklist:may/001": "unmet", + "stamped-checklist:may/002": "met", + "stamped-checklist:may/003": "partial", + "stamped-checklist:may/004": "met", + "stamped-checklist:may/005": "met", + "stamped-checklist:must/001": "met", + "stamped-checklist:must/002": "met", + "stamped-checklist:must/003": "met", + "stamped-checklist:must/004": "met", + "stamped-checklist:must/005": "met", + "stamped-checklist:must/006": "unmet", + "stamped-checklist:must/007": "unmet", + "stamped-checklist:must/008": "met", + "stamped-checklist:must/009": "met", + "stamped-checklist:must/010": "partial", + "stamped-checklist:must/011": "partial", + "stamped-checklist:must/012": "partial", + "stamped-checklist:must/013": "met", + "stamped-checklist:must/014": "unmet", + "stamped-checklist:must/015": "partial", + "stamped-checklist:must/016": "not-checked", + "stamped-checklist:must/017": "partial", + "stamped-checklist:should/001": "met", + "stamped-checklist:should/002": "unmet", + "stamped-checklist:should/003": "met", + "stamped-checklist:should/004": "unmet", + "stamped-checklist:should/005": "unmet", + "stamped-checklist:should/006": "unmet", + "stamped-checklist:should/007": "unmet", + "stamped-checklist:should/008": "unmet", + "stamped-checklist:should/009": "not-applicable" + }, + "item_validity_overrides": {}, + "raw_counts": { + "met": 13, + "not-applicable": 1, + "not-checked": 1, + "partial": 6, + "unmet": 10 + }, + "raw_retrieval_item": "not-checked", + "retrieval_item_validity": "available", + "source_id": "narps-r1-09-judgment-01/response.json", + "total_items": 31, + "unavailable_items": 0, + "version": "0.3.1" + }, + "evidence_binding": "pending", + "finished_at": "2026-10-16T03:31:45.402132+00:00", + "judgment_id": "narps-r1-09-judgment-01", + "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", + "replay": { + "candidate_outputs": 14, + "comparable_status": "partial", + "different_outputs": [ + "results/results.json" + ], + "host_scope": "same-host", + "identical_outputs": 12, + "missing_outputs": [ + "results/report.md" + ], + "raw_status": "partial", + "source_id": "narps-r1-09-judgment-01/fresh-rerun.json", + "validity": "available", + "within_tolerance_outputs": 0 + }, + "role": "primary", + "science": { + "display_qualifier": null, + "evidence_dependency": "no-uncertainty-overlay-recorded", + "reported_adequacy": "supported", + "source_id": "narps-r1-09-judgment-01/assessment.md" + }, + "status": "completed" + }, + "replicate": 3, + "result_url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", + "retrieval": { + "annex_paths_verified": 59, + "completed_at": "2026-10-16T02:19:12.725131+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-09/recipient-check.json", + "verified": true, + "worker_delivery_credit": false + }, + "run": "narps-r1-09", + "status": "judgments-awaiting-retention", + "worker_elapsed_seconds": 2262.796634749975, + "worker_finished_at": "2026-10-16T02:17:26.482423+00:00", + "worker_result_commit": "2ad7c466615141d11b81720ff97d61c2d7c23f73" + }, + { + "condition": "stamped-explicit", + "duplicate_assigned": false, + "iteration": 1, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r1-10", + "status": "not-started", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "stamped-explicit", + "duplicate_assigned": true, + "iteration": 1, + "primary": null, + "replicate": 2, + "result_url": null, + "retrieval": null, + "run": "narps-r1-11", + "status": "not-started", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "stamped-explicit", + "duplicate_assigned": false, + "iteration": 1, + "primary": null, + "replicate": 3, + "result_url": null, + "retrieval": null, + "run": "narps-r1-12", + "status": "running", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "baseline", + "duplicate_assigned": false, + "iteration": 2, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r2-01", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "baseline", + "duplicate_assigned": true, + "iteration": 2, + "primary": null, + "replicate": 2, + "result_url": null, + "retrieval": null, + "run": "narps-r2-02", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "baseline", + "duplicate_assigned": false, + "iteration": 2, + "primary": null, + "replicate": 3, + "result_url": null, + "retrieval": null, + "run": "narps-r2-03", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-general", + "duplicate_assigned": false, + "iteration": 2, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r2-04", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-general", + "duplicate_assigned": true, + "iteration": 2, + "primary": null, + "replicate": 2, + "result_url": null, + "retrieval": null, + "run": "narps-r2-05", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-general", + "duplicate_assigned": false, + "iteration": 2, + "primary": null, + "replicate": 3, + "result_url": null, + "retrieval": null, + "run": "narps-r2-06", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-science", + "duplicate_assigned": false, + "iteration": 2, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r2-07", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-science", + "duplicate_assigned": true, + "iteration": 2, + "primary": null, + "replicate": 2, + "result_url": null, + "retrieval": null, + "run": "narps-r2-08", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-science", + "duplicate_assigned": false, + "iteration": 2, + "primary": null, + "replicate": 3, + "result_url": null, + "retrieval": null, + "run": "narps-r2-09", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "stamped-explicit", + "duplicate_assigned": false, + "iteration": 2, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r2-10", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "stamped-explicit", + "duplicate_assigned": false, + "iteration": 2, + "primary": null, + "replicate": 2, + "result_url": null, + "retrieval": null, + "run": "narps-r2-11", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "stamped-explicit", + "duplicate_assigned": true, + "iteration": 2, + "primary": null, + "replicate": 3, + "result_url": null, + "retrieval": null, + "run": "narps-r2-12", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "baseline", + "duplicate_assigned": false, + "iteration": 3, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r3-01", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "baseline", + "duplicate_assigned": true, + "iteration": 3, + "primary": null, + "replicate": 2, + "result_url": null, + "retrieval": null, + "run": "narps-r3-02", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "baseline", + "duplicate_assigned": false, + "iteration": 3, + "primary": null, + "replicate": 3, + "result_url": null, + "retrieval": null, + "run": "narps-r3-03", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-general", + "duplicate_assigned": false, + "iteration": 3, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r3-04", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-general", + "duplicate_assigned": true, + "iteration": 3, + "primary": null, + "replicate": 2, + "result_url": null, + "retrieval": null, + "run": "narps-r3-05", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-general", + "duplicate_assigned": false, + "iteration": 3, + "primary": null, + "replicate": 3, + "result_url": null, + "retrieval": null, + "run": "narps-r3-06", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-science", + "duplicate_assigned": false, + "iteration": 3, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r3-07", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-science", + "duplicate_assigned": false, + "iteration": 3, + "primary": null, + "replicate": 2, + "result_url": null, + "retrieval": null, + "run": "narps-r3-08", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "discover-science", + "duplicate_assigned": true, + "iteration": 3, + "primary": null, + "replicate": 3, + "result_url": null, + "retrieval": null, + "run": "narps-r3-09", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "stamped-explicit", + "duplicate_assigned": true, + "iteration": 3, + "primary": null, + "replicate": 1, + "result_url": null, + "retrieval": null, + "run": "narps-r3-10", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "stamped-explicit", + "duplicate_assigned": false, + "iteration": 3, + "primary": null, + "replicate": 2, + "result_url": null, + "retrieval": null, + "run": "narps-r3-11", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + }, + { + "condition": "stamped-explicit", + "duplicate_assigned": false, + "iteration": 3, + "primary": null, + "replicate": 3, + "result_url": null, + "retrieval": null, + "run": "narps-r3-12", + "status": "planned", + "worker_elapsed_seconds": null, + "worker_finished_at": null, + "worker_result_commit": null + } + ], + "schema_version": 1, + "snapshot_at_eastern": "2026-10-15T23:42:41.740409-04:00", + "snapshot_at_utc": "2026-10-16T03:42:41.740409+00:00", + "sources": { + "allocation.json": { + "bytes": 5574, + "coordinator_path": "iterations/narps-v1/allocation.json", + "matches_coordinator_head": true, + "public_url": "https://github.com/leej3/stamped-in-practice/blob/3eb6f20f60a3375dcaadec071e9f099681d73d66/iterations/narps-v1/allocation.json", + "sha256": "3d8674fd7a404bb0020fc5a0bde0b913373e53c6cf9a3663de95f3600f472876" + }, + "measurement-disposition-01.json": { + "bytes": 18404, + "coordinator_path": "iterations/narps-v1/measurement-disposition-01.json", + "matches_coordinator_head": true, + "public_url": "https://github.com/leej3/stamped-in-practice/blob/3eb6f20f60a3375dcaadec071e9f099681d73d66/iterations/narps-v1/measurement-disposition-01.json", + "sha256": "47dac2c943e01c08d22adbef5848746c23d6ecafd7b8f94780f3792780861e42" + }, + "narps-r1-01/recipient-check.json": { + "bytes": 1563, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "1c34e66ee20e247469cc61be7494942ad1d436ec0080a91339d3e91f8d1f3c39" + }, + "narps-r1-02/recipient-check.json": { + "bytes": 1974, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "e31cf366b50206033940a4251c357d0ce5739ff9152d91b51cde251cc4a2ec2e" + }, + "narps-r1-03/recipient-check.json": { + "bytes": 1727, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "f93d2c6c91c3b8294d98503cbd1cd1e692731014cc245a22a3269718ec9bb595" + }, + "narps-r1-06/recipient-check.json": { + "bytes": 2395, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "ac16a507731a3e669d325c9858d0692353603f3bf5609fa8689b46dd9bd80ee7" + }, + "narps-r1-07-judgment-01/assessment.md": { + "bytes": 14845, + "public_url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", + "publication_status": "published-immutable-source-hash-verified", + "sha256": "ddca54caa74904890762dae31e8a85212f50c5f0ef29e25e68b29bba056c4e51" + }, + "narps-r1-07-judgment-01/fresh-rerun.json": { + "bytes": 7861, + "public_url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-fresh-rerun.json", + "publication_status": "published-immutable-source-hash-verified", + "sha256": "b1ae388ae26cc6e7b2e68a31ff92964c1c6c155a1c044ce58ea6f75844c6c44f" + }, + "narps-r1-07-judgment-01/native-result.json": { + "bytes": 5505, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "fc07d5d5a6af29854980e5e9265bdfb0bf2094c5017bfbefbf331d1b15dde3cd" + }, + "narps-r1-07-judgment-01/output-binding.json": { + "bytes": 1227, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "3c8e4f64c785bf527508b80a8d4467f7c9d3d96a7d8b368f01e4cf827e7691f7" + }, + "narps-r1-07-judgment-01/response.json": { + "bytes": 16516, + "public_url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-response.json", + "publication_status": "published-immutable-source-hash-verified", + "sha256": "4e8631ab62092378c1ba98182492ca6950b8065dc32f3438812967cbe3d42e1e" + }, + "narps-r1-07-judgment-02/assessment.md": { + "bytes": 16726, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "d885f65f05bb6097f36f3697e1441b7163bfbd9817105dc02e6110ebccaddade" + }, + "narps-r1-07-judgment-02/fresh-rerun.json": { + "bytes": 11599, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "9e759e36b01d5d210ce7efaa04de1cd30ff053890ea801d5789fcee0449b00c6" + }, + "narps-r1-07-judgment-02/native-result.json": { + "bytes": 5606, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "c62b32440bceb0d9466cf34ec745e041465b90dfaa60db571f5afd499bd98965" + }, + "narps-r1-07-judgment-02/output-binding.json": { + "bytes": 1820, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "1b11b43d95bb93d5385018107e04b029ae5e64ce35f20af9d2562c6ea8824191" + }, + "narps-r1-07-judgment-02/response.json": { + "bytes": 19623, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "f9f4de3a9735f8b2c5f4df2ef97a3b05926e1305dc80017742e064d46a3e6e69" + }, + "narps-r1-07/recipient-check.json": { + "bytes": 965, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "9319252e4a093faa95f33e2e4bbb2c2334693a3f1c1d3078869d997b99b5cf41" + }, + "narps-r1-08-judgment-01/assessment.md": { + "bytes": 19175, + "public_url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", + "publication_status": "published-immutable-source-hash-verified", + "sha256": "4c24ea408fbc1aeb9879f0c7928779f46abf18e4f46bc3b5a22ca601c97a4b4d" + }, + "narps-r1-08-judgment-01/fresh-rerun.json": { + "bytes": 7732, + "public_url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-fresh-rerun.json", + "publication_status": "published-immutable-source-hash-verified", + "sha256": "4650b840be0f75ddc91e43c62449752e9ae881d27a3896cfda5745480889ad44" + }, + "narps-r1-08-judgment-01/native-result.json": { + "bytes": 5505, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "294ab2b2190cb4b3b9ab39eb4508d66c9dff566df92978c13c1b0431b600967e" + }, + "narps-r1-08-judgment-01/output-binding.json": { + "bytes": 1244, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "6f4596caba59608556e8f59175b7a17acb44a2353a72a135e565941a968d59e9" + }, + "narps-r1-08-judgment-01/response.json": { + "bytes": 20607, + "public_url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-response.json", + "publication_status": "published-immutable-source-hash-verified", + "sha256": "137c87adfd55f87cee709f71300aee93d43049395623841b1ee29006069724bb" + }, + "narps-r1-08/recipient-check.json": { + "bytes": 2416, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "48f2516664930af5f176549480e0faec1fa7a709deff71f6b9dbabb454358860" + }, + "narps-r1-09-judgment-01/assessment.md": { + "bytes": 16195, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "6feb85a68d853a6e749901bc92fb2b2818bdacd9df5c7703385dcbad7fb38eb2" + }, + "narps-r1-09-judgment-01/fresh-rerun.json": { + "bytes": 13018, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "4b12f71d2243ce9c31ea76f885088d42d626b17bc8e9c33d5c7afb6e1699183a" + }, + "narps-r1-09-judgment-01/native-result.json": { + "bytes": 5606, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "2dede59a6d75a831d68aa64dffe4270436f0c54144ce48cbc215c656bcc32bc7" + }, + "narps-r1-09-judgment-01/response.json": { + "bytes": 17915, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "34d3f2681e083a8dbf21ffb1aec1f0932a9c4fa841c3753325224c881a97bda0" + }, + "narps-r1-09/recipient-check.json": { + "bytes": 1974, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "b5f577b038bc88bd4c50efd337e6b9dae7b46908d49004e94ac08afb26e7db62" + }, + "round-1.json": { + "bytes": 27716, + "coordinator_path": "iterations/narps-v1/round-1.json", + "matches_coordinator_head": true, + "public_url": "https://github.com/leej3/stamped-in-practice/blob/3eb6f20f60a3375dcaadec071e9f099681d73d66/iterations/narps-v1/round-1.json", + "sha256": "dc752dfded510a21509a6b4a24de34aac7068a9c728ee4d5efcf91b849f7f30a" + } + }, + "study": "narps", + "warnings": [] +} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/anatomical-context.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/anatomical-context.nii.gz new file mode 120000 index 00000000..2585bbe6 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/anatomical-context.nii.gz @@ -0,0 +1 @@ +../../../../../.git/annex/objects/Zq/3j/MD5E-s207544--035d9295baaa7a578da078948c0807c1.nii.gz/MD5E-s207544--035d9295baaa7a578da078948c0807c1.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/common_brain_mask.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/common_brain_mask.nii.gz new file mode 120000 index 00000000..351b9305 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/common_brain_mask.nii.gz @@ -0,0 +1 @@ +../../../../../.git/annex/objects/wq/vX/MD5E-s23179--b25609ef0de74955022971bf2597b668.nii.gz/MD5E-s23179--b25609ef0de74955022971bf2597b668.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz new file mode 120000 index 00000000..4cb624da --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz @@ -0,0 +1 @@ +../../../../../.git/annex/objects/V3/Wm/MD5E-s4192--20ebf663b35d48e2ea0f235518973796.nii.gz/MD5E-s4192--20ebf663b35d48e2ea0f235518973796.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/one_sample_t.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/one_sample_t.nii.gz new file mode 120000 index 00000000..8a9bd6f6 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/one_sample_t.nii.gz @@ -0,0 +1 @@ +../../../../../.git/annex/objects/M5/P4/MD5E-s772808--30da57fa1b8cc7a318c3b4f5edd628b6.nii.gz/MD5E-s772808--30da57fa1b8cc7a318c3b4f5edd628b6.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz new file mode 120000 index 00000000..822cd1cb --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz @@ -0,0 +1 @@ +../../../../../.git/annex/objects/mK/wf/MD5E-s4607--e6ad8475cbac58e6f2cfd22bcf28dc70.nii.gz/MD5E-s4607--e6ad8475cbac58e6f2cfd22bcf28dc70.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/participant-map-sources.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/participant-map-sources.json new file mode 100644 index 00000000..1d3637a9 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/participant-map-sources.json @@ -0,0 +1,473 @@ +{ + "study": "NARPS Hypothesis 1: group inference from fixed participant effects", + "collection": "https://neurovault.org/collections/4932/", + "team": "AO86", + "image_metadata_api": "https://neurovault.org/api/collections/4932/images/?limit=2000", + "selection": "All single-subject unthresholded hypo1 cope images; participant IDs exactly match the 54 equalIndifference participants in the pinned source table.", + "maps": 54, + "map_bytes": 96387264, + "map_type": "participant contrast parameter estimate, not a z/t statistic or a group result", + "spatial_reference": "MNI152NLin2009cAsym", + "upstream_processing_fixed": true, + "cohort_source": { + "url": "https://raw.githubusercontent.com/OpenNeuroDatasets/ds001734/64ec117560ab58ed0fe1273f3e90887b1768b268/participants.tsv", + "git_commit": "64ec117560ab58ed0fe1273f3e90887b1768b268", + "sha256": "d127d700f9a519338da295ea56455bf7bb46ca572f726da72ef7b57c310687b8", + "transformation": "Select group == equalIndifference; preserve all columns and values." + }, + "methods_source": { + "url": "https://raw.githubusercontent.com/poldrack/narps/0a9d71a5ab435b40dcd50fea82d2961a43f0a3fc/ImageAnalyses/metadata_files/analysis_pipelines_for_analysis.xlsx", + "git_commit": "0a9d71a5ab435b40dcd50fea82d2961a43f0a3fc", + "sha256": "bfb66119c6beb26e5d3fc84638435cf6c49b40e5eb06606bfecaee0aa48d82b7", + "sheet": "Sheet1", + "header_excel_row": 2, + "team_id": "AO86" + }, + "checksum_scope": "SHA256 values are computed from retrieved bytes; NeuroVault metadata independently supplies file sizes but no source checksums.", + "files": { + "data/sub-001_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-001_hypo1_cope.nii.gz", + "image_id": 118651, + "participant_id": "sub-001", + "bytes": 1794522, + "sha256": "baf3440fbc7f5f59dea28d231e9c5eb9cf00a15b6924342f4b79e7faf56a929a", + "transformation": "none" + }, + "data/sub-003_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-003_hypo1_cope.nii.gz", + "image_id": 118661, + "participant_id": "sub-003", + "bytes": 1762018, + "sha256": "a8c9b6276d1597bc43695516c9ac5b2893a8d8408cd053161ceaddbd42dafb20", + "transformation": "none" + }, + "data/sub-005_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-005_hypo1_cope.nii.gz", + "image_id": 118671, + "participant_id": "sub-005", + "bytes": 1847315, + "sha256": "415383874c65fd9e10bb03bf2aa59bfcd1d10650bc5d0560a249e85d52b7b205", + "transformation": "none" + }, + "data/sub-009_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-009_hypo1_cope.nii.gz", + "image_id": 118686, + "participant_id": "sub-009", + "bytes": 1737182, + "sha256": "33af129d8ba13cd4b6175089706c531471be1e0bd7ccd43ece10751c8cc3254c", + "transformation": "none" + }, + "data/sub-011_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-011_hypo1_cope.nii.gz", + "image_id": 118696, + "participant_id": "sub-011", + "bytes": 1828116, + "sha256": "6f74dd449eefa6eff40ec00eb046ec7e8bb13c0b7c2ac1874155a9c166692352", + "transformation": "none" + }, + "data/sub-013_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-013_hypo1_cope.nii.gz", + "image_id": 118701, + "participant_id": "sub-013", + "bytes": 1760573, + "sha256": "bfa79b82f931d81d6387e82b8413f1f889a06f36275ba510554669c84a3c026f", + "transformation": "none" + }, + "data/sub-015_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-015_hypo1_cope.nii.gz", + "image_id": 118711, + "participant_id": "sub-015", + "bytes": 1805181, + "sha256": "5d98f6d74823516768659967f95ef43728584eab024c58af30987783515d7694", + "transformation": "none" + }, + "data/sub-017_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-017_hypo1_cope.nii.gz", + "image_id": 118721, + "participant_id": "sub-017", + "bytes": 1791857, + "sha256": "dca9eac4d6f0ef4e2a3e631b2d10f89c5362863698cec4a7c7b9b14128ae96d9", + "transformation": "none" + }, + "data/sub-019_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-019_hypo1_cope.nii.gz", + "image_id": 118731, + "participant_id": "sub-019", + "bytes": 1788203, + "sha256": "f9df911028e0ee06d230b097d8c7011b3c09f34df436e8854cd959145777533d", + "transformation": "none" + }, + "data/sub-021_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-021_hypo1_cope.nii.gz", + "image_id": 118741, + "participant_id": "sub-021", + "bytes": 1821886, + "sha256": "7dd60d722e243f429633f1c63c9a810afd73d1ffd0e0e68fcdd2bf3790d78db1", + "transformation": "none" + }, + "data/sub-025_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-025_hypo1_cope.nii.gz", + "image_id": 118757, + "participant_id": "sub-025", + "bytes": 1805994, + "sha256": "545945b0a5f7e51d65e2828e76e776fffcbb33b1635bb7272bc0948bfbc6b7b4", + "transformation": "none" + }, + "data/sub-027_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-027_hypo1_cope.nii.gz", + "image_id": 118767, + "participant_id": "sub-027", + "bytes": 1814109, + "sha256": "dffa472f8cfe30b9c2025470924fceb23d30fb881db6b893d436faa8d8dcef2f", + "transformation": "none" + }, + "data/sub-029_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-029_hypo1_cope.nii.gz", + "image_id": 118772, + "participant_id": "sub-029", + "bytes": 1792367, + "sha256": "0ed1be0ce40d1becaec5cf18487670822b8cb5fcbc5ad0ec2cb34d9a3ed7071b", + "transformation": "none" + }, + "data/sub-033_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-033_hypo1_cope.nii.gz", + "image_id": 118787, + "participant_id": "sub-033", + "bytes": 1765631, + "sha256": "04778467af0a6c93d531d30f73c5492384be59044ebd7be3e95862700e2e9117", + "transformation": "none" + }, + "data/sub-035_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-035_hypo1_cope.nii.gz", + "image_id": 118792, + "participant_id": "sub-035", + "bytes": 1768719, + "sha256": "211fd859f33d69891531ad3e5dd66fe0c0891b20c58e6ef8aa21b4d49ff030c9", + "transformation": "none" + }, + "data/sub-037_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-037_hypo1_cope.nii.gz", + "image_id": 118802, + "participant_id": "sub-037", + "bytes": 1807410, + "sha256": "a4d76561e8ba1848572a474afce754310f4ee101cfd99276eb3105289cc0934b", + "transformation": "none" + }, + "data/sub-039_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-039_hypo1_cope.nii.gz", + "image_id": 118812, + "participant_id": "sub-039", + "bytes": 1775163, + "sha256": "744df860cfb8410aae16bcb1742e7390c51306c66959bb19da9f5b57206bba7b", + "transformation": "none" + }, + "data/sub-041_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-041_hypo1_cope.nii.gz", + "image_id": 118822, + "participant_id": "sub-041", + "bytes": 1801691, + "sha256": "f93eeadcd3f57239e4c32c5df2ca2c4013bf424978701bd5beec535ace24669f", + "transformation": "none" + }, + "data/sub-043_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-043_hypo1_cope.nii.gz", + "image_id": 118827, + "participant_id": "sub-043", + "bytes": 1776243, + "sha256": "520f19805c6c4358bc56e9bba290b9b79a80c14385bc7be90e4bd81b3e37e771", + "transformation": "none" + }, + "data/sub-045_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-045_hypo1_cope.nii.gz", + "image_id": 118837, + "participant_id": "sub-045", + "bytes": 1812100, + "sha256": "3826c6daf5a7be7b03ae552847c4a8709a1b86c2498735e6ce80768cd5d0b88e", + "transformation": "none" + }, + "data/sub-047_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-047_hypo1_cope.nii.gz", + "image_id": 118933, + "participant_id": "sub-047", + "bytes": 1762249, + "sha256": "8585e8be8eebe84dd316eeb1f86090a8123f88a8b5d275bc2c39049a3bf4bf34", + "transformation": "none" + }, + "data/sub-049_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-049_hypo1_cope.nii.gz", + "image_id": 118938, + "participant_id": "sub-049", + "bytes": 1821174, + "sha256": "e01dacebea8fa444b7696e90a53e9ab0b3543b0da780ba430875b3fde117e084", + "transformation": "none" + }, + "data/sub-051_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-051_hypo1_cope.nii.gz", + "image_id": 118948, + "participant_id": "sub-051", + "bytes": 1755787, + "sha256": "74e2887ed9eb4252357cdce98eb53b5b8ab2620ee5ee57aee1bc677c0099b2ca", + "transformation": "none" + }, + "data/sub-053_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-053_hypo1_cope.nii.gz", + "image_id": 118958, + "participant_id": "sub-053", + "bytes": 1760465, + "sha256": "a3b3509a0240c5b12a9c63f94f2913e69eeb7fab4fbe92ac1adc62eb45bdd0ba", + "transformation": "none" + }, + "data/sub-055_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-055_hypo1_cope.nii.gz", + "image_id": 118968, + "participant_id": "sub-055", + "bytes": 1790638, + "sha256": "136983cd89668779e26eba6847653f1d765452f8a2d5675fce037f751edb0ea8", + "transformation": "none" + }, + "data/sub-057_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-057_hypo1_cope.nii.gz", + "image_id": 118978, + "participant_id": "sub-057", + "bytes": 1815775, + "sha256": "aafa1a371d72e690f737d2507c9d7bbd20c620377cd294d44555c856a0566496", + "transformation": "none" + }, + "data/sub-059_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-059_hypo1_cope.nii.gz", + "image_id": 118988, + "participant_id": "sub-059", + "bytes": 1785421, + "sha256": "0fa3da37a11640705014665f546ba86735472a8a2b7fdf1b37177a55abd0a65a", + "transformation": "none" + }, + "data/sub-061_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-061_hypo1_cope.nii.gz", + "image_id": 118998, + "participant_id": "sub-061", + "bytes": 1783701, + "sha256": "cb8bc3bf4264fe156348d3c171335b84978eb8d32b0fd331db9f4661dad2bdff", + "transformation": "none" + }, + "data/sub-063_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-063_hypo1_cope.nii.gz", + "image_id": 119008, + "participant_id": "sub-063", + "bytes": 1786231, + "sha256": "2a5458eb314441b01dacfa1bcea9e9a95f983d2994aa6b853ebe1a20b017a467", + "transformation": "none" + }, + "data/sub-067_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-067_hypo1_cope.nii.gz", + "image_id": 119023, + "participant_id": "sub-067", + "bytes": 1774136, + "sha256": "9977321f1f775f04dab881d740ea5cc491dadda07405f2380c61c50e5c3a01fc", + "transformation": "none" + }, + "data/sub-069_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-069_hypo1_cope.nii.gz", + "image_id": 119033, + "participant_id": "sub-069", + "bytes": 1769792, + "sha256": "bd22905ebe789319f082b0fdb6ba7cd5aaf6590fd8424d6c396cd54c0602a318", + "transformation": "none" + }, + "data/sub-071_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-071_hypo1_cope.nii.gz", + "image_id": 119043, + "participant_id": "sub-071", + "bytes": 1790405, + "sha256": "7286639323904bfe851588ce06c68396d535fad2f7ac5de0de1b73c4c17494f4", + "transformation": "none" + }, + "data/sub-073_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-073_hypo1_cope.nii.gz", + "image_id": 119053, + "participant_id": "sub-073", + "bytes": 1786224, + "sha256": "67086bf1f48b14bc095999f6535656649d01da82d1327715c5b3ab89ea6c5f7b", + "transformation": "none" + }, + "data/sub-075_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-075_hypo1_cope.nii.gz", + "image_id": 119063, + "participant_id": "sub-075", + "bytes": 1774130, + "sha256": "b9151e72e3a8a609a23ac73dbd3d6ba8423f271ddd72149cf27c04e25bf9f980", + "transformation": "none" + }, + "data/sub-077_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-077_hypo1_cope.nii.gz", + "image_id": 119073, + "participant_id": "sub-077", + "bytes": 1754444, + "sha256": "79aaf5add3d475590cb7fd82a7fbd32517dbde2cb859824864a2b10d6fafb9ed", + "transformation": "none" + }, + "data/sub-079_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-079_hypo1_cope.nii.gz", + "image_id": 119078, + "participant_id": "sub-079", + "bytes": 1770837, + "sha256": "d505691fdcfa43ad709fca3803c954069afe4e2f2dc865edb5b0812562d1eb8c", + "transformation": "none" + }, + "data/sub-081_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-081_hypo1_cope.nii.gz", + "image_id": 119088, + "participant_id": "sub-081", + "bytes": 1809179, + "sha256": "a8a342b5e333dbff9776b5a4847929737144dc8029830036636eb86c566f4f76", + "transformation": "none" + }, + "data/sub-083_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-083_hypo1_cope.nii.gz", + "image_id": 119098, + "participant_id": "sub-083", + "bytes": 1770805, + "sha256": "76a526c303c406342487da0e5deee5a6ca6b345e9b6ccb052149c4c32f0833ae", + "transformation": "none" + }, + "data/sub-085_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-085_hypo1_cope.nii.gz", + "image_id": 119108, + "participant_id": "sub-085", + "bytes": 1733793, + "sha256": "74b1af4e4b667a70c79b54a10294be744da5538b814057186eae48710520b65a", + "transformation": "none" + }, + "data/sub-087_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-087_hypo1_cope.nii.gz", + "image_id": 119113, + "participant_id": "sub-087", + "bytes": 1826169, + "sha256": "7ecb372d1249cd5368121b1e7b7f7ee33ef5430575097431dcd3f27dcdad7b04", + "transformation": "none" + }, + "data/sub-089_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-089_hypo1_cope.nii.gz", + "image_id": 119123, + "participant_id": "sub-089", + "bytes": 1742479, + "sha256": "3b380ae44cdbf0171d9ec12ff9ecdb47227496cda5ccd5b5cfb09164c5d91846", + "transformation": "none" + }, + "data/sub-093_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-093_hypo1_cope.nii.gz", + "image_id": 119138, + "participant_id": "sub-093", + "bytes": 1784075, + "sha256": "7802aea70713a4be7683921188b92a563d86f221f191a8bac4ee9c4decb33a1c", + "transformation": "none" + }, + "data/sub-095_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-095_hypo1_cope.nii.gz", + "image_id": 119148, + "participant_id": "sub-095", + "bytes": 1735309, + "sha256": "291760d6479e336093a651e33df20deab99e434cba5afbf31fc019c8d1fe816e", + "transformation": "none" + }, + "data/sub-099_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-099_hypo1_cope.nii.gz", + "image_id": 119163, + "participant_id": "sub-099", + "bytes": 1823271, + "sha256": "30b063515e6b538183fe37c561e87e47681756876a8f6a8a607839d8d3de0e42", + "transformation": "none" + }, + "data/sub-103_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-103_hypo1_cope.nii.gz", + "image_id": 119214, + "participant_id": "sub-103", + "bytes": 1814013, + "sha256": "a088633f18ac3e35fc2512e9dc21ec3d92efd06749d4027338ccb448a635919c", + "transformation": "none" + }, + "data/sub-105_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-105_hypo1_cope.nii.gz", + "image_id": 119224, + "participant_id": "sub-105", + "bytes": 1795447, + "sha256": "12a1b50eaa5be6983990c5e77f985f9750340204eaa3fff7e70829f07707e6a2", + "transformation": "none" + }, + "data/sub-107_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-107_hypo1_cope.nii.gz", + "image_id": 119234, + "participant_id": "sub-107", + "bytes": 1804121, + "sha256": "4580aade93323d0d14f9a3a1932a428004a2f657980b5669f9274102bb370802", + "transformation": "none" + }, + "data/sub-109_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-109_hypo1_cope.nii.gz", + "image_id": 119244, + "participant_id": "sub-109", + "bytes": 1788268, + "sha256": "931ba1128720bbaa99e7fce8f036a331581d6d07e00212a1f402eae7959299cb", + "transformation": "none" + }, + "data/sub-113_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-113_hypo1_cope.nii.gz", + "image_id": 119259, + "participant_id": "sub-113", + "bytes": 1819506, + "sha256": "e5f81435ddc2d5703fa4ea37d6597601e71b50f8c53fb6047fb0067c17282c65", + "transformation": "none" + }, + "data/sub-115_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-115_hypo1_cope.nii.gz", + "image_id": 119269, + "participant_id": "sub-115", + "bytes": 1797041, + "sha256": "5046f7c2fa1c5d1be6237d38f631beca13df8a3a8ded11121082838a533a44bf", + "transformation": "none" + }, + "data/sub-117_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-117_hypo1_cope.nii.gz", + "image_id": 119279, + "participant_id": "sub-117", + "bytes": 1741472, + "sha256": "711159acfa23c45ab82903f658cafe0fa539f39e077e451f6b0728fdb359445f", + "transformation": "none" + }, + "data/sub-119_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-119_hypo1_cope.nii.gz", + "image_id": 119289, + "participant_id": "sub-119", + "bytes": 1752220, + "sha256": "01738a10e34e46c5ea1a4a192b9484595ee352d62375095b76726347455aabd7", + "transformation": "none" + }, + "data/sub-121_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-121_hypo1_cope.nii.gz", + "image_id": 119299, + "participant_id": "sub-121", + "bytes": 1766758, + "sha256": "94357665b89cfa1b9157e71aab10f78b49585a790a4a01d9e4693698e185d892", + "transformation": "none" + }, + "data/sub-123_hypo1_cope.nii.gz": { + "url": "https://neurovault.org/media/images/4932/sub-123_hypo1_cope.nii.gz", + "image_id": 119304, + "participant_id": "sub-123", + "bytes": 1745649, + "sha256": "1219377e08c306753c1e382d431b1e7a55c7143cdc5f800fb65e92fa7e72f888", + "transformation": "none" + }, + "participants.tsv": { + "bytes": 1706, + "sha256": "faca815bcb042144bdb8dcff915f45de0d27650f60416ed76a5a72557341abbf" + }, + "study-task.md": { + "bytes": 1483, + "sha256": "e92bf2e0c0db4cc49688cce9f9dfff8a236fc4ec151c09961719f49f31310cc8" + }, + "upstream-methods.md": { + "bytes": 1342, + "sha256": "508d832c8787ed8303c3de101c2c76f40a3aa5dec53e6993dc2a49c4b7bcf90b" + } + } +} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json new file mode 100644 index 00000000..975dcc5b --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json @@ -0,0 +1,329 @@ +{ + "result_selection_cutoff_utc": "2026-10-16T03:33:00Z", + "snapshot_generated_utc": "2026-10-16T03:42:45.650190+00:00", + "study": "NARPS Hypothesis 1, AO86 equal-indifference participant gain maps", + "paper": "https://doi.org/10.1038/s41586-020-2314-9", + "data": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", + "participant_maps": "https://neurovault.org/collections/4932/", + "n_participants": 54, + "conditions": [ + "baseline", + "discover-general", + "discover-science", + "stamped-explicit" + ], + "records": [ + { + "run": "narps-r1-01", + "condition": "baseline", + "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "condition_assignment": { + "condition": "baseline", + "requested_condition": "baseline", + "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", + "additional_prompt_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "supplied_skills_commit": null + }, + "summary": "summaries/narps-r1-01.json", + "mask_voxels": 186400, + "positive_whole_brain_fwe_voxels": 11, + "primary_correction": "Bonferroni" + }, + { + "run": "narps-r1-02", + "condition": "baseline", + "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "condition_assignment": { + "condition": "baseline", + "requested_condition": "baseline", + "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", + "additional_prompt_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "supplied_skills_commit": null + }, + "summary": "summaries/narps-r1-02.json", + "mask_voxels": 192333, + "positive_whole_brain_fwe_voxels": 11, + "primary_correction": "Bonferroni" + }, + { + "run": "narps-r1-03", + "condition": "baseline", + "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "condition_assignment": { + "condition": "baseline", + "requested_condition": "baseline", + "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", + "additional_prompt_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "supplied_skills_commit": null + }, + "summary": "summaries/narps-r1-03.json", + "mask_voxels": 210968, + "positive_whole_brain_fwe_voxels": 24, + "primary_correction": "max-T" + }, + { + "run": "narps-r1-05", + "condition": "discover-general", + "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "condition_assignment": { + "condition": "discover-general", + "requested_condition": "discover-general", + "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", + "additional_prompt_sha256": "bc8baae751c0ee6f9d46be0fa3dbc43b8148e52d927ca1a888f97b9e324e18fd", + "supplied_skills_commit": null + }, + "summary": "summaries/narps-r1-05.json", + "mask_voxels": 198029, + "positive_whole_brain_fwe_voxels": 24, + "primary_correction": "max-T" + }, + { + "run": "narps-r1-06", + "condition": "discover-general", + "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "condition_assignment": { + "condition": "discover-general", + "requested_condition": "discover-general", + "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", + "additional_prompt_sha256": "bc8baae751c0ee6f9d46be0fa3dbc43b8148e52d927ca1a888f97b9e324e18fd", + "supplied_skills_commit": null + }, + "summary": "summaries/narps-r1-06.json", + "mask_voxels": 186192, + "positive_whole_brain_fwe_voxels": 24, + "primary_correction": "max-T" + }, + { + "run": "narps-r1-07", + "condition": "discover-science", + "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "condition_assignment": { + "condition": "discover-science", + "requested_condition": "discover-science", + "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", + "additional_prompt_sha256": "f3678974568fadc774def9cd0180e83194ac35722b058916b0bc850a93ed3bb8", + "supplied_skills_commit": null + }, + "summary": "summaries/narps-r1-07.json", + "mask_voxels": 198029, + "positive_whole_brain_fwe_voxels": 24, + "primary_correction": "max-T" + }, + { + "run": "narps-r1-08", + "condition": "discover-science", + "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "condition_assignment": { + "condition": "discover-science", + "requested_condition": "discover-science", + "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", + "additional_prompt_sha256": "f3678974568fadc774def9cd0180e83194ac35722b058916b0bc850a93ed3bb8", + "supplied_skills_commit": null + }, + "summary": "summaries/narps-r1-08.json", + "mask_voxels": 210968, + "positive_whole_brain_fwe_voxels": 24, + "primary_correction": "max-T" + }, + { + "run": "narps-r1-09", + "condition": "discover-science", + "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "condition_assignment": { + "condition": "discover-science", + "requested_condition": "discover-science", + "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", + "additional_prompt_sha256": "f3678974568fadc774def9cd0180e83194ac35722b058916b0bc850a93ed3bb8", + "supplied_skills_commit": null + }, + "summary": "summaries/narps-r1-09.json", + "mask_voxels": 198029, + "positive_whole_brain_fwe_voxels": 24, + "primary_correction": "max-T" + } + ], + "missing_completed_results": { + "discover-general": [ + "narps-r1-04" + ], + "stamped-explicit": [ + "narps-r1-10", + "narps-r1-11", + "narps-r1-12" + ] + }, + "comparison_scope": "Descriptive differences among completed worker analyses of the same 54 participant maps. Mask rules and correction methods differ; these are not causal estimates of condition effects. Failed or incomplete runs are never assigned a zero value.", + "representative_map_run": "narps-r1-09", + "representative_map_selection": "A completed run using common nonzero coverage for every participant and a verifiable corrected mask; it is an example, not an average or a condition comparison.", + "map_display": { + "statistic": "unthresholded one-sample t; signed colors, clipped at +/- 6", + "mask": "common nonzero coverage across all 54 participants; no color outside coverage", + "roi": "AAL SPM12 bilateral Frontal_Med_Orb parcels, intersected with common coverage; descriptive vmPFC localization", + "corrected": "positive-direction permutation max-T, 10,000 sign flips, whole-brain FWE p <= .05", + "slice_centers_mni_mm": [ + -2, + 24, + -3.599997043609619 + ], + "orientation": "neurological: left hemisphere on image left in coronal and axial panels" + }, + "sources": { + "summaries/narps-r1-01.json": { + "sha256": "8198242f3ac1eaf7a84ccf23b3513c8ecfbadc65e18d4058d7c814b3de1c8f67", + "bytes": 6963, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "d90a335549f43007eac05902859224e6ce2eaada", + "source_path": "results/analysis_summary.json", + "source_git_object": "bd230c0a3def24aa19b66f3edd3f9998e06c319b", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/d90a335549f43007eac05902859224e6ce2eaada/results/analysis_summary.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "summaries/narps-r1-02.json": { + "sha256": "bf469b8e89420e8eb59270035d63b5defd4e766139daef8a765a7d8775bdaa49", + "bytes": 2717, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "source_path": "results/results.json", + "source_git_object": "601f06c9527731eb94a79b71164c56d3fced28df", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4/results/results.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "summaries/narps-r1-03.json": { + "sha256": "550cecbb35f10e7cfb16e4f177a15b11a47525115be5297f52b271613f91a812", + "bytes": 8811, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", + "source_path": "results/summary.json", + "source_git_object": "fc9a8227ba6c9aaea07b3d1cb5debf123b21a042", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/abf95b00c02fb55d16c4d269926c1428cedc0574/results/summary.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "summaries/narps-r1-05.json": { + "sha256": "08274f541bff5d0fa7673474fbb401b00619a9bdaf4cb523b06baad574bd2972", + "bytes": 3060, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "source_path": "results/run_summary.json", + "source_git_object": "fd9592aeace204f563c6ffbc0dbd6071bd12a444", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9/results/run_summary.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "summaries/narps-r1-06.json": { + "sha256": "a3863b5f4cc8cd1adf157e6aec7015f1715ed725d08aa63cc8982b98a558c527", + "bytes": 10956, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "32d9cabf7b5d041f9efb97830bf5279068809357", + "source_path": "results/analysis_results.json", + "source_git_object": "3a3da636f1b7964f3e1a42416249f29539131d87", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/32d9cabf7b5d041f9efb97830bf5279068809357/results/analysis_results.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "summaries/narps-r1-07.json": { + "sha256": "8d46dee5fbba952a3834240325da284af53fb3dd1d797895c211735692c7e3dd", + "bytes": 1704, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "source_path": "results/analysis_results.json", + "source_git_object": "1714164ffa958051656204cde9a4f4a24d977f4d", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/f30190d8144a9e15acfa1c0d973eadf0d655c83c/results/analysis_results.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "summaries/narps-r1-08.json": { + "sha256": "24ea1b1c7e01825adb9f13109e178263d0098415a378da6d1d607ad9b2e1b3f5", + "bytes": 2592, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "42e957201315aa8221ba60fbe614119e22639ce8", + "source_path": "results/analysis_summary.json", + "source_git_object": "75a2624b5f4722883e59d9b6376b8fb44d65232b", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/42e957201315aa8221ba60fbe614119e22639ce8/results/analysis_summary.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "summaries/narps-r1-09.json": { + "sha256": "c1c5073516a8de8412b63d36a96524dab63bb54073db9033c5b9ab977f7afd47", + "bytes": 2500, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "source_path": "results/results.json", + "source_git_object": "bf76fe1606138531cfd0cd40d3c1fdd0eb8847eb", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "maps/one_sample_t.nii.gz": { + "sha256": "75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b", + "bytes": 772808, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "source_path": "results/one_sample_t.nii.gz", + "source_git_object": "bd77eaca1c34cc3f19032439486a21ab8c0356dc", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/one_sample_t.nii.gz", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_annex_key": "SHA256E-s772808--75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b.nii.gz" + }, + "maps/common_brain_mask.nii.gz": { + "sha256": "e72a50e0531fd4e353fff55c81b2790319aebe2cb30aba305fbf51b7394e5ff1", + "bytes": 23179, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "source_path": "results/common_brain_mask.nii.gz", + "source_git_object": "64d0cb426a4591f510acb841af2644f00a654714", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/common_brain_mask.nii.gz", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "maps/max_t_fwe_p05_mask.nii.gz": { + "sha256": "e4fcc6042c290ac029f16a5741a15e84c7a0072e8907572edef1cd69a76d78ac", + "bytes": 4192, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "source_path": "results/max_t_fwe_p05_mask.nii.gz", + "source_git_object": "96e18b8a3cbae8cb209b053493adec3346abaac2", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/max_t_fwe_p05_mask.nii.gz", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz": { + "sha256": "b520b7442d546efa2aa7bbc0fa1c72beab5c77fee3c0d4e1d1901f16e5fd4337", + "bytes": 4607, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "source_path": "results/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", + "source_git_object": "d63b6542bce239f208ed0c2bfa98c7d154a34f9a", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "participant-map-sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "source_path": "input/sources.json", + "source_git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/input/sources.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "source-analysis-run09.py": { + "sha256": "efb44f741818ba6b414b27cd57b5414bb5dd7ed7c02c7d55b1e52eae3531dcf8", + "bytes": 12814, + "source_repository": "https://github.com/leej3/stamped-in-practice", + "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "source_path": "scripts/analyze_gain.py", + "source_git_object": "1373c078213f3a2a54277d2302622ae7b79c5a80", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", + "transformation": "byte-for-byte copy; annex symlinks dereferenced" + }, + "maps/anatomical-context.nii.gz": { + "sha256": "a110f8454d04756a9eef6dfae4750f75629d96d3e5e6f348a4c71d28495bcbca", + "bytes": 207544, + "source_url": "https://nilearn.github.io/stable/modules/generated/nilearn.datasets.load_mni152_template.html", + "source_description": "Nilearn bundled skull-stripped ICBM152 MNI template; anatomical context only", + "nilearn_version": "0.14.1", + "transformation": "load_mni152_template(resolution=2), continuous resampling to run09 t-map grid" + } + } +} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/source-analysis-run09.py b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/source-analysis-run09.py new file mode 100644 index 00000000..1373c078 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/source-analysis-run09.py @@ -0,0 +1,270 @@ +#!/usr/bin/env python3 +"""Group analysis of NARPS AO86 equal-indifference gain cope maps. + +Primary inference is a one-sided, one-sample sign-flip permutation max-t test +across the common participant brain coverage. The atlas ROI is descriptive and +does not replace the required whole-brain corrected test. +""" + +from __future__ import annotations + +import hashlib +import json +import os +import platform +import sys +from datetime import datetime, timezone +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import nibabel as nib +import numpy as np +import pandas as pd +import scipy +from nilearn import datasets, image, plotting +from nilearn.glm.second_level import non_parametric_inference +from nibabel.affines import apply_affine +from scipy import ndimage, stats + + +ROOT = Path(__file__).resolve().parents[1] +INPUT = ROOT / "input" +OUT = ROOT / "results" +FIG = OUT / "figures" +N_PERM = 10_000 +SEED = 20261015 +ALPHA = 0.05 + + +def sha256(path: Path) -> str: + h = hashlib.sha256() + with path.open("rb") as stream: + for block in iter(lambda: stream.read(1024 * 1024), b""): + h.update(block) + return h.hexdigest() + + +def save_img(data: np.ndarray, ref: nib.spatialimages.SpatialImage, path: Path, dtype=None) -> None: + out = nib.Nifti1Image(data.astype(dtype or np.float32), ref.affine, ref.header.copy()) + out.set_data_dtype(dtype or np.float32) + nib.save(out, path) + + +def main() -> None: + OUT.mkdir(exist_ok=True) + FIG.mkdir(parents=True, exist_ok=True) + manifest = json.loads((INPUT / "sources.json").read_text()) + participants = pd.read_csv(INPUT / "participants.tsv", sep="\t") + file_entries = manifest["files"] + paths = [INPUT / name for name in file_entries if name.endswith(".nii.gz")] + paths.sort(key=lambda p: p.name) + ids = [p.name.split("_")[0] for p in paths] + + # Validate the frozen cohort, input identity, and image geometry before inference. + checks = [] + expected_ids = set(participants.participant_id) + if len(paths) != 54 or set(ids) != expected_ids or len(set(ids)) != len(ids): + raise ValueError(f"cohort mismatch: {len(paths)} images; {len(expected_ids)} metadata rows") + if set(ids) != {file_entries[p.relative_to(INPUT).as_posix()]["participant_id"] for p in paths}: + raise ValueError("image IDs do not match the source manifest") + imgs = [] + arrs = [] + ref = None + for p in paths: + entry = file_entries[p.relative_to(INPUT).as_posix()] + digest = sha256(p) + if p.stat().st_size != entry["bytes"] or digest != entry["sha256"]: + raise ValueError(f"checksum or byte-count mismatch: {p.name}") + im = nib.load(p) + if len(im.shape) != 3: + raise ValueError(f"not a 3D map: {p.name}, shape={im.shape}") + if ref is None: + ref = im + elif im.shape != ref.shape or not np.allclose(im.affine, ref.affine, atol=1e-5): + raise ValueError(f"spatial geometry mismatch: {p.name}") + d = im.get_fdata(dtype=np.float32) + if not np.isfinite(d).all(): + raise ValueError(f"non-finite values: {p.name}") + imgs.append(im) + arrs.append(d) + checks.append({"participant_id": ids[len(checks)], "file": p.relative_to(INPUT).as_posix(), + "bytes": p.stat().st_size, "sha256": digest, + "nonzero_voxels": int(np.count_nonzero(d)), + "min": float(d.min()), "max": float(d.max()), + "mean_nonzero": float(d[d != 0].mean())}) + + data = np.stack(arrs, axis=0) + coverage = np.all(np.isfinite(data) & (data != 0), axis=0) + n_vox = int(coverage.sum()) + if n_vox < 10_000: + raise ValueError(f"unexpectedly small common coverage mask: {n_vox} voxels") + save_img(coverage, ref, OUT / "common_brain_mask.nii.gz", np.uint8) + + # Whole-brain primary test: one-sample intercept, positive direction, sign flips. + # Nilearn returns -log10 FWE-corrected p-values using the permutation max-t null. + model = pd.DataFrame({"intercept": np.ones(len(imgs))}) + perm = non_parametric_inference( + second_level_input=imgs, + design_matrix=model, + second_level_contrast="intercept", + mask=OUT / "common_brain_mask.nii.gz", + model_intercept=False, + n_perm=N_PERM, + two_sided_test=False, + random_state=SEED, + n_jobs=max(1, min(8, os.cpu_count() or 1)), + tfce=False, + verbose=1, + ) + # Model uses no implicit intercept because the explicit all-ones column is tested. + # With tfce=False and threshold=None, Nilearn returns the max-t corrected -log10(p). + logp_img = perm + mean_map = np.mean(data, axis=0) + sd_map = np.std(data, axis=0, ddof=1) + t_data = np.zeros(ref.shape, dtype=np.float32) + t_data[coverage] = mean_map[coverage] / (sd_map[coverage] / np.sqrt(len(imgs))) + t_img = nib.Nifti1Image(t_data, ref.affine, ref.header.copy()) + t_data = t_img.get_fdata(dtype=np.float32) + logp_data = logp_img.get_fdata(dtype=np.float32) + p_fwe = np.power(10.0, -logp_data) + sig = coverage & np.isfinite(p_fwe) & (p_fwe <= ALPHA) + + save_img(np.where(coverage, mean_map, 0), ref, OUT / "mean_gain_cope.nii.gz") + save_img(np.where(coverage, sd_map, 0), ref, OUT / "sd_gain_cope.nii.gz") + save_img(t_data, ref, OUT / "one_sample_t.nii.gz") + save_img(logp_data, ref, OUT / "max_t_log10_fwe_p.nii.gz") + save_img(sig, ref, OUT / "max_t_fwe_p05_mask.nii.gz", np.uint8) + + # AAL SPM12 bilateral medial orbitofrontal parcels, independent of observed effects. + # This ROI is a transparent anatomical operationalization of vmPFC; the whole-brain + # corrected test remains the sole confirmatory criterion. + atlas = datasets.fetch_atlas_aal(version="SPM12", verbose=0) + label_names = {"Frontal_Med_Orb_L", "Frontal_Med_Orb_R"} + label_ids = {int(i) for i, name in zip(atlas.indices, atlas.labels) if name in label_names} + roi_native = image.resample_to_img(atlas.maps, imgs[0], interpolation="nearest") + roi_labels = roi_native.get_fdata(dtype=np.float32).astype(int) + roi = coverage & np.isin(roi_labels, list(label_ids)) + if not roi.any(): + raise ValueError("vmPFC medial-orbitofrontal ROI did not intersect common coverage") + save_img(roi, ref, OUT / "vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", np.uint8) + roi_means = data[:, roi].mean(axis=1) + roi_t = stats.ttest_1samp(roi_means, popmean=0, alternative="greater") + roi_mean = float(roi_means.mean()) + roi_se = float(stats.sem(roi_means)) + roi_ci = stats.t.interval(0.95, len(roi_means) - 1, loc=roi_mean, scale=roi_se) + roi_dz = float(roi_mean / roi_means.std(ddof=1)) + component_labels, n_components = ndimage.label(sig, structure=np.ones((3, 3, 3), dtype=np.uint8)) + components = [] + for component_id in range(1, n_components + 1): + component = component_labels == component_id + voxels = np.argwhere(component) + peak_offset = int(np.argmax(t_data[component])) + peak_ijk = voxels[peak_offset] + components.append({ + "extent_voxels_descriptive_26_connectivity": int(component.sum()), + "peak_t": float(t_data[tuple(peak_ijk)]), + "peak_mni_xyz_mm": [float(v) for v in apply_affine(ref.affine, peak_ijk)], + "peak_max_t_fwe_p": float(10 ** (-logp_data[tuple(peak_ijk)])), + "vmPFC_roi_overlap_voxels": int((component & roi).sum()), + }) + components.sort(key=lambda item: item["peak_t"], reverse=True) + roi_summary = { + "roi": "AAL SPM12 bilateral Frontal_Med_Orb_L/R", + "roi_atlas_label_ids": sorted(label_ids), + "roi_voxels_in_common_mask": int(roi.sum()), + "mean_cope": roi_mean, + "sd_participant_roi_means": float(roi_means.std(ddof=1)), + "se": roi_se, + "ci95_t": [float(x) for x in roi_ci], + "cohen_dz": roi_dz, + "one_sided_t": float(roi_t.statistic), + "one_sided_p_uncorrected_descriptive": float(roi_t.pvalue), + "n": len(roi_means), + } + pd.DataFrame({"participant_id": ids, "roi_mean_cope": roi_means}).to_csv( + OUT / "vmPFC_participant_effects.tsv", sep="\t", index=False + ) + pd.DataFrame(checks).to_csv(OUT / "input_qc.tsv", sep="\t", index=False) + + max_t = float(np.nanmax(t_data[coverage])) + max_logp = float(np.nanmax(logp_data[coverage])) + result = { + "analysis": "AO86 equal-indifference group gain cope, one-sided positive whole-brain max-t sign-flip test", + "n": len(imgs), "n_excluded": 0, "n_permutations": N_PERM, + "seed": SEED, "alpha_fwe": ALPHA, + "common_mask_voxels": n_vox, + "voxel_size_mm": [float(abs(x)) for x in ref.header.get_zooms()[:3]], + "max_t_in_mask": max_t, + "max_t_log10_fwe_p": max_logp, + "max_t_fwe_p": float(10 ** (-max_logp)), + "significant_voxels_fwe_p_le_0_05": int(sig.sum()), + "significant_components_descriptive_only": components, + "vmPFC_descriptive_summary": roi_summary, + "data_interpretation": "participant-level cope estimates from a mean-centered, variance-normalized gain modulator; not currency-unit slopes or standardized test statistics", + "group_model_limit": "no first-level variance maps are supplied; unweighted one-sample group inference cannot reproduce precision-weighted mixed-effects estimation", + "software": {"python": platform.python_version(), "numpy": np.__version__, "scipy": scipy.__version__, + "nilearn": __import__("nilearn").__version__, "nibabel": nib.__version__, + "platform": platform.platform()}, + "generated_utc": datetime.now(timezone.utc).isoformat(), + } + (OUT / "results.json").write_text(json.dumps(result, indent=2) + "\n") + + # Group effect figure: cope estimates in atlas-scaled ROI and whole-brain inference. + fig, axes = plt.subplots(1, 2, figsize=(10.8, 4.2), constrained_layout=True) + axes[0].hist(roi_means, bins=12, color="#557a95", edgecolor="white") + axes[0].axvline(0, color="#555555", lw=1, ls="--") + axes[0].axvline(roi_mean, color="#b13c31", lw=2) + axes[0].set(xlabel="Participant mean cope in bilateral medial OFC ROI", + ylabel="Participants", title="vmPFC operationalization") + axes[0].text(0.03, 0.97, + f"n = {len(roi_means)}\nmean = {roi_mean:.3g}\n95% CI [{roi_ci[0]:.3g}, {roi_ci[1]:.3g}]", + va="top", ha="left", transform=axes[0].transAxes, fontsize=9) + axes[1].axis("off") + axes[1].text(0.02, 0.96, + "Whole-brain positive-direction max-t permutation test\n\n" + f"{N_PERM:,} sign flips; family-wise α = .05\n" + f"Common mask: {n_vox:,} voxels\n" + f"FWE-significant voxels: {int(sig.sum()):,}\n" + f"vmPFC ROI overlap: {int((sig & roi).sum()):,} voxels\n" + f"Strongest corrected p: {10**(-max_logp):.4g}\n\n" + "Corrected p-values control error across the full mask.", + va="top", ha="left", transform=axes[1].transAxes, fontsize=11, + bbox={"boxstyle": "round,pad=0.6", "facecolor": "#f3f4f5", "edgecolor": "#d5d8dc"}) + fig.suptitle("Potential gain effect: group analysis", fontsize=14) + fig.savefig(FIG / "gain_group_inference.png", dpi=220) + plt.close(fig) + + # Show the unthresholded group effect and the whole-brain corrected result at vmPFC slices. + template = datasets.load_mni152_template(resolution=2) + display = plotting.plot_stat_map( + t_img, bg_img=template, threshold=stats.t.ppf(0.95, len(imgs)-1), + display_mode="ortho", cut_coords=(0, 45, -10), + title=None, + colorbar=True, black_bg=False, + ) + display.title("vmPFC group t map (uncorrected display threshold)", y=0.95, size=13) + display.add_contours(OUT / "vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", colors=["cyan"], linewidths=1.2) + display.add_contours(OUT / "max_t_fwe_p05_mask.nii.gz", colors=["magenta"], linewidths=1.5) + display.savefig(FIG / "gain_tmap_vmPFC.png", dpi=220) + display.close() + + corrected_t = np.where(sig, t_data, 0) + corrected_img = nib.Nifti1Image(corrected_t, ref.affine, ref.header.copy()) + corrected_display = plotting.plot_stat_map( + corrected_img, bg_img=template, threshold=0, + display_mode="ortho", cut_coords=(-26, -100, -4), + title=None, + colorbar=True, black_bg=False, + ) + corrected_display.title("Positive t values surviving whole-brain max-t FWE", y=0.95, size=13) + corrected_display.savefig(FIG / "gain_fwe_significant_map.png", dpi=220) + corrected_display.close() + + print(json.dumps(result, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-01.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-01.json new file mode 100644 index 00000000..bd230c0a --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-01.json @@ -0,0 +1,107 @@ +{ + "analysis": "positive one-sample t test with Bonferroni whole-brain FWE; fixed-SE sign-flip max-T sensitivity", + "n": 54, + "voxels_tested": 186400, + "n_permutations": 9999, + "seed": 20261015, + "grid_shape": [ + 97, + 115, + 81 + ], + "search_mask": "common nonzero support intersected with MNI152 brain mask resampled to input grid", + "bonferroni_alpha": 0.05, + "degrees_of_freedom": 53, + "maxT_95_threshold": 32.313716888427734, + "n_voxels_fwe05": 0, + "parametric_bonferroni_fwe05_voxels": 11, + "parametric_bonferroni_fwe05_voxels_in_vmPFC": 0, + "max_observed_t": 6.617173246302241, + "max_observed_t_uncorrected_p": 9.311564027968496e-09, + "max_observed_t_bonferroni_p": 0.0017356755348133276, + "max_observed_t_mni_mm": [ + -26.0, + -102.0, + -3.599997043609619 + ], + "minimum_attainable_mc_p": 0.0001, + "vmPFC": { + "n": 54, + "roi_voxels": 1291, + "mean_coefficient": -0.0077939098700881, + "sd_between_participant_roi_mean": 0.09705685079097748, + "ci95_low": -0.03428533056504693, + "ci95_high": 0.018697510824870728, + "participants_positive_roi_mean": 23, + "aal3v2_labels": [ + "Frontal_Med_Orb_L", + "Frontal_Med_Orb_R" + ], + "interpretation": "descriptive only; whole-brain corrected inference is primary" + }, + "maps_sha256": { + "sub-001_hypo1_cope.nii.gz": "baf3440fbc7f5f59dea28d231e9c5eb9cf00a15b6924342f4b79e7faf56a929a", + "sub-003_hypo1_cope.nii.gz": "a8c9b6276d1597bc43695516c9ac5b2893a8d8408cd053161ceaddbd42dafb20", + "sub-005_hypo1_cope.nii.gz": "415383874c65fd9e10bb03bf2aa59bfcd1d10650bc5d0560a249e85d52b7b205", + "sub-009_hypo1_cope.nii.gz": "33af129d8ba13cd4b6175089706c531471be1e0bd7ccd43ece10751c8cc3254c", + "sub-011_hypo1_cope.nii.gz": "6f74dd449eefa6eff40ec00eb046ec7e8bb13c0b7c2ac1874155a9c166692352", + "sub-013_hypo1_cope.nii.gz": "bfa79b82f931d81d6387e82b8413f1f889a06f36275ba510554669c84a3c026f", + "sub-015_hypo1_cope.nii.gz": "5d98f6d74823516768659967f95ef43728584eab024c58af30987783515d7694", + "sub-017_hypo1_cope.nii.gz": "dca9eac4d6f0ef4e2a3e631b2d10f89c5362863698cec4a7c7b9b14128ae96d9", + "sub-019_hypo1_cope.nii.gz": "f9df911028e0ee06d230b097d8c7011b3c09f34df436e8854cd959145777533d", + "sub-021_hypo1_cope.nii.gz": "7dd60d722e243f429633f1c63c9a810afd73d1ffd0e0e68fcdd2bf3790d78db1", + "sub-025_hypo1_cope.nii.gz": "545945b0a5f7e51d65e2828e76e776fffcbb33b1635bb7272bc0948bfbc6b7b4", + "sub-027_hypo1_cope.nii.gz": "dffa472f8cfe30b9c2025470924fceb23d30fb881db6b893d436faa8d8dcef2f", + "sub-029_hypo1_cope.nii.gz": "0ed1be0ce40d1becaec5cf18487670822b8cb5fcbc5ad0ec2cb34d9a3ed7071b", + "sub-033_hypo1_cope.nii.gz": "04778467af0a6c93d531d30f73c5492384be59044ebd7be3e95862700e2e9117", + "sub-035_hypo1_cope.nii.gz": "211fd859f33d69891531ad3e5dd66fe0c0891b20c58e6ef8aa21b4d49ff030c9", + "sub-037_hypo1_cope.nii.gz": "a4d76561e8ba1848572a474afce754310f4ee101cfd99276eb3105289cc0934b", + "sub-039_hypo1_cope.nii.gz": "744df860cfb8410aae16bcb1742e7390c51306c66959bb19da9f5b57206bba7b", + "sub-041_hypo1_cope.nii.gz": "f93eeadcd3f57239e4c32c5df2ca2c4013bf424978701bd5beec535ace24669f", + "sub-043_hypo1_cope.nii.gz": "520f19805c6c4358bc56e9bba290b9b79a80c14385bc7be90e4bd81b3e37e771", + "sub-045_hypo1_cope.nii.gz": "3826c6daf5a7be7b03ae552847c4a8709a1b86c2498735e6ce80768cd5d0b88e", + "sub-047_hypo1_cope.nii.gz": "8585e8be8eebe84dd316eeb1f86090a8123f88a8b5d275bc2c39049a3bf4bf34", + "sub-049_hypo1_cope.nii.gz": "e01dacebea8fa444b7696e90a53e9ab0b3543b0da780ba430875b3fde117e084", + "sub-051_hypo1_cope.nii.gz": "74e2887ed9eb4252357cdce98eb53b5b8ab2620ee5ee57aee1bc677c0099b2ca", + "sub-053_hypo1_cope.nii.gz": "a3b3509a0240c5b12a9c63f94f2913e69eeb7fab4fbe92ac1adc62eb45bdd0ba", + "sub-055_hypo1_cope.nii.gz": "136983cd89668779e26eba6847653f1d765452f8a2d5675fce037f751edb0ea8", + "sub-057_hypo1_cope.nii.gz": "aafa1a371d72e690f737d2507c9d7bbd20c620377cd294d44555c856a0566496", + "sub-059_hypo1_cope.nii.gz": "0fa3da37a11640705014665f546ba86735472a8a2b7fdf1b37177a55abd0a65a", + "sub-061_hypo1_cope.nii.gz": "cb8bc3bf4264fe156348d3c171335b84978eb8d32b0fd331db9f4661dad2bdff", + "sub-063_hypo1_cope.nii.gz": "2a5458eb314441b01dacfa1bcea9e9a95f983d2994aa6b853ebe1a20b017a467", + "sub-067_hypo1_cope.nii.gz": "9977321f1f775f04dab881d740ea5cc491dadda07405f2380c61c50e5c3a01fc", + "sub-069_hypo1_cope.nii.gz": "bd22905ebe789319f082b0fdb6ba7cd5aaf6590fd8424d6c396cd54c0602a318", + "sub-071_hypo1_cope.nii.gz": "7286639323904bfe851588ce06c68396d535fad2f7ac5de0de1b73c4c17494f4", + "sub-073_hypo1_cope.nii.gz": "67086bf1f48b14bc095999f6535656649d01da82d1327715c5b3ab89ea6c5f7b", + "sub-075_hypo1_cope.nii.gz": "b9151e72e3a8a609a23ac73dbd3d6ba8423f271ddd72149cf27c04e25bf9f980", + "sub-077_hypo1_cope.nii.gz": "79aaf5add3d475590cb7fd82a7fbd32517dbde2cb859824864a2b10d6fafb9ed", + "sub-079_hypo1_cope.nii.gz": "d505691fdcfa43ad709fca3803c954069afe4e2f2dc865edb5b0812562d1eb8c", + "sub-081_hypo1_cope.nii.gz": "a8a342b5e333dbff9776b5a4847929737144dc8029830036636eb86c566f4f76", + "sub-083_hypo1_cope.nii.gz": "76a526c303c406342487da0e5deee5a6ca6b345e9b6ccb052149c4c32f0833ae", + "sub-085_hypo1_cope.nii.gz": "74b1af4e4b667a70c79b54a10294be744da5538b814057186eae48710520b65a", + "sub-087_hypo1_cope.nii.gz": "7ecb372d1249cd5368121b1e7b7f7ee33ef5430575097431dcd3f27dcdad7b04", + "sub-089_hypo1_cope.nii.gz": "3b380ae44cdbf0171d9ec12ff9ecdb47227496cda5ccd5b5cfb09164c5d91846", + "sub-093_hypo1_cope.nii.gz": "7802aea70713a4be7683921188b92a563d86f221f191a8bac4ee9c4decb33a1c", + "sub-095_hypo1_cope.nii.gz": "291760d6479e336093a651e33df20deab99e434cba5afbf31fc019c8d1fe816e", + "sub-099_hypo1_cope.nii.gz": "30b063515e6b538183fe37c561e87e47681756876a8f6a8a607839d8d3de0e42", + "sub-103_hypo1_cope.nii.gz": "a088633f18ac3e35fc2512e9dc21ec3d92efd06749d4027338ccb448a635919c", + "sub-105_hypo1_cope.nii.gz": "12a1b50eaa5be6983990c5e77f985f9750340204eaa3fff7e70829f07707e6a2", + "sub-107_hypo1_cope.nii.gz": "4580aade93323d0d14f9a3a1932a428004a2f657980b5669f9274102bb370802", + "sub-109_hypo1_cope.nii.gz": "931ba1128720bbaa99e7fce8f036a331581d6d07e00212a1f402eae7959299cb", + "sub-113_hypo1_cope.nii.gz": "e5f81435ddc2d5703fa4ea37d6597601e71b50f8c53fb6047fb0067c17282c65", + "sub-115_hypo1_cope.nii.gz": "5046f7c2fa1c5d1be6237d38f631beca13df8a3a8ded11121082838a533a44bf", + "sub-117_hypo1_cope.nii.gz": "711159acfa23c45ab82903f658cafe0fa539f39e077e451f6b0728fdb359445f", + "sub-119_hypo1_cope.nii.gz": "01738a10e34e46c5ea1a4a192b9484595ee352d62375095b76726347455aabd7", + "sub-121_hypo1_cope.nii.gz": "94357665b89cfa1b9157e71aab10f78b49585a790a4a01d9e4693698e185d892", + "sub-123_hypo1_cope.nii.gz": "1219377e08c306753c1e382d431b1e7a55c7143cdc5f800fb65e92fa7e72f888" + }, + "versions": { + "python": "3.13.16", + "numpy": "2.5.4", + "scipy": "1.18.1", + "nibabel": "5.4.2", + "nilearn": "0.14.1", + "pandas": "3.0.6" + }, + "elapsed_seconds": 13.012866973876953 +} \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-02.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-02.json new file mode 100644 index 00000000..601f06c9 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-02.json @@ -0,0 +1,68 @@ +{ + "analysis": "one-sample group model; positive gain effect; whole-brain Bonferroni primary with sign-flip max-T sensitivity", + "n_included": 54, + "n_excluded": 0, + "n_maps": 54, + "analysis_mask_voxels": 192333, + "mask_rule": "MNI152 brain mask intersected with nonzero finite map support in at least 90% of participants", + "space": "MNI152NLin2009cAsym (source-reported)", + "permutations": 4999, + "random_seed": 20261015, + "primary_correction": "one-sided one-sample Student t; Bonferroni across all analysis-mask voxels", + "bonferroni_critical_t": 5.711008680196454, + "whole_brain_bonferroni_fwe_voxels_p_lt_0.05": 11, + "whole_brain_bonferroni_peak": { + "ijk": [ + 35, + 15, + 31 + ], + "mni_mm": [ + -26.0, + -102.0, + -3.6 + ], + "t": 6.617173194885254, + "bonferroni_fwe_p": 0.0017909210873767734, + "maxT_fwe_p": 1.0 + }, + "maxT_sensitivity_critical_t_95": 39.393775939941406, + "whole_brain_maxT_fwe_voxels_p_lt_0.05": 0, + "observed_t_max": 6.617173246302241, + "observed_t_max_uncorrected_one_sided_p": 9.311564027968496e-09, + "maxT_fwe_p_minimum": 1.0, + "maxT_null_quantiles_90_95_99": [ + 37.85304183959961, + 39.39071006774902, + 43.08586296081541 + ], + "vmPFC_roi": { + "definition": "12 mm sphere centered MNI (0, 40, -12)", + "voxels_in_mask": 762, + "mean_effect_estimate": -0.00565101111674487, + "participant_mean_effect_sd": 0.0975710461037451, + "ci95_t": [ + -0.03228278011518656, + 0.020980757881696822 + ], + "one_sample_t": -0.4256004517601139, + "df": 53, + "uncorrected_one_sided_p": 0.6639388455692432, + "voxels_whole_brain_FWE_p_lt_0.05": 0, + "voxels_Bonferroni_whole_brain_p_lt_0.05": 0, + "minimum_voxelwise_Bonferroni_whole_brain_p_in_roi": 1.0, + "minimum_voxelwise_whole_brain_FWE_p_in_roi": 1.0 + }, + "participant_global_mean_median": -0.007791515575869469, + "participant_global_mean_mad_scaled": 0.05116067438567886, + "participants_global_robust_z_gt_3_abs": [], + "median_voxel_mean_effect": -0.006044445697356154, + "mean_effect_across_mask_voxels": -0.006902556266463106, + "notes": [ + "Maps are participant contrast parameter estimates, not standardized statistics.", + "The gain modulator was variance-normalized upstream; effects are not per-currency-unit slopes.", + "No participant variance maps are supplied; group model treats participant estimates equally.", + "Bonferroni inference assumes Gaussian participant effects for the voxelwise t tests but not independent voxels.", + "Sign-flip max-T sensitivity assumes independent participants and symmetric errors under the null; the empirical null maxima were extreme relative to observed t statistics." + ] +} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-03.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-03.json new file mode 100644 index 00000000..fc9a8227 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-03.json @@ -0,0 +1,173 @@ +{ + "n_participants": 54, + "n_maps": 54, + "n_excluded": 0, + "source_manifest_checksums_verified": true, + "all_map_values_finite": true, + "coverage_rule": "voxels nonzero in at least 90% of participant maps", + "analysis_voxels": 210968, + "voxel_volume_mm3": 9.600000381469725, + "permutation_test": "one-sided participant sign-flip max-T; family-wise corrected across coverage mask", + "permutations": 9999, + "seed": 20261015, + "whole_brain_alpha": 0.05, + "n_whole_brain_fwer_significant": 24, + "n_26_connected_fwer_clusters": 3, + "fwer_clusters": [ + { + "cluster": 1, + "voxels": 17, + "peak_mni_mm": [ + -26.0, + -102.0, + -3.599997043609619 + ], + "peak_t": 6.617173194885254, + "peak_p_fwer_maxT": 0.000699999975040555 + }, + { + "cluster": 3, + "voxels": 5, + "peak_mni_mm": [ + 30.0, + -94.0, + -8.399997234344482 + ], + "peak_t": 6.1934027671813965, + "peak_p_fwer_maxT": 0.0026000000070780516 + }, + { + "cluster": 2, + "voxels": 2, + "peak_mni_mm": [ + 26.0, + -98.0, + -1.1999969482421875 + ], + "peak_t": 5.760898590087891, + "peak_p_fwer_maxT": 0.013700000010430813 + } + ], + "n_fwer_significant_in_vmPFC_roi": 0, + "whole_brain_peak": { + "ijk": [ + 35, + 15, + 31 + ], + "mni_mm": [ + -26.0, + -102.0, + -3.599997043609619 + ], + "mean_cope": 0.11212667576209814, + "t": 6.617173246302241, + "p_uncorrected": 9.311564027968496e-09, + "p_fwer_maxT": 0.0007 + }, + "vmPFC_roi": { + "definition": "10-mm radius sphere centered at MNI [0, 42, -8] mm", + "center_mni_mm": [ + 0.0, + 42.0, + -8.0 + ], + "radius_mm": 10.0, + "voxels": 429, + "mean_subject_roi_cope": -0.009492761621111255, + "between_subject_sd": 0.1033353461800205, + "se": 0.014062159474161614, + "ci95_t": [ + -0.03769788167193214, + 0.018712358429709627 + ], + "one_sample_t": -0.6750571730148306, + "p_one_sided_uncorrected_descriptive": 0.748713036086836, + "peak": { + "ijk": [ + 44, + 85, + 28 + ], + "mni_mm": [ + -8.0, + 38.0, + -10.799997329711914 + ], + "t": 1.6324519953562382, + "p_fwer_maxT": 1.0 + } + }, + "software": { + "python": "3.13.16", + "numpy": "2.5.4", + "scipy": "1.18.1", + "nibabel": "5.4.2", + "pandas": "3.0.6" + }, + "input_sha256": { + "input/data/sub-001_hypo1_cope.nii.gz": "baf3440fbc7f5f59dea28d231e9c5eb9cf00a15b6924342f4b79e7faf56a929a", + "input/data/sub-003_hypo1_cope.nii.gz": "a8c9b6276d1597bc43695516c9ac5b2893a8d8408cd053161ceaddbd42dafb20", + "input/data/sub-005_hypo1_cope.nii.gz": "415383874c65fd9e10bb03bf2aa59bfcd1d10650bc5d0560a249e85d52b7b205", + "input/data/sub-009_hypo1_cope.nii.gz": "33af129d8ba13cd4b6175089706c531471be1e0bd7ccd43ece10751c8cc3254c", + "input/data/sub-011_hypo1_cope.nii.gz": "6f74dd449eefa6eff40ec00eb046ec7e8bb13c0b7c2ac1874155a9c166692352", + "input/data/sub-013_hypo1_cope.nii.gz": "bfa79b82f931d81d6387e82b8413f1f889a06f36275ba510554669c84a3c026f", + "input/data/sub-015_hypo1_cope.nii.gz": "5d98f6d74823516768659967f95ef43728584eab024c58af30987783515d7694", + "input/data/sub-017_hypo1_cope.nii.gz": "dca9eac4d6f0ef4e2a3e631b2d10f89c5362863698cec4a7c7b9b14128ae96d9", + "input/data/sub-019_hypo1_cope.nii.gz": "f9df911028e0ee06d230b097d8c7011b3c09f34df436e8854cd959145777533d", + "input/data/sub-021_hypo1_cope.nii.gz": "7dd60d722e243f429633f1c63c9a810afd73d1ffd0e0e68fcdd2bf3790d78db1", + "input/data/sub-025_hypo1_cope.nii.gz": "545945b0a5f7e51d65e2828e76e776fffcbb33b1635bb7272bc0948bfbc6b7b4", + "input/data/sub-027_hypo1_cope.nii.gz": "dffa472f8cfe30b9c2025470924fceb23d30fb881db6b893d436faa8d8dcef2f", + "input/data/sub-029_hypo1_cope.nii.gz": "0ed1be0ce40d1becaec5cf18487670822b8cb5fcbc5ad0ec2cb34d9a3ed7071b", + "input/data/sub-033_hypo1_cope.nii.gz": "04778467af0a6c93d531d30f73c5492384be59044ebd7be3e95862700e2e9117", + "input/data/sub-035_hypo1_cope.nii.gz": "211fd859f33d69891531ad3e5dd66fe0c0891b20c58e6ef8aa21b4d49ff030c9", + "input/data/sub-037_hypo1_cope.nii.gz": "a4d76561e8ba1848572a474afce754310f4ee101cfd99276eb3105289cc0934b", + "input/data/sub-039_hypo1_cope.nii.gz": "744df860cfb8410aae16bcb1742e7390c51306c66959bb19da9f5b57206bba7b", + "input/data/sub-041_hypo1_cope.nii.gz": "f93eeadcd3f57239e4c32c5df2ca2c4013bf424978701bd5beec535ace24669f", + "input/data/sub-043_hypo1_cope.nii.gz": "520f19805c6c4358bc56e9bba290b9b79a80c14385bc7be90e4bd81b3e37e771", + "input/data/sub-045_hypo1_cope.nii.gz": "3826c6daf5a7be7b03ae552847c4a8709a1b86c2498735e6ce80768cd5d0b88e", + "input/data/sub-047_hypo1_cope.nii.gz": "8585e8be8eebe84dd316eeb1f86090a8123f88a8b5d275bc2c39049a3bf4bf34", + "input/data/sub-049_hypo1_cope.nii.gz": "e01dacebea8fa444b7696e90a53e9ab0b3543b0da780ba430875b3fde117e084", + "input/data/sub-051_hypo1_cope.nii.gz": "74e2887ed9eb4252357cdce98eb53b5b8ab2620ee5ee57aee1bc677c0099b2ca", + "input/data/sub-053_hypo1_cope.nii.gz": "a3b3509a0240c5b12a9c63f94f2913e69eeb7fab4fbe92ac1adc62eb45bdd0ba", + "input/data/sub-055_hypo1_cope.nii.gz": "136983cd89668779e26eba6847653f1d765452f8a2d5675fce037f751edb0ea8", + "input/data/sub-057_hypo1_cope.nii.gz": "aafa1a371d72e690f737d2507c9d7bbd20c620377cd294d44555c856a0566496", + "input/data/sub-059_hypo1_cope.nii.gz": "0fa3da37a11640705014665f546ba86735472a8a2b7fdf1b37177a55abd0a65a", + "input/data/sub-061_hypo1_cope.nii.gz": "cb8bc3bf4264fe156348d3c171335b84978eb8d32b0fd331db9f4661dad2bdff", + "input/data/sub-063_hypo1_cope.nii.gz": "2a5458eb314441b01dacfa1bcea9e9a95f983d2994aa6b853ebe1a20b017a467", + "input/data/sub-067_hypo1_cope.nii.gz": "9977321f1f775f04dab881d740ea5cc491dadda07405f2380c61c50e5c3a01fc", + "input/data/sub-069_hypo1_cope.nii.gz": "bd22905ebe789319f082b0fdb6ba7cd5aaf6590fd8424d6c396cd54c0602a318", + "input/data/sub-071_hypo1_cope.nii.gz": "7286639323904bfe851588ce06c68396d535fad2f7ac5de0de1b73c4c17494f4", + "input/data/sub-073_hypo1_cope.nii.gz": "67086bf1f48b14bc095999f6535656649d01da82d1327715c5b3ab89ea6c5f7b", + "input/data/sub-075_hypo1_cope.nii.gz": "b9151e72e3a8a609a23ac73dbd3d6ba8423f271ddd72149cf27c04e25bf9f980", + "input/data/sub-077_hypo1_cope.nii.gz": "79aaf5add3d475590cb7fd82a7fbd32517dbde2cb859824864a2b10d6fafb9ed", + "input/data/sub-079_hypo1_cope.nii.gz": "d505691fdcfa43ad709fca3803c954069afe4e2f2dc865edb5b0812562d1eb8c", + "input/data/sub-081_hypo1_cope.nii.gz": "a8a342b5e333dbff9776b5a4847929737144dc8029830036636eb86c566f4f76", + "input/data/sub-083_hypo1_cope.nii.gz": "76a526c303c406342487da0e5deee5a6ca6b345e9b6ccb052149c4c32f0833ae", + "input/data/sub-085_hypo1_cope.nii.gz": "74b1af4e4b667a70c79b54a10294be744da5538b814057186eae48710520b65a", + "input/data/sub-087_hypo1_cope.nii.gz": "7ecb372d1249cd5368121b1e7b7f7ee33ef5430575097431dcd3f27dcdad7b04", + "input/data/sub-089_hypo1_cope.nii.gz": "3b380ae44cdbf0171d9ec12ff9ecdb47227496cda5ccd5b5cfb09164c5d91846", + "input/data/sub-093_hypo1_cope.nii.gz": "7802aea70713a4be7683921188b92a563d86f221f191a8bac4ee9c4decb33a1c", + "input/data/sub-095_hypo1_cope.nii.gz": "291760d6479e336093a651e33df20deab99e434cba5afbf31fc019c8d1fe816e", + "input/data/sub-099_hypo1_cope.nii.gz": "30b063515e6b538183fe37c561e87e47681756876a8f6a8a607839d8d3de0e42", + "input/data/sub-103_hypo1_cope.nii.gz": "a088633f18ac3e35fc2512e9dc21ec3d92efd06749d4027338ccb448a635919c", + "input/data/sub-105_hypo1_cope.nii.gz": "12a1b50eaa5be6983990c5e77f985f9750340204eaa3fff7e70829f07707e6a2", + "input/data/sub-107_hypo1_cope.nii.gz": "4580aade93323d0d14f9a3a1932a428004a2f657980b5669f9274102bb370802", + "input/data/sub-109_hypo1_cope.nii.gz": "931ba1128720bbaa99e7fce8f036a331581d6d07e00212a1f402eae7959299cb", + "input/data/sub-113_hypo1_cope.nii.gz": "e5f81435ddc2d5703fa4ea37d6597601e71b50f8c53fb6047fb0067c17282c65", + "input/data/sub-115_hypo1_cope.nii.gz": "5046f7c2fa1c5d1be6237d38f631beca13df8a3a8ded11121082838a533a44bf", + "input/data/sub-117_hypo1_cope.nii.gz": "711159acfa23c45ab82903f658cafe0fa539f39e077e451f6b0728fdb359445f", + "input/data/sub-119_hypo1_cope.nii.gz": "01738a10e34e46c5ea1a4a192b9484595ee352d62375095b76726347455aabd7", + "input/data/sub-121_hypo1_cope.nii.gz": "94357665b89cfa1b9157e71aab10f78b49585a790a4a01d9e4693698e185d892", + "input/data/sub-123_hypo1_cope.nii.gz": "1219377e08c306753c1e382d431b1e7a55c7143cdc5f800fb65e92fa7e72f888" + }, + "elapsed_seconds": 46.45, + "command": [ + "/Users/johnlee/code/CON/stamped-in-practice-workers/codex/narps-r1-03/.pixi/envs/default/bin/python", + "/Users/johnlee/code/CON/stamped-in-practice-workers/codex/narps-r1-03/analyze.py", + "--permutations", + "9999", + "--seed", + "20261015" + ] +} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-05.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-05.json new file mode 100644 index 00000000..fd9592ae --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-05.json @@ -0,0 +1,103 @@ +{ + "analysis": "One-sample intercept-only group model of participant gain-effect maps", + "n_participants_input": 54, + "n_participants_included": 54, + "exclusions": [], + "image_shape": [ + 97, + 115, + 81 + ], + "voxel_size_mm": [ + 2.0, + 2.0, + 2.4000000953674316 + ], + "mask_voxels_common_nonzero": 198029, + "vmPFC_roi_definition": { + "type": "independent spherical ROI in MNI space", + "center_mni_mm": [ + 0.0, + 46.0, + -6.0 + ], + "radius_mm": 10.0, + "source": "Bartra, McGuire & Kable (2013) valuation meta-analysis-informed canonical vmPFC location; see report", + "voxels_in_common_mask": 413 + }, + "test": { + "direction": "positive one-sided", + "method": "Nilearn non_parametric_inference; max-t permutation FWER across common whole-brain mask", + "permutations": 10000, + "random_seed": 20261015, + "alpha": 0.05, + "hypothesis_supported_in_vmPFC": false, + "positive_whole_brain_effect_anywhere": true, + "positive_whole_brain_fwe_significant_voxels": 24, + "positive_whole_brain_fwe_clusters_26_connected": 3, + "positive_whole_brain_fwe_peaks": [ + { + "cluster_id": 1, + "voxels": 17, + "peak_t": 6.617175579071045, + "peak_fwe_p": 0.0008999099956057294, + "peak_x_mni": -26.0, + "peak_y_mni": -102.0, + "peak_z_mni": -3.599997043609619 + }, + { + "cluster_id": 2, + "voxels": 2, + "peak_t": 5.760898113250732, + "peak_fwe_p": 0.01269872862940896, + "peak_x_mni": 26.0, + "peak_y_mni": -98.0, + "peak_z_mni": -1.1999969482421875 + }, + { + "cluster_id": 3, + "voxels": 5, + "peak_t": 6.193403244018555, + "peak_fwe_p": 0.00289971062598638, + "peak_x_mni": 30.0, + "peak_y_mni": -94.0, + "peak_z_mni": -8.399997234344482 + } + ], + "max_group_t": 6.617175579071045, + "max_group_t_mni_mm": [ + -26.0, + -102.0, + -3.599997043609619 + ], + "max_voxel_fwe_p": 0.0008999099956057294, + "vmPFC_max_t": 1.2987258434295654, + "vmPFC_peak_mni_mm": [ + 0.0, + 42.0, + -8.399997234344482 + ], + "vmPFC_peak_whole_brain_fwe_p": 1.0, + "roi_mean_effect": -0.011330806650221348, + "roi_sd_between_subjects": 0.10848882049322128, + "roi_mean_effect_95pct_t_ci": [ + -0.04094255441417176, + 0.01828094111372906 + ], + "roi_one_sample_t_descriptive": -0.7674899697303772, + "roi_one_sample_p_two_sided_descriptive_not_support_test": 0.4461957812309265, + "uncorrected_voxels_p_lt_0_001": 620 + }, + "software": { + "python": "3.13.16", + "nilearn": "0.14.1", + "nibabel": "5.4.2", + "numpy": "2.5.4", + "scipy": "1.18.1", + "pandas": "3.0.6" + }, + "created_utc": "2026-10-16T03:28:29.342400+00:00", + "script_sha256": "a97d38d8c7cb60fb2687c34885c0098bd86bd068145305675ec5377db7b8223c", + "platform": "macOS-27.0.1-arm64-arm-64bit-Mach-O", + "python_executable": "/Users/johnlee/code/CON/stamped-in-practice-workers/codex/narps-r1-05/.pixi/envs/default/bin/python" +} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-06.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-06.json new file mode 100644 index 00000000..3a3da636 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-06.json @@ -0,0 +1,324 @@ +{ + "analysis": { + "n_participants": 54, + "n_excluded": 0, + "group": "equalIndifference", + "model": "one-sample voxelwise t test of participant gain-effect estimates against zero", + "direction": "positive", + "multiple_comparisons": "one-sided permutation max-T family-wise correction across common whole-brain support", + "permutations": 9999, + "seed": 20261015, + "permutation_p_resolution": 0.0001, + "mask_voxels": 186192, + "mask_rule": "TemplateFlow MNI152NLin2009cAsym desc-brain mask resampled nearest-neighbor to map grid, intersected with voxels having nonzero estimates in all 54 maps", + "brain_mask_voxels_on_map_grid": 196466, + "common_support_outside_brain_mask_voxels": 11837, + "relaxed_90pct_support_voxels": 192333, + "vmPFC_search_zone": "MNI x -20 to 20, y 15 to 60, z -20 to 10 mm", + "vmPFC_common_voxels": 5754, + "vmPFC_significant_voxels_fwe05": 0, + "roi_mean_effect_estimate": -9.617067849763703e-05, + "roi_sd_between_participants": 0.05217086123910426, + "roi_ci95_t": [ + -0.014336074630047567, + 0.014143733273052291 + ], + "roi_t_df53": -0.013546015051782873, + "roi_p_one_sided_uncorrected_descriptive": 0.5053784811400704, + "roi_p_two_sided_uncorrected_descriptive": 0.9892430377198591, + "roi_peak": { + "t": 4.191847763594081, + "mni_mm": [ + -2.0, + 24.0, + -17.99999761581421 + ], + "p_fwe": 0.7778 + }, + "whole_brain_positive_peak": { + "t": 6.617173246302241, + "p_fwe": 0.0007, + "mni_mm": [ + -26.0, + -102.0, + -3.599997043609619 + ], + "voxel_ijk": [ + 35, + 15, + 31 + ] + }, + "whole_brain_fwe05_voxel_count": 24, + "hypothesis_supported": false, + "metadata_age_mean_sd": [ + 26.055555555555557, + 3.0493838948818466 + ], + "metadata_gender_counts": { + "F": 30, + "M": 24 + }, + "map_shape": [ + 97, + 115, + 81 + ], + "map_affine": [ + [ + 2.0, + 0.0, + 0.0, + -96.0 + ], + [ + 0.0, + 2.0, + 0.0, + -132.0 + ], + [ + 0.0, + 0.0, + 2.4000000953674316, + -78.0 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "brain_mask_source": "TemplateFlow tpl-MNI152NLin2009cAsym_res-02_desc-brain_mask.nii.gz", + "brain_mask_sha256": "7a71e9ce99d2af7b68bb5c163908c8e25f4c7a198806fb0893a5c1759b480ecd", + "all_maps_finite": true, + "all_grids_identical": true, + "effect_units": "upstream coefficient for mean-centered, variance-normalized gain modulator; not per currency unit", + "run_seconds": 11.829278945922852, + "software": { + "python": "3.13.16", + "numpy": "2.5.4", + "scipy": "1.18.1", + "nibabel": "5.4.2" + } + }, + "inputs": [ + { + "file": "input/data/sub-001_hypo1_cope.nii.gz", + "sha256": "baf3440fbc7f5f59dea28d231e9c5eb9cf00a15b6924342f4b79e7faf56a929a" + }, + { + "file": "input/data/sub-003_hypo1_cope.nii.gz", + "sha256": "a8c9b6276d1597bc43695516c9ac5b2893a8d8408cd053161ceaddbd42dafb20" + }, + { + "file": "input/data/sub-005_hypo1_cope.nii.gz", + "sha256": "415383874c65fd9e10bb03bf2aa59bfcd1d10650bc5d0560a249e85d52b7b205" + }, + { + "file": "input/data/sub-009_hypo1_cope.nii.gz", + "sha256": "33af129d8ba13cd4b6175089706c531471be1e0bd7ccd43ece10751c8cc3254c" + }, + { + "file": "input/data/sub-011_hypo1_cope.nii.gz", + "sha256": "6f74dd449eefa6eff40ec00eb046ec7e8bb13c0b7c2ac1874155a9c166692352" + }, + { + "file": "input/data/sub-013_hypo1_cope.nii.gz", + "sha256": "bfa79b82f931d81d6387e82b8413f1f889a06f36275ba510554669c84a3c026f" + }, + { + "file": "input/data/sub-015_hypo1_cope.nii.gz", + "sha256": "5d98f6d74823516768659967f95ef43728584eab024c58af30987783515d7694" + }, + { + "file": "input/data/sub-017_hypo1_cope.nii.gz", + "sha256": "dca9eac4d6f0ef4e2a3e631b2d10f89c5362863698cec4a7c7b9b14128ae96d9" + }, + { + "file": "input/data/sub-019_hypo1_cope.nii.gz", + "sha256": "f9df911028e0ee06d230b097d8c7011b3c09f34df436e8854cd959145777533d" + }, + { + "file": "input/data/sub-021_hypo1_cope.nii.gz", + "sha256": "7dd60d722e243f429633f1c63c9a810afd73d1ffd0e0e68fcdd2bf3790d78db1" + }, + { + "file": "input/data/sub-025_hypo1_cope.nii.gz", + "sha256": "545945b0a5f7e51d65e2828e76e776fffcbb33b1635bb7272bc0948bfbc6b7b4" + }, + { + "file": "input/data/sub-027_hypo1_cope.nii.gz", + "sha256": "dffa472f8cfe30b9c2025470924fceb23d30fb881db6b893d436faa8d8dcef2f" + }, + { + "file": "input/data/sub-029_hypo1_cope.nii.gz", + "sha256": "0ed1be0ce40d1becaec5cf18487670822b8cb5fcbc5ad0ec2cb34d9a3ed7071b" + }, + { + "file": "input/data/sub-033_hypo1_cope.nii.gz", + "sha256": "04778467af0a6c93d531d30f73c5492384be59044ebd7be3e95862700e2e9117" + }, + { + "file": "input/data/sub-035_hypo1_cope.nii.gz", + "sha256": "211fd859f33d69891531ad3e5dd66fe0c0891b20c58e6ef8aa21b4d49ff030c9" + }, + { + "file": "input/data/sub-037_hypo1_cope.nii.gz", + "sha256": "a4d76561e8ba1848572a474afce754310f4ee101cfd99276eb3105289cc0934b" + }, + { + "file": "input/data/sub-039_hypo1_cope.nii.gz", + "sha256": "744df860cfb8410aae16bcb1742e7390c51306c66959bb19da9f5b57206bba7b" + }, + { + "file": "input/data/sub-041_hypo1_cope.nii.gz", + "sha256": "f93eeadcd3f57239e4c32c5df2ca2c4013bf424978701bd5beec535ace24669f" + }, + { + "file": "input/data/sub-043_hypo1_cope.nii.gz", + "sha256": "520f19805c6c4358bc56e9bba290b9b79a80c14385bc7be90e4bd81b3e37e771" + }, + { + "file": "input/data/sub-045_hypo1_cope.nii.gz", + "sha256": "3826c6daf5a7be7b03ae552847c4a8709a1b86c2498735e6ce80768cd5d0b88e" + }, + { + "file": "input/data/sub-047_hypo1_cope.nii.gz", + "sha256": "8585e8be8eebe84dd316eeb1f86090a8123f88a8b5d275bc2c39049a3bf4bf34" + }, + { + "file": "input/data/sub-049_hypo1_cope.nii.gz", + "sha256": "e01dacebea8fa444b7696e90a53e9ab0b3543b0da780ba430875b3fde117e084" + }, + { + "file": "input/data/sub-051_hypo1_cope.nii.gz", + "sha256": "74e2887ed9eb4252357cdce98eb53b5b8ab2620ee5ee57aee1bc677c0099b2ca" + }, + { + "file": "input/data/sub-053_hypo1_cope.nii.gz", + "sha256": "a3b3509a0240c5b12a9c63f94f2913e69eeb7fab4fbe92ac1adc62eb45bdd0ba" + }, + { + "file": "input/data/sub-055_hypo1_cope.nii.gz", + "sha256": "136983cd89668779e26eba6847653f1d765452f8a2d5675fce037f751edb0ea8" + }, + { + "file": "input/data/sub-057_hypo1_cope.nii.gz", + "sha256": "aafa1a371d72e690f737d2507c9d7bbd20c620377cd294d44555c856a0566496" + }, + { + "file": "input/data/sub-059_hypo1_cope.nii.gz", + "sha256": "0fa3da37a11640705014665f546ba86735472a8a2b7fdf1b37177a55abd0a65a" + }, + { + "file": "input/data/sub-061_hypo1_cope.nii.gz", + "sha256": "cb8bc3bf4264fe156348d3c171335b84978eb8d32b0fd331db9f4661dad2bdff" + }, + { + "file": "input/data/sub-063_hypo1_cope.nii.gz", + "sha256": "2a5458eb314441b01dacfa1bcea9e9a95f983d2994aa6b853ebe1a20b017a467" + }, + { + "file": "input/data/sub-067_hypo1_cope.nii.gz", + "sha256": "9977321f1f775f04dab881d740ea5cc491dadda07405f2380c61c50e5c3a01fc" + }, + { + "file": "input/data/sub-069_hypo1_cope.nii.gz", + "sha256": "bd22905ebe789319f082b0fdb6ba7cd5aaf6590fd8424d6c396cd54c0602a318" + }, + { + "file": "input/data/sub-071_hypo1_cope.nii.gz", + "sha256": "7286639323904bfe851588ce06c68396d535fad2f7ac5de0de1b73c4c17494f4" + }, + { + "file": "input/data/sub-073_hypo1_cope.nii.gz", + "sha256": "67086bf1f48b14bc095999f6535656649d01da82d1327715c5b3ab89ea6c5f7b" + }, + { + "file": "input/data/sub-075_hypo1_cope.nii.gz", + "sha256": "b9151e72e3a8a609a23ac73dbd3d6ba8423f271ddd72149cf27c04e25bf9f980" + }, + { + "file": "input/data/sub-077_hypo1_cope.nii.gz", + "sha256": "79aaf5add3d475590cb7fd82a7fbd32517dbde2cb859824864a2b10d6fafb9ed" + }, + { + "file": "input/data/sub-079_hypo1_cope.nii.gz", + "sha256": "d505691fdcfa43ad709fca3803c954069afe4e2f2dc865edb5b0812562d1eb8c" + }, + { + "file": "input/data/sub-081_hypo1_cope.nii.gz", + "sha256": "a8a342b5e333dbff9776b5a4847929737144dc8029830036636eb86c566f4f76" + }, + { + "file": "input/data/sub-083_hypo1_cope.nii.gz", + "sha256": "76a526c303c406342487da0e5deee5a6ca6b345e9b6ccb052149c4c32f0833ae" + }, + { + "file": "input/data/sub-085_hypo1_cope.nii.gz", + "sha256": "74b1af4e4b667a70c79b54a10294be744da5538b814057186eae48710520b65a" + }, + { + "file": "input/data/sub-087_hypo1_cope.nii.gz", + "sha256": "7ecb372d1249cd5368121b1e7b7f7ee33ef5430575097431dcd3f27dcdad7b04" + }, + { + "file": "input/data/sub-089_hypo1_cope.nii.gz", + "sha256": "3b380ae44cdbf0171d9ec12ff9ecdb47227496cda5ccd5b5cfb09164c5d91846" + }, + { + "file": "input/data/sub-093_hypo1_cope.nii.gz", + "sha256": "7802aea70713a4be7683921188b92a563d86f221f191a8bac4ee9c4decb33a1c" + }, + { + "file": "input/data/sub-095_hypo1_cope.nii.gz", + "sha256": "291760d6479e336093a651e33df20deab99e434cba5afbf31fc019c8d1fe816e" + }, + { + "file": "input/data/sub-099_hypo1_cope.nii.gz", + "sha256": "30b063515e6b538183fe37c561e87e47681756876a8f6a8a607839d8d3de0e42" + }, + { + "file": "input/data/sub-103_hypo1_cope.nii.gz", + "sha256": "a088633f18ac3e35fc2512e9dc21ec3d92efd06749d4027338ccb448a635919c" + }, + { + "file": "input/data/sub-105_hypo1_cope.nii.gz", + "sha256": "12a1b50eaa5be6983990c5e77f985f9750340204eaa3fff7e70829f07707e6a2" + }, + { + "file": "input/data/sub-107_hypo1_cope.nii.gz", + "sha256": "4580aade93323d0d14f9a3a1932a428004a2f657980b5669f9274102bb370802" + }, + { + "file": "input/data/sub-109_hypo1_cope.nii.gz", + "sha256": "931ba1128720bbaa99e7fce8f036a331581d6d07e00212a1f402eae7959299cb" + }, + { + "file": "input/data/sub-113_hypo1_cope.nii.gz", + "sha256": "e5f81435ddc2d5703fa4ea37d6597601e71b50f8c53fb6047fb0067c17282c65" + }, + { + "file": "input/data/sub-115_hypo1_cope.nii.gz", + "sha256": "5046f7c2fa1c5d1be6237d38f631beca13df8a3a8ded11121082838a533a44bf" + }, + { + "file": "input/data/sub-117_hypo1_cope.nii.gz", + "sha256": "711159acfa23c45ab82903f658cafe0fa539f39e077e451f6b0728fdb359445f" + }, + { + "file": "input/data/sub-119_hypo1_cope.nii.gz", + "sha256": "01738a10e34e46c5ea1a4a192b9484595ee352d62375095b76726347455aabd7" + }, + { + "file": "input/data/sub-121_hypo1_cope.nii.gz", + "sha256": "94357665b89cfa1b9157e71aab10f78b49585a790a4a01d9e4693698e185d892" + }, + { + "file": "input/data/sub-123_hypo1_cope.nii.gz", + "sha256": "1219377e08c306753c1e382d431b1e7a55c7143cdc5f800fb65e92fa7e72f888" + } + ] +} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-07.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-07.json new file mode 100644 index 00000000..1714164f --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-07.json @@ -0,0 +1,53 @@ +{ + "analysis": "one-sample random-effects group model with positive one-sided participant-level sign-flip max-t FWE inference", + "n": 54, + "df": 53, + "permutations": 5000, + "seed": 20261015, + "mask_definition": "voxels finite and nonzero in every supplied effect map", + "whole_brain_voxels": 198029, + "fwe_alpha": 0.05, + "significant_positive_whole_brain_voxels": 24, + "smallest_monte_carlo_maxT_pFWE": 0.0007998400319936012, + "observed_max_t": 6.617173246302241, + "whole_brain_peak_mni_xyz_mm": [ + -26.0, + -102.0, + -3.599997043609619 + ], + "whole_brain_peak_positive_maxT_pFWE": 0.0007998400319936012, + "vmPFC_anatomical_label": "bilateral AAL3 Frontal_Med_Orb parcels; descriptive localization only", + "vmPFC_roi_voxels": 1297, + "vmPFC_roi_mean_effect": -0.007928628474473953, + "vmPFC_roi_mean_95pct_t_CI": [ + -0.03462468188345817, + 0.018767424934510262 + ], + "vmPFC_roi_one_sided_uncorrected_p_descriptive_only": 0.7230441369520557, + "vmPFC_roi_mean_t_descriptive_only": -0.59569909332319, + "vmPFC_roi_peak_t": 2.336962520972011, + "vmPFC_roi_peak_mni_xyz_mm": [ + -2.0, + 24.0, + -13.199997425079346 + ], + "vmPFC_roi_peak_positive_maxT_pFWE": 1.0, + "vmPFC_roi_positive_maxT_FWE05_voxels": 0, + "vmPFC_roi_outlier_leave_one_out_sensitivity": { + "flagged_participant_id": "sub-025", + "mean_without_flagged_participant": -0.013538436964154243, + "mean_95pct_t_CI_without_flagged_participant": [ + -0.0382196697087671, + 0.011142795780458615 + ] + }, + "software": { + "python": "3.13.16", + "numpy": "2.5.4", + "scipy": "1.18.1", + "nibabel": "5.4.2", + "nilearn": "0.14.1", + "pandas": "3.0.6" + }, + "runtime_seconds": 39.307 +} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-08.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-08.json new file mode 100644 index 00000000..75a2624b --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-08.json @@ -0,0 +1,96 @@ +{ + "analysis": "one-sample positive test of AO86 equal-indifference gain effects", + "n_participants_input": 54, + "n_participants_included": 54, + "excluded_participants": [], + "n_voxels_tested": 210968, + "mask_rule": "nonzero map coverage in at least 90% of participants", + "n_permutations_random_sign_flips": 5000, + "seed": 20261015, + "alpha_fwe_one_sided": 0.05, + "max_t_critical_fwe": 5.37563875773227, + "significant_voxels_fwe": 24, + "significant_clusters_26_connected": 3, + "cluster_table": "whole_brain_fwe_clusters.tsv", + "observed_peak": { + "mni_xyz_mm": [ + -26.0, + -102.0, + -3.6 + ], + "t": 6.617173246302241, + "p_uncorrected_one_sided": 9.311564027968496e-09, + "p_fwe": 0.0007998400319936012, + "mean_effect": 0.11212667576209814, + "atlas_label": "Occipital Pole" + }, + "significant_peak": { + "ijk": [ + 35, + 15, + 31 + ], + "mni_xyz_mm": [ + -26.0, + -102.0, + -3.6 + ], + "t": 6.617173246302241, + "p_fwe": 0.0007998400319936012, + "mean_effect": 0.11212667576209814, + "atlas_label": "Occipital Pole" + }, + "vmPFC_reference": { + "atlas": "Harvard-Oxford cortical max-probability atlas, threshold 25%", + "labels": [ + "Frontal Medial Cortex", + "Subcallosal Cortex" + ], + "atlas_template": "MNI152NLin6Asym; nearest-neighbor resampled to supplied map grid", + "voxels_in_group_mask": 1638, + "whole_brain_fwe_significant_voxels": 0, + "peak_t_within_reference": 4.1918477635940805, + "peak_p_fwe_within_reference": 0.8008398320335933, + "mean_effect": 0.006167955119147637, + "sd_between_participants": 0.09718583212484799, + "ci95_t": [ + -0.02035867070300741, + 0.03269458094130268 + ] + }, + "map_qc": { + "all_maps_same_shape_and_affine": true, + "all_values_finite": true, + "grid_shape": [ + 97, + 115, + 81 + ], + "voxel_sizes_mm": [ + 2.0, + 2.0, + 2.4000000953674316 + ], + "coverage_fraction_min": 0.9074074074074074, + "coverage_fraction_median": 1.0, + "coverage_fraction_max": 1.0 + }, + "outputs": [ + "results/group_mean_effect.nii.gz", + "results/group_t_positive.nii.gz", + "results/group_p_fwe_positive.nii.gz", + "results/group_mask_90pct_coverage.nii.gz", + "results/vmPFC_reference_mask.nii.gz" + ], + "software": { + "python": "3.13.16", + "platform": "macOS-27.0.1-arm64-arm-64bit-Mach-O", + "numpy": "2.5.4", + "scipy": "1.18.1", + "nibabel": "5.4.2", + "nilearn": "0.14.1", + "pandas": "3.0.6", + "matplotlib": "3.11.2" + }, + "elapsed_seconds": 39.24 +} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-09.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-09.json new file mode 100644 index 00000000..bf76fe16 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-09.json @@ -0,0 +1,83 @@ +{ + "analysis": "AO86 equal-indifference group gain cope, one-sided positive whole-brain max-t sign-flip test", + "n": 54, + "n_excluded": 0, + "n_permutations": 10000, + "seed": 20261015, + "alpha_fwe": 0.05, + "common_mask_voxels": 198029, + "voxel_size_mm": [ + 2.0, + 2.0, + 2.4000000953674316 + ], + "max_t_in_mask": 6.617175579071045, + "max_t_log10_fwe_p": 3.3010733127593994, + "max_t_fwe_p": 0.0004999501318379081, + "significant_voxels_fwe_p_le_0_05": 24, + "significant_components_descriptive_only": [ + { + "extent_voxels_descriptive_26_connectivity": 17, + "peak_t": 6.617175579071045, + "peak_mni_xyz_mm": [ + -26.0, + -102.0, + -3.599997043609619 + ], + "peak_max_t_fwe_p": 0.0004999501397833228, + "vmPFC_roi_overlap_voxels": 0 + }, + { + "extent_voxels_descriptive_26_connectivity": 5, + "peak_t": 6.193403244018555, + "peak_mni_xyz_mm": [ + 30.0, + -94.0, + -8.399997234344482 + ], + "peak_max_t_fwe_p": 0.0030996897257864475, + "vmPFC_roi_overlap_voxels": 0 + }, + { + "extent_voxels_descriptive_26_connectivity": 2, + "peak_t": 5.760898113250732, + "peak_mni_xyz_mm": [ + 26.0, + -98.0, + -1.1999969482421875 + ], + "peak_max_t_fwe_p": 0.013798621483147144, + "vmPFC_roi_overlap_voxels": 0 + } + ], + "vmPFC_descriptive_summary": { + "roi": "AAL SPM12 bilateral Frontal_Med_Orb_L/R", + "roi_atlas_label_ids": [ + 2611, + 2612 + ], + "roi_voxels_in_common_mask": 1297, + "mean_cope": -0.007928628474473953, + "sd_participant_roi_means": 0.09780656546354294, + "se": 0.013309787958860397, + "ci95_t": [ + -0.034624682371488184, + 0.018767425422540278 + ], + "cohen_dz": -0.0810643807053566, + "one_sided_t": -0.5956991314888, + "one_sided_p_uncorrected_descriptive": 0.7230442762374878, + "n": 54 + }, + "data_interpretation": "participant-level cope estimates from a mean-centered, variance-normalized gain modulator; not currency-unit slopes or standardized test statistics", + "group_model_limit": "no first-level variance maps are supplied; unweighted one-sample group inference cannot reproduce precision-weighted mixed-effects estimation", + "software": { + "python": "3.13.16", + "numpy": "2.5.4", + "scipy": "1.18.1", + "nilearn": "0.14.1", + "nibabel": "5.4.2", + "platform": "macOS-27.0.1-arm64-arm-64bit-Mach-O" + }, + "generated_utc": "2026-10-16T02:15:50.833466+00:00" +} diff --git a/2026-usrse/stamped-ai-study/data/narps-figure-guidance.json b/2026-usrse/stamped-ai-study/data/narps-figure-guidance.json new file mode 100644 index 00000000..89312b69 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-figure-guidance.json @@ -0,0 +1,23 @@ +{ + "group_map": { + "file": "figures/narps-group-map.svg", + "caption": "Example group analysis of 54 participant gain-effect maps (run 09). Colors show unthresholded t statistics within common participant coverage; yellow outlines the anatomical vmPFC region and green shows positive whole-brain FWE significance. Corrected positive effects were posterior, with no overlap in this vmPFC region.", + "result": "For run09, 24 positive whole-brain voxels survived permutation max-T FWE correction, with none in bilateral medial orbitofrontal vmPFC parcels. The descriptive mean gain coefficient in that region was -0.00793 (95% t CI -0.03462 to 0.01877). This bounded group reanalysis does not reproduce all upstream NARPS processing or a precision-weighted mixed-effects model.", + "interpretation": "The example does not support the specified positive vmPFC hypothesis under this run's anatomical definition and whole-brain correction. Absence of significance is not evidence of a zero effect. Gray anatomical areas outside common coverage are not evaluated as null signal." + }, + "pilot_variability": { + "file": "figures/narps-analysis-variability.svg", + "caption": "Pilot outputs illustrate analysis variation. Run labels identify eight completed analyses; search masks ranged from 186,192 to 210,968 voxels. Native primary correction yielded 11 positive whole-brain voxels with Bonferroni or 24 with permutation max-T. The explicit-STAMPED condition has no completed result in these example inputs.", + "interpretation": "These are native worker result descriptors. Mask definitions, corrected search spaces and methods differ, so neither condition means nor causal effects are estimated. Incomplete results are absent, not zero. This example should be secondary to the planned finished-study comparison." + }, + "minimum_derived_collection": { + "existing_runs_do_not_need_to_be_reexecuted_for": [ + "Extract each saved native analysis mask, mean-effect map, t map, corrected p map, and corrected positive support, retaining source revision, correction method and hypothesis decision.", + "Define a fixed evaluation mask before inspecting condition labels: intersection of valid participant support and an independently defined anatomical brain mask, with a fixed vmPFC region for localization.", + "On that common evaluation mask, compare saved worker t/effect fields and native corrected support using pairwise spatial agreement, voxel counts and overlap; retain native search-space information because it affects correction.", + "Report failed or incomplete runs separately, preserve every run, and keep an explicit denominator for each condition and skill iteration." + ], + "avoid_as_condition_variability_endpoint": "A fixed-ROI mean recomputed from the same 54 source maps is identical across conditions by construction. It is a scientific reference and a correctness check, not an informative skill-condition effect measure.", + "requires_prospective_design_change": "For a causal assistance-condition claim, freeze skills and the evaluator within each iteration, predefine replicate allocation and stopping, run balanced independent workers for all four conditions, and do not adapt a skill snapshot mid-block. Label derived pilot endpoints as exploratory; use a held-out study or later iteration to evaluate skills adapted from pilot outcomes." + } +} diff --git a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json index 71b1ed12..e4122e14 100644 --- a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json +++ b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json @@ -1,7 +1,16 @@ { - "pdf_sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", - "preview_sha256": "14c9514014a363c55ed49aae1cd3caaebfe8a9edc24bea624bdb222389525a38", - "reviewer": "Root coordinating agent and poster subagent", - "review": "Clear cream/navy/green layout, intact logos, generous spacing; scientific/scoping/failure text legible; no clipping or overlap. Automated PDF audit records 44x44in, minimum24pt,17annotations/14destinations and all4QRs upright+rotated. This is agent visual review, not human review.", - "source": "Root coordinating agent message 2026-10-14 after final export; exact artifacts hashed by poster subagent." + "reviewer": "Codex agent", + "author_review": false, + "pdf_sha256": "afb037aea26970685b2c4288b8329fb627ca2db4a0db430cd16b93a3176fdd56", + "preview_sha256": "8b2d643073d5bbd5b7b1545f1e394e028639582bb2e62b20fc824d6342401114", + "reviewed_utc": "2026-10-16T03:52:25.040938+00:00", + "checks": [ + "Inspected current full-page PDF raster preview", + "Three columns and invitation fit without clipping or overlap", + "Group maps, color scale and variability markers are readable", + "All 36 allocated run slots are represented; unmeasured values remain open", + "Figures use saved scientific outputs and independent input hashes", + "Four QR codes decode from PDF pixels; PDF text minimum 24 pt" + ], + "result": "passed" } diff --git a/2026-usrse/stamped-ai-study/exports/asset-reuse.json b/2026-usrse/stamped-ai-study/exports/asset-reuse.json deleted file mode 100644 index 2f2f9076..00000000 --- a/2026-usrse/stamped-ai-study/exports/asset-reuse.json +++ /dev/null @@ -1,234 +0,0 @@ -{ - "checked_at": "2026-10-15T00:27:39.922974+00:00", - "reused_repository_assets": [ - { - "name": "con-logo-outlined.svg", - "path": "../orinoco-lite/assets/con-logo-outlined.svg", - "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", - "bytes": 125811 - }, - { - "name": "con-ccn-dartmouth-letterhead.svg", - "path": "../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", - "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", - "bytes": 379034 - }, - { - "name": "repronim_logo.svg", - "path": "../orinoco-lite/assets/repronim_logo.svg", - "sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", - "bytes": 33939 - }, - { - "name": "orinoco-qr-con.svg", - "path": "../orinoco-lite/assets/orinoco-qr-con.svg", - "sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", - "bytes": 67605 - } - ], - "removed_duplicate_files": 4, - "new_poster_specific_annex_assets": 3, - "new_historical_asset_uploads": 3, - "pdf_equivalence": { - "same_pixels_at_150_dpi": true, - "pixels": [ - 6600, - 6600 - ], - "retained_pdf_sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", - "rebuilt_pdf_sha256": "de7cf0eb56c20226101c1741d1b7a67d69d5417ff7ab4201239b4bf32630f2cb" - }, - "current_rebuild_checks": { - "pdf_sha256": "de7cf0eb56c20226101c1741d1b7a67d69d5417ff7ab4201239b4bf32630f2cb", - "page_count": 1, - "page_points": [ - 3168.0, - 3168.0 - ], - "minimum_html_text_px": 32, - "minimum_html_text_pt": 24.0, - "minimum_pdf_text_pt": 24.0, - "inspected_pdf_text_runs": 184, - "link_annotation_count": 17, - "unique_expected_links": 14, - "missing_links": [], - "raster_dpi": 150, - "qr_results": [ - { - "name": "poster", - "expected": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", - "decoded": [ - "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study" - ], - "decoded_rotated": [ - "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study" - ], - "passed": true - }, - { - "name": "study", - "expected": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", - "decoded": [ - "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research" - ], - "decoded_rotated": [ - "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research" - ], - "passed": true - }, - { - "name": "skills", - "expected": "https://github.com/con/skills/tree/codex/stamped-research-skills", - "decoded": [ - "https://github.com/con/skills/tree/codex/stamped-research-skills" - ], - "decoded_rotated": [ - "https://github.com/con/skills/tree/codex/stamped-research-skills" - ], - "passed": true - }, - { - "name": "con", - "expected": "https://dev.centerforopenneuroscience.org/", - "decoded": [ - "https://dev.centerforopenneuroscience.org/" - ], - "decoded_rotated": [ - "https://dev.centerforopenneuroscience.org/" - ], - "passed": true - } - ], - "visual_review": "Required separately; not established by this script." - }, - "visual_review": "Coordinator inspected the rebuilt preview: same layout and artwork, no clipping or overlap. Pixel equivalence supports retaining the existing delivered PDF and its audit.", - "anonymous_annex_retrieval": { - "checked_at": "2026-10-15T00:26:51.285880+00:00", - "authentication": "none", - "method": "Full-byte HTTP retrieval compared with locally retained annex objects.", - "all_passed": true, - "assets": [ - { - "path": "2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg", - "key": "MD5E-s72489--0686f3984df0eb61ccb759c66ae50aa4.svg", - "scope": "current_poster_dependency", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s72489--0686f3984df0eb61ccb759c66ae50aa4.svg", - "bytes": 72489, - "sha256": "a21e0078d98f2ecc05ac5afcb404f459814df0fb8b8be32d56fce4a22f11f04e", - "http_status": 200, - "received_bytes": 72489, - "received_sha256": "a21e0078d98f2ecc05ac5afcb404f459814df0fb8b8be32d56fce4a22f11f04e", - "passed": true - }, - { - "path": "2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg", - "key": "MD5E-s73018--c6465f09577434e540f749d487a3829b.svg", - "scope": "current_poster_dependency", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s73018--c6465f09577434e540f749d487a3829b.svg", - "bytes": 73018, - "sha256": "304f7fe5a93d693824d00b1ee2f14b25c5e6f6d291b129aee44b35f10e77496a", - "http_status": 200, - "received_bytes": 73018, - "received_sha256": "304f7fe5a93d693824d00b1ee2f14b25c5e6f6d291b129aee44b35f10e77496a", - "passed": true - }, - { - "path": "2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg", - "key": "MD5E-s69859--b76ec9502c2311354e72b95bb2116724.svg", - "scope": "current_poster_dependency", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s69859--b76ec9502c2311354e72b95bb2116724.svg", - "bytes": 69859, - "sha256": "07e0002ae67f6a491ac421b76386e7ea7cf957d76b1c57ef7b5c798734b8d324", - "http_status": 200, - "received_bytes": 69859, - "received_sha256": "07e0002ae67f6a491ac421b76386e7ea7cf957d76b1c57ef7b5c798734b8d324", - "passed": true - }, - { - "path": "2026-usrse/orinoco-lite/assets/con-logo-outlined.svg", - "key": "MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", - "scope": "current_poster_dependency", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", - "bytes": 125811, - "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", - "http_status": 200, - "received_bytes": 125811, - "received_sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", - "passed": true - }, - { - "path": "2026-usrse/orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", - "key": "MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", - "scope": "current_poster_dependency", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", - "bytes": 379034, - "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", - "http_status": 200, - "received_bytes": 379034, - "received_sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", - "passed": true - }, - { - "path": "2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf", - "key": "MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf", - "scope": "current_poster_dependency", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf", - "bytes": 694949, - "sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", - "http_status": 200, - "received_bytes": 694949, - "received_sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", - "passed": true - }, - { - "path": "2026-usrse/stamped-ai-study/exports/pdf-preview.png", - "key": "MD5E-s1024548--93424049cf2a727fe3b3e8ea8d21337d.png", - "scope": "current_poster_dependency", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1024548--93424049cf2a727fe3b3e8ea8d21337d.png", - "bytes": 1024548, - "sha256": "14c9514014a363c55ed49aae1cd3caaebfe8a9edc24bea624bdb222389525a38", - "http_status": 200, - "received_bytes": 1024548, - "received_sha256": "14c9514014a363c55ed49aae1cd3caaebfe8a9edc24bea624bdb222389525a38", - "passed": true - }, - { - "path": "2026-usrse/stamped-ai-study/exports/qr-source/qr-skills-210px.png", - "key": "MD5E-s16854--f393b086bc0781a22d002aae5d0f8e9e.png", - "scope": "preserved_archive_asset", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s16854--f393b086bc0781a22d002aae5d0f8e9e.png", - "bytes": 16854, - "sha256": "db85e885bef3b3fb35dce785e332b1782d1a181cfd93f5f9df52bebffeb762d2", - "http_status": 200, - "received_bytes": 16854, - "received_sha256": "db85e885bef3b3fb35dce785e332b1782d1a181cfd93f5f9df52bebffeb762d2", - "passed": true - }, - { - "path": "2026-usrse/stamped-ai-study/exports/qr-source/qr-study-177px.png", - "key": "MD5E-s19729--903e8cbbb790d389b5112ba254f66e8c.png", - "scope": "preserved_archive_asset", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s19729--903e8cbbb790d389b5112ba254f66e8c.png", - "bytes": 19729, - "sha256": "db5310cb3b1d32c5e4d0db3bbc9dafa27e45387b67b8172c1e57ab1f192c707d", - "http_status": 200, - "received_bytes": 19729, - "received_sha256": "db5310cb3b1d32c5e4d0db3bbc9dafa27e45387b67b8172c1e57ab1f192c707d", - "passed": true - }, - { - "path": "2026-usrse/stamped-ai-study/stamped-ai-poster-initial-preview.png", - "key": "MD5E-s534448--fe1bad7e693a547b0280d4dbc4508891.png", - "scope": "preserved_archive_asset", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s534448--fe1bad7e693a547b0280d4dbc4508891.png", - "bytes": 534448, - "sha256": "11fe229783480c4eed477a348a4969b9f3d54f4e7a9bbbbbb76026c25cbd1894", - "http_status": 200, - "received_bytes": 534448, - "received_sha256": "11fe229783480c4eed477a348a4969b9f3d54f4e7a9bbbbbb76026c25cbd1894", - "passed": true - } - ] - }, - "scope": "Public poster assets only. No transcript or execution-log payload was uploaded." -} diff --git a/2026-usrse/stamped-ai-study/exports/html-audit.json b/2026-usrse/stamped-ai-study/exports/html-audit.json index a3fa8ae9..bbdc9306 100644 --- a/2026-usrse/stamped-ai-study/exports/html-audit.json +++ b/2026-usrse/stamped-ai-study/exports/html-audit.json @@ -4,7 +4,7 @@ "height": 4224 }, "minimum_text_px": 32, - "text_node_count": 156, + "text_node_count": 240, "small": [], "outside": [], "regionOverflow": [], @@ -17,43 +17,65 @@ "loaded": true, "href": "https://dev.centerforopenneuroscience.org/", "rect": { - "x": 1798.453125, - "y": 129.328125, - "width": 840, - "height": 259.328125 + "x": 1914.171875, + "y": 139.484375, + "width": 690, + "height": 213.03125 } }, { "src": "assets/stamped-qr-poster.svg", "loaded": true, - "href": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "href": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", "rect": { "x": 3926.984375, - "y": 116.203125, + "y": 121.59375, "width": 204, "height": 204 } }, + { + "src": "figures/narps-group-map.svg", + "loaded": true, + "href": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", + "rect": { + "x": 1270.21875, + "y": 1420, + "width": 1328.609375, + "height": 629.84375 + } + }, + { + "src": "figures/narps-analysis-variability.svg", + "loaded": true, + "href": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", + "rect": { + "x": 1270.21875, + "y": 2594.6875, + "width": 1328.609375, + "height": 757.796875 + } + }, { "src": "assets/stamped-qr-study.svg", "loaded": true, - "href": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "href": "https://github.com/leej3/stamped-in-practice", "rect": { - "x": 2548.328125, - "y": 2391.609375, - "width": 204, - "height": 204 + "x": 3625, + "y": 3640.59375, + "width": 180, + "height": 180 } }, { "src": "assets/stamped-qr-skills.svg", "loaded": true, - "href": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "href": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "rect": { - "x": 3926.984375, - "y": 1481.984375, - "width": 204, - "height": 204 + "x": 3913, + "y": 3640.59375, + "width": 180, + "height": 180 } }, { @@ -61,10 +83,10 @@ "loaded": true, "href": "https://dev.centerforopenneuroscience.org/", "rect": { - "x": 2332.8125, - "y": 3917.578125, - "width": 204, - "height": 204 + "x": 2271.203125, + "y": 3955.09375, + "width": 155, + "height": 155 } }, { @@ -72,8 +94,8 @@ "loaded": true, "href": "https://pbs.dartmouth.edu/", "rect": { - "x": 2924.71875, - "y": 3968.671875, + "x": 2895.078125, + "y": 3981.6875, "width": 126, "height": 136 } @@ -83,8 +105,8 @@ "loaded": true, "href": "https://www.repronim.org/", "rect": { - "x": 3777.625, - "y": 3971.96875, + "x": 3777.640625, + "y": 3984.984375, "width": 146, "height": 140 } @@ -93,286 +115,144 @@ "qrs": [ { "name": "poster", - "url": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", "rect": { "x": 3926.984375, - "y": 116.203125, + "y": 121.59375, "width": 204, "height": 204 } }, { "name": "study", - "url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "url": "https://github.com/leej3/stamped-in-practice", "rect": { - "x": 2548.328125, - "y": 2391.609375, - "width": 204, - "height": 204 + "x": 3625, + "y": 3640.59375, + "width": 180, + "height": 180 } }, { "name": "skills", - "url": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "rect": { - "x": 3926.984375, - "y": 1481.984375, - "width": 204, - "height": 204 + "x": 3913, + "y": 3640.59375, + "width": 180, + "height": 180 } }, { "name": "con", "url": "https://dev.centerforopenneuroscience.org/", "rect": { - "x": 2332.8125, - "y": 3917.578125, - "width": 204, - "height": 204 + "x": 2271.203125, + "y": 3955.09375, + "width": 155, + "height": 155 } } ], "links": [ "https://dev.centerforopenneuroscience.org/", - "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", - "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/REPORT.md", - "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", - "https://github.com/OpenNeuroDatasets/ds000005/tree/b094fc2f41487f92d382a1a432165ae58caae386", - "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research/mixed-gambles-design", - "https://github.com/con/skills/tree/codex/stamped-research-skills", - "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-01/assessment.json", - "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json", - "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json", - "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json", - "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json", + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", + "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills", + "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/do-full-research-loop/SKILL.md", + "https://github.com/con/skills/blob/b86e37ff9115e37541fd47aca73f49e13b5110bb/skills/assess-alignment-with-stamped-principles/SKILL.md", + "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/align-with-stamped-principles/SKILL.md", + "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/create-stamped-project/SKILL.md", + "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", + "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", + "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/sources.json", + "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/report.md", + "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", + "https://github.com/leej3/stamped-in-practice", + "https://github.com/stamped-principles/stamped-paper", + "https://doi.org/10.1038/s41586-020-2314-9", + "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", + "https://neurovault.org/collections/4932/", + "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/study-task.md", + "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", + "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", + "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", + "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", + "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", + "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", + "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", + "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", + "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", + "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", + "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", + "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", + "https://github.com/leej3/stamped-in-practice/tree/main/iterations", + "https://github.com/con/skills/commits/codex/pr26-operational-environment/", + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "https://pbs.dartmouth.edu/", "https://www.repronim.org/" ], "blocks": [ - { - "element": "SECTION", - "class": "property-section", - "rect": { - "x": 88, - "y": 792, - "width": 2669.328125, - "height": 1507.609375 - } - }, - { - "element": "TABLE", - "class": "property-table", - "rect": { - "x": 88, - "y": 1016.609375, - "width": 2669.328125, - "height": 1174.625 - } - }, - { - "element": "TR", - "class": "", - "rect": { - "x": 88, - "y": 1106.109375, - "width": 2669.328125, - "height": 148.34375 - } - }, - { - "element": "TR", - "class": "", - "rect": { - "x": 88, - "y": 1254.453125, - "width": 2669.328125, - "height": 148.34375 - } - }, - { - "element": "TR", - "class": "", - "rect": { - "x": 88, - "y": 1402.796875, - "width": 2669.328125, - "height": 148.34375 - } - }, - { - "element": "TR", - "class": "", - "rect": { - "x": 88, - "y": 1551.140625, - "width": 2669.328125, - "height": 148.34375 - } - }, - { - "element": "TR", - "class": "", - "rect": { - "x": 88, - "y": 1699.484375, - "width": 2669.328125, - "height": 148.34375 - } - }, - { - "element": "TR", - "class": "", - "rect": { - "x": 88, - "y": 1847.828125, - "width": 2669.328125, - "height": 148.34375 - } - }, - { - "element": "TR", - "class": "", - "rect": { - "x": 88, - "y": 1996.171875, - "width": 2669.328125, - "height": 194.0625 - } - }, - { - "element": "SECTION", - "class": "stages-section", - "rect": { - "x": 88, - "y": 2351.609375, - "width": 2669.328125, - "height": 1354.8125 - } - }, - { - "element": "DIV", - "class": "section-heading", - "rect": { - "x": 88, - "y": 2391.609375, - "width": 2669.328125, - "height": 285.59375 - } - }, - { - "element": "FIGURE", - "class": "stages-figure", - "rect": { - "x": 88, - "y": 2834.359375, - "width": 2669.328125, - "height": 390.1875 - } - }, - { - "element": "A", - "class": "image-link stage-cards", - "rect": { - "x": 88, - "y": 2834.359375, - "width": 2669.328125, - "height": 325 - } - }, - { - "element": "SECTION", - "class": "scientific-results", - "rect": { - "x": 88, - "y": 3252.546875, - "width": 2669.328125, - "height": 317.28125 - } - }, - { - "element": "DIV", - "class": "scope-note", - "rect": { - "x": 88, - "y": 3605.828125, - "width": 2669.328125, - "height": 100.59375 - } - }, { "element": "SECTION", "class": "", "rect": { - "x": 2843.328125, - "y": 792, - "width": 1292.65625, - "height": 610.984375 - } - }, - { - "element": "SECTION", - "class": "value-section skills-section", - "rect": { - "x": 2843.328125, - "y": 1446.984375, - "width": 1292.65625, - "height": 320.59375 - } - }, - { - "element": "SECTION", - "class": "measurement-section", - "rect": { - "x": 2843.328125, - "y": 1811.578125, - "width": 1292.65625, - "height": 346.671875 + "x": 2690.828125, + "y": 712, + "width": 1445.15625, + "height": 452.5 } }, { "element": "SECTION", - "class": "result-box", + "class": "results-matrix", "rect": { - "x": 2843.328125, - "y": 2202.25, - "width": 1292.65625, - "height": 948.953125 + "x": 2690.828125, + "y": 1174.5, + "width": 1445.15625, + "height": 1740 } }, { "element": "SECTION", - "class": "failure-summary", + "class": "assessment-key", "rect": { - "x": 2843.328125, - "y": 3195.203125, - "width": 1292.65625, - "height": 235.921875 + "x": 2690.828125, + "y": 2944.5, + "width": 1445.15625, + "height": 331.71875 } }, { "element": "SECTION", - "class": "callout", + "class": "ruled revision-section", "rect": { - "x": 2843.328125, - "y": 3440.75, - "width": 1292.65625, - "height": 409.25 + "x": 2690.828125, + "y": 3306.21875, + "width": 1445.15625, + "height": 261.15625 } } ], "browser": "151.0.7922.34", - "created_utc": "2026-10-15T00:24:51.520Z", + "created_utc": "2026-10-16T03:53:32.322Z", "source_sha256": { - "index.html": "527f2eaca6e412d66d56969d8bc105efa3336f46fd1a2b4653c66f6a8d66f171", + "index.html": "e1d36d6ace870af797b0e749c1e524cc0fc1295ad22fa5a8b1739738feade758", "template.css": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", - "poster.css": "878332525bbaa508869b86c74fba4ca69248dea42f65c2f9e7683ca69dc397b4", - "build-poster.cjs": "113e2fc4ecff9d73acb94c7e3faa478944a81f3802b5ad33502f98b99eebe13a", + "poster.css": "4e890983412328ea10245eed3edbde7509b3a6d9b63157c27a708ddb177ccff4", + "build-poster.cjs": "37b4c7643adeeba6630fb42de1a6a986e0f12420f8b5bc733d5eee7014d4f086", "verify-pdf.py": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", "verify-links.py": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", - "make-logo-qrs.py": "c73a0d7b5468ed5b1a16424ac475fac0bf834ef129318abcb54e515d4179d47f", - "source-manifest.json": "113a23cd2d05214fb3aad567a47498ea64684e3fba627495c02c75c82dfc15d9", - "update-results.py": "7e6db439ac299178942cfc104930529e22a23d5e4d69f731dda914a4f17626cc", - "results-data.json": "24d7e20bfe07ade368ffb13b1267e840e4ef833df75d5fee6fd61da7e2406ab9" + "make-logo-qrs.py": "7d7b2cd508a25f0e15d7674caee7061aaacf6d5eb32d9371df8433f94c42257c", + "source-manifest.json": "4690c150b8f52f8311d4dbb83caceea4abeb753513b104c9dc9ca33c8a90f3ea", + "update-results.py": "434b10418ad12985c75c9758d99a5b753fab084a5576183d197530788cda2bea", + "data/assessment-snapshot.json": "462f1c3cd91b93c50a7a296b3360915968e6881b90c8d75c7d2becb76dae4688", + "figures/narps-figure-manifest.json": "6c60b03e457464bda8ac4b3d0559bf9eec0260ffd851b627ef0ee174fd0a0f6b", + "scripts/render-narps-figures.py": "5c5e184cd423cabf020ec6936d8bbaf3141573786c5ed7b0f7d1ab68af9446d1", + "pixi.toml": "5add8575728f46c680d9b1ee1a3182176ef9adb2b584c143d8a5bffcc93f2bfe", + "package-lock.json": "c4a27d1390a90be1fed6dd2c6f713f8b9ecfb49f5721656de4db136af2307cdc" }, "errors": [] } diff --git a/2026-usrse/stamped-ai-study/exports/link-audit.json b/2026-usrse/stamped-ai-study/exports/link-audit.json index 050a6241..0892a9d2 100644 --- a/2026-usrse/stamped-ai-study/exports/link-audit.json +++ b/2026-usrse/stamped-ai-study/exports/link-audit.json @@ -1,107 +1,298 @@ { - "html_audit_sha256": "2660d3009197f7bb407f086ecd3f4dc6b381826618d8c5039e239105ddccdba0", - "checked_at": "2026-10-14T23:27:31.912093+00:00", + "html_audit_sha256": "d93d93b6df686dd95ea97264cf99df0b820834661edd4b861af2e3aa6bcd8fea", + "checked_at": "2026-10-16T03:51:45.060633+00:00", "authentication": "none", "results": [ { "url": "https://dev.centerforopenneuroscience.org/", - "checked_at": "2026-10-14T23:27:29.382156+00:00", + "checked_at": "2026-10-16T03:51:38.087872+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://dev.centerforopenneuroscience.org/", "passed": true }, { - "url": "https://github.com/OpenNeuroDatasets/ds000005/tree/b094fc2f41487f92d382a1a432165ae58caae386", - "checked_at": "2026-10-14T23:27:29.382518+00:00", + "url": "https://doi.org/10.1038/s41586-020-2314-9", + "checked_at": "2026-10-16T03:51:38.088313+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/OpenNeuroDatasets/ds000005/tree/b094fc2f41487f92d382a1a432165ae58caae386", + "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=cc35ed6d-a124-45ec-b35c-52d546440458", "passed": true }, { - "url": "https://github.com/con/skills/tree/codex/stamped-research-skills", - "checked_at": "2026-10-14T23:27:29.382598+00:00", + "url": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", + "checked_at": "2026-10-16T03:51:38.088428+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "final_url": "https://openneuro.org/datasets/ds001734/versions/1.0.4", "passed": true }, { - "url": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", - "checked_at": "2026-10-14T23:27:29.382646+00:00", + "url": "https://github.com/con/skills/blob/b86e37ff9115e37541fd47aca73f49e13b5110bb/skills/assess-alignment-with-stamped-principles/SKILL.md", + "checked_at": "2026-10-16T03:51:38.088507+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "final_url": "https://github.com/con/skills/blob/b86e37ff9115e37541fd47aca73f49e13b5110bb/skills/assess-alignment-with-stamped-principles/SKILL.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/REPORT.md", - "checked_at": "2026-10-14T23:27:29.648254+00:00", + "url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/align-with-stamped-principles/SKILL.md", + "checked_at": "2026-10-16T03:51:38.337533+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/REPORT.md", + "final_url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/align-with-stamped-principles/SKILL.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-01/assessment.json", - "checked_at": "2026-10-14T23:27:30.304170+00:00", + "url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/create-stamped-project/SKILL.md", + "checked_at": "2026-10-16T03:51:38.710471+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-01/assessment.json", + "final_url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/create-stamped-project/SKILL.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json", - "checked_at": "2026-10-14T23:27:30.334948+00:00", + "url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/do-full-research-loop/SKILL.md", + "checked_at": "2026-10-16T03:51:38.820619+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json", + "final_url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/do-full-research-loop/SKILL.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json", - "checked_at": "2026-10-14T23:27:30.381742+00:00", + "url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", + "checked_at": "2026-10-16T03:51:38.868509+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json", + "final_url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", "passed": true }, { - "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json", - "checked_at": "2026-10-14T23:27:30.474042+00:00", + "url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", + "checked_at": "2026-10-16T03:51:39.186536+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json", + "final_url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", "passed": true }, { - "url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json", - "checked_at": "2026-10-14T23:27:30.883733+00:00", + "url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills", + "checked_at": "2026-10-16T03:51:39.329673+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-ai-research/blob/codex/stamped-poster-study/research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json", + "final_url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills", "passed": true }, { - "url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", - "checked_at": "2026-10-14T23:27:30.982886+00:00", + "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", + "checked_at": "2026-10-16T03:51:39.467334+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "final_url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "passed": true }, { - "url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research/mixed-gambles-design", - "checked_at": "2026-10-14T23:27:30.988948+00:00", + "url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", + "checked_at": "2026-10-16T03:51:39.700664+00:00", + "method": "HEAD", + "http_status": 404, + "passed": false + }, + { + "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", + "checked_at": "2026-10-16T03:51:39.744797+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice", + "checked_at": "2026-10-16T03:51:39.852570+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", + "checked_at": "2026-10-16T03:51:40.122696+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/report.md", + "checked_at": "2026-10-16T03:51:40.267451+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/report.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", + "checked_at": "2026-10-16T03:51:40.286823+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", + "checked_at": "2026-10-16T03:51:40.354573+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", + "checked_at": "2026-10-16T03:51:40.764917+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/sources.json", + "checked_at": "2026-10-16T03:51:40.765584+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/sources.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/study-task.md", + "checked_at": "2026-10-16T03:51:40.794815+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/study-task.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", + "checked_at": "2026-10-16T03:51:40.837905+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", + "checked_at": "2026-10-16T03:51:41.268301+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", + "checked_at": "2026-10-16T03:51:41.291840+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", + "checked_at": "2026-10-16T03:51:41.313678+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", + "checked_at": "2026-10-16T03:51:41.318552+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", + "checked_at": "2026-10-16T03:51:41.694918+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", + "checked_at": "2026-10-16T03:51:41.700598+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", + "checked_at": "2026-10-16T03:51:41.796552+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "checked_at": "2026-10-16T03:51:41.802692+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "checked_at": "2026-10-16T03:51:42.149927+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "checked_at": "2026-10-16T03:51:42.242859+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", + "checked_at": "2026-10-16T03:51:42.269848+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", + "checked_at": "2026-10-16T03:51:42.279838+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", + "passed": true + }, + { + "url": "https://github.com/stamped-principles/stamped-paper", + "checked_at": "2026-10-16T03:51:42.651155+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/stamped-principles/stamped-paper", + "passed": true + }, + { + "url": "https://neurovault.org/collections/4932/", + "checked_at": "2026-10-16T03:51:42.678609+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research/mixed-gambles-design", + "final_url": "https://neurovault.org/collections/4932/", "passed": true }, { "url": "https://pbs.dartmouth.edu/", - "checked_at": "2026-10-14T23:27:31.002894+00:00", + "checked_at": "2026-10-16T03:51:42.678779+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://pbs.dartmouth.edu/", @@ -109,13 +300,13 @@ }, { "url": "https://www.repronim.org/", - "checked_at": "2026-10-14T23:27:31.309800+00:00", + "checked_at": "2026-10-16T03:51:42.843094+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://repronim.org/", "passed": true } ], - "all_passed": true, + "all_passed": false, "scope": "Public destination HTTP availability; annex content integrity is checked separately." } diff --git a/2026-usrse/stamped-ai-study/exports/pdf-audit.json b/2026-usrse/stamped-ai-study/exports/pdf-audit.json index ab6812d9..32fba25f 100644 --- a/2026-usrse/stamped-ai-study/exports/pdf-audit.json +++ b/2026-usrse/stamped-ai-study/exports/pdf-audit.json @@ -1,5 +1,5 @@ { - "pdf_sha256": "ff238582851dfcf54a7e3be92c955e99644bd09d5eeed34f2c9c0f4ec969f68d", + "pdf_sha256": "afb037aea26970685b2c4288b8329fb627ca2db4a0db430cd16b93a3176fdd56", "page_count": 1, "page_points": [ 3168.0, @@ -8,42 +8,42 @@ "minimum_html_text_px": 32, "minimum_html_text_pt": 24.0, "minimum_pdf_text_pt": 24.0, - "inspected_pdf_text_runs": 184, - "link_annotation_count": 17, - "unique_expected_links": 14, + "inspected_pdf_text_runs": 321, + "link_annotation_count": 74, + "unique_expected_links": 38, "missing_links": [], "raster_dpi": 150, "qr_results": [ { "name": "poster", - "expected": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", + "expected": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", "decoded": [ - "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study" + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" ], "decoded_rotated": [ - "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study" + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" ], "passed": true }, { "name": "study", - "expected": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", + "expected": "https://github.com/leej3/stamped-in-practice", "decoded": [ - "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research" + "https://github.com/leej3/stamped-in-practice" ], "decoded_rotated": [ - "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research" + "https://github.com/leej3/stamped-in-practice" ], "passed": true }, { "name": "skills", - "expected": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "expected": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "decoded": [ - "https://github.com/con/skills/tree/codex/stamped-research-skills" + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" ], "decoded_rotated": [ - "https://github.com/con/skills/tree/codex/stamped-research-skills" + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" ], "passed": true }, diff --git a/2026-usrse/stamped-ai-study/exports/pdf-preview.png b/2026-usrse/stamped-ai-study/exports/pdf-preview.png index 8600de7c..a16dcfc4 120000 --- a/2026-usrse/stamped-ai-study/exports/pdf-preview.png +++ b/2026-usrse/stamped-ai-study/exports/pdf-preview.png @@ -1 +1 @@ -../../../.git/annex/objects/xW/7q/MD5E-s1024548--93424049cf2a727fe3b3e8ea8d21337d.png/MD5E-s1024548--93424049cf2a727fe3b3e8ea8d21337d.png \ No newline at end of file +../../../.git/annex/objects/9G/GQ/MD5E-s1002213--7c164b507e229ef566739e02f5cc3269.png/MD5E-s1002213--7c164b507e229ef566739e02f5cc3269.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/exports/qr-source/decode-report.json b/2026-usrse/stamped-ai-study/exports/qr-source/decode-report.json new file mode 100644 index 00000000..d2a9b454 --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/qr-source/decode-report.json @@ -0,0 +1,1406 @@ +[ + { + "name": "poster", + "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", + "file": "/Users/johnlee/.local/share/wt-utils/worktrees/38ff/talks/2026-usrse/stamped-ai-study/assets/stamped-qr-poster.svg", + "qr_version": 9, + "error_correction": "H", + "modules_including_border": 61, + "quiet_border_modules": 4, + "logo_source": "../orinoco-lite/assets/con-logo-outlined.svg", + "logo_width_fraction_of_body": 0.42, + "file_bytes": 72488, + "logo_pad_percent_of_body_area": 10.92, + "checks": [ + { + "pixels": 144, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 144, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 177, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 177, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 177, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 177, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 180, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 180, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 180, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 180, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 200, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 200, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 200, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 200, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 210, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 210, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 210, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 210, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 220, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 220, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 220, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 220, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 240, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 240, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 240, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 240, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 266, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 266, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 266, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 266, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 354, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 354, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 354, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 354, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 531, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 531, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 531, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 531, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 720, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 720, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 720, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + }, + { + "pixels": 720, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study" + ] + } + ] + }, + { + "name": "study", + "url": "https://github.com/leej3/stamped-in-practice", + "file": "/Users/johnlee/.local/share/wt-utils/worktrees/38ff/talks/2026-usrse/stamped-ai-study/assets/stamped-qr-study.svg", + "qr_version": 5, + "error_correction": "H", + "modules_including_border": 45, + "quiet_border_modules": 4, + "logo_source": "../orinoco-lite/assets/con-logo-outlined.svg", + "logo_width_fraction_of_body": 0.42, + "file_bytes": 67623, + "logo_pad_percent_of_body_area": 12.08, + "checks": [ + { + "pixels": 144, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 144, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 177, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 177, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 177, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 177, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 180, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 180, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 180, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 180, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 200, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 200, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 200, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 200, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 210, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 210, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 210, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 210, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 220, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 220, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 220, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 220, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 240, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 240, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 240, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 240, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 266, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 266, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 266, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 266, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 354, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 354, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 354, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 354, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 531, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 531, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 531, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 531, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 720, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 720, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 720, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + }, + { + "pixels": 720, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/leej3/stamped-in-practice" + ] + } + ] + }, + { + "name": "skills", + "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", + "file": "/Users/johnlee/.local/share/wt-utils/worktrees/38ff/talks/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg", + "qr_version": 8, + "error_correction": "H", + "modules_including_border": 57, + "quiet_border_modules": 4, + "logo_source": "../orinoco-lite/assets/con-logo-outlined.svg", + "logo_width_fraction_of_body": 0.42, + "file_bytes": 71083, + "logo_pad_percent_of_body_area": 11.14, + "checks": [ + { + "pixels": 144, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 144, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 177, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 177, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 177, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 177, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 180, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 180, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 180, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 180, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 200, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 200, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 200, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 200, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 210, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 210, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 210, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 210, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 220, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 220, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 220, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 220, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 240, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 240, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 240, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 240, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 266, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 266, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 266, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 266, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 354, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 354, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 354, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 354, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 531, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 531, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 531, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 531, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 720, + "variant": "original", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 720, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 720, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + }, + { + "pixels": 720, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + ] + } + ] + }, + { + "name": "con", + "url": "https://dev.centerforopenneuroscience.org/", + "file": "/Users/johnlee/.local/share/wt-utils/worktrees/38ff/talks/2026-usrse/orinoco-lite/assets/orinoco-qr-con.svg", + "qr_version": 5, + "error_correction": "H", + "modules_including_border": 45, + "quiet_border_modules": 4, + "logo_source": "../orinoco-lite/assets/con-logo-outlined.svg", + "logo_width_fraction_of_body": 0.42, + "file_bytes": 67605, + "logo_pad_percent_of_body_area": 12.08, + "checks": [ + { + "pixels": 144, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 144, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 177, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 177, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 177, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 177, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 180, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 180, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 180, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 180, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 200, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 200, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 200, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 200, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 210, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 210, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 210, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 210, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 220, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 220, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 220, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 220, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 240, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 240, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 240, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 240, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 266, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 266, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 266, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 266, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 354, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 354, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 354, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 354, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 531, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 531, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 531, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 531, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 720, + "variant": "original", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 720, + "variant": "rotated-90", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 720, + "variant": "grayscale-softened", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + }, + { + "pixels": 720, + "variant": "rotated-13", + "passed": true, + "decoded": [ + "https://dev.centerforopenneuroscience.org/" + ] + } + ] + } +] diff --git a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json new file mode 100644 index 00000000..9f0800b2 --- /dev/null +++ b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json @@ -0,0 +1,136 @@ +{ + "checked_utc": "2026-10-16T03:54:01.994569+00:00", + "authentication": "none", + "method": "download and compare full payload SHA-256", + "files": [ + { + "path": "assets/stamped-qr-skills.svg", + "key": "MD5E-s71083--8f66e387d1e50c94a14c747cc1a363ab.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s71083--8f66e387d1e50c94a14c747cc1a363ab.svg", + "sha256": "3256be5b0c21a68881a5259ac190ccf30684d8bc25ae8b2d3085fbcc8687a03c", + "bytes": 71083, + "passed": true + }, + { + "path": "assets/stamped-qr-poster.svg", + "key": "MD5E-s72488--fcda447d1d4515e37ed70c0359039be9.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s72488--fcda447d1d4515e37ed70c0359039be9.svg", + "sha256": "28439d899807c61b06977e9359fc6ec6766d7fb78e504c282389d9ca9a90dbdc", + "bytes": 72488, + "passed": true + }, + { + "path": "assets/stamped-qr-study.svg", + "key": "MD5E-s67623--fad8037a2c4eac1c81b0f96a75bb69e2.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s67623--fad8037a2c4eac1c81b0f96a75bb69e2.svg", + "sha256": "771b6b0ca8b7efac41a536648d8f17f4d4ff63fcc8b5d4d2a6ae51f7db0a891e", + "bytes": 67623, + "passed": true + }, + { + "path": "data/narps-2026-10-15/maps/one_sample_t.nii.gz", + "key": "MD5E-s772808--30da57fa1b8cc7a318c3b4f5edd628b6.nii.gz", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s772808--30da57fa1b8cc7a318c3b4f5edd628b6.nii.gz", + "sha256": "75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b", + "bytes": 772808, + "passed": true + }, + { + "path": "data/narps-2026-10-15/maps/common_brain_mask.nii.gz", + "key": "MD5E-s23179--b25609ef0de74955022971bf2597b668.nii.gz", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s23179--b25609ef0de74955022971bf2597b668.nii.gz", + "sha256": "e72a50e0531fd4e353fff55c81b2790319aebe2cb30aba305fbf51b7394e5ff1", + "bytes": 23179, + "passed": true + }, + { + "path": "data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz", + "key": "MD5E-s4192--20ebf663b35d48e2ea0f235518973796.nii.gz", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s4192--20ebf663b35d48e2ea0f235518973796.nii.gz", + "sha256": "e4fcc6042c290ac029f16a5741a15e84c7a0072e8907572edef1cd69a76d78ac", + "bytes": 4192, + "passed": true + }, + { + "path": "data/narps-2026-10-15/maps/anatomical-context.nii.gz", + "key": "MD5E-s207544--035d9295baaa7a578da078948c0807c1.nii.gz", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s207544--035d9295baaa7a578da078948c0807c1.nii.gz", + "sha256": "a110f8454d04756a9eef6dfae4750f75629d96d3e5e6f348a4c71d28495bcbca", + "bytes": 207544, + "passed": true + }, + { + "path": "data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", + "key": "MD5E-s4607--e6ad8475cbac58e6f2cfd22bcf28dc70.nii.gz", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s4607--e6ad8475cbac58e6f2cfd22bcf28dc70.nii.gz", + "sha256": "b520b7442d546efa2aa7bbc0fa1c72beab5c77fee3c0d4e1d1901f16e5fd4337", + "bytes": 4607, + "passed": true + }, + { + "path": "exports/pdf-preview.png", + "key": "MD5E-s1002213--7c164b507e229ef566739e02f5cc3269.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1002213--7c164b507e229ef566739e02f5cc3269.png", + "sha256": "8b2d643073d5bbd5b7b1545f1e394e028639582bb2e62b20fc824d6342401114", + "bytes": 1002213, + "passed": true + }, + { + "path": "exports/stamped-ai-poster.pdf", + "key": "MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf", + "sha256": "afb037aea26970685b2c4288b8329fb627ca2db4a0db430cd16b93a3176fdd56", + "bytes": 764394, + "passed": true + }, + { + "path": "../orinoco-lite/assets/con-logo-outlined.svg", + "key": "MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", + "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", + "bytes": 125811, + "passed": true + }, + { + "path": "../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", + "key": "MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", + "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", + "bytes": 379034, + "passed": true + }, + { + "path": "../orinoco-lite/assets/repronim_logo.svg", + "key": null, + "url": "https://raw.githubusercontent.com/con/talks/efb1b059ffdf70d4e13f40cd5085aff6500e5269/2026-usrse/orinoco-lite/assets/repronim_logo.svg", + "sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", + "bytes": 33939, + "passed": true + }, + { + "path": "../orinoco-lite/assets/orinoco-qr-con.svg", + "key": null, + "url": "https://raw.githubusercontent.com/con/talks/efb1b059ffdf70d4e13f40cd5085aff6500e5269/2026-usrse/orinoco-lite/assets/orinoco-qr-con.svg", + "sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", + "bytes": 67605, + "passed": true + }, + { + "path": "figures/narps-analysis-variability.png", + "key": "MD5E-s147072--5cf081f3840d7ba45268688b8aa41778.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s147072--5cf081f3840d7ba45268688b8aa41778.png", + "sha256": "3ac62e1df7e992bcacbd7c15a9fe845b426152c54904c931a3c1c259e855bc75", + "bytes": 147072, + "passed": true + }, + { + "path": "figures/narps-group-map.png", + "key": "MD5E-s139047--ccc9a985bf8d93427535348181fbadf8.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s139047--ccc9a985bf8d93427535348181fbadf8.png", + "sha256": "851c93ad7fa51753a9bdc26b556dbd36b1487bef80b92237db8bdffbf2e8c799", + "bytes": 139047, + "passed": true + } + ], + "all_passed": true +} diff --git a/2026-usrse/stamped-ai-study/exports/source-integrity.json b/2026-usrse/stamped-ai-study/exports/source-integrity.json deleted file mode 100644 index 8020756c..00000000 --- a/2026-usrse/stamped-ai-study/exports/source-integrity.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "handoff_manifest_sha256": "9e2a82a7bc88f2cfc8770a47de1c4f4966150bcde583f96a733d5abcf3b425a8", - "all_19_verified_before_copy": true, - "scientific_and_build_sources_unchanged": true, - "documentation_change": "README adapted for final retrieval, licenses, superseded initial layout and publication holds.", - "files": [ - { - "path": "README.md", - "handoff_sha256": "507efd7014b44e6f11ab5af1800e2b4a1841e499b04d3cb80b37cace05379087", - "delivered_sha256": "380f5d16dee56641fcfcf20a26b4ffc871ac14e5908750a2760f879534bfb61a", - "bytes": 8206, - "matches_handoff": false - }, - { - "path": "assets/con-ccn-dartmouth-letterhead.svg", - "handoff_sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", - "delivered_sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", - "bytes": 379034, - "matches_handoff": true - }, - { - "path": "assets/con-logo-outlined.svg", - "handoff_sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", - "delivered_sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", - "bytes": 125811, - "matches_handoff": true - }, - { - "path": "assets/repronim_logo.svg", - "handoff_sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", - "delivered_sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", - "bytes": 33939, - "matches_handoff": true - }, - { - "path": "assets/stamped-qr-con.svg", - "handoff_sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", - "delivered_sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", - "bytes": 67605, - "matches_handoff": true - }, - { - "path": "assets/stamped-qr-poster.svg", - "handoff_sha256": "a21e0078d98f2ecc05ac5afcb404f459814df0fb8b8be32d56fce4a22f11f04e", - "delivered_sha256": "a21e0078d98f2ecc05ac5afcb404f459814df0fb8b8be32d56fce4a22f11f04e", - "bytes": 72489, - "matches_handoff": true - }, - { - "path": "assets/stamped-qr-skills.svg", - "handoff_sha256": "07e0002ae67f6a491ac421b76386e7ea7cf957d76b1c57ef7b5c798734b8d324", - "delivered_sha256": "07e0002ae67f6a491ac421b76386e7ea7cf957d76b1c57ef7b5c798734b8d324", - "bytes": 69859, - "matches_handoff": true - }, - { - "path": "assets/stamped-qr-study.svg", - "handoff_sha256": "304f7fe5a93d693824d00b1ee2f14b25c5e6f6d291b129aee44b35f10e77496a", - "delivered_sha256": "304f7fe5a93d693824d00b1ee2f14b25c5e6f6d291b129aee44b35f10e77496a", - "bytes": 73018, - "matches_handoff": true - }, - { - "path": "build-poster.cjs", - "handoff_sha256": "113e2fc4ecff9d73acb94c7e3faa478944a81f3802b5ad33502f98b99eebe13a", - "delivered_sha256": "113e2fc4ecff9d73acb94c7e3faa478944a81f3802b5ad33502f98b99eebe13a", - "bytes": 7205, - "matches_handoff": true - }, - { - "path": "index.html", - "handoff_sha256": "59aa1d1c3f1cedd69000e7acb138c84a2c39ec379d7db0c1309f1e7ccd028436", - "delivered_sha256": "59aa1d1c3f1cedd69000e7acb138c84a2c39ec379d7db0c1309f1e7ccd028436", - "bytes": 16412, - "matches_handoff": true - }, - { - "path": "make-logo-qrs.py", - "handoff_sha256": "0ebb386cb998bbf3a872848627e5b5066ac3da10733242897613ad5f67a49858", - "delivered_sha256": "0ebb386cb998bbf3a872848627e5b5066ac3da10733242897613ad5f67a49858", - "bytes": 10134, - "matches_handoff": true - }, - { - "path": "poster.css", - "handoff_sha256": "878332525bbaa508869b86c74fba4ca69248dea42f65c2f9e7683ca69dc397b4", - "delivered_sha256": "878332525bbaa508869b86c74fba4ca69248dea42f65c2f9e7683ca69dc397b4", - "bytes": 5379, - "matches_handoff": true - }, - { - "path": "results-data.json", - "handoff_sha256": "24d7e20bfe07ade368ffb13b1267e840e4ef833df75d5fee6fd61da7e2406ab9", - "delivered_sha256": "24d7e20bfe07ade368ffb13b1267e840e4ef833df75d5fee6fd61da7e2406ab9", - "bytes": 8330, - "matches_handoff": true - }, - { - "path": "results-placeholder.json", - "handoff_sha256": "b58ecb51b49f778cf3da7739edd7ce95e8094a306c7f14e2325e332e23e5b5c1", - "delivered_sha256": "b58ecb51b49f778cf3da7739edd7ce95e8094a306c7f14e2325e332e23e5b5c1", - "bytes": 2399, - "matches_handoff": true - }, - { - "path": "source-manifest.json", - "handoff_sha256": "d2de681dcd1b8564e155f6c438ff37a8215929c992908e398c3752712f22419e", - "delivered_sha256": "d2de681dcd1b8564e155f6c438ff37a8215929c992908e398c3752712f22419e", - "bytes": 1353, - "matches_handoff": true - }, - { - "path": "template.css", - "handoff_sha256": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", - "delivered_sha256": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", - "bytes": 9470, - "matches_handoff": true - }, - { - "path": "update-results.py", - "handoff_sha256": "7e6db439ac299178942cfc104930529e22a23d5e4d69f731dda914a4f17626cc", - "delivered_sha256": "7e6db439ac299178942cfc104930529e22a23d5e4d69f731dda914a4f17626cc", - "bytes": 13739, - "matches_handoff": true - }, - { - "path": "verify-links.py", - "handoff_sha256": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", - "delivered_sha256": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", - "bytes": 3122, - "matches_handoff": true - }, - { - "path": "verify-pdf.py", - "handoff_sha256": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", - "delivered_sha256": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", - "bytes": 4891, - "matches_handoff": true - } - ], - "scope": "Historical initial handoff record; entries preserve their original paths and hashes. Current shared asset references and storage are verified in asset-reuse.json." -} diff --git a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf index b0cf8df7..16056839 120000 --- a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf +++ b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf @@ -1 +1 @@ -../../../.git/annex/objects/4Z/ZZ/MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf/MD5E-s694949--7de393e12e04e7a63f89db7c5334b360.pdf \ No newline at end of file +../../../.git/annex/objects/mw/2q/MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf/MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.png b/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.png new file mode 120000 index 00000000..d704a6e6 --- /dev/null +++ b/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.png @@ -0,0 +1 @@ +../../../.git/annex/objects/km/f9/MD5E-s147072--5cf081f3840d7ba45268688b8aa41778.png/MD5E-s147072--5cf081f3840d7ba45268688b8aa41778.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.svg b/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.svg new file mode 100644 index 00000000..2c3381c9 --- /dev/null +++ b/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.svg @@ -0,0 +1,386 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.11.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 180 + + + + + + + + + 195 + + + + + + + + + 210 + + + + Search mask + (1,000 voxels) + + + + + + + + + + + + + + + 01 + + + + + + + + 02 + + + + + + + + + + + 03 + + + + + + + + 05 + + + + + + + + 06 + + + + + + + + 07 + + + + + + + + 08 + + + + + + + + 09 + + + Result + slot + + + + + + + + + + + Baseline + + + + + + Discover + general + + + + + + Discover + science + + + + + + STAMPED + explicit + + + + + + + + + + + 0 + + + + + + + + + 12 + + + + + + + + + 24 + + + + Positive FWE + voxels + + + + + + + + + + + + 01 + + + + + + + + 02 + + + + + + + + 03 + + + + + + + + 05 + + + + + + + + 06 + + + + + + + + 07 + + + + + + + + 08 + + + + + + + + 09 + + + Result + slot + + + + + + + + + + + + + Bonferroni + + + + + + + + + + + Permutation max-T + + + + + + + + + + + + diff --git a/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json b/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json new file mode 100644 index 00000000..981010d6 --- /dev/null +++ b/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json @@ -0,0 +1,15 @@ +{ + "input_provenance_sha256": "aef6b9940e6a0bef865e405e19f6e8c3932309175d7b61e38d6260f86137e6c0", + "render_script_sha256": "5c5e184cd423cabf020ec6936d8bbaf3141573786c5ed7b0f7d1ab68af9446d1", + "software": { + "numpy": "2.5.4", + "matplotlib": "3.11.2", + "nibabel": "5.4.2" + }, + "output_sha256": { + "narps-analysis-variability.svg": "92f1a67109ddca57d47377e5000aa3f0f7ecda8f5f99c3f820c4c1e8cb2638b6", + "narps-group-map.svg": "7e34652a83178ee178a01b7aea9e545f235f1cded5106ef6c7254c6b701fd327", + "narps-analysis-variability.png": "3ac62e1df7e992bcacbd7c15a9fe845b426152c54904c931a3c1c259e855bc75", + "narps-group-map.png": "851c93ad7fa51753a9bdc26b556dbd36b1487bef80b92237db8bdffbf2e8c799" + } +} diff --git a/2026-usrse/stamped-ai-study/figures/narps-group-map.png b/2026-usrse/stamped-ai-study/figures/narps-group-map.png new file mode 120000 index 00000000..de5e4f6e --- /dev/null +++ b/2026-usrse/stamped-ai-study/figures/narps-group-map.png @@ -0,0 +1 @@ +../../../.git/annex/objects/GF/jZ/MD5E-s139047--ccc9a985bf8d93427535348181fbadf8.png/MD5E-s139047--ccc9a985bf8d93427535348181fbadf8.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/narps-group-map.svg b/2026-usrse/stamped-ai-study/figures/narps-group-map.svg new file mode 100644 index 00000000..770ae9a8 --- /dev/null +++ b/2026-usrse/stamped-ai-study/figures/narps-group-map.svg @@ -0,0 +1,381 @@ + + + + + + + + image/svg+xml + + + Matplotlib v3.11.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + P + + + A + + + Sagittal + x = -2 mm + + + + + + + + + + + + + + + + L + + + R + + + Coronal + y = 24 mm + + + + + + + + + + + + + + + + + + + L + + + R + + + Axial + z = -3.6 mm + + + + + + + + + + + + ≤−6 + + + + + + 0 + + + + + + ≥6 + + + + + + + + + + Unthresholded group t + + + + Gray anatomy: outside common coverage + + + + + + + vmPFC region + + + + + + Positive FWE p ≤ .05 + + + + + + + + + + + + + + + diff --git a/2026-usrse/stamped-ai-study/index.html b/2026-usrse/stamped-ai-study/index.html index e5860fcb..b2eea223 100644 --- a/2026-usrse/stamped-ai-study/index.html +++ b/2026-usrse/stamped-ai-study/index.html @@ -5,164 +5,146 @@ - STAMPED in Practice: Checking AI-assisted Analysis and Its Research Record - + STAMPED in Practice: Improving research skills through reproducible experiments +
-
+
-
-

STAMPED · US-RSE 2026

-

STAMPED in PracticeChecking AI-assisted analysis
and its research record

-
+

US-RSE 2026 · Research in the open

STAMPED in PracticeImproving research skills through
reproducible experiments

-
-

John A. LeeAustin MacdonaldCody C. BakerYaroslav O. Halchenko

-

Center for Open Neuroscience
Psychological and Brain Sciences
Dartmouth College

-
- QR code for this poster and its editable sourcePoster + source +

John A. LeeAustin MacdonaldCody C. BakerYaroslav O. Halchenko

Center for Open Neuroscience
Dartmouth College

+ QR code for this poster, figures and sourcePoster + code
- -
-

An AI assistant can write analysis code. Can another person check its result, rerun the work, and reuse what it produced? STAMPED gives us seven practical questions to ask about that research.

-

We compare the same tasks with and without five reusable skills.A skill is a short set of instructions and checks an assistant can follow. We check scientific results and the records needed to reproduce them.

+
+

Our experiment: iteratively improve STAMPED research skills by validating the scientific results and research objects they produce.

+

Make the improvement process inspectable.Link the skills, data, runs, assessments and revisions, so others can evaluate both the science and how the guidance evolved.

-
-
-
- -

Seven properties, with evidence for each

-

Three paired tasks show useful evidence and limits. A recorded command alone does not show that an analysis is correct.

- - - - - - - - - - - - -
PropertyPractical questionOriginal abstract: tool planThree pairs: evidence and gaps
Self-containedIs everything needed identified?DataLad + git-annexPartial · both armsPinned inputs and locked software; offline setup untested.
TrackableCan we follow how it changed?Git · DataLad run · con-duct · NIDM · PROVPartial · both armsGit and row audits retained; native DataLad rerun incomplete.
ActionableCan someone run or use it?Tested BIDS Apps + Pixi tasksDemonstrated · both armsAll six science commands replayed; full reports untested.
ModularCan a part be reused on its own?DataLad compositionDemonstrated · both armsThree supplied datasets; workers separated code and outputs.
PortableCan it run in another environment?ApptainerPartial · both armsNew software environments, one Mac; other systems untested.
EphemeralCan a fresh workspace reproduce it?Apptainer · BABS · SlurmPartial · both armsOutputs rebuilt in new checkouts; shared caches retained.
DistributableCan others obtain the right parts?Persistent git-annex remotesPartial · both armsInput license known; new code licensing and external retrieval unverified.
-

Tools preserve the original proposal; many were not used. Judgments cover these three pairs. The coordinator supplied datasets and ran independent replay; later log packaging is curation. Containers and clusters are untested.

+
+
+

Test the skills through the work

+

We ask whether successive revisions improve scientific adequacy and reproducibility, while reducing failures and variability.

+
    +
  1. RunFresh agents address the same scientific question.
  2. +
  3. AssessIndependent judges inspect the research object and attempt replay.
  4. +
  5. ReviseUse recurring findings to improve and compress the skills.
  6. +
  7. RepeatTest the next pinned revision with fresh agents.
  8. +
+

Three iterations; four assistance conditions; three research runs per condition. Final iteration: evaluate without further tuning.

- -
-
-

How do response times change across runs?

- QR code for the study protocol and research evidenceStudy + evidence +
+

Four ways to assist an agent

+
+
B

BaselineNo supplied research skills.

+
G

General discoveryFind and use useful skills.

+
S

Science discoveryFind skills for scientific quality and reproducibility.

+
E

Explicit STAMPEDUse the pinned research workflows.

-

We use public mixed-gambles task records from OpenNeuro ds000005: 16 participants and three runs each. We summarize recorded decision times; we do not infer why they changed.

-
- -
01

One participant

Compare the median response time in the first and third runs.

-
02

The group

Estimate the average within-person change and its uncertainty.

-
03

Sensitivity

Vary the summary and response-time rule; add the middle run.

-
-
Each stage uses two fresh assistant contexts. Progress depends on a correct result and an independent successful replay at the preceding stage.
-
-
-

Checked scientific results

- -

One participant: median response time 1272 → 1261 ms; change -11 ms. Both arms agree.

-

16 participants: average within-person change +31.3 ms; 95% bootstrap interval [-70.3, 132.7] ms. Both arms agree.

-

Change is third minus first run; the interval includes zero. Missing responses limit interpretation. This is not a causal effect.

-

Sensitivity: median/mean summaries, with or without a 0.2–3.0 s response-time band, gave +11.2 to +58.7 ms; all four 95% intervals include zero.

- -
-
Scope change: public behavioral data replace the proposed ABCD neuroimaging case. The ABCD result has not been reproduced.
+

Matched task, inputs and resources; randomized launch order; three repeats. Record assigned assistance and actual skill use separately. Comparison plan · Run settings

+
+

Follow any result back to its source

+ +

Ideas for better skills are testable only when we can trace the data generated along the way. stamped-in-practice connects the experiment, including unsuccessful attempts.

+
+

STAMPED principles

Self-contained · Trackable · Actionable · Modular · Portable · Ephemeral · Distributable

- -
- +
+

Use STAMPED. Try the skills. Bring us a study.

Share a hypothesis, accessible data and a reference result. Help us test the skills on your science—and discuss what better guidance should do.

+ QR code for the STAMPED in Practice research objectStudy + data + QR code for reusable STAMPED research skillsUse the skills +
-
-

Three local pairs, October 2026. Source: Tom et al. (2007), mixed-gambles task, OpenNeuro ds000005 (PDDL). Code, input versions, protocol, and review notes are linked from the study.

-

STAMPED means Self-contained, Trackable, Actionable, Modular, Portable, Ephemeral, Distributable. Poster layout adapted from CON’s US-RSE 2026 ORINOCO Lite poster.

-

OpenAI Codex assisted the analyses and poster draft.

-
- +

A reproducible study of reproducibility. Source, figure inputs, run-level evidence and the completion plan accompany this editable poster.

Working draft · NARPS replaces the ABCD case proposed in the abstract. OpenAI Codex assisted analysis and poster preparation.

+
diff --git a/2026-usrse/stamped-ai-study/make-logo-qrs.py b/2026-usrse/stamped-ai-study/make-logo-qrs.py index 3f9de5c7..ca77eed9 100644 --- a/2026-usrse/stamped-ai-study/make-logo-qrs.py +++ b/2026-usrse/stamped-ai-study/make-logo-qrs.py @@ -32,9 +32,9 @@ BORDER = 4 # Four completely clear modules on every side. LOGO_WIDTH_FRACTION = 0.42 DESTINATIONS = { - "poster": "https://github.com/con/talks/tree/codex/stamped-usrse-poster/2026-usrse/stamped-ai-study", - "study": "https://github.com/leej3/stamped-ai-research/tree/codex/stamped-poster-study/research", - "skills": "https://github.com/con/skills/tree/codex/stamped-research-skills", + "poster": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", + "study": "https://github.com/leej3/stamped-in-practice", + "skills": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "con": "https://dev.centerforopenneuroscience.org/", } diff --git a/2026-usrse/stamped-ai-study/package-lock.json b/2026-usrse/stamped-ai-study/package-lock.json new file mode 100644 index 00000000..9bbc0d39 --- /dev/null +++ b/2026-usrse/stamped-ai-study/package-lock.json @@ -0,0 +1,58 @@ +{ + "name": "stamped-in-practice-poster", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "stamped-in-practice-poster", + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.62.1" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/playwright": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", + "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.62.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", + "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + } + } +} diff --git a/2026-usrse/stamped-ai-study/package.json b/2026-usrse/stamped-ai-study/package.json new file mode 100644 index 00000000..c7d56c49 --- /dev/null +++ b/2026-usrse/stamped-ai-study/package.json @@ -0,0 +1,6 @@ +{ + "name": "stamped-in-practice-poster", + "private": true, + "license": "Apache-2.0", + "dependencies": { "playwright": "1.62.1" } +} diff --git a/2026-usrse/stamped-ai-study/pixi.toml b/2026-usrse/stamped-ai-study/pixi.toml new file mode 100644 index 00000000..8a5cb93c --- /dev/null +++ b/2026-usrse/stamped-ai-study/pixi.toml @@ -0,0 +1,33 @@ +# SPDX-License-Identifier: Apache-2.0 +[workspace] +name = "stamped-in-practice-poster" +channels = ["conda-forge"] +platforms = [{ platform = "osx-arm64", macos = "14.0" }, "linux-64"] + +[dependencies] +python = ">=3.12,<3.14" +numpy = ">=2,<3" +scipy = ">=1.15,<2" +matplotlib-base = ">=3.10,<4" +nibabel = ">=5.3,<6" +nilearn = ">=0.14,<0.15" +pillow = ">=11,<13" +pypdf = ">=6,<7" +qrcode = ">=8,<9" +poppler = "*" +nodejs = ">=22,<23" +pre-commit = "*" +git = "*" + +[pypi-dependencies] +zxing-cpp = "==2.3.0" +datalad = "*" +git-annex = "*" + +[tasks] +setup-browser = "npm ci && npx playwright install chromium" +figures = "python scripts/render-narps-figures.py" +table = "python update-results.py" +build = { cmd = "node build-poster.cjs --out-dir exports", depends-on = ["figures", "table"] } +verify = "python verify-pdf.py --review-dir exports" +links = "python verify-links.py --review-dir exports" diff --git a/2026-usrse/stamped-ai-study/poster.css b/2026-usrse/stamped-ai-study/poster.css index bb41c7da..59811a5d 100644 --- a/2026-usrse/stamped-ai-study/poster.css +++ b/2026-usrse/stamped-ai-study/poster.css @@ -1,76 +1,77 @@ /* SPDX-License-Identifier: CC-BY-SA-4.0 */ -/* Content-specific additions retain the PR 20 canvas, palette, and column grid. */ -.poster { grid-template-rows: 350px 286px 1fr 280px; } -.masthead { grid-template-columns: 1.15fr 840px 1fr; } -.authors { font-size: 40px; } -.authors .affiliation { font-size: 32px; margin-top: 16px; } -.qr-badge { font-size: 32px; } -.study-main { display: flex; flex-direction: column; gap: 52px; } -.study-main > section { flex-shrink: 0; } -.property-section .intro { max-width: 2300px; } -.property-table { width: 100%; border-collapse: collapse; table-layout: fixed; margin-top: 34px; font-size: 36px; line-height: 1.27; } -.property-col { width: 15%; } -.question-col { width: 21%; } -.method-col { width: 23%; } -.evidence-col { width: 41%; } -.property-table th, .property-table td { padding: 25px 23px; text-align: left; vertical-align: top; border-bottom: 2px solid var(--rule); } -.property-table thead { color: white; background: var(--green); } -.property-table thead th { font-size: 34px; line-height: 1.25; padding: 23px; } -.property-table tbody th { font-size: 36px; color: var(--green); } -.property-table tbody tr:nth-child(even) { background: var(--tint); } -.pending { display: block; color: var(--warm); font-size: 32px; font-weight: 700; margin-bottom: 10px; } -.judgment { display: block; color: var(--warm); font-size: 32px; font-weight: 700; margin-bottom: 10px; } -.judgment.demonstrated { color: var(--green); } -.table-note { font-size: 32px; line-height: 1.35; color: var(--muted); margin: 22px 0 0; } -.stages-section { border-top: 6px solid var(--green); padding-top: 34px; } -.section-heading { display: grid; grid-template-columns: 1fr 214px; gap: 44px; align-items: center; margin-bottom: 22px; } -.section-heading h2 { margin-bottom: 0; } -.section-heading .qr-badge { justify-self: end; } -.stage-cards { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 28px; margin-top: 36px; text-decoration: none; } -.stage-cards > div { border-top: 8px solid var(--con-blue); background: white; padding: 28px 32px 32px; min-height: 325px; } -.stage-number { font-size: 44px; color: var(--green); font-weight: 700; } -.stage-cards h3 { margin: 18px 0; font-size: 44px; } -.stage-cards p { margin: 0; font-size: 36px; line-height: 1.3; } -.stages-figure figcaption { margin-top: 22px; font-size: 32px; } -.scientific-results { margin-top: 28px; border-top: 3px solid var(--rule); padding-top: 26px; } -.scientific-results h3 { font-size: 42px; margin-bottom: 16px; } -.scientific-results p { font-size: 36px; line-height: 1.3; margin: 0; } -.scientific-results p + p { margin-top: 14px; } -.scientific-results .science-note { font-size: 32px; color: var(--muted); } -.scope-note { border-left: 7px solid var(--warm); background: #f0e4d5; padding: 26px 32px; margin-top: 36px; font-size: 36px; line-height: 1.35; } -.outcomes > section + section { margin-top: 44px; } -.pair-comparison { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 32px; } -.pair-comparison > div { background: var(--tint); border-top: 8px solid var(--green); padding: 28px; } -.pair-comparison > div + div { border-color: var(--con-blue); } -.pair-comparison h3 { font-size: 43px; margin-bottom: 15px; } -.pair-comparison p { font-size: 36px; line-height: 1.3; margin: 0; } -.method-spec { font-size: 32px; line-height: 1.35; color: var(--muted); margin: 24px 0 0; } -.skills-section { display: grid; grid-template-columns: 1fr 214px; gap: 30px; align-items: center; padding-top: 32px; border-top: 3px solid var(--rule); } -.skills-section p { margin-bottom: 0; } -.measurement-section { padding-top: 32px; border-top: 3px solid var(--rule); } -.measurement-section ul { margin: 0; padding-left: 43px; font-size: 36px; line-height: 1.35; } -.measurement-section li + li { margin-top: 19px; } -.result-box { background: var(--tint); padding: 32px; border-top: 8px solid var(--con-blue); } -.result-box p { font-size: 36px; line-height: 1.35; margin: 0; } -.result-box .section-label { font-size: 32px; margin-bottom: 18px; } -.result-box .result-note { font-size: 32px; color: var(--muted); margin-top: 24px; } -.outcome-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 32px; line-height: 1.25; } -.outcome-table th, .outcome-table td { text-align: left; vertical-align: top; padding: 16px 8px; border-bottom: 2px solid var(--rule); } -.outcome-table th:first-child { width: 26%; } -.outcome-table th { font-size: 32px; } -.outcome-table td { width: 37%; } -.outcome-table .worker-time { display: block; font-weight: 700; font-size: 38px; margin-bottom: 10px; } -.outcome-table .check-status { display: block; font-size: 32px; } -.outcome-table .screening-failed { color: var(--warm); font-weight: 700; } -.failure-summary { border-top: 3px solid var(--rule); padding-top: 26px; } -.failure-summary h3 { font-size: 42px; } -.failure-summary p { font-size: 34px; line-height: 1.32; margin: 0; } -.outcomes > .callout { margin-top: auto; } -.callout p { font-size: 36px; } -.footer p, .footer .thanks { font-size: 32px; } -.footer { grid-template-columns: 1.2fr 1fr; } -.partner-affiliation { font-size: 32px; } -.partner-affiliation strong { font-size: 36px; } -.partners .qr-badge img { max-height: none; } -.con-footer { flex-shrink: 0; } -.repronim-support { display: flex; gap: 22px; align-items: center; font-size: 32px; line-height: 1.3; text-decoration: none; } +.poster { grid-template-rows: 324px 240px 1fr 286px 238px; gap: 32px; } +.masthead { grid-template-columns: 1.2fr 690px 1fr; gap: 60px; } +.con-logo { width: 690px; } +h1 { font-size: 92px; } +h1 span { font-size: 48px; } +.authors { font-size: 38px; } +.authors .affiliation { font-size: 32px; } +.author-panel { gap: 38px; } +.lead p { font-size: 42px; } +.lead .pitch strong { font-size: 44px; } +.lead .pitch span { font-size: 36px; } +.columns { grid-template-columns: 0.95fr 1.2fr 1.3fr; gap: 48px; } +.columns > * { min-width: 0; } +.columns p { font-size: 36px; line-height: 1.35; margin: 0 0 24px; } +.columns h2 { font-size: 61px; margin-bottom: 28px; } +.columns h3 { font-size: 44px; margin-bottom: 24px; } +.columns .section-label { font-size: 32px; margin-bottom: 18px; } +.columns .small, .columns .source-links { font-size: 32px; line-height: 1.35; } +.method-column, .science-column { display:flex; flex-direction:column; gap: 40px; } +.science-column { border-left:2px solid var(--rule); padding-left:44px; } +.ruled { border-top: 3px solid var(--rule); padding-top: 30px; } +.loop { list-style: none; padding:0; margin:34px 0; display:grid; gap:18px; counter-reset: step; } +.loop li { display:grid; grid-template-columns: 160px 1fr; gap:22px; padding:24px; background:var(--tint); font-size:36px; line-height:1.25; border-left:7px solid var(--green); } +.loop b { color:var(--green); font-size:38px; } +.conditions { display:grid; gap:22px; margin-bottom:28px; } +.conditions > div { display:grid; grid-template-columns:65px 1fr; gap:22px; align-items:start; } +.conditions p { margin:0; font-size:34px; } +.conditions strong { display:block; } +.condition { display:flex; align-items:center; justify-content:center; height:60px; width:60px; color:white; font-size:36px; border-radius:9px; } +.baseline { background:#526c76; }.general { background:#4477aa; }.science { background:#aa6633; }.explicit { background:#286857; } +.evidence-chain { background:var(--tint); padding:28px; margin-bottom:28px; display:grid; text-align:center; gap:12px; font-size:34px; line-height:1.25; } +.evidence-chain span { color:var(--green); font-size:34px; } +.principles p { line-height:1.55; } +.principles strong { color:var(--green); } +.source-links { color:var(--green); } +.science-result { border-top:7px solid var(--green); padding-top:30px; } +.brain-figure { width:100%; display:block; } +figcaption { font-size:32px; line-height:1.32; margin:18px 0 0; } +.finding { margin-top:28px; background:var(--tint); padding:28px 32px; border-left:7px solid var(--green); } +.finding b { font-size:41px; display:block; margin-bottom:18px; } +.finding p { margin:0; } +.variability-figure { width:100%; display:block; } +.result-slot { border:3px dashed #8da49c; padding:24px 28px; margin-top:28px !important; color:var(--muted); } +.result-slot strong { display:block; color:var(--ink); } +.outcomes { padding-left:42px; } +.outcomes > section + section { margin-top:30px; } +.outcomes .results-matrix { margin-top:10px; } +.outcome-table { width:100%; border-collapse:collapse; table-layout:fixed; font-size:32px; line-height:1.25; } +.outcome-table th, .outcome-table td { padding:12px 12px; text-align:left; border-bottom:2px solid var(--rule); vertical-align:middle; } +.outcome-table thead th { background:var(--green); color:white; font-size:32px; padding:22px 12px; } +.outcome-table .iteration th { background:#dce6dd; padding:20px 12px; color:var(--green); } +.outcome-table .condition-cell { font-weight:700; } +.outcome-table .runs { display:block; font-size:32px; color:var(--muted); margin-top:8px; font-weight:400; } +.outcome-table .values { display:block; white-space:nowrap; } +.outcome-table .missing { color:#647980; } +.outcome-table col:first-child { width:30%; } +.outcome-table col:nth-child(2) { width:18%; } +.outcome-table col:nth-child(3) { width:18%; } +.outcome-table col:nth-child(4) { width:34%; } +.assessment-key { padding:25px 28px; background:var(--tint); } +.assessment-key p { font-size:32px; line-height:1.28; margin-bottom:18px; } +.assessment-key p:last-child { margin:0; } +.revision { border-left:6px solid var(--con-blue); padding:18px 26px; margin-bottom:20px; } +.revision b { font-size:37px; } +.revision p { font-size:34px; margin:12px 0 0; } +.skills-use p { line-height:1.65; margin-bottom:0; } +.invitation { background:var(--green); color:white; margin:0 -88px; padding:30px 88px; display:grid; grid-template-columns:1fr 240px 240px; gap:48px; align-items:center; } +.invitation h2 { font-size:61px; margin:0 0 20px; } +.invitation p { font-size:40px; line-height:1.3; margin:0; max-width:2900px; } +.invitation .qr-badge { color:white; font-size:32px; } +.invitation .qr-badge img { width:180px; height:180px; } +.footer { grid-template-columns:1.1fr 1fr; padding-top:16px; border:0; } +.footer p, .footer .thanks { font-size:32px; } +.partners .qr-badge img { max-height:none; height:155px; width:155px; } +.qr-badge { font-size:32px; } +.repronim-support { display:flex; align-items:center; gap:22px; font-size:32px; text-decoration:none; } diff --git a/2026-usrse/stamped-ai-study/results-data.json b/2026-usrse/stamped-ai-study/results-data.json deleted file mode 100644 index c07d559a..00000000 --- a/2026-usrse/stamped-ai-study/results-data.json +++ /dev/null @@ -1,216 +0,0 @@ -{ - "status": "complete_evaluations", - "timing_definition": "Worker wall seconds only; setup and evaluator replay excluded; 480-second cap per attempt.", - "display_rounding": "Whole seconds for worker timing; one decimal millisecond for cohort results.", - "data_check_scope": "Correctness on the pinned source data, not complete implementation-contract correctness. Separate screening probes are shown when available.", - "reviewed_stages": [ - "01", - "02", - "03" - ], - "property_judgment_scope": "Three reviewed pairs; worker evidence distinguished from supplied seeds and coordinator replay/curation; no aggregate score or general certification.", - "stages": [ - { - "stage": "01", - "label": "One person", - "baseline": { - "worker_wall_seconds": 270.2424976249458, - "correctness": "passed", - "fresh_replay": "passed", - "evidence": "research/mixed-gambles-design/evaluator/stage-01/assessment.json" - }, - "treatment": { - "worker_wall_seconds": 358.4730830839835, - "correctness": "passed", - "fresh_replay": "passed", - "evidence": "research/mixed-gambles-design/evaluator/stage-01/assessment.json" - } - }, - { - "stage": "02", - "label": "Cohort", - "baseline": { - "worker_wall_seconds": 387.1459320409922, - "correctness": "passed", - "fresh_replay": "passed", - "evidence": "research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json", - "worker_outcome": "completed", - "scalar_checks": 489, - "replay_byte_identical": true - }, - "treatment": { - "worker_wall_seconds": 412.5168959159637, - "correctness": "passed", - "fresh_replay": "passed", - "evidence": "research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json", - "worker_outcome": "completed", - "scalar_checks": 489, - "replay_byte_identical": true - } - }, - { - "stage": "03", - "label": "Sensitivity", - "baseline": { - "worker_wall_seconds": 382.97944491694216, - "correctness": "passed", - "fresh_replay": "passed", - "evidence": "research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json", - "worker_outcome": "completed", - "scalar_checks": 2042, - "replay_byte_identical": true, - "screening_contract": "passed", - "screening_contract_evidence": { - "path": "research/mixed-gambles-design/evaluator/stage-03/baseline-screening-probes.json", - "sha256": "fbe60031ebbd94657a59d26603ec54545e0af0ea1c274203aef37fd1b47c7ee2" - } - }, - "treatment": { - "worker_wall_seconds": 474.4654870419763, - "correctness": "passed", - "fresh_replay": "passed", - "evidence": "research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json", - "worker_outcome": "completed", - "scalar_checks": 2042, - "replay_byte_identical": true, - "screening_contract": "failed", - "screening_contract_evidence": { - "path": "research/mixed-gambles-design/evaluator/stage-03/treatment-screening-probes.json", - "sha256": "b427318d0b4d6fc4e83c710acfd0fa3123d23396c78354ee32b6ae285518abfd" - } - } - } - ], - "scientific_results": { - "stage01": { - "run01_median_ms": 1272.0, - "run03_median_ms": 1261.0, - "change_ms": -11.0 - }, - "stage02": { - "ci95_ms": [ - -70.284375, - 132.65781249999998 - ], - "mean_change_ms": 31.343749999999993, - "n": 16, - "checked_arms": [ - "baseline", - "treatment" - ], - "cohort_by_arm": { - "baseline": { - "ci95_ms": [ - -70.284375, - 132.65781249999998 - ], - "mean_change_ms": 31.343749999999993, - "n": 16 - }, - "treatment": { - "ci95_ms": [ - -70.284375, - 132.65781249999998 - ], - "mean_change_ms": 31.343749999999993, - "n": 16 - } - }, - "checked_arms_agree": true - }, - "stage03": { - "variants_by_arm": { - "baseline": { - "mean_band": { - "ci95_ms": [ - -69.95707276536827, - 128.12038918360184 - ], - "mean_change_ms": 27.7099102239331, - "n": 16 - }, - "mean_primary": { - "ci95_ms": [ - -36.58981756853354, - 150.72133936355112 - ], - "mean_change_ms": 58.70382847148604, - "n": 16 - }, - "median_band": { - "ci95_ms": [ - -93.71953124999997, - 120.93984374999997 - ], - "mean_change_ms": 11.156250000000007, - "n": 16 - }, - "median_primary": { - "ci95_ms": [ - -70.284375, - 132.65781249999998 - ], - "mean_change_ms": 31.343749999999993, - "n": 16 - } - }, - "treatment": { - "mean_band": { - "ci95_ms": [ - -69.95707276536827, - 128.12038918360182 - ], - "mean_change_ms": 27.709910223933086, - "n": 16 - }, - "mean_primary": { - "ci95_ms": [ - -36.58981756853354, - 150.72133936355112 - ], - "mean_change_ms": 58.70382847148604, - "n": 16 - }, - "median_band": { - "ci95_ms": [ - -93.71953124999997, - 120.93984374999997 - ], - "mean_change_ms": 11.156250000000007, - "n": 16 - }, - "median_primary": { - "ci95_ms": [ - -70.284375, - 132.65781249999998 - ], - "mean_change_ms": 31.343749999999993, - "n": 16 - } - } - }, - "checked_arms": [ - "baseline", - "treatment" - ], - "checked_arms_agree": true - } - }, - "source_sha256": { - "research/mixed-gambles-design/evaluator/stage-01/assessment.json": "7481c0a07ab8ee82dd13ef124666ff6deb017700887f43a977636bf6e7b5fce0", - "research/mixed-gambles-design/evaluator/stage-02/baseline-evaluation.json": "ac7178690f04f8df091269a0a81db8310884c8bc588497b7f34979fd6889c6ee", - "research/mixed-gambles-design/evaluator/stage-02/treatment-evaluation.json": "cec1d97939ff78bc0b7df991b1357a8d6ee1e33be51035e1c6e3610979aee379", - "research/mixed-gambles-design/evaluator/stage-03/baseline-evaluation.json": "5607651b7bdb2f5311219021ffed301be000167dda02f8a2cd1d8a2e6a624bd9", - "research/mixed-gambles-design/evaluator/stage-03/treatment-evaluation.json": "cdb3b579667234de7a28d98c98e43d8d748633345836a9c72b889ef051cc3211", - "research/mixed-gambles-design/evaluator/stage-01/pair-review.json": "95cd955f3ef038fd6a188fab37bc03f41a8907b83badfb660e0ada88b879ad6f", - "research/mixed-gambles-design/evaluator/stage-02/assessment.json": "be41ba2194ae4afa4ef063e9906ff1d9481d52676320605567b2f623382bb691", - "research/mixed-gambles-design/evaluator/stage-02/pair-review.json": "47b7eacd5ac40970375bc4c9568e27e2583cc430869f0e202fecb082dbbb66ce", - "research/mixed-gambles-design/evaluator/stage-03/assessment.json": "3617219d7e21ec949cabb7ee8a9e554b37df2f7972d843277b6d6e014cc0d0f5", - "research/mixed-gambles-design/evaluator/stage-03/pair-review.json": "8fa644b275bbd1906fc823f45477fb5c09503d7a939c468a0cfdfc20ae3d63be", - "research/mixed-gambles-design/evaluator/stage-01/baseline-original-normalized.json": "8018742de7c0e382a0f7529be54669638da3401c92d4743512f21a75b2be1a81", - "research/mixed-gambles-design/evaluator/stage-02/baseline-original-normalized.json": "9ba020055ccfe59adea31db21ab70de78ecceca5488faa29887e733694988058", - "research/mixed-gambles-design/evaluator/stage-02/treatment-original-normalized.json": "9ba020055ccfe59adea31db21ab70de78ecceca5488faa29887e733694988058", - "research/mixed-gambles-design/evaluator/stage-03/baseline-original-normalized.json": "8bac3c8c0253def4bf3e852a02693529c9b8ef0409a2229bbcc0de2c0e667e0a", - "research/mixed-gambles-design/evaluator/stage-03/treatment-original-normalized.json": "51a9c6e284fe52b272865a86a0501a6cab497316fa6fe388acc5f00e55eec2be" - } -} diff --git a/2026-usrse/stamped-ai-study/scripts/export-assessments.py b/2026-usrse/stamped-ai-study/scripts/export-assessments.py new file mode 100644 index 00000000..e7b5f2fe --- /dev/null +++ b/2026-usrse/stamped-ai-study/scripts/export-assessments.py @@ -0,0 +1,278 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +"""Export a dated, public-safe poster snapshot without changing the study. + +Usage: python stamped-poster-assessment-export.py --study COORDINATOR --out JSON + +Only completed judgments registered in each round ledger are admitted. Raw item +statuses remain intact; the external measurement-validity overlay is separate. +The output contains no transcripts, credentials, native commands or host paths. +""" + +import argparse +import collections +import datetime as dt +import hashlib +import json +import re +import subprocess +from pathlib import Path +from zoneinfo import ZoneInfo + + +STATUSES = ("met", "partial", "unmet", "not-checked", "not-applicable") +REMOTE = "https://github.com/leej3/stamped-in-practice" +# Published primary records; verify exact source bytes before adding a link. +PUBLISHED = {'narps-r1-07-judgment-01': '5a16be31d225574a4643a8feb000ca0a5fa7f7ad', 'narps-r1-08-judgment-01': '15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8'} + + +def digest(data): + return hashlib.sha256(data).hexdigest() + + +def git(root, *args): + result = subprocess.run(["git", "-C", str(root), *args], capture_output=True) + return result.stdout if result.returncode == 0 else None + + +def scientific_label(report): + # Preserve the judge's classification, not whether the tested hypothesis won. + match = re.search(r"Scientific adequacy:\*?\*?\s*\*?\*?\s*(not supported|qualified|supported|not checked)", report, re.I) + return match.group(1).lower() if match else None + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--study", required=True, type=Path, + help="Coordinator checkout containing iterations/narps-v1") + parser.add_argument("--out", required=True, type=Path, help="Destination JSON filename") + args = parser.parse_args() + root = args.study.resolve() + iteration = root / "iterations/narps-v1" + now = dt.datetime.now(dt.timezone.utc) + sources = {} + warnings = [] + head_bytes = git(root, "rev-parse", "HEAD") + head = head_bytes.decode().strip() if head_bytes else None + + def read_source(path, source_id, coordinator_relative=None): + data = path.read_bytes() + record = {"sha256": digest(data), "bytes": len(data), "public_url": None} + if coordinator_relative: + record["coordinator_path"] = coordinator_relative + committed = git(root, "show", f"HEAD:{coordinator_relative}") + record["matches_coordinator_head"] = committed == data + if committed == data and head: + record["public_url"] = f"{REMOTE}/blob/{head}/{coordinator_relative}" + else: + record["publication_status"] = "not-established-by-this-export" + revision = PUBLISHED.get(source_id.split("/")[0]) + if revision and path.name.endswith(("assessment.md", "response.json", "fresh-rerun.json")): + published = git(path.parent, "show", f"{revision}:{path.name}") + if published == data: + record["public_url"] = f"{REMOTE}/blob/{revision}/{path.name}" + record["publication_status"] = "published-immutable-source-hash-verified" + sources[source_id] = record + return data + + def read_coordinator(name): + rel = f"iterations/narps-v1/{name}" + return json.loads(read_source(root / rel, name, rel)) + + allocation = read_coordinator("allocation.json") + disposition = read_coordinator("measurement-disposition-01.json") + disposition_by_id = {j["judgment_id"]: j for j in disposition["judgments"]} + # Capture ledgers up front. A late filesystem artifact does not become an + # outcome unless it was already completed in this captured ledger. + ledgers = {} + for planned in allocation["rounds"]: + name = f"round-{planned['round']}.json" + if (iteration / name).exists(): + ledgers[planned["round"]] = read_coordinator(name) + + def judgment(run_id, entry): + jid = f"{run_id}-{entry['judgment_id']}" + overlay = disposition_by_id.get(jid, {}) + role = overlay.get("role", entry.get("judgment_role")) + result = { + "judgment_id": jid, "role": role, "status": entry.get("status"), + "procedure_sha256": entry.get("procedure_sha256"), + "assessment_scope": entry.get("assessment_scope"), + "finished_at": entry.get("finished_at"), + "science": None, "replay": None, "checklist": None, + } + if entry.get("status") != "completed": + return result + base = Path(entry["evidence"]) + assessment_dir = base / "judgment" + response_paths = sorted(assessment_dir.glob("????-??-??-response.json")) + report_paths = sorted(assessment_dir.glob("????-??-??-assessment.md")) + replay_paths = sorted(assessment_dir.glob("????-??-??-fresh-rerun.json")) + source_prefix = jid + "/" + if len(response_paths) != 1 or len(report_paths) != 1: + warnings.append(f"{jid}: completed ledger entry lacks one unambiguous response/report pair") + result["status"] = "completed-artifacts-incomplete" + return result + response = json.loads(read_source(response_paths[0], source_prefix + "response.json")) + report = read_source(report_paths[0], source_prefix + "assessment.md").decode() + validity = overlay.get("measure_validity", []) + blocked = {v["measure"]: v["status"] for v in validity + if v["status"] in ("unavailable", "invalid")} + answers = response["responses"] + raw = collections.Counter(a["status"] for a in answers.values()) + valid = collections.Counter(a["status"] for key, a in answers.items() if key not in blocked) + unavailable = sum(key in answers and value == "unavailable" for key, value in blocked.items()) + invalid = sum(key in answers and value == "invalid" for key, value in blocked.items()) + total = len(answers) + result["checklist"] = { + "version": response.get("checklist_version"), + "raw_counts": {s: raw[s] for s in STATUSES}, + "comparable_counts": {s: valid[s] for s in STATUSES}, + "total_items": total, + "applicable_items": total - raw["not-applicable"], + "comparable_applicable_items": sum(valid.values()) - valid["not-applicable"], + "unavailable_items": unavailable, "invalid_items": invalid, + "descriptive_met_numerator": valid["met"], + "descriptive_met_denominator": sum(valid.values()) - valid["not-applicable"], + "item_statuses": {key: value["status"] for key, value in sorted(answers.items())}, + "item_validity_overrides": {key: value for key, value in sorted(blocked.items()) if key in answers}, + "raw_retrieval_item": answers.get("stamped-checklist:must/016", {}).get("status"), + "retrieval_item_validity": blocked.get("stamped-checklist:must/016", "available"), + "source_id": source_prefix + "response.json", + } + dependency = overlay.get("scientific_dependency", {}) + label = scientific_label(report) + if label is None: + warnings.append(f"{jid}: scientific adequacy label could not be extracted") + result["science"] = { + "reported_adequacy": label, + "evidence_dependency": dependency.get("status", "no-uncertainty-overlay-recorded"), + "display_qualifier": "replay evidence unavailable" if dependency.get("status") == "uncertain" else None, + "source_id": source_prefix + "assessment.md", + } + if len(replay_paths) == 1: + replay = json.loads(read_source(replay_paths[0], source_prefix + "fresh-rerun.json")) + comparison = replay.get("comparison", {}) + result["replay"] = { + "raw_status": replay.get("status"), + "comparable_status": blocked.get("replay", replay.get("status")), + "validity": blocked.get("replay", "available"), + "identical_outputs": len(comparison.get("identical", [])) if comparison else None, + "within_tolerance_outputs": len(comparison.get("within_tolerance", [])) if comparison else None, + "different_outputs": comparison.get("differing", []), + "missing_outputs": comparison.get("missing_after_rerun", []), + "candidate_outputs": sum(len(comparison.get(key, [])) for key in + ("identical", "within_tolerance", "differing", "missing_after_rerun")) if comparison else None, + "host_scope": "same-host", + "source_id": source_prefix + "fresh-rerun.json", + } + native = base / "native/result.json" + if native.exists(): + native_data = json.loads(read_source(native, source_prefix + "native-result.json")) + result["assessor_source_commit"] = native_data.get("assessment_pin", {}).get("source_commit") + result["assessor_environment_commit"] = native_data.get("assessment_pin", {}).get("environment_commit") + binding_path = base.parent / "retention" / f"{entry['judgment_id']}-output-binding.json" + result["evidence_binding"] = "pending" + if binding_path.exists(): + binding_id = source_prefix + "output-binding.json" + binding = json.loads(read_source(binding_path, binding_id)) + checks = [ + binding.get("outputs", {}).get("response", {}).get("sha256") == sources[source_prefix + "response.json"]["sha256"], + binding.get("outputs", {}).get("report", {}).get("sha256") == sources[source_prefix + "assessment.md"]["sha256"], + binding.get("native_result_sha256") == sources.get(source_prefix + "native-result.json", {}).get("sha256"), + ] + if overlay.get("native_result_sha256"): + checks.append(overlay["native_result_sha256"] == sources[source_prefix + "native-result.json"]["sha256"]) + if overlay.get("output_binding_sha256"): + checks.append(overlay["output_binding_sha256"] == sources[binding_id]["sha256"]) + result["evidence_binding"] = "hashes-match" if all(checks) else "hash-mismatch" + if not all(checks): + warnings.append(f"{jid}: retained output binding hash mismatch; do not use as a finalized outcome") + return result + + rounds = [] + rows = [] + other_judgments = [] + for plan in allocation["rounds"]: + number = plan["round"] + ledger = ledgers.get(number) + by_id = {r["run"]: r for r in ledger["runs"]} if ledger else {} + round_rows = [] + for assignment in sorted(plan["launch_order"], key=lambda r: r["run"]): + run_id = assignment["run"] + run = by_id.get(run_id, {}) + row = { + "run": run_id, "iteration": number, + "condition": assignment["condition"], "replicate": assignment["replicate"], + "status": run.get("status", "planned" if not ledger else "not-started"), + "worker_result_commit": run.get("worker_head_commit"), + "worker_finished_at": run.get("finished_at"), + "worker_elapsed_seconds": run.get("worker_elapsed_seconds"), + "result_url": f"{REMOTE}/tree/{run['worker_head_commit']}" if run.get("worker_head_commit") else None, + "primary": None, "retrieval": None, + "duplicate_assigned": run_id in plan["duplicate_judgments"], + } + for entry in run.get("judgments", []): + outcome = judgment(run_id, entry) + if outcome["role"] == "primary": + row["primary"] = outcome + else: + other_judgments.append({"run": run_id, **outcome}) + retention = run.get("independent_retention_evidence", {}) + if retention.get("path") and Path(retention["path"]).exists(): + source_id = run_id + "/recipient-check.json" + receipt = json.loads(read_source(Path(retention["path"]), source_id)) + annex_count = next((receipt[key] for key in ("annex_paths_verified", "annex_paths", "annex_files") if key in receipt), None) + row["retrieval"] = { + "verified": receipt.get("passed", receipt.get("success")), + "annex_paths_verified": annex_count, + "scope": "coordinator-preservation-of-exact-worker-stop", + "worker_delivery_credit": False, + "scientific_execution": False, + "completed_at": receipt.get("finished_at", receipt.get("completed_at")), + "source_id": source_id, + } + round_rows.append(row) + rows.extend(round_rows) + rounds.append({ + "iteration": number, "status": "recorded-in-progress" if ledger else "planned", + "final_untuned_evaluation": plan.get("final_untuned_evaluation"), + "allocated_workers": len(plan["launch_order"]), + "allocated_primary_judgments": len(plan["launch_order"]), + "allocated_duplicate_judgments": len(plan["duplicate_judgments"]), + "skills_commit": ledger.get("skills_commit") if ledger else None, + "ledger_updated_at": ledger.get("last_updated_at") if ledger else None, + "workers_finished": sum(row["worker_result_commit"] is not None for row in round_rows), + "completed_primary_judgments": sum(row["primary"] is not None and row["primary"]["status"] == "completed" for row in round_rows), + }) + output = { + "schema_version": 1, "study": "narps", "comparison_id": "narps-v1", + "snapshot_at_utc": now.isoformat(), + "snapshot_at_eastern": now.astimezone(ZoneInfo("America/New_York")).isoformat(), + "coordinator_head": head, "coordinator_url": REMOTE, + "allocation_sha256": sources["allocation.json"]["sha256"], + "disposition_sha256": sources["measurement-disposition-01.json"]["sha256"], + "interpretation": { + "checklist": "Descriptive item counts, not a combined score or certification. Partial never counts as met. N/A and invalid/unavailable items are excluded only from the explicitly comparable applicable denominator. Not-checked items remain in that denominator and are shown separately.", + "scientific_adequacy": "Judge support for the scientific analysis is separate from support for the hypothesis. Infrastructure uncertainty flags preserve the raw scientific classification without regrading it.", + "replay": "Assessor-infrastructure failures are unavailable, not worker failures. Same-host replay does not establish cross-host portability.", + "retrieval": "Coordinator preservation verifies exact stopped-worker bytes; it is not worker delivery credit or successful scientific execution.", + "missing": "Missing assessments and future runs are missing observations, never zero scores. Supplementary judgments cannot replace assigned primaries or duplicates.", + "publication": "Source hashes bind original local records. A null public_url means publication of that raw source is not established by this export; result_commit links are independent from assessment publication.", + }, + "rounds": rounds, "rows": rows, "other_judgments": other_judgments, + "sources": sources, "warnings": warnings, + } + serialized = json.dumps(output, indent=2, sort_keys=True) + "\n" + if re.search(r"/Users/|/home/|file://", serialized): + raise RuntimeError("Unexpected host path in public snapshot") + args.out.parent.mkdir(parents=True, exist_ok=True) + args.out.write_text(serialized) + print(json.dumps({"rows": len(rows), "sources": len(sources), + "completed_primary_judgments": sum(r["completed_primary_judgments"] for r in rounds), + "warnings": warnings, "snapshot_sha256": digest(serialized.encode())})) + + +if __name__ == "__main__": + main() diff --git a/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py b/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py new file mode 100644 index 00000000..70fb8916 --- /dev/null +++ b/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py @@ -0,0 +1,201 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +"""Regenerate poster SVG/PNG figures from the checked-in, hashed NARPS snapshot. + +No remote data or running worker state is used. See data/*/provenance.json for +original source revisions, input-map URLs and analysis methods. The figures +summarize saved worker outputs; this is not a new participant-level analysis. +""" + +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib.colors import Normalize +from matplotlib.lines import Line2D +import nibabel as nib +import numpy as np + + +ROOT = Path(__file__).resolve().parents[1] +DATA = ROOT / "data" / "narps-2026-10-15" +OUT = ROOT / "figures" +INK = "#17344c" +TEAL = "#007e87" +ORANGE = "#cf731d" +PALE = "#e8eef1" + + +def save(fig, stem): + for extension in ("svg", "png"): + fig.savefig( + OUT / f"{stem}.{extension}", dpi=150, facecolor="white", + metadata={"Date": None} if extension == "svg" else {}, + ) + svg = OUT / f"{stem}.svg" + svg.write_text("\n".join(line.rstrip() for line in svg.read_text().splitlines()) + "\n") + plt.close(fig) + + +def verify_snapshot(meta): + for relative, source in meta["sources"].items(): + digest = hashlib.sha256((DATA / relative).read_bytes()).hexdigest() + if digest != source["sha256"]: + raise ValueError(f"Snapshot hash mismatch: {relative}") + if len(meta["records"]) != 8: + raise ValueError("Expected the eight completed runs in this frozen snapshot") + + +def variability(meta): + fig, axes = plt.subplots(2, 1, figsize=(13.5, 7.7), sharex=True) + fig.subplots_adjust(left=.17, right=.985, top=.93, bottom=.235, hspace=.34) + conditions = meta["conditions"] + offsets = [-.18, 0, .18] + groups = [[r for r in meta["records"] if r["condition"] == c] for c in conditions] + for ax, field, scale, limits, ticks in ( + (axes[0], "mask_voxels", 1000, (178, 218), [180, 195, 210]), + (axes[1], "positive_whole_brain_fwe_voxels", 1, (-3, 31), [0, 12, 24]), + ): + ax.set_ylim(*limits) + ax.set_yticks(ticks) + ax.set_xlim(-.48, 3.48) + ax.grid(axis="y", color=PALE, lw=1.4, zorder=0) + ax.set_axisbelow(True) + for spine in ("top", "right", "bottom"): + ax.spines[spine].set_visible(False) + ax.spines["left"].set_color("#a9bac5") + ax.tick_params(axis="x", length=0, pad=18) + ax.tick_params(axis="y", length=0, pad=10) + for x, runs in enumerate(groups): + if not runs: + ax.text(x, sum(limits) / 2, "Result\nslot", ha="center", va="center", fontsize=24, color="#677d8d") + for j, row in enumerate(runs): + # Keep run labels separated when the saved results coincide. + dx = offsets[j] if len(runs) == 3 else [-.13, .13][j] + y = row[field] / scale + bonf = row["primary_correction"] == "Bonferroni" + ax.scatter(x + dx, y, marker="D" if bonf else "o", s=170, + color=ORANGE if bonf else TEAL, edgecolor="white", linewidth=1.4, zorder=3) + ax.annotate(row["run"][-2:], (x + dx, y), xytext=(0, 12), + textcoords="offset points", ha="center", fontsize=24, color=INK) + axes[0].set_ylabel("Search mask\n(1,000 voxels)", fontsize=25, labelpad=18) + axes[1].set_ylabel("Positive FWE\nvoxels", fontsize=25, labelpad=18) + axes[1].set_xticks(range(4), ["Baseline", "Discover\ngeneral", "Discover\nscience", "STAMPED\nexplicit"]) + fig.legend(handles=[ + Line2D([], [], marker="D", color=ORANGE, linestyle="None", markersize=12, label="Bonferroni"), + Line2D([], [], marker="o", color=TEAL, linestyle="None", markersize=12, label="Permutation max-T"), + ], loc="lower center", bbox_to_anchor=(.56, .01), frameon=False, ncol=2, fontsize=24, handletextpad=.5, columnspacing=1.3) + save(fig, "narps-analysis-variability") + + +def maps(meta): + files = { + "t": "one_sample_t.nii.gz", "coverage": "common_brain_mask.nii.gz", + "fwe": "max_t_fwe_p05_mask.nii.gz", "roi": "vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", + "anatomy": "anatomical-context.nii.gz", + } + images = {key: nib.load(DATA / "maps" / name) for key, name in files.items()} + ref = images["t"] + for img in images.values(): + if img.shape != ref.shape or not np.allclose(img.affine, ref.affine): + raise ValueError("Snapshot map geometry mismatch") + if not np.allclose(ref.affine[:3, :3], np.diag(np.diag(ref.affine[:3, :3]))): + raise ValueError("This display expects an axis-aligned map grid") + data = {key: img.get_fdata() for key, img in images.items()} + mask = data["coverage"].astype(bool) + sig = data["fwe"].astype(bool) + roi = data["roi"].astype(bool) + if mask.sum() != 198029 or sig.sum() != 24 or (sig & roi).sum() != 0: + raise ValueError("Saved map counts differ from run09 summary") + if np.any(sig & ~mask) or np.any(roi & ~mask): + raise ValueError("Corrected result or ROI outside analysis coverage") + + cmap = plt.get_cmap("RdBu_r").copy() + cmap.set_bad((0, 0, 0, 0)) + cmap.set_under(cmap(0)) + cmap.set_over(cmap(1)) + norm = Normalize(-6, 6, clip=True) + fig, axes = plt.subplots(1, 3, figsize=(13.5, 6.4)) + fig.subplots_adjust(left=.012, right=.985, top=.80, bottom=.30, wspace=.045) + cuts = meta["map_display"]["slice_centers_mni_mm"] + titles = ["Sagittal", "Coronal", "Axial"] + for dim, (ax, mm) in enumerate(zip(axes, cuts)): + index = int(round((mm - ref.affine[dim, 3]) / ref.affine[dim, dim])) + actual_mm = ref.affine[dim, dim] * index + ref.affine[dim, 3] + remaining = [i for i in range(3) if i != dim] + xdim, ydim = remaining + extent = [ + ref.affine[xdim, 3] - ref.affine[xdim, xdim] / 2, + ref.affine[xdim, 3] + ref.affine[xdim, xdim] * (ref.shape[xdim] - .5), + ref.affine[ydim, 3] - ref.affine[ydim, ydim] / 2, + ref.affine[ydim, 3] + ref.affine[ydim, ydim] * (ref.shape[ydim] - .5), + ] + take = lambda a: np.take(a, index, axis=dim).T + background = take(data["anatomy"]) + ax.imshow(background, origin="lower", extent=extent, cmap="gray", vmin=0, vmax=.9, interpolation="nearest") + values = np.ma.masked_where(~take(mask), take(data["t"])) + ax.imshow(values, origin="lower", extent=extent, cmap=cmap, norm=norm, alpha=.82, interpolation="nearest") + for contour, color, linewidth in ((roi, "#ffd54a", 2.5), (sig, "#4effe0", 2.8)): + plane = take(contour) + if plane.any(): + ax.contour(plane, levels=[.5], origin="lower", extent=extent, + colors=[color], linewidths=linewidth) + ax.set_facecolor("black") + if dim == 0: + ax.set_xlim(-114, 84) + ax.set_ylim(-63, 89) + corners = ("P", "A") + else: + ax.set_xlim(-86, 86) + ax.set_ylim((-63, 89) if dim == 1 else (-114, 84)) + corners = ("L", "R") + ax.set_title(f"{titles[dim]}\n{'xyz'[dim]} = {actual_mm:g} mm", fontsize=24, pad=13) + for x, letter in zip((.035, .965), corners): + ax.text(x, .055, letter, transform=ax.transAxes, ha="center", color="white", fontsize=24, weight="bold") + ax.set_xticks([]) + ax.set_yticks([]) + for spine in ax.spines.values(): + spine.set_visible(False) + cax = fig.add_axes([.055, .135, .31, .032]) + colorbar = fig.colorbar(plt.cm.ScalarMappable(norm=norm, cmap=cmap), cax=cax, orientation="horizontal", ticks=[-6, 0, 6]) + colorbar.ax.set_xticklabels(["≤−6", "0", "≥6"]) + colorbar.ax.tick_params(labelsize=24, length=0, pad=7) + colorbar.ax.set_title("Unthresholded group t", fontsize=24, pad=13, loc="left") + fig.legend(handles=[ + Line2D([], [], color="#d7a700", linewidth=4, label="vmPFC region"), + Line2D([], [], color="#00a88e", linewidth=4, label="Positive FWE p ≤ .05"), + ], loc="lower right", bbox_to_anchor=(.985, .07), frameon=False, fontsize=24) + fig.text(.055, .018, "Gray anatomy: outside common coverage", fontsize=24, color=INK) + save(fig, "narps-group-map") + + +def main(): + plt.rcParams.update({ + "font.family": "DejaVu Sans", "font.size": 24, "text.color": INK, + "axes.labelcolor": INK, "axes.titlecolor": INK, + "xtick.color": INK, "ytick.color": INK, + "svg.fonttype": "none", "svg.hashsalt": "stamped-narps-poster-2026-10-15", + }) + meta = json.loads((DATA / "provenance.json").read_text()) + verify_snapshot(meta) + OUT.mkdir(exist_ok=True) + variability(meta) + maps(meta) + outputs = sorted(OUT.glob("narps-*.svg")) + sorted(OUT.glob("narps-*.png")) + (OUT / "narps-figure-manifest.json").write_text(json.dumps({ + "input_provenance_sha256": hashlib.sha256((DATA / "provenance.json").read_bytes()).hexdigest(), + "render_script_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), + "software": {"numpy": np.__version__, "matplotlib": matplotlib.__version__, "nibabel": nib.__version__}, + "output_sha256": {p.name: hashlib.sha256(p.read_bytes()).hexdigest() for p in outputs}, + }, indent=2) + "\n") + print("Verified snapshot hashes and map counts; rendered two SVG and PNG figures.") + + +if __name__ == "__main__": + main() diff --git a/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py b/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py new file mode 100644 index 00000000..fdacd0e4 --- /dev/null +++ b/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +"""Freeze the completed NARPS worker outputs used by the poster figures. + +Run explicitly against existing worker checkouts and coordinator capture records. +This copies no participant images and never reruns or modifies the study. +Rendering the committed snapshot uses render-narps-figures.py and needs no network. +""" + +from __future__ import annotations + +import argparse +from datetime import datetime, timezone +import hashlib +import json +from pathlib import Path +import shutil +import subprocess + +import nibabel as nib +import nilearn +from nilearn import datasets, image + + +POSTER = Path(__file__).resolve().parents[1] +SNAPSHOT = POSTER / "data" / "narps-2026-10-15" +REPOSITORY = "https://github.com/leej3/stamped-in-practice" +SUMMARIES = { + "01": "analysis_summary.json", + "02": "results.json", + "03": "summary.json", + "05": "run_summary.json", + "06": "analysis_results.json", + "07": "analysis_results.json", + "08": "analysis_summary.json", + "09": "results.json", +} + + +def sha256(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def git(path: Path, *args: str) -> str: + return subprocess.check_output(["git", "-C", str(path), *args], text=True).strip() + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--workers-root", type=Path, required=True) + parser.add_argument("--capture-root", type=Path, required=True) + parser.add_argument("--snapshot-utc", required=True, + help="UTC cutoff for selecting completed results") + args = parser.parse_args() + SNAPSHOT.mkdir(parents=True, exist_ok=True) + sources: dict[str, dict] = {} + records = [] + + def copy_source(worker: Path, relative: str, destination: str) -> Path: + src = worker / relative + dst = SNAPSHOT / destination + revision = git(worker, "rev-parse", "HEAD") + if git(worker, "status", "--porcelain", "--", relative): + raise ValueError(f"Source is not a clean committed file: {src}") + dst.parent.mkdir(parents=True, exist_ok=True) + shutil.copyfile(src, dst) + sources[destination] = { + "sha256": sha256(dst), + "bytes": dst.stat().st_size, + "source_repository": REPOSITORY, + "source_revision": revision, + "source_path": relative, + "source_git_object": git(worker, "rev-parse", f"HEAD:{relative}"), + "source_url": f"{REPOSITORY}/blob/{revision}/{relative}", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + } + if src.is_symlink(): + sources[destination]["source_annex_key"] = src.readlink().name + return dst + + for number, filename in SUMMARIES.items(): + run = f"narps-r1-{number}" + worker = args.workers_root / run + assignment_path = args.capture_root / run / "launch/native/condition-assignment.json" + assignment = json.loads(assignment_path.read_text()) + summary_path = copy_source(worker, f"results/{filename}", f"summaries/{run}.json") + d = json.loads(summary_path.read_text()) + condition = assignment["condition"] + if number == "01": + mask, positive = d["voxels_tested"], d["parametric_bonferroni_fwe05_voxels"] + elif number == "02": + mask = d["analysis_mask_voxels"] + positive = d["whole_brain_bonferroni_fwe_voxels_p_lt_0.05"] + elif number == "03": + mask, positive = d["analysis_voxels"], d["n_whole_brain_fwer_significant"] + elif number == "05": + mask = d["mask_voxels_common_nonzero"] + positive = d["test"]["positive_whole_brain_fwe_significant_voxels"] + elif number == "06": + mask = d["analysis"]["mask_voxels"] + positive = d["analysis"]["whole_brain_fwe05_voxel_count"] + elif number == "07": + mask, positive = d["whole_brain_voxels"], d["significant_positive_whole_brain_voxels"] + elif number == "08": + mask, positive = d["n_voxels_tested"], d["significant_voxels_fwe"] + else: + mask = d["common_mask_voxels"] + positive = d["significant_voxels_fwe_p_le_0_05"] + records.append({ + "run": run, + "condition": condition, + "condition_assignment_sha256": sha256(assignment_path), + "condition_coordinator_revision": assignment["coordinator_commit"], + "condition_assignment": { + k: assignment[k] for k in ( + "condition", "requested_condition", "config_sha256", + "additional_prompt_sha256", "supplied_skills_commit" + ) + }, + "summary": str(summary_path.relative_to(SNAPSHOT)), + "mask_voxels": mask, + "positive_whole_brain_fwe_voxels": positive, + "primary_correction": "Bonferroni" if number in {"01", "02"} else "max-T", + }) + + worker = args.workers_root / "narps-r1-09" + for filename in ( + "one_sample_t.nii.gz", "common_brain_mask.nii.gz", + "max_t_fwe_p05_mask.nii.gz", "vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", + ): + copy_source(worker, f"results/{filename}", f"maps/{filename}") + copy_source(worker, "input/sources.json", "participant-map-sources.json") + copy_source(worker, "scripts/analyze_gain.py", "source-analysis-run09.py") + + # Anatomical context only: a distributed MNI template, not participant anatomy. + ref = nib.load(SNAPSHOT / "maps/one_sample_t.nii.gz") + template = image.resample_to_img( + datasets.load_mni152_template(resolution=2), ref, + interpolation="continuous", force_resample=True, copy_header=True, + ) + destination = "maps/anatomical-context.nii.gz" + nib.save(template, SNAPSHOT / destination) + sources[destination] = { + "sha256": sha256(SNAPSHOT / destination), + "bytes": (SNAPSHOT / destination).stat().st_size, + "source_url": "https://nilearn.github.io/stable/modules/generated/nilearn.datasets.load_mni152_template.html", + "source_description": "Nilearn bundled skull-stripped ICBM152 MNI template; anatomical context only", + "nilearn_version": nilearn.__version__, + "transformation": "load_mni152_template(resolution=2), continuous resampling to run09 t-map grid", + } + result = { + "result_selection_cutoff_utc": args.snapshot_utc, + "snapshot_generated_utc": datetime.now(timezone.utc).isoformat(), + "study": "NARPS Hypothesis 1, AO86 equal-indifference participant gain maps", + "paper": "https://doi.org/10.1038/s41586-020-2314-9", + "data": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", + "participant_maps": "https://neurovault.org/collections/4932/", + "n_participants": 54, + "conditions": ["baseline", "discover-general", "discover-science", "stamped-explicit"], + "records": records, + "missing_completed_results": { + "discover-general": ["narps-r1-04"], + "stamped-explicit": ["narps-r1-10", "narps-r1-11", "narps-r1-12"], + }, + "comparison_scope": "Descriptive differences among completed worker analyses of the same 54 participant maps. Mask rules and correction methods differ; these are not causal estimates of condition effects. Failed or incomplete runs are never assigned a zero value.", + "representative_map_run": "narps-r1-09", + "representative_map_selection": "A completed run using common nonzero coverage for every participant and a verifiable corrected mask; it is an example, not an average or a condition comparison.", + "map_display": { + "statistic": "unthresholded one-sample t; signed colors, clipped at +/- 6", + "mask": "common nonzero coverage across all 54 participants; no color outside coverage", + "roi": "AAL SPM12 bilateral Frontal_Med_Orb parcels, intersected with common coverage; descriptive vmPFC localization", + "corrected": "positive-direction permutation max-T, 10,000 sign flips, whole-brain FWE p <= .05", + "slice_centers_mni_mm": [-2, 24, -3.599997043609619], + "orientation": "neurological: left hemisphere on image left in coronal and axial panels", + }, + "sources": sources, + } + (SNAPSHOT / "provenance.json").write_text(json.dumps(result, indent=2) + "\n") + print(f"Snapshotted {len(records)} completed runs and {len(sources)} source files") + + +if __name__ == "__main__": + main() diff --git a/2026-usrse/stamped-ai-study/source-manifest.json b/2026-usrse/stamped-ai-study/source-manifest.json index 0bb43e99..1bc8dc52 100644 --- a/2026-usrse/stamped-ai-study/source-manifest.json +++ b/2026-usrse/stamped-ai-study/source-manifest.json @@ -6,7 +6,7 @@ "html": "2026-usrse/orinoco-lite_poster.html" }, "submitted_title": "STAMPED in Practice: Reproducing a Scientific Result Using ABCD Neuroimaging Data", - "current_scope": "Public mixed-gambles response-time case study; ABCD reproduction not performed.", + "current_scope": "NARPS group gain-effect reproduction and outcome-guided STAMPED skill development; working poster draft with open result slots.", "authors": [ "John A. Lee", "Austin Macdonald", diff --git a/2026-usrse/stamped-ai-study/update-results.py b/2026-usrse/stamped-ai-study/update-results.py index 56119019..0c594093 100644 --- a/2026-usrse/stamped-ai-study/update-results.py +++ b/2026-usrse/stamped-ai-study/update-results.py @@ -1,240 +1,62 @@ #!/usr/bin/env python3 # SPDX-FileCopyrightText: 2026 Center for Open Neuroscience # SPDX-License-Identifier: Apache-2.0 -"""Copy checked evaluator evidence into editable poster text; never run workers. - -The generated JSON preserves precise values and source hashes. Display rounding -applies only to HTML. Missing evaluations stay pending. No study result is -inferred from a worker's self-report or a successful process return code. -""" -import argparse -import hashlib +"""Render all allocated iterations from saved assessments, without network access.""" import html import json -import math -import re from pathlib import Path -HERE = Path(__file__).resolve().parent -WEB = ("https://github.com/leej3/stamped-ai-research/blob/" - "codex/stamped-poster-study/") -ARMS = ("baseline", "treatment") - - -def load(root, relative, sources): - path = root / relative - raw = path.read_bytes() - sources[relative] = hashlib.sha256(raw).hexdigest() - return json.loads(raw) - - -def status(value): - if value is True: - return "passed" - if value is False: - return "failed" - return "pending" - - -def wall(value): - if not isinstance(value, (int, float)) or not math.isfinite(value) or value < 0: - raise ValueError(f"Invalid elapsed seconds: {value!r}") - return value - - -def numbers_match(left, right, label): - if len(left) != len(right) or any(not math.isfinite(v) for v in [*left, *right]): - raise ValueError(f"Invalid numeric evidence in {label}") - return all(abs(a - b) <= 1e-6 for a, b in zip(left, right, strict=True)) - - -def replace(text, key, content): - pattern = rf"().*?()" - output, count = re.subn(pattern, lambda m: m[1] + "\n" + content + "\n " + m[2], text, flags=re.S) - if count != 1: - raise ValueError(f"Expected exactly one {key} section, found {count}") - return output - - -def linked(label, evidence): - return f'{html.escape(label)}' +ROOT = Path(__file__).resolve().parent +CONDITIONS = [('baseline', 'Baseline'), ('discover-general', 'General'), + ('discover-science', 'Science'), ('stamped-explicit', 'STAMPED')] +EVIDENCE = 'https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json' def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--study-root", required=True, type=Path) - parser.add_argument("--require-complete", action="store_true", - help="Refuse any unassessed arm before changing poster files.") - args = parser.parse_args() - root = args.study_root.resolve(strict=True) - prefix = "research/mixed-gambles-design/evaluator" - sources = {} - stages = [] - for number, label in (("01", "One person"), ("02", "Cohort"), ("03", "Sensitivity")): - row = {"stage": number, "label": label} - for arm in ARMS: - result = {"worker_wall_seconds": None, "correctness": "pending", - "fresh_replay": "pending", "evidence": None} - if number == "01": - rel = f"{prefix}/stage-01/assessment.json" - if (root / rel).exists(): - assessment = load(root, rel, sources) - value = assessment["arms"][arm] - result.update(worker_wall_seconds=wall(value["effort"]["wall_seconds"]), - correctness=value["numeric_comparison"]["status"], - fresh_replay=value["fresh_replay"]["status"], evidence=rel) - if value["counts_and_exclusions"]["status"] != "passed" or value["source_and_scope"]["status"] != "passed": - result["correctness"] = "failed" - else: - rel = f"{prefix}/stage-{number}/{arm}-evaluation.json" - if (root / rel).exists(): - value = load(root, rel, sources) - if value.get("worker_stopped") is not True: - raise ValueError(f"Evaluation is not a stopped attempt: {rel}") - result.update(worker_wall_seconds=wall(value["wall_seconds"]), - correctness=status(value.get("science_passed")), - fresh_replay=status(value.get("replay_passed")), evidence=rel) - result["worker_outcome"] = value.get("worker_outcome") - result["scalar_checks"] = value.get("versions", {}).get("original", {}).get("scalar_checks") - result["replay_byte_identical"] = value.get("replay_byte_identical") - if "screening_contract_passed" in value: - result["screening_contract"] = status(value["screening_contract_passed"]) - result["screening_contract_evidence"] = value.get("screening_contract_evidence") - for name in ("correctness", "fresh_replay"): - if result[name] not in {"passed", "failed", "pending", "not_attempted"}: - raise ValueError(f"Unsupported {name} status in {number} {arm}: {result[name]}") - row[arm] = result - stages.append(row) - reviewed_stages = [] - for number in ("01", "02", "03"): - assessment_rel = f"{prefix}/stage-{number}/assessment.json" - pair_rel = f"{prefix}/stage-{number}/pair-review.json" - if (root / assessment_rel).exists() and (root / pair_rel).exists(): - assessment = load(root, assessment_rel, sources) - pair = load(root, pair_rel, sources) - if all(pair.get(k) is True for k in ("both_arms_stopped", "failures_retained", - "replay_accounted", "scientific_checks_accounted")): - if set(assessment.get("arms", {})) != set(ARMS): - raise ValueError(f"Pair assessment lacks an arm: {assessment_rel}") - reviewed_stages.append(number) - complete = (len(reviewed_stages) == 3 and - all(row[arm][name] != "pending" for row in stages for arm in ARMS - for name in ("correctness", "fresh_replay"))) - if args.require_complete and not complete: - raise ValueError("At least one arm or paired assessment is incomplete; no poster files changed.") - - rows = [] - names = {"passed": "Passed", "failed": "Failed", "pending": "Pending", - "not_attempted": "Not attempted"} - for row in stages: - cells = [] - for arm in ARMS: - value = row[arm] - timing = f'{value["worker_wall_seconds"]:.0f} s' if value["worker_wall_seconds"] is not None else "Pending" - if value["evidence"]: - timing = linked(timing, value["evidence"]) - cells.append(f'{timing}' - f'Data checks: {names[value["correctness"]]}' - f'Replay: {names[value["fresh_replay"]]}' - + (f'' - f'Screening: {names[value["screening_contract"]]}' - if "screening_contract" in value else "") + '') - rows.append(f'{row["label"]}{"".join(cells)}') - matrix = ('' - '' - '' + "\n".join(rows) + '
TaskBaselineWith skills
') - - science = [] - scientific_values = {} - if all(stages[0][arm]["correctness"] == "passed" for arm in ARMS): - rel = f"{prefix}/stage-01/baseline-original-normalized.json" - value = load(root, rel, sources) - summaries = {row["run"]: row["rt_ms"] for row in value["run_summaries"]} - change = value["participant_changes_ms"]["sub-01"] - scientific_values["stage01"] = {"run01_median_ms": summaries["01"], - "run03_median_ms": summaries["03"], "change_ms": change} - science.append(f'

One participant: median response time ' - f'{summaries["01"]:.0f} → {summaries["03"]:.0f} ms; ' - f'change {change:+.0f} ms. Both arms agree.

') - cohort = [] - for arm in ARMS: - if stages[1][arm]["correctness"] == "passed": - rel = f"{prefix}/stage-02/{arm}-original-normalized.json" - value = load(root, rel, sources) - cohort.append((arm, value["cohort"])) - if cohort: - chosen = cohort[0][1] - agree = True - for _, candidate in cohort[1:]: - agree = agree and numbers_match([chosen["n"], chosen["mean_change_ms"], *chosen["ci95_ms"]], - [candidate["n"], candidate["mean_change_ms"], *candidate["ci95_ms"]], "stage 02 cohort") - scientific_values["stage02"] = {**chosen, "checked_arms": [arm for arm, _ in cohort], - "cohort_by_arm": dict(cohort), "checked_arms_agree": agree if len(cohort) == 2 else None} - lo, hi = chosen["ci95_ms"] - if len(cohort) == 2: - scope = "Both arms agree." if agree else "Baseline shown; checked arms disagree. See study evidence." - else: - scope = f'Verified {"skills" if cohort[0][0] == "treatment" else "baseline"} arm only; see paired outcomes.' - science.append(f'

{chosen["n"]} participants: average within-person change ' - f'{chosen["mean_change_ms"]:+.1f} ms; 95% bootstrap interval ' - f'[{lo:.1f}, {hi:.1f}] ms. {scope}

') - science.append('

Change is third minus first run; the interval includes zero. ' - 'Missing responses limit interpretation. This is not a causal effect.

') - if "03" not in reviewed_stages: - science.append('

Sensitivity results await assessment.

') - else: - variants = {} - variant_names = {"mean_band", "mean_primary", "median_band", "median_primary"} - for arm in ARMS: - if stages[2][arm]["correctness"] != "passed": - continue - rel = f"{prefix}/stage-03/{arm}-original-normalized.json" - value = load(root, rel, sources) - if set(value["all_variants"]) != variant_names: - raise ValueError(f"Expected all four declared sensitivity variants: {rel}") - variants[arm] = {k: v["cohort"] for k, v in value["all_variants"].items()} - agree = None - if len(variants) == 2: - agree = all(numbers_match( - [variants["baseline"][name]["n"], variants["baseline"][name]["mean_change_ms"], *variants["baseline"][name]["ci95_ms"]], - [variants["treatment"][name]["n"], variants["treatment"][name]["mean_change_ms"], *variants["treatment"][name]["ci95_ms"]], - "stage 03 " + name) for name in sorted(variant_names)) - scientific_values["stage03"] = {"variants_by_arm": variants, "checked_arms": list(variants), "checked_arms_agree": agree} - if variants: - shown_arm = next(iter(variants)) - shown = variants[shown_arm] - changes = [v["mean_change_ms"] for v in shown.values()] - include_zero = sum(v["ci95_ms"][0] <= 0 <= v["ci95_ms"][1] for v in shown.values()) - interval_note = ("all four 95% intervals include zero" if include_zero == 4 - else f"{include_zero} of four 95% intervals include zero") - scope = "" - if len(variants) == 1: - scope = f' Verified {"skills" if shown_arm == "treatment" else "baseline"} arm only.' - elif not agree: - scope = " Baseline shown; checked arms disagree." - science.append('

Sensitivity: median/mean summaries, with or without a ' - f'0.2–3.0 s response-time band, gave {min(changes):+.1f} to {max(changes):+.1f} ms; ' - f'{interval_note}.{scope}

') - else: - science.append('

Neither arm produced a verified sensitivity result. ' - 'Failed or missing checks are retained in the study evidence.

') - - data = {"status": "complete_evaluations" if complete else "interim_checked_results", - "timing_definition": "Worker wall seconds only; setup and evaluator replay excluded; 480-second cap per attempt.", - "display_rounding": "Whole seconds for worker timing; one decimal millisecond for cohort results.", - "data_check_scope": "Correctness on the pinned source data, not complete implementation-contract correctness. Separate screening probes are shown when available.", - "reviewed_stages": reviewed_stages, - "property_judgment_scope": "Three reviewed pairs; worker evidence distinguished from supplied seeds and coordinator replay/curation; no aggregate score or general certification." if complete else "Interim stage-specific evidence; no aggregate score or general certification.", - "stages": stages, "scientific_results": scientific_values, "source_sha256": sources} - document = (HERE / "index.html").read_text() - document = replace(document, "ARM_RESULTS", matrix) - document = replace(document, "SCIENCE_RESULTS", "\n".join(science)) - # Write only once every source and generated claim has been checked above. - (HERE / "results-data.json").write_text(json.dumps(data, indent=2, allow_nan=False) + "\n") - (HERE / "index.html").write_text(document) - print(json.dumps({"evaluations_complete": complete, "checked_arms": sum(row[arm]["correctness"] != "pending" for row in stages for arm in ARMS), - "source_files": len(sources), "output": str(HERE / "results-data.json")})) - - -if __name__ == "__main__": + data = json.loads((ROOT / 'data/assessment-snapshot.json').read_text()) + assert not data['warnings'], data['warnings'] + parts = ['', + ''] + for iteration in data['rounds']: + number = iteration['iteration'] + revision = iteration.get('skills_commit') + label = f'Iteration {number}' + (' · final evaluation' if iteration['final_untuned_evaluation'] else '') + if revision: + label += f' · {revision[:7]}' + parts.append(f'') + for condition, label in CONDITIONS: + rows = sorted((r for r in data['rows'] if r['iteration'] == number and r['condition'] == condition), key=lambda r:r['replicate']) + assert len(rows) == 3 + run_links, science, replay, counts = [], [], [], [] + for row in rows: + rid = row['run'].split('-')[-1] + target = row.get('result_url') or EVIDENCE + run_links.append(f'{rid}') + primary = row['primary'] + if not primary or primary['status'] != 'completed': + science.append('—'); replay.append('—'); counts.append('—') + continue + sc = primary['science'] + sci = {'supported':'S', 'qualified':'Q', 'not supported':'N', 'not checked':'—'}.get(sc['reported_adequacy'], '?') + if sc['display_qualifier']: + sci += '*' + source = data['sources'][sc['source_id']].get('public_url') or EVIDENCE + science.append(f'{sci}') + rp = primary['replay'] + replay.append({'passed':'P', 'pass':'P', 'partial':'~', 'failed':'F', 'unavailable':'NA', 'invalid':'NA'}.get(rp['comparable_status'], '—') if rp else '—') + ck = primary['checklist'] + val = ck['comparable_counts'] + counts.append('/'.join(str(val[k]) for k in ('met','partial','unmet'))) + # Three values in each cell map left-to-right onto the run IDs. + parts.append(''+ + ''.join('' for values in (science,replay,counts))+'') + parts.append('
Condition / runsScienceReplaySTAMPED
met / partial / unmet
{label}
'+label+''+' · '.join(run_links)+''+' · '.join(values)+'
') + content = (ROOT/'index.html').read_text() + start, tail = content.split('',1) + _, end = tail.split('',1) + (ROOT/'index.html').write_text(start+'\n'+ '\n'.join(parts)+'\n'+end) + print(json.dumps({'allocated_runs':len(data['rows']), 'iterations':len(data['rounds']), 'completed_primary_judgments':sum(r['primary'] is not None and r['primary']['status']=='completed' for r in data['rows'])})) + + +if __name__ == '__main__': main() diff --git a/REUSE.toml b/REUSE.toml index cab02adb..9050c7b7 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -552,3 +552,30 @@ path = [ precedence = "aggregate" SPDX-FileCopyrightText = ["2026 Center for Open Neuroscience (composition)", "Dartmouth College (institutional artwork)", "NOASSERTION"] SPDX-License-Identifier = "CC-BY-SA-4.0 AND LicenseRef-ThirdPartyLogo" + +# Reproducible NARPS poster code and generated evidence. +[[annotations]] +path = ["2026-usrse/stamped-ai-study/scripts/*.py", "2026-usrse/stamped-ai-study/pixi.toml", "2026-usrse/stamped-ai-study/package*.json"] +precedence = "closest" +SPDX-FileCopyrightText = "2026 Center for Open Neuroscience" +SPDX-License-Identifier = "Apache-2.0" + +[[annotations]] +path = ["2026-usrse/stamped-ai-study/data/assessment-snapshot.json", "2026-usrse/stamped-ai-study/data/narps-figure-guidance.json", "2026-usrse/stamped-ai-study/data/*/provenance.json", "2026-usrse/stamped-ai-study/figures/*.json", "2026-usrse/stamped-ai-study/figures/narps-analysis-variability.*"] +precedence = "closest" +SPDX-FileCopyrightText = "2026 Center for Open Neuroscience" +SPDX-License-Identifier = "CC-BY-SA-4.0" + +# Scientific source artifacts are attributed in the input provenance manifest. +# Copying them here does not relicense their upstream data, atlas or code. +[[annotations]] +path = ["2026-usrse/stamped-ai-study/data/*/maps/**", "2026-usrse/stamped-ai-study/data/*/summaries/**", "2026-usrse/stamped-ai-study/data/*/participant-map-sources.json", "2026-usrse/stamped-ai-study/data/*/source-analysis-run09.py"] +precedence = "override" +SPDX-FileCopyrightText = "NOASSERTION" +SPDX-License-Identifier = "LicenseRef-ThirdPartyMixed" + +[[annotations]] +path = ["2026-usrse/stamped-ai-study/figures/narps-group-map.*"] +precedence = "override" +SPDX-FileCopyrightText = ["2026 Center for Open Neuroscience (composition)", "NOASSERTION"] +SPDX-License-Identifier = "CC-BY-SA-4.0 AND LicenseRef-ThirdPartyMixed" From f9b0e6c597669ce5cd83e98d836231c3f6fdfa93 Mon Sep 17 00:00:00 2001 From: leej3 Date: Thu, 15 Oct 2026 23:56:21 -0400 Subject: [PATCH 04/15] test(poster): verify all published evidence destinations Confirm all 38 distinct poster destinations resolve after publication, including the new item-level assessment export. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- .../stamped-ai-study/exports/link-audit.json | 89 ++++++++++--------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/2026-usrse/stamped-ai-study/exports/link-audit.json b/2026-usrse/stamped-ai-study/exports/link-audit.json index 0892a9d2..b6c057a5 100644 --- a/2026-usrse/stamped-ai-study/exports/link-audit.json +++ b/2026-usrse/stamped-ai-study/exports/link-audit.json @@ -1,11 +1,11 @@ { - "html_audit_sha256": "d93d93b6df686dd95ea97264cf99df0b820834661edd4b861af2e3aa6bcd8fea", - "checked_at": "2026-10-16T03:51:45.060633+00:00", + "html_audit_sha256": "5d92a2834f017c67c4d21183b8a7eccdbbe74dc53a0989a89da82ec8e1727d31", + "checked_at": "2026-10-16T03:56:05.430127+00:00", "authentication": "none", "results": [ { "url": "https://dev.centerforopenneuroscience.org/", - "checked_at": "2026-10-16T03:51:38.087872+00:00", + "checked_at": "2026-10-16T03:56:00.276064+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://dev.centerforopenneuroscience.org/", @@ -13,15 +13,15 @@ }, { "url": "https://doi.org/10.1038/s41586-020-2314-9", - "checked_at": "2026-10-16T03:51:38.088313+00:00", + "checked_at": "2026-10-16T03:56:00.276332+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=cc35ed6d-a124-45ec-b35c-52d546440458", + "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=6a6eb4a9-80c5-40ec-be7e-30e052a0988c", "passed": true }, { "url": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", - "checked_at": "2026-10-16T03:51:38.088428+00:00", + "checked_at": "2026-10-16T03:56:00.276413+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://openneuro.org/datasets/ds001734/versions/1.0.4", @@ -29,7 +29,7 @@ }, { "url": "https://github.com/con/skills/blob/b86e37ff9115e37541fd47aca73f49e13b5110bb/skills/assess-alignment-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T03:51:38.088507+00:00", + "checked_at": "2026-10-16T03:56:00.276484+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/b86e37ff9115e37541fd47aca73f49e13b5110bb/skills/assess-alignment-with-stamped-principles/SKILL.md", @@ -37,7 +37,7 @@ }, { "url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/align-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T03:51:38.337533+00:00", + "checked_at": "2026-10-16T03:56:00.474890+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/align-with-stamped-principles/SKILL.md", @@ -45,7 +45,7 @@ }, { "url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/create-stamped-project/SKILL.md", - "checked_at": "2026-10-16T03:51:38.710471+00:00", + "checked_at": "2026-10-16T03:56:00.807902+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/create-stamped-project/SKILL.md", @@ -53,7 +53,7 @@ }, { "url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/do-full-research-loop/SKILL.md", - "checked_at": "2026-10-16T03:51:38.820619+00:00", + "checked_at": "2026-10-16T03:56:00.819811+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/do-full-research-loop/SKILL.md", @@ -61,7 +61,7 @@ }, { "url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", - "checked_at": "2026-10-16T03:51:38.868509+00:00", + "checked_at": "2026-10-16T03:56:00.927803+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", @@ -69,7 +69,7 @@ }, { "url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", - "checked_at": "2026-10-16T03:51:39.186536+00:00", + "checked_at": "2026-10-16T03:56:01.288719+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", @@ -77,7 +77,7 @@ }, { "url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills", - "checked_at": "2026-10-16T03:51:39.329673+00:00", + "checked_at": "2026-10-16T03:56:01.328816+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills", @@ -85,7 +85,7 @@ }, { "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", - "checked_at": "2026-10-16T03:51:39.467334+00:00", + "checked_at": "2026-10-16T03:56:01.478844+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", @@ -93,14 +93,15 @@ }, { "url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", - "checked_at": "2026-10-16T03:51:39.700664+00:00", + "checked_at": "2026-10-16T03:56:01.724157+00:00", "method": "HEAD", - "http_status": 404, - "passed": false + "http_status": 200, + "final_url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", + "passed": true }, { "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", - "checked_at": "2026-10-16T03:51:39.744797+00:00", + "checked_at": "2026-10-16T03:56:01.842974+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", @@ -108,7 +109,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice", - "checked_at": "2026-10-16T03:51:39.852570+00:00", + "checked_at": "2026-10-16T03:56:01.858919+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice", @@ -116,7 +117,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", - "checked_at": "2026-10-16T03:51:40.122696+00:00", + "checked_at": "2026-10-16T03:56:02.161090+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", @@ -124,7 +125,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/report.md", - "checked_at": "2026-10-16T03:51:40.267451+00:00", + "checked_at": "2026-10-16T03:56:02.352538+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/report.md", @@ -132,7 +133,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", - "checked_at": "2026-10-16T03:51:40.286823+00:00", + "checked_at": "2026-10-16T03:56:02.383811+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", @@ -140,7 +141,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", - "checked_at": "2026-10-16T03:51:40.354573+00:00", + "checked_at": "2026-10-16T03:56:02.460472+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", @@ -148,7 +149,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", - "checked_at": "2026-10-16T03:51:40.764917+00:00", + "checked_at": "2026-10-16T03:56:02.599935+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", @@ -156,7 +157,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/sources.json", - "checked_at": "2026-10-16T03:51:40.765584+00:00", + "checked_at": "2026-10-16T03:56:02.860477+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/sources.json", @@ -164,7 +165,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/study-task.md", - "checked_at": "2026-10-16T03:51:40.794815+00:00", + "checked_at": "2026-10-16T03:56:02.929852+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/study-task.md", @@ -172,7 +173,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", - "checked_at": "2026-10-16T03:51:40.837905+00:00", + "checked_at": "2026-10-16T03:56:02.969943+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", @@ -180,7 +181,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", - "checked_at": "2026-10-16T03:51:41.268301+00:00", + "checked_at": "2026-10-16T03:56:03.091980+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", @@ -188,7 +189,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", - "checked_at": "2026-10-16T03:51:41.291840+00:00", + "checked_at": "2026-10-16T03:56:03.329933+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", @@ -196,7 +197,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", - "checked_at": "2026-10-16T03:51:41.313678+00:00", + "checked_at": "2026-10-16T03:56:03.372955+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", @@ -204,7 +205,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", - "checked_at": "2026-10-16T03:51:41.318552+00:00", + "checked_at": "2026-10-16T03:56:03.490172+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", @@ -212,7 +213,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", - "checked_at": "2026-10-16T03:51:41.694918+00:00", + "checked_at": "2026-10-16T03:56:03.498935+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", @@ -220,7 +221,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", - "checked_at": "2026-10-16T03:51:41.700598+00:00", + "checked_at": "2026-10-16T03:56:03.743227+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", @@ -228,7 +229,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", - "checked_at": "2026-10-16T03:51:41.796552+00:00", + "checked_at": "2026-10-16T03:56:03.754086+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", @@ -236,7 +237,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "checked_at": "2026-10-16T03:51:41.802692+00:00", + "checked_at": "2026-10-16T03:56:03.923068+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", @@ -244,7 +245,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "checked_at": "2026-10-16T03:51:42.149927+00:00", + "checked_at": "2026-10-16T03:56:03.956083+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", @@ -252,7 +253,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "checked_at": "2026-10-16T03:51:42.242859+00:00", + "checked_at": "2026-10-16T03:56:04.293257+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", @@ -260,7 +261,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", - "checked_at": "2026-10-16T03:51:42.269848+00:00", + "checked_at": "2026-10-16T03:56:04.293803+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", @@ -268,7 +269,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", - "checked_at": "2026-10-16T03:51:42.279838+00:00", + "checked_at": "2026-10-16T03:56:04.391339+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", @@ -276,7 +277,7 @@ }, { "url": "https://github.com/stamped-principles/stamped-paper", - "checked_at": "2026-10-16T03:51:42.651155+00:00", + "checked_at": "2026-10-16T03:56:04.443199+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/stamped-principles/stamped-paper", @@ -284,7 +285,7 @@ }, { "url": "https://neurovault.org/collections/4932/", - "checked_at": "2026-10-16T03:51:42.678609+00:00", + "checked_at": "2026-10-16T03:56:04.722140+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://neurovault.org/collections/4932/", @@ -292,7 +293,7 @@ }, { "url": "https://pbs.dartmouth.edu/", - "checked_at": "2026-10-16T03:51:42.678779+00:00", + "checked_at": "2026-10-16T03:56:04.764177+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://pbs.dartmouth.edu/", @@ -300,13 +301,13 @@ }, { "url": "https://www.repronim.org/", - "checked_at": "2026-10-16T03:51:42.843094+00:00", + "checked_at": "2026-10-16T03:56:04.875816+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://repronim.org/", "passed": true } ], - "all_passed": false, + "all_passed": true, "scope": "Public destination HTTP availability; annex content integrity is checked separately." } From 45209ef3493acd6fc3effa8a211d4f2acf6396af Mon Sep 17 00:00:00 2001 From: leej3 Date: Fri, 16 Oct 2026 00:43:58 -0400 Subject: [PATCH 05/15] docs(poster): foreground STAMPED and compare spatial agreement Explain the seven principles near the top and condense the study background and assistance instructions. Use named branch links throughout the poster. Replace the diagnostic scatterplots with corrected-positive agreement maps from all twelve first-iteration runs on shared coverage. Preserve exact input identities and regenerate the figures and numerical summaries offline. List completed-iteration assessments per run, retain future comparison slots, and update the collection plan. Validate the PDF, layout, QR codes, source hashes and anonymous retrieval of every annexed dependency. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- 2026-usrse/stamped-ai-study/.gitattributes | 1 + 2026-usrse/stamped-ai-study/README.md | 35 +- 2026-usrse/stamped-ai-study/build-poster.cjs | 9 +- .../stamped-ai-study/completion-plan.md | 28 +- .../data/assessment-snapshot.json | 857 +++++++++++++++-- .../data/narps-2026-10-15/provenance.json | 70 +- .../data/narps-figure-guidance.json | 23 - .../data/narps-spatial/derived-summary.json | 140 +++ .../data/narps-spatial/provenance.json | 885 ++++++++++++++++++ .../data/narps-spatial/render-manifest.json | 13 + .../data/narps-spatial/spatial-inputs.npz | 1 + .../exports/agent-visual-review.json | 20 +- .../stamped-ai-study/exports/html-audit.json | 132 +-- .../stamped-ai-study/exports/pdf-audit.json | 8 +- .../stamped-ai-study/exports/pdf-preview.png | 2 +- .../exports/retrieval-audit.json | 72 +- .../exports/stamped-ai-poster.pdf | 2 +- .../figures/narps-analysis-variability.png | 1 - .../figures/narps-analysis-variability.svg | 386 -------- .../figures/narps-figure-manifest.json | 10 +- .../figures/narps-group-map.png | 2 +- .../figures/narps-group-map.svg | 50 +- .../figures/narps-spatial-agreement.png | 1 + .../figures/narps-spatial-agreement.svg | 1 + 2026-usrse/stamped-ai-study/index.html | 119 +-- 2026-usrse/stamped-ai-study/pixi.toml | 4 +- 2026-usrse/stamped-ai-study/poster.css | 41 +- .../scripts/export-assessments.py | 55 +- .../scripts/extract-narps-spatial.py | 210 +++++ .../scripts/render-narps-figures.py | 49 +- .../scripts/render-narps-spatial.py | 135 +++ .../scripts/snapshot-narps-figures.py | 6 +- 2026-usrse/stamped-ai-study/update-results.py | 69 +- REUSE.toml | 6 +- 34 files changed, 2599 insertions(+), 844 deletions(-) delete mode 100644 2026-usrse/stamped-ai-study/data/narps-figure-guidance.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-spatial/derived-summary.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-spatial/provenance.json create mode 100644 2026-usrse/stamped-ai-study/data/narps-spatial/render-manifest.json create mode 120000 2026-usrse/stamped-ai-study/data/narps-spatial/spatial-inputs.npz delete mode 120000 2026-usrse/stamped-ai-study/figures/narps-analysis-variability.png delete mode 100644 2026-usrse/stamped-ai-study/figures/narps-analysis-variability.svg create mode 120000 2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.png create mode 120000 2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.svg create mode 100644 2026-usrse/stamped-ai-study/scripts/extract-narps-spatial.py create mode 100644 2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py diff --git a/2026-usrse/stamped-ai-study/.gitattributes b/2026-usrse/stamped-ai-study/.gitattributes index e02500fc..4a14175a 100644 --- a/2026-usrse/stamped-ai-study/.gitattributes +++ b/2026-usrse/stamped-ai-study/.gitattributes @@ -5,3 +5,4 @@ # Poster-specific image assets are distributed through the annex remote. assets/*.svg annex.largefiles=anything +*.npz annex.largefiles=anything diff --git a/2026-usrse/stamped-ai-study/README.md b/2026-usrse/stamped-ai-study/README.md index 352c54bb..ac3fce3c 100644 --- a/2026-usrse/stamped-ai-study/README.md +++ b/2026-usrse/stamped-ai-study/README.md @@ -3,7 +3,7 @@ An editable **44 × 44 inch** poster about improving STAMPED research skills through the scientific work they produce. It replaces the earlier behavioral example with the NARPS group-analysis study and presents the intended completed argument, with real example results and open slots for the remaining runs and revisions. -Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or retrieve [the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf). +Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or retrieve [the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf). The [completion plan](completion-plan.md) identifies the evidence needed to finish the poster and changes to data collection that can support it. No research workers or study protocols are changed by this poster module. @@ -13,11 +13,14 @@ No research workers or study protocols are changed by this poster module. - Outcomes matrix: all three allocated iterations and four conditions, generated from a saved assessment export; open cells remain missing observations. - Poster: local HTML/CSS, reusable institutional artwork, branded QR generation, a Pixi environment, a pinned browser dependency and PDF/layout checks. -The scientific panel illustrates [run 09](https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73), conditional on the supplied AO86 maps. -The native-analysis variability plot has eight completed runs; it deliberately preserves differing masks and corrections. -Figure provenance is in [data/narps-2026-10-15/provenance.json](data/narps-2026-10-15/provenance.json). +The scientific panel illustrates [run 09](https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09), conditional on the supplied AO86 maps. +The spatial comparison shows corrected-positive agreement across all twelve first-iteration runs, three per condition, on shared coverage. +Group t maps agree to numerical precision; native correction choices account for the displayed difference in positive extent. +Illustrative-map provenance is in [data/narps-2026-10-15/provenance.json](data/narps-2026-10-15/provenance.json). +Spatial source identities, coverage rules and display choices are in [data/narps-spatial/provenance.json](data/narps-spatial/provenance.json); [derived-summary.json](data/narps-spatial/derived-summary.json) contains the regenerated measurements. The [assessment data](data/assessment-snapshot.json) retain raw statuses, external validity overrides, missingness, source hashes and separate supplementary judgments. The exported records are sufficient to regenerate the poster's displayed numbers; full research objects remain linked in the study. +Reader-facing links open named branches; exact source revisions and hashes remain in the provenance records. ## Retrieve and build @@ -38,7 +41,7 @@ pixi run links The build uses saved local inputs and makes no requests for live study state. `pixi run build` regenerates figures and the outcomes table, then exports the poster. Before replacing tracked annexed outputs, run `pixi run git annex unlock assets figures exports/stamped-ai-poster.pdf exports/pdf-preview.png`. -The local `pixi.lock` is preserved on a separate environment snapshot branch, [`codex/env-stamped-poster-narps-20261015`](https://github.com/con/talks/tree/codex/env-stamped-poster-narps-20261015); it is excluded from poster history. +The local `pixi.lock` is preserved on a separate environment snapshot branch, [`codex/env-stamped-poster-spatial-20261016`](https://github.com/con/talks/tree/codex/env-stamped-poster-spatial-20261016); it is excluded from poster history. For an exact environment replay, retrieve that snapshot's `pixi.lock` into this directory before `pixi install --locked`. Institutional marks are reused from the ORINOCO Lite poster. @@ -67,9 +70,23 @@ The poster's primary judgments remain separate from duplicate and supplementary STAMPED cells contain met / partial / unmet counts, not an overall score. Remaining unavailable, not-checked and not-applicable items remain in the linked export. -The scientific input capture script documents the eight initial worker formats. -Extend its explicit parsers when adding new runs; do not use zero as a missing result or pool incompatible regional estimands. -See [completion-plan.md](completion-plan.md) before adding a common-support comparison. +The original input capture script preserves the illustrative analysis and its initial source summaries. +The spatial extraction separately records all twelve native masks, t maps and corrected-positive maps. +Do not use zero as a missing result or pool incompatible regional estimands. +See [completion-plan.md](completion-plan.md) before extending the spatial comparison to later iterations. + +To refresh spatial inputs from completed worker checkouts and their recorded assignments: + +```sh +pixi run python scripts/extract-narps-spatial.py \ + --workers-root /path/to/stamped-in-practice-workers/codex \ + --capture-root /path/to/narps-v1 +pixi run spatial-map +``` + +The compact NPZ preserves all twelve native support masks and corrected-positive maps, together with losslessly deduplicated t values on shared support and anatomical context. +Extraction checks participant-map identities, source cleanliness, native geometry, correction semantics, assignment and published result counts. +The renderer verifies the frozen input hash and recomputes both agreement maps and the numerical summary offline. ## Verification and provenance @@ -77,7 +94,7 @@ See [completion-plan.md](completion-plan.md) before adding a common-support comp The checks require one 44-inch square page, at least 24-point print text, no layout overflow, clickable PDF links, and all four QR codes decoded from PDF pixels. These are agent checks; author review remains part of poster preparation. -The original placeholder and superseded verification reports remain in Git history at [efb1b05](https://github.com/con/talks/tree/efb1b059ffdf70d4e13f40cd5085aff6500e5269/2026-usrse/stamped-ai-study). +Earlier designs and verification reports remain in the [poster history](https://github.com/con/talks/commits/codex/stamped-example-poster/2026-usrse/stamped-ai-study). [source-manifest.json](source-manifest.json) records the inherited layout and artwork. Composition and prose are CC BY-SA 4.0; scripts are Apache-2.0. diff --git a/2026-usrse/stamped-ai-study/build-poster.cjs b/2026-usrse/stamped-ai-study/build-poster.cjs index e32e3313..5766cdef 100644 --- a/2026-usrse/stamped-ai-study/build-poster.cjs +++ b/2026-usrse/stamped-ai-study/build-poster.cjs @@ -75,7 +75,7 @@ const sha = file => crypto.createHash('sha256').update(fs.readFileSync(file)).di } } } - for (const parent of poster.querySelectorAll('.study-main, .outcomes')) { + for (const parent of poster.querySelectorAll('.method-column, .science-column, .outcomes')) { const sections = [...parent.children]; for (let i = 1; i < sections.length; i++) { const previous = sections[i - 1].getBoundingClientRect(); @@ -90,16 +90,17 @@ const sha = file => crypto.createHash('sha256').update(fs.readFileSync(file)).di }); const qrs = [...poster.querySelectorAll('[data-qr]')].map(a => ({ name: a.dataset.qr, url: a.href, rect: rect(a.querySelector('img').getBoundingClientRect()) })); const links = [...new Set([...poster.querySelectorAll('a')].map(a => a.href))]; + const commitNavigationLinks = links.filter(url => /\/(tree|blob)\/[0-9a-f]{40}(\/|$)/.test(url)); const blocks = [...poster.querySelectorAll('.property-section, .property-table, .property-table tbody tr, .stages-section, .section-heading, .stage-cards, .stages-figure, .scientific-results, .scope-note, .outcomes > section')].map(el => ({ element: el.tagName, class: el.className, rect: rect(el.getBoundingClientRect()) })); - return { size_css_px: { width: bounds.width, height: bounds.height }, minimum_text_px: Math.min(...text.map(t => t.px)), text_node_count: text.length, small, outside, regionOverflow, internalOverflow, sectionOverlap, unlinkedImages, images, qrs, links, blocks }; + return { size_css_px: { width: bounds.width, height: bounds.height }, minimum_text_px: Math.min(...text.map(t => t.px)), text_node_count: text.length, small, outside, regionOverflow, internalOverflow, sectionOverlap, unlinkedImages, commitNavigationLinks, images, qrs, links, blocks }; }); audit.browser = browser.version(); audit.created_utc = new Date().toISOString(); - audit.source_sha256 = Object.fromEntries(['index.html', 'template.css', 'poster.css', 'build-poster.cjs', 'verify-pdf.py', 'verify-links.py', 'make-logo-qrs.py', 'source-manifest.json', 'update-results.py', 'data/assessment-snapshot.json', 'figures/narps-figure-manifest.json', 'scripts/render-narps-figures.py', 'pixi.toml', 'package-lock.json'].map(n => [n, sha(path.join(root, n))])); + audit.source_sha256 = Object.fromEntries(['index.html', 'template.css', 'poster.css', 'build-poster.cjs', 'verify-pdf.py', 'verify-links.py', 'make-logo-qrs.py', 'source-manifest.json', 'update-results.py', 'data/assessment-snapshot.json', 'figures/narps-figure-manifest.json', 'data/narps-spatial/render-manifest.json', 'scripts/render-narps-figures.py', 'scripts/render-narps-spatial.py', 'scripts/extract-narps-spatial.py', 'pixi.toml', 'package-lock.json'].map(n => [n, sha(path.join(root, n))])); audit.errors = errors; fs.writeFileSync(path.join(output, 'html-audit.json'), JSON.stringify(audit, null, 2) + '\n'); await page.screenshot({ path: path.join(output, 'layout-review.png'), fullPage: true }); - if (errors.length || audit.small.length || audit.outside.length || audit.regionOverflow.length || audit.internalOverflow.length || audit.sectionOverlap.length || audit.unlinkedImages.length || audit.images.some(i => !i.loaded)) { + if (errors.length || audit.small.length || audit.outside.length || audit.regionOverflow.length || audit.internalOverflow.length || audit.sectionOverlap.length || audit.unlinkedImages.length || audit.commitNavigationLinks.length || audit.images.some(i => !i.loaded)) { throw new Error('HTML layout or asset audit failed; inspect html-audit.json.'); } if (!checkOnly) { diff --git a/2026-usrse/stamped-ai-study/completion-plan.md b/2026-usrse/stamped-ai-study/completion-plan.md index f6688ec5..8322e335 100644 --- a/2026-usrse/stamped-ai-study/completion-plan.md +++ b/2026-usrse/stamped-ai-study/completion-plan.md @@ -15,7 +15,7 @@ An improved result is an empirical question, not an assumed conclusion. | --- | --- | --- | | Scientific case | NARPS H1; 54 fixed AO86 participant gain-effect maps; linked paper, task and data | Confirm the scientific panel is the intended scope of reproduction: group inference from supplied contrasts | | Group maps and condensed result | Run 09 maps, correction, regional coefficient and CI, generated from archived artifacts | Choose the final illustrative analysis by a stated rule; keep its exact source revision and inference details | -| Variability across conditions | Individual native mask sizes and corrected positive voxel counts from eight completed runs | Extract all allocated runs and iterations; preserve native method choices; show points and ranges | +| Variability across conditions | Spatial agreement of corrected positive maps from all twelve first-iteration runs, on shared coverage | Apply the same extraction to later iterations; retain native support and correction choices | | Checked outcomes | All 36 allocated runs have slots; available primary judgments populate science, replay and checklist counts | Finish and bind all 36 primary and 12 assigned duplicate judgments; preserve item-level validity and disagreement | | Iterative improvement | Revision 1 is pinned; two change-to-retest slots | For each revision, link the observed failure, reusable change, and next-round outcome; final round receives no further tuning | | Evidence and reuse | Links to skills, inputs, source, outputs, plans and figure code | Finish registering and publishing the research objects and assessment evidence; verify a recipient can retrieve each required payload | @@ -28,26 +28,32 @@ These poster requirements do not by themselves require a restart. Freeze a versioned secondary extraction specification, extract from stopped-worker artifacts, and leave the original work intact. Record round-one additions as retrospective; apply the same specification to later rounds. -The existing native mask/count figure shows analytic variation, including the choice of Bonferroni or permutation correction. -It is not an estimate of the effect of an assistance strategy, and different native regions should not be pooled as a single vmPFC effect. +The spatial figure asks where repeated analyses agree, using corrected-positive frequency within each condition on the intersection of all twelve native search masks. +The t maps agree to numerical precision; the visible difference is in corrected extent, including the choice of Bonferroni or permutation correction. +This descriptive comparison does not estimate an assistance effect, and different native regions should not be pooled as a single vmPFC effect. A fixed-region mean recomputed from the same 54 input maps would be identical across conditions by construction. That would be a useful reference value, but an uninformative comparison of the assistance conditions. -A useful additional spatial endpoint is **pairwise agreement of corrected positive maps on common evaluation support**, reported within each condition and iteration: +The implemented spatial endpoint is **the number of runs with corrected positive signal on shared coverage**, reported within each condition and iteration. +To extend it consistently: 1. Verify image geometry, coordinate system and map semantics; do not mix effect, t, z or p maps. 2. Retain each worker's native search mask and corrected positive map, with method, family and alpha. -3. Define the evaluation support independently of the desired result, documenting its anatomical source and coverage rule. +3. Define the evaluation support by a declared rule, independently of the desired result. +The first-iteration figure uses the intersection of all twelve native masks (184,543 voxels), without resampling. Retain both common-support size and native-support size, plus each run’s coverage fraction. Voxels outside a native search mask are unassessed, not negative. -4. Compute full-domain Dice only when both runs assessed the evaluation domain. -Otherwise mark it unavailable or report a separately labeled pair-specific intersection and its size. -On the declared support, compute pairwise Dice overlap of corrected positive maps and positive voxel counts. -Record both-empty maps explicitly; do not silently assign perfect agreement to an empty denominator. -5. Show all three pairwise comparisons for three runs, with run IDs and method labels. +4. Count corrected positive detections across all three runs on that common support. +Preserve per-run native counts alongside the derived maps so effects of the coverage rule remain visible. +5. Use the same geometry, cuts and colour scale across conditions, with run IDs and method labels. Treat agreement as descriptive; a common mistake can also produce agreement. -If all agents produce identical effect or t fields on shared support, report that null variation. +For later revisions, retain the first-iteration support and report each run's coverage of it. +If a run does not assess all of that support, do not count uncovered voxels as negative. +Show coverage separately or recompute a declared intersection across the compared revisions, retaining both the original and revised domains. +Pairwise Dice can be added as a secondary summary; retain its support size and mark both-empty denominators explicitly. + +When agents produce identical effect or t fields on shared support, report that null variation. Do not manufacture variation by changing the endpoint after seeing the result. Scientific adequacy, coverage choices and reproducibility can still differ. diff --git a/2026-usrse/stamped-ai-study/data/assessment-snapshot.json b/2026-usrse/stamped-ai-study/data/assessment-snapshot.json index a88cd725..04f45151 100644 --- a/2026-usrse/stamped-ai-study/data/assessment-snapshot.json +++ b/2026-usrse/stamped-ai-study/data/assessment-snapshot.json @@ -1,13 +1,13 @@ { "allocation_sha256": "3d8674fd7a404bb0020fc5a0bde0b913373e53c6cf9a3663de95f3600f472876", "comparison_id": "narps-v1", - "coordinator_head": "3eb6f20f60a3375dcaadec071e9f099681d73d66", + "coordinator_head": "48b6dcef2cbc918cfc3c4d7c2c6b2bffeb4f8ba5", "coordinator_url": "https://github.com/leej3/stamped-in-practice", - "disposition_sha256": "47dac2c943e01c08d22adbef5848746c23d6ecafd7b8f94780f3792780861e42", + "disposition_sha256": "f66f7aeb0e9cf4c6fee51ca5b1f5dcf2eba8b1f63944b1fc889aa2f47c7a799c", "interpretation": { "checklist": "Descriptive item counts, not a combined score or certification. Partial never counts as met. N/A and invalid/unavailable items are excluded only from the explicitly comparable applicable denominator. Not-checked items remain in that denominator and are shown separately.", "missing": "Missing assessments and future runs are missing observations, never zero scores. Supplementary judgments cannot replace assigned primaries or duplicates.", - "publication": "Source hashes bind original local records. A null public_url means publication of that raw source is not established by this export; result_commit links are independent from assessment publication.", + "publication": "Reader links use named branches, verified against advertised remote heads at export. Exact commits and source hashes retain snapshot identity. Branches may later advance. A null public_url means publication of that raw source is not established by this export; result links are independent from assessment publication.", "replay": "Assessor-infrastructure failures are unavailable, not worker failures. Same-host replay does not establish cross-host portability.", "retrieval": "Coordinator preservation verifies exact stopped-worker bytes; it is not worker delivery credit or successful scientific execution.", "scientific_adequacy": "Judge support for the scientific analysis is separate from support for the hypothesis. Infrastructure uncertainty flags preserve the raw scientific classification without regrading it." @@ -113,13 +113,13 @@ "allocated_duplicate_judgments": 4, "allocated_primary_judgments": 12, "allocated_workers": 12, - "completed_primary_judgments": 3, + "completed_primary_judgments": 7, "final_untuned_evaluation": false, "iteration": 1, - "ledger_updated_at": "2026-10-16T03:34:32.382717+00:00", + "ledger_updated_at": "2026-10-16T04:18:51.565573+00:00", "skills_commit": "c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", "status": "recorded-in-progress", - "workers_finished": 8 + "workers_finished": 12 }, { "allocated_duplicate_judgments": 4, @@ -151,9 +151,102 @@ "condition": "baseline", "duplicate_assigned": false, "iteration": 1, - "primary": null, + "primary": { + "assessment_scope": "amendment-01", + "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", + "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", + "checklist": { + "applicable_items": 30, + "comparable_applicable_items": 30, + "comparable_counts": { + "met": 9, + "not-applicable": 1, + "not-checked": 0, + "partial": 8, + "unmet": 13 + }, + "descriptive_met_denominator": 30, + "descriptive_met_numerator": 9, + "invalid_items": 0, + "item_statuses": { + "stamped-checklist:may/001": "unmet", + "stamped-checklist:may/002": "unmet", + "stamped-checklist:may/003": "partial", + "stamped-checklist:may/004": "unmet", + "stamped-checklist:may/005": "partial", + "stamped-checklist:must/001": "met", + "stamped-checklist:must/002": "met", + "stamped-checklist:must/003": "partial", + "stamped-checklist:must/004": "met", + "stamped-checklist:must/005": "met", + "stamped-checklist:must/006": "partial", + "stamped-checklist:must/007": "unmet", + "stamped-checklist:must/008": "met", + "stamped-checklist:must/009": "met", + "stamped-checklist:must/010": "partial", + "stamped-checklist:must/011": "partial", + "stamped-checklist:must/012": "partial", + "stamped-checklist:must/013": "met", + "stamped-checklist:must/014": "unmet", + "stamped-checklist:must/015": "unmet", + "stamped-checklist:must/016": "met", + "stamped-checklist:must/017": "unmet", + "stamped-checklist:should/001": "met", + "stamped-checklist:should/002": "unmet", + "stamped-checklist:should/003": "partial", + "stamped-checklist:should/004": "unmet", + "stamped-checklist:should/005": "unmet", + "stamped-checklist:should/006": "unmet", + "stamped-checklist:should/007": "unmet", + "stamped-checklist:should/008": "unmet", + "stamped-checklist:should/009": "not-applicable" + }, + "item_validity_overrides": {}, + "raw_counts": { + "met": 9, + "not-applicable": 1, + "not-checked": 0, + "partial": 8, + "unmet": 13 + }, + "raw_retrieval_item": "met", + "retrieval_item_validity": "available", + "source_id": "narps-r1-01-judgment-01/response.json", + "total_items": 31, + "unavailable_items": 0, + "version": "0.3.1" + }, + "evidence_binding": "hashes-match", + "finished_at": "2026-10-16T03:49:19.977054+00:00", + "judgment_id": "narps-r1-01-judgment-01", + "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", + "replay": { + "candidate_outputs": 11, + "comparable_status": "partial", + "different_outputs": [ + "results/analysis_summary.json" + ], + "host_scope": "same-host", + "identical_outputs": 10, + "missing_outputs": [], + "raw_status": "partial", + "source_id": "narps-r1-01-judgment-01/fresh-rerun.json", + "validity": "available", + "within_tolerance_outputs": 0 + }, + "role": "primary", + "science": { + "display_qualifier": null, + "evidence_dependency": "no-uncertainty-overlay-recorded", + "reported_adequacy": "qualified", + "source_id": "narps-r1-01-judgment-01/assessment.md" + }, + "status": "completed" + }, "replicate": 1, - "result_url": "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", + "result_branch": "codex/narps-r1-01", + "result_branch_verified_commit": "d90a335549f43007eac05902859224e6ce2eaada", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", "retrieval": { "annex_paths_verified": 74, "completed_at": "2026-10-16T02:21:14.766149+00:00", @@ -164,7 +257,7 @@ "worker_delivery_credit": false }, "run": "narps-r1-01", - "status": "worker-completed-awaiting-judgment", + "status": "judgments-awaiting-retention", "worker_elapsed_seconds": 948.1464351660106, "worker_finished_at": "2026-10-16T02:12:30.559106+00:00", "worker_result_commit": "d90a335549f43007eac05902859224e6ce2eaada" @@ -173,9 +266,102 @@ "condition": "baseline", "duplicate_assigned": false, "iteration": 1, - "primary": null, + "primary": { + "assessment_scope": "amendment-01", + "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", + "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", + "checklist": { + "applicable_items": 30, + "comparable_applicable_items": 29, + "comparable_counts": { + "met": 11, + "not-applicable": 1, + "not-checked": 0, + "partial": 6, + "unmet": 12 + }, + "descriptive_met_denominator": 29, + "descriptive_met_numerator": 11, + "invalid_items": 0, + "item_statuses": { + "stamped-checklist:may/001": "unmet", + "stamped-checklist:may/002": "unmet", + "stamped-checklist:may/003": "unmet", + "stamped-checklist:may/004": "unmet", + "stamped-checklist:may/005": "partial", + "stamped-checklist:must/001": "met", + "stamped-checklist:must/002": "met", + "stamped-checklist:must/003": "met", + "stamped-checklist:must/004": "met", + "stamped-checklist:must/005": "met", + "stamped-checklist:must/006": "partial", + "stamped-checklist:must/007": "unmet", + "stamped-checklist:must/008": "met", + "stamped-checklist:must/009": "met", + "stamped-checklist:must/010": "met", + "stamped-checklist:must/011": "partial", + "stamped-checklist:must/012": "partial", + "stamped-checklist:must/013": "met", + "stamped-checklist:must/014": "unmet", + "stamped-checklist:must/015": "partial", + "stamped-checklist:must/016": "partial", + "stamped-checklist:must/017": "unmet", + "stamped-checklist:should/001": "met", + "stamped-checklist:should/002": "unmet", + "stamped-checklist:should/003": "met", + "stamped-checklist:should/004": "not-checked", + "stamped-checklist:should/005": "unmet", + "stamped-checklist:should/006": "unmet", + "stamped-checklist:should/007": "unmet", + "stamped-checklist:should/008": "unmet", + "stamped-checklist:should/009": "not-applicable" + }, + "item_validity_overrides": { + "stamped-checklist:should/004": "unavailable" + }, + "raw_counts": { + "met": 11, + "not-applicable": 1, + "not-checked": 1, + "partial": 6, + "unmet": 12 + }, + "raw_retrieval_item": "partial", + "retrieval_item_validity": "available", + "source_id": "narps-r1-02-judgment-01/response.json", + "total_items": 31, + "unavailable_items": 1, + "version": "0.3.1" + }, + "evidence_binding": "hashes-match", + "finished_at": "2026-10-16T03:41:57.631311+00:00", + "judgment_id": "narps-r1-02-judgment-01", + "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", + "replay": { + "candidate_outputs": null, + "comparable_status": "unavailable", + "different_outputs": [], + "host_scope": "same-host", + "identical_outputs": null, + "missing_outputs": [], + "raw_status": "unmet", + "source_id": "narps-r1-02-judgment-01/fresh-rerun.json", + "validity": "unavailable", + "within_tolerance_outputs": null + }, + "role": "primary", + "science": { + "display_qualifier": "replay evidence unavailable", + "evidence_dependency": "uncertain", + "reported_adequacy": "qualified", + "source_id": "narps-r1-02-judgment-01/assessment.md" + }, + "status": "completed" + }, "replicate": 2, - "result_url": "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "result_branch": "codex/narps-r1-02", + "result_branch_verified_commit": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", "retrieval": { "annex_paths_verified": 56, "completed_at": "2026-10-16T02:15:07.880399+00:00", @@ -186,7 +372,7 @@ "worker_delivery_credit": false }, "run": "narps-r1-02", - "status": "worker-completed-awaiting-judgment", + "status": "judgments-awaiting-retention", "worker_elapsed_seconds": 1061.4433347079903, "worker_finished_at": "2026-10-16T02:12:01.209722+00:00", "worker_result_commit": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4" @@ -195,9 +381,21 @@ "condition": "baseline", "duplicate_assigned": true, "iteration": 1, - "primary": null, + "primary": { + "assessment_scope": "amendment-01", + "checklist": null, + "finished_at": null, + "judgment_id": "narps-r1-03-judgment-01", + "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", + "replay": null, + "role": "primary", + "science": null, + "status": "running" + }, "replicate": 3, - "result_url": "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", + "result_branch": "codex/narps-r1-03", + "result_branch_verified_commit": "abf95b00c02fb55d16c4d269926c1428cedc0574", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", "retrieval": { "annex_paths_verified": 58, "completed_at": "2026-10-16T03:20:22.429031+00:00", @@ -208,7 +406,7 @@ "worker_delivery_credit": false }, "run": "narps-r1-03", - "status": "worker-completed-awaiting-judgment", + "status": "judgment-running", "worker_elapsed_seconds": 372.9900593330385, "worker_finished_at": "2026-10-16T03:15:43.869438+00:00", "worker_result_commit": "abf95b00c02fb55d16c4d269926c1428cedc0574" @@ -217,26 +415,148 @@ "condition": "discover-general", "duplicate_assigned": true, "iteration": 1, - "primary": null, + "primary": { + "assessment_scope": "amendment-01", + "checklist": null, + "finished_at": null, + "judgment_id": "narps-r1-04-judgment-01", + "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", + "replay": null, + "role": "primary", + "science": null, + "status": "running" + }, "replicate": 1, - "result_url": null, - "retrieval": null, + "result_branch": "codex/narps-r1-04", + "result_branch_verified_commit": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", + "retrieval": { + "annex_paths_verified": 58, + "completed_at": "2026-10-16T03:46:09.952987+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-04/recipient-check.json", + "verified": true, + "worker_delivery_credit": false + }, "run": "narps-r1-04", - "status": "running", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null + "status": "judgment-running", + "worker_elapsed_seconds": 513.7589724160498, + "worker_finished_at": "2026-10-16T03:42:48.314637+00:00", + "worker_result_commit": "a424c3e8ae47f9208fa661fc4f974f6b187acb00" }, { "condition": "discover-general", "duplicate_assigned": false, "iteration": 1, - "primary": null, + "primary": { + "assessment_scope": "amendment-01", + "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", + "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", + "checklist": { + "applicable_items": 30, + "comparable_applicable_items": 28, + "comparable_counts": { + "met": 11, + "not-applicable": 1, + "not-checked": 0, + "partial": 10, + "unmet": 7 + }, + "descriptive_met_denominator": 28, + "descriptive_met_numerator": 11, + "invalid_items": 0, + "item_statuses": { + "stamped-checklist:may/001": "unmet", + "stamped-checklist:may/002": "partial", + "stamped-checklist:may/003": "partial", + "stamped-checklist:may/004": "met", + "stamped-checklist:may/005": "met", + "stamped-checklist:must/001": "met", + "stamped-checklist:must/002": "met", + "stamped-checklist:must/003": "met", + "stamped-checklist:must/004": "met", + "stamped-checklist:must/005": "met", + "stamped-checklist:must/006": "partial", + "stamped-checklist:must/007": "partial", + "stamped-checklist:must/008": "partial", + "stamped-checklist:must/009": "partial", + "stamped-checklist:must/010": "met", + "stamped-checklist:must/011": "partial", + "stamped-checklist:must/012": "partial", + "stamped-checklist:must/013": "met", + "stamped-checklist:must/014": "unmet", + "stamped-checklist:must/015": "unmet", + "stamped-checklist:must/016": "partial", + "stamped-checklist:must/017": "partial", + "stamped-checklist:should/001": "met", + "stamped-checklist:should/002": "unmet", + "stamped-checklist:should/003": "met", + "stamped-checklist:should/004": "not-checked", + "stamped-checklist:should/005": "unmet", + "stamped-checklist:should/006": "unmet", + "stamped-checklist:should/007": "unmet", + "stamped-checklist:should/008": "unmet", + "stamped-checklist:should/009": "not-applicable" + }, + "item_validity_overrides": { + "stamped-checklist:should/004": "unavailable", + "stamped-checklist:should/006": "unavailable" + }, + "raw_counts": { + "met": 11, + "not-applicable": 1, + "not-checked": 1, + "partial": 10, + "unmet": 8 + }, + "raw_retrieval_item": "partial", + "retrieval_item_validity": "available", + "source_id": "narps-r1-05-judgment-01/response.json", + "total_items": 31, + "unavailable_items": 2, + "version": "0.3.1" + }, + "evidence_binding": "hashes-match", + "finished_at": "2026-10-16T04:12:22.556274+00:00", + "judgment_id": "narps-r1-05-judgment-01", + "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", + "replay": { + "candidate_outputs": null, + "comparable_status": "unavailable", + "different_outputs": [], + "host_scope": "same-host", + "identical_outputs": null, + "missing_outputs": [], + "raw_status": "unmet", + "source_id": "narps-r1-05-judgment-01/fresh-rerun.json", + "validity": "unavailable", + "within_tolerance_outputs": null + }, + "role": "primary", + "science": { + "display_qualifier": "replay evidence unavailable", + "evidence_dependency": "uncertain", + "reported_adequacy": "qualified", + "source_id": "narps-r1-05-judgment-01/assessment.md" + }, + "status": "completed" + }, "replicate": 2, - "result_url": "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "retrieval": null, + "result_branch": "codex/narps-r1-05", + "result_branch_verified_commit": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", + "retrieval": { + "annex_paths_verified": 57, + "completed_at": "2026-10-16T03:34:42.800335+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-05/recipient-check.json", + "verified": true, + "worker_delivery_credit": false + }, "run": "narps-r1-05", - "status": "worker-completed-awaiting-judgment", + "status": "judgments-awaiting-retention", "worker_elapsed_seconds": 1339.5679777499754, "worker_finished_at": "2026-10-16T03:30:04.516025+00:00", "worker_result_commit": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9" @@ -245,9 +565,102 @@ "condition": "discover-general", "duplicate_assigned": false, "iteration": 1, - "primary": null, + "primary": { + "assessment_scope": "amendment-01", + "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", + "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", + "checklist": { + "applicable_items": 30, + "comparable_applicable_items": 29, + "comparable_counts": { + "met": 15, + "not-applicable": 1, + "not-checked": 0, + "partial": 4, + "unmet": 10 + }, + "descriptive_met_denominator": 29, + "descriptive_met_numerator": 15, + "invalid_items": 0, + "item_statuses": { + "stamped-checklist:may/001": "unmet", + "stamped-checklist:may/002": "met", + "stamped-checklist:may/003": "partial", + "stamped-checklist:may/004": "met", + "stamped-checklist:may/005": "met", + "stamped-checklist:must/001": "met", + "stamped-checklist:must/002": "met", + "stamped-checklist:must/003": "met", + "stamped-checklist:must/004": "met", + "stamped-checklist:must/005": "met", + "stamped-checklist:must/006": "unmet", + "stamped-checklist:must/007": "unmet", + "stamped-checklist:must/008": "met", + "stamped-checklist:must/009": "met", + "stamped-checklist:must/010": "met", + "stamped-checklist:must/011": "partial", + "stamped-checklist:must/012": "partial", + "stamped-checklist:must/013": "met", + "stamped-checklist:must/014": "unmet", + "stamped-checklist:must/015": "unmet", + "stamped-checklist:must/016": "met", + "stamped-checklist:must/017": "partial", + "stamped-checklist:should/001": "met", + "stamped-checklist:should/002": "unmet", + "stamped-checklist:should/003": "met", + "stamped-checklist:should/004": "not-checked", + "stamped-checklist:should/005": "unmet", + "stamped-checklist:should/006": "unmet", + "stamped-checklist:should/007": "unmet", + "stamped-checklist:should/008": "unmet", + "stamped-checklist:should/009": "not-applicable" + }, + "item_validity_overrides": { + "stamped-checklist:should/004": "unavailable" + }, + "raw_counts": { + "met": 15, + "not-applicable": 1, + "not-checked": 1, + "partial": 4, + "unmet": 10 + }, + "raw_retrieval_item": "met", + "retrieval_item_validity": "available", + "source_id": "narps-r1-06-judgment-01/response.json", + "total_items": 31, + "unavailable_items": 1, + "version": "0.3.1" + }, + "evidence_binding": "hashes-match", + "finished_at": "2026-10-16T03:58:50.326685+00:00", + "judgment_id": "narps-r1-06-judgment-01", + "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", + "replay": { + "candidate_outputs": null, + "comparable_status": "unavailable", + "different_outputs": [], + "host_scope": "same-host", + "identical_outputs": null, + "missing_outputs": [], + "raw_status": "unmet", + "source_id": "narps-r1-06-judgment-01/fresh-rerun.json", + "validity": "unavailable", + "within_tolerance_outputs": null + }, + "role": "primary", + "science": { + "display_qualifier": "replay evidence unavailable", + "evidence_dependency": "uncertain", + "reported_adequacy": "qualified", + "source_id": "narps-r1-06-judgment-01/assessment.md" + }, + "status": "completed" + }, "replicate": 3, - "result_url": "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", + "result_branch": "codex/narps-r1-06", + "result_branch_verified_commit": "32d9cabf7b5d041f9efb97830bf5279068809357", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", "retrieval": { "annex_paths_verified": 56, "completed_at": "2026-10-16T02:29:26.846873+00:00", @@ -258,7 +671,7 @@ "worker_delivery_credit": false }, "run": "narps-r1-06", - "status": "worker-completed-awaiting-judgment", + "status": "judgments-awaiting-retention", "worker_elapsed_seconds": 454.0117076250026, "worker_finished_at": "2026-10-16T02:22:55.994726+00:00", "worker_result_commit": "32d9cabf7b5d041f9efb97830bf5279068809357" @@ -361,7 +774,9 @@ "status": "completed" }, "replicate": 1, - "result_url": "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "result_branch": "codex/narps-r1-07", + "result_branch_verified_commit": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", "retrieval": { "annex_paths_verified": 64, "completed_at": "2026-10-16T02:00:35.748266+00:00", @@ -476,7 +891,9 @@ "status": "completed" }, "replicate": 2, - "result_url": "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", + "result_branch": "codex/narps-r1-08", + "result_branch_verified_commit": "42e957201315aa8221ba60fbe614119e22639ce8", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", "retrieval": { "annex_paths_verified": 72, "completed_at": "2026-10-16T02:09:34.813185+00:00", @@ -561,7 +978,7 @@ "unavailable_items": 0, "version": "0.3.1" }, - "evidence_binding": "pending", + "evidence_binding": "hashes-match", "finished_at": "2026-10-16T03:31:45.402132+00:00", "judgment_id": "narps-r1-09-judgment-01", "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", @@ -591,7 +1008,9 @@ "status": "completed" }, "replicate": 3, - "result_url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", + "result_branch": "codex/narps-r1-09", + "result_branch_verified_commit": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", "retrieval": { "annex_paths_verified": 59, "completed_at": "2026-10-16T02:19:12.725131+00:00", @@ -613,13 +1032,15 @@ "iteration": 1, "primary": null, "replicate": 1, - "result_url": null, + "result_branch": "codex/narps-r1-10", + "result_branch_verified_commit": "62d247e48e69978d294dc39175d53f9aa638ce0d", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", "retrieval": null, "run": "narps-r1-10", - "status": "not-started", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null + "status": "worker-completed-awaiting-judgment", + "worker_elapsed_seconds": 750.6059608750511, + "worker_finished_at": "2026-10-16T04:16:59.562976+00:00", + "worker_result_commit": "62d247e48e69978d294dc39175d53f9aa638ce0d" }, { "condition": "stamped-explicit", @@ -627,27 +1048,49 @@ "iteration": 1, "primary": null, "replicate": 2, - "result_url": null, + "result_branch": "codex/narps-r1-11", + "result_branch_verified_commit": "284c8768140cbd816d983f8bd2697bd9b541eb25", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", "retrieval": null, "run": "narps-r1-11", - "status": "not-started", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null + "status": "worker-completed-awaiting-judgment", + "worker_elapsed_seconds": 1902.2213631250197, + "worker_finished_at": "2026-10-16T04:17:40.821543+00:00", + "worker_result_commit": "284c8768140cbd816d983f8bd2697bd9b541eb25" }, { "condition": "stamped-explicit", "duplicate_assigned": false, "iteration": 1, - "primary": null, + "primary": { + "assessment_scope": "amendment-01", + "checklist": null, + "finished_at": null, + "judgment_id": "narps-r1-12-judgment-01", + "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", + "replay": null, + "role": "primary", + "science": null, + "status": "running" + }, "replicate": 3, - "result_url": null, - "retrieval": null, + "result_branch": "codex/narps-r1-12", + "result_branch_verified_commit": "40164f018638f6fc744881a91a70d3257b77985f", + "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", + "retrieval": { + "annex_paths_verified": null, + "completed_at": "2026-10-16T04:00:29.253232+00:00", + "scientific_execution": false, + "scope": "coordinator-preservation-of-exact-worker-stop", + "source_id": "narps-r1-12/recipient-check.json", + "verified": false, + "worker_delivery_credit": false + }, "run": "narps-r1-12", - "status": "running", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null + "status": "judgment-running", + "worker_elapsed_seconds": 2386.7586984999944, + "worker_finished_at": "2026-10-16T03:59:01.080107+00:00", + "worker_result_commit": "40164f018638f6fc744881a91a70d3257b77985f" }, { "condition": "baseline", @@ -655,6 +1098,8 @@ "iteration": 2, "primary": null, "replicate": 1, + "result_branch": "codex/narps-r2-01", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-01", @@ -669,6 +1114,8 @@ "iteration": 2, "primary": null, "replicate": 2, + "result_branch": "codex/narps-r2-02", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-02", @@ -683,6 +1130,8 @@ "iteration": 2, "primary": null, "replicate": 3, + "result_branch": "codex/narps-r2-03", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-03", @@ -697,6 +1146,8 @@ "iteration": 2, "primary": null, "replicate": 1, + "result_branch": "codex/narps-r2-04", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-04", @@ -711,6 +1162,8 @@ "iteration": 2, "primary": null, "replicate": 2, + "result_branch": "codex/narps-r2-05", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-05", @@ -725,6 +1178,8 @@ "iteration": 2, "primary": null, "replicate": 3, + "result_branch": "codex/narps-r2-06", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-06", @@ -739,6 +1194,8 @@ "iteration": 2, "primary": null, "replicate": 1, + "result_branch": "codex/narps-r2-07", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-07", @@ -753,6 +1210,8 @@ "iteration": 2, "primary": null, "replicate": 2, + "result_branch": "codex/narps-r2-08", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-08", @@ -767,6 +1226,8 @@ "iteration": 2, "primary": null, "replicate": 3, + "result_branch": "codex/narps-r2-09", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-09", @@ -781,6 +1242,8 @@ "iteration": 2, "primary": null, "replicate": 1, + "result_branch": "codex/narps-r2-10", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-10", @@ -795,6 +1258,8 @@ "iteration": 2, "primary": null, "replicate": 2, + "result_branch": "codex/narps-r2-11", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-11", @@ -809,6 +1274,8 @@ "iteration": 2, "primary": null, "replicate": 3, + "result_branch": "codex/narps-r2-12", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r2-12", @@ -823,6 +1290,8 @@ "iteration": 3, "primary": null, "replicate": 1, + "result_branch": "codex/narps-r3-01", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-01", @@ -837,6 +1306,8 @@ "iteration": 3, "primary": null, "replicate": 2, + "result_branch": "codex/narps-r3-02", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-02", @@ -851,6 +1322,8 @@ "iteration": 3, "primary": null, "replicate": 3, + "result_branch": "codex/narps-r3-03", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-03", @@ -865,6 +1338,8 @@ "iteration": 3, "primary": null, "replicate": 1, + "result_branch": "codex/narps-r3-04", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-04", @@ -879,6 +1354,8 @@ "iteration": 3, "primary": null, "replicate": 2, + "result_branch": "codex/narps-r3-05", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-05", @@ -893,6 +1370,8 @@ "iteration": 3, "primary": null, "replicate": 3, + "result_branch": "codex/narps-r3-06", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-06", @@ -907,6 +1386,8 @@ "iteration": 3, "primary": null, "replicate": 1, + "result_branch": "codex/narps-r3-07", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-07", @@ -921,6 +1402,8 @@ "iteration": 3, "primary": null, "replicate": 2, + "result_branch": "codex/narps-r3-08", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-08", @@ -935,6 +1418,8 @@ "iteration": 3, "primary": null, "replicate": 3, + "result_branch": "codex/narps-r3-09", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-09", @@ -949,6 +1434,8 @@ "iteration": 3, "primary": null, "replicate": 1, + "result_branch": "codex/narps-r3-10", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-10", @@ -963,6 +1450,8 @@ "iteration": 3, "primary": null, "replicate": 2, + "result_branch": "codex/narps-r3-11", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-11", @@ -977,6 +1466,8 @@ "iteration": 3, "primary": null, "replicate": 3, + "result_branch": "codex/narps-r3-12", + "result_branch_verified_commit": null, "result_url": null, "retrieval": null, "run": "narps-r3-12", @@ -987,22 +1478,61 @@ } ], "schema_version": 1, - "snapshot_at_eastern": "2026-10-15T23:42:41.740409-04:00", - "snapshot_at_utc": "2026-10-16T03:42:41.740409+00:00", + "snapshot_at_eastern": "2026-10-16T00:30:44.651067-04:00", + "snapshot_at_utc": "2026-10-16T04:30:44.651067+00:00", "sources": { "allocation.json": { "bytes": 5574, "coordinator_path": "iterations/narps-v1/allocation.json", "matches_coordinator_head": true, - "public_url": "https://github.com/leej3/stamped-in-practice/blob/3eb6f20f60a3375dcaadec071e9f099681d73d66/iterations/narps-v1/allocation.json", + "public_branch": "main", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/allocation.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "48b6dcef2cbc918cfc3c4d7c2c6b2bffeb4f8ba5", "sha256": "3d8674fd7a404bb0020fc5a0bde0b913373e53c6cf9a3663de95f3600f472876" }, "measurement-disposition-01.json": { - "bytes": 18404, + "bytes": 28815, "coordinator_path": "iterations/narps-v1/measurement-disposition-01.json", - "matches_coordinator_head": true, - "public_url": "https://github.com/leej3/stamped-in-practice/blob/3eb6f20f60a3375dcaadec071e9f099681d73d66/iterations/narps-v1/measurement-disposition-01.json", - "sha256": "47dac2c943e01c08d22adbef5848746c23d6ecafd7b8f94780f3792780861e42" + "matches_coordinator_head": false, + "public_url": null, + "sha256": "f66f7aeb0e9cf4c6fee51ca5b1f5dcf2eba8b1f63944b1fc889aa2f47c7a799c" + }, + "narps-r1-01-judgment-01/assessment.md": { + "bytes": 11790, + "public_branch": "codex/narps-r1-01-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-assessment.md", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "63bf805f04d3aa221fe0807f9f86ebe81c817b20", + "sha256": "269618a5c0ecf4be1d433da2a23e485bba6dbdef7b9b298ae2272a0123188926" + }, + "narps-r1-01-judgment-01/fresh-rerun.json": { + "bytes": 13583, + "public_branch": "codex/narps-r1-01-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-fresh-rerun.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "63bf805f04d3aa221fe0807f9f86ebe81c817b20", + "sha256": "aefd4bead07b9dcbd14624ed298e72efdc3f2ed452a5fcbac83f288775c3cc6f" + }, + "narps-r1-01-judgment-01/native-result.json": { + "bytes": 5607, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "7b7f4f1c3c05cb027eac7593571da6fc5da3b971bcaffbdcc5c97e8cc8bf5d51" + }, + "narps-r1-01-judgment-01/output-binding.json": { + "bytes": 2056, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "475214249b78c11b839c87f3f252e7cf77c897dfca79eafb763f23b877c18a21" + }, + "narps-r1-01-judgment-01/response.json": { + "bytes": 18468, + "public_branch": "codex/narps-r1-01-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-response.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "63bf805f04d3aa221fe0807f9f86ebe81c817b20", + "sha256": "c4a5162060767f9124d67adb12da0b86a6d67faf1bc1e89863b0162f7181e98d" }, "narps-r1-01/recipient-check.json": { "bytes": 1563, @@ -1010,6 +1540,42 @@ "publication_status": "not-established-by-this-export", "sha256": "1c34e66ee20e247469cc61be7494942ad1d436ec0080a91339d3e91f8d1f3c39" }, + "narps-r1-02-judgment-01/assessment.md": { + "bytes": 14926, + "public_branch": "codex/narps-r1-02-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-assessment.md", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "5b4bd27b34c26d5fe5597e19f7494fe73f1d53e1", + "sha256": "073d4cd125730218efbc2554d692bc11b8122a96f3e666ca4c432957d5108839" + }, + "narps-r1-02-judgment-01/fresh-rerun.json": { + "bytes": 10530, + "public_branch": "codex/narps-r1-02-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-fresh-rerun.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "5b4bd27b34c26d5fe5597e19f7494fe73f1d53e1", + "sha256": "fa095857df9c499339e1f9c196e8b4b7fafddff412dc8c829e6595698c6fdf31" + }, + "narps-r1-02-judgment-01/native-result.json": { + "bytes": 5607, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "35e55ade3fe0d3aea29842fa1dfc79fdf70de3c90d2dc5fd5f3e26f112023eed" + }, + "narps-r1-02-judgment-01/output-binding.json": { + "bytes": 2051, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "9216da6b6cc0b61b59684bd47e2e8ee670a0c06e6d4178aafeb2017e3336c22b" + }, + "narps-r1-02-judgment-01/response.json": { + "bytes": 18812, + "public_branch": "codex/narps-r1-02-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-response.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "5b4bd27b34c26d5fe5597e19f7494fe73f1d53e1", + "sha256": "e44b09bdf88c208b6a0f071be7bfe80e23028583e17a0ae386941ccab3259511" + }, "narps-r1-02/recipient-check.json": { "bytes": 1974, "public_url": null, @@ -1022,6 +1588,90 @@ "publication_status": "not-established-by-this-export", "sha256": "f93d2c6c91c3b8294d98503cbd1cd1e692731014cc245a22a3269718ec9bb595" }, + "narps-r1-04/recipient-check.json": { + "bytes": 1531, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "1078eec03c47baa5f2e18352fe916cfc572d535b1aeb786c6ed4b96ebe20f89e" + }, + "narps-r1-05-judgment-01/assessment.md": { + "bytes": 17554, + "public_branch": "codex/narps-r1-05-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-assessment.md", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "b1c418058c73b962ab36f33f5a527c54d1d45e7f", + "sha256": "5b97818a031b73c0a5a22875bfc12eba5d0cc8d5b09c11dee6c09298da0d43c4" + }, + "narps-r1-05-judgment-01/fresh-rerun.json": { + "bytes": 10707, + "public_branch": "codex/narps-r1-05-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-fresh-rerun.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "b1c418058c73b962ab36f33f5a527c54d1d45e7f", + "sha256": "d937cdb793d041066b267d0637de3548eb5ed015016d63b0f474855122f2c357" + }, + "narps-r1-05-judgment-01/native-result.json": { + "bytes": 5606, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "24e2febb9d2de7864a5d430fc2399fdc34daaa6f85c935dd75ec0efe885e942c" + }, + "narps-r1-05-judgment-01/output-binding.json": { + "bytes": 2062, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "baef74d516719a9df68b8a4b11867199c56bae4f6fc31b248978b2b19e1ddc84" + }, + "narps-r1-05-judgment-01/response.json": { + "bytes": 20734, + "public_branch": "codex/narps-r1-05-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-response.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "b1c418058c73b962ab36f33f5a527c54d1d45e7f", + "sha256": "fe2286b2a10db24ef54dd63b76e2facfc3c59a16470fa17381ebfb360ef9f5cc" + }, + "narps-r1-05/recipient-check.json": { + "bytes": 1631, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "1b61eb52e3480ce35228f57ad8673eea747a7354167f6bf9b1c753a6b8cbe344" + }, + "narps-r1-06-judgment-01/assessment.md": { + "bytes": 18324, + "public_branch": "codex/narps-r1-06-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-assessment.md", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "7658d7859d33f970db1941884dd450ff94383a19", + "sha256": "afb58e4c69b3644be311160d15dc531a291e13f2313ac151af8c19af23b768c5" + }, + "narps-r1-06-judgment-01/fresh-rerun.json": { + "bytes": 10420, + "public_branch": "codex/narps-r1-06-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-fresh-rerun.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "7658d7859d33f970db1941884dd450ff94383a19", + "sha256": "c6ec4effd26135909cef40efbc3725099040840efcfd428ea6a9e4c926bdd559" + }, + "narps-r1-06-judgment-01/native-result.json": { + "bytes": 5606, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "f8b33e4f26fa8438f7ae74e41023f564bfc4be889b5f1bfaaa8e0c8589150a52" + }, + "narps-r1-06-judgment-01/output-binding.json": { + "bytes": 2113, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "9031a7443f79ab9d765bb7eab403c89e8a06fef55e8214c0c11bff4d672c4a39" + }, + "narps-r1-06-judgment-01/response.json": { + "bytes": 20883, + "public_branch": "codex/narps-r1-06-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-response.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "7658d7859d33f970db1941884dd450ff94383a19", + "sha256": "c084d51c97c0cd7d61a50611ba46774aa93740227f0ea6d1fbf86c15a5b0f637" + }, "narps-r1-06/recipient-check.json": { "bytes": 2395, "public_url": null, @@ -1030,14 +1680,18 @@ }, "narps-r1-07-judgment-01/assessment.md": { "bytes": 14845, - "public_url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", - "publication_status": "published-immutable-source-hash-verified", + "public_branch": "codex/narps-r1-07-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-assessment.md", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "5a16be31d225574a4643a8feb000ca0a5fa7f7ad", "sha256": "ddca54caa74904890762dae31e8a85212f50c5f0ef29e25e68b29bba056c4e51" }, "narps-r1-07-judgment-01/fresh-rerun.json": { "bytes": 7861, - "public_url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-fresh-rerun.json", - "publication_status": "published-immutable-source-hash-verified", + "public_branch": "codex/narps-r1-07-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-fresh-rerun.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "5a16be31d225574a4643a8feb000ca0a5fa7f7ad", "sha256": "b1ae388ae26cc6e7b2e68a31ff92964c1c6c155a1c044ce58ea6f75844c6c44f" }, "narps-r1-07-judgment-01/native-result.json": { @@ -1054,20 +1708,26 @@ }, "narps-r1-07-judgment-01/response.json": { "bytes": 16516, - "public_url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-response.json", - "publication_status": "published-immutable-source-hash-verified", + "public_branch": "codex/narps-r1-07-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-response.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "5a16be31d225574a4643a8feb000ca0a5fa7f7ad", "sha256": "4e8631ab62092378c1ba98182492ca6950b8065dc32f3438812967cbe3d42e1e" }, "narps-r1-07-judgment-02/assessment.md": { "bytes": 16726, - "public_url": null, - "publication_status": "not-established-by-this-export", + "public_branch": "codex/narps-r1-07-judge-02-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-02-output/2026-10-16-assessment.md", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "436630373511a0df2386d0944528de2fa5a5b549", "sha256": "d885f65f05bb6097f36f3697e1441b7163bfbd9817105dc02e6110ebccaddade" }, "narps-r1-07-judgment-02/fresh-rerun.json": { "bytes": 11599, - "public_url": null, - "publication_status": "not-established-by-this-export", + "public_branch": "codex/narps-r1-07-judge-02-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-02-output/2026-10-16-fresh-rerun.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "436630373511a0df2386d0944528de2fa5a5b549", "sha256": "9e759e36b01d5d210ce7efaa04de1cd30ff053890ea801d5789fcee0449b00c6" }, "narps-r1-07-judgment-02/native-result.json": { @@ -1084,8 +1744,10 @@ }, "narps-r1-07-judgment-02/response.json": { "bytes": 19623, - "public_url": null, - "publication_status": "not-established-by-this-export", + "public_branch": "codex/narps-r1-07-judge-02-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-02-output/2026-10-16-response.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "436630373511a0df2386d0944528de2fa5a5b549", "sha256": "f9f4de3a9735f8b2c5f4df2ef97a3b05926e1305dc80017742e064d46a3e6e69" }, "narps-r1-07/recipient-check.json": { @@ -1096,14 +1758,18 @@ }, "narps-r1-08-judgment-01/assessment.md": { "bytes": 19175, - "public_url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", - "publication_status": "published-immutable-source-hash-verified", + "public_branch": "codex/narps-r1-08-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-assessment.md", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8", "sha256": "4c24ea408fbc1aeb9879f0c7928779f46abf18e4f46bc3b5a22ca601c97a4b4d" }, "narps-r1-08-judgment-01/fresh-rerun.json": { "bytes": 7732, - "public_url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-fresh-rerun.json", - "publication_status": "published-immutable-source-hash-verified", + "public_branch": "codex/narps-r1-08-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-fresh-rerun.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8", "sha256": "4650b840be0f75ddc91e43c62449752e9ae881d27a3896cfda5745480889ad44" }, "narps-r1-08-judgment-01/native-result.json": { @@ -1120,8 +1786,10 @@ }, "narps-r1-08-judgment-01/response.json": { "bytes": 20607, - "public_url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-response.json", - "publication_status": "published-immutable-source-hash-verified", + "public_branch": "codex/narps-r1-08-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-response.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8", "sha256": "137c87adfd55f87cee709f71300aee93d43049395623841b1ee29006069724bb" }, "narps-r1-08/recipient-check.json": { @@ -1132,14 +1800,18 @@ }, "narps-r1-09-judgment-01/assessment.md": { "bytes": 16195, - "public_url": null, - "publication_status": "not-established-by-this-export", + "public_branch": "codex/narps-r1-09-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-assessment.md", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "ab1e49cb0bd0f54b297ab77a982b246e638aa8e6", "sha256": "6feb85a68d853a6e749901bc92fb2b2818bdacd9df5c7703385dcbad7fb38eb2" }, "narps-r1-09-judgment-01/fresh-rerun.json": { "bytes": 13018, - "public_url": null, - "publication_status": "not-established-by-this-export", + "public_branch": "codex/narps-r1-09-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-fresh-rerun.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "ab1e49cb0bd0f54b297ab77a982b246e638aa8e6", "sha256": "4b12f71d2243ce9c31ea76f885088d42d626b17bc8e9c33d5c7afb6e1699183a" }, "narps-r1-09-judgment-01/native-result.json": { @@ -1148,10 +1820,18 @@ "publication_status": "not-established-by-this-export", "sha256": "2dede59a6d75a831d68aa64dffe4270436f0c54144ce48cbc215c656bcc32bc7" }, - "narps-r1-09-judgment-01/response.json": { - "bytes": 17915, + "narps-r1-09-judgment-01/output-binding.json": { + "bytes": 2110, "public_url": null, "publication_status": "not-established-by-this-export", + "sha256": "55644e0cde57a395d5155c64ec3eb3e34ec28b37ffdaaf953eb2012f729d2a88" + }, + "narps-r1-09-judgment-01/response.json": { + "bytes": 17915, + "public_branch": "codex/narps-r1-09-judge-01-output", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-response.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "ab1e49cb0bd0f54b297ab77a982b246e638aa8e6", "sha256": "34d3f2681e083a8dbf21ffb1aec1f0932a9c4fa841c3753325224c881a97bda0" }, "narps-r1-09/recipient-check.json": { @@ -1160,12 +1840,21 @@ "publication_status": "not-established-by-this-export", "sha256": "b5f577b038bc88bd4c50efd337e6b9dae7b46908d49004e94ac08afb26e7db62" }, + "narps-r1-12/recipient-check.json": { + "bytes": 312, + "public_url": null, + "publication_status": "not-established-by-this-export", + "sha256": "947a85855045bdacd5d374958f5f23a5ee351f1700410ee652c132ef9177d1e5" + }, "round-1.json": { - "bytes": 27716, + "bytes": 44026, "coordinator_path": "iterations/narps-v1/round-1.json", "matches_coordinator_head": true, - "public_url": "https://github.com/leej3/stamped-in-practice/blob/3eb6f20f60a3375dcaadec071e9f099681d73d66/iterations/narps-v1/round-1.json", - "sha256": "dc752dfded510a21509a6b4a24de34aac7068a9c728ee4d5efcf91b849f7f30a" + "public_branch": "main", + "public_url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/round-1.json", + "publication_status": "published-branch-source-hash-verified", + "published_commit": "48b6dcef2cbc918cfc3c4d7c2c6b2bffeb4f8ba5", + "sha256": "69005d1dc9d92a9db910d6d58985293b7c2bc474afd96573630ebd89c2f16648" } }, "study": "narps", diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json index 975dcc5b..818e8abc 100644 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json +++ b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json @@ -183,8 +183,9 @@ "source_revision": "d90a335549f43007eac05902859224e6ce2eaada", "source_path": "results/analysis_summary.json", "source_git_object": "bd230c0a3def24aa19b66f3edd3f9998e06c319b", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/d90a335549f43007eac05902859224e6ce2eaada/results/analysis_summary.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/analysis_summary.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-01" }, "summaries/narps-r1-02.json": { "sha256": "bf469b8e89420e8eb59270035d63b5defd4e766139daef8a765a7d8775bdaa49", @@ -193,8 +194,9 @@ "source_revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", "source_path": "results/results.json", "source_git_object": "601f06c9527731eb94a79b71164c56d3fced28df", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4/results/results.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/results.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-02" }, "summaries/narps-r1-03.json": { "sha256": "550cecbb35f10e7cfb16e4f177a15b11a47525115be5297f52b271613f91a812", @@ -203,8 +205,9 @@ "source_revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", "source_path": "results/summary.json", "source_git_object": "fc9a8227ba6c9aaea07b3d1cb5debf123b21a042", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/abf95b00c02fb55d16c4d269926c1428cedc0574/results/summary.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/summary.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-03" }, "summaries/narps-r1-05.json": { "sha256": "08274f541bff5d0fa7673474fbb401b00619a9bdaf4cb523b06baad574bd2972", @@ -213,8 +216,9 @@ "source_revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", "source_path": "results/run_summary.json", "source_git_object": "fd9592aeace204f563c6ffbc0dbd6071bd12a444", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9/results/run_summary.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/run_summary.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-05" }, "summaries/narps-r1-06.json": { "sha256": "a3863b5f4cc8cd1adf157e6aec7015f1715ed725d08aa63cc8982b98a558c527", @@ -223,8 +227,9 @@ "source_revision": "32d9cabf7b5d041f9efb97830bf5279068809357", "source_path": "results/analysis_results.json", "source_git_object": "3a3da636f1b7964f3e1a42416249f29539131d87", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/32d9cabf7b5d041f9efb97830bf5279068809357/results/analysis_results.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/results/analysis_results.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-06" }, "summaries/narps-r1-07.json": { "sha256": "8d46dee5fbba952a3834240325da284af53fb3dd1d797895c211735692c7e3dd", @@ -233,8 +238,9 @@ "source_revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", "source_path": "results/analysis_results.json", "source_git_object": "1714164ffa958051656204cde9a4f4a24d977f4d", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/f30190d8144a9e15acfa1c0d973eadf0d655c83c/results/analysis_results.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/results/analysis_results.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-07" }, "summaries/narps-r1-08.json": { "sha256": "24ea1b1c7e01825adb9f13109e178263d0098415a378da6d1d607ad9b2e1b3f5", @@ -243,8 +249,9 @@ "source_revision": "42e957201315aa8221ba60fbe614119e22639ce8", "source_path": "results/analysis_summary.json", "source_git_object": "75a2624b5f4722883e59d9b6376b8fb44d65232b", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/42e957201315aa8221ba60fbe614119e22639ce8/results/analysis_summary.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/analysis_summary.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-08" }, "summaries/narps-r1-09.json": { "sha256": "c1c5073516a8de8412b63d36a96524dab63bb54073db9033c5b9ab977f7afd47", @@ -253,8 +260,9 @@ "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", "source_path": "results/results.json", "source_git_object": "bf76fe1606138531cfd0cd40d3c1fdd0eb8847eb", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-09" }, "maps/one_sample_t.nii.gz": { "sha256": "75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b", @@ -263,9 +271,10 @@ "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", "source_path": "results/one_sample_t.nii.gz", "source_git_object": "bd77eaca1c34cc3f19032439486a21ab8c0356dc", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/one_sample_t.nii.gz", + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/one_sample_t.nii.gz", "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_annex_key": "SHA256E-s772808--75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b.nii.gz" + "source_annex_key": "SHA256E-s772808--75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b.nii.gz", + "source_branch": "codex/narps-r1-09" }, "maps/common_brain_mask.nii.gz": { "sha256": "e72a50e0531fd4e353fff55c81b2790319aebe2cb30aba305fbf51b7394e5ff1", @@ -274,8 +283,9 @@ "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", "source_path": "results/common_brain_mask.nii.gz", "source_git_object": "64d0cb426a4591f510acb841af2644f00a654714", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/common_brain_mask.nii.gz", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/common_brain_mask.nii.gz", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-09" }, "maps/max_t_fwe_p05_mask.nii.gz": { "sha256": "e4fcc6042c290ac029f16a5741a15e84c7a0072e8907572edef1cd69a76d78ac", @@ -284,8 +294,9 @@ "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", "source_path": "results/max_t_fwe_p05_mask.nii.gz", "source_git_object": "96e18b8a3cbae8cb209b053493adec3346abaac2", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/max_t_fwe_p05_mask.nii.gz", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/max_t_fwe_p05_mask.nii.gz", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-09" }, "maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz": { "sha256": "b520b7442d546efa2aa7bbc0fa1c72beab5c77fee3c0d4e1d1901f16e5fd4337", @@ -294,8 +305,9 @@ "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", "source_path": "results/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", "source_git_object": "d63b6542bce239f208ed0c2bfa98c7d154a34f9a", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-09" }, "participant-map-sources.json": { "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", @@ -304,8 +316,9 @@ "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", "source_path": "input/sources.json", "source_git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/input/sources.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/input/sources.json", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-09" }, "source-analysis-run09.py": { "sha256": "efb44f741818ba6b414b27cd57b5414bb5dd7ed7c02c7d55b1e52eae3531dcf8", @@ -314,8 +327,9 @@ "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", "source_path": "scripts/analyze_gain.py", "source_git_object": "1373c078213f3a2a54277d2302622ae7b79c5a80", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", - "transformation": "byte-for-byte copy; annex symlinks dereferenced" + "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", + "transformation": "byte-for-byte copy; annex symlinks dereferenced", + "source_branch": "codex/narps-r1-09" }, "maps/anatomical-context.nii.gz": { "sha256": "a110f8454d04756a9eef6dfae4750f75629d96d3e5e6f348a4c71d28495bcbca", diff --git a/2026-usrse/stamped-ai-study/data/narps-figure-guidance.json b/2026-usrse/stamped-ai-study/data/narps-figure-guidance.json deleted file mode 100644 index 89312b69..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-figure-guidance.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "group_map": { - "file": "figures/narps-group-map.svg", - "caption": "Example group analysis of 54 participant gain-effect maps (run 09). Colors show unthresholded t statistics within common participant coverage; yellow outlines the anatomical vmPFC region and green shows positive whole-brain FWE significance. Corrected positive effects were posterior, with no overlap in this vmPFC region.", - "result": "For run09, 24 positive whole-brain voxels survived permutation max-T FWE correction, with none in bilateral medial orbitofrontal vmPFC parcels. The descriptive mean gain coefficient in that region was -0.00793 (95% t CI -0.03462 to 0.01877). This bounded group reanalysis does not reproduce all upstream NARPS processing or a precision-weighted mixed-effects model.", - "interpretation": "The example does not support the specified positive vmPFC hypothesis under this run's anatomical definition and whole-brain correction. Absence of significance is not evidence of a zero effect. Gray anatomical areas outside common coverage are not evaluated as null signal." - }, - "pilot_variability": { - "file": "figures/narps-analysis-variability.svg", - "caption": "Pilot outputs illustrate analysis variation. Run labels identify eight completed analyses; search masks ranged from 186,192 to 210,968 voxels. Native primary correction yielded 11 positive whole-brain voxels with Bonferroni or 24 with permutation max-T. The explicit-STAMPED condition has no completed result in these example inputs.", - "interpretation": "These are native worker result descriptors. Mask definitions, corrected search spaces and methods differ, so neither condition means nor causal effects are estimated. Incomplete results are absent, not zero. This example should be secondary to the planned finished-study comparison." - }, - "minimum_derived_collection": { - "existing_runs_do_not_need_to_be_reexecuted_for": [ - "Extract each saved native analysis mask, mean-effect map, t map, corrected p map, and corrected positive support, retaining source revision, correction method and hypothesis decision.", - "Define a fixed evaluation mask before inspecting condition labels: intersection of valid participant support and an independently defined anatomical brain mask, with a fixed vmPFC region for localization.", - "On that common evaluation mask, compare saved worker t/effect fields and native corrected support using pairwise spatial agreement, voxel counts and overlap; retain native search-space information because it affects correction.", - "Report failed or incomplete runs separately, preserve every run, and keep an explicit denominator for each condition and skill iteration." - ], - "avoid_as_condition_variability_endpoint": "A fixed-ROI mean recomputed from the same 54 source maps is identical across conditions by construction. It is a scientific reference and a correctness check, not an informative skill-condition effect measure.", - "requires_prospective_design_change": "For a causal assistance-condition claim, freeze skills and the evaluator within each iteration, predefine replicate allocation and stopping, run balanced independent workers for all four conditions, and do not adapt a skill snapshot mid-block. Label derived pilot endpoints as exploratory; use a held-out study or later iteration to evaluate skills adapted from pilot outcomes." - } -} diff --git a/2026-usrse/stamped-ai-study/data/narps-spatial/derived-summary.json b/2026-usrse/stamped-ai-study/data/narps-spatial/derived-summary.json new file mode 100644 index 00000000..25b8a20c --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-spatial/derived-summary.json @@ -0,0 +1,140 @@ +{ + "shared_support_voxels": 184543, + "all_runs_maximum_pairwise_t_difference": 2.384185791015625e-06, + "all_runs_median_pairwise_t_range": 8.940696716308594e-08, + "conditions": [ + { + "id": "baseline", + "label": "No supplied skills", + "runs": [ + "narps-r1-01", + "narps-r1-02", + "narps-r1-03" + ], + "maximum_t_sample_sd": 0.0, + "median_t_sample_sd": 0.0, + "maximum_pairwise_t_difference": 0.0, + "positive_in_n_runs_voxel_counts": { + "0": 184520, + "1": 12, + "2": 0, + "3": 11 + }, + "native_positive_voxels_per_run": [ + 11, + 11, + 24 + ], + "shared_positive_voxels_per_run": [ + 11, + 11, + 23 + ], + "positive_voxels_outside_shared_support_per_run": [ + 0, + 0, + 1 + ] + }, + { + "id": "discover-general", + "label": "Find useful skills", + "runs": [ + "narps-r1-04", + "narps-r1-05", + "narps-r1-06" + ], + "maximum_t_sample_sd": 1.3765103082409519e-06, + "median_t_sample_sd": 5.1619136559035694e-08, + "maximum_pairwise_t_difference": 2.384185791015625e-06, + "positive_in_n_runs_voxel_counts": { + "0": 184520, + "1": 0, + "2": 0, + "3": 23 + }, + "native_positive_voxels_per_run": [ + 24, + 24, + 24 + ], + "shared_positive_voxels_per_run": [ + 23, + 23, + 23 + ], + "positive_voxels_outside_shared_support_per_run": [ + 1, + 1, + 1 + ] + }, + { + "id": "discover-science", + "label": "Find research skills", + "runs": [ + "narps-r1-07", + "narps-r1-08", + "narps-r1-09" + ], + "maximum_t_sample_sd": 1.3765103082409519e-06, + "median_t_sample_sd": 5.1619136559035694e-08, + "maximum_pairwise_t_difference": 2.384185791015625e-06, + "positive_in_n_runs_voxel_counts": { + "0": 184520, + "1": 0, + "2": 0, + "3": 23 + }, + "native_positive_voxels_per_run": [ + 24, + 24, + 24 + ], + "shared_positive_voxels_per_run": [ + 23, + 23, + 23 + ], + "positive_voxels_outside_shared_support_per_run": [ + 1, + 1, + 1 + ] + }, + { + "id": "stamped-explicit", + "label": "Use STAMPED skills", + "runs": [ + "narps-r1-10", + "narps-r1-11", + "narps-r1-12" + ], + "maximum_t_sample_sd": 0.0, + "median_t_sample_sd": 0.0, + "maximum_pairwise_t_difference": 0.0, + "positive_in_n_runs_voxel_counts": { + "0": 184520, + "1": 0, + "2": 0, + "3": 23 + }, + "native_positive_voxels_per_run": [ + 24, + 23, + 24 + ], + "shared_positive_voxels_per_run": [ + 23, + 23, + 23 + ], + "positive_voxels_outside_shared_support_per_run": [ + 1, + 0, + 1 + ] + } + ], + "interpretation": "Saved group t fields agree to numerical precision on shared support. The observed variation in corrected detections reflects native correction choices: two No supplied skills runs use Bonferroni; all other runs use permutation max-T. This descriptive comparison does not isolate a causal condition effect." +} diff --git a/2026-usrse/stamped-ai-study/data/narps-spatial/provenance.json b/2026-usrse/stamped-ai-study/data/narps-spatial/provenance.json new file mode 100644 index 00000000..cf075faf --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-spatial/provenance.json @@ -0,0 +1,885 @@ +{ + "generated_utc": "2026-10-16T04:36:08.051014+00:00", + "study": "NARPS AO86 equal-indifference potential-gain group analysis", + "n_participants": 54, + "runs_per_condition": 3, + "records": [ + { + "run": "narps-r1-01", + "condition": "baseline", + "label": "No supplied skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", + "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "Bonferroni", + "mask_rule": "native saved analysis mask", + "native_mask_voxels": 186400, + "native_positive_voxels": 11 + }, + { + "run": "narps-r1-02", + "condition": "baseline", + "label": "No supplied skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", + "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "Bonferroni", + "mask_rule": "native saved analysis mask", + "native_mask_voxels": 192333, + "native_positive_voxels": 11 + }, + { + "run": "narps-r1-03", + "condition": "baseline", + "label": "No supplied skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", + "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "native saved analysis mask", + "native_mask_voxels": 210968, + "native_positive_voxels": 24 + }, + { + "run": "narps-r1-04", + "condition": "discover-general", + "label": "Find useful skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", + "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "native saved analysis mask", + "native_mask_voxels": 198029, + "native_positive_voxels": 24 + }, + { + "run": "narps-r1-05", + "condition": "discover-general", + "label": "Find useful skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", + "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "native saved analysis mask", + "native_mask_voxels": 198029, + "native_positive_voxels": 24 + }, + { + "run": "narps-r1-06", + "condition": "discover-general", + "label": "Find useful skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", + "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "positive p values; source writes zero outside tested support", + "native_mask_voxels": 186192, + "native_positive_voxels": 24 + }, + { + "run": "narps-r1-07", + "condition": "discover-science", + "label": "Find research skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", + "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "finite p values; source writes NaN outside tested support", + "native_mask_voxels": 198029, + "native_positive_voxels": 24 + }, + { + "run": "narps-r1-08", + "condition": "discover-science", + "label": "Find research skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", + "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "native saved analysis mask", + "native_mask_voxels": 210968, + "native_positive_voxels": 24 + }, + { + "run": "narps-r1-09", + "condition": "discover-science", + "label": "Find research skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", + "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "native saved analysis mask", + "native_mask_voxels": 198029, + "native_positive_voxels": 24 + }, + { + "run": "narps-r1-10", + "condition": "stamped-explicit", + "label": "Use STAMPED skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", + "condition_assignment_sha256": "58fd42670489699d4d7b65b300b41c687153e03a043da3aedca0b2f4c2e47af1", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "54/54 finite nonzero participant support; same input identities and rule as saved run09 mask", + "native_mask_voxels": 198029, + "native_positive_voxels": 24 + }, + { + "run": "narps-r1-11", + "condition": "stamped-explicit", + "label": "Use STAMPED skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", + "condition_assignment_sha256": "58fd42670489699d4d7b65b300b41c687153e03a043da3aedca0b2f4c2e47af1", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "Nilearn MNI152 brain mask resampled as in source; all input values verified finite by source", + "native_mask_voxels": 196120, + "native_positive_voxels": 23 + }, + { + "run": "narps-r1-12", + "condition": "stamped-explicit", + "label": "Use STAMPED skills", + "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", + "condition_assignment_sha256": "58fd42670489699d4d7b65b300b41c687153e03a043da3aedca0b2f4c2e47af1", + "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", + "primary_correction": "permutation max-T", + "mask_rule": "54/54 finite nonzero participant support; same input identities and rule as saved run09 mask", + "native_mask_voxels": 198029, + "native_positive_voxels": 24 + } + ], + "conditions": [ + { + "id": "baseline", + "label": "No supplied skills" + }, + { + "id": "discover-general", + "label": "Find useful skills" + }, + { + "id": "discover-science", + "label": "Find research skills" + }, + { + "id": "stamped-explicit", + "label": "Use STAMPED skills" + } + ], + "evaluation_support": "Intersection of all twelve native analysis masks and finite nonzero support in all 54 participant maps. Outside is not evaluated as a zero or negative result.", + "frequency_definition": "For each condition, count the three saved native positive primary FWE decisions at each shared-support voxel; native correction/search-space choices are retained.", + "t_variability_definition": "Sample SD (ddof=1) across the three saved unthresholded t values per condition, restricted to the same shared support; no new group inference.", + "display": { + "view": "posterior axial crops", + "xlim_mni_mm": [ + -42, + 42 + ], + "ylim_mni_mm": [ + -110, + -78 + ], + "z_cuts_mni_mm": [ + -8.4, + -3.6, + -1.2 + ], + "orientation": "neurological: image left is participant left", + "slice_selection": "Three axial planes containing the observed posterior corrected loci; a descriptive result visualization, not an independent localization test." + }, + "anatomy": { + "description": "Nilearn bundled skull-stripped MNI152 anatomical context, continuously resampled to the native grid", + "url": "https://nilearn.github.io/stable/modules/generated/nilearn.datasets.load_mni152_template.html" + }, + "software": { + "numpy": "2.5.4", + "nibabel": "5.4.2", + "nilearn": "0.14.1" + }, + "npz_sha256": "7c630a699298b18e0fdad17ebfe6e89400d64568705dacc10d820381ed13509f", + "source_files": { + "narps-r1-09/results/common_brain_mask.nii.gz": { + "sha256": "e72a50e0531fd4e353fff55c81b2790319aebe2cb30aba305fbf51b7394e5ff1", + "bytes": 23179, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-09", + "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "git_object": "64d0cb426a4591f510acb841af2644f00a654714", + "path": "results/common_brain_mask.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/common_brain_mask.nii.gz" + }, + "narps-r1-01/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-01", + "revision": "d90a335549f43007eac05902859224e6ce2eaada", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/input/sources.json" + }, + "narps-r1-01/results/analysis_summary.json": { + "sha256": "8198242f3ac1eaf7a84ccf23b3513c8ecfbadc65e18d4058d7c814b3de1c8f67", + "bytes": 6963, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-01", + "revision": "d90a335549f43007eac05902859224e6ce2eaada", + "git_object": "bd230c0a3def24aa19b66f3edd3f9998e06c319b", + "path": "results/analysis_summary.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/analysis_summary.json" + }, + "narps-r1-01/scripts/group_gain.py": { + "sha256": "01399fbc0a5cff2b2b27719e0a4ffb74feadab548bea2ae74db39583f0cb50fb", + "bytes": 10499, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-01", + "revision": "d90a335549f43007eac05902859224e6ce2eaada", + "git_object": "f0191bd256f500c3a330194f5933c21376eae233", + "path": "scripts/group_gain.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/scripts/group_gain.py" + }, + "narps-r1-01/results/group_t_positive.nii.gz": { + "sha256": "8db0756ebc4224b4eebe8724b85a13798da4b8aa0f0393bffb56c01ac8c2c997", + "bytes": 958920, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-01", + "revision": "d90a335549f43007eac05902859224e6ce2eaada", + "git_object": "446a865d05de288b3133836d3604e818f3b26535", + "path": "results/group_t_positive.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/group_t_positive.nii.gz" + }, + "narps-r1-01/results/group_p_fwe_bonferroni.nii.gz": { + "sha256": "fba75a6e4a2e7e91d83dec13a3548611938aefe56253ea176421ef95c59dcb5b", + "bytes": 39319, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-01", + "revision": "d90a335549f43007eac05902859224e6ce2eaada", + "git_object": "4af7537ba5635c8f97214ac5196074033dd6a347", + "path": "results/group_p_fwe_bonferroni.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/group_p_fwe_bonferroni.nii.gz" + }, + "narps-r1-01/results/whole_brain_search_mask.nii.gz": { + "sha256": "7f97b6442cf936366df6513ab56867d3052b74a33b4b1ff77447e79be9473128", + "bytes": 65767, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-01", + "revision": "d90a335549f43007eac05902859224e6ce2eaada", + "git_object": "8c9f42ce30520c33f97ab77373659023b8f06a0c", + "path": "results/whole_brain_search_mask.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/whole_brain_search_mask.nii.gz" + }, + "narps-r1-02/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-02", + "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/input/sources.json" + }, + "narps-r1-02/results/results.json": { + "sha256": "bf469b8e89420e8eb59270035d63b5defd4e766139daef8a765a7d8775bdaa49", + "bytes": 2717, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-02", + "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "git_object": "601f06c9527731eb94a79b71164c56d3fced28df", + "path": "results/results.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/results.json" + }, + "narps-r1-02/scripts/analyze.py": { + "sha256": "167005a3e7dfaec350d4ba8d14b46415afc372456612aecb5083203ebf43b464", + "bytes": 12938, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-02", + "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "git_object": "751e65efa9fbc30b91c05f9de39d54d5a3a12aad", + "path": "scripts/analyze.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/scripts/analyze.py" + }, + "narps-r1-02/results/group_tstat.nii.gz": { + "sha256": "5c153b28b3694aa8c4a3dd5b21a559e17a574b8d52705443d81911a26dbe3b32", + "bytes": 752707, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-02", + "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "git_object": "e0988f67b81a0f57ecb2a1331c2bb9e2fa922909", + "path": "results/group_tstat.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/group_tstat.nii.gz", + "annex_key": "SHA256E-s752707--5c153b28b3694aa8c4a3dd5b21a559e17a574b8d52705443d81911a26dbe3b32.nii.gz" + }, + "narps-r1-02/results/group_bonferroni_fwe_p.nii.gz": { + "sha256": "51849618a87da2339d14e0e7f81b6db615e53bde1ce7109dc0eda51efe9cf394", + "bytes": 18147, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-02", + "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "git_object": "89a8e2ba980f2b241ec7569ba37bd5f61f672832", + "path": "results/group_bonferroni_fwe_p.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/group_bonferroni_fwe_p.nii.gz" + }, + "narps-r1-02/results/analysis_mask.nii.gz": { + "sha256": "6f795d10c04fe5079dbba16f11816edcd2bd0921a5c823638f9deb4496c0e49a", + "bytes": 24682, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-02", + "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "git_object": "2fa7ef1b443696382780fa69bfd8f717941ec67c", + "path": "results/analysis_mask.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/analysis_mask.nii.gz" + }, + "narps-r1-03/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-03", + "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/input/sources.json" + }, + "narps-r1-03/results/summary.json": { + "sha256": "550cecbb35f10e7cfb16e4f177a15b11a47525115be5297f52b271613f91a812", + "bytes": 8811, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-03", + "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", + "git_object": "fc9a8227ba6c9aaea07b3d1cb5debf123b21a042", + "path": "results/summary.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/summary.json" + }, + "narps-r1-03/analyze.py": { + "sha256": "049b06cc99210ff268129b0cc45a6585221dcfe37b17e276de12583672c1babd", + "bytes": 13626, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-03", + "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", + "git_object": "093fabbf82e9c065b64a73e0d945a80bff9b4671", + "path": "analyze.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/analyze.py" + }, + "narps-r1-03/results/group_t.nii.gz": { + "sha256": "aff0a67360cf89eb3609b7f9cd54b40c26967c99c2cb537ffd00a179cd42f26c", + "bytes": 821466, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-03", + "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", + "git_object": "b057360af40130678b4842e2dfff3fd374048244", + "path": "results/group_t.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/group_t.nii.gz", + "annex_key": "SHA256E-s821466--aff0a67360cf89eb3609b7f9cd54b40c26967c99c2cb537ffd00a179cd42f26c.nii.gz" + }, + "narps-r1-03/results/p_fwer_maxT.nii.gz": { + "sha256": "bba0aa044ee8a3d4e7b807b8b34abfbcb154734a403b4bb29e68bb765a406a5f", + "bytes": 21364, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-03", + "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", + "git_object": "8caec43611d30ded5f2c26fdbb960fcf4e899aa5", + "path": "results/p_fwer_maxT.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/p_fwer_maxT.nii.gz" + }, + "narps-r1-03/results/analysis_mask.nii.gz": { + "sha256": "9f6ddeec95fed989653ff849adfa5efa0dab7219d9d91b2e2730673d791c85f3", + "bytes": 44508, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-03", + "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", + "git_object": "adc7874de1e9ca808ac7f2ea25502c7a6a54ecee", + "path": "results/analysis_mask.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/analysis_mask.nii.gz" + }, + "narps-r1-04/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-04", + "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/input/sources.json" + }, + "narps-r1-04/results/group_results.json": { + "sha256": "41f8072ac1bc0bccb46502250b9c7f04325ed973d892bff508cbe030cc9fc322", + "bytes": 2920, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-04", + "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", + "git_object": "3a98ea065bff101e851415d7c7770a9d941ac0ab", + "path": "results/group_results.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/results/group_results.json" + }, + "narps-r1-04/analysis/run_group_analysis.py": { + "sha256": "e168db1e5d0cc310a09bc5f4c798589fcfc2dc20b56770e484ef46b53563df42", + "bytes": 15524, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-04", + "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", + "git_object": "1011c2edd7510fe355af428321f60cfa9a56dbbb", + "path": "analysis/run_group_analysis.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/analysis/run_group_analysis.py" + }, + "narps-r1-04/results/t_gain.nii.gz": { + "sha256": "818262bf4481df4ae3d73d41033953eb844772f9df8291ca7ebcc5a4bd088d1e", + "bytes": 1013790, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-04", + "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", + "git_object": "771aa7a862a1099fcdc2db48dc86ffd7748c4440", + "path": "results/t_gain.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/results/t_gain.nii.gz", + "annex_key": "SHA256E-s1013790--818262bf4481df4ae3d73d41033953eb844772f9df8291ca7ebcc5a4bd088d1e.nii.gz" + }, + "narps-r1-04/results/p_fwe_gain.nii.gz": { + "sha256": "ede0004a41ebf7857d89ba3f4eb14b7280c4cc923970c11793e2c57447625035", + "bytes": 43187, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-04", + "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", + "git_object": "e70d17de28dd1b93aace14c0c3f95a47e02a3602", + "path": "results/p_fwe_gain.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/results/p_fwe_gain.nii.gz" + }, + "narps-r1-04/results/group_coverage_mask.nii.gz": { + "sha256": "0de1b9e5607e91c3dc7bdcf084ec4c305aa9cb6b29a0eb23f59d23b174e72f36", + "bytes": 65417, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-04", + "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", + "git_object": "f4e5133921fbc84c914c9e24f3b89a595089bcd8", + "path": "results/group_coverage_mask.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/results/group_coverage_mask.nii.gz" + }, + "narps-r1-05/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-05", + "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/input/sources.json" + }, + "narps-r1-05/results/run_summary.json": { + "sha256": "08274f541bff5d0fa7673474fbb401b00619a9bdaf4cb523b06baad574bd2972", + "bytes": 3060, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-05", + "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "git_object": "fd9592aeace204f563c6ffbc0dbd6071bd12a444", + "path": "results/run_summary.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/run_summary.json" + }, + "narps-r1-05/analysis/run_group_analysis.py": { + "sha256": "a97d38d8c7cb60fb2687c34885c0098bd86bd068145305675ec5377db7b8223c", + "bytes": 12838, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-05", + "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "git_object": "b173d1d1a6b5ee97e0c3d3801afee671ce48d30a", + "path": "analysis/run_group_analysis.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/analysis/run_group_analysis.py" + }, + "narps-r1-05/results/group_tstat.nii.gz": { + "sha256": "f8733393f7b503600e07f8f1198091f2e86adeb19aa1aad88cf099194066f10f", + "bytes": 1013927, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-05", + "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "git_object": "096eca1d8bcf5db687c0fd6e63936fc4b9770fa2", + "path": "results/group_tstat.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/group_tstat.nii.gz", + "annex_key": "SHA256E-s1013927--f8733393f7b503600e07f8f1198091f2e86adeb19aa1aad88cf099194066f10f.nii.gz" + }, + "narps-r1-05/results/group_log10p_fwe_max_t.nii.gz": { + "sha256": "2a784f4bbe222200e8893619879e84144816f3cb54ba982fc1ed0fc257425c12", + "bytes": 72712, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-05", + "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "git_object": "21abdd68768170a125ed3af8cd449ef7b102645d", + "path": "results/group_log10p_fwe_max_t.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/group_log10p_fwe_max_t.nii.gz" + }, + "narps-r1-05/results/common_brain_mask.nii.gz": { + "sha256": "0540b531a4724bac2748a0de1b0746634393fd7b89ab6883b9e9dfef9df9dc85", + "bytes": 65428, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-05", + "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "git_object": "12eb1f6b3a85b3da585b0a63c9735eec240e3c99", + "path": "results/common_brain_mask.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/common_brain_mask.nii.gz" + }, + "narps-r1-06/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-06", + "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/input/sources.json" + }, + "narps-r1-06/results/analysis_results.json": { + "sha256": "a3863b5f4cc8cd1adf157e6aec7015f1715ed725d08aa63cc8982b98a558c527", + "bytes": 10956, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-06", + "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", + "git_object": "3a3da636f1b7964f3e1a42416249f29539131d87", + "path": "results/analysis_results.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/results/analysis_results.json" + }, + "narps-r1-06/scripts/group_analysis.py": { + "sha256": "3dbf553406bafd545f39462813068672fb273ed93221542252dc02d54a3cd204", + "bytes": 12129, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-06", + "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", + "git_object": "d7dd9afee47f5dcd285b15916d55bd8549f6b454", + "path": "scripts/group_analysis.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/scripts/group_analysis.py" + }, + "narps-r1-06/results/maps/group_t_unthresholded.nii.gz": { + "sha256": "0324b5ce56478512b0d37604bf07cfce5534785e7aca2637d2b04780bebd998c", + "bytes": 958133, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-06", + "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", + "git_object": "4449805cee59c2428b7b0dded07514d73c4f8e92", + "path": "results/maps/group_t_unthresholded.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/results/maps/group_t_unthresholded.nii.gz", + "annex_key": "SHA256E-s958133--0324b5ce56478512b0d37604bf07cfce5534785e7aca2637d2b04780bebd998c.nii.gz" + }, + "narps-r1-06/results/maps/group_p_fwe_maxT.nii.gz": { + "sha256": "6b92cf51c74166cfd8f7de3bc5b52748c42a8c46022ddbd268799e415abd4bcb", + "bytes": 70588, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-06", + "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", + "git_object": "180861cf52bcee553d4ca15f0401fc94c3c41960", + "path": "results/maps/group_p_fwe_maxT.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/results/maps/group_p_fwe_maxT.nii.gz" + }, + "narps-r1-07/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-07", + "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/input/sources.json" + }, + "narps-r1-07/results/analysis_results.json": { + "sha256": "8d46dee5fbba952a3834240325da284af53fb3dd1d797895c211735692c7e3dd", + "bytes": 1704, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-07", + "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "git_object": "1714164ffa958051656204cde9a4f4a24d977f4d", + "path": "results/analysis_results.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/results/analysis_results.json" + }, + "narps-r1-07/scripts/group_analysis.py": { + "sha256": "037fdf48616604d8c87d7a9acf3825626a23aa8d9052e0110968f7e015f11a72", + "bytes": 16600, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-07", + "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "git_object": "2c6a109f48d14b316744da7a19d2d7dff45d99cd", + "path": "scripts/group_analysis.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/scripts/group_analysis.py" + }, + "narps-r1-07/results/maps/group_tstat.nii.gz": { + "sha256": "92b81dd579ac9b50a7869f2d7773139b5584067ff33ed6cf593ef0f9f1b9cba5", + "bytes": 772872, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-07", + "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "git_object": "cc30d59874df527f1cb782721e675d53c753037f", + "path": "results/maps/group_tstat.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/results/maps/group_tstat.nii.gz", + "annex_key": "SHA256E-s772872--92b81dd579ac9b50a7869f2d7773139b5584067ff33ed6cf593ef0f9f1b9cba5.nii.gz" + }, + "narps-r1-07/results/maps/group_positive_maxT_pFWE.nii.gz": { + "sha256": "c80f1af69033f88e0aae80afd6aafdbacddd3fb73f63760ee321334a82c0d6a6", + "bytes": 50258, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-07", + "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "git_object": "72d82e9bc98babeab60cbdec3739fb0fae4899ea", + "path": "results/maps/group_positive_maxT_pFWE.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/results/maps/group_positive_maxT_pFWE.nii.gz" + }, + "narps-r1-08/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-08", + "revision": "42e957201315aa8221ba60fbe614119e22639ce8", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/input/sources.json" + }, + "narps-r1-08/results/analysis_summary.json": { + "sha256": "24ea1b1c7e01825adb9f13109e178263d0098415a378da6d1d607ad9b2e1b3f5", + "bytes": 2592, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-08", + "revision": "42e957201315aa8221ba60fbe614119e22639ce8", + "git_object": "75a2624b5f4722883e59d9b6376b8fb44d65232b", + "path": "results/analysis_summary.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/analysis_summary.json" + }, + "narps-r1-08/scripts/analyze_gain.py": { + "sha256": "878fdd3c61821980b1e13a951c33e65afab30761bad6ef3f165078d687881d8d", + "bytes": 14587, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-08", + "revision": "42e957201315aa8221ba60fbe614119e22639ce8", + "git_object": "021bc9d6484d5c9f8fc0aa095d7bbbd087361aed", + "path": "scripts/analyze_gain.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/scripts/analyze_gain.py" + }, + "narps-r1-08/results/group_t_positive.nii.gz": { + "sha256": "d3db14fceb26d1ce9d39b29a590d6b3915c083c48318bcae92239e0798dc96da", + "bytes": 1076313, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-08", + "revision": "42e957201315aa8221ba60fbe614119e22639ce8", + "git_object": "e5b90006b20988ad1b6dfaa21cc4b7491280d38d", + "path": "results/group_t_positive.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/group_t_positive.nii.gz", + "annex_key": "SHA256E-s1076313--d3db14fceb26d1ce9d39b29a590d6b3915c083c48318bcae92239e0798dc96da.nii.gz" + }, + "narps-r1-08/results/group_p_fwe_positive.nii.gz": { + "sha256": "a104f1d14cfdd1799efa530f774bd4d89ee7f193bb63a9585a8626731b1c2033", + "bytes": 71787, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-08", + "revision": "42e957201315aa8221ba60fbe614119e22639ce8", + "git_object": "9dd612f8f12c875cdb881908e04e088f63a4b002", + "path": "results/group_p_fwe_positive.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/group_p_fwe_positive.nii.gz" + }, + "narps-r1-08/results/group_mask_90pct_coverage.nii.gz": { + "sha256": "2c88b35880eb8814322a5df81c277844020c1662416375e92bdae4c76f6d0970", + "bytes": 66546, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-08", + "revision": "42e957201315aa8221ba60fbe614119e22639ce8", + "git_object": "10cfedc354302b03f0ce65b609398a873ae2163b", + "path": "results/group_mask_90pct_coverage.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/group_mask_90pct_coverage.nii.gz" + }, + "narps-r1-09/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-09", + "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/input/sources.json" + }, + "narps-r1-09/results/results.json": { + "sha256": "c1c5073516a8de8412b63d36a96524dab63bb54073db9033c5b9ab977f7afd47", + "bytes": 2500, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-09", + "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "git_object": "bf76fe1606138531cfd0cd40d3c1fdd0eb8847eb", + "path": "results/results.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json" + }, + "narps-r1-09/scripts/analyze_gain.py": { + "sha256": "efb44f741818ba6b414b27cd57b5414bb5dd7ed7c02c7d55b1e52eae3531dcf8", + "bytes": 12814, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-09", + "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "git_object": "1373c078213f3a2a54277d2302622ae7b79c5a80", + "path": "scripts/analyze_gain.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py" + }, + "narps-r1-09/results/one_sample_t.nii.gz": { + "sha256": "75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b", + "bytes": 772808, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-09", + "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "git_object": "bd77eaca1c34cc3f19032439486a21ab8c0356dc", + "path": "results/one_sample_t.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/one_sample_t.nii.gz", + "annex_key": "SHA256E-s772808--75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b.nii.gz" + }, + "narps-r1-09/results/max_t_log10_fwe_p.nii.gz": { + "sha256": "dd436be34e0012334759bb4b123bdeec3284919c37fd32b31b62fd6f0c38ac5a", + "bytes": 47377, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-09", + "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", + "git_object": "b28b244e45d0b0d94d4a830562cb863ddc8311ae", + "path": "results/max_t_log10_fwe_p.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/max_t_log10_fwe_p.nii.gz" + }, + "narps-r1-10/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-10", + "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/input/sources.json" + }, + "narps-r1-10/results/final-v3/summary.json": { + "sha256": "06e5103de5e0243408b18d30fba039f3ea26086c38c26c4f3f82360e8a66e949", + "bytes": 3219, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-10", + "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", + "git_object": "b48264ef7abad5cc7a65331c407f2197c174a5c5", + "path": "results/final-v3/summary.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/results/final-v3/summary.json" + }, + "narps-r1-10/code/analyze.py": { + "sha256": "1337978109b8887c3286cd09e7faf2faa1a85ec555331b9185fe1fe7d8f549fc", + "bytes": 12680, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-10", + "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", + "git_object": "596d3af5316ae3b13b3a2e5a22630fe731011e8d", + "path": "code/analyze.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/code/analyze.py" + }, + "narps-r1-10/results/final-v3/group-t.nii.gz": { + "sha256": "818262bf4481df4ae3d73d41033953eb844772f9df8291ca7ebcc5a4bd088d1e", + "bytes": 1013790, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-10", + "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", + "git_object": "b0167541f62e77922406bdc261d2edbcb1784d61", + "path": "results/final-v3/group-t.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/results/final-v3/group-t.nii.gz", + "annex_key": "SHA256E-s1013790--818262bf4481df4ae3d73d41033953eb844772f9df8291ca7ebcc5a4bd088d1e.nii.gz" + }, + "narps-r1-10/results/final-v3/group-fwe-p.nii.gz": { + "sha256": "52d4e6b11d498ea3c1f00700f1fc6dca91ff3401ceb2404937b3c07894a3b7d5", + "bytes": 70057, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-10", + "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", + "git_object": "56294839562feed428fc6b52899462846f9c0090", + "path": "results/final-v3/group-fwe-p.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/results/final-v3/group-fwe-p.nii.gz", + "annex_key": "SHA256E-s70057--52d4e6b11d498ea3c1f00700f1fc6dca91ff3401ceb2404937b3c07894a3b7d5.nii.gz" + }, + "narps-r1-11/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-11", + "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/input/sources.json" + }, + "narps-r1-11/results/summary.json": { + "sha256": "a048f20f1e91f92d19468a5bd676a4908361a7ee87cfc241aa5c077c0d79edb8", + "bytes": 1882, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-11", + "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", + "git_object": "6718202154ff9bf689f367e3f92823d1c2837706", + "path": "results/summary.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/results/summary.json" + }, + "narps-r1-11/scripts/group_analysis.py": { + "sha256": "f46c4330c0f3afee026f734476ef0c71af90fd6a94e9b8c651166c7708b33825", + "bytes": 14551, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-11", + "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", + "git_object": "576123c9d0e0c2253361518d3bdab9480f780c83", + "path": "scripts/group_analysis.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/scripts/group_analysis.py" + }, + "narps-r1-11/results/t_unthresholded.nii.gz": { + "sha256": "6c5a0804531f381e6eaba8554268743b8853a0f6d22fd9ae368d014df387f393", + "bytes": 767226, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-11", + "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", + "git_object": "f4b757f639bf756416be805de29845f7e8d131fb", + "path": "results/t_unthresholded.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/results/t_unthresholded.nii.gz", + "annex_key": "SHA256E-s767226--6c5a0804531f381e6eaba8554268743b8853a0f6d22fd9ae368d014df387f393.nii.gz" + }, + "narps-r1-11/results/p_fwe.nii.gz": { + "sha256": "1fcaf00879f434ba08cdb99b90ed475ec076099d6c5e9a53d3b6785a06c88ad0", + "bytes": 20998, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-11", + "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", + "git_object": "b8566f47c3904ea433fddfed94ddc7eef4996dba", + "path": "results/p_fwe.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/results/p_fwe.nii.gz" + }, + "narps-r1-12/input/sources.json": { + "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", + "bytes": 19843, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-12", + "revision": "40164f018638f6fc744881a91a70d3257b77985f", + "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", + "path": "input/sources.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/input/sources.json" + }, + "narps-r1-12/results/group-analysis/summary.json": { + "sha256": "f1e44446f26280e346cf0de507b206be1fd2eff6e87bf9de9e22e613daa62c6d", + "bytes": 2040, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-12", + "revision": "40164f018638f6fc744881a91a70d3257b77985f", + "git_object": "a40824eb7129716bc05e9ad6c92d4079b867ecb9", + "path": "results/group-analysis/summary.json", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/results/group-analysis/summary.json" + }, + "narps-r1-12/analysis/group_analysis.py": { + "sha256": "d304d0d970d32de4d8c538ebbed534d168cfda55afa3b62a0eab596f3adcde55", + "bytes": 12740, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-12", + "revision": "40164f018638f6fc744881a91a70d3257b77985f", + "git_object": "d8cae9be5b10e53066582617c9d5df4294d28513", + "path": "analysis/group_analysis.py", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/analysis/group_analysis.py" + }, + "narps-r1-12/results/group-analysis/group_t.nii.gz": { + "sha256": "f33c040247773ffed29a93a7a643fdedfe03fc8dd919feef2a0be4142b38330e", + "bytes": 1027323, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-12", + "revision": "40164f018638f6fc744881a91a70d3257b77985f", + "git_object": "1672c359ba32c8c2fed0e53034ab30efdb262ee4", + "path": "results/group-analysis/group_t.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/results/group-analysis/group_t.nii.gz", + "annex_key": "SHA256E-s1027323--f33c040247773ffed29a93a7a643fdedfe03fc8dd919feef2a0be4142b38330e.nii.gz" + }, + "narps-r1-12/results/group-analysis/p_fwe_maxT.nii.gz": { + "sha256": "f8da3849ad54a028d39ac59608ebbeef0615901aeea70d797daf8ef8d1b45024", + "bytes": 76105, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/narps-r1-12", + "revision": "40164f018638f6fc744881a91a70d3257b77985f", + "git_object": "675e71b0b486d4c984cebb3f2415b0fafcbc943d", + "path": "results/group-analysis/p_fwe_maxT.nii.gz", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/results/group-analysis/p_fwe_maxT.nii.gz" + } + } +} diff --git a/2026-usrse/stamped-ai-study/data/narps-spatial/render-manifest.json b/2026-usrse/stamped-ai-study/data/narps-spatial/render-manifest.json new file mode 100644 index 00000000..56a16285 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-spatial/render-manifest.json @@ -0,0 +1,13 @@ +{ + "input_provenance_sha256": "54bea628a9a2a4454288b9a2b2c12f56e39799ec50a7f28a9d8c0139e1509ebd", + "script_sha256": "1303f14f12f8962072bf56b777c5a5d8cf76186a7420501feb23f2fd4ddcbea7", + "derived_summary_sha256": "016821e822d1ab2e27f013efa56ddd6d817bc5d1a2fc735caf80d15c059320ab", + "figure_sha256": { + "svg": "7f7d3d44bacbbe6a8a911d89859fb7612ae3875bf35217efcc85b4891c6af790", + "png": "f93b8a67c4d714622d891934546a1b384d99c7e3e32cc4fa42b06375f7355bf8" + }, + "software": { + "numpy": "2.5.4", + "matplotlib": "3.11.2" + } +} diff --git a/2026-usrse/stamped-ai-study/data/narps-spatial/spatial-inputs.npz b/2026-usrse/stamped-ai-study/data/narps-spatial/spatial-inputs.npz new file mode 120000 index 00000000..222ad315 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/narps-spatial/spatial-inputs.npz @@ -0,0 +1 @@ +../../../../.git/annex/objects/pF/Zx/MD5E-s4292062--1fdef22f9f979756e157d0823d6c7be3.npz/MD5E-s4292062--1fdef22f9f979756e157d0823d6c7be3.npz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json index e4122e14..b9b552a4 100644 --- a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json +++ b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json @@ -1,16 +1,18 @@ { "reviewer": "Codex agent", "author_review": false, - "pdf_sha256": "afb037aea26970685b2c4288b8329fb627ca2db4a0db430cd16b93a3176fdd56", - "preview_sha256": "8b2d643073d5bbd5b7b1545f1e394e028639582bb2e62b20fc824d6342401114", - "reviewed_utc": "2026-10-16T03:52:25.040938+00:00", + "pdf_sha256": "85f382b9ec37f6498c80c391237ca93bae8ed66a65a1f94e0df7bc04bec581ba", + "preview_sha256": "1b56557847966bb7e200a0dc038c767a746b305e21f0ea0a96a530ef0673b86e", + "reviewed_utc": "2026-10-16T04:42:58.644608+00:00", "checks": [ - "Inspected current full-page PDF raster preview", - "Three columns and invitation fit without clipping or overlap", - "Group maps, color scale and variability markers are readable", - "All 36 allocated run slots are represented; unmeasured values remain open", - "Figures use saved scientific outputs and independent input hashes", - "Four QR codes decode from PDF pixels; PDF text minimum 24 pt" + "Inspected the current full-page PDF raster preview", + "STAMPED principles appear in the top band with concise definitions", + "Original study occupies one sentence; assistance is explained with the revision comparison", + "All twelve first-iteration runs have individual assessment rows; all 36 allocated run IDs are present", + "Spatial agreement figure uses all twelve runs on shared coverage and distinguishes unassessed areas", + "All visible GitHub evidence links use named branches", + "Three columns, captions, invitation and footer fit without clipping or overlap", + "Four QR codes decode from PDF pixels; all PDF text meets the 24 pt minimum" ], "result": "passed" } diff --git a/2026-usrse/stamped-ai-study/exports/html-audit.json b/2026-usrse/stamped-ai-study/exports/html-audit.json index bbdc9306..e6d83ee4 100644 --- a/2026-usrse/stamped-ai-study/exports/html-audit.json +++ b/2026-usrse/stamped-ai-study/exports/html-audit.json @@ -4,13 +4,14 @@ "height": 4224 }, "minimum_text_px": 32, - "text_node_count": 240, + "text_node_count": 265, "small": [], "outside": [], "regionOverflow": [], "internalOverflow": [], "sectionOverlap": [], "unlinkedImages": [], + "commitNavigationLinks": [], "images": [ { "src": "../orinoco-lite/assets/con-logo-outlined.svg", @@ -37,23 +38,23 @@ { "src": "figures/narps-group-map.svg", "loaded": true, - "href": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", + "href": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", "rect": { "x": 1270.21875, - "y": 1420, + "y": 1416.8125, "width": 1328.609375, "height": 629.84375 } }, { - "src": "figures/narps-analysis-variability.svg", + "src": "figures/narps-spatial-agreement.svg", "loaded": true, "href": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", "rect": { "x": 1270.21875, - "y": 2594.6875, + "y": 2583.5, "width": 1328.609375, - "height": 757.796875 + "height": 856.203125 } }, { @@ -62,7 +63,7 @@ "href": "https://github.com/leej3/stamped-in-practice", "rect": { "x": 3625, - "y": 3640.59375, + "y": 3658.59375, "width": 180, "height": 180 } @@ -73,7 +74,7 @@ "href": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "rect": { "x": 3913, - "y": 3640.59375, + "y": 3658.59375, "width": 180, "height": 180 } @@ -84,7 +85,7 @@ "href": "https://dev.centerforopenneuroscience.org/", "rect": { "x": 2271.203125, - "y": 3955.09375, + "y": 3964.09375, "width": 155, "height": 155 } @@ -95,7 +96,7 @@ "href": "https://pbs.dartmouth.edu/", "rect": { "x": 2895.078125, - "y": 3981.6875, + "y": 3990.6875, "width": 126, "height": 136 } @@ -106,7 +107,7 @@ "href": "https://www.repronim.org/", "rect": { "x": 3777.640625, - "y": 3984.984375, + "y": 3993.984375, "width": 146, "height": 140 } @@ -128,7 +129,7 @@ "url": "https://github.com/leej3/stamped-in-practice", "rect": { "x": 3625, - "y": 3640.59375, + "y": 3658.59375, "width": 180, "height": 180 } @@ -138,7 +139,7 @@ "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "rect": { "x": 3913, - "y": 3640.59375, + "y": 3658.59375, "width": 180, "height": 180 } @@ -148,7 +149,7 @@ "url": "https://dev.centerforopenneuroscience.org/", "rect": { "x": 2271.203125, - "y": 3955.09375, + "y": 3964.09375, "width": 155, "height": 155 } @@ -157,40 +158,58 @@ "links": [ "https://dev.centerforopenneuroscience.org/", "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", - "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills", - "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/do-full-research-loop/SKILL.md", - "https://github.com/con/skills/blob/b86e37ff9115e37541fd47aca73f49e13b5110bb/skills/assess-alignment-with-stamped-principles/SKILL.md", - "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/align-with-stamped-principles/SKILL.md", - "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/create-stamped-project/SKILL.md", - "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", + "https://github.com/stamped-principles/stamped-paper", + "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", + "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", + "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", + "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", + "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", - "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/sources.json", - "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/report.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", "https://github.com/leej3/stamped-in-practice", - "https://github.com/stamped-principles/stamped-paper", + "https://checklist.stamped-principles.org/", + "https://doi.org/10.1126/science.1134239", "https://doi.org/10.1038/s41586-020-2314-9", "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", "https://neurovault.org/collections/4932/", - "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/study-task.md", - "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", - "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", - "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", - "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", - "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", - "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", + "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", + "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py", + "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/narps-spatial", + "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-assessment.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-response.json", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-assessment.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-response.json", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-assessment.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-response.json", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-assessment.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-response.json", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-assessment.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-response.json", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-assessment.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-response.json", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-assessment.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-response.json", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", + "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", - "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", - "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", - "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", - "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", - "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", "https://github.com/leej3/stamped-in-practice/tree/main/iterations", "https://github.com/con/skills/commits/codex/pr26-operational-environment/", - "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "https://pbs.dartmouth.edu/", "https://www.repronim.org/" ], @@ -200,9 +219,9 @@ "class": "", "rect": { "x": 2690.828125, - "y": 712, + "y": 760, "width": 1445.15625, - "height": 452.5 + "height": 519.6875 } }, { @@ -210,9 +229,9 @@ "class": "results-matrix", "rect": { "x": 2690.828125, - "y": 1174.5, + "y": 1289.6875, "width": 1445.15625, - "height": 1740 + "height": 1640 } }, { @@ -220,7 +239,7 @@ "class": "assessment-key", "rect": { "x": 2690.828125, - "y": 2944.5, + "y": 2955.6875, "width": 1445.15625, "height": 331.71875 } @@ -230,28 +249,31 @@ "class": "ruled revision-section", "rect": { "x": 2690.828125, - "y": 3306.21875, + "y": 3313.40625, "width": 1445.15625, - "height": 261.15625 + "height": 237.15625 } } ], "browser": "151.0.7922.34", - "created_utc": "2026-10-16T03:53:32.322Z", + "created_utc": "2026-10-16T04:39:51.940Z", "source_sha256": { - "index.html": "e1d36d6ace870af797b0e749c1e524cc0fc1295ad22fa5a8b1739738feade758", + "index.html": "7cc274a42b284d2cc3d40b68cf25367a4368be5a48aed49045e1f537883cae84", "template.css": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", - "poster.css": "4e890983412328ea10245eed3edbde7509b3a6d9b63157c27a708ddb177ccff4", - "build-poster.cjs": "37b4c7643adeeba6630fb42de1a6a986e0f12420f8b5bc733d5eee7014d4f086", + "poster.css": "0a4e777fb1ca3042c26b743a0b525fedbf13778c601fca6d937116a7fe0b9977", + "build-poster.cjs": "5aa4ae64ee5846d8ea4f11a3a88c9950d2f26cf2801209072e57cebd152f669e", "verify-pdf.py": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", "verify-links.py": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", "make-logo-qrs.py": "7d7b2cd508a25f0e15d7674caee7061aaacf6d5eb32d9371df8433f94c42257c", "source-manifest.json": "4690c150b8f52f8311d4dbb83caceea4abeb753513b104c9dc9ca33c8a90f3ea", - "update-results.py": "434b10418ad12985c75c9758d99a5b753fab084a5576183d197530788cda2bea", - "data/assessment-snapshot.json": "462f1c3cd91b93c50a7a296b3360915968e6881b90c8d75c7d2becb76dae4688", - "figures/narps-figure-manifest.json": "6c60b03e457464bda8ac4b3d0559bf9eec0260ffd851b627ef0ee174fd0a0f6b", - "scripts/render-narps-figures.py": "5c5e184cd423cabf020ec6936d8bbaf3141573786c5ed7b0f7d1ab68af9446d1", - "pixi.toml": "5add8575728f46c680d9b1ee1a3182176ef9adb2b584c143d8a5bffcc93f2bfe", + "update-results.py": "4fecd6800bcdc4c654d8797f89f4ea661fb49b5bd03d6777e622bccebb707c94", + "data/assessment-snapshot.json": "ffe68055bb16cd5dbba608856621fbb76d34031820d8b0853e8c3648ed540477", + "figures/narps-figure-manifest.json": "05ddd6e5b0f8b2e19b4e48dd8f83030df34ec88d2ad1ad262b6793171711e67a", + "data/narps-spatial/render-manifest.json": "c856ace4958901d7ce4f1f4b266a9185c21baa801e0118bf5850b8f35fc6671d", + "scripts/render-narps-figures.py": "6f7f75d2bfef7a2ad466dc29b9af1cd138f7cc6a7f41d972f31a2a295d68d33e", + "scripts/render-narps-spatial.py": "1303f14f12f8962072bf56b777c5a5d8cf76186a7420501feb23f2fd4ddcbea7", + "scripts/extract-narps-spatial.py": "6c2f00088746092123a35cbfc2d798defddbe11047f78f91341afa2dc0fd3507", + "pixi.toml": "1cb16abd8da8dbada99853862612c66ecfedd1b914a6b6e6ab0b6a3220a896fb", "package-lock.json": "c4a27d1390a90be1fed6dd2c6f713f8b9ecfb49f5721656de4db136af2307cdc" }, "errors": [] diff --git a/2026-usrse/stamped-ai-study/exports/pdf-audit.json b/2026-usrse/stamped-ai-study/exports/pdf-audit.json index 32fba25f..fccdc831 100644 --- a/2026-usrse/stamped-ai-study/exports/pdf-audit.json +++ b/2026-usrse/stamped-ai-study/exports/pdf-audit.json @@ -1,5 +1,5 @@ { - "pdf_sha256": "afb037aea26970685b2c4288b8329fb627ca2db4a0db430cd16b93a3176fdd56", + "pdf_sha256": "85f382b9ec37f6498c80c391237ca93bae8ed66a65a1f94e0df7bc04bec581ba", "page_count": 1, "page_points": [ 3168.0, @@ -8,9 +8,9 @@ "minimum_html_text_px": 32, "minimum_html_text_pt": 24.0, "minimum_pdf_text_pt": 24.0, - "inspected_pdf_text_runs": 321, - "link_annotation_count": 74, - "unique_expected_links": 38, + "inspected_pdf_text_runs": 339, + "link_annotation_count": 92, + "unique_expected_links": 56, "missing_links": [], "raster_dpi": 150, "qr_results": [ diff --git a/2026-usrse/stamped-ai-study/exports/pdf-preview.png b/2026-usrse/stamped-ai-study/exports/pdf-preview.png index a16dcfc4..3c1a214b 120000 --- a/2026-usrse/stamped-ai-study/exports/pdf-preview.png +++ b/2026-usrse/stamped-ai-study/exports/pdf-preview.png @@ -1 +1 @@ -../../../.git/annex/objects/9G/GQ/MD5E-s1002213--7c164b507e229ef566739e02f5cc3269.png/MD5E-s1002213--7c164b507e229ef566739e02f5cc3269.png \ No newline at end of file +../../../.git/annex/objects/Vp/q1/MD5E-s1109867--4a784886434a9b2f74d505be6f3f5c82.png/MD5E-s1109867--4a784886434a9b2f74d505be6f3f5c82.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json index 9f0800b2..2ed3407d 100644 --- a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json +++ b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json @@ -1,5 +1,5 @@ { - "checked_utc": "2026-10-16T03:54:01.994569+00:00", + "checked_utc": "2026-10-16T04:43:43.188607+00:00", "authentication": "none", "method": "download and compare full payload SHA-256", "files": [ @@ -27,6 +27,14 @@ "bytes": 67623, "passed": true }, + { + "path": "data/narps-spatial/spatial-inputs.npz", + "key": "MD5E-s4292062--1fdef22f9f979756e157d0823d6c7be3.npz", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s4292062--1fdef22f9f979756e157d0823d6c7be3.npz", + "sha256": "7c630a699298b18e0fdad17ebfe6e89400d64568705dacc10d820381ed13509f", + "bytes": 4292062, + "passed": true + }, { "path": "data/narps-2026-10-15/maps/one_sample_t.nii.gz", "key": "MD5E-s772808--30da57fa1b8cc7a318c3b4f5edd628b6.nii.gz", @@ -68,19 +76,43 @@ "passed": true }, { - "path": "exports/pdf-preview.png", - "key": "MD5E-s1002213--7c164b507e229ef566739e02f5cc3269.png", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1002213--7c164b507e229ef566739e02f5cc3269.png", - "sha256": "8b2d643073d5bbd5b7b1545f1e394e028639582bb2e62b20fc824d6342401114", - "bytes": 1002213, + "path": "figures/narps-group-map.png", + "key": "MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png", + "sha256": "c35b14d41d0b3496c6247d6dbc14db9c2f1e4009764d7370e07b0ec8f013e7b7", + "bytes": 136105, + "passed": true + }, + { + "path": "figures/narps-spatial-agreement.svg", + "key": "MD5E-s142319--635c889a2b6a58de2a5c8aa69f11e8e4.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s142319--635c889a2b6a58de2a5c8aa69f11e8e4.svg", + "sha256": "7f7d3d44bacbbe6a8a911d89859fb7612ae3875bf35217efcc85b4891c6af790", + "bytes": 142319, + "passed": true + }, + { + "path": "figures/narps-spatial-agreement.png", + "key": "MD5E-s166353--6c8e79de1133a513b18c6123e3db1e71.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s166353--6c8e79de1133a513b18c6123e3db1e71.png", + "sha256": "f93b8a67c4d714622d891934546a1b384d99c7e3e32cc4fa42b06375f7355bf8", + "bytes": 166353, "passed": true }, { "path": "exports/stamped-ai-poster.pdf", - "key": "MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf", - "sha256": "afb037aea26970685b2c4288b8329fb627ca2db4a0db430cd16b93a3176fdd56", - "bytes": 764394, + "key": "MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf", + "sha256": "85f382b9ec37f6498c80c391237ca93bae8ed66a65a1f94e0df7bc04bec581ba", + "bytes": 892880, + "passed": true + }, + { + "path": "exports/pdf-preview.png", + "key": "MD5E-s1109867--4a784886434a9b2f74d505be6f3f5c82.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1109867--4a784886434a9b2f74d505be6f3f5c82.png", + "sha256": "1b56557847966bb7e200a0dc038c767a746b305e21f0ea0a96a530ef0673b86e", + "bytes": 1109867, "passed": true }, { @@ -102,7 +134,7 @@ { "path": "../orinoco-lite/assets/repronim_logo.svg", "key": null, - "url": "https://raw.githubusercontent.com/con/talks/efb1b059ffdf70d4e13f40cd5085aff6500e5269/2026-usrse/orinoco-lite/assets/repronim_logo.svg", + "url": "https://raw.githubusercontent.com/con/talks/codex/stamped-example-poster/2026-usrse/orinoco-lite/assets/repronim_logo.svg", "sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", "bytes": 33939, "passed": true @@ -110,26 +142,10 @@ { "path": "../orinoco-lite/assets/orinoco-qr-con.svg", "key": null, - "url": "https://raw.githubusercontent.com/con/talks/efb1b059ffdf70d4e13f40cd5085aff6500e5269/2026-usrse/orinoco-lite/assets/orinoco-qr-con.svg", + "url": "https://raw.githubusercontent.com/con/talks/codex/stamped-example-poster/2026-usrse/orinoco-lite/assets/orinoco-qr-con.svg", "sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", "bytes": 67605, "passed": true - }, - { - "path": "figures/narps-analysis-variability.png", - "key": "MD5E-s147072--5cf081f3840d7ba45268688b8aa41778.png", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s147072--5cf081f3840d7ba45268688b8aa41778.png", - "sha256": "3ac62e1df7e992bcacbd7c15a9fe845b426152c54904c931a3c1c259e855bc75", - "bytes": 147072, - "passed": true - }, - { - "path": "figures/narps-group-map.png", - "key": "MD5E-s139047--ccc9a985bf8d93427535348181fbadf8.png", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s139047--ccc9a985bf8d93427535348181fbadf8.png", - "sha256": "851c93ad7fa51753a9bdc26b556dbd36b1487bef80b92237db8bdffbf2e8c799", - "bytes": 139047, - "passed": true } ], "all_passed": true diff --git a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf index 16056839..a13bd0cb 120000 --- a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf +++ b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf @@ -1 +1 @@ -../../../.git/annex/objects/mw/2q/MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf/MD5E-s764394--688be8c06420100b438e1d9ea207036e.pdf \ No newline at end of file +../../../.git/annex/objects/Ff/5M/MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf/MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.png b/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.png deleted file mode 120000 index d704a6e6..00000000 --- a/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.png +++ /dev/null @@ -1 +0,0 @@ -../../../.git/annex/objects/km/f9/MD5E-s147072--5cf081f3840d7ba45268688b8aa41778.png/MD5E-s147072--5cf081f3840d7ba45268688b8aa41778.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.svg b/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.svg deleted file mode 100644 index 2c3381c9..00000000 --- a/2026-usrse/stamped-ai-study/figures/narps-analysis-variability.svg +++ /dev/null @@ -1,386 +0,0 @@ - - - - - - - - image/svg+xml - - - Matplotlib v3.11.2, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 180 - - - - - - - - - 195 - - - - - - - - - 210 - - - - Search mask - (1,000 voxels) - - - - - - - - - - - - - - - 01 - - - - - - - - 02 - - - - - - - - - - - 03 - - - - - - - - 05 - - - - - - - - 06 - - - - - - - - 07 - - - - - - - - 08 - - - - - - - - 09 - - - Result - slot - - - - - - - - - - - Baseline - - - - - - Discover - general - - - - - - Discover - science - - - - - - STAMPED - explicit - - - - - - - - - - - 0 - - - - - - - - - 12 - - - - - - - - - 24 - - - - Positive FWE - voxels - - - - - - - - - - - - 01 - - - - - - - - 02 - - - - - - - - 03 - - - - - - - - 05 - - - - - - - - 06 - - - - - - - - 07 - - - - - - - - 08 - - - - - - - - 09 - - - Result - slot - - - - - - - - - - - - - Bonferroni - - - - - - - - - - - Permutation max-T - - - - - - - - - - - - diff --git a/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json b/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json index 981010d6..eef60918 100644 --- a/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json +++ b/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json @@ -1,15 +1,13 @@ { - "input_provenance_sha256": "aef6b9940e6a0bef865e405e19f6e8c3932309175d7b61e38d6260f86137e6c0", - "render_script_sha256": "5c5e184cd423cabf020ec6936d8bbaf3141573786c5ed7b0f7d1ab68af9446d1", + "input_provenance_sha256": "37c94e97d1957209d39a0383dc4034a4ba5027d966135ef35b85be0c130380e6", + "render_script_sha256": "6f7f75d2bfef7a2ad466dc29b9af1cd138f7cc6a7f41d972f31a2a295d68d33e", "software": { "numpy": "2.5.4", "matplotlib": "3.11.2", "nibabel": "5.4.2" }, "output_sha256": { - "narps-analysis-variability.svg": "92f1a67109ddca57d47377e5000aa3f0f7ecda8f5f99c3f820c4c1e8cb2638b6", - "narps-group-map.svg": "7e34652a83178ee178a01b7aea9e545f235f1cded5106ef6c7254c6b701fd327", - "narps-analysis-variability.png": "3ac62e1df7e992bcacbd7c15a9fe845b426152c54904c931a3c1c259e855bc75", - "narps-group-map.png": "851c93ad7fa51753a9bdc26b556dbd36b1487bef80b92237db8bdffbf2e8c799" + "narps-group-map.svg": "4d22926b56073a6bc1b981413d3d117948e8f02781f664faa876cd3e79995f3b", + "narps-group-map.png": "c35b14d41d0b3496c6247d6dbc14db9c2f1e4009764d7370e07b0ec8f013e7b7" } } diff --git a/2026-usrse/stamped-ai-study/figures/narps-group-map.png b/2026-usrse/stamped-ai-study/figures/narps-group-map.png index de5e4f6e..8427bb0a 120000 --- a/2026-usrse/stamped-ai-study/figures/narps-group-map.png +++ b/2026-usrse/stamped-ai-study/figures/narps-group-map.png @@ -1 +1 @@ -../../../.git/annex/objects/GF/jZ/MD5E-s139047--ccc9a985bf8d93427535348181fbadf8.png/MD5E-s139047--ccc9a985bf8d93427535348181fbadf8.png \ No newline at end of file +../../../.git/annex/objects/0f/77/MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png/MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/narps-group-map.svg b/2026-usrse/stamped-ai-study/figures/narps-group-map.svg index 770ae9a8..d5f2c4e3 100644 --- a/2026-usrse/stamped-ai-study/figures/narps-group-map.svg +++ b/2026-usrse/stamped-ai-study/figures/narps-group-map.svg @@ -108,14 +108,14 @@ z " clip-path="url(#p8d39253ce5)" style="fill: none; stroke: #ffd54a; stroke-width: 2.5"/> - P + P - A + A - Sagittal - x = -2 mm + Sagittal + x = -2 mm @@ -159,14 +159,14 @@ z " clip-path="url(#pa934484f89)" style="fill: none; stroke: #ffd54a; stroke-width: 2.5"/> - L + L - R + R - Coronal - y = 24 mm + Coronal + y = 24 mm @@ -285,14 +285,14 @@ z " clip-path="url(#p886c4285de)" style="fill: none; stroke: #4effe0; stroke-width: 2.8"/> - L + L - R + R - Axial - z = -3.6 mm + Axial + z = -3.6 mm @@ -310,19 +310,19 @@ iVBORw0KGgoAAAANSUhEUgAAAnQAAAAeCAYAAAClmYPaAAAB8klEQVR4nO3WbXKjMAwAUOy09+mV9v5n - ≤−6 + ≤−6 - 0 + 0 - ≥6 + ≥6 @@ -340,30 +340,30 @@ z " style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> - Unthresholded group t + Unthresholded group t - Gray anatomy: outside common coverage + Gray anatomy: outside common coverage - - vmPFC region + vmPFC region - - Positive FWE p ≤ .05 + Positive FWE p ≤ .05 diff --git a/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.png b/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.png new file mode 120000 index 00000000..4a7a9ca4 --- /dev/null +++ b/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.png @@ -0,0 +1 @@ +../../../.git/annex/objects/Fj/60/MD5E-s166353--6c8e79de1133a513b18c6123e3db1e71.png/MD5E-s166353--6c8e79de1133a513b18c6123e3db1e71.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.svg b/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.svg new file mode 120000 index 00000000..a5d916a9 --- /dev/null +++ b/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.svg @@ -0,0 +1 @@ +../../../.git/annex/objects/x8/QZ/MD5E-s142319--635c889a2b6a58de2a5c8aa69f11e8e4.svg/MD5E-s142319--635c889a2b6a58de2a5c8aa69f11e8e4.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/index.html b/2026-usrse/stamped-ai-study/index.html index b2eea223..dc3f78d5 100644 --- a/2026-usrse/stamped-ai-study/index.html +++ b/2026-usrse/stamped-ai-study/index.html @@ -27,65 +27,64 @@ QR code for this poster, figures and sourcePoster + code
-
-

Our experiment: iteratively improve STAMPED research skills by validating the scientific results and research objects they produce.

-

Make the improvement process inspectable.Link the skills, data, runs, assessments and revisions, so others can evaluate both the science and how the guidance evolved.

+
+

STAMPED: principles for reproducible research

+
+
Self-contained
Reach all essential components from one project root.
+
Tracked
Record which versions produced each result.
+
Actionable
Provide executable procedures and reproduction instructions.
+
Modular
Separate components for reuse and recombination.
+
Portable
Specify dependencies and required computing environments.
+
Ephemeral
Use a disposable environment for each execution.
+
Distributable
Preserve retrievable components and rebuildable environments.
+
-

Test the skills through the work

-

We ask whether successive revisions improve scientific adequacy and reproducibility, while reducing failures and variability.

+

Improve the skills
by testing their results

+

We wished to iteratively improve skills for STAMPED research by validating the scientific results and research objects they produced.

+

Do successive revisions improve scientific adequacy, reproducibility and consistency?

    -
  1. RunFresh agents address the same scientific question.
  2. -
  3. AssessIndependent judges inspect the research object and attempt replay.
  4. -
  5. ReviseUse recurring findings to improve and compress the skills.
  6. -
  7. RepeatTest the next pinned revision with fresh agents.
  8. +
  9. RunFresh agents address the same scientific question.
  10. +
  11. AssessIndependent judges inspect the research object and attempt replay.
  12. +
  13. ReviseUse recurring findings to improve and compress the skills.
  14. +
  15. RepeatTest the next pinned revision with fresh agents.
-

Three iterations; four assistance conditions; three research runs per condition. Final iteration: evaluate without further tuning.

-
-
-

Four ways to assist an agent

-
-
B

BaselineNo supplied research skills.

-
G

General discoveryFind and use useful skills.

-
S

Science discoveryFind skills for scientific quality and reproducibility.

-
E

Explicit STAMPEDUse the pinned research workflows.

-
-

Matched task, inputs and resources; randomized launch order; three repeats. Record assigned assistance and actual skill use separately. Comparison plan · Run settings

+

Three iterations of testing and revision. In the final iteration, evaluate without further tuning.

Follow any result back to its source

-

Ideas for better skills are testable only when we can trace the data generated along the way. stamped-in-practice connects the experiment, including unsuccessful attempts.

+

stamped-in-practice links the skills, data, runs, assessments and revisions—including unsuccessful attempts.

This lets others assess both the scientific results and the process of improving the skills. Ideas for better guidance become testable when we can trace the data generated along the way.

-

STAMPED principles

Self-contained · Trackable · Actionable · Modular · Portable · Ephemeral · Distributable

+

Put the principles to work

The skills guide project creation, analysis, assessment and improvement. They make STAMPED actionable guidance for an agent.

Use the STAMPED checklist to examine your own research object, then follow the evidence behind each answer.

-

Reproducing a NARPS analysis

-

Hypothesis: increasing potential gain increases activity in ventromedial prefrontal cortex (vmPFC) in the equal-indifference group.

-

We reanalyse 54 participant gain-effect maps from NARPS team AO86. Preprocessing and participant models are fixed; agents choose group inference and report whole-brain-corrected results.

- +

Replicating a gain-response analysis

+

Tom et al. asked how the brain represents potential gains and losses during risky choices.

+

Our replication: test whether potential gain increases ventromedial prefrontal cortex (vmPFC) activity in the equal-indifference group (NARPS H1). Agents choose group inference for 54 fixed AO86 participant maps.

+

Group-level gain response

- Orthogonal views of the NARPS group gain-effect t map, vmPFC region, and corrected positive signal -
Example completed analysis, run 09. One-sample group test, 10,000 sign flips, whole-brain family-wise error correction at 0.05. Analysis code · Numerical results
+ Orthogonal views of the NARPS group gain-effect t map, vmPFC region, and corrected positive signal +
Example completed analysis, run 09. One-sample group test, 10,000 sign flips, whole-brain family-wise error correction at 0.05. Analysis code · Numerical results
-
No corrected positive vmPFC signal

24 posterior voxels survived correction; none overlapped the vmPFC region. Bilateral AAL medial-orbitofrontal mean coefficient −0.0079, 95% CI [−0.0346, 0.0188], in the supplied model’s units.

+
No corrected positive vmPFC signal

24 posterior voxels survived; none in bilateral AAL medial-orbitofrontal parcels. Regional mean coefficient −0.0079 (95% CI −0.0346 to 0.0188; supplied model’s units).

-

How much do analyses vary?

+

Where do repeated analyses agree?

- Individual run results grouped by assigned assistance condition; missing measurements remain open -
Each point is one research run. Search masks and correction methods vary across runs. This figure describes analysis choices and their outputs; the completed comparison adds every condition and iteration. Figure code + source values
+ Spatial agreement of corrected positive findings across three runs in each assistance condition +
Group statistics agree; correction choices change detected extent. Iteration 1: colour shows how many of three runs detected corrected positive signal on shared coverage. Runs 01–02 use Bonferroni; the others use permutation max-T. Figure code · Map inputs
@@ -93,35 +92,43 @@

How much do analyses vary?

-

A reproducible study of reproducibility. Source, figure inputs, run-level evidence and the completion plan accompany this editable poster.

Working draft · NARPS replaces the ABCD case proposed in the abstract. OpenAI Codex assisted analysis and poster preparation.

+

A reproducible study of reproducibility. Source, figure inputs, run-level evidence and the completion plan accompany this editable poster.

OpenAI Codex assisted analysis and poster preparation.

diff --git a/2026-usrse/stamped-ai-study/pixi.toml b/2026-usrse/stamped-ai-study/pixi.toml index 8a5cb93c..c80a5924 100644 --- a/2026-usrse/stamped-ai-study/pixi.toml +++ b/2026-usrse/stamped-ai-study/pixi.toml @@ -26,7 +26,9 @@ git-annex = "*" [tasks] setup-browser = "npm ci && npx playwright install chromium" -figures = "python scripts/render-narps-figures.py" +group-map = "python scripts/render-narps-figures.py" +spatial-map = "python scripts/render-narps-spatial.py" +figures = { depends-on = ["group-map", "spatial-map"] } table = "python update-results.py" build = { cmd = "node build-poster.cjs --out-dir exports", depends-on = ["figures", "table"] } verify = "python verify-pdf.py --review-dir exports" diff --git a/2026-usrse/stamped-ai-study/poster.css b/2026-usrse/stamped-ai-study/poster.css index 59811a5d..f39436b7 100644 --- a/2026-usrse/stamped-ai-study/poster.css +++ b/2026-usrse/stamped-ai-study/poster.css @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: CC-BY-SA-4.0 */ -.poster { grid-template-rows: 324px 240px 1fr 286px 238px; gap: 32px; } +.poster { grid-template-rows: 324px 288px 1fr 286px 220px; gap: 32px; } .masthead { grid-template-columns: 1.2fr 690px 1fr; gap: 60px; } .con-logo { width: 690px; } h1 { font-size: 92px; } @@ -7,9 +7,12 @@ h1 span { font-size: 48px; } .authors { font-size: 38px; } .authors .affiliation { font-size: 32px; } .author-panel { gap: 38px; } -.lead p { font-size: 42px; } -.lead .pitch strong { font-size: 44px; } -.lead .pitch span { font-size: 36px; } +.principles-band { background:var(--ink); color:white; margin:0 -88px; padding:28px 88px; } +.principles-band h2 { font-size:44px; margin:0 0 26px; } +.principles-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:30px; margin:0; } +.principles-grid > div + div { border-left:2px solid #647d86; padding-left:28px; } +.principles-grid dt { font-size:36px; font-weight:700; margin-bottom:14px; } +.principles-grid dd { font-size:32px; line-height:1.3; margin:0; } .columns { grid-template-columns: 0.95fr 1.2fr 1.3fr; gap: 48px; } .columns > * { min-width: 0; } .columns p { font-size: 36px; line-height: 1.35; margin: 0 0 24px; } @@ -18,21 +21,14 @@ h1 span { font-size: 48px; } .columns .section-label { font-size: 32px; margin-bottom: 18px; } .columns .small, .columns .source-links { font-size: 32px; line-height: 1.35; } .method-column, .science-column { display:flex; flex-direction:column; gap: 40px; } -.science-column { border-left:2px solid var(--rule); padding-left:44px; } +.science-column { border-left:2px solid var(--rule); padding-left:44px; gap:32px; } .ruled { border-top: 3px solid var(--rule); padding-top: 30px; } .loop { list-style: none; padding:0; margin:34px 0; display:grid; gap:18px; counter-reset: step; } .loop li { display:grid; grid-template-columns: 160px 1fr; gap:22px; padding:24px; background:var(--tint); font-size:36px; line-height:1.25; border-left:7px solid var(--green); } .loop b { color:var(--green); font-size:38px; } -.conditions { display:grid; gap:22px; margin-bottom:28px; } -.conditions > div { display:grid; grid-template-columns:65px 1fr; gap:22px; align-items:start; } -.conditions p { margin:0; font-size:34px; } -.conditions strong { display:block; } -.condition { display:flex; align-items:center; justify-content:center; height:60px; width:60px; color:white; font-size:36px; border-radius:9px; } -.baseline { background:#526c76; }.general { background:#4477aa; }.science { background:#aa6633; }.explicit { background:#286857; } +.columns .experiment-statement { font-size:42px; line-height:1.32; } .evidence-chain { background:var(--tint); padding:28px; margin-bottom:28px; display:grid; text-align:center; gap:12px; font-size:34px; line-height:1.25; } .evidence-chain span { color:var(--green); font-size:34px; } -.principles p { line-height:1.55; } -.principles strong { color:var(--green); } .source-links { color:var(--green); } .science-result { border-top:7px solid var(--green); padding-top:30px; } .brain-figure { width:100%; display:block; } @@ -44,20 +40,23 @@ figcaption { font-size:32px; line-height:1.32; margin:18px 0 0; } .result-slot { border:3px dashed #8da49c; padding:24px 28px; margin-top:28px !important; color:var(--muted); } .result-slot strong { display:block; color:var(--ink); } .outcomes { padding-left:42px; } -.outcomes > section + section { margin-top:30px; } +.outcomes > section + section { margin-top:26px; } +.outcomes .revision-section p { margin-bottom:0; } .outcomes .results-matrix { margin-top:10px; } .outcome-table { width:100%; border-collapse:collapse; table-layout:fixed; font-size:32px; line-height:1.25; } -.outcome-table th, .outcome-table td { padding:12px 12px; text-align:left; border-bottom:2px solid var(--rule); vertical-align:middle; } +.outcome-table th, .outcome-table td { padding:9px 12px; text-align:left; border-bottom:2px solid var(--rule); vertical-align:middle; } .outcome-table thead th { background:var(--green); color:white; font-size:32px; padding:22px 12px; } -.outcome-table .iteration th { background:#dce6dd; padding:20px 12px; color:var(--green); } +.outcome-table .iteration th { background:#dce6dd; padding:18px 12px; color:var(--green); } .outcome-table .condition-cell { font-weight:700; } -.outcome-table .runs { display:block; font-size:32px; color:var(--muted); margin-top:8px; font-weight:400; } +.outcome-table .run-cell { white-space:nowrap; font-weight:400; } +.outcome-table .reserved td, .outcome-table .reserved th { padding-top:14px; padding-bottom:14px; } .outcome-table .values { display:block; white-space:nowrap; } .outcome-table .missing { color:#647980; } -.outcome-table col:first-child { width:30%; } -.outcome-table col:nth-child(2) { width:18%; } -.outcome-table col:nth-child(3) { width:18%; } -.outcome-table col:nth-child(4) { width:34%; } +.outcome-table col:first-child { width:28%; } +.outcome-table col:nth-child(2) { width:16%; } +.outcome-table col:nth-child(3) { width:15%; } +.outcome-table col:nth-child(4) { width:13%; } +.outcome-table col:nth-child(5) { width:28%; } .assessment-key { padding:25px 28px; background:var(--tint); } .assessment-key p { font-size:32px; line-height:1.28; margin-bottom:18px; } .assessment-key p:last-child { margin:0; } diff --git a/2026-usrse/stamped-ai-study/scripts/export-assessments.py b/2026-usrse/stamped-ai-study/scripts/export-assessments.py index e7b5f2fe..292e9be0 100644 --- a/2026-usrse/stamped-ai-study/scripts/export-assessments.py +++ b/2026-usrse/stamped-ai-study/scripts/export-assessments.py @@ -23,8 +23,6 @@ STATUSES = ("met", "partial", "unmet", "not-checked", "not-applicable") REMOTE = "https://github.com/leej3/stamped-in-practice" -# Published primary records; verify exact source bytes before adding a link. -PUBLISHED = {'narps-r1-07-judgment-01': '5a16be31d225574a4643a8feb000ca0a5fa7f7ad', 'narps-r1-08-judgment-01': '15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8'} def digest(data): @@ -38,8 +36,18 @@ def git(root, *args): def scientific_label(report): # Preserve the judge's classification, not whether the tested hypothesis won. - match = re.search(r"Scientific adequacy:\*?\*?\s*\*?\*?\s*(not supported|qualified|supported|not checked)", report, re.I) - return match.group(1).lower() if match else None + match = re.search(r"Scientific adequacy:\*?\*?\s*\*?\*?\s*(not supported|qualified|supported|unable to assess|not checked)", report, re.I) + if match: + return match.group(1).lower() + # Judges also label the scientific section's verdict "Adequacy" or + # "Classification". Restrict these alternatives to that section so a + # checklist verdict elsewhere cannot be mistaken for scientific adequacy. + section = re.search(r"^## Scientific[^\n]*\n(.*?)(?=^## |\Z)", report, re.I | re.M | re.S) + if section: + match = re.search(r"(?:Adequacy|Classification):\*?\*?\s*\*?\*?\s*(not supported|qualified|supported|unable to assess|not checked)", section[1], re.I) + if match: + return match[1].lower() + return None def main(): @@ -55,6 +63,17 @@ def main(): warnings = [] head_bytes = git(root, "rev-parse", "HEAD") head = head_bytes.decode().strip() if head_bytes else None + # Read advertised refs without fetching or mutating the live study checkout. + # Named links are easier to navigate; immutable revisions and file hashes + # below retain the exact identity verified when the snapshot was exported. + advertised = git(root, "ls-remote", "--heads", REMOTE + ".git") + public_branches = {} + if advertised: + for line in advertised.decode().splitlines(): + revision, ref = line.split("\t", 1) + public_branches[ref.removeprefix("refs/heads/")] = revision + else: + warnings.append("Public branch advertisement unavailable; no new source links verified") def read_source(path, source_id, coordinator_relative=None): data = path.read_bytes() @@ -63,16 +82,28 @@ def read_source(path, source_id, coordinator_relative=None): record["coordinator_path"] = coordinator_relative committed = git(root, "show", f"HEAD:{coordinator_relative}") record["matches_coordinator_head"] = committed == data - if committed == data and head: - record["public_url"] = f"{REMOTE}/blob/{head}/{coordinator_relative}" + public_revision = public_branches.get("main") + published = git(root, "show", f"{public_revision}:{coordinator_relative}") if public_revision else None + if published == data: + record["public_url"] = f"{REMOTE}/blob/main/{coordinator_relative}" + record["public_branch"] = "main" + record["published_commit"] = public_revision + record["publication_status"] = "published-branch-source-hash-verified" else: record["publication_status"] = "not-established-by-this-export" - revision = PUBLISHED.get(source_id.split("/")[0]) + judgment_id = source_id.split("/")[0] + match = re.fullmatch(r"(narps-r\d+-\d+)-judgment-(\d+)", judgment_id) + branch = f"codex/{match[1]}-judge-{match[2]}-output" if match else None + revision = public_branches.get(branch) if revision and path.name.endswith(("assessment.md", "response.json", "fresh-rerun.json")): published = git(path.parent, "show", f"{revision}:{path.name}") if published == data: - record["public_url"] = f"{REMOTE}/blob/{revision}/{path.name}" - record["publication_status"] = "published-immutable-source-hash-verified" + record["public_url"] = f"{REMOTE}/blob/{branch}/{path.name}" + record["public_branch"] = branch + record["published_commit"] = revision + record["publication_status"] = "published-branch-source-hash-verified" + else: + warnings.append(f"{source_id}: advertised output branch does not match source bytes") sources[source_id] = record return data @@ -209,7 +240,9 @@ def judgment(run_id, entry): "worker_result_commit": run.get("worker_head_commit"), "worker_finished_at": run.get("finished_at"), "worker_elapsed_seconds": run.get("worker_elapsed_seconds"), - "result_url": f"{REMOTE}/tree/{run['worker_head_commit']}" if run.get("worker_head_commit") else None, + "result_url": f"{REMOTE}/tree/codex/{run_id}" if run.get("worker_head_commit") and public_branches.get(f"codex/{run_id}") == run["worker_head_commit"] else None, + "result_branch": f"codex/{run_id}", + "result_branch_verified_commit": public_branches.get(f"codex/{run_id}"), "primary": None, "retrieval": None, "duplicate_assigned": run_id in plan["duplicate_judgments"], } @@ -259,7 +292,7 @@ def judgment(run_id, entry): "replay": "Assessor-infrastructure failures are unavailable, not worker failures. Same-host replay does not establish cross-host portability.", "retrieval": "Coordinator preservation verifies exact stopped-worker bytes; it is not worker delivery credit or successful scientific execution.", "missing": "Missing assessments and future runs are missing observations, never zero scores. Supplementary judgments cannot replace assigned primaries or duplicates.", - "publication": "Source hashes bind original local records. A null public_url means publication of that raw source is not established by this export; result_commit links are independent from assessment publication.", + "publication": "Reader links use named branches, verified against advertised remote heads at export. Exact commits and source hashes retain snapshot identity. Branches may later advance. A null public_url means publication of that raw source is not established by this export; result links are independent from assessment publication.", }, "rounds": rounds, "rows": rows, "other_judgments": other_judgments, "sources": sources, "warnings": warnings, diff --git a/2026-usrse/stamped-ai-study/scripts/extract-narps-spatial.py b/2026-usrse/stamped-ai-study/scripts/extract-narps-spatial.py new file mode 100644 index 00000000..0693742f --- /dev/null +++ b/2026-usrse/stamped-ai-study/scripts/extract-narps-spatial.py @@ -0,0 +1,210 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +"""Freeze spatial evidence from the twelve completed NARPS round-one workers. + +Read-only with respect to worker checkouts. The compact NPZ stores each native +analysis mask and corrected-positive decision, plus lossless deduplicated t +values on shared support. These suffice to regenerate the spatial figure and +its numerical summary offline. Original file identities and branches are +recorded in provenance.json; no participant images are copied. +""" +from __future__ import annotations + +import argparse +from datetime import datetime, timezone +import hashlib +import json +from pathlib import Path +import subprocess + +import nibabel as nib +import nilearn +from nilearn import datasets, image +import numpy as np + +ROOT = Path(__file__).resolve().parents[1] +OUT = ROOT / "data/narps-spatial" +REPO = "https://github.com/leej3/stamped-in-practice" +# Final primary analysis only: baseline 01/02 use Bonferroni, not their max-T +# sensitivity analysis. Other workers use native participant sign-flip max-T. +RUNS = { + 1: ("group_t_positive", "group_p_fwe_bonferroni", "whole_brain_search_mask", "analysis_summary.json", "scripts/group_gain.py"), + 2: ("group_tstat", "group_bonferroni_fwe_p", "analysis_mask", "results.json", "scripts/analyze.py"), + 3: ("group_t", "p_fwer_maxT", "analysis_mask", "summary.json", "analyze.py"), + 4: ("t_gain", "p_fwe_gain", "group_coverage_mask", "group_results.json", "analysis/run_group_analysis.py"), + 5: ("group_tstat", "group_log10p_fwe_max_t", "common_brain_mask", "run_summary.json", "analysis/run_group_analysis.py"), + 6: ("maps/group_t_unthresholded", "maps/group_p_fwe_maxT", None, "analysis_results.json", "scripts/group_analysis.py"), + 7: ("maps/group_tstat", "maps/group_positive_maxT_pFWE", None, "analysis_results.json", "scripts/group_analysis.py"), + 8: ("group_t_positive", "group_p_fwe_positive", "group_mask_90pct_coverage", "analysis_summary.json", "scripts/analyze_gain.py"), + 9: ("one_sample_t", "max_t_log10_fwe_p", "common_brain_mask", "results.json", "scripts/analyze_gain.py"), + 10: ("final-v3/group-t", "final-v3/group-fwe-p", None, "final-v3/summary.json", "code/analyze.py"), + 11: ("t_unthresholded", "p_fwe", None, "summary.json", "scripts/group_analysis.py"), + 12: ("group-analysis/group_t", "group-analysis/p_fwe_maxT", None, "group-analysis/summary.json", "analysis/group_analysis.py"), +} +CONDITIONS = [ + ("baseline", "No supplied skills"), + ("discover-general", "Find useful skills"), + ("discover-science", "Find research skills"), + ("stamped-explicit", "Use STAMPED skills"), +] +EXPECTED_MASK = [186400, 192333, 210968, 198029, 198029, 186192, + 198029, 210968, 198029, 198029, 196120, 198029] +EXPECTED_POSITIVE = [11, 11, 24, 24, 24, 24, 24, 24, 24, 24, 23, 24] + + +def digest(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def git(path, *args): + return subprocess.check_output(["git", "-C", str(path), *args], text=True).strip() + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--workers-root", type=Path, required=True) + parser.add_argument("--capture-root", type=Path, required=True) + args = parser.parse_args() + OUT.mkdir(parents=True, exist_ok=True) + sources, records = {}, [] + t_maps, p_maps, masks = [], [], [] + ref = None + source_cohort = None + common54 = None + + def source(worker, relative): + path = worker / relative + if git(worker, "status", "--porcelain", "--", relative): + raise ValueError(f"Uncommitted source: {path}") + branch = git(worker, "branch", "--show-current") + key = f"{worker.name}/{relative}" + sources[key] = { + "sha256": digest(path), "bytes": path.stat().st_size, + "repository": REPO, "branch": branch, + "revision": git(worker, "rev-parse", "HEAD"), + "git_object": git(worker, "rev-parse", f"HEAD:{relative}"), + "path": relative, "url": f"{REPO}/blob/{branch}/{relative}", + } + if path.is_symlink(): + sources[key]["annex_key"] = path.readlink().name + return path + + # This saved mask uses every participant's finite, nonzero map support. + worker09 = args.workers_root / "narps-r1-09" + common54 = nib.load(source(worker09, "results/common_brain_mask.nii.gz")).get_fdata() > 0 + for n, (t_name, p_name, mask_name, summary_name, script_name) in RUNS.items(): + run = f"narps-r1-{n:02}" + worker = args.workers_root / run + cohort = json.loads(source(worker, "input/sources.json").read_text()) + cohort_hashes = {k: v["sha256"] for k, v in cohort["files"].items() if k.endswith(".nii.gz")} + if source_cohort is None: + source_cohort = cohort_hashes + if cohort_hashes != source_cohort or len(cohort_hashes) != 54: + raise ValueError(f"Participant map identities differ in {run}") + source(worker, f"results/{summary_name}") + source(worker, script_name) + t_img = nib.load(source(worker, f"results/{t_name}.nii.gz")) + p_img = nib.load(source(worker, f"results/{p_name}.nii.gz")) + if ref is None: + ref = t_img + for img in (t_img, p_img): + if img.shape != ref.shape or not np.allclose(img.affine, ref.affine): + raise ValueError(f"Grid mismatch in {run}") + t = t_img.get_fdata() + p = p_img.get_fdata() + if n in (5, 9): + p = np.power(10.0, -p) + if mask_name: + mask_img = nib.load(source(worker, f"results/{mask_name}.nii.gz")) + if mask_img.shape != ref.shape or not np.allclose(mask_img.affine, ref.affine): + raise ValueError(f"Mask grid mismatch in {run}") + mask = mask_img.get_fdata() > 0 + mask_rule = "native saved analysis mask" + elif n == 6: + # The source script writes p=0 outside its support. All in-mask + # Monte Carlo p values are strictly positive by construction. + mask = p > 0 + mask_rule = "positive p values; source writes zero outside tested support" + elif n == 7: + mask = np.isfinite(p) + mask_rule = "finite p values; source writes NaN outside tested support" + elif n == 11: + # Exactly the source's finite-data/template mask construction. + mask = image.resample_to_img( + datasets.load_mni152_brain_mask(resolution=2), ref, + interpolation="nearest", force_resample=True, copy_header=True, + ).get_fdata() > 0 + mask_rule = "Nilearn MNI152 brain mask resampled as in source; all input values verified finite by source" + else: + mask = common54.copy() + mask_rule = "54/54 finite nonzero participant support; same input identities and rule as saved run09 mask" + if mask.sum() != EXPECTED_MASK[n - 1]: + raise ValueError(f"Reconstructed support differs from {run} summary") + positive = mask & np.isfinite(p) & (p <= .05) & (t > 0) + if positive.sum() != EXPECTED_POSITIVE[n - 1]: + raise ValueError(f"Primary corrected result differs from {run} summary") + assignment_path = args.capture_root / run / "launch/native/condition-assignment.json" + assignment = json.loads(assignment_path.read_text()) + condition, label = CONDITIONS[(n - 1) // 3] + if assignment["condition"] != condition: + raise ValueError(f"Unexpected assigned condition for {run}") + records.append({ + "run": run, "condition": condition, "label": label, + "branch_url": f"{REPO}/tree/codex/{run}", + "condition_assignment_sha256": digest(assignment_path), + "condition_coordinator_revision": assignment["coordinator_commit"], + "primary_correction": "Bonferroni" if n in (1, 2) else "permutation max-T", + "mask_rule": mask_rule, "native_mask_voxels": int(mask.sum()), + "native_positive_voxels": int(positive.sum()), + }) + t_maps.append(t) + p_maps.append(positive) + masks.append(mask) + + shared = common54 & np.logical_and.reduce(masks) + unique_t, t_indices, seen = [], [], {} + for t in t_maps: + values = t[shared].astype(np.float32) + if not np.array_equal(values.astype(np.float64), t[shared]): + raise ValueError("float32 storage would alter saved source values") + h = hashlib.sha256(values.tobytes()).hexdigest() + if h not in seen: + seen[h] = len(unique_t) + unique_t.append(values) + t_indices.append(seen[h]) + anatomy = image.resample_to_img( + datasets.load_mni152_template(resolution=2), ref, + interpolation="continuous", force_resample=True, copy_header=True, + ).get_fdata(dtype=np.float32) + np.savez_compressed( + OUT / "spatial-inputs.npz", affine=ref.affine, + native_masks=np.stack(masks), native_positive=np.stack(p_maps), + common_participant_support=common54, shared_support=shared, + common_t_unique=np.stack(unique_t), common_t_index=np.array(t_indices), + anatomy=anatomy, + ) + meta = { + "generated_utc": datetime.now(timezone.utc).isoformat(), + "study": "NARPS AO86 equal-indifference potential-gain group analysis", + "n_participants": 54, "runs_per_condition": 3, "records": records, + "conditions": [{"id": c, "label": label} for c, label in CONDITIONS], + "evaluation_support": "Intersection of all twelve native analysis masks and finite nonzero support in all 54 participant maps. Outside is not evaluated as a zero or negative result.", + "frequency_definition": "For each condition, count the three saved native positive primary FWE decisions at each shared-support voxel; native correction/search-space choices are retained.", + "t_variability_definition": "Sample SD (ddof=1) across the three saved unthresholded t values per condition, restricted to the same shared support; no new group inference.", + "display": {"view": "posterior axial crops", "xlim_mni_mm": [-42, 42], + "ylim_mni_mm": [-110, -78], "z_cuts_mni_mm": [-8.4, -3.6, -1.2], + "orientation": "neurological: image left is participant left", + "slice_selection": "Three axial planes containing the observed posterior corrected loci; a descriptive result visualization, not an independent localization test."}, + "anatomy": {"description": "Nilearn bundled skull-stripped MNI152 anatomical context, continuously resampled to the native grid", + "url": "https://nilearn.github.io/stable/modules/generated/nilearn.datasets.load_mni152_template.html"}, + "software": {"numpy": np.__version__, "nibabel": nib.__version__, "nilearn": nilearn.__version__}, + "npz_sha256": digest(OUT / "spatial-inputs.npz"), + "source_files": sources, + } + (OUT / "provenance.json").write_text(json.dumps(meta, indent=2) + "\n") + print(f"Frozen 12 runs; shared support {shared.sum():,} voxels; {len(unique_t)} distinct saved t fields") + + +if __name__ == "__main__": + main() diff --git a/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py b/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py index 70fb8916..6547442b 100644 --- a/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py +++ b/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py @@ -52,48 +52,6 @@ def verify_snapshot(meta): raise ValueError("Expected the eight completed runs in this frozen snapshot") -def variability(meta): - fig, axes = plt.subplots(2, 1, figsize=(13.5, 7.7), sharex=True) - fig.subplots_adjust(left=.17, right=.985, top=.93, bottom=.235, hspace=.34) - conditions = meta["conditions"] - offsets = [-.18, 0, .18] - groups = [[r for r in meta["records"] if r["condition"] == c] for c in conditions] - for ax, field, scale, limits, ticks in ( - (axes[0], "mask_voxels", 1000, (178, 218), [180, 195, 210]), - (axes[1], "positive_whole_brain_fwe_voxels", 1, (-3, 31), [0, 12, 24]), - ): - ax.set_ylim(*limits) - ax.set_yticks(ticks) - ax.set_xlim(-.48, 3.48) - ax.grid(axis="y", color=PALE, lw=1.4, zorder=0) - ax.set_axisbelow(True) - for spine in ("top", "right", "bottom"): - ax.spines[spine].set_visible(False) - ax.spines["left"].set_color("#a9bac5") - ax.tick_params(axis="x", length=0, pad=18) - ax.tick_params(axis="y", length=0, pad=10) - for x, runs in enumerate(groups): - if not runs: - ax.text(x, sum(limits) / 2, "Result\nslot", ha="center", va="center", fontsize=24, color="#677d8d") - for j, row in enumerate(runs): - # Keep run labels separated when the saved results coincide. - dx = offsets[j] if len(runs) == 3 else [-.13, .13][j] - y = row[field] / scale - bonf = row["primary_correction"] == "Bonferroni" - ax.scatter(x + dx, y, marker="D" if bonf else "o", s=170, - color=ORANGE if bonf else TEAL, edgecolor="white", linewidth=1.4, zorder=3) - ax.annotate(row["run"][-2:], (x + dx, y), xytext=(0, 12), - textcoords="offset points", ha="center", fontsize=24, color=INK) - axes[0].set_ylabel("Search mask\n(1,000 voxels)", fontsize=25, labelpad=18) - axes[1].set_ylabel("Positive FWE\nvoxels", fontsize=25, labelpad=18) - axes[1].set_xticks(range(4), ["Baseline", "Discover\ngeneral", "Discover\nscience", "STAMPED\nexplicit"]) - fig.legend(handles=[ - Line2D([], [], marker="D", color=ORANGE, linestyle="None", markersize=12, label="Bonferroni"), - Line2D([], [], marker="o", color=TEAL, linestyle="None", markersize=12, label="Permutation max-T"), - ], loc="lower center", bbox_to_anchor=(.56, .01), frameon=False, ncol=2, fontsize=24, handletextpad=.5, columnspacing=1.3) - save(fig, "narps-analysis-variability") - - def maps(meta): files = { "t": "one_sample_t.nii.gz", "coverage": "common_brain_mask.nii.gz", @@ -177,7 +135,7 @@ def maps(meta): def main(): plt.rcParams.update({ - "font.family": "DejaVu Sans", "font.size": 24, "text.color": INK, + "font.family": ["Arial", "DejaVu Sans", "sans-serif"], "font.size": 24, "text.color": INK, "axes.labelcolor": INK, "axes.titlecolor": INK, "xtick.color": INK, "ytick.color": INK, "svg.fonttype": "none", "svg.hashsalt": "stamped-narps-poster-2026-10-15", @@ -185,16 +143,15 @@ def main(): meta = json.loads((DATA / "provenance.json").read_text()) verify_snapshot(meta) OUT.mkdir(exist_ok=True) - variability(meta) maps(meta) - outputs = sorted(OUT.glob("narps-*.svg")) + sorted(OUT.glob("narps-*.png")) + outputs = [OUT / "narps-group-map.svg", OUT / "narps-group-map.png"] (OUT / "narps-figure-manifest.json").write_text(json.dumps({ "input_provenance_sha256": hashlib.sha256((DATA / "provenance.json").read_bytes()).hexdigest(), "render_script_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), "software": {"numpy": np.__version__, "matplotlib": matplotlib.__version__, "nibabel": nib.__version__}, "output_sha256": {p.name: hashlib.sha256(p.read_bytes()).hexdigest() for p in outputs}, }, indent=2) + "\n") - print("Verified snapshot hashes and map counts; rendered two SVG and PNG figures.") + print("Verified snapshot hashes and map counts; rendered the illustrative group map as SVG and PNG.") if __name__ == "__main__": diff --git a/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py b/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py new file mode 100644 index 00000000..77538c16 --- /dev/null +++ b/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +"""Render spatial reproducibility and recompute its numerical summary offline.""" +from __future__ import annotations + +import hashlib +import json +from pathlib import Path + +import matplotlib +matplotlib.use("Agg") +from matplotlib.colors import BoundaryNorm, ListedColormap +import matplotlib.pyplot as plt +import numpy as np + +ROOT = Path(__file__).resolve().parents[1] +DATA = ROOT / "data/narps-spatial" +OUT = ROOT / "figures" +INK = "#17344c" + + +def digest(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def main(): + meta = json.loads((DATA / "provenance.json").read_text()) + if digest(DATA / "spatial-inputs.npz") != meta["npz_sha256"]: + raise ValueError("Spatial input hash mismatch") + arrays = np.load(DATA / "spatial-inputs.npz") + shared = arrays["shared_support"] + native = arrays["native_masks"] + positive = arrays["native_positive"] + if not np.array_equal(shared, native.all(axis=0) & arrays["common_participant_support"]): + raise ValueError("Shared support is not the recorded intersection") + if np.any(positive & ~native): + raise ValueError("Positive decision outside native tested support") + t = arrays["common_t_unique"][arrays["common_t_index"]].astype(np.float64) + frequency = np.stack([positive[k:k + 3].sum(axis=0) for k in range(0, 12, 3)]) + summary = { + "shared_support_voxels": int(shared.sum()), + "all_runs_maximum_pairwise_t_difference": float(np.ptp(t, axis=0).max()), + "all_runs_median_pairwise_t_range": float(np.median(np.ptp(t, axis=0))), + "conditions": [], + "interpretation": "Saved group t fields agree to numerical precision on shared support. The observed variation in corrected detections reflects native correction choices: two No supplied skills runs use Bonferroni; all other runs use permutation max-T. This descriptive comparison does not isolate a causal condition effect.", + } + for k, condition in enumerate(meta["conditions"]): + ids = slice(k * 3, k * 3 + 3) + sd = np.std(t[ids], axis=0, ddof=1) + summary["conditions"].append({ + **condition, "runs": [r["run"] for r in meta["records"][ids]], + "maximum_t_sample_sd": float(sd.max()), "median_t_sample_sd": float(np.median(sd)), + "maximum_pairwise_t_difference": float(np.ptp(t[ids], axis=0).max()), + "positive_in_n_runs_voxel_counts": {str(n): int(np.sum(shared & (frequency[k] == n))) for n in range(4)}, + "native_positive_voxels_per_run": [int(v.sum()) for v in positive[ids]], + "shared_positive_voxels_per_run": [int((v & shared).sum()) for v in positive[ids]], + "positive_voxels_outside_shared_support_per_run": [int((v & ~shared).sum()) for v in positive[ids]], + }) + (DATA / "derived-summary.json").write_text(json.dumps(summary, indent=2) + "\n") + + plt.rcParams.update({ + "font.family": ["Arial", "DejaVu Sans", "sans-serif"], "font.size": 24, "text.color": INK, + "axes.titlecolor": INK, "xtick.color": INK, "ytick.color": INK, + "svg.fonttype": "none", "svg.hashsalt": "stamped-narps-spatial", + "hatch.color": "#8197a5", "hatch.linewidth": .6, + }) + fig, axes = plt.subplots(4, 3, figsize=(13.5, 8.7)) + fig.subplots_adjust(left=.245, right=.99, top=.91, bottom=.215, wspace=.045, hspace=.14) + cmap = ListedColormap(["#f0b650", "#df685a", "#8c206c"]) + norm = BoundaryNorm([.5, 1.5, 2.5, 3.5], cmap.N) + anatomy, affine = arrays["anatomy"], arrays["affine"] + if not np.allclose(affine[:3, :3], np.diag(np.diag(affine[:3, :3]))): + raise ValueError("This display requires an axis-aligned native image grid") + extent = [affine[0, 3] - affine[0, 0] / 2, + affine[0, 3] + affine[0, 0] * (shared.shape[0] - .5), + affine[1, 3] - affine[1, 1] / 2, + affine[1, 3] + affine[1, 1] * (shared.shape[1] - .5)] + labels = ["No supplied\nskills", "Find useful\nskills", "Find research\nskills", "Use STAMPED\nskills"] + for row in range(4): + for col, mm in enumerate(meta["display"]["z_cuts_mni_mm"]): + ax = axes[row, col] + z = int(round((mm - affine[2, 3]) / affine[2, 2])) + brain = anatomy[:, :, z].T + available = shared[:, :, z].T + ax.imshow(brain, extent=extent, origin="lower", cmap="gray", vmin=0, vmax=.9, interpolation="nearest") + missing = (~available) & (brain > .04) + ax.contourf(missing, levels=[.5, 1.5], origin="lower", extent=extent, + colors="none", hatches=["////"], alpha=.8) + values = frequency[row, :, :, z].T + display = np.ma.masked_where((values == 0) | ~available, values) + ax.imshow(display, extent=extent, origin="lower", cmap=cmap, norm=norm, interpolation="nearest") + ax.set_xlim(*meta["display"]["xlim_mni_mm"]) + ax.set_ylim(*meta["display"]["ylim_mni_mm"]) + ax.set_xticks([]) + ax.set_yticks([]) + ax.set_facecolor("black") + for spine in ax.spines.values(): + spine.set_visible(False) + if row == 0: + ax.set_title(f"z = {mm:g} mm", fontsize=24, pad=14) + for x, letter in ((.045, "L"), (.955, "R")): + ax.text(x, .06, letter, transform=ax.transAxes, ha="center", va="bottom", color="white", fontsize=24) + fig.canvas.draw() + for row, label in enumerate(labels): + box = axes[row, 0].get_position() + fig.text(.015, (box.y0 + box.y1) / 2, label, fontsize=24, va="center", weight="bold") + fig.text(.245, .968, "Posterior axial slices", fontsize=24) + fig.text(.245, .16, "Runs with a positive FWE result", fontsize=24) + cax = fig.add_axes([.245, .10, .68, .035]) + colorbar = fig.colorbar(plt.cm.ScalarMappable(norm=norm, cmap=cmap), cax=cax, + orientation="horizontal", ticks=[1, 2, 3]) + colorbar.ax.set_xticklabels(["1 / 3", "2 / 3", "3 / 3"]) + colorbar.ax.tick_params(labelsize=24, length=0, pad=7) + colorbar.outline.set_visible(False) + fig.text(.015, .018, "Gray: 0/3 · hatched: outside shared coverage", fontsize=24) + OUT.mkdir(exist_ok=True) + for extension in ("svg", "png"): + fig.savefig(OUT / f"narps-spatial-agreement.{extension}", dpi=160, facecolor="white", + metadata={"Date": None} if extension == "svg" else {}) + svg = OUT / "narps-spatial-agreement.svg" + svg.write_text("\n".join(line.rstrip() for line in svg.read_text().splitlines()) + "\n") + plt.close(fig) + (DATA / "render-manifest.json").write_text(json.dumps({ + "input_provenance_sha256": digest(DATA / "provenance.json"), + "script_sha256": digest(Path(__file__)), + "derived_summary_sha256": digest(DATA / "derived-summary.json"), + "figure_sha256": {ext: digest(OUT / f"narps-spatial-agreement.{ext}") for ext in ("svg", "png")}, + "software": {"numpy": np.__version__, "matplotlib": matplotlib.__version__}, + }, indent=2) + "\n") + print(json.dumps(summary, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py b/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py index fdacd0e4..3d60f5d8 100644 --- a/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py +++ b/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py @@ -61,6 +61,9 @@ def copy_source(worker: Path, relative: str, destination: str) -> Path: src = worker / relative dst = SNAPSHOT / destination revision = git(worker, "rev-parse", "HEAD") + branch = git(worker, "branch", "--show-current") + if not branch: + raise ValueError(f"Source needs a named public branch: {worker.name}") if git(worker, "status", "--porcelain", "--", relative): raise ValueError(f"Source is not a clean committed file: {src}") dst.parent.mkdir(parents=True, exist_ok=True) @@ -70,9 +73,10 @@ def copy_source(worker: Path, relative: str, destination: str) -> Path: "bytes": dst.stat().st_size, "source_repository": REPOSITORY, "source_revision": revision, + "source_branch": branch, "source_path": relative, "source_git_object": git(worker, "rev-parse", f"HEAD:{relative}"), - "source_url": f"{REPOSITORY}/blob/{revision}/{relative}", + "source_url": f"{REPOSITORY}/blob/{branch}/{relative}", "transformation": "byte-for-byte copy; annex symlinks dereferenced", } if src.is_symlink(): diff --git a/2026-usrse/stamped-ai-study/update-results.py b/2026-usrse/stamped-ai-study/update-results.py index 0c594093..e524ca6b 100644 --- a/2026-usrse/stamped-ai-study/update-results.py +++ b/2026-usrse/stamped-ai-study/update-results.py @@ -7,49 +7,60 @@ from pathlib import Path ROOT = Path(__file__).resolve().parent -CONDITIONS = [('baseline', 'Baseline'), ('discover-general', 'General'), - ('discover-science', 'Science'), ('stamped-explicit', 'STAMPED')] +CONDITIONS = [('baseline', 'No supplied skills'), ('discover-general', 'Find useful skills'), + ('discover-science', 'Find research skills'), ('stamped-explicit', 'Use STAMPED skills')] EVIDENCE = 'https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json' +SKILLS = 'https://github.com/con/skills/tree/codex/pr26-operational-environment/skills' + + +def run_link(row): + target = row.get('result_url') or EVIDENCE + return f'{row["run"].split("-")[-1]}' + + +def outcome_cells(row, data): + primary = row['primary'] + if not primary or primary['status'] != 'completed': + return '—' * 3 + sc = primary['science'] + science = {'supported':'S', 'qualified':'Q', 'not supported':'N', 'unable to assess':'U', 'not checked':'U'}[sc['reported_adequacy']] + if sc['display_qualifier']: + science += '*' + source = data['sources'][sc['source_id']].get('public_url') or EVIDENCE + science = f'{science}' + rp = primary['replay'] + replay = {'met':'P', 'passed':'P', 'pass':'P', 'partial':'~', 'unmet':'F', 'failed':'F', 'unavailable':'NA', 'invalid':'NA', 'not-checked':'U', 'not checked':'U'}[rp['comparable_status']] if rp else '—' + checklist = primary['checklist'] + counts = '/'.join(str(checklist['comparable_counts'][k]) for k in ('met','partial','unmet')) + evidence = data['sources'][checklist['source_id']].get('public_url') or EVIDENCE + counts = f'{counts}' + return ''.join(f'{value}' for value in (science, replay, counts)) def main(): data = json.loads((ROOT / 'data/assessment-snapshot.json').read_text()) assert not data['warnings'], data['warnings'] - parts = ['', - ''] + parts = ['
Condition / runsScienceReplaySTAMPED
met / partial / unmet
', + ''] for iteration in data['rounds']: number = iteration['iteration'] revision = iteration.get('skills_commit') label = f'Iteration {number}' + (' · final evaluation' if iteration['final_untuned_evaluation'] else '') if revision: - label += f' · {revision[:7]}' - parts.append(f'') + label += f' · skill revision {revision[:7]}' + parts.append(f'') + iteration_started = any(r.get('result_url') for r in data['rows'] if r['iteration'] == number) for condition, label in CONDITIONS: rows = sorted((r for r in data['rows'] if r['iteration'] == number and r['condition'] == condition), key=lambda r:r['replicate']) assert len(rows) == 3 - run_links, science, replay, counts = [], [], [], [] - for row in rows: - rid = row['run'].split('-')[-1] - target = row.get('result_url') or EVIDENCE - run_links.append(f'{rid}') - primary = row['primary'] - if not primary or primary['status'] != 'completed': - science.append('—'); replay.append('—'); counts.append('—') - continue - sc = primary['science'] - sci = {'supported':'S', 'qualified':'Q', 'not supported':'N', 'not checked':'—'}.get(sc['reported_adequacy'], '?') - if sc['display_qualifier']: - sci += '*' - source = data['sources'][sc['source_id']].get('public_url') or EVIDENCE - science.append(f'{sci}') - rp = primary['replay'] - replay.append({'passed':'P', 'pass':'P', 'partial':'~', 'failed':'F', 'unavailable':'NA', 'invalid':'NA'}.get(rp['comparable_status'], '—') if rp else '—') - ck = primary['checklist'] - val = ck['comparable_counts'] - counts.append('/'.join(str(val[k]) for k in ('met','partial','unmet'))) - # Three values in each cell map left-to-right onto the run IDs. - parts.append(''+ - ''.join('' for values in (science,replay,counts))+'') + if not iteration_started: + # Reserved iterations expand to individual run rows when data arrive. + parts.append(f'') + continue + for index, row in enumerate(rows): + condition_cell = f'' if index == 0 else '' + parts.append(f'{condition_cell}'+outcome_cells(row, data)+'') parts.append('
InstructionRunScienceReplaySTAMPED
met / partial / unmet
{label}
{label}
'+label+''+' · '.join(run_links)+''+' · '.join(values)+'
{label}'+ + ' · '.join(run_link(row) for row in rows)+'———
{label}
{run_link(row)}
') content = (ROOT/'index.html').read_text() start, tail = content.split('',1) diff --git a/REUSE.toml b/REUSE.toml index 9050c7b7..b63becc9 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -561,7 +561,7 @@ SPDX-FileCopyrightText = "2026 Center for Open Neuroscience" SPDX-License-Identifier = "Apache-2.0" [[annotations]] -path = ["2026-usrse/stamped-ai-study/data/assessment-snapshot.json", "2026-usrse/stamped-ai-study/data/narps-figure-guidance.json", "2026-usrse/stamped-ai-study/data/*/provenance.json", "2026-usrse/stamped-ai-study/figures/*.json", "2026-usrse/stamped-ai-study/figures/narps-analysis-variability.*"] +path = ["2026-usrse/stamped-ai-study/data/assessment-snapshot.json", "2026-usrse/stamped-ai-study/data/*/provenance.json", "2026-usrse/stamped-ai-study/data/narps-spatial/*.json", "2026-usrse/stamped-ai-study/figures/*.json"] precedence = "closest" SPDX-FileCopyrightText = "2026 Center for Open Neuroscience" SPDX-License-Identifier = "CC-BY-SA-4.0" @@ -569,13 +569,13 @@ SPDX-License-Identifier = "CC-BY-SA-4.0" # Scientific source artifacts are attributed in the input provenance manifest. # Copying them here does not relicense their upstream data, atlas or code. [[annotations]] -path = ["2026-usrse/stamped-ai-study/data/*/maps/**", "2026-usrse/stamped-ai-study/data/*/summaries/**", "2026-usrse/stamped-ai-study/data/*/participant-map-sources.json", "2026-usrse/stamped-ai-study/data/*/source-analysis-run09.py"] +path = ["2026-usrse/stamped-ai-study/data/*/maps/**", "2026-usrse/stamped-ai-study/data/*/summaries/**", "2026-usrse/stamped-ai-study/data/*/participant-map-sources.json", "2026-usrse/stamped-ai-study/data/*/source-analysis-run09.py", "2026-usrse/stamped-ai-study/data/narps-spatial/*.npz"] precedence = "override" SPDX-FileCopyrightText = "NOASSERTION" SPDX-License-Identifier = "LicenseRef-ThirdPartyMixed" [[annotations]] -path = ["2026-usrse/stamped-ai-study/figures/narps-group-map.*"] +path = ["2026-usrse/stamped-ai-study/figures/narps-group-map.*", "2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.*"] precedence = "override" SPDX-FileCopyrightText = ["2026 Center for Open Neuroscience (composition)", "NOASSERTION"] SPDX-License-Identifier = "CC-BY-SA-4.0 AND LicenseRef-ThirdPartyMixed" From 56c3848919e23f571ffc0b000a196f8f7dc1a902 Mon Sep 17 00:00:00 2001 From: leej3 Date: Fri, 16 Oct 2026 00:55:22 -0400 Subject: [PATCH 06/15] fix(poster): use accessible paper link and verify publication Link the original study through its public bibliographic record. Confirm all 56 poster destinations, four PDF QR codes and 18 published payloads. Retain updated PDF, layout, visual and retrieval checks with the exported poster. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- 2026-usrse/stamped-ai-study/README.md | 2 +- .../exports/agent-visual-review.json | 7 +- .../stamped-ai-study/exports/html-audit.json | 6 +- .../stamped-ai-study/exports/link-audit.json | 326 +++++++++++++----- .../stamped-ai-study/exports/pdf-audit.json | 2 +- .../exports/retrieval-audit.json | 10 +- .../exports/stamped-ai-poster.pdf | 2 +- 2026-usrse/stamped-ai-study/index.html | 2 +- 8 files changed, 251 insertions(+), 106 deletions(-) diff --git a/2026-usrse/stamped-ai-study/README.md b/2026-usrse/stamped-ai-study/README.md index ac3fce3c..6dff7554 100644 --- a/2026-usrse/stamped-ai-study/README.md +++ b/2026-usrse/stamped-ai-study/README.md @@ -3,7 +3,7 @@ An editable **44 × 44 inch** poster about improving STAMPED research skills through the scientific work they produce. It replaces the earlier behavioral example with the NARPS group-analysis study and presents the intended completed argument, with real example results and open slots for the remaining runs and revisions. -Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or retrieve [the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf). +Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or retrieve [the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf). The [completion plan](completion-plan.md) identifies the evidence needed to finish the poster and changes to data collection that can support it. No research workers or study protocols are changed by this poster module. diff --git a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json index b9b552a4..f1c3a49b 100644 --- a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json +++ b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json @@ -1,9 +1,9 @@ { "reviewer": "Codex agent", "author_review": false, - "pdf_sha256": "85f382b9ec37f6498c80c391237ca93bae8ed66a65a1f94e0df7bc04bec581ba", + "pdf_sha256": "289d01b8d3c11c821af197f4f1934c9d1f6d5199ae341a088e965d8b705fc091", "preview_sha256": "1b56557847966bb7e200a0dc038c767a746b305e21f0ea0a96a530ef0673b86e", - "reviewed_utc": "2026-10-16T04:42:58.644608+00:00", + "reviewed_utc": "2026-10-16T04:51:21.120226+00:00", "checks": [ "Inspected the current full-page PDF raster preview", "STAMPED principles appear in the top band with concise definitions", @@ -12,7 +12,8 @@ "Spatial agreement figure uses all twelve runs on shared coverage and distinguishes unassessed areas", "All visible GitHub evidence links use named branches", "Three columns, captions, invitation and footer fit without clipping or overlap", - "Four QR codes decode from PDF pixels; all PDF text meets the 24 pt minimum" + "Four QR codes decode from PDF pixels; all PDF text meets the 24 pt minimum", + "Bibliographic URL update leaves the reviewed PDF raster byte-identical" ], "result": "passed" } diff --git a/2026-usrse/stamped-ai-study/exports/html-audit.json b/2026-usrse/stamped-ai-study/exports/html-audit.json index e6d83ee4..b96c40fc 100644 --- a/2026-usrse/stamped-ai-study/exports/html-audit.json +++ b/2026-usrse/stamped-ai-study/exports/html-audit.json @@ -170,7 +170,7 @@ "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", "https://github.com/leej3/stamped-in-practice", "https://checklist.stamped-principles.org/", - "https://doi.org/10.1126/science.1134239", + "https://pubmed.ncbi.nlm.nih.gov/17255512/", "https://doi.org/10.1038/s41586-020-2314-9", "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", "https://neurovault.org/collections/4932/", @@ -256,9 +256,9 @@ } ], "browser": "151.0.7922.34", - "created_utc": "2026-10-16T04:39:51.940Z", + "created_utc": "2026-10-16T04:46:15.771Z", "source_sha256": { - "index.html": "7cc274a42b284d2cc3d40b68cf25367a4368be5a48aed49045e1f537883cae84", + "index.html": "65adf144d4d676298f48b3ea6bb16b46945592f3aa8323c4549e85baae9f9aff", "template.css": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", "poster.css": "0a4e777fb1ca3042c26b743a0b525fedbf13778c601fca6d937116a7fe0b9977", "build-poster.cjs": "5aa4ae64ee5846d8ea4f11a3a88c9950d2f26cf2801209072e57cebd152f669e", diff --git a/2026-usrse/stamped-ai-study/exports/link-audit.json b/2026-usrse/stamped-ai-study/exports/link-audit.json index b6c057a5..ee80855f 100644 --- a/2026-usrse/stamped-ai-study/exports/link-audit.json +++ b/2026-usrse/stamped-ai-study/exports/link-audit.json @@ -1,11 +1,19 @@ { - "html_audit_sha256": "5d92a2834f017c67c4d21183b8a7eccdbbe74dc53a0989a89da82ec8e1727d31", - "checked_at": "2026-10-16T03:56:05.430127+00:00", + "html_audit_sha256": "e2d2aa0412c9a636f9e8747145ff895b0a7981633141bf028870a325fb95d4a3", + "checked_at": "2026-10-16T04:46:28.427005+00:00", "authentication": "none", "results": [ + { + "url": "https://checklist.stamped-principles.org/", + "checked_at": "2026-10-16T04:46:21.172677+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://checklist.stamped-principles.org/", + "passed": true + }, { "url": "https://dev.centerforopenneuroscience.org/", - "checked_at": "2026-10-16T03:56:00.276064+00:00", + "checked_at": "2026-10-16T04:46:21.172931+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://dev.centerforopenneuroscience.org/", @@ -13,167 +21,263 @@ }, { "url": "https://doi.org/10.1038/s41586-020-2314-9", - "checked_at": "2026-10-16T03:56:00.276332+00:00", + "checked_at": "2026-10-16T04:46:21.172993+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=6a6eb4a9-80c5-40ec-be7e-30e052a0988c", + "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=e9ab83c0-ece9-43f3-820a-14af19f40f90", "passed": true }, { "url": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", - "checked_at": "2026-10-16T03:56:00.276413+00:00", + "checked_at": "2026-10-16T04:46:21.173037+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://openneuro.org/datasets/ds001734/versions/1.0.4", "passed": true }, { - "url": "https://github.com/con/skills/blob/b86e37ff9115e37541fd47aca73f49e13b5110bb/skills/assess-alignment-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T03:56:00.276484+00:00", + "url": "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", + "checked_at": "2026-10-16T04:46:21.366949+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/blob/b86e37ff9115e37541fd47aca73f49e13b5110bb/skills/assess-alignment-with-stamped-principles/SKILL.md", + "final_url": "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", "passed": true }, { - "url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/align-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T03:56:00.474890+00:00", + "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", + "checked_at": "2026-10-16T04:46:21.412053+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/align-with-stamped-principles/SKILL.md", + "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", "passed": true }, { - "url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/create-stamped-project/SKILL.md", - "checked_at": "2026-10-16T03:56:00.807902+00:00", + "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", + "checked_at": "2026-10-16T04:46:21.712596+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/create-stamped-project/SKILL.md", + "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", "passed": true }, { - "url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/do-full-research-loop/SKILL.md", - "checked_at": "2026-10-16T03:56:00.819811+00:00", + "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", + "checked_at": "2026-10-16T04:46:21.915572+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/blob/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills/do-full-research-loop/SKILL.md", + "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", "passed": true }, { "url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", - "checked_at": "2026-10-16T03:56:00.927803+00:00", + "checked_at": "2026-10-16T04:46:21.939255+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", "passed": true }, { - "url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", - "checked_at": "2026-10-16T03:56:01.288719+00:00", + "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", + "checked_at": "2026-10-16T04:46:22.147235+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", + "final_url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "passed": true }, { - "url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills", - "checked_at": "2026-10-16T03:56:01.328816+00:00", + "url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", + "checked_at": "2026-10-16T04:46:22.443467+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/tree/c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa/skills", + "final_url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", "passed": true }, { - "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", - "checked_at": "2026-10-16T03:56:01.478844+00:00", + "url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py", + "checked_at": "2026-10-16T04:46:22.494649+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", + "final_url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py", "passed": true }, { - "url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", - "checked_at": "2026-10-16T03:56:01.724157+00:00", + "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", + "checked_at": "2026-10-16T04:46:22.566122+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", + "final_url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", "passed": true }, { - "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", - "checked_at": "2026-10-16T03:56:01.842974+00:00", + "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/narps-spatial", + "checked_at": "2026-10-16T04:46:22.965625+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", + "final_url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/narps-spatial", "passed": true }, { "url": "https://github.com/leej3/stamped-in-practice", - "checked_at": "2026-10-16T03:56:01.858919+00:00", + "checked_at": "2026-10-16T04:46:22.993741+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", - "checked_at": "2026-10-16T03:56:02.161090+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-assessment.md", + "checked_at": "2026-10-16T04:46:23.000341+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8/2026-10-16-assessment.md", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-assessment.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/report.md", - "checked_at": "2026-10-16T03:56:02.352538+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-response.json", + "checked_at": "2026-10-16T04:46:23.031440+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/report.md", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-response.json", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", - "checked_at": "2026-10-16T03:56:02.383811+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-assessment.md", + "checked_at": "2026-10-16T04:46:23.400367+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/results/results.json", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-assessment.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", - "checked_at": "2026-10-16T03:56:02.460472+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-response.json", + "checked_at": "2026-10-16T04:46:23.455869+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/2ad7c466615141d11b81720ff97d61c2d7c23f73/scripts/analyze_gain.py", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-response.json", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", - "checked_at": "2026-10-16T03:56:02.599935+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-assessment.md", + "checked_at": "2026-10-16T04:46:23.502554+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/5a16be31d225574a4643a8feb000ca0a5fa7f7ad/2026-10-16-assessment.md", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-assessment.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/sources.json", - "checked_at": "2026-10-16T03:56:02.860477+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-response.json", + "checked_at": "2026-10-16T04:46:23.545186+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/sources.json", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-response.json", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/study-task.md", - "checked_at": "2026-10-16T03:56:02.929852+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-assessment.md", + "checked_at": "2026-10-16T04:46:23.849767+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/c7a135f92f92df15c379f7c2d9231f13981d76e4/input/study-task.md", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-assessment.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-response.json", + "checked_at": "2026-10-16T04:46:23.960701+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-response.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-assessment.md", + "checked_at": "2026-10-16T04:46:24.023520+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-assessment.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-response.json", + "checked_at": "2026-10-16T04:46:24.042539+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-response.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-assessment.md", + "checked_at": "2026-10-16T04:46:24.276733+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-assessment.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-response.json", + "checked_at": "2026-10-16T04:46:24.486556+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-response.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-assessment.md", + "checked_at": "2026-10-16T04:46:24.504897+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-assessment.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-response.json", + "checked_at": "2026-10-16T04:46:24.581408+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-response.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", + "checked_at": "2026-10-16T04:46:24.683582+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", + "checked_at": "2026-10-16T04:46:24.973784+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", + "checked_at": "2026-10-16T04:46:25.044552+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", + "checked_at": "2026-10-16T04:46:25.098395+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", + "checked_at": "2026-10-16T04:46:25.134898+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", "passed": true }, { "url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", - "checked_at": "2026-10-16T03:56:02.969943+00:00", + "checked_at": "2026-10-16T04:46:25.446858+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", @@ -181,87 +285,119 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", - "checked_at": "2026-10-16T03:56:03.091980+00:00", + "checked_at": "2026-10-16T04:46:25.525494+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", - "checked_at": "2026-10-16T03:56:03.329933+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", + "checked_at": "2026-10-16T04:46:25.558552+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", - "checked_at": "2026-10-16T03:56:03.372955+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", + "checked_at": "2026-10-16T04:46:25.610277+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/2ad7c466615141d11b81720ff97d61c2d7c23f73/results", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", - "checked_at": "2026-10-16T03:56:03.490172+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", + "checked_at": "2026-10-16T04:46:25.884455+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/32d9cabf7b5d041f9efb97830bf5279068809357", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", - "checked_at": "2026-10-16T03:56:03.498935+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", + "checked_at": "2026-10-16T04:46:25.955372+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/42e957201315aa8221ba60fbe614119e22639ce8", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", - "checked_at": "2026-10-16T03:56:03.743227+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", + "checked_at": "2026-10-16T04:46:26.070539+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/abf95b00c02fb55d16c4d269926c1428cedc0574", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", - "checked_at": "2026-10-16T03:56:03.754086+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", + "checked_at": "2026-10-16T04:46:26.093976+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/d90a335549f43007eac05902859224e6ce2eaada", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "checked_at": "2026-10-16T03:56:03.923068+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", + "checked_at": "2026-10-16T04:46:26.414664+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "checked_at": "2026-10-16T03:56:03.956083+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", + "checked_at": "2026-10-16T04:46:26.444417+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "checked_at": "2026-10-16T03:56:04.293257+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", + "checked_at": "2026-10-16T04:46:26.554285+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/f30190d8144a9e15acfa1c0d973eadf0d655c83c", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", + "checked_at": "2026-10-16T04:46:26.588351+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", + "checked_at": "2026-10-16T04:46:26.879740+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", + "checked_at": "2026-10-16T04:46:26.884264+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", + "checked_at": "2026-10-16T04:46:26.981597+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", "passed": true }, { "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", - "checked_at": "2026-10-16T03:56:04.293803+00:00", + "checked_at": "2026-10-16T04:46:27.034701+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", @@ -269,7 +405,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", - "checked_at": "2026-10-16T03:56:04.391339+00:00", + "checked_at": "2026-10-16T04:46:27.363090+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", @@ -277,7 +413,7 @@ }, { "url": "https://github.com/stamped-principles/stamped-paper", - "checked_at": "2026-10-16T03:56:04.443199+00:00", + "checked_at": "2026-10-16T04:46:27.387098+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/stamped-principles/stamped-paper", @@ -285,7 +421,7 @@ }, { "url": "https://neurovault.org/collections/4932/", - "checked_at": "2026-10-16T03:56:04.722140+00:00", + "checked_at": "2026-10-16T04:46:27.426205+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://neurovault.org/collections/4932/", @@ -293,15 +429,23 @@ }, { "url": "https://pbs.dartmouth.edu/", - "checked_at": "2026-10-16T03:56:04.764177+00:00", + "checked_at": "2026-10-16T04:46:27.460414+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://pbs.dartmouth.edu/", "passed": true }, + { + "url": "https://pubmed.ncbi.nlm.nih.gov/17255512/", + "checked_at": "2026-10-16T04:46:27.776871+00:00", + "method": "HEAD", + "http_status": 203, + "final_url": "https://pubmed.ncbi.nlm.nih.gov/17255512/", + "passed": true + }, { "url": "https://www.repronim.org/", - "checked_at": "2026-10-16T03:56:04.875816+00:00", + "checked_at": "2026-10-16T04:46:27.796288+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://repronim.org/", diff --git a/2026-usrse/stamped-ai-study/exports/pdf-audit.json b/2026-usrse/stamped-ai-study/exports/pdf-audit.json index fccdc831..2d53a325 100644 --- a/2026-usrse/stamped-ai-study/exports/pdf-audit.json +++ b/2026-usrse/stamped-ai-study/exports/pdf-audit.json @@ -1,5 +1,5 @@ { - "pdf_sha256": "85f382b9ec37f6498c80c391237ca93bae8ed66a65a1f94e0df7bc04bec581ba", + "pdf_sha256": "289d01b8d3c11c821af197f4f1934c9d1f6d5199ae341a088e965d8b705fc091", "page_count": 1, "page_points": [ 3168.0, diff --git a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json index 2ed3407d..1900f997 100644 --- a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json +++ b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json @@ -1,5 +1,5 @@ { - "checked_utc": "2026-10-16T04:43:43.188607+00:00", + "checked_utc": "2026-10-16T04:51:39.652943+00:00", "authentication": "none", "method": "download and compare full payload SHA-256", "files": [ @@ -101,10 +101,10 @@ }, { "path": "exports/stamped-ai-poster.pdf", - "key": "MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf", - "sha256": "85f382b9ec37f6498c80c391237ca93bae8ed66a65a1f94e0df7bc04bec581ba", - "bytes": 892880, + "key": "MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf", + "sha256": "289d01b8d3c11c821af197f4f1934c9d1f6d5199ae341a088e965d8b705fc091", + "bytes": 892882, "passed": true }, { diff --git a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf index a13bd0cb..25754225 120000 --- a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf +++ b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf @@ -1 +1 @@ -../../../.git/annex/objects/Ff/5M/MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf/MD5E-s892880--c9c8152542986d34d271bc44900ab481.pdf \ No newline at end of file +../../../.git/annex/objects/5k/5P/MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf/MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/index.html b/2026-usrse/stamped-ai-study/index.html index dc3f78d5..2a251e88 100644 --- a/2026-usrse/stamped-ai-study/index.html +++ b/2026-usrse/stamped-ai-study/index.html @@ -68,7 +68,7 @@

STAMPED: p

Replicating a gain-response analysis

-

Tom et al. asked how the brain represents potential gains and losses during risky choices.

+

Tom et al. asked how the brain represents potential gains and losses during risky choices.

Our replication: test whether potential gain increases ventromedial prefrontal cortex (vmPFC) activity in the equal-indifference group (NARPS H1). Agents choose group inference for 54 fixed AO86 participant maps.

From 40981d56f864e454bde81467642300bc622b3aed Mon Sep 17 00:00:00 2001 From: leej3 Date: Fri, 16 Oct 2026 01:49:20 -0400 Subject: [PATCH 07/15] docs(poster): restore experiment framing and simplify outcomes Restore the blue experiment banner and place STAMPED principles down the left column. Reserve a compact four-row table for retained iterations pooled by condition, preserving space around the research-object message. Import verified figure exports from the benchmark and remove the duplicate scientific pipeline and input snapshots from the presentation repository. Keep experiment-planning discussion outside the poster. Validate the 44-inch PDF, 24-point text floor, all four QR codes, all 29 links and anonymous retrieval of twelve retained display payloads. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- 2026-usrse/stamped-ai-study/README.md | 91 +- 2026-usrse/stamped-ai-study/build-poster.cjs | 2 +- .../stamped-ai-study/completion-plan.md | 164 +- .../data/assessment-snapshot.json | 1862 ----------------- .../maps/anatomical-context.nii.gz | 1 - .../maps/common_brain_mask.nii.gz | 1 - .../maps/max_t_fwe_p05_mask.nii.gz | 1 - .../narps-2026-10-15/maps/one_sample_t.nii.gz | 1 - ...vmPFC_AAL_medial_orbitofrontal_mask.nii.gz | 1 - .../participant-map-sources.json | 473 ----- .../data/narps-2026-10-15/provenance.json | 343 --- .../narps-2026-10-15/source-analysis-run09.py | 270 --- .../summaries/narps-r1-01.json | 107 - .../summaries/narps-r1-02.json | 68 - .../summaries/narps-r1-03.json | 173 -- .../summaries/narps-r1-05.json | 103 - .../summaries/narps-r1-06.json | 324 --- .../summaries/narps-r1-07.json | 53 - .../summaries/narps-r1-08.json | 96 - .../summaries/narps-r1-09.json | 83 - .../data/narps-spatial/derived-summary.json | 140 -- .../data/narps-spatial/provenance.json | 885 -------- .../data/narps-spatial/render-manifest.json | 13 - .../data/narps-spatial/spatial-inputs.npz | 1 - .../exports/agent-visual-review.json | 20 +- .../stamped-ai-study/exports/html-audit.json | 88 +- .../stamped-ai-study/exports/link-audit.json | 310 +-- .../stamped-ai-study/exports/pdf-audit.json | 8 +- .../stamped-ai-study/exports/pdf-preview.png | 2 +- .../exports/retrieval-audit.json | 66 +- .../exports/stamped-ai-poster.pdf | 2 +- .../figures/benchmark-source.json | 133 ++ .../figures/narps-figure-manifest.json | 13 - 2026-usrse/stamped-ai-study/index.html | 95 +- 2026-usrse/stamped-ai-study/pixi.toml | 12 +- 2026-usrse/stamped-ai-study/poster.css | 37 +- .../scripts/export-assessments.py | 311 --- .../scripts/extract-narps-spatial.py | 210 -- .../scripts/import-benchmark-figures.py | 77 + .../scripts/render-narps-figures.py | 158 -- .../scripts/render-narps-spatial.py | 135 -- .../scripts/snapshot-narps-figures.py | 188 -- 2026-usrse/stamped-ai-study/update-results.py | 73 - REUSE.toml | 11 +- 44 files changed, 465 insertions(+), 6740 deletions(-) delete mode 100644 2026-usrse/stamped-ai-study/data/assessment-snapshot.json delete mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/anatomical-context.nii.gz delete mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/common_brain_mask.nii.gz delete mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz delete mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/one_sample_t.nii.gz delete mode 120000 2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/participant-map-sources.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/source-analysis-run09.py delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-01.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-02.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-03.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-05.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-06.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-07.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-08.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-09.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-spatial/derived-summary.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-spatial/provenance.json delete mode 100644 2026-usrse/stamped-ai-study/data/narps-spatial/render-manifest.json delete mode 120000 2026-usrse/stamped-ai-study/data/narps-spatial/spatial-inputs.npz create mode 100644 2026-usrse/stamped-ai-study/figures/benchmark-source.json delete mode 100644 2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json delete mode 100644 2026-usrse/stamped-ai-study/scripts/export-assessments.py delete mode 100644 2026-usrse/stamped-ai-study/scripts/extract-narps-spatial.py create mode 100644 2026-usrse/stamped-ai-study/scripts/import-benchmark-figures.py delete mode 100644 2026-usrse/stamped-ai-study/scripts/render-narps-figures.py delete mode 100644 2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py delete mode 100644 2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py delete mode 100644 2026-usrse/stamped-ai-study/update-results.py diff --git a/2026-usrse/stamped-ai-study/README.md b/2026-usrse/stamped-ai-study/README.md index 6dff7554..06fd535d 100644 --- a/2026-usrse/stamped-ai-study/README.md +++ b/2026-usrse/stamped-ai-study/README.md @@ -1,26 +1,22 @@ # STAMPED in Practice poster An editable **44 × 44 inch** poster about improving STAMPED research skills through the scientific work they produce. -It replaces the earlier behavioral example with the NARPS group-analysis study and presents the intended completed argument, with real example results and open slots for the remaining runs and revisions. +The blue banner states the experiment; the left column introduces STAMPED, the centre shows the NARPS scientific example, and the right connects condition-level outcomes to the study's research objects. -Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or retrieve [the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf). -The [completion plan](completion-plan.md) identifies the evidence needed to finish the poster and changes to data collection that can support it. -No research workers or study protocols are changed by this poster module. +Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or retrieve [the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf). +The [completion plan](completion-plan.md) identifies the evidence needed to fill the pooled comparison and guide subsequent data collection. -## What is reproducible here +## Scientific figures belong to the benchmark -- Scientific figures: saved worker summaries and group maps, input hashes, source revisions and plotting code. -- Outcomes matrix: all three allocated iterations and four conditions, generated from a saved assessment export; open cells remain missing observations. -- Poster: local HTML/CSS, reusable institutional artwork, branded QR generation, a Pixi environment, a pinned browser dependency and PDF/layout checks. +The [benchmark figure workflow](https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/POSTER-FIGURES.md) contains the scientific generators, frozen inputs, root Pixi environment, derived results and provenance. +This poster retains display copies and a [source binding](figures/benchmark-source.json), including the exact benchmark revision and SHA-256 values. +Reader-facing links open named branches; exact revisions remain in the provenance. -The scientific panel illustrates [run 09](https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09), conditional on the supplied AO86 maps. -The spatial comparison shows corrected-positive agreement across all twelve first-iteration runs, three per condition, on shared coverage. +The group map illustrates development run 09, conditional on the supplied AO86 participant maps. +The spatial comparison includes twelve development runs, three per condition, on shared coverage. Group t maps agree to numerical precision; native correction choices account for the displayed difference in positive extent. -Illustrative-map provenance is in [data/narps-2026-10-15/provenance.json](data/narps-2026-10-15/provenance.json). -Spatial source identities, coverage rules and display choices are in [data/narps-spatial/provenance.json](data/narps-spatial/provenance.json); [derived-summary.json](data/narps-spatial/derived-summary.json) contains the regenerated measurements. -The [assessment data](data/assessment-snapshot.json) retain raw statuses, external validity overrides, missingness, source hashes and separate supplementary judgments. -The exported records are sufficient to regenerate the poster's displayed numbers; full research objects remain linked in the study. -Reader-facing links open named branches; exact source revisions and hashes remain in the provenance records. +These development examples remain useful while the compact outcomes table reserves space for eligible benchmark iterations pooled by condition. +No comparison averages have been inserted yet. ## Retrieve and build @@ -31,71 +27,38 @@ pixi install pixi run datalad get ../orinoco-lite/assets/con-logo-outlined.svg \ ../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg \ ../orinoco-lite/assets/repronim_logo.svg \ - ../orinoco-lite/assets/orinoco-qr-con.svg assets data figures exports + ../orinoco-lite/assets/orinoco-qr-con.svg assets figures exports pixi run setup-browser pixi run build pixi run verify pixi run links ``` -The build uses saved local inputs and makes no requests for live study state. -`pixi run build` regenerates figures and the outcomes table, then exports the poster. -Before replacing tracked annexed outputs, run `pixi run git annex unlock assets figures exports/stamped-ai-poster.pdf exports/pdf-preview.png`. -The local `pixi.lock` is preserved on a separate environment snapshot branch, [`codex/env-stamped-poster-spatial-20261016`](https://github.com/con/talks/tree/codex/env-stamped-poster-spatial-20261016); it is excluded from poster history. -For an exact environment replay, retrieve that snapshot's `pixi.lock` into this directory before `pixi install --locked`. +`pixi run build` verifies the scientific display copies against their binding, then exports the local HTML/CSS poster. It does not regenerate scientific analyses or request live study data. Before replacing annexed exports, run `pixi run git annex unlock exports/stamped-ai-poster.pdf exports/pdf-preview.png`. The exact validated `pixi.lock` is preserved separately on [`codex/env-stamped-poster-contained-20261016`](https://github.com/con/talks/tree/codex/env-stamped-poster-contained-20261016). For an exact environment replay, retrieve its `2026-usrse/stamped-ai-study/pixi.lock` here before `pixi install --locked`. -Institutional marks are reused from the ORINOCO Lite poster. -To change QR destinations, edit `make-logo-qrs.py` and run: - -```sh -pixi run python make-logo-qrs.py --check-dir exports/qr-source -``` - -QR regeneration additionally requires Inkscape and `rsvg-convert`. -Ordinary poster builds use the supplied QR assets and do not require those tools. - -## Refresh the evidence deliberately - -The assessment export reads allocation and completed judgments from an existing coordinator checkout without changing it: +To import a new committed benchmark export: ```sh -pixi run python scripts/export-assessments.py \ - --study /path/to/stamped-in-practice \ - --out data/assessment-snapshot.json +pixi run git annex unlock figures +pixi run python scripts/import-benchmark-figures.py --benchmark /path/to/stamped-in-practice +pixi run build ``` -Review the export's warnings, validity overlays and source bindings before rebuilding. -A source hash does not by itself establish publication of the original assessment; null source URLs retain that distinction. -The poster's primary judgments remain separate from duplicate and supplementary reviews. -STAMPED cells contain met / partial / unmet counts, not an overall score. -Remaining unavailable, not-checked and not-applicable items remain in the linked export. +The importer checks every source recorded in the benchmark export manifest and requires those files to match its committed revision. +Scientific regeneration and input refresh happen through the benchmark's documented root tasks. +The historical poster-side scientific pipeline remains in Git history; it is no longer a second source of truth. -The original input capture script preserves the illustrative analysis and its initial source summaries. -The spatial extraction separately records all twelve native masks, t maps and corrected-positive maps. -Do not use zero as a missing result or pool incompatible regional estimands. -See [completion-plan.md](completion-plan.md) before extending the spatial comparison to later iterations. - -To refresh spatial inputs from completed worker checkouts and their recorded assignments: - -```sh -pixi run python scripts/extract-narps-spatial.py \ - --workers-root /path/to/stamped-in-practice-workers/codex \ - --capture-root /path/to/narps-v1 -pixi run spatial-map -``` - -The compact NPZ preserves all twelve native support masks and corrected-positive maps, together with losslessly deduplicated t values on shared support and anatomical context. -Extraction checks participant-map identities, source cleanliness, native geometry, correction semantics, assignment and published result counts. -The renderer verifies the frozen input hash and recomputes both agreement maps and the numerical summary offline. +Institutional marks are reused from the ORINOCO Lite poster. +To change QR destinations, edit `make-logo-qrs.py` and run `pixi run python make-logo-qrs.py --check-dir exports/qr-source`. +QR regeneration additionally requires Inkscape and `rsvg-convert`; ordinary builds use the supplied QR assets. ## Verification and provenance -[HTML audit](exports/html-audit.json), [PDF audit](exports/pdf-audit.json), [link audit](exports/link-audit.json) and [visual review](exports/agent-visual-review.json) describe the current export. -The checks require one 44-inch square page, at least 24-point print text, no layout overflow, clickable PDF links, and all four QR codes decoded from PDF pixels. +[HTML audit](exports/html-audit.json), [PDF audit](exports/pdf-audit.json), [link audit](exports/link-audit.json), [retrieval audit](exports/retrieval-audit.json) and [visual review](exports/agent-visual-review.json) describe the current export. +Checks require one 44-inch square page, at least 24-point print text, no layout overflow, clickable PDF links, and four QR codes decoded from PDF pixels. These are agent checks; author review remains part of poster preparation. -Earlier designs and verification reports remain in the [poster history](https://github.com/con/talks/commits/codex/stamped-example-poster/2026-usrse/stamped-ai-study). +Earlier designs remain in the [poster history](https://github.com/con/talks/commits/codex/stamped-example-poster/2026-usrse/stamped-ai-study). [source-manifest.json](source-manifest.json) records the inherited layout and artwork. - Composition and prose are CC BY-SA 4.0; scripts are Apache-2.0. -Institutional marks and external scientific inputs retain their own rights, documented in [REUSE.toml](../../REUSE.toml) and the figure provenance. +Institutional marks and external scientific inputs retain their own rights, documented in [REUSE.toml](../../REUSE.toml) and the benchmark provenance. diff --git a/2026-usrse/stamped-ai-study/build-poster.cjs b/2026-usrse/stamped-ai-study/build-poster.cjs index 5766cdef..b7249d49 100644 --- a/2026-usrse/stamped-ai-study/build-poster.cjs +++ b/2026-usrse/stamped-ai-study/build-poster.cjs @@ -96,7 +96,7 @@ const sha = file => crypto.createHash('sha256').update(fs.readFileSync(file)).di }); audit.browser = browser.version(); audit.created_utc = new Date().toISOString(); - audit.source_sha256 = Object.fromEntries(['index.html', 'template.css', 'poster.css', 'build-poster.cjs', 'verify-pdf.py', 'verify-links.py', 'make-logo-qrs.py', 'source-manifest.json', 'update-results.py', 'data/assessment-snapshot.json', 'figures/narps-figure-manifest.json', 'data/narps-spatial/render-manifest.json', 'scripts/render-narps-figures.py', 'scripts/render-narps-spatial.py', 'scripts/extract-narps-spatial.py', 'pixi.toml', 'package-lock.json'].map(n => [n, sha(path.join(root, n))])); + audit.source_sha256 = Object.fromEntries(['index.html', 'template.css', 'poster.css', 'build-poster.cjs', 'verify-pdf.py', 'verify-links.py', 'make-logo-qrs.py', 'source-manifest.json', 'figures/benchmark-source.json', 'scripts/import-benchmark-figures.py', 'pixi.toml', 'package-lock.json'].map(n => [n, sha(path.join(root, n))])); audit.errors = errors; fs.writeFileSync(path.join(output, 'html-audit.json'), JSON.stringify(audit, null, 2) + '\n'); await page.screenshot({ path: path.join(output, 'layout-review.png'), fullPage: true }); diff --git a/2026-usrse/stamped-ai-study/completion-plan.md b/2026-usrse/stamped-ai-study/completion-plan.md index 8322e335..acb9c5d5 100644 --- a/2026-usrse/stamped-ai-study/completion-plan.md +++ b/2026-usrse/stamped-ai-study/completion-plan.md @@ -1,108 +1,86 @@ # Completing the STAMPED in Practice poster -The poster is the target argument for the study, with real example results and open comparison slots. -Its purpose is to help choose the evidence to collect, not to report a moving progress total. -The underlying data exports retain timestamps and hashes for reproducibility. - -## The argument to complete - -We iteratively improve research skills by testing the scientific work they produce. -A versioned research object lets others inspect both the scientific result and the process that changed the skills. -The completed poster should establish which revisions improved scientific adequacy, reproducibility and consistency, show costs and adverse outcomes, and invite new studies that test transfer. -An improved result is an empirical question, not an assumed conclusion. - -| Poster element | Present now | Evidence needed to finish | -| --- | --- | --- | -| Scientific case | NARPS H1; 54 fixed AO86 participant gain-effect maps; linked paper, task and data | Confirm the scientific panel is the intended scope of reproduction: group inference from supplied contrasts | -| Group maps and condensed result | Run 09 maps, correction, regional coefficient and CI, generated from archived artifacts | Choose the final illustrative analysis by a stated rule; keep its exact source revision and inference details | -| Variability across conditions | Spatial agreement of corrected positive maps from all twelve first-iteration runs, on shared coverage | Apply the same extraction to later iterations; retain native support and correction choices | -| Checked outcomes | All 36 allocated runs have slots; available primary judgments populate science, replay and checklist counts | Finish and bind all 36 primary and 12 assigned duplicate judgments; preserve item-level validity and disagreement | -| Iterative improvement | Revision 1 is pinned; two change-to-retest slots | For each revision, link the observed failure, reusable change, and next-round outcome; final round receives no further tuning | -| Evidence and reuse | Links to skills, inputs, source, outputs, plans and figure code | Finish registering and publishing the research objects and assessment evidence; verify a recipient can retrieve each required payload | -| Invitation | Use STAMPED; try the skills; contribute a hypothesis, data and reference result | Select the next studies with researchers at the conference | - -## Continue the experiment; add a consistent extraction layer - -The registered [comparison plan](https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md) already covers scientific adequacy, checklist attainment, operational outcomes, effort and descriptive variability. -These poster requirements do not by themselves require a restart. -Freeze a versioned secondary extraction specification, extract from stopped-worker artifacts, and leave the original work intact. -Record round-one additions as retrospective; apply the same specification to later rounds. - -The spatial figure asks where repeated analyses agree, using corrected-positive frequency within each condition on the intersection of all twelve native search masks. -The t maps agree to numerical precision; the visible difference is in corrected extent, including the choice of Bonferroni or permutation correction. -This descriptive comparison does not estimate an assistance effect, and different native regions should not be pooled as a single vmPFC effect. -A fixed-region mean recomputed from the same 54 input maps would be identical across conditions by construction. -That would be a useful reference value, but an uninformative comparison of the assistance conditions. - -The implemented spatial endpoint is **the number of runs with corrected positive signal on shared coverage**, reported within each condition and iteration. -To extend it consistently: - -1. Verify image geometry, coordinate system and map semantics; do not mix effect, t, z or p maps. -2. Retain each worker's native search mask and corrected positive map, with method, family and alpha. -3. Define the evaluation support by a declared rule, independently of the desired result. -The first-iteration figure uses the intersection of all twelve native masks (184,543 voxels), without resampling. -Retain both common-support size and native-support size, plus each run’s coverage fraction. -Voxels outside a native search mask are unassessed, not negative. -4. Count corrected positive detections across all three runs on that common support. -Preserve per-run native counts alongside the derived maps so effects of the coverage rule remain visible. -5. Use the same geometry, cuts and colour scale across conditions, with run IDs and method labels. -Treat agreement as descriptive; a common mistake can also produce agreement. - -For later revisions, retain the first-iteration support and report each run's coverage of it. -If a run does not assess all of that support, do not count uncovered voxels as negative. -Show coverage separately or recompute a declared intersection across the compared revisions, retaining both the original and revised domains. -Pairwise Dice can be added as a secondary summary; retain its support size and mark both-empty denominators explicitly. - -When agents produce identical effect or t fields on shared support, report that null variation. -Do not manufacture variation by changing the endpoint after seeing the result. -Scientific adequacy, coverage choices and reproducibility can still differ. +The poster presents the argument we want the experiment to establish: iteratively improve research skills by validating the scientific results and research objects they produce. +Open comparison cells identify evidence still needed, while the scientific figures show real completed development work. +The invitation is to use STAMPED, try the skills and contribute studies that test how well the guidance transfers. -## Collect one bound record per run +## Retain development evidence; define the comparison -Retain a machine-readable record linking these fields to immutable artifact hashes and public or declared recipient URLs: +The benchmark's [round-one synthesis](https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1/synthesis) classifies `narps-v1` as development evidence. +Its common prompt already prescribed several assessed practices, and assessment infrastructure made many replay measurements unavailable. +The twelve scientific analyses remain useful examples and evidence for improving both skills and measurement. +They do not populate the poster's pooled comparison. -| Record | Required fields | -| --- | --- | -| Assignment | study, iteration, run ID, condition, replicate, input revision, worker stop commit, skill revision, model/settings | -| Actual skill exposure | discovered, installed and used skills; versions; unsuccessful attempts; evidence | -| Scientific result | participant IDs/exclusions, model/design/weights, effect units, native region, effect/statistic maps, coverage/search mask, spatial reference, correction family/method/alpha, permutations/seed, hypothesis conclusion | -| Native estimate | effect, interval and interval method; corrected regional and whole-brain positive voxels; native mask/region sizes | -| Assessment | judgment ID/role, assessor/procedure revision, adequacy, every checklist item, validity overrides and missing reasons | -| Replay | entry point, generated-output manifest, input hashes before/after, candidate outputs, exact/numerical comparison per file, missing outputs, scope and elapsed time | -| Delivery and effort | worker delivery, coordinator preservation, independent retrieval, intervention, worker elapsed time and measured costs with their scope | -| Secondary extraction | specification/code version, source hashes, evaluation support, alignment, metric/value/units and missing reason | +A cleaner comparison needs a neutral common scientific task, explicit condition-specific skill instructions, a frozen assessment procedure and an end-to-end assessment pilot before launch. +Changing the common instructions or repairing incompatible primary measurements calls for a separately registered comparison, linked to the development findings that motivated it. +Poster preparation does not launch workers or change the registered protocol. + +## Pool retained iterations by condition -Do not make publication of an artifact or coordinator recovery count as worker delivery success. -Keep duplicate and supplementary judgments separate from the first assigned primary. +The poster uses four rows: no supplied skills, find useful skills, find research skills, and use STAMPED skills. +Pool eligible iterations into one summary per condition, giving each independent research run equal weight. +Retain iteration, replicate, skill revision and assessor revision in the linked records. +Use one designated primary judgment per run; supplementary judgments measure disagreement, not additional independent runs. -## Repair measurement collection, not the scientific record +- **Runs:** retained run count and contributing iterations. +- **Science:** proportions supported, qualified, unsupported and unable to assess, with the assessed denominator. +- **Replay:** proportions passed, partial and failed among interpretable measurements, with available and unavailable counts. +- **STAMPED:** average each run's proportion of applicable checklist items marked met, then average those proportions across runs. +Use the same frozen checklist and applicability rules; retain MUST/SHOULD/MAY breakdowns and partial, unmet and unchecked profiles in the evidence. +Do not treat an unavailable measurement as a failed run or silently omit unchecked items to raise a percentage. -The measurement disposition retains first-assigned judgments and marks infrastructure-affected measures unavailable. -The current aggregation scripts and documentation still need to be reconciled with that disposition; an older aggregation rule would exclude original primaries. -Preserve raw item verdicts and their external validity overlays instead of replacing historical grades. +Freeze the precise checklist denominator and missingness rules before collecting the comparison. +If the applicable item set differs materially across runs, show the item profiles alongside the mean and avoid interpreting the mean as certification. +Balanced replicate counts give iterations equal representation; if completion differs, report iteration coverage and avoid silently selecting whichever judgments finished. -For future replay collection, distinguish generated outputs from inputs and authored reports. -An output manifest plus an input-hash guard prevents the replay tool from deleting a required input. -Define file-specific comparisons before evaluation: numerical arrays can have a declared tolerance; timestamps and authored prose need an explicit policy. -Run 09 illustrates why this matters: 12 of 14 candidate files were byte-identical, the JSON timestamp changed, and the report was not regenerated. +Pooling describes overall performance under each condition. +The improvement claim also needs a linked chain for each revision: observed failure, reusable skill change, and the subsequent test. +Preserve those revision-specific records even though the poster table is pooled. +Keep the final evaluation free of further tuning. -These fixes need versioned assessment procedures and consistent interpretation across comparisons. -They do not justify selecting a more favorable reassessment as the primary. -Keep assessor amendments visible in the machine-readable results and stratify affected measures where necessary. +## Complete the scientific panels -## When a new comparison is needed +The original study question remains one sentence. +The replication tests NARPS H1 using 54 fixed AO86 participant gain-effect maps, with a linked paper, task and data. +Select the final illustrative analysis by a stated rule and retain its correction, region, estimate, interval, scientific commit and input hashes. +Do not pool regional coefficients from different anatomical definitions. -Start a newly registered comparison if the desired poster requires a different scientific task, a mandatory common model/region, participant-level preprocessing, substantive changes to worker instructions, or a new primary assessment definition that cannot be applied comparably to existing objects. -That is a design decision to make before launching affected workers. -A new comparison should preserve and link the current study as evidence that motivated it, rather than discard it. +The variability figure shows how many runs detect corrected positive signal on shared coverage, grouped by condition. +The present development example uses the intersection of twelve native search masks and participant coverage: 184,543 voxels, without resampling. +It preserves native correction choices and treats unassessed voxels as missing coverage. +The t fields agree to numerical precision; correction choices account for the displayed extent differences. +Agreement is descriptive and does not by itself establish scientific validity. -## Finish the poster from the records +For later retained iterations, declare the evaluation domain and denominator before extracting results. +Retain native masks, correction family/method/alpha, support size and coverage fraction. +Use common geometry, cuts and colour scales; do not count uncovered voxels as negative. +Report null variation when present instead of changing the endpoint to create variation. -1. Publish and bind each completed run, assessment and payload retrieval receipt. -2. Refresh the assessment export and figure inputs from those exact revisions. -3. Extend the variability figure by iteration using the extraction specification. -4. Replace the two revision slots with the actual changes and their subsequent outcomes. -5. Add a concise comparison result supported by the completed matrix, including null or adverse findings. -6. Rebuild the PDF, inspect its layout, and verify links and QR codes. +All scientific capture, rendering, inputs and outputs belong in the [benchmark workflow](https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/POSTER-FIGURES.md). +The poster imports verified display copies only. -The current figure inputs and assessment export are reproducible saved data, not promises that the later result slots have been measured. +## Collect one bound record per run + +| Record | Required fields | +| --- | --- | +| Assignment | study, iteration, run, condition, replicate, scientific task, inputs, skill revision, model/settings and worker stop commit | +| Skill exposure | discovered, installed and used skills, versions, unsuccessful attempts and supporting evidence | +| Science | participants/exclusions, model/design, effect units, region, maps, native support, spatial reference, correction, permutations/seed and hypothesis conclusion | +| Assessment | primary/supplementary role, assessor/procedure revision, adequacy, every checklist verdict, validity overlays and missing reasons | +| Replay | entry point, generated-output manifest, input hashes before/after, per-file comparison rule, missing outputs, scope and elapsed time | +| Delivery and effort | worker delivery, coordinator preservation, independent retrieval, intervention and measured costs with their scope | +| Secondary extraction | specification/code version, source hashes, evaluation domain, denominator, metric/units and missing reason | + +Generated-output manifests and input-hash guards must keep replay cleanup from deleting required inputs. +Define exact versus numerical comparisons and treatment of timestamps and authored prose before assessment. +Preserve raw judgments and their validity overlays; a more favourable reassessment must not silently replace a primary. +Keep worker delivery distinct from coordinator recovery and publication. + +## Finish from the records + +1. Register the clean comparison and validate its collection and assessment procedures. +2. Publish each retained run, assessment and retrievable payload with its source binding. +3. Generate pooled condition summaries and updated spatial figures in the benchmark. +4. Link each skill revision to the observation that motivated it and its subsequent test. +5. Fill the compact poster table, add the supported comparison finding, and import the benchmark figures. +6. Rebuild and inspect the PDF; verify branch links, payload retrieval and QR codes. diff --git a/2026-usrse/stamped-ai-study/data/assessment-snapshot.json b/2026-usrse/stamped-ai-study/data/assessment-snapshot.json deleted file mode 100644 index 04f45151..00000000 --- a/2026-usrse/stamped-ai-study/data/assessment-snapshot.json +++ /dev/null @@ -1,1862 +0,0 @@ -{ - "allocation_sha256": "3d8674fd7a404bb0020fc5a0bde0b913373e53c6cf9a3663de95f3600f472876", - "comparison_id": "narps-v1", - "coordinator_head": "48b6dcef2cbc918cfc3c4d7c2c6b2bffeb4f8ba5", - "coordinator_url": "https://github.com/leej3/stamped-in-practice", - "disposition_sha256": "f66f7aeb0e9cf4c6fee51ca5b1f5dcf2eba8b1f63944b1fc889aa2f47c7a799c", - "interpretation": { - "checklist": "Descriptive item counts, not a combined score or certification. Partial never counts as met. N/A and invalid/unavailable items are excluded only from the explicitly comparable applicable denominator. Not-checked items remain in that denominator and are shown separately.", - "missing": "Missing assessments and future runs are missing observations, never zero scores. Supplementary judgments cannot replace assigned primaries or duplicates.", - "publication": "Reader links use named branches, verified against advertised remote heads at export. Exact commits and source hashes retain snapshot identity. Branches may later advance. A null public_url means publication of that raw source is not established by this export; result links are independent from assessment publication.", - "replay": "Assessor-infrastructure failures are unavailable, not worker failures. Same-host replay does not establish cross-host portability.", - "retrieval": "Coordinator preservation verifies exact stopped-worker bytes; it is not worker delivery credit or successful scientific execution.", - "scientific_adequacy": "Judge support for the scientific analysis is separate from support for the hypothesis. Infrastructure uncertainty flags preserve the raw scientific classification without regrading it." - }, - "other_judgments": [ - { - "assessment_scope": "amendment-01", - "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", - "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", - "checklist": { - "applicable_items": 29, - "comparable_applicable_items": 27, - "comparable_counts": { - "met": 12, - "not-applicable": 2, - "not-checked": 0, - "partial": 7, - "unmet": 8 - }, - "descriptive_met_denominator": 27, - "descriptive_met_numerator": 12, - "invalid_items": 0, - "item_statuses": { - "stamped-checklist:may/001": "unmet", - "stamped-checklist:may/002": "partial", - "stamped-checklist:may/003": "unmet", - "stamped-checklist:may/004": "not-applicable", - "stamped-checklist:may/005": "partial", - "stamped-checklist:must/001": "met", - "stamped-checklist:must/002": "met", - "stamped-checklist:must/003": "met", - "stamped-checklist:must/004": "met", - "stamped-checklist:must/005": "met", - "stamped-checklist:must/006": "partial", - "stamped-checklist:must/007": "unmet", - "stamped-checklist:must/008": "met", - "stamped-checklist:must/009": "met", - "stamped-checklist:must/010": "partial", - "stamped-checklist:must/011": "met", - "stamped-checklist:must/012": "partial", - "stamped-checklist:must/013": "met", - "stamped-checklist:must/014": "unmet", - "stamped-checklist:must/015": "partial", - "stamped-checklist:must/016": "met", - "stamped-checklist:must/017": "partial", - "stamped-checklist:should/001": "met", - "stamped-checklist:should/002": "unmet", - "stamped-checklist:should/003": "met", - "stamped-checklist:should/004": "unmet", - "stamped-checklist:should/005": "unmet", - "stamped-checklist:should/006": "not-checked", - "stamped-checklist:should/007": "unmet", - "stamped-checklist:should/008": "unmet", - "stamped-checklist:should/009": "not-applicable" - }, - "item_validity_overrides": { - "stamped-checklist:should/004": "unavailable", - "stamped-checklist:should/006": "unavailable" - }, - "raw_counts": { - "met": 12, - "not-applicable": 2, - "not-checked": 1, - "partial": 7, - "unmet": 9 - }, - "raw_retrieval_item": "met", - "retrieval_item_validity": "available", - "source_id": "narps-r1-07-judgment-02/response.json", - "total_items": 31, - "unavailable_items": 2, - "version": "0.3.1" - }, - "evidence_binding": "hashes-match", - "finished_at": "2026-10-16T03:07:04.857598+00:00", - "judgment_id": "narps-r1-07-judgment-02", - "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", - "replay": { - "candidate_outputs": null, - "comparable_status": "unavailable", - "different_outputs": [], - "host_scope": "same-host", - "identical_outputs": null, - "missing_outputs": [], - "raw_status": "unmet", - "source_id": "narps-r1-07-judgment-02/fresh-rerun.json", - "validity": "unavailable", - "within_tolerance_outputs": null - }, - "role": "supplementary", - "run": "narps-r1-07", - "science": { - "display_qualifier": "replay evidence unavailable", - "evidence_dependency": "uncertain", - "reported_adequacy": "qualified", - "source_id": "narps-r1-07-judgment-02/assessment.md" - }, - "status": "completed" - } - ], - "rounds": [ - { - "allocated_duplicate_judgments": 4, - "allocated_primary_judgments": 12, - "allocated_workers": 12, - "completed_primary_judgments": 7, - "final_untuned_evaluation": false, - "iteration": 1, - "ledger_updated_at": "2026-10-16T04:18:51.565573+00:00", - "skills_commit": "c90252a7b9072a4828e9c0b1fa6e5f48409a9cfa", - "status": "recorded-in-progress", - "workers_finished": 12 - }, - { - "allocated_duplicate_judgments": 4, - "allocated_primary_judgments": 12, - "allocated_workers": 12, - "completed_primary_judgments": 0, - "final_untuned_evaluation": false, - "iteration": 2, - "ledger_updated_at": null, - "skills_commit": null, - "status": "planned", - "workers_finished": 0 - }, - { - "allocated_duplicate_judgments": 4, - "allocated_primary_judgments": 12, - "allocated_workers": 12, - "completed_primary_judgments": 0, - "final_untuned_evaluation": true, - "iteration": 3, - "ledger_updated_at": null, - "skills_commit": null, - "status": "planned", - "workers_finished": 0 - } - ], - "rows": [ - { - "condition": "baseline", - "duplicate_assigned": false, - "iteration": 1, - "primary": { - "assessment_scope": "amendment-01", - "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", - "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", - "checklist": { - "applicable_items": 30, - "comparable_applicable_items": 30, - "comparable_counts": { - "met": 9, - "not-applicable": 1, - "not-checked": 0, - "partial": 8, - "unmet": 13 - }, - "descriptive_met_denominator": 30, - "descriptive_met_numerator": 9, - "invalid_items": 0, - "item_statuses": { - "stamped-checklist:may/001": "unmet", - "stamped-checklist:may/002": "unmet", - "stamped-checklist:may/003": "partial", - "stamped-checklist:may/004": "unmet", - "stamped-checklist:may/005": "partial", - "stamped-checklist:must/001": "met", - "stamped-checklist:must/002": "met", - "stamped-checklist:must/003": "partial", - "stamped-checklist:must/004": "met", - "stamped-checklist:must/005": "met", - "stamped-checklist:must/006": "partial", - "stamped-checklist:must/007": "unmet", - "stamped-checklist:must/008": "met", - "stamped-checklist:must/009": "met", - "stamped-checklist:must/010": "partial", - "stamped-checklist:must/011": "partial", - "stamped-checklist:must/012": "partial", - "stamped-checklist:must/013": "met", - "stamped-checklist:must/014": "unmet", - "stamped-checklist:must/015": "unmet", - "stamped-checklist:must/016": "met", - "stamped-checklist:must/017": "unmet", - "stamped-checklist:should/001": "met", - "stamped-checklist:should/002": "unmet", - "stamped-checklist:should/003": "partial", - "stamped-checklist:should/004": "unmet", - "stamped-checklist:should/005": "unmet", - "stamped-checklist:should/006": "unmet", - "stamped-checklist:should/007": "unmet", - "stamped-checklist:should/008": "unmet", - "stamped-checklist:should/009": "not-applicable" - }, - "item_validity_overrides": {}, - "raw_counts": { - "met": 9, - "not-applicable": 1, - "not-checked": 0, - "partial": 8, - "unmet": 13 - }, - "raw_retrieval_item": "met", - "retrieval_item_validity": "available", - "source_id": "narps-r1-01-judgment-01/response.json", - "total_items": 31, - "unavailable_items": 0, - "version": "0.3.1" - }, - "evidence_binding": "hashes-match", - "finished_at": "2026-10-16T03:49:19.977054+00:00", - "judgment_id": "narps-r1-01-judgment-01", - "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", - "replay": { - "candidate_outputs": 11, - "comparable_status": "partial", - "different_outputs": [ - "results/analysis_summary.json" - ], - "host_scope": "same-host", - "identical_outputs": 10, - "missing_outputs": [], - "raw_status": "partial", - "source_id": "narps-r1-01-judgment-01/fresh-rerun.json", - "validity": "available", - "within_tolerance_outputs": 0 - }, - "role": "primary", - "science": { - "display_qualifier": null, - "evidence_dependency": "no-uncertainty-overlay-recorded", - "reported_adequacy": "qualified", - "source_id": "narps-r1-01-judgment-01/assessment.md" - }, - "status": "completed" - }, - "replicate": 1, - "result_branch": "codex/narps-r1-01", - "result_branch_verified_commit": "d90a335549f43007eac05902859224e6ce2eaada", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", - "retrieval": { - "annex_paths_verified": 74, - "completed_at": "2026-10-16T02:21:14.766149+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-01/recipient-check.json", - "verified": true, - "worker_delivery_credit": false - }, - "run": "narps-r1-01", - "status": "judgments-awaiting-retention", - "worker_elapsed_seconds": 948.1464351660106, - "worker_finished_at": "2026-10-16T02:12:30.559106+00:00", - "worker_result_commit": "d90a335549f43007eac05902859224e6ce2eaada" - }, - { - "condition": "baseline", - "duplicate_assigned": false, - "iteration": 1, - "primary": { - "assessment_scope": "amendment-01", - "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", - "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", - "checklist": { - "applicable_items": 30, - "comparable_applicable_items": 29, - "comparable_counts": { - "met": 11, - "not-applicable": 1, - "not-checked": 0, - "partial": 6, - "unmet": 12 - }, - "descriptive_met_denominator": 29, - "descriptive_met_numerator": 11, - "invalid_items": 0, - "item_statuses": { - "stamped-checklist:may/001": "unmet", - "stamped-checklist:may/002": "unmet", - "stamped-checklist:may/003": "unmet", - "stamped-checklist:may/004": "unmet", - "stamped-checklist:may/005": "partial", - "stamped-checklist:must/001": "met", - "stamped-checklist:must/002": "met", - "stamped-checklist:must/003": "met", - "stamped-checklist:must/004": "met", - "stamped-checklist:must/005": "met", - "stamped-checklist:must/006": "partial", - "stamped-checklist:must/007": "unmet", - "stamped-checklist:must/008": "met", - "stamped-checklist:must/009": "met", - "stamped-checklist:must/010": "met", - "stamped-checklist:must/011": "partial", - "stamped-checklist:must/012": "partial", - "stamped-checklist:must/013": "met", - "stamped-checklist:must/014": "unmet", - "stamped-checklist:must/015": "partial", - "stamped-checklist:must/016": "partial", - "stamped-checklist:must/017": "unmet", - "stamped-checklist:should/001": "met", - "stamped-checklist:should/002": "unmet", - "stamped-checklist:should/003": "met", - "stamped-checklist:should/004": "not-checked", - "stamped-checklist:should/005": "unmet", - "stamped-checklist:should/006": "unmet", - "stamped-checklist:should/007": "unmet", - "stamped-checklist:should/008": "unmet", - "stamped-checklist:should/009": "not-applicable" - }, - "item_validity_overrides": { - "stamped-checklist:should/004": "unavailable" - }, - "raw_counts": { - "met": 11, - "not-applicable": 1, - "not-checked": 1, - "partial": 6, - "unmet": 12 - }, - "raw_retrieval_item": "partial", - "retrieval_item_validity": "available", - "source_id": "narps-r1-02-judgment-01/response.json", - "total_items": 31, - "unavailable_items": 1, - "version": "0.3.1" - }, - "evidence_binding": "hashes-match", - "finished_at": "2026-10-16T03:41:57.631311+00:00", - "judgment_id": "narps-r1-02-judgment-01", - "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", - "replay": { - "candidate_outputs": null, - "comparable_status": "unavailable", - "different_outputs": [], - "host_scope": "same-host", - "identical_outputs": null, - "missing_outputs": [], - "raw_status": "unmet", - "source_id": "narps-r1-02-judgment-01/fresh-rerun.json", - "validity": "unavailable", - "within_tolerance_outputs": null - }, - "role": "primary", - "science": { - "display_qualifier": "replay evidence unavailable", - "evidence_dependency": "uncertain", - "reported_adequacy": "qualified", - "source_id": "narps-r1-02-judgment-01/assessment.md" - }, - "status": "completed" - }, - "replicate": 2, - "result_branch": "codex/narps-r1-02", - "result_branch_verified_commit": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", - "retrieval": { - "annex_paths_verified": 56, - "completed_at": "2026-10-16T02:15:07.880399+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-02/recipient-check.json", - "verified": true, - "worker_delivery_credit": false - }, - "run": "narps-r1-02", - "status": "judgments-awaiting-retention", - "worker_elapsed_seconds": 1061.4433347079903, - "worker_finished_at": "2026-10-16T02:12:01.209722+00:00", - "worker_result_commit": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4" - }, - { - "condition": "baseline", - "duplicate_assigned": true, - "iteration": 1, - "primary": { - "assessment_scope": "amendment-01", - "checklist": null, - "finished_at": null, - "judgment_id": "narps-r1-03-judgment-01", - "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", - "replay": null, - "role": "primary", - "science": null, - "status": "running" - }, - "replicate": 3, - "result_branch": "codex/narps-r1-03", - "result_branch_verified_commit": "abf95b00c02fb55d16c4d269926c1428cedc0574", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", - "retrieval": { - "annex_paths_verified": 58, - "completed_at": "2026-10-16T03:20:22.429031+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-03/recipient-check.json", - "verified": true, - "worker_delivery_credit": false - }, - "run": "narps-r1-03", - "status": "judgment-running", - "worker_elapsed_seconds": 372.9900593330385, - "worker_finished_at": "2026-10-16T03:15:43.869438+00:00", - "worker_result_commit": "abf95b00c02fb55d16c4d269926c1428cedc0574" - }, - { - "condition": "discover-general", - "duplicate_assigned": true, - "iteration": 1, - "primary": { - "assessment_scope": "amendment-01", - "checklist": null, - "finished_at": null, - "judgment_id": "narps-r1-04-judgment-01", - "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", - "replay": null, - "role": "primary", - "science": null, - "status": "running" - }, - "replicate": 1, - "result_branch": "codex/narps-r1-04", - "result_branch_verified_commit": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", - "retrieval": { - "annex_paths_verified": 58, - "completed_at": "2026-10-16T03:46:09.952987+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-04/recipient-check.json", - "verified": true, - "worker_delivery_credit": false - }, - "run": "narps-r1-04", - "status": "judgment-running", - "worker_elapsed_seconds": 513.7589724160498, - "worker_finished_at": "2026-10-16T03:42:48.314637+00:00", - "worker_result_commit": "a424c3e8ae47f9208fa661fc4f974f6b187acb00" - }, - { - "condition": "discover-general", - "duplicate_assigned": false, - "iteration": 1, - "primary": { - "assessment_scope": "amendment-01", - "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", - "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", - "checklist": { - "applicable_items": 30, - "comparable_applicable_items": 28, - "comparable_counts": { - "met": 11, - "not-applicable": 1, - "not-checked": 0, - "partial": 10, - "unmet": 7 - }, - "descriptive_met_denominator": 28, - "descriptive_met_numerator": 11, - "invalid_items": 0, - "item_statuses": { - "stamped-checklist:may/001": "unmet", - "stamped-checklist:may/002": "partial", - "stamped-checklist:may/003": "partial", - "stamped-checklist:may/004": "met", - "stamped-checklist:may/005": "met", - "stamped-checklist:must/001": "met", - "stamped-checklist:must/002": "met", - "stamped-checklist:must/003": "met", - "stamped-checklist:must/004": "met", - "stamped-checklist:must/005": "met", - "stamped-checklist:must/006": "partial", - "stamped-checklist:must/007": "partial", - "stamped-checklist:must/008": "partial", - "stamped-checklist:must/009": "partial", - "stamped-checklist:must/010": "met", - "stamped-checklist:must/011": "partial", - "stamped-checklist:must/012": "partial", - "stamped-checklist:must/013": "met", - "stamped-checklist:must/014": "unmet", - "stamped-checklist:must/015": "unmet", - "stamped-checklist:must/016": "partial", - "stamped-checklist:must/017": "partial", - "stamped-checklist:should/001": "met", - "stamped-checklist:should/002": "unmet", - "stamped-checklist:should/003": "met", - "stamped-checklist:should/004": "not-checked", - "stamped-checklist:should/005": "unmet", - "stamped-checklist:should/006": "unmet", - "stamped-checklist:should/007": "unmet", - "stamped-checklist:should/008": "unmet", - "stamped-checklist:should/009": "not-applicable" - }, - "item_validity_overrides": { - "stamped-checklist:should/004": "unavailable", - "stamped-checklist:should/006": "unavailable" - }, - "raw_counts": { - "met": 11, - "not-applicable": 1, - "not-checked": 1, - "partial": 10, - "unmet": 8 - }, - "raw_retrieval_item": "partial", - "retrieval_item_validity": "available", - "source_id": "narps-r1-05-judgment-01/response.json", - "total_items": 31, - "unavailable_items": 2, - "version": "0.3.1" - }, - "evidence_binding": "hashes-match", - "finished_at": "2026-10-16T04:12:22.556274+00:00", - "judgment_id": "narps-r1-05-judgment-01", - "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", - "replay": { - "candidate_outputs": null, - "comparable_status": "unavailable", - "different_outputs": [], - "host_scope": "same-host", - "identical_outputs": null, - "missing_outputs": [], - "raw_status": "unmet", - "source_id": "narps-r1-05-judgment-01/fresh-rerun.json", - "validity": "unavailable", - "within_tolerance_outputs": null - }, - "role": "primary", - "science": { - "display_qualifier": "replay evidence unavailable", - "evidence_dependency": "uncertain", - "reported_adequacy": "qualified", - "source_id": "narps-r1-05-judgment-01/assessment.md" - }, - "status": "completed" - }, - "replicate": 2, - "result_branch": "codex/narps-r1-05", - "result_branch_verified_commit": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", - "retrieval": { - "annex_paths_verified": 57, - "completed_at": "2026-10-16T03:34:42.800335+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-05/recipient-check.json", - "verified": true, - "worker_delivery_credit": false - }, - "run": "narps-r1-05", - "status": "judgments-awaiting-retention", - "worker_elapsed_seconds": 1339.5679777499754, - "worker_finished_at": "2026-10-16T03:30:04.516025+00:00", - "worker_result_commit": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9" - }, - { - "condition": "discover-general", - "duplicate_assigned": false, - "iteration": 1, - "primary": { - "assessment_scope": "amendment-01", - "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", - "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", - "checklist": { - "applicable_items": 30, - "comparable_applicable_items": 29, - "comparable_counts": { - "met": 15, - "not-applicable": 1, - "not-checked": 0, - "partial": 4, - "unmet": 10 - }, - "descriptive_met_denominator": 29, - "descriptive_met_numerator": 15, - "invalid_items": 0, - "item_statuses": { - "stamped-checklist:may/001": "unmet", - "stamped-checklist:may/002": "met", - "stamped-checklist:may/003": "partial", - "stamped-checklist:may/004": "met", - "stamped-checklist:may/005": "met", - "stamped-checklist:must/001": "met", - "stamped-checklist:must/002": "met", - "stamped-checklist:must/003": "met", - "stamped-checklist:must/004": "met", - "stamped-checklist:must/005": "met", - "stamped-checklist:must/006": "unmet", - "stamped-checklist:must/007": "unmet", - "stamped-checklist:must/008": "met", - "stamped-checklist:must/009": "met", - "stamped-checklist:must/010": "met", - "stamped-checklist:must/011": "partial", - "stamped-checklist:must/012": "partial", - "stamped-checklist:must/013": "met", - "stamped-checklist:must/014": "unmet", - "stamped-checklist:must/015": "unmet", - "stamped-checklist:must/016": "met", - "stamped-checklist:must/017": "partial", - "stamped-checklist:should/001": "met", - "stamped-checklist:should/002": "unmet", - "stamped-checklist:should/003": "met", - "stamped-checklist:should/004": "not-checked", - "stamped-checklist:should/005": "unmet", - "stamped-checklist:should/006": "unmet", - "stamped-checklist:should/007": "unmet", - "stamped-checklist:should/008": "unmet", - "stamped-checklist:should/009": "not-applicable" - }, - "item_validity_overrides": { - "stamped-checklist:should/004": "unavailable" - }, - "raw_counts": { - "met": 15, - "not-applicable": 1, - "not-checked": 1, - "partial": 4, - "unmet": 10 - }, - "raw_retrieval_item": "met", - "retrieval_item_validity": "available", - "source_id": "narps-r1-06-judgment-01/response.json", - "total_items": 31, - "unavailable_items": 1, - "version": "0.3.1" - }, - "evidence_binding": "hashes-match", - "finished_at": "2026-10-16T03:58:50.326685+00:00", - "judgment_id": "narps-r1-06-judgment-01", - "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", - "replay": { - "candidate_outputs": null, - "comparable_status": "unavailable", - "different_outputs": [], - "host_scope": "same-host", - "identical_outputs": null, - "missing_outputs": [], - "raw_status": "unmet", - "source_id": "narps-r1-06-judgment-01/fresh-rerun.json", - "validity": "unavailable", - "within_tolerance_outputs": null - }, - "role": "primary", - "science": { - "display_qualifier": "replay evidence unavailable", - "evidence_dependency": "uncertain", - "reported_adequacy": "qualified", - "source_id": "narps-r1-06-judgment-01/assessment.md" - }, - "status": "completed" - }, - "replicate": 3, - "result_branch": "codex/narps-r1-06", - "result_branch_verified_commit": "32d9cabf7b5d041f9efb97830bf5279068809357", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", - "retrieval": { - "annex_paths_verified": 56, - "completed_at": "2026-10-16T02:29:26.846873+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-06/recipient-check.json", - "verified": true, - "worker_delivery_credit": false - }, - "run": "narps-r1-06", - "status": "judgments-awaiting-retention", - "worker_elapsed_seconds": 454.0117076250026, - "worker_finished_at": "2026-10-16T02:22:55.994726+00:00", - "worker_result_commit": "32d9cabf7b5d041f9efb97830bf5279068809357" - }, - { - "condition": "discover-science", - "duplicate_assigned": true, - "iteration": 1, - "primary": { - "assessment_scope": "original-procedure", - "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", - "assessor_source_commit": "0208f82504f15b82b7582f34143ab889dd52c68d", - "checklist": { - "applicable_items": 30, - "comparable_applicable_items": 28, - "comparable_counts": { - "met": 10, - "not-applicable": 1, - "not-checked": 0, - "partial": 8, - "unmet": 10 - }, - "descriptive_met_denominator": 28, - "descriptive_met_numerator": 10, - "invalid_items": 0, - "item_statuses": { - "stamped-checklist:may/001": "unmet", - "stamped-checklist:may/002": "partial", - "stamped-checklist:may/003": "partial", - "stamped-checklist:may/004": "unmet", - "stamped-checklist:may/005": "partial", - "stamped-checklist:must/001": "met", - "stamped-checklist:must/002": "met", - "stamped-checklist:must/003": "met", - "stamped-checklist:must/004": "met", - "stamped-checklist:must/005": "met", - "stamped-checklist:must/006": "partial", - "stamped-checklist:must/007": "unmet", - "stamped-checklist:must/008": "met", - "stamped-checklist:must/009": "met", - "stamped-checklist:must/010": "partial", - "stamped-checklist:must/011": "partial", - "stamped-checklist:must/012": "partial", - "stamped-checklist:must/013": "met", - "stamped-checklist:must/014": "unmet", - "stamped-checklist:must/015": "unmet", - "stamped-checklist:must/016": "partial", - "stamped-checklist:must/017": "partial", - "stamped-checklist:should/001": "met", - "stamped-checklist:should/002": "unmet", - "stamped-checklist:should/003": "met", - "stamped-checklist:should/004": "not-checked", - "stamped-checklist:should/005": "unmet", - "stamped-checklist:should/006": "unmet", - "stamped-checklist:should/007": "unmet", - "stamped-checklist:should/008": "unmet", - "stamped-checklist:should/009": "not-applicable" - }, - "item_validity_overrides": { - "stamped-checklist:must/016": "unavailable", - "stamped-checklist:should/004": "unavailable" - }, - "raw_counts": { - "met": 10, - "not-applicable": 1, - "not-checked": 1, - "partial": 9, - "unmet": 10 - }, - "raw_retrieval_item": "partial", - "retrieval_item_validity": "unavailable", - "source_id": "narps-r1-07-judgment-01/response.json", - "total_items": 31, - "unavailable_items": 2, - "version": "0.3.1" - }, - "evidence_binding": "hashes-match", - "finished_at": "2026-10-16T02:23:34.439766+00:00", - "judgment_id": "narps-r1-07-judgment-01", - "procedure_sha256": "c6f01b00ee6a4469be70eb8c85cc8a2553e6ef616e3b7fb8bc46707acaae4bd4", - "replay": { - "candidate_outputs": null, - "comparable_status": "unavailable", - "different_outputs": [], - "host_scope": "same-host", - "identical_outputs": null, - "missing_outputs": [], - "raw_status": "not-checked", - "source_id": "narps-r1-07-judgment-01/fresh-rerun.json", - "validity": "unavailable", - "within_tolerance_outputs": null - }, - "role": "primary", - "science": { - "display_qualifier": "replay evidence unavailable", - "evidence_dependency": "uncertain", - "reported_adequacy": "qualified", - "source_id": "narps-r1-07-judgment-01/assessment.md" - }, - "status": "completed" - }, - "replicate": 1, - "result_branch": "codex/narps-r1-07", - "result_branch_verified_commit": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", - "retrieval": { - "annex_paths_verified": 64, - "completed_at": "2026-10-16T02:00:35.748266+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-07/recipient-check.json", - "verified": true, - "worker_delivery_credit": false - }, - "run": "narps-r1-07", - "status": "judgments-awaiting-retention", - "worker_elapsed_seconds": 659.525256749941, - "worker_finished_at": "2026-10-16T01:50:22.126181+00:00", - "worker_result_commit": "f30190d8144a9e15acfa1c0d973eadf0d655c83c" - }, - { - "condition": "discover-science", - "duplicate_assigned": false, - "iteration": 1, - "primary": { - "assessment_scope": "original-procedure", - "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", - "assessor_source_commit": "0208f82504f15b82b7582f34143ab889dd52c68d", - "checklist": { - "applicable_items": 30, - "comparable_applicable_items": 27, - "comparable_counts": { - "met": 15, - "not-applicable": 1, - "not-checked": 0, - "partial": 5, - "unmet": 7 - }, - "descriptive_met_denominator": 27, - "descriptive_met_numerator": 15, - "invalid_items": 0, - "item_statuses": { - "stamped-checklist:may/001": "unmet", - "stamped-checklist:may/002": "met", - "stamped-checklist:may/003": "met", - "stamped-checklist:may/004": "met", - "stamped-checklist:may/005": "met", - "stamped-checklist:must/001": "met", - "stamped-checklist:must/002": "met", - "stamped-checklist:must/003": "met", - "stamped-checklist:must/004": "met", - "stamped-checklist:must/005": "met", - "stamped-checklist:must/006": "unmet", - "stamped-checklist:must/007": "partial", - "stamped-checklist:must/008": "met", - "stamped-checklist:must/009": "met", - "stamped-checklist:must/010": "met", - "stamped-checklist:must/011": "partial", - "stamped-checklist:must/012": "partial", - "stamped-checklist:must/013": "met", - "stamped-checklist:must/014": "unmet", - "stamped-checklist:must/015": "unmet", - "stamped-checklist:must/016": "partial", - "stamped-checklist:must/017": "partial", - "stamped-checklist:should/001": "met", - "stamped-checklist:should/002": "unmet", - "stamped-checklist:should/003": "met", - "stamped-checklist:should/004": "unmet", - "stamped-checklist:should/005": "unmet", - "stamped-checklist:should/006": "unmet", - "stamped-checklist:should/007": "partial", - "stamped-checklist:should/008": "unmet", - "stamped-checklist:should/009": "not-applicable" - }, - "item_validity_overrides": { - "stamped-checklist:must/016": "unavailable", - "stamped-checklist:should/004": "unavailable", - "stamped-checklist:should/006": "unavailable" - }, - "raw_counts": { - "met": 15, - "not-applicable": 1, - "not-checked": 0, - "partial": 6, - "unmet": 9 - }, - "raw_retrieval_item": "partial", - "retrieval_item_validity": "unavailable", - "source_id": "narps-r1-08-judgment-01/response.json", - "total_items": 31, - "unavailable_items": 3, - "version": "0.3.1" - }, - "evidence_binding": "hashes-match", - "finished_at": "2026-10-16T02:28:51.611975+00:00", - "judgment_id": "narps-r1-08-judgment-01", - "procedure_sha256": "c6f01b00ee6a4469be70eb8c85cc8a2553e6ef616e3b7fb8bc46707acaae4bd4", - "replay": { - "candidate_outputs": null, - "comparable_status": "unavailable", - "different_outputs": [], - "host_scope": "same-host", - "identical_outputs": null, - "missing_outputs": [], - "raw_status": "not-checked", - "source_id": "narps-r1-08-judgment-01/fresh-rerun.json", - "validity": "unavailable", - "within_tolerance_outputs": null - }, - "role": "primary", - "science": { - "display_qualifier": "replay evidence unavailable", - "evidence_dependency": "uncertain", - "reported_adequacy": "not supported", - "source_id": "narps-r1-08-judgment-01/assessment.md" - }, - "status": "completed" - }, - "replicate": 2, - "result_branch": "codex/narps-r1-08", - "result_branch_verified_commit": "42e957201315aa8221ba60fbe614119e22639ce8", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", - "retrieval": { - "annex_paths_verified": 72, - "completed_at": "2026-10-16T02:09:34.813185+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-08/recipient-check.json", - "verified": true, - "worker_delivery_credit": false - }, - "run": "narps-r1-08", - "status": "judgments-awaiting-retention", - "worker_elapsed_seconds": 788.849569916958, - "worker_finished_at": "2026-10-16T01:52:40.705473+00:00", - "worker_result_commit": "42e957201315aa8221ba60fbe614119e22639ce8" - }, - { - "condition": "discover-science", - "duplicate_assigned": false, - "iteration": 1, - "primary": { - "assessment_scope": "amendment-01", - "assessor_environment_commit": "3552d5003a2485b6405805236d5c54e7ed42f097", - "assessor_source_commit": "b86e37ff9115e37541fd47aca73f49e13b5110bb", - "checklist": { - "applicable_items": 30, - "comparable_applicable_items": 30, - "comparable_counts": { - "met": 13, - "not-applicable": 1, - "not-checked": 1, - "partial": 6, - "unmet": 10 - }, - "descriptive_met_denominator": 30, - "descriptive_met_numerator": 13, - "invalid_items": 0, - "item_statuses": { - "stamped-checklist:may/001": "unmet", - "stamped-checklist:may/002": "met", - "stamped-checklist:may/003": "partial", - "stamped-checklist:may/004": "met", - "stamped-checklist:may/005": "met", - "stamped-checklist:must/001": "met", - "stamped-checklist:must/002": "met", - "stamped-checklist:must/003": "met", - "stamped-checklist:must/004": "met", - "stamped-checklist:must/005": "met", - "stamped-checklist:must/006": "unmet", - "stamped-checklist:must/007": "unmet", - "stamped-checklist:must/008": "met", - "stamped-checklist:must/009": "met", - "stamped-checklist:must/010": "partial", - "stamped-checklist:must/011": "partial", - "stamped-checklist:must/012": "partial", - "stamped-checklist:must/013": "met", - "stamped-checklist:must/014": "unmet", - "stamped-checklist:must/015": "partial", - "stamped-checklist:must/016": "not-checked", - "stamped-checklist:must/017": "partial", - "stamped-checklist:should/001": "met", - "stamped-checklist:should/002": "unmet", - "stamped-checklist:should/003": "met", - "stamped-checklist:should/004": "unmet", - "stamped-checklist:should/005": "unmet", - "stamped-checklist:should/006": "unmet", - "stamped-checklist:should/007": "unmet", - "stamped-checklist:should/008": "unmet", - "stamped-checklist:should/009": "not-applicable" - }, - "item_validity_overrides": {}, - "raw_counts": { - "met": 13, - "not-applicable": 1, - "not-checked": 1, - "partial": 6, - "unmet": 10 - }, - "raw_retrieval_item": "not-checked", - "retrieval_item_validity": "available", - "source_id": "narps-r1-09-judgment-01/response.json", - "total_items": 31, - "unavailable_items": 0, - "version": "0.3.1" - }, - "evidence_binding": "hashes-match", - "finished_at": "2026-10-16T03:31:45.402132+00:00", - "judgment_id": "narps-r1-09-judgment-01", - "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", - "replay": { - "candidate_outputs": 14, - "comparable_status": "partial", - "different_outputs": [ - "results/results.json" - ], - "host_scope": "same-host", - "identical_outputs": 12, - "missing_outputs": [ - "results/report.md" - ], - "raw_status": "partial", - "source_id": "narps-r1-09-judgment-01/fresh-rerun.json", - "validity": "available", - "within_tolerance_outputs": 0 - }, - "role": "primary", - "science": { - "display_qualifier": null, - "evidence_dependency": "no-uncertainty-overlay-recorded", - "reported_adequacy": "supported", - "source_id": "narps-r1-09-judgment-01/assessment.md" - }, - "status": "completed" - }, - "replicate": 3, - "result_branch": "codex/narps-r1-09", - "result_branch_verified_commit": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", - "retrieval": { - "annex_paths_verified": 59, - "completed_at": "2026-10-16T02:19:12.725131+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-09/recipient-check.json", - "verified": true, - "worker_delivery_credit": false - }, - "run": "narps-r1-09", - "status": "judgments-awaiting-retention", - "worker_elapsed_seconds": 2262.796634749975, - "worker_finished_at": "2026-10-16T02:17:26.482423+00:00", - "worker_result_commit": "2ad7c466615141d11b81720ff97d61c2d7c23f73" - }, - { - "condition": "stamped-explicit", - "duplicate_assigned": false, - "iteration": 1, - "primary": null, - "replicate": 1, - "result_branch": "codex/narps-r1-10", - "result_branch_verified_commit": "62d247e48e69978d294dc39175d53f9aa638ce0d", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", - "retrieval": null, - "run": "narps-r1-10", - "status": "worker-completed-awaiting-judgment", - "worker_elapsed_seconds": 750.6059608750511, - "worker_finished_at": "2026-10-16T04:16:59.562976+00:00", - "worker_result_commit": "62d247e48e69978d294dc39175d53f9aa638ce0d" - }, - { - "condition": "stamped-explicit", - "duplicate_assigned": true, - "iteration": 1, - "primary": null, - "replicate": 2, - "result_branch": "codex/narps-r1-11", - "result_branch_verified_commit": "284c8768140cbd816d983f8bd2697bd9b541eb25", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", - "retrieval": null, - "run": "narps-r1-11", - "status": "worker-completed-awaiting-judgment", - "worker_elapsed_seconds": 1902.2213631250197, - "worker_finished_at": "2026-10-16T04:17:40.821543+00:00", - "worker_result_commit": "284c8768140cbd816d983f8bd2697bd9b541eb25" - }, - { - "condition": "stamped-explicit", - "duplicate_assigned": false, - "iteration": 1, - "primary": { - "assessment_scope": "amendment-01", - "checklist": null, - "finished_at": null, - "judgment_id": "narps-r1-12-judgment-01", - "procedure_sha256": "5dfdfa07f8e9488a79bbddb27df75a76ad5484941ac1d0efb197b0b3126994b5", - "replay": null, - "role": "primary", - "science": null, - "status": "running" - }, - "replicate": 3, - "result_branch": "codex/narps-r1-12", - "result_branch_verified_commit": "40164f018638f6fc744881a91a70d3257b77985f", - "result_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", - "retrieval": { - "annex_paths_verified": null, - "completed_at": "2026-10-16T04:00:29.253232+00:00", - "scientific_execution": false, - "scope": "coordinator-preservation-of-exact-worker-stop", - "source_id": "narps-r1-12/recipient-check.json", - "verified": false, - "worker_delivery_credit": false - }, - "run": "narps-r1-12", - "status": "judgment-running", - "worker_elapsed_seconds": 2386.7586984999944, - "worker_finished_at": "2026-10-16T03:59:01.080107+00:00", - "worker_result_commit": "40164f018638f6fc744881a91a70d3257b77985f" - }, - { - "condition": "baseline", - "duplicate_assigned": false, - "iteration": 2, - "primary": null, - "replicate": 1, - "result_branch": "codex/narps-r2-01", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-01", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "baseline", - "duplicate_assigned": true, - "iteration": 2, - "primary": null, - "replicate": 2, - "result_branch": "codex/narps-r2-02", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-02", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "baseline", - "duplicate_assigned": false, - "iteration": 2, - "primary": null, - "replicate": 3, - "result_branch": "codex/narps-r2-03", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-03", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-general", - "duplicate_assigned": false, - "iteration": 2, - "primary": null, - "replicate": 1, - "result_branch": "codex/narps-r2-04", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-04", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-general", - "duplicate_assigned": true, - "iteration": 2, - "primary": null, - "replicate": 2, - "result_branch": "codex/narps-r2-05", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-05", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-general", - "duplicate_assigned": false, - "iteration": 2, - "primary": null, - "replicate": 3, - "result_branch": "codex/narps-r2-06", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-06", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-science", - "duplicate_assigned": false, - "iteration": 2, - "primary": null, - "replicate": 1, - "result_branch": "codex/narps-r2-07", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-07", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-science", - "duplicate_assigned": true, - "iteration": 2, - "primary": null, - "replicate": 2, - "result_branch": "codex/narps-r2-08", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-08", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-science", - "duplicate_assigned": false, - "iteration": 2, - "primary": null, - "replicate": 3, - "result_branch": "codex/narps-r2-09", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-09", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "stamped-explicit", - "duplicate_assigned": false, - "iteration": 2, - "primary": null, - "replicate": 1, - "result_branch": "codex/narps-r2-10", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-10", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "stamped-explicit", - "duplicate_assigned": false, - "iteration": 2, - "primary": null, - "replicate": 2, - "result_branch": "codex/narps-r2-11", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-11", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "stamped-explicit", - "duplicate_assigned": true, - "iteration": 2, - "primary": null, - "replicate": 3, - "result_branch": "codex/narps-r2-12", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r2-12", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "baseline", - "duplicate_assigned": false, - "iteration": 3, - "primary": null, - "replicate": 1, - "result_branch": "codex/narps-r3-01", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-01", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "baseline", - "duplicate_assigned": true, - "iteration": 3, - "primary": null, - "replicate": 2, - "result_branch": "codex/narps-r3-02", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-02", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "baseline", - "duplicate_assigned": false, - "iteration": 3, - "primary": null, - "replicate": 3, - "result_branch": "codex/narps-r3-03", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-03", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-general", - "duplicate_assigned": false, - "iteration": 3, - "primary": null, - "replicate": 1, - "result_branch": "codex/narps-r3-04", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-04", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-general", - "duplicate_assigned": true, - "iteration": 3, - "primary": null, - "replicate": 2, - "result_branch": "codex/narps-r3-05", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-05", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-general", - "duplicate_assigned": false, - "iteration": 3, - "primary": null, - "replicate": 3, - "result_branch": "codex/narps-r3-06", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-06", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-science", - "duplicate_assigned": false, - "iteration": 3, - "primary": null, - "replicate": 1, - "result_branch": "codex/narps-r3-07", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-07", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-science", - "duplicate_assigned": false, - "iteration": 3, - "primary": null, - "replicate": 2, - "result_branch": "codex/narps-r3-08", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-08", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "discover-science", - "duplicate_assigned": true, - "iteration": 3, - "primary": null, - "replicate": 3, - "result_branch": "codex/narps-r3-09", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-09", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "stamped-explicit", - "duplicate_assigned": true, - "iteration": 3, - "primary": null, - "replicate": 1, - "result_branch": "codex/narps-r3-10", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-10", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "stamped-explicit", - "duplicate_assigned": false, - "iteration": 3, - "primary": null, - "replicate": 2, - "result_branch": "codex/narps-r3-11", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-11", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - }, - { - "condition": "stamped-explicit", - "duplicate_assigned": false, - "iteration": 3, - "primary": null, - "replicate": 3, - "result_branch": "codex/narps-r3-12", - "result_branch_verified_commit": null, - "result_url": null, - "retrieval": null, - "run": "narps-r3-12", - "status": "planned", - "worker_elapsed_seconds": null, - "worker_finished_at": null, - "worker_result_commit": null - } - ], - "schema_version": 1, - "snapshot_at_eastern": "2026-10-16T00:30:44.651067-04:00", - "snapshot_at_utc": "2026-10-16T04:30:44.651067+00:00", - "sources": { - "allocation.json": { - "bytes": 5574, - "coordinator_path": "iterations/narps-v1/allocation.json", - "matches_coordinator_head": true, - "public_branch": "main", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/allocation.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "48b6dcef2cbc918cfc3c4d7c2c6b2bffeb4f8ba5", - "sha256": "3d8674fd7a404bb0020fc5a0bde0b913373e53c6cf9a3663de95f3600f472876" - }, - "measurement-disposition-01.json": { - "bytes": 28815, - "coordinator_path": "iterations/narps-v1/measurement-disposition-01.json", - "matches_coordinator_head": false, - "public_url": null, - "sha256": "f66f7aeb0e9cf4c6fee51ca5b1f5dcf2eba8b1f63944b1fc889aa2f47c7a799c" - }, - "narps-r1-01-judgment-01/assessment.md": { - "bytes": 11790, - "public_branch": "codex/narps-r1-01-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-assessment.md", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "63bf805f04d3aa221fe0807f9f86ebe81c817b20", - "sha256": "269618a5c0ecf4be1d433da2a23e485bba6dbdef7b9b298ae2272a0123188926" - }, - "narps-r1-01-judgment-01/fresh-rerun.json": { - "bytes": 13583, - "public_branch": "codex/narps-r1-01-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-fresh-rerun.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "63bf805f04d3aa221fe0807f9f86ebe81c817b20", - "sha256": "aefd4bead07b9dcbd14624ed298e72efdc3f2ed452a5fcbac83f288775c3cc6f" - }, - "narps-r1-01-judgment-01/native-result.json": { - "bytes": 5607, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "7b7f4f1c3c05cb027eac7593571da6fc5da3b971bcaffbdcc5c97e8cc8bf5d51" - }, - "narps-r1-01-judgment-01/output-binding.json": { - "bytes": 2056, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "475214249b78c11b839c87f3f252e7cf77c897dfca79eafb763f23b877c18a21" - }, - "narps-r1-01-judgment-01/response.json": { - "bytes": 18468, - "public_branch": "codex/narps-r1-01-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-response.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "63bf805f04d3aa221fe0807f9f86ebe81c817b20", - "sha256": "c4a5162060767f9124d67adb12da0b86a6d67faf1bc1e89863b0162f7181e98d" - }, - "narps-r1-01/recipient-check.json": { - "bytes": 1563, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "1c34e66ee20e247469cc61be7494942ad1d436ec0080a91339d3e91f8d1f3c39" - }, - "narps-r1-02-judgment-01/assessment.md": { - "bytes": 14926, - "public_branch": "codex/narps-r1-02-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-assessment.md", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "5b4bd27b34c26d5fe5597e19f7494fe73f1d53e1", - "sha256": "073d4cd125730218efbc2554d692bc11b8122a96f3e666ca4c432957d5108839" - }, - "narps-r1-02-judgment-01/fresh-rerun.json": { - "bytes": 10530, - "public_branch": "codex/narps-r1-02-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-fresh-rerun.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "5b4bd27b34c26d5fe5597e19f7494fe73f1d53e1", - "sha256": "fa095857df9c499339e1f9c196e8b4b7fafddff412dc8c829e6595698c6fdf31" - }, - "narps-r1-02-judgment-01/native-result.json": { - "bytes": 5607, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "35e55ade3fe0d3aea29842fa1dfc79fdf70de3c90d2dc5fd5f3e26f112023eed" - }, - "narps-r1-02-judgment-01/output-binding.json": { - "bytes": 2051, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "9216da6b6cc0b61b59684bd47e2e8ee670a0c06e6d4178aafeb2017e3336c22b" - }, - "narps-r1-02-judgment-01/response.json": { - "bytes": 18812, - "public_branch": "codex/narps-r1-02-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-response.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "5b4bd27b34c26d5fe5597e19f7494fe73f1d53e1", - "sha256": "e44b09bdf88c208b6a0f071be7bfe80e23028583e17a0ae386941ccab3259511" - }, - "narps-r1-02/recipient-check.json": { - "bytes": 1974, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "e31cf366b50206033940a4251c357d0ce5739ff9152d91b51cde251cc4a2ec2e" - }, - "narps-r1-03/recipient-check.json": { - "bytes": 1727, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "f93d2c6c91c3b8294d98503cbd1cd1e692731014cc245a22a3269718ec9bb595" - }, - "narps-r1-04/recipient-check.json": { - "bytes": 1531, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "1078eec03c47baa5f2e18352fe916cfc572d535b1aeb786c6ed4b96ebe20f89e" - }, - "narps-r1-05-judgment-01/assessment.md": { - "bytes": 17554, - "public_branch": "codex/narps-r1-05-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-assessment.md", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "b1c418058c73b962ab36f33f5a527c54d1d45e7f", - "sha256": "5b97818a031b73c0a5a22875bfc12eba5d0cc8d5b09c11dee6c09298da0d43c4" - }, - "narps-r1-05-judgment-01/fresh-rerun.json": { - "bytes": 10707, - "public_branch": "codex/narps-r1-05-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-fresh-rerun.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "b1c418058c73b962ab36f33f5a527c54d1d45e7f", - "sha256": "d937cdb793d041066b267d0637de3548eb5ed015016d63b0f474855122f2c357" - }, - "narps-r1-05-judgment-01/native-result.json": { - "bytes": 5606, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "24e2febb9d2de7864a5d430fc2399fdc34daaa6f85c935dd75ec0efe885e942c" - }, - "narps-r1-05-judgment-01/output-binding.json": { - "bytes": 2062, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "baef74d516719a9df68b8a4b11867199c56bae4f6fc31b248978b2b19e1ddc84" - }, - "narps-r1-05-judgment-01/response.json": { - "bytes": 20734, - "public_branch": "codex/narps-r1-05-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-response.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "b1c418058c73b962ab36f33f5a527c54d1d45e7f", - "sha256": "fe2286b2a10db24ef54dd63b76e2facfc3c59a16470fa17381ebfb360ef9f5cc" - }, - "narps-r1-05/recipient-check.json": { - "bytes": 1631, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "1b61eb52e3480ce35228f57ad8673eea747a7354167f6bf9b1c753a6b8cbe344" - }, - "narps-r1-06-judgment-01/assessment.md": { - "bytes": 18324, - "public_branch": "codex/narps-r1-06-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-assessment.md", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "7658d7859d33f970db1941884dd450ff94383a19", - "sha256": "afb58e4c69b3644be311160d15dc531a291e13f2313ac151af8c19af23b768c5" - }, - "narps-r1-06-judgment-01/fresh-rerun.json": { - "bytes": 10420, - "public_branch": "codex/narps-r1-06-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-fresh-rerun.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "7658d7859d33f970db1941884dd450ff94383a19", - "sha256": "c6ec4effd26135909cef40efbc3725099040840efcfd428ea6a9e4c926bdd559" - }, - "narps-r1-06-judgment-01/native-result.json": { - "bytes": 5606, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "f8b33e4f26fa8438f7ae74e41023f564bfc4be889b5f1bfaaa8e0c8589150a52" - }, - "narps-r1-06-judgment-01/output-binding.json": { - "bytes": 2113, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "9031a7443f79ab9d765bb7eab403c89e8a06fef55e8214c0c11bff4d672c4a39" - }, - "narps-r1-06-judgment-01/response.json": { - "bytes": 20883, - "public_branch": "codex/narps-r1-06-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-response.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "7658d7859d33f970db1941884dd450ff94383a19", - "sha256": "c084d51c97c0cd7d61a50611ba46774aa93740227f0ea6d1fbf86c15a5b0f637" - }, - "narps-r1-06/recipient-check.json": { - "bytes": 2395, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "ac16a507731a3e669d325c9858d0692353603f3bf5609fa8689b46dd9bd80ee7" - }, - "narps-r1-07-judgment-01/assessment.md": { - "bytes": 14845, - "public_branch": "codex/narps-r1-07-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-assessment.md", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "5a16be31d225574a4643a8feb000ca0a5fa7f7ad", - "sha256": "ddca54caa74904890762dae31e8a85212f50c5f0ef29e25e68b29bba056c4e51" - }, - "narps-r1-07-judgment-01/fresh-rerun.json": { - "bytes": 7861, - "public_branch": "codex/narps-r1-07-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-fresh-rerun.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "5a16be31d225574a4643a8feb000ca0a5fa7f7ad", - "sha256": "b1ae388ae26cc6e7b2e68a31ff92964c1c6c155a1c044ce58ea6f75844c6c44f" - }, - "narps-r1-07-judgment-01/native-result.json": { - "bytes": 5505, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "fc07d5d5a6af29854980e5e9265bdfb0bf2094c5017bfbefbf331d1b15dde3cd" - }, - "narps-r1-07-judgment-01/output-binding.json": { - "bytes": 1227, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "3c8e4f64c785bf527508b80a8d4467f7c9d3d96a7d8b368f01e4cf827e7691f7" - }, - "narps-r1-07-judgment-01/response.json": { - "bytes": 16516, - "public_branch": "codex/narps-r1-07-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-response.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "5a16be31d225574a4643a8feb000ca0a5fa7f7ad", - "sha256": "4e8631ab62092378c1ba98182492ca6950b8065dc32f3438812967cbe3d42e1e" - }, - "narps-r1-07-judgment-02/assessment.md": { - "bytes": 16726, - "public_branch": "codex/narps-r1-07-judge-02-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-02-output/2026-10-16-assessment.md", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "436630373511a0df2386d0944528de2fa5a5b549", - "sha256": "d885f65f05bb6097f36f3697e1441b7163bfbd9817105dc02e6110ebccaddade" - }, - "narps-r1-07-judgment-02/fresh-rerun.json": { - "bytes": 11599, - "public_branch": "codex/narps-r1-07-judge-02-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-02-output/2026-10-16-fresh-rerun.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "436630373511a0df2386d0944528de2fa5a5b549", - "sha256": "9e759e36b01d5d210ce7efaa04de1cd30ff053890ea801d5789fcee0449b00c6" - }, - "narps-r1-07-judgment-02/native-result.json": { - "bytes": 5606, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "c62b32440bceb0d9466cf34ec745e041465b90dfaa60db571f5afd499bd98965" - }, - "narps-r1-07-judgment-02/output-binding.json": { - "bytes": 1820, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "1b11b43d95bb93d5385018107e04b029ae5e64ce35f20af9d2562c6ea8824191" - }, - "narps-r1-07-judgment-02/response.json": { - "bytes": 19623, - "public_branch": "codex/narps-r1-07-judge-02-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-02-output/2026-10-16-response.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "436630373511a0df2386d0944528de2fa5a5b549", - "sha256": "f9f4de3a9735f8b2c5f4df2ef97a3b05926e1305dc80017742e064d46a3e6e69" - }, - "narps-r1-07/recipient-check.json": { - "bytes": 965, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "9319252e4a093faa95f33e2e4bbb2c2334693a3f1c1d3078869d997b99b5cf41" - }, - "narps-r1-08-judgment-01/assessment.md": { - "bytes": 19175, - "public_branch": "codex/narps-r1-08-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-assessment.md", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8", - "sha256": "4c24ea408fbc1aeb9879f0c7928779f46abf18e4f46bc3b5a22ca601c97a4b4d" - }, - "narps-r1-08-judgment-01/fresh-rerun.json": { - "bytes": 7732, - "public_branch": "codex/narps-r1-08-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-fresh-rerun.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8", - "sha256": "4650b840be0f75ddc91e43c62449752e9ae881d27a3896cfda5745480889ad44" - }, - "narps-r1-08-judgment-01/native-result.json": { - "bytes": 5505, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "294ab2b2190cb4b3b9ab39eb4508d66c9dff566df92978c13c1b0431b600967e" - }, - "narps-r1-08-judgment-01/output-binding.json": { - "bytes": 1244, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "6f4596caba59608556e8f59175b7a17acb44a2353a72a135e565941a968d59e9" - }, - "narps-r1-08-judgment-01/response.json": { - "bytes": 20607, - "public_branch": "codex/narps-r1-08-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-response.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "15e4e2eacc1b19e57eac08292f3d12b4d09ab9f8", - "sha256": "137c87adfd55f87cee709f71300aee93d43049395623841b1ee29006069724bb" - }, - "narps-r1-08/recipient-check.json": { - "bytes": 2416, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "48f2516664930af5f176549480e0faec1fa7a709deff71f6b9dbabb454358860" - }, - "narps-r1-09-judgment-01/assessment.md": { - "bytes": 16195, - "public_branch": "codex/narps-r1-09-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-assessment.md", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "ab1e49cb0bd0f54b297ab77a982b246e638aa8e6", - "sha256": "6feb85a68d853a6e749901bc92fb2b2818bdacd9df5c7703385dcbad7fb38eb2" - }, - "narps-r1-09-judgment-01/fresh-rerun.json": { - "bytes": 13018, - "public_branch": "codex/narps-r1-09-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-fresh-rerun.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "ab1e49cb0bd0f54b297ab77a982b246e638aa8e6", - "sha256": "4b12f71d2243ce9c31ea76f885088d42d626b17bc8e9c33d5c7afb6e1699183a" - }, - "narps-r1-09-judgment-01/native-result.json": { - "bytes": 5606, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "2dede59a6d75a831d68aa64dffe4270436f0c54144ce48cbc215c656bcc32bc7" - }, - "narps-r1-09-judgment-01/output-binding.json": { - "bytes": 2110, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "55644e0cde57a395d5155c64ec3eb3e34ec28b37ffdaaf953eb2012f729d2a88" - }, - "narps-r1-09-judgment-01/response.json": { - "bytes": 17915, - "public_branch": "codex/narps-r1-09-judge-01-output", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-response.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "ab1e49cb0bd0f54b297ab77a982b246e638aa8e6", - "sha256": "34d3f2681e083a8dbf21ffb1aec1f0932a9c4fa841c3753325224c881a97bda0" - }, - "narps-r1-09/recipient-check.json": { - "bytes": 1974, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "b5f577b038bc88bd4c50efd337e6b9dae7b46908d49004e94ac08afb26e7db62" - }, - "narps-r1-12/recipient-check.json": { - "bytes": 312, - "public_url": null, - "publication_status": "not-established-by-this-export", - "sha256": "947a85855045bdacd5d374958f5f23a5ee351f1700410ee652c132ef9177d1e5" - }, - "round-1.json": { - "bytes": 44026, - "coordinator_path": "iterations/narps-v1/round-1.json", - "matches_coordinator_head": true, - "public_branch": "main", - "public_url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/round-1.json", - "publication_status": "published-branch-source-hash-verified", - "published_commit": "48b6dcef2cbc918cfc3c4d7c2c6b2bffeb4f8ba5", - "sha256": "69005d1dc9d92a9db910d6d58985293b7c2bc474afd96573630ebd89c2f16648" - } - }, - "study": "narps", - "warnings": [] -} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/anatomical-context.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/anatomical-context.nii.gz deleted file mode 120000 index 2585bbe6..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/anatomical-context.nii.gz +++ /dev/null @@ -1 +0,0 @@ -../../../../../.git/annex/objects/Zq/3j/MD5E-s207544--035d9295baaa7a578da078948c0807c1.nii.gz/MD5E-s207544--035d9295baaa7a578da078948c0807c1.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/common_brain_mask.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/common_brain_mask.nii.gz deleted file mode 120000 index 351b9305..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/common_brain_mask.nii.gz +++ /dev/null @@ -1 +0,0 @@ -../../../../../.git/annex/objects/wq/vX/MD5E-s23179--b25609ef0de74955022971bf2597b668.nii.gz/MD5E-s23179--b25609ef0de74955022971bf2597b668.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz deleted file mode 120000 index 4cb624da..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz +++ /dev/null @@ -1 +0,0 @@ -../../../../../.git/annex/objects/V3/Wm/MD5E-s4192--20ebf663b35d48e2ea0f235518973796.nii.gz/MD5E-s4192--20ebf663b35d48e2ea0f235518973796.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/one_sample_t.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/one_sample_t.nii.gz deleted file mode 120000 index 8a9bd6f6..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/one_sample_t.nii.gz +++ /dev/null @@ -1 +0,0 @@ -../../../../../.git/annex/objects/M5/P4/MD5E-s772808--30da57fa1b8cc7a318c3b4f5edd628b6.nii.gz/MD5E-s772808--30da57fa1b8cc7a318c3b4f5edd628b6.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz deleted file mode 120000 index 822cd1cb..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz +++ /dev/null @@ -1 +0,0 @@ -../../../../../.git/annex/objects/mK/wf/MD5E-s4607--e6ad8475cbac58e6f2cfd22bcf28dc70.nii.gz/MD5E-s4607--e6ad8475cbac58e6f2cfd22bcf28dc70.nii.gz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/participant-map-sources.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/participant-map-sources.json deleted file mode 100644 index 1d3637a9..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/participant-map-sources.json +++ /dev/null @@ -1,473 +0,0 @@ -{ - "study": "NARPS Hypothesis 1: group inference from fixed participant effects", - "collection": "https://neurovault.org/collections/4932/", - "team": "AO86", - "image_metadata_api": "https://neurovault.org/api/collections/4932/images/?limit=2000", - "selection": "All single-subject unthresholded hypo1 cope images; participant IDs exactly match the 54 equalIndifference participants in the pinned source table.", - "maps": 54, - "map_bytes": 96387264, - "map_type": "participant contrast parameter estimate, not a z/t statistic or a group result", - "spatial_reference": "MNI152NLin2009cAsym", - "upstream_processing_fixed": true, - "cohort_source": { - "url": "https://raw.githubusercontent.com/OpenNeuroDatasets/ds001734/64ec117560ab58ed0fe1273f3e90887b1768b268/participants.tsv", - "git_commit": "64ec117560ab58ed0fe1273f3e90887b1768b268", - "sha256": "d127d700f9a519338da295ea56455bf7bb46ca572f726da72ef7b57c310687b8", - "transformation": "Select group == equalIndifference; preserve all columns and values." - }, - "methods_source": { - "url": "https://raw.githubusercontent.com/poldrack/narps/0a9d71a5ab435b40dcd50fea82d2961a43f0a3fc/ImageAnalyses/metadata_files/analysis_pipelines_for_analysis.xlsx", - "git_commit": "0a9d71a5ab435b40dcd50fea82d2961a43f0a3fc", - "sha256": "bfb66119c6beb26e5d3fc84638435cf6c49b40e5eb06606bfecaee0aa48d82b7", - "sheet": "Sheet1", - "header_excel_row": 2, - "team_id": "AO86" - }, - "checksum_scope": "SHA256 values are computed from retrieved bytes; NeuroVault metadata independently supplies file sizes but no source checksums.", - "files": { - "data/sub-001_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-001_hypo1_cope.nii.gz", - "image_id": 118651, - "participant_id": "sub-001", - "bytes": 1794522, - "sha256": "baf3440fbc7f5f59dea28d231e9c5eb9cf00a15b6924342f4b79e7faf56a929a", - "transformation": "none" - }, - "data/sub-003_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-003_hypo1_cope.nii.gz", - "image_id": 118661, - "participant_id": "sub-003", - "bytes": 1762018, - "sha256": "a8c9b6276d1597bc43695516c9ac5b2893a8d8408cd053161ceaddbd42dafb20", - "transformation": "none" - }, - "data/sub-005_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-005_hypo1_cope.nii.gz", - "image_id": 118671, - "participant_id": "sub-005", - "bytes": 1847315, - "sha256": "415383874c65fd9e10bb03bf2aa59bfcd1d10650bc5d0560a249e85d52b7b205", - "transformation": "none" - }, - "data/sub-009_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-009_hypo1_cope.nii.gz", - "image_id": 118686, - "participant_id": "sub-009", - "bytes": 1737182, - "sha256": "33af129d8ba13cd4b6175089706c531471be1e0bd7ccd43ece10751c8cc3254c", - "transformation": "none" - }, - "data/sub-011_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-011_hypo1_cope.nii.gz", - "image_id": 118696, - "participant_id": "sub-011", - "bytes": 1828116, - "sha256": "6f74dd449eefa6eff40ec00eb046ec7e8bb13c0b7c2ac1874155a9c166692352", - "transformation": "none" - }, - "data/sub-013_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-013_hypo1_cope.nii.gz", - "image_id": 118701, - "participant_id": "sub-013", - "bytes": 1760573, - "sha256": "bfa79b82f931d81d6387e82b8413f1f889a06f36275ba510554669c84a3c026f", - "transformation": "none" - }, - "data/sub-015_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-015_hypo1_cope.nii.gz", - "image_id": 118711, - "participant_id": "sub-015", - "bytes": 1805181, - "sha256": "5d98f6d74823516768659967f95ef43728584eab024c58af30987783515d7694", - "transformation": "none" - }, - "data/sub-017_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-017_hypo1_cope.nii.gz", - "image_id": 118721, - "participant_id": "sub-017", - "bytes": 1791857, - "sha256": "dca9eac4d6f0ef4e2a3e631b2d10f89c5362863698cec4a7c7b9b14128ae96d9", - "transformation": "none" - }, - "data/sub-019_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-019_hypo1_cope.nii.gz", - "image_id": 118731, - "participant_id": "sub-019", - "bytes": 1788203, - "sha256": "f9df911028e0ee06d230b097d8c7011b3c09f34df436e8854cd959145777533d", - "transformation": "none" - }, - "data/sub-021_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-021_hypo1_cope.nii.gz", - "image_id": 118741, - "participant_id": "sub-021", - "bytes": 1821886, - "sha256": "7dd60d722e243f429633f1c63c9a810afd73d1ffd0e0e68fcdd2bf3790d78db1", - "transformation": "none" - }, - "data/sub-025_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-025_hypo1_cope.nii.gz", - "image_id": 118757, - "participant_id": "sub-025", - "bytes": 1805994, - "sha256": "545945b0a5f7e51d65e2828e76e776fffcbb33b1635bb7272bc0948bfbc6b7b4", - "transformation": "none" - }, - "data/sub-027_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-027_hypo1_cope.nii.gz", - "image_id": 118767, - "participant_id": "sub-027", - "bytes": 1814109, - "sha256": "dffa472f8cfe30b9c2025470924fceb23d30fb881db6b893d436faa8d8dcef2f", - "transformation": "none" - }, - "data/sub-029_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-029_hypo1_cope.nii.gz", - "image_id": 118772, - "participant_id": "sub-029", - "bytes": 1792367, - "sha256": "0ed1be0ce40d1becaec5cf18487670822b8cb5fcbc5ad0ec2cb34d9a3ed7071b", - "transformation": "none" - }, - "data/sub-033_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-033_hypo1_cope.nii.gz", - "image_id": 118787, - "participant_id": "sub-033", - "bytes": 1765631, - "sha256": "04778467af0a6c93d531d30f73c5492384be59044ebd7be3e95862700e2e9117", - "transformation": "none" - }, - "data/sub-035_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-035_hypo1_cope.nii.gz", - "image_id": 118792, - "participant_id": "sub-035", - "bytes": 1768719, - "sha256": "211fd859f33d69891531ad3e5dd66fe0c0891b20c58e6ef8aa21b4d49ff030c9", - "transformation": "none" - }, - "data/sub-037_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-037_hypo1_cope.nii.gz", - "image_id": 118802, - "participant_id": "sub-037", - "bytes": 1807410, - "sha256": "a4d76561e8ba1848572a474afce754310f4ee101cfd99276eb3105289cc0934b", - "transformation": "none" - }, - "data/sub-039_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-039_hypo1_cope.nii.gz", - "image_id": 118812, - "participant_id": "sub-039", - "bytes": 1775163, - "sha256": "744df860cfb8410aae16bcb1742e7390c51306c66959bb19da9f5b57206bba7b", - "transformation": "none" - }, - "data/sub-041_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-041_hypo1_cope.nii.gz", - "image_id": 118822, - "participant_id": "sub-041", - "bytes": 1801691, - "sha256": "f93eeadcd3f57239e4c32c5df2ca2c4013bf424978701bd5beec535ace24669f", - "transformation": "none" - }, - "data/sub-043_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-043_hypo1_cope.nii.gz", - "image_id": 118827, - "participant_id": "sub-043", - "bytes": 1776243, - "sha256": "520f19805c6c4358bc56e9bba290b9b79a80c14385bc7be90e4bd81b3e37e771", - "transformation": "none" - }, - "data/sub-045_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-045_hypo1_cope.nii.gz", - "image_id": 118837, - "participant_id": "sub-045", - "bytes": 1812100, - "sha256": "3826c6daf5a7be7b03ae552847c4a8709a1b86c2498735e6ce80768cd5d0b88e", - "transformation": "none" - }, - "data/sub-047_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-047_hypo1_cope.nii.gz", - "image_id": 118933, - "participant_id": "sub-047", - "bytes": 1762249, - "sha256": "8585e8be8eebe84dd316eeb1f86090a8123f88a8b5d275bc2c39049a3bf4bf34", - "transformation": "none" - }, - "data/sub-049_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-049_hypo1_cope.nii.gz", - "image_id": 118938, - "participant_id": "sub-049", - "bytes": 1821174, - "sha256": "e01dacebea8fa444b7696e90a53e9ab0b3543b0da780ba430875b3fde117e084", - "transformation": "none" - }, - "data/sub-051_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-051_hypo1_cope.nii.gz", - "image_id": 118948, - "participant_id": "sub-051", - "bytes": 1755787, - "sha256": "74e2887ed9eb4252357cdce98eb53b5b8ab2620ee5ee57aee1bc677c0099b2ca", - "transformation": "none" - }, - "data/sub-053_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-053_hypo1_cope.nii.gz", - "image_id": 118958, - "participant_id": "sub-053", - "bytes": 1760465, - "sha256": "a3b3509a0240c5b12a9c63f94f2913e69eeb7fab4fbe92ac1adc62eb45bdd0ba", - "transformation": "none" - }, - "data/sub-055_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-055_hypo1_cope.nii.gz", - "image_id": 118968, - "participant_id": "sub-055", - "bytes": 1790638, - "sha256": "136983cd89668779e26eba6847653f1d765452f8a2d5675fce037f751edb0ea8", - "transformation": "none" - }, - "data/sub-057_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-057_hypo1_cope.nii.gz", - "image_id": 118978, - "participant_id": "sub-057", - "bytes": 1815775, - "sha256": "aafa1a371d72e690f737d2507c9d7bbd20c620377cd294d44555c856a0566496", - "transformation": "none" - }, - "data/sub-059_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-059_hypo1_cope.nii.gz", - "image_id": 118988, - "participant_id": "sub-059", - "bytes": 1785421, - "sha256": "0fa3da37a11640705014665f546ba86735472a8a2b7fdf1b37177a55abd0a65a", - "transformation": "none" - }, - "data/sub-061_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-061_hypo1_cope.nii.gz", - "image_id": 118998, - "participant_id": "sub-061", - "bytes": 1783701, - "sha256": "cb8bc3bf4264fe156348d3c171335b84978eb8d32b0fd331db9f4661dad2bdff", - "transformation": "none" - }, - "data/sub-063_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-063_hypo1_cope.nii.gz", - "image_id": 119008, - "participant_id": "sub-063", - "bytes": 1786231, - "sha256": "2a5458eb314441b01dacfa1bcea9e9a95f983d2994aa6b853ebe1a20b017a467", - "transformation": "none" - }, - "data/sub-067_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-067_hypo1_cope.nii.gz", - "image_id": 119023, - "participant_id": "sub-067", - "bytes": 1774136, - "sha256": "9977321f1f775f04dab881d740ea5cc491dadda07405f2380c61c50e5c3a01fc", - "transformation": "none" - }, - "data/sub-069_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-069_hypo1_cope.nii.gz", - "image_id": 119033, - "participant_id": "sub-069", - "bytes": 1769792, - "sha256": "bd22905ebe789319f082b0fdb6ba7cd5aaf6590fd8424d6c396cd54c0602a318", - "transformation": "none" - }, - "data/sub-071_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-071_hypo1_cope.nii.gz", - "image_id": 119043, - "participant_id": "sub-071", - "bytes": 1790405, - "sha256": "7286639323904bfe851588ce06c68396d535fad2f7ac5de0de1b73c4c17494f4", - "transformation": "none" - }, - "data/sub-073_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-073_hypo1_cope.nii.gz", - "image_id": 119053, - "participant_id": "sub-073", - "bytes": 1786224, - "sha256": "67086bf1f48b14bc095999f6535656649d01da82d1327715c5b3ab89ea6c5f7b", - "transformation": "none" - }, - "data/sub-075_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-075_hypo1_cope.nii.gz", - "image_id": 119063, - "participant_id": "sub-075", - "bytes": 1774130, - "sha256": "b9151e72e3a8a609a23ac73dbd3d6ba8423f271ddd72149cf27c04e25bf9f980", - "transformation": "none" - }, - "data/sub-077_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-077_hypo1_cope.nii.gz", - "image_id": 119073, - "participant_id": "sub-077", - "bytes": 1754444, - "sha256": "79aaf5add3d475590cb7fd82a7fbd32517dbde2cb859824864a2b10d6fafb9ed", - "transformation": "none" - }, - "data/sub-079_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-079_hypo1_cope.nii.gz", - "image_id": 119078, - "participant_id": "sub-079", - "bytes": 1770837, - "sha256": "d505691fdcfa43ad709fca3803c954069afe4e2f2dc865edb5b0812562d1eb8c", - "transformation": "none" - }, - "data/sub-081_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-081_hypo1_cope.nii.gz", - "image_id": 119088, - "participant_id": "sub-081", - "bytes": 1809179, - "sha256": "a8a342b5e333dbff9776b5a4847929737144dc8029830036636eb86c566f4f76", - "transformation": "none" - }, - "data/sub-083_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-083_hypo1_cope.nii.gz", - "image_id": 119098, - "participant_id": "sub-083", - "bytes": 1770805, - "sha256": "76a526c303c406342487da0e5deee5a6ca6b345e9b6ccb052149c4c32f0833ae", - "transformation": "none" - }, - "data/sub-085_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-085_hypo1_cope.nii.gz", - "image_id": 119108, - "participant_id": "sub-085", - "bytes": 1733793, - "sha256": "74b1af4e4b667a70c79b54a10294be744da5538b814057186eae48710520b65a", - "transformation": "none" - }, - "data/sub-087_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-087_hypo1_cope.nii.gz", - "image_id": 119113, - "participant_id": "sub-087", - "bytes": 1826169, - "sha256": "7ecb372d1249cd5368121b1e7b7f7ee33ef5430575097431dcd3f27dcdad7b04", - "transformation": "none" - }, - "data/sub-089_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-089_hypo1_cope.nii.gz", - "image_id": 119123, - "participant_id": "sub-089", - "bytes": 1742479, - "sha256": "3b380ae44cdbf0171d9ec12ff9ecdb47227496cda5ccd5b5cfb09164c5d91846", - "transformation": "none" - }, - "data/sub-093_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-093_hypo1_cope.nii.gz", - "image_id": 119138, - "participant_id": "sub-093", - "bytes": 1784075, - "sha256": "7802aea70713a4be7683921188b92a563d86f221f191a8bac4ee9c4decb33a1c", - "transformation": "none" - }, - "data/sub-095_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-095_hypo1_cope.nii.gz", - "image_id": 119148, - "participant_id": "sub-095", - "bytes": 1735309, - "sha256": "291760d6479e336093a651e33df20deab99e434cba5afbf31fc019c8d1fe816e", - "transformation": "none" - }, - "data/sub-099_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-099_hypo1_cope.nii.gz", - "image_id": 119163, - "participant_id": "sub-099", - "bytes": 1823271, - "sha256": "30b063515e6b538183fe37c561e87e47681756876a8f6a8a607839d8d3de0e42", - "transformation": "none" - }, - "data/sub-103_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-103_hypo1_cope.nii.gz", - "image_id": 119214, - "participant_id": "sub-103", - "bytes": 1814013, - "sha256": "a088633f18ac3e35fc2512e9dc21ec3d92efd06749d4027338ccb448a635919c", - "transformation": "none" - }, - "data/sub-105_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-105_hypo1_cope.nii.gz", - "image_id": 119224, - "participant_id": "sub-105", - "bytes": 1795447, - "sha256": "12a1b50eaa5be6983990c5e77f985f9750340204eaa3fff7e70829f07707e6a2", - "transformation": "none" - }, - "data/sub-107_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-107_hypo1_cope.nii.gz", - "image_id": 119234, - "participant_id": "sub-107", - "bytes": 1804121, - "sha256": "4580aade93323d0d14f9a3a1932a428004a2f657980b5669f9274102bb370802", - "transformation": "none" - }, - "data/sub-109_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-109_hypo1_cope.nii.gz", - "image_id": 119244, - "participant_id": "sub-109", - "bytes": 1788268, - "sha256": "931ba1128720bbaa99e7fce8f036a331581d6d07e00212a1f402eae7959299cb", - "transformation": "none" - }, - "data/sub-113_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-113_hypo1_cope.nii.gz", - "image_id": 119259, - "participant_id": "sub-113", - "bytes": 1819506, - "sha256": "e5f81435ddc2d5703fa4ea37d6597601e71b50f8c53fb6047fb0067c17282c65", - "transformation": "none" - }, - "data/sub-115_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-115_hypo1_cope.nii.gz", - "image_id": 119269, - "participant_id": "sub-115", - "bytes": 1797041, - "sha256": "5046f7c2fa1c5d1be6237d38f631beca13df8a3a8ded11121082838a533a44bf", - "transformation": "none" - }, - "data/sub-117_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-117_hypo1_cope.nii.gz", - "image_id": 119279, - "participant_id": "sub-117", - "bytes": 1741472, - "sha256": "711159acfa23c45ab82903f658cafe0fa539f39e077e451f6b0728fdb359445f", - "transformation": "none" - }, - "data/sub-119_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-119_hypo1_cope.nii.gz", - "image_id": 119289, - "participant_id": "sub-119", - "bytes": 1752220, - "sha256": "01738a10e34e46c5ea1a4a192b9484595ee352d62375095b76726347455aabd7", - "transformation": "none" - }, - "data/sub-121_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-121_hypo1_cope.nii.gz", - "image_id": 119299, - "participant_id": "sub-121", - "bytes": 1766758, - "sha256": "94357665b89cfa1b9157e71aab10f78b49585a790a4a01d9e4693698e185d892", - "transformation": "none" - }, - "data/sub-123_hypo1_cope.nii.gz": { - "url": "https://neurovault.org/media/images/4932/sub-123_hypo1_cope.nii.gz", - "image_id": 119304, - "participant_id": "sub-123", - "bytes": 1745649, - "sha256": "1219377e08c306753c1e382d431b1e7a55c7143cdc5f800fb65e92fa7e72f888", - "transformation": "none" - }, - "participants.tsv": { - "bytes": 1706, - "sha256": "faca815bcb042144bdb8dcff915f45de0d27650f60416ed76a5a72557341abbf" - }, - "study-task.md": { - "bytes": 1483, - "sha256": "e92bf2e0c0db4cc49688cce9f9dfff8a236fc4ec151c09961719f49f31310cc8" - }, - "upstream-methods.md": { - "bytes": 1342, - "sha256": "508d832c8787ed8303c3de101c2c76f40a3aa5dec53e6993dc2a49c4b7bcf90b" - } - } -} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json deleted file mode 100644 index 818e8abc..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/provenance.json +++ /dev/null @@ -1,343 +0,0 @@ -{ - "result_selection_cutoff_utc": "2026-10-16T03:33:00Z", - "snapshot_generated_utc": "2026-10-16T03:42:45.650190+00:00", - "study": "NARPS Hypothesis 1, AO86 equal-indifference participant gain maps", - "paper": "https://doi.org/10.1038/s41586-020-2314-9", - "data": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", - "participant_maps": "https://neurovault.org/collections/4932/", - "n_participants": 54, - "conditions": [ - "baseline", - "discover-general", - "discover-science", - "stamped-explicit" - ], - "records": [ - { - "run": "narps-r1-01", - "condition": "baseline", - "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "condition_assignment": { - "condition": "baseline", - "requested_condition": "baseline", - "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", - "additional_prompt_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "supplied_skills_commit": null - }, - "summary": "summaries/narps-r1-01.json", - "mask_voxels": 186400, - "positive_whole_brain_fwe_voxels": 11, - "primary_correction": "Bonferroni" - }, - { - "run": "narps-r1-02", - "condition": "baseline", - "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "condition_assignment": { - "condition": "baseline", - "requested_condition": "baseline", - "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", - "additional_prompt_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "supplied_skills_commit": null - }, - "summary": "summaries/narps-r1-02.json", - "mask_voxels": 192333, - "positive_whole_brain_fwe_voxels": 11, - "primary_correction": "Bonferroni" - }, - { - "run": "narps-r1-03", - "condition": "baseline", - "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "condition_assignment": { - "condition": "baseline", - "requested_condition": "baseline", - "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", - "additional_prompt_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "supplied_skills_commit": null - }, - "summary": "summaries/narps-r1-03.json", - "mask_voxels": 210968, - "positive_whole_brain_fwe_voxels": 24, - "primary_correction": "max-T" - }, - { - "run": "narps-r1-05", - "condition": "discover-general", - "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "condition_assignment": { - "condition": "discover-general", - "requested_condition": "discover-general", - "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", - "additional_prompt_sha256": "bc8baae751c0ee6f9d46be0fa3dbc43b8148e52d927ca1a888f97b9e324e18fd", - "supplied_skills_commit": null - }, - "summary": "summaries/narps-r1-05.json", - "mask_voxels": 198029, - "positive_whole_brain_fwe_voxels": 24, - "primary_correction": "max-T" - }, - { - "run": "narps-r1-06", - "condition": "discover-general", - "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "condition_assignment": { - "condition": "discover-general", - "requested_condition": "discover-general", - "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", - "additional_prompt_sha256": "bc8baae751c0ee6f9d46be0fa3dbc43b8148e52d927ca1a888f97b9e324e18fd", - "supplied_skills_commit": null - }, - "summary": "summaries/narps-r1-06.json", - "mask_voxels": 186192, - "positive_whole_brain_fwe_voxels": 24, - "primary_correction": "max-T" - }, - { - "run": "narps-r1-07", - "condition": "discover-science", - "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "condition_assignment": { - "condition": "discover-science", - "requested_condition": "discover-science", - "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", - "additional_prompt_sha256": "f3678974568fadc774def9cd0180e83194ac35722b058916b0bc850a93ed3bb8", - "supplied_skills_commit": null - }, - "summary": "summaries/narps-r1-07.json", - "mask_voxels": 198029, - "positive_whole_brain_fwe_voxels": 24, - "primary_correction": "max-T" - }, - { - "run": "narps-r1-08", - "condition": "discover-science", - "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "condition_assignment": { - "condition": "discover-science", - "requested_condition": "discover-science", - "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", - "additional_prompt_sha256": "f3678974568fadc774def9cd0180e83194ac35722b058916b0bc850a93ed3bb8", - "supplied_skills_commit": null - }, - "summary": "summaries/narps-r1-08.json", - "mask_voxels": 210968, - "positive_whole_brain_fwe_voxels": 24, - "primary_correction": "max-T" - }, - { - "run": "narps-r1-09", - "condition": "discover-science", - "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "condition_assignment": { - "condition": "discover-science", - "requested_condition": "discover-science", - "config_sha256": "2d41f2690f427f468ddec46c8d40944d28a21f2013315dde8c1e4618b29d79c5", - "additional_prompt_sha256": "f3678974568fadc774def9cd0180e83194ac35722b058916b0bc850a93ed3bb8", - "supplied_skills_commit": null - }, - "summary": "summaries/narps-r1-09.json", - "mask_voxels": 198029, - "positive_whole_brain_fwe_voxels": 24, - "primary_correction": "max-T" - } - ], - "missing_completed_results": { - "discover-general": [ - "narps-r1-04" - ], - "stamped-explicit": [ - "narps-r1-10", - "narps-r1-11", - "narps-r1-12" - ] - }, - "comparison_scope": "Descriptive differences among completed worker analyses of the same 54 participant maps. Mask rules and correction methods differ; these are not causal estimates of condition effects. Failed or incomplete runs are never assigned a zero value.", - "representative_map_run": "narps-r1-09", - "representative_map_selection": "A completed run using common nonzero coverage for every participant and a verifiable corrected mask; it is an example, not an average or a condition comparison.", - "map_display": { - "statistic": "unthresholded one-sample t; signed colors, clipped at +/- 6", - "mask": "common nonzero coverage across all 54 participants; no color outside coverage", - "roi": "AAL SPM12 bilateral Frontal_Med_Orb parcels, intersected with common coverage; descriptive vmPFC localization", - "corrected": "positive-direction permutation max-T, 10,000 sign flips, whole-brain FWE p <= .05", - "slice_centers_mni_mm": [ - -2, - 24, - -3.599997043609619 - ], - "orientation": "neurological: left hemisphere on image left in coronal and axial panels" - }, - "sources": { - "summaries/narps-r1-01.json": { - "sha256": "8198242f3ac1eaf7a84ccf23b3513c8ecfbadc65e18d4058d7c814b3de1c8f67", - "bytes": 6963, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "d90a335549f43007eac05902859224e6ce2eaada", - "source_path": "results/analysis_summary.json", - "source_git_object": "bd230c0a3def24aa19b66f3edd3f9998e06c319b", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/analysis_summary.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-01" - }, - "summaries/narps-r1-02.json": { - "sha256": "bf469b8e89420e8eb59270035d63b5defd4e766139daef8a765a7d8775bdaa49", - "bytes": 2717, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "source_path": "results/results.json", - "source_git_object": "601f06c9527731eb94a79b71164c56d3fced28df", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/results.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-02" - }, - "summaries/narps-r1-03.json": { - "sha256": "550cecbb35f10e7cfb16e4f177a15b11a47525115be5297f52b271613f91a812", - "bytes": 8811, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", - "source_path": "results/summary.json", - "source_git_object": "fc9a8227ba6c9aaea07b3d1cb5debf123b21a042", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/summary.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-03" - }, - "summaries/narps-r1-05.json": { - "sha256": "08274f541bff5d0fa7673474fbb401b00619a9bdaf4cb523b06baad574bd2972", - "bytes": 3060, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "source_path": "results/run_summary.json", - "source_git_object": "fd9592aeace204f563c6ffbc0dbd6071bd12a444", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/run_summary.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-05" - }, - "summaries/narps-r1-06.json": { - "sha256": "a3863b5f4cc8cd1adf157e6aec7015f1715ed725d08aa63cc8982b98a558c527", - "bytes": 10956, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "32d9cabf7b5d041f9efb97830bf5279068809357", - "source_path": "results/analysis_results.json", - "source_git_object": "3a3da636f1b7964f3e1a42416249f29539131d87", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/results/analysis_results.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-06" - }, - "summaries/narps-r1-07.json": { - "sha256": "8d46dee5fbba952a3834240325da284af53fb3dd1d797895c211735692c7e3dd", - "bytes": 1704, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "source_path": "results/analysis_results.json", - "source_git_object": "1714164ffa958051656204cde9a4f4a24d977f4d", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/results/analysis_results.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-07" - }, - "summaries/narps-r1-08.json": { - "sha256": "24ea1b1c7e01825adb9f13109e178263d0098415a378da6d1d607ad9b2e1b3f5", - "bytes": 2592, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "42e957201315aa8221ba60fbe614119e22639ce8", - "source_path": "results/analysis_summary.json", - "source_git_object": "75a2624b5f4722883e59d9b6376b8fb44d65232b", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/analysis_summary.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-08" - }, - "summaries/narps-r1-09.json": { - "sha256": "c1c5073516a8de8412b63d36a96524dab63bb54073db9033c5b9ab977f7afd47", - "bytes": 2500, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "source_path": "results/results.json", - "source_git_object": "bf76fe1606138531cfd0cd40d3c1fdd0eb8847eb", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-09" - }, - "maps/one_sample_t.nii.gz": { - "sha256": "75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b", - "bytes": 772808, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "source_path": "results/one_sample_t.nii.gz", - "source_git_object": "bd77eaca1c34cc3f19032439486a21ab8c0356dc", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/one_sample_t.nii.gz", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_annex_key": "SHA256E-s772808--75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b.nii.gz", - "source_branch": "codex/narps-r1-09" - }, - "maps/common_brain_mask.nii.gz": { - "sha256": "e72a50e0531fd4e353fff55c81b2790319aebe2cb30aba305fbf51b7394e5ff1", - "bytes": 23179, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "source_path": "results/common_brain_mask.nii.gz", - "source_git_object": "64d0cb426a4591f510acb841af2644f00a654714", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/common_brain_mask.nii.gz", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-09" - }, - "maps/max_t_fwe_p05_mask.nii.gz": { - "sha256": "e4fcc6042c290ac029f16a5741a15e84c7a0072e8907572edef1cd69a76d78ac", - "bytes": 4192, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "source_path": "results/max_t_fwe_p05_mask.nii.gz", - "source_git_object": "96e18b8a3cbae8cb209b053493adec3346abaac2", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/max_t_fwe_p05_mask.nii.gz", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-09" - }, - "maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz": { - "sha256": "b520b7442d546efa2aa7bbc0fa1c72beab5c77fee3c0d4e1d1901f16e5fd4337", - "bytes": 4607, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "source_path": "results/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", - "source_git_object": "d63b6542bce239f208ed0c2bfa98c7d154a34f9a", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-09" - }, - "participant-map-sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "source_path": "input/sources.json", - "source_git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/input/sources.json", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-09" - }, - "source-analysis-run09.py": { - "sha256": "efb44f741818ba6b414b27cd57b5414bb5dd7ed7c02c7d55b1e52eae3531dcf8", - "bytes": 12814, - "source_repository": "https://github.com/leej3/stamped-in-practice", - "source_revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "source_path": "scripts/analyze_gain.py", - "source_git_object": "1373c078213f3a2a54277d2302622ae7b79c5a80", - "source_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - "source_branch": "codex/narps-r1-09" - }, - "maps/anatomical-context.nii.gz": { - "sha256": "a110f8454d04756a9eef6dfae4750f75629d96d3e5e6f348a4c71d28495bcbca", - "bytes": 207544, - "source_url": "https://nilearn.github.io/stable/modules/generated/nilearn.datasets.load_mni152_template.html", - "source_description": "Nilearn bundled skull-stripped ICBM152 MNI template; anatomical context only", - "nilearn_version": "0.14.1", - "transformation": "load_mni152_template(resolution=2), continuous resampling to run09 t-map grid" - } - } -} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/source-analysis-run09.py b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/source-analysis-run09.py deleted file mode 100644 index 1373c078..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/source-analysis-run09.py +++ /dev/null @@ -1,270 +0,0 @@ -#!/usr/bin/env python3 -"""Group analysis of NARPS AO86 equal-indifference gain cope maps. - -Primary inference is a one-sided, one-sample sign-flip permutation max-t test -across the common participant brain coverage. The atlas ROI is descriptive and -does not replace the required whole-brain corrected test. -""" - -from __future__ import annotations - -import hashlib -import json -import os -import platform -import sys -from datetime import datetime, timezone -from pathlib import Path - -import matplotlib - -matplotlib.use("Agg") -import matplotlib.pyplot as plt -import nibabel as nib -import numpy as np -import pandas as pd -import scipy -from nilearn import datasets, image, plotting -from nilearn.glm.second_level import non_parametric_inference -from nibabel.affines import apply_affine -from scipy import ndimage, stats - - -ROOT = Path(__file__).resolve().parents[1] -INPUT = ROOT / "input" -OUT = ROOT / "results" -FIG = OUT / "figures" -N_PERM = 10_000 -SEED = 20261015 -ALPHA = 0.05 - - -def sha256(path: Path) -> str: - h = hashlib.sha256() - with path.open("rb") as stream: - for block in iter(lambda: stream.read(1024 * 1024), b""): - h.update(block) - return h.hexdigest() - - -def save_img(data: np.ndarray, ref: nib.spatialimages.SpatialImage, path: Path, dtype=None) -> None: - out = nib.Nifti1Image(data.astype(dtype or np.float32), ref.affine, ref.header.copy()) - out.set_data_dtype(dtype or np.float32) - nib.save(out, path) - - -def main() -> None: - OUT.mkdir(exist_ok=True) - FIG.mkdir(parents=True, exist_ok=True) - manifest = json.loads((INPUT / "sources.json").read_text()) - participants = pd.read_csv(INPUT / "participants.tsv", sep="\t") - file_entries = manifest["files"] - paths = [INPUT / name for name in file_entries if name.endswith(".nii.gz")] - paths.sort(key=lambda p: p.name) - ids = [p.name.split("_")[0] for p in paths] - - # Validate the frozen cohort, input identity, and image geometry before inference. - checks = [] - expected_ids = set(participants.participant_id) - if len(paths) != 54 or set(ids) != expected_ids or len(set(ids)) != len(ids): - raise ValueError(f"cohort mismatch: {len(paths)} images; {len(expected_ids)} metadata rows") - if set(ids) != {file_entries[p.relative_to(INPUT).as_posix()]["participant_id"] for p in paths}: - raise ValueError("image IDs do not match the source manifest") - imgs = [] - arrs = [] - ref = None - for p in paths: - entry = file_entries[p.relative_to(INPUT).as_posix()] - digest = sha256(p) - if p.stat().st_size != entry["bytes"] or digest != entry["sha256"]: - raise ValueError(f"checksum or byte-count mismatch: {p.name}") - im = nib.load(p) - if len(im.shape) != 3: - raise ValueError(f"not a 3D map: {p.name}, shape={im.shape}") - if ref is None: - ref = im - elif im.shape != ref.shape or not np.allclose(im.affine, ref.affine, atol=1e-5): - raise ValueError(f"spatial geometry mismatch: {p.name}") - d = im.get_fdata(dtype=np.float32) - if not np.isfinite(d).all(): - raise ValueError(f"non-finite values: {p.name}") - imgs.append(im) - arrs.append(d) - checks.append({"participant_id": ids[len(checks)], "file": p.relative_to(INPUT).as_posix(), - "bytes": p.stat().st_size, "sha256": digest, - "nonzero_voxels": int(np.count_nonzero(d)), - "min": float(d.min()), "max": float(d.max()), - "mean_nonzero": float(d[d != 0].mean())}) - - data = np.stack(arrs, axis=0) - coverage = np.all(np.isfinite(data) & (data != 0), axis=0) - n_vox = int(coverage.sum()) - if n_vox < 10_000: - raise ValueError(f"unexpectedly small common coverage mask: {n_vox} voxels") - save_img(coverage, ref, OUT / "common_brain_mask.nii.gz", np.uint8) - - # Whole-brain primary test: one-sample intercept, positive direction, sign flips. - # Nilearn returns -log10 FWE-corrected p-values using the permutation max-t null. - model = pd.DataFrame({"intercept": np.ones(len(imgs))}) - perm = non_parametric_inference( - second_level_input=imgs, - design_matrix=model, - second_level_contrast="intercept", - mask=OUT / "common_brain_mask.nii.gz", - model_intercept=False, - n_perm=N_PERM, - two_sided_test=False, - random_state=SEED, - n_jobs=max(1, min(8, os.cpu_count() or 1)), - tfce=False, - verbose=1, - ) - # Model uses no implicit intercept because the explicit all-ones column is tested. - # With tfce=False and threshold=None, Nilearn returns the max-t corrected -log10(p). - logp_img = perm - mean_map = np.mean(data, axis=0) - sd_map = np.std(data, axis=0, ddof=1) - t_data = np.zeros(ref.shape, dtype=np.float32) - t_data[coverage] = mean_map[coverage] / (sd_map[coverage] / np.sqrt(len(imgs))) - t_img = nib.Nifti1Image(t_data, ref.affine, ref.header.copy()) - t_data = t_img.get_fdata(dtype=np.float32) - logp_data = logp_img.get_fdata(dtype=np.float32) - p_fwe = np.power(10.0, -logp_data) - sig = coverage & np.isfinite(p_fwe) & (p_fwe <= ALPHA) - - save_img(np.where(coverage, mean_map, 0), ref, OUT / "mean_gain_cope.nii.gz") - save_img(np.where(coverage, sd_map, 0), ref, OUT / "sd_gain_cope.nii.gz") - save_img(t_data, ref, OUT / "one_sample_t.nii.gz") - save_img(logp_data, ref, OUT / "max_t_log10_fwe_p.nii.gz") - save_img(sig, ref, OUT / "max_t_fwe_p05_mask.nii.gz", np.uint8) - - # AAL SPM12 bilateral medial orbitofrontal parcels, independent of observed effects. - # This ROI is a transparent anatomical operationalization of vmPFC; the whole-brain - # corrected test remains the sole confirmatory criterion. - atlas = datasets.fetch_atlas_aal(version="SPM12", verbose=0) - label_names = {"Frontal_Med_Orb_L", "Frontal_Med_Orb_R"} - label_ids = {int(i) for i, name in zip(atlas.indices, atlas.labels) if name in label_names} - roi_native = image.resample_to_img(atlas.maps, imgs[0], interpolation="nearest") - roi_labels = roi_native.get_fdata(dtype=np.float32).astype(int) - roi = coverage & np.isin(roi_labels, list(label_ids)) - if not roi.any(): - raise ValueError("vmPFC medial-orbitofrontal ROI did not intersect common coverage") - save_img(roi, ref, OUT / "vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", np.uint8) - roi_means = data[:, roi].mean(axis=1) - roi_t = stats.ttest_1samp(roi_means, popmean=0, alternative="greater") - roi_mean = float(roi_means.mean()) - roi_se = float(stats.sem(roi_means)) - roi_ci = stats.t.interval(0.95, len(roi_means) - 1, loc=roi_mean, scale=roi_se) - roi_dz = float(roi_mean / roi_means.std(ddof=1)) - component_labels, n_components = ndimage.label(sig, structure=np.ones((3, 3, 3), dtype=np.uint8)) - components = [] - for component_id in range(1, n_components + 1): - component = component_labels == component_id - voxels = np.argwhere(component) - peak_offset = int(np.argmax(t_data[component])) - peak_ijk = voxels[peak_offset] - components.append({ - "extent_voxels_descriptive_26_connectivity": int(component.sum()), - "peak_t": float(t_data[tuple(peak_ijk)]), - "peak_mni_xyz_mm": [float(v) for v in apply_affine(ref.affine, peak_ijk)], - "peak_max_t_fwe_p": float(10 ** (-logp_data[tuple(peak_ijk)])), - "vmPFC_roi_overlap_voxels": int((component & roi).sum()), - }) - components.sort(key=lambda item: item["peak_t"], reverse=True) - roi_summary = { - "roi": "AAL SPM12 bilateral Frontal_Med_Orb_L/R", - "roi_atlas_label_ids": sorted(label_ids), - "roi_voxels_in_common_mask": int(roi.sum()), - "mean_cope": roi_mean, - "sd_participant_roi_means": float(roi_means.std(ddof=1)), - "se": roi_se, - "ci95_t": [float(x) for x in roi_ci], - "cohen_dz": roi_dz, - "one_sided_t": float(roi_t.statistic), - "one_sided_p_uncorrected_descriptive": float(roi_t.pvalue), - "n": len(roi_means), - } - pd.DataFrame({"participant_id": ids, "roi_mean_cope": roi_means}).to_csv( - OUT / "vmPFC_participant_effects.tsv", sep="\t", index=False - ) - pd.DataFrame(checks).to_csv(OUT / "input_qc.tsv", sep="\t", index=False) - - max_t = float(np.nanmax(t_data[coverage])) - max_logp = float(np.nanmax(logp_data[coverage])) - result = { - "analysis": "AO86 equal-indifference group gain cope, one-sided positive whole-brain max-t sign-flip test", - "n": len(imgs), "n_excluded": 0, "n_permutations": N_PERM, - "seed": SEED, "alpha_fwe": ALPHA, - "common_mask_voxels": n_vox, - "voxel_size_mm": [float(abs(x)) for x in ref.header.get_zooms()[:3]], - "max_t_in_mask": max_t, - "max_t_log10_fwe_p": max_logp, - "max_t_fwe_p": float(10 ** (-max_logp)), - "significant_voxels_fwe_p_le_0_05": int(sig.sum()), - "significant_components_descriptive_only": components, - "vmPFC_descriptive_summary": roi_summary, - "data_interpretation": "participant-level cope estimates from a mean-centered, variance-normalized gain modulator; not currency-unit slopes or standardized test statistics", - "group_model_limit": "no first-level variance maps are supplied; unweighted one-sample group inference cannot reproduce precision-weighted mixed-effects estimation", - "software": {"python": platform.python_version(), "numpy": np.__version__, "scipy": scipy.__version__, - "nilearn": __import__("nilearn").__version__, "nibabel": nib.__version__, - "platform": platform.platform()}, - "generated_utc": datetime.now(timezone.utc).isoformat(), - } - (OUT / "results.json").write_text(json.dumps(result, indent=2) + "\n") - - # Group effect figure: cope estimates in atlas-scaled ROI and whole-brain inference. - fig, axes = plt.subplots(1, 2, figsize=(10.8, 4.2), constrained_layout=True) - axes[0].hist(roi_means, bins=12, color="#557a95", edgecolor="white") - axes[0].axvline(0, color="#555555", lw=1, ls="--") - axes[0].axvline(roi_mean, color="#b13c31", lw=2) - axes[0].set(xlabel="Participant mean cope in bilateral medial OFC ROI", - ylabel="Participants", title="vmPFC operationalization") - axes[0].text(0.03, 0.97, - f"n = {len(roi_means)}\nmean = {roi_mean:.3g}\n95% CI [{roi_ci[0]:.3g}, {roi_ci[1]:.3g}]", - va="top", ha="left", transform=axes[0].transAxes, fontsize=9) - axes[1].axis("off") - axes[1].text(0.02, 0.96, - "Whole-brain positive-direction max-t permutation test\n\n" - f"{N_PERM:,} sign flips; family-wise α = .05\n" - f"Common mask: {n_vox:,} voxels\n" - f"FWE-significant voxels: {int(sig.sum()):,}\n" - f"vmPFC ROI overlap: {int((sig & roi).sum()):,} voxels\n" - f"Strongest corrected p: {10**(-max_logp):.4g}\n\n" - "Corrected p-values control error across the full mask.", - va="top", ha="left", transform=axes[1].transAxes, fontsize=11, - bbox={"boxstyle": "round,pad=0.6", "facecolor": "#f3f4f5", "edgecolor": "#d5d8dc"}) - fig.suptitle("Potential gain effect: group analysis", fontsize=14) - fig.savefig(FIG / "gain_group_inference.png", dpi=220) - plt.close(fig) - - # Show the unthresholded group effect and the whole-brain corrected result at vmPFC slices. - template = datasets.load_mni152_template(resolution=2) - display = plotting.plot_stat_map( - t_img, bg_img=template, threshold=stats.t.ppf(0.95, len(imgs)-1), - display_mode="ortho", cut_coords=(0, 45, -10), - title=None, - colorbar=True, black_bg=False, - ) - display.title("vmPFC group t map (uncorrected display threshold)", y=0.95, size=13) - display.add_contours(OUT / "vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", colors=["cyan"], linewidths=1.2) - display.add_contours(OUT / "max_t_fwe_p05_mask.nii.gz", colors=["magenta"], linewidths=1.5) - display.savefig(FIG / "gain_tmap_vmPFC.png", dpi=220) - display.close() - - corrected_t = np.where(sig, t_data, 0) - corrected_img = nib.Nifti1Image(corrected_t, ref.affine, ref.header.copy()) - corrected_display = plotting.plot_stat_map( - corrected_img, bg_img=template, threshold=0, - display_mode="ortho", cut_coords=(-26, -100, -4), - title=None, - colorbar=True, black_bg=False, - ) - corrected_display.title("Positive t values surviving whole-brain max-t FWE", y=0.95, size=13) - corrected_display.savefig(FIG / "gain_fwe_significant_map.png", dpi=220) - corrected_display.close() - - print(json.dumps(result, indent=2)) - - -if __name__ == "__main__": - main() diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-01.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-01.json deleted file mode 100644 index bd230c0a..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-01.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "analysis": "positive one-sample t test with Bonferroni whole-brain FWE; fixed-SE sign-flip max-T sensitivity", - "n": 54, - "voxels_tested": 186400, - "n_permutations": 9999, - "seed": 20261015, - "grid_shape": [ - 97, - 115, - 81 - ], - "search_mask": "common nonzero support intersected with MNI152 brain mask resampled to input grid", - "bonferroni_alpha": 0.05, - "degrees_of_freedom": 53, - "maxT_95_threshold": 32.313716888427734, - "n_voxels_fwe05": 0, - "parametric_bonferroni_fwe05_voxels": 11, - "parametric_bonferroni_fwe05_voxels_in_vmPFC": 0, - "max_observed_t": 6.617173246302241, - "max_observed_t_uncorrected_p": 9.311564027968496e-09, - "max_observed_t_bonferroni_p": 0.0017356755348133276, - "max_observed_t_mni_mm": [ - -26.0, - -102.0, - -3.599997043609619 - ], - "minimum_attainable_mc_p": 0.0001, - "vmPFC": { - "n": 54, - "roi_voxels": 1291, - "mean_coefficient": -0.0077939098700881, - "sd_between_participant_roi_mean": 0.09705685079097748, - "ci95_low": -0.03428533056504693, - "ci95_high": 0.018697510824870728, - "participants_positive_roi_mean": 23, - "aal3v2_labels": [ - "Frontal_Med_Orb_L", - "Frontal_Med_Orb_R" - ], - "interpretation": "descriptive only; whole-brain corrected inference is primary" - }, - "maps_sha256": { - "sub-001_hypo1_cope.nii.gz": "baf3440fbc7f5f59dea28d231e9c5eb9cf00a15b6924342f4b79e7faf56a929a", - "sub-003_hypo1_cope.nii.gz": "a8c9b6276d1597bc43695516c9ac5b2893a8d8408cd053161ceaddbd42dafb20", - "sub-005_hypo1_cope.nii.gz": "415383874c65fd9e10bb03bf2aa59bfcd1d10650bc5d0560a249e85d52b7b205", - "sub-009_hypo1_cope.nii.gz": "33af129d8ba13cd4b6175089706c531471be1e0bd7ccd43ece10751c8cc3254c", - "sub-011_hypo1_cope.nii.gz": "6f74dd449eefa6eff40ec00eb046ec7e8bb13c0b7c2ac1874155a9c166692352", - "sub-013_hypo1_cope.nii.gz": "bfa79b82f931d81d6387e82b8413f1f889a06f36275ba510554669c84a3c026f", - "sub-015_hypo1_cope.nii.gz": "5d98f6d74823516768659967f95ef43728584eab024c58af30987783515d7694", - "sub-017_hypo1_cope.nii.gz": "dca9eac4d6f0ef4e2a3e631b2d10f89c5362863698cec4a7c7b9b14128ae96d9", - "sub-019_hypo1_cope.nii.gz": "f9df911028e0ee06d230b097d8c7011b3c09f34df436e8854cd959145777533d", - "sub-021_hypo1_cope.nii.gz": "7dd60d722e243f429633f1c63c9a810afd73d1ffd0e0e68fcdd2bf3790d78db1", - "sub-025_hypo1_cope.nii.gz": "545945b0a5f7e51d65e2828e76e776fffcbb33b1635bb7272bc0948bfbc6b7b4", - "sub-027_hypo1_cope.nii.gz": "dffa472f8cfe30b9c2025470924fceb23d30fb881db6b893d436faa8d8dcef2f", - "sub-029_hypo1_cope.nii.gz": "0ed1be0ce40d1becaec5cf18487670822b8cb5fcbc5ad0ec2cb34d9a3ed7071b", - "sub-033_hypo1_cope.nii.gz": "04778467af0a6c93d531d30f73c5492384be59044ebd7be3e95862700e2e9117", - "sub-035_hypo1_cope.nii.gz": "211fd859f33d69891531ad3e5dd66fe0c0891b20c58e6ef8aa21b4d49ff030c9", - "sub-037_hypo1_cope.nii.gz": "a4d76561e8ba1848572a474afce754310f4ee101cfd99276eb3105289cc0934b", - "sub-039_hypo1_cope.nii.gz": "744df860cfb8410aae16bcb1742e7390c51306c66959bb19da9f5b57206bba7b", - "sub-041_hypo1_cope.nii.gz": "f93eeadcd3f57239e4c32c5df2ca2c4013bf424978701bd5beec535ace24669f", - "sub-043_hypo1_cope.nii.gz": "520f19805c6c4358bc56e9bba290b9b79a80c14385bc7be90e4bd81b3e37e771", - "sub-045_hypo1_cope.nii.gz": "3826c6daf5a7be7b03ae552847c4a8709a1b86c2498735e6ce80768cd5d0b88e", - "sub-047_hypo1_cope.nii.gz": "8585e8be8eebe84dd316eeb1f86090a8123f88a8b5d275bc2c39049a3bf4bf34", - "sub-049_hypo1_cope.nii.gz": "e01dacebea8fa444b7696e90a53e9ab0b3543b0da780ba430875b3fde117e084", - "sub-051_hypo1_cope.nii.gz": "74e2887ed9eb4252357cdce98eb53b5b8ab2620ee5ee57aee1bc677c0099b2ca", - "sub-053_hypo1_cope.nii.gz": "a3b3509a0240c5b12a9c63f94f2913e69eeb7fab4fbe92ac1adc62eb45bdd0ba", - "sub-055_hypo1_cope.nii.gz": "136983cd89668779e26eba6847653f1d765452f8a2d5675fce037f751edb0ea8", - "sub-057_hypo1_cope.nii.gz": "aafa1a371d72e690f737d2507c9d7bbd20c620377cd294d44555c856a0566496", - "sub-059_hypo1_cope.nii.gz": "0fa3da37a11640705014665f546ba86735472a8a2b7fdf1b37177a55abd0a65a", - "sub-061_hypo1_cope.nii.gz": "cb8bc3bf4264fe156348d3c171335b84978eb8d32b0fd331db9f4661dad2bdff", - "sub-063_hypo1_cope.nii.gz": "2a5458eb314441b01dacfa1bcea9e9a95f983d2994aa6b853ebe1a20b017a467", - "sub-067_hypo1_cope.nii.gz": "9977321f1f775f04dab881d740ea5cc491dadda07405f2380c61c50e5c3a01fc", - "sub-069_hypo1_cope.nii.gz": "bd22905ebe789319f082b0fdb6ba7cd5aaf6590fd8424d6c396cd54c0602a318", - "sub-071_hypo1_cope.nii.gz": "7286639323904bfe851588ce06c68396d535fad2f7ac5de0de1b73c4c17494f4", - "sub-073_hypo1_cope.nii.gz": "67086bf1f48b14bc095999f6535656649d01da82d1327715c5b3ab89ea6c5f7b", - "sub-075_hypo1_cope.nii.gz": "b9151e72e3a8a609a23ac73dbd3d6ba8423f271ddd72149cf27c04e25bf9f980", - "sub-077_hypo1_cope.nii.gz": "79aaf5add3d475590cb7fd82a7fbd32517dbde2cb859824864a2b10d6fafb9ed", - "sub-079_hypo1_cope.nii.gz": "d505691fdcfa43ad709fca3803c954069afe4e2f2dc865edb5b0812562d1eb8c", - "sub-081_hypo1_cope.nii.gz": "a8a342b5e333dbff9776b5a4847929737144dc8029830036636eb86c566f4f76", - "sub-083_hypo1_cope.nii.gz": "76a526c303c406342487da0e5deee5a6ca6b345e9b6ccb052149c4c32f0833ae", - "sub-085_hypo1_cope.nii.gz": "74b1af4e4b667a70c79b54a10294be744da5538b814057186eae48710520b65a", - "sub-087_hypo1_cope.nii.gz": "7ecb372d1249cd5368121b1e7b7f7ee33ef5430575097431dcd3f27dcdad7b04", - "sub-089_hypo1_cope.nii.gz": "3b380ae44cdbf0171d9ec12ff9ecdb47227496cda5ccd5b5cfb09164c5d91846", - "sub-093_hypo1_cope.nii.gz": "7802aea70713a4be7683921188b92a563d86f221f191a8bac4ee9c4decb33a1c", - "sub-095_hypo1_cope.nii.gz": "291760d6479e336093a651e33df20deab99e434cba5afbf31fc019c8d1fe816e", - "sub-099_hypo1_cope.nii.gz": "30b063515e6b538183fe37c561e87e47681756876a8f6a8a607839d8d3de0e42", - "sub-103_hypo1_cope.nii.gz": "a088633f18ac3e35fc2512e9dc21ec3d92efd06749d4027338ccb448a635919c", - "sub-105_hypo1_cope.nii.gz": "12a1b50eaa5be6983990c5e77f985f9750340204eaa3fff7e70829f07707e6a2", - "sub-107_hypo1_cope.nii.gz": "4580aade93323d0d14f9a3a1932a428004a2f657980b5669f9274102bb370802", - "sub-109_hypo1_cope.nii.gz": "931ba1128720bbaa99e7fce8f036a331581d6d07e00212a1f402eae7959299cb", - "sub-113_hypo1_cope.nii.gz": "e5f81435ddc2d5703fa4ea37d6597601e71b50f8c53fb6047fb0067c17282c65", - "sub-115_hypo1_cope.nii.gz": "5046f7c2fa1c5d1be6237d38f631beca13df8a3a8ded11121082838a533a44bf", - "sub-117_hypo1_cope.nii.gz": "711159acfa23c45ab82903f658cafe0fa539f39e077e451f6b0728fdb359445f", - "sub-119_hypo1_cope.nii.gz": "01738a10e34e46c5ea1a4a192b9484595ee352d62375095b76726347455aabd7", - "sub-121_hypo1_cope.nii.gz": "94357665b89cfa1b9157e71aab10f78b49585a790a4a01d9e4693698e185d892", - "sub-123_hypo1_cope.nii.gz": "1219377e08c306753c1e382d431b1e7a55c7143cdc5f800fb65e92fa7e72f888" - }, - "versions": { - "python": "3.13.16", - "numpy": "2.5.4", - "scipy": "1.18.1", - "nibabel": "5.4.2", - "nilearn": "0.14.1", - "pandas": "3.0.6" - }, - "elapsed_seconds": 13.012866973876953 -} \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-02.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-02.json deleted file mode 100644 index 601f06c9..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-02.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "analysis": "one-sample group model; positive gain effect; whole-brain Bonferroni primary with sign-flip max-T sensitivity", - "n_included": 54, - "n_excluded": 0, - "n_maps": 54, - "analysis_mask_voxels": 192333, - "mask_rule": "MNI152 brain mask intersected with nonzero finite map support in at least 90% of participants", - "space": "MNI152NLin2009cAsym (source-reported)", - "permutations": 4999, - "random_seed": 20261015, - "primary_correction": "one-sided one-sample Student t; Bonferroni across all analysis-mask voxels", - "bonferroni_critical_t": 5.711008680196454, - "whole_brain_bonferroni_fwe_voxels_p_lt_0.05": 11, - "whole_brain_bonferroni_peak": { - "ijk": [ - 35, - 15, - 31 - ], - "mni_mm": [ - -26.0, - -102.0, - -3.6 - ], - "t": 6.617173194885254, - "bonferroni_fwe_p": 0.0017909210873767734, - "maxT_fwe_p": 1.0 - }, - "maxT_sensitivity_critical_t_95": 39.393775939941406, - "whole_brain_maxT_fwe_voxels_p_lt_0.05": 0, - "observed_t_max": 6.617173246302241, - "observed_t_max_uncorrected_one_sided_p": 9.311564027968496e-09, - "maxT_fwe_p_minimum": 1.0, - "maxT_null_quantiles_90_95_99": [ - 37.85304183959961, - 39.39071006774902, - 43.08586296081541 - ], - "vmPFC_roi": { - "definition": "12 mm sphere centered MNI (0, 40, -12)", - "voxels_in_mask": 762, - "mean_effect_estimate": -0.00565101111674487, - "participant_mean_effect_sd": 0.0975710461037451, - "ci95_t": [ - -0.03228278011518656, - 0.020980757881696822 - ], - "one_sample_t": -0.4256004517601139, - "df": 53, - "uncorrected_one_sided_p": 0.6639388455692432, - "voxels_whole_brain_FWE_p_lt_0.05": 0, - "voxels_Bonferroni_whole_brain_p_lt_0.05": 0, - "minimum_voxelwise_Bonferroni_whole_brain_p_in_roi": 1.0, - "minimum_voxelwise_whole_brain_FWE_p_in_roi": 1.0 - }, - "participant_global_mean_median": -0.007791515575869469, - "participant_global_mean_mad_scaled": 0.05116067438567886, - "participants_global_robust_z_gt_3_abs": [], - "median_voxel_mean_effect": -0.006044445697356154, - "mean_effect_across_mask_voxels": -0.006902556266463106, - "notes": [ - "Maps are participant contrast parameter estimates, not standardized statistics.", - "The gain modulator was variance-normalized upstream; effects are not per-currency-unit slopes.", - "No participant variance maps are supplied; group model treats participant estimates equally.", - "Bonferroni inference assumes Gaussian participant effects for the voxelwise t tests but not independent voxels.", - "Sign-flip max-T sensitivity assumes independent participants and symmetric errors under the null; the empirical null maxima were extreme relative to observed t statistics." - ] -} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-03.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-03.json deleted file mode 100644 index fc9a8227..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-03.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "n_participants": 54, - "n_maps": 54, - "n_excluded": 0, - "source_manifest_checksums_verified": true, - "all_map_values_finite": true, - "coverage_rule": "voxels nonzero in at least 90% of participant maps", - "analysis_voxels": 210968, - "voxel_volume_mm3": 9.600000381469725, - "permutation_test": "one-sided participant sign-flip max-T; family-wise corrected across coverage mask", - "permutations": 9999, - "seed": 20261015, - "whole_brain_alpha": 0.05, - "n_whole_brain_fwer_significant": 24, - "n_26_connected_fwer_clusters": 3, - "fwer_clusters": [ - { - "cluster": 1, - "voxels": 17, - "peak_mni_mm": [ - -26.0, - -102.0, - -3.599997043609619 - ], - "peak_t": 6.617173194885254, - "peak_p_fwer_maxT": 0.000699999975040555 - }, - { - "cluster": 3, - "voxels": 5, - "peak_mni_mm": [ - 30.0, - -94.0, - -8.399997234344482 - ], - "peak_t": 6.1934027671813965, - "peak_p_fwer_maxT": 0.0026000000070780516 - }, - { - "cluster": 2, - "voxels": 2, - "peak_mni_mm": [ - 26.0, - -98.0, - -1.1999969482421875 - ], - "peak_t": 5.760898590087891, - "peak_p_fwer_maxT": 0.013700000010430813 - } - ], - "n_fwer_significant_in_vmPFC_roi": 0, - "whole_brain_peak": { - "ijk": [ - 35, - 15, - 31 - ], - "mni_mm": [ - -26.0, - -102.0, - -3.599997043609619 - ], - "mean_cope": 0.11212667576209814, - "t": 6.617173246302241, - "p_uncorrected": 9.311564027968496e-09, - "p_fwer_maxT": 0.0007 - }, - "vmPFC_roi": { - "definition": "10-mm radius sphere centered at MNI [0, 42, -8] mm", - "center_mni_mm": [ - 0.0, - 42.0, - -8.0 - ], - "radius_mm": 10.0, - "voxels": 429, - "mean_subject_roi_cope": -0.009492761621111255, - "between_subject_sd": 0.1033353461800205, - "se": 0.014062159474161614, - "ci95_t": [ - -0.03769788167193214, - 0.018712358429709627 - ], - "one_sample_t": -0.6750571730148306, - "p_one_sided_uncorrected_descriptive": 0.748713036086836, - "peak": { - "ijk": [ - 44, - 85, - 28 - ], - "mni_mm": [ - -8.0, - 38.0, - -10.799997329711914 - ], - "t": 1.6324519953562382, - "p_fwer_maxT": 1.0 - } - }, - "software": { - "python": "3.13.16", - "numpy": "2.5.4", - "scipy": "1.18.1", - "nibabel": "5.4.2", - "pandas": "3.0.6" - }, - "input_sha256": { - "input/data/sub-001_hypo1_cope.nii.gz": "baf3440fbc7f5f59dea28d231e9c5eb9cf00a15b6924342f4b79e7faf56a929a", - "input/data/sub-003_hypo1_cope.nii.gz": "a8c9b6276d1597bc43695516c9ac5b2893a8d8408cd053161ceaddbd42dafb20", - "input/data/sub-005_hypo1_cope.nii.gz": "415383874c65fd9e10bb03bf2aa59bfcd1d10650bc5d0560a249e85d52b7b205", - "input/data/sub-009_hypo1_cope.nii.gz": "33af129d8ba13cd4b6175089706c531471be1e0bd7ccd43ece10751c8cc3254c", - "input/data/sub-011_hypo1_cope.nii.gz": "6f74dd449eefa6eff40ec00eb046ec7e8bb13c0b7c2ac1874155a9c166692352", - "input/data/sub-013_hypo1_cope.nii.gz": "bfa79b82f931d81d6387e82b8413f1f889a06f36275ba510554669c84a3c026f", - "input/data/sub-015_hypo1_cope.nii.gz": "5d98f6d74823516768659967f95ef43728584eab024c58af30987783515d7694", - "input/data/sub-017_hypo1_cope.nii.gz": "dca9eac4d6f0ef4e2a3e631b2d10f89c5362863698cec4a7c7b9b14128ae96d9", - "input/data/sub-019_hypo1_cope.nii.gz": "f9df911028e0ee06d230b097d8c7011b3c09f34df436e8854cd959145777533d", - "input/data/sub-021_hypo1_cope.nii.gz": "7dd60d722e243f429633f1c63c9a810afd73d1ffd0e0e68fcdd2bf3790d78db1", - "input/data/sub-025_hypo1_cope.nii.gz": "545945b0a5f7e51d65e2828e76e776fffcbb33b1635bb7272bc0948bfbc6b7b4", - "input/data/sub-027_hypo1_cope.nii.gz": "dffa472f8cfe30b9c2025470924fceb23d30fb881db6b893d436faa8d8dcef2f", - "input/data/sub-029_hypo1_cope.nii.gz": "0ed1be0ce40d1becaec5cf18487670822b8cb5fcbc5ad0ec2cb34d9a3ed7071b", - "input/data/sub-033_hypo1_cope.nii.gz": "04778467af0a6c93d531d30f73c5492384be59044ebd7be3e95862700e2e9117", - "input/data/sub-035_hypo1_cope.nii.gz": "211fd859f33d69891531ad3e5dd66fe0c0891b20c58e6ef8aa21b4d49ff030c9", - "input/data/sub-037_hypo1_cope.nii.gz": "a4d76561e8ba1848572a474afce754310f4ee101cfd99276eb3105289cc0934b", - "input/data/sub-039_hypo1_cope.nii.gz": "744df860cfb8410aae16bcb1742e7390c51306c66959bb19da9f5b57206bba7b", - "input/data/sub-041_hypo1_cope.nii.gz": "f93eeadcd3f57239e4c32c5df2ca2c4013bf424978701bd5beec535ace24669f", - "input/data/sub-043_hypo1_cope.nii.gz": "520f19805c6c4358bc56e9bba290b9b79a80c14385bc7be90e4bd81b3e37e771", - "input/data/sub-045_hypo1_cope.nii.gz": "3826c6daf5a7be7b03ae552847c4a8709a1b86c2498735e6ce80768cd5d0b88e", - "input/data/sub-047_hypo1_cope.nii.gz": "8585e8be8eebe84dd316eeb1f86090a8123f88a8b5d275bc2c39049a3bf4bf34", - "input/data/sub-049_hypo1_cope.nii.gz": "e01dacebea8fa444b7696e90a53e9ab0b3543b0da780ba430875b3fde117e084", - "input/data/sub-051_hypo1_cope.nii.gz": "74e2887ed9eb4252357cdce98eb53b5b8ab2620ee5ee57aee1bc677c0099b2ca", - "input/data/sub-053_hypo1_cope.nii.gz": "a3b3509a0240c5b12a9c63f94f2913e69eeb7fab4fbe92ac1adc62eb45bdd0ba", - "input/data/sub-055_hypo1_cope.nii.gz": "136983cd89668779e26eba6847653f1d765452f8a2d5675fce037f751edb0ea8", - "input/data/sub-057_hypo1_cope.nii.gz": "aafa1a371d72e690f737d2507c9d7bbd20c620377cd294d44555c856a0566496", - "input/data/sub-059_hypo1_cope.nii.gz": "0fa3da37a11640705014665f546ba86735472a8a2b7fdf1b37177a55abd0a65a", - "input/data/sub-061_hypo1_cope.nii.gz": "cb8bc3bf4264fe156348d3c171335b84978eb8d32b0fd331db9f4661dad2bdff", - "input/data/sub-063_hypo1_cope.nii.gz": "2a5458eb314441b01dacfa1bcea9e9a95f983d2994aa6b853ebe1a20b017a467", - "input/data/sub-067_hypo1_cope.nii.gz": "9977321f1f775f04dab881d740ea5cc491dadda07405f2380c61c50e5c3a01fc", - "input/data/sub-069_hypo1_cope.nii.gz": "bd22905ebe789319f082b0fdb6ba7cd5aaf6590fd8424d6c396cd54c0602a318", - "input/data/sub-071_hypo1_cope.nii.gz": "7286639323904bfe851588ce06c68396d535fad2f7ac5de0de1b73c4c17494f4", - "input/data/sub-073_hypo1_cope.nii.gz": "67086bf1f48b14bc095999f6535656649d01da82d1327715c5b3ab89ea6c5f7b", - "input/data/sub-075_hypo1_cope.nii.gz": "b9151e72e3a8a609a23ac73dbd3d6ba8423f271ddd72149cf27c04e25bf9f980", - "input/data/sub-077_hypo1_cope.nii.gz": "79aaf5add3d475590cb7fd82a7fbd32517dbde2cb859824864a2b10d6fafb9ed", - "input/data/sub-079_hypo1_cope.nii.gz": "d505691fdcfa43ad709fca3803c954069afe4e2f2dc865edb5b0812562d1eb8c", - "input/data/sub-081_hypo1_cope.nii.gz": "a8a342b5e333dbff9776b5a4847929737144dc8029830036636eb86c566f4f76", - "input/data/sub-083_hypo1_cope.nii.gz": "76a526c303c406342487da0e5deee5a6ca6b345e9b6ccb052149c4c32f0833ae", - "input/data/sub-085_hypo1_cope.nii.gz": "74b1af4e4b667a70c79b54a10294be744da5538b814057186eae48710520b65a", - "input/data/sub-087_hypo1_cope.nii.gz": "7ecb372d1249cd5368121b1e7b7f7ee33ef5430575097431dcd3f27dcdad7b04", - "input/data/sub-089_hypo1_cope.nii.gz": "3b380ae44cdbf0171d9ec12ff9ecdb47227496cda5ccd5b5cfb09164c5d91846", - "input/data/sub-093_hypo1_cope.nii.gz": "7802aea70713a4be7683921188b92a563d86f221f191a8bac4ee9c4decb33a1c", - "input/data/sub-095_hypo1_cope.nii.gz": "291760d6479e336093a651e33df20deab99e434cba5afbf31fc019c8d1fe816e", - "input/data/sub-099_hypo1_cope.nii.gz": "30b063515e6b538183fe37c561e87e47681756876a8f6a8a607839d8d3de0e42", - "input/data/sub-103_hypo1_cope.nii.gz": "a088633f18ac3e35fc2512e9dc21ec3d92efd06749d4027338ccb448a635919c", - "input/data/sub-105_hypo1_cope.nii.gz": "12a1b50eaa5be6983990c5e77f985f9750340204eaa3fff7e70829f07707e6a2", - "input/data/sub-107_hypo1_cope.nii.gz": "4580aade93323d0d14f9a3a1932a428004a2f657980b5669f9274102bb370802", - "input/data/sub-109_hypo1_cope.nii.gz": "931ba1128720bbaa99e7fce8f036a331581d6d07e00212a1f402eae7959299cb", - "input/data/sub-113_hypo1_cope.nii.gz": "e5f81435ddc2d5703fa4ea37d6597601e71b50f8c53fb6047fb0067c17282c65", - "input/data/sub-115_hypo1_cope.nii.gz": "5046f7c2fa1c5d1be6237d38f631beca13df8a3a8ded11121082838a533a44bf", - "input/data/sub-117_hypo1_cope.nii.gz": "711159acfa23c45ab82903f658cafe0fa539f39e077e451f6b0728fdb359445f", - "input/data/sub-119_hypo1_cope.nii.gz": "01738a10e34e46c5ea1a4a192b9484595ee352d62375095b76726347455aabd7", - "input/data/sub-121_hypo1_cope.nii.gz": "94357665b89cfa1b9157e71aab10f78b49585a790a4a01d9e4693698e185d892", - "input/data/sub-123_hypo1_cope.nii.gz": "1219377e08c306753c1e382d431b1e7a55c7143cdc5f800fb65e92fa7e72f888" - }, - "elapsed_seconds": 46.45, - "command": [ - "/Users/johnlee/code/CON/stamped-in-practice-workers/codex/narps-r1-03/.pixi/envs/default/bin/python", - "/Users/johnlee/code/CON/stamped-in-practice-workers/codex/narps-r1-03/analyze.py", - "--permutations", - "9999", - "--seed", - "20261015" - ] -} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-05.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-05.json deleted file mode 100644 index fd9592ae..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-05.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "analysis": "One-sample intercept-only group model of participant gain-effect maps", - "n_participants_input": 54, - "n_participants_included": 54, - "exclusions": [], - "image_shape": [ - 97, - 115, - 81 - ], - "voxel_size_mm": [ - 2.0, - 2.0, - 2.4000000953674316 - ], - "mask_voxels_common_nonzero": 198029, - "vmPFC_roi_definition": { - "type": "independent spherical ROI in MNI space", - "center_mni_mm": [ - 0.0, - 46.0, - -6.0 - ], - "radius_mm": 10.0, - "source": "Bartra, McGuire & Kable (2013) valuation meta-analysis-informed canonical vmPFC location; see report", - "voxels_in_common_mask": 413 - }, - "test": { - "direction": "positive one-sided", - "method": "Nilearn non_parametric_inference; max-t permutation FWER across common whole-brain mask", - "permutations": 10000, - "random_seed": 20261015, - "alpha": 0.05, - "hypothesis_supported_in_vmPFC": false, - "positive_whole_brain_effect_anywhere": true, - "positive_whole_brain_fwe_significant_voxels": 24, - "positive_whole_brain_fwe_clusters_26_connected": 3, - "positive_whole_brain_fwe_peaks": [ - { - "cluster_id": 1, - "voxels": 17, - "peak_t": 6.617175579071045, - "peak_fwe_p": 0.0008999099956057294, - "peak_x_mni": -26.0, - "peak_y_mni": -102.0, - "peak_z_mni": -3.599997043609619 - }, - { - "cluster_id": 2, - "voxels": 2, - "peak_t": 5.760898113250732, - "peak_fwe_p": 0.01269872862940896, - "peak_x_mni": 26.0, - "peak_y_mni": -98.0, - "peak_z_mni": -1.1999969482421875 - }, - { - "cluster_id": 3, - "voxels": 5, - "peak_t": 6.193403244018555, - "peak_fwe_p": 0.00289971062598638, - "peak_x_mni": 30.0, - "peak_y_mni": -94.0, - "peak_z_mni": -8.399997234344482 - } - ], - "max_group_t": 6.617175579071045, - "max_group_t_mni_mm": [ - -26.0, - -102.0, - -3.599997043609619 - ], - "max_voxel_fwe_p": 0.0008999099956057294, - "vmPFC_max_t": 1.2987258434295654, - "vmPFC_peak_mni_mm": [ - 0.0, - 42.0, - -8.399997234344482 - ], - "vmPFC_peak_whole_brain_fwe_p": 1.0, - "roi_mean_effect": -0.011330806650221348, - "roi_sd_between_subjects": 0.10848882049322128, - "roi_mean_effect_95pct_t_ci": [ - -0.04094255441417176, - 0.01828094111372906 - ], - "roi_one_sample_t_descriptive": -0.7674899697303772, - "roi_one_sample_p_two_sided_descriptive_not_support_test": 0.4461957812309265, - "uncorrected_voxels_p_lt_0_001": 620 - }, - "software": { - "python": "3.13.16", - "nilearn": "0.14.1", - "nibabel": "5.4.2", - "numpy": "2.5.4", - "scipy": "1.18.1", - "pandas": "3.0.6" - }, - "created_utc": "2026-10-16T03:28:29.342400+00:00", - "script_sha256": "a97d38d8c7cb60fb2687c34885c0098bd86bd068145305675ec5377db7b8223c", - "platform": "macOS-27.0.1-arm64-arm-64bit-Mach-O", - "python_executable": "/Users/johnlee/code/CON/stamped-in-practice-workers/codex/narps-r1-05/.pixi/envs/default/bin/python" -} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-06.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-06.json deleted file mode 100644 index 3a3da636..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-06.json +++ /dev/null @@ -1,324 +0,0 @@ -{ - "analysis": { - "n_participants": 54, - "n_excluded": 0, - "group": "equalIndifference", - "model": "one-sample voxelwise t test of participant gain-effect estimates against zero", - "direction": "positive", - "multiple_comparisons": "one-sided permutation max-T family-wise correction across common whole-brain support", - "permutations": 9999, - "seed": 20261015, - "permutation_p_resolution": 0.0001, - "mask_voxels": 186192, - "mask_rule": "TemplateFlow MNI152NLin2009cAsym desc-brain mask resampled nearest-neighbor to map grid, intersected with voxels having nonzero estimates in all 54 maps", - "brain_mask_voxels_on_map_grid": 196466, - "common_support_outside_brain_mask_voxels": 11837, - "relaxed_90pct_support_voxels": 192333, - "vmPFC_search_zone": "MNI x -20 to 20, y 15 to 60, z -20 to 10 mm", - "vmPFC_common_voxels": 5754, - "vmPFC_significant_voxels_fwe05": 0, - "roi_mean_effect_estimate": -9.617067849763703e-05, - "roi_sd_between_participants": 0.05217086123910426, - "roi_ci95_t": [ - -0.014336074630047567, - 0.014143733273052291 - ], - "roi_t_df53": -0.013546015051782873, - "roi_p_one_sided_uncorrected_descriptive": 0.5053784811400704, - "roi_p_two_sided_uncorrected_descriptive": 0.9892430377198591, - "roi_peak": { - "t": 4.191847763594081, - "mni_mm": [ - -2.0, - 24.0, - -17.99999761581421 - ], - "p_fwe": 0.7778 - }, - "whole_brain_positive_peak": { - "t": 6.617173246302241, - "p_fwe": 0.0007, - "mni_mm": [ - -26.0, - -102.0, - -3.599997043609619 - ], - "voxel_ijk": [ - 35, - 15, - 31 - ] - }, - "whole_brain_fwe05_voxel_count": 24, - "hypothesis_supported": false, - "metadata_age_mean_sd": [ - 26.055555555555557, - 3.0493838948818466 - ], - "metadata_gender_counts": { - "F": 30, - "M": 24 - }, - "map_shape": [ - 97, - 115, - 81 - ], - "map_affine": [ - [ - 2.0, - 0.0, - 0.0, - -96.0 - ], - [ - 0.0, - 2.0, - 0.0, - -132.0 - ], - [ - 0.0, - 0.0, - 2.4000000953674316, - -78.0 - ], - [ - 0.0, - 0.0, - 0.0, - 1.0 - ] - ], - "brain_mask_source": "TemplateFlow tpl-MNI152NLin2009cAsym_res-02_desc-brain_mask.nii.gz", - "brain_mask_sha256": "7a71e9ce99d2af7b68bb5c163908c8e25f4c7a198806fb0893a5c1759b480ecd", - "all_maps_finite": true, - "all_grids_identical": true, - "effect_units": "upstream coefficient for mean-centered, variance-normalized gain modulator; not per currency unit", - "run_seconds": 11.829278945922852, - "software": { - "python": "3.13.16", - "numpy": "2.5.4", - "scipy": "1.18.1", - "nibabel": "5.4.2" - } - }, - "inputs": [ - { - "file": "input/data/sub-001_hypo1_cope.nii.gz", - "sha256": "baf3440fbc7f5f59dea28d231e9c5eb9cf00a15b6924342f4b79e7faf56a929a" - }, - { - "file": "input/data/sub-003_hypo1_cope.nii.gz", - "sha256": "a8c9b6276d1597bc43695516c9ac5b2893a8d8408cd053161ceaddbd42dafb20" - }, - { - "file": "input/data/sub-005_hypo1_cope.nii.gz", - "sha256": "415383874c65fd9e10bb03bf2aa59bfcd1d10650bc5d0560a249e85d52b7b205" - }, - { - "file": "input/data/sub-009_hypo1_cope.nii.gz", - "sha256": "33af129d8ba13cd4b6175089706c531471be1e0bd7ccd43ece10751c8cc3254c" - }, - { - "file": "input/data/sub-011_hypo1_cope.nii.gz", - "sha256": "6f74dd449eefa6eff40ec00eb046ec7e8bb13c0b7c2ac1874155a9c166692352" - }, - { - "file": "input/data/sub-013_hypo1_cope.nii.gz", - "sha256": "bfa79b82f931d81d6387e82b8413f1f889a06f36275ba510554669c84a3c026f" - }, - { - "file": "input/data/sub-015_hypo1_cope.nii.gz", - "sha256": "5d98f6d74823516768659967f95ef43728584eab024c58af30987783515d7694" - }, - { - "file": "input/data/sub-017_hypo1_cope.nii.gz", - "sha256": "dca9eac4d6f0ef4e2a3e631b2d10f89c5362863698cec4a7c7b9b14128ae96d9" - }, - { - "file": "input/data/sub-019_hypo1_cope.nii.gz", - "sha256": "f9df911028e0ee06d230b097d8c7011b3c09f34df436e8854cd959145777533d" - }, - { - "file": "input/data/sub-021_hypo1_cope.nii.gz", - "sha256": "7dd60d722e243f429633f1c63c9a810afd73d1ffd0e0e68fcdd2bf3790d78db1" - }, - { - "file": "input/data/sub-025_hypo1_cope.nii.gz", - "sha256": "545945b0a5f7e51d65e2828e76e776fffcbb33b1635bb7272bc0948bfbc6b7b4" - }, - { - "file": "input/data/sub-027_hypo1_cope.nii.gz", - "sha256": "dffa472f8cfe30b9c2025470924fceb23d30fb881db6b893d436faa8d8dcef2f" - }, - { - "file": "input/data/sub-029_hypo1_cope.nii.gz", - "sha256": "0ed1be0ce40d1becaec5cf18487670822b8cb5fcbc5ad0ec2cb34d9a3ed7071b" - }, - { - "file": "input/data/sub-033_hypo1_cope.nii.gz", - "sha256": "04778467af0a6c93d531d30f73c5492384be59044ebd7be3e95862700e2e9117" - }, - { - "file": "input/data/sub-035_hypo1_cope.nii.gz", - "sha256": "211fd859f33d69891531ad3e5dd66fe0c0891b20c58e6ef8aa21b4d49ff030c9" - }, - { - "file": "input/data/sub-037_hypo1_cope.nii.gz", - "sha256": "a4d76561e8ba1848572a474afce754310f4ee101cfd99276eb3105289cc0934b" - }, - { - "file": "input/data/sub-039_hypo1_cope.nii.gz", - "sha256": "744df860cfb8410aae16bcb1742e7390c51306c66959bb19da9f5b57206bba7b" - }, - { - "file": "input/data/sub-041_hypo1_cope.nii.gz", - "sha256": "f93eeadcd3f57239e4c32c5df2ca2c4013bf424978701bd5beec535ace24669f" - }, - { - "file": "input/data/sub-043_hypo1_cope.nii.gz", - "sha256": "520f19805c6c4358bc56e9bba290b9b79a80c14385bc7be90e4bd81b3e37e771" - }, - { - "file": "input/data/sub-045_hypo1_cope.nii.gz", - "sha256": "3826c6daf5a7be7b03ae552847c4a8709a1b86c2498735e6ce80768cd5d0b88e" - }, - { - "file": "input/data/sub-047_hypo1_cope.nii.gz", - "sha256": "8585e8be8eebe84dd316eeb1f86090a8123f88a8b5d275bc2c39049a3bf4bf34" - }, - { - "file": "input/data/sub-049_hypo1_cope.nii.gz", - "sha256": "e01dacebea8fa444b7696e90a53e9ab0b3543b0da780ba430875b3fde117e084" - }, - { - "file": "input/data/sub-051_hypo1_cope.nii.gz", - "sha256": "74e2887ed9eb4252357cdce98eb53b5b8ab2620ee5ee57aee1bc677c0099b2ca" - }, - { - "file": "input/data/sub-053_hypo1_cope.nii.gz", - "sha256": "a3b3509a0240c5b12a9c63f94f2913e69eeb7fab4fbe92ac1adc62eb45bdd0ba" - }, - { - "file": "input/data/sub-055_hypo1_cope.nii.gz", - "sha256": "136983cd89668779e26eba6847653f1d765452f8a2d5675fce037f751edb0ea8" - }, - { - "file": "input/data/sub-057_hypo1_cope.nii.gz", - "sha256": "aafa1a371d72e690f737d2507c9d7bbd20c620377cd294d44555c856a0566496" - }, - { - "file": "input/data/sub-059_hypo1_cope.nii.gz", - "sha256": "0fa3da37a11640705014665f546ba86735472a8a2b7fdf1b37177a55abd0a65a" - }, - { - "file": "input/data/sub-061_hypo1_cope.nii.gz", - "sha256": "cb8bc3bf4264fe156348d3c171335b84978eb8d32b0fd331db9f4661dad2bdff" - }, - { - "file": "input/data/sub-063_hypo1_cope.nii.gz", - "sha256": "2a5458eb314441b01dacfa1bcea9e9a95f983d2994aa6b853ebe1a20b017a467" - }, - { - "file": "input/data/sub-067_hypo1_cope.nii.gz", - "sha256": "9977321f1f775f04dab881d740ea5cc491dadda07405f2380c61c50e5c3a01fc" - }, - { - "file": "input/data/sub-069_hypo1_cope.nii.gz", - "sha256": "bd22905ebe789319f082b0fdb6ba7cd5aaf6590fd8424d6c396cd54c0602a318" - }, - { - "file": "input/data/sub-071_hypo1_cope.nii.gz", - "sha256": "7286639323904bfe851588ce06c68396d535fad2f7ac5de0de1b73c4c17494f4" - }, - { - "file": "input/data/sub-073_hypo1_cope.nii.gz", - "sha256": "67086bf1f48b14bc095999f6535656649d01da82d1327715c5b3ab89ea6c5f7b" - }, - { - "file": "input/data/sub-075_hypo1_cope.nii.gz", - "sha256": "b9151e72e3a8a609a23ac73dbd3d6ba8423f271ddd72149cf27c04e25bf9f980" - }, - { - "file": "input/data/sub-077_hypo1_cope.nii.gz", - "sha256": "79aaf5add3d475590cb7fd82a7fbd32517dbde2cb859824864a2b10d6fafb9ed" - }, - { - "file": "input/data/sub-079_hypo1_cope.nii.gz", - "sha256": "d505691fdcfa43ad709fca3803c954069afe4e2f2dc865edb5b0812562d1eb8c" - }, - { - "file": "input/data/sub-081_hypo1_cope.nii.gz", - "sha256": "a8a342b5e333dbff9776b5a4847929737144dc8029830036636eb86c566f4f76" - }, - { - "file": "input/data/sub-083_hypo1_cope.nii.gz", - "sha256": "76a526c303c406342487da0e5deee5a6ca6b345e9b6ccb052149c4c32f0833ae" - }, - { - "file": "input/data/sub-085_hypo1_cope.nii.gz", - "sha256": "74b1af4e4b667a70c79b54a10294be744da5538b814057186eae48710520b65a" - }, - { - "file": "input/data/sub-087_hypo1_cope.nii.gz", - "sha256": "7ecb372d1249cd5368121b1e7b7f7ee33ef5430575097431dcd3f27dcdad7b04" - }, - { - "file": "input/data/sub-089_hypo1_cope.nii.gz", - "sha256": "3b380ae44cdbf0171d9ec12ff9ecdb47227496cda5ccd5b5cfb09164c5d91846" - }, - { - "file": "input/data/sub-093_hypo1_cope.nii.gz", - "sha256": "7802aea70713a4be7683921188b92a563d86f221f191a8bac4ee9c4decb33a1c" - }, - { - "file": "input/data/sub-095_hypo1_cope.nii.gz", - "sha256": "291760d6479e336093a651e33df20deab99e434cba5afbf31fc019c8d1fe816e" - }, - { - "file": "input/data/sub-099_hypo1_cope.nii.gz", - "sha256": "30b063515e6b538183fe37c561e87e47681756876a8f6a8a607839d8d3de0e42" - }, - { - "file": "input/data/sub-103_hypo1_cope.nii.gz", - "sha256": "a088633f18ac3e35fc2512e9dc21ec3d92efd06749d4027338ccb448a635919c" - }, - { - "file": "input/data/sub-105_hypo1_cope.nii.gz", - "sha256": "12a1b50eaa5be6983990c5e77f985f9750340204eaa3fff7e70829f07707e6a2" - }, - { - "file": "input/data/sub-107_hypo1_cope.nii.gz", - "sha256": "4580aade93323d0d14f9a3a1932a428004a2f657980b5669f9274102bb370802" - }, - { - "file": "input/data/sub-109_hypo1_cope.nii.gz", - "sha256": "931ba1128720bbaa99e7fce8f036a331581d6d07e00212a1f402eae7959299cb" - }, - { - "file": "input/data/sub-113_hypo1_cope.nii.gz", - "sha256": "e5f81435ddc2d5703fa4ea37d6597601e71b50f8c53fb6047fb0067c17282c65" - }, - { - "file": "input/data/sub-115_hypo1_cope.nii.gz", - "sha256": "5046f7c2fa1c5d1be6237d38f631beca13df8a3a8ded11121082838a533a44bf" - }, - { - "file": "input/data/sub-117_hypo1_cope.nii.gz", - "sha256": "711159acfa23c45ab82903f658cafe0fa539f39e077e451f6b0728fdb359445f" - }, - { - "file": "input/data/sub-119_hypo1_cope.nii.gz", - "sha256": "01738a10e34e46c5ea1a4a192b9484595ee352d62375095b76726347455aabd7" - }, - { - "file": "input/data/sub-121_hypo1_cope.nii.gz", - "sha256": "94357665b89cfa1b9157e71aab10f78b49585a790a4a01d9e4693698e185d892" - }, - { - "file": "input/data/sub-123_hypo1_cope.nii.gz", - "sha256": "1219377e08c306753c1e382d431b1e7a55c7143cdc5f800fb65e92fa7e72f888" - } - ] -} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-07.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-07.json deleted file mode 100644 index 1714164f..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-07.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "analysis": "one-sample random-effects group model with positive one-sided participant-level sign-flip max-t FWE inference", - "n": 54, - "df": 53, - "permutations": 5000, - "seed": 20261015, - "mask_definition": "voxels finite and nonzero in every supplied effect map", - "whole_brain_voxels": 198029, - "fwe_alpha": 0.05, - "significant_positive_whole_brain_voxels": 24, - "smallest_monte_carlo_maxT_pFWE": 0.0007998400319936012, - "observed_max_t": 6.617173246302241, - "whole_brain_peak_mni_xyz_mm": [ - -26.0, - -102.0, - -3.599997043609619 - ], - "whole_brain_peak_positive_maxT_pFWE": 0.0007998400319936012, - "vmPFC_anatomical_label": "bilateral AAL3 Frontal_Med_Orb parcels; descriptive localization only", - "vmPFC_roi_voxels": 1297, - "vmPFC_roi_mean_effect": -0.007928628474473953, - "vmPFC_roi_mean_95pct_t_CI": [ - -0.03462468188345817, - 0.018767424934510262 - ], - "vmPFC_roi_one_sided_uncorrected_p_descriptive_only": 0.7230441369520557, - "vmPFC_roi_mean_t_descriptive_only": -0.59569909332319, - "vmPFC_roi_peak_t": 2.336962520972011, - "vmPFC_roi_peak_mni_xyz_mm": [ - -2.0, - 24.0, - -13.199997425079346 - ], - "vmPFC_roi_peak_positive_maxT_pFWE": 1.0, - "vmPFC_roi_positive_maxT_FWE05_voxels": 0, - "vmPFC_roi_outlier_leave_one_out_sensitivity": { - "flagged_participant_id": "sub-025", - "mean_without_flagged_participant": -0.013538436964154243, - "mean_95pct_t_CI_without_flagged_participant": [ - -0.0382196697087671, - 0.011142795780458615 - ] - }, - "software": { - "python": "3.13.16", - "numpy": "2.5.4", - "scipy": "1.18.1", - "nibabel": "5.4.2", - "nilearn": "0.14.1", - "pandas": "3.0.6" - }, - "runtime_seconds": 39.307 -} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-08.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-08.json deleted file mode 100644 index 75a2624b..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-08.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "analysis": "one-sample positive test of AO86 equal-indifference gain effects", - "n_participants_input": 54, - "n_participants_included": 54, - "excluded_participants": [], - "n_voxels_tested": 210968, - "mask_rule": "nonzero map coverage in at least 90% of participants", - "n_permutations_random_sign_flips": 5000, - "seed": 20261015, - "alpha_fwe_one_sided": 0.05, - "max_t_critical_fwe": 5.37563875773227, - "significant_voxels_fwe": 24, - "significant_clusters_26_connected": 3, - "cluster_table": "whole_brain_fwe_clusters.tsv", - "observed_peak": { - "mni_xyz_mm": [ - -26.0, - -102.0, - -3.6 - ], - "t": 6.617173246302241, - "p_uncorrected_one_sided": 9.311564027968496e-09, - "p_fwe": 0.0007998400319936012, - "mean_effect": 0.11212667576209814, - "atlas_label": "Occipital Pole" - }, - "significant_peak": { - "ijk": [ - 35, - 15, - 31 - ], - "mni_xyz_mm": [ - -26.0, - -102.0, - -3.6 - ], - "t": 6.617173246302241, - "p_fwe": 0.0007998400319936012, - "mean_effect": 0.11212667576209814, - "atlas_label": "Occipital Pole" - }, - "vmPFC_reference": { - "atlas": "Harvard-Oxford cortical max-probability atlas, threshold 25%", - "labels": [ - "Frontal Medial Cortex", - "Subcallosal Cortex" - ], - "atlas_template": "MNI152NLin6Asym; nearest-neighbor resampled to supplied map grid", - "voxels_in_group_mask": 1638, - "whole_brain_fwe_significant_voxels": 0, - "peak_t_within_reference": 4.1918477635940805, - "peak_p_fwe_within_reference": 0.8008398320335933, - "mean_effect": 0.006167955119147637, - "sd_between_participants": 0.09718583212484799, - "ci95_t": [ - -0.02035867070300741, - 0.03269458094130268 - ] - }, - "map_qc": { - "all_maps_same_shape_and_affine": true, - "all_values_finite": true, - "grid_shape": [ - 97, - 115, - 81 - ], - "voxel_sizes_mm": [ - 2.0, - 2.0, - 2.4000000953674316 - ], - "coverage_fraction_min": 0.9074074074074074, - "coverage_fraction_median": 1.0, - "coverage_fraction_max": 1.0 - }, - "outputs": [ - "results/group_mean_effect.nii.gz", - "results/group_t_positive.nii.gz", - "results/group_p_fwe_positive.nii.gz", - "results/group_mask_90pct_coverage.nii.gz", - "results/vmPFC_reference_mask.nii.gz" - ], - "software": { - "python": "3.13.16", - "platform": "macOS-27.0.1-arm64-arm-64bit-Mach-O", - "numpy": "2.5.4", - "scipy": "1.18.1", - "nibabel": "5.4.2", - "nilearn": "0.14.1", - "pandas": "3.0.6", - "matplotlib": "3.11.2" - }, - "elapsed_seconds": 39.24 -} diff --git a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-09.json b/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-09.json deleted file mode 100644 index bf76fe16..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-2026-10-15/summaries/narps-r1-09.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "analysis": "AO86 equal-indifference group gain cope, one-sided positive whole-brain max-t sign-flip test", - "n": 54, - "n_excluded": 0, - "n_permutations": 10000, - "seed": 20261015, - "alpha_fwe": 0.05, - "common_mask_voxels": 198029, - "voxel_size_mm": [ - 2.0, - 2.0, - 2.4000000953674316 - ], - "max_t_in_mask": 6.617175579071045, - "max_t_log10_fwe_p": 3.3010733127593994, - "max_t_fwe_p": 0.0004999501318379081, - "significant_voxels_fwe_p_le_0_05": 24, - "significant_components_descriptive_only": [ - { - "extent_voxels_descriptive_26_connectivity": 17, - "peak_t": 6.617175579071045, - "peak_mni_xyz_mm": [ - -26.0, - -102.0, - -3.599997043609619 - ], - "peak_max_t_fwe_p": 0.0004999501397833228, - "vmPFC_roi_overlap_voxels": 0 - }, - { - "extent_voxels_descriptive_26_connectivity": 5, - "peak_t": 6.193403244018555, - "peak_mni_xyz_mm": [ - 30.0, - -94.0, - -8.399997234344482 - ], - "peak_max_t_fwe_p": 0.0030996897257864475, - "vmPFC_roi_overlap_voxels": 0 - }, - { - "extent_voxels_descriptive_26_connectivity": 2, - "peak_t": 5.760898113250732, - "peak_mni_xyz_mm": [ - 26.0, - -98.0, - -1.1999969482421875 - ], - "peak_max_t_fwe_p": 0.013798621483147144, - "vmPFC_roi_overlap_voxels": 0 - } - ], - "vmPFC_descriptive_summary": { - "roi": "AAL SPM12 bilateral Frontal_Med_Orb_L/R", - "roi_atlas_label_ids": [ - 2611, - 2612 - ], - "roi_voxels_in_common_mask": 1297, - "mean_cope": -0.007928628474473953, - "sd_participant_roi_means": 0.09780656546354294, - "se": 0.013309787958860397, - "ci95_t": [ - -0.034624682371488184, - 0.018767425422540278 - ], - "cohen_dz": -0.0810643807053566, - "one_sided_t": -0.5956991314888, - "one_sided_p_uncorrected_descriptive": 0.7230442762374878, - "n": 54 - }, - "data_interpretation": "participant-level cope estimates from a mean-centered, variance-normalized gain modulator; not currency-unit slopes or standardized test statistics", - "group_model_limit": "no first-level variance maps are supplied; unweighted one-sample group inference cannot reproduce precision-weighted mixed-effects estimation", - "software": { - "python": "3.13.16", - "numpy": "2.5.4", - "scipy": "1.18.1", - "nilearn": "0.14.1", - "nibabel": "5.4.2", - "platform": "macOS-27.0.1-arm64-arm-64bit-Mach-O" - }, - "generated_utc": "2026-10-16T02:15:50.833466+00:00" -} diff --git a/2026-usrse/stamped-ai-study/data/narps-spatial/derived-summary.json b/2026-usrse/stamped-ai-study/data/narps-spatial/derived-summary.json deleted file mode 100644 index 25b8a20c..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-spatial/derived-summary.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "shared_support_voxels": 184543, - "all_runs_maximum_pairwise_t_difference": 2.384185791015625e-06, - "all_runs_median_pairwise_t_range": 8.940696716308594e-08, - "conditions": [ - { - "id": "baseline", - "label": "No supplied skills", - "runs": [ - "narps-r1-01", - "narps-r1-02", - "narps-r1-03" - ], - "maximum_t_sample_sd": 0.0, - "median_t_sample_sd": 0.0, - "maximum_pairwise_t_difference": 0.0, - "positive_in_n_runs_voxel_counts": { - "0": 184520, - "1": 12, - "2": 0, - "3": 11 - }, - "native_positive_voxels_per_run": [ - 11, - 11, - 24 - ], - "shared_positive_voxels_per_run": [ - 11, - 11, - 23 - ], - "positive_voxels_outside_shared_support_per_run": [ - 0, - 0, - 1 - ] - }, - { - "id": "discover-general", - "label": "Find useful skills", - "runs": [ - "narps-r1-04", - "narps-r1-05", - "narps-r1-06" - ], - "maximum_t_sample_sd": 1.3765103082409519e-06, - "median_t_sample_sd": 5.1619136559035694e-08, - "maximum_pairwise_t_difference": 2.384185791015625e-06, - "positive_in_n_runs_voxel_counts": { - "0": 184520, - "1": 0, - "2": 0, - "3": 23 - }, - "native_positive_voxels_per_run": [ - 24, - 24, - 24 - ], - "shared_positive_voxels_per_run": [ - 23, - 23, - 23 - ], - "positive_voxels_outside_shared_support_per_run": [ - 1, - 1, - 1 - ] - }, - { - "id": "discover-science", - "label": "Find research skills", - "runs": [ - "narps-r1-07", - "narps-r1-08", - "narps-r1-09" - ], - "maximum_t_sample_sd": 1.3765103082409519e-06, - "median_t_sample_sd": 5.1619136559035694e-08, - "maximum_pairwise_t_difference": 2.384185791015625e-06, - "positive_in_n_runs_voxel_counts": { - "0": 184520, - "1": 0, - "2": 0, - "3": 23 - }, - "native_positive_voxels_per_run": [ - 24, - 24, - 24 - ], - "shared_positive_voxels_per_run": [ - 23, - 23, - 23 - ], - "positive_voxels_outside_shared_support_per_run": [ - 1, - 1, - 1 - ] - }, - { - "id": "stamped-explicit", - "label": "Use STAMPED skills", - "runs": [ - "narps-r1-10", - "narps-r1-11", - "narps-r1-12" - ], - "maximum_t_sample_sd": 0.0, - "median_t_sample_sd": 0.0, - "maximum_pairwise_t_difference": 0.0, - "positive_in_n_runs_voxel_counts": { - "0": 184520, - "1": 0, - "2": 0, - "3": 23 - }, - "native_positive_voxels_per_run": [ - 24, - 23, - 24 - ], - "shared_positive_voxels_per_run": [ - 23, - 23, - 23 - ], - "positive_voxels_outside_shared_support_per_run": [ - 1, - 0, - 1 - ] - } - ], - "interpretation": "Saved group t fields agree to numerical precision on shared support. The observed variation in corrected detections reflects native correction choices: two No supplied skills runs use Bonferroni; all other runs use permutation max-T. This descriptive comparison does not isolate a causal condition effect." -} diff --git a/2026-usrse/stamped-ai-study/data/narps-spatial/provenance.json b/2026-usrse/stamped-ai-study/data/narps-spatial/provenance.json deleted file mode 100644 index cf075faf..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-spatial/provenance.json +++ /dev/null @@ -1,885 +0,0 @@ -{ - "generated_utc": "2026-10-16T04:36:08.051014+00:00", - "study": "NARPS AO86 equal-indifference potential-gain group analysis", - "n_participants": 54, - "runs_per_condition": 3, - "records": [ - { - "run": "narps-r1-01", - "condition": "baseline", - "label": "No supplied skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", - "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "Bonferroni", - "mask_rule": "native saved analysis mask", - "native_mask_voxels": 186400, - "native_positive_voxels": 11 - }, - { - "run": "narps-r1-02", - "condition": "baseline", - "label": "No supplied skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", - "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "Bonferroni", - "mask_rule": "native saved analysis mask", - "native_mask_voxels": 192333, - "native_positive_voxels": 11 - }, - { - "run": "narps-r1-03", - "condition": "baseline", - "label": "No supplied skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", - "condition_assignment_sha256": "eb6d4a324d50b0e0aa7fc032e8a6af4d7d548b7c71efbf85b8b9483bd2eb6aa5", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "native saved analysis mask", - "native_mask_voxels": 210968, - "native_positive_voxels": 24 - }, - { - "run": "narps-r1-04", - "condition": "discover-general", - "label": "Find useful skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", - "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "native saved analysis mask", - "native_mask_voxels": 198029, - "native_positive_voxels": 24 - }, - { - "run": "narps-r1-05", - "condition": "discover-general", - "label": "Find useful skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", - "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "native saved analysis mask", - "native_mask_voxels": 198029, - "native_positive_voxels": 24 - }, - { - "run": "narps-r1-06", - "condition": "discover-general", - "label": "Find useful skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", - "condition_assignment_sha256": "05bdadb215c95c5f20e3c81e4da7748d1f04b443aeb602975685259b3ab1b36d", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "positive p values; source writes zero outside tested support", - "native_mask_voxels": 186192, - "native_positive_voxels": 24 - }, - { - "run": "narps-r1-07", - "condition": "discover-science", - "label": "Find research skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", - "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "finite p values; source writes NaN outside tested support", - "native_mask_voxels": 198029, - "native_positive_voxels": 24 - }, - { - "run": "narps-r1-08", - "condition": "discover-science", - "label": "Find research skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", - "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "native saved analysis mask", - "native_mask_voxels": 210968, - "native_positive_voxels": 24 - }, - { - "run": "narps-r1-09", - "condition": "discover-science", - "label": "Find research skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", - "condition_assignment_sha256": "779558fea1217e6dc05000816eaeceadac216a660b43fe2d55ef39a8f2e1f905", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "native saved analysis mask", - "native_mask_voxels": 198029, - "native_positive_voxels": 24 - }, - { - "run": "narps-r1-10", - "condition": "stamped-explicit", - "label": "Use STAMPED skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", - "condition_assignment_sha256": "58fd42670489699d4d7b65b300b41c687153e03a043da3aedca0b2f4c2e47af1", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "54/54 finite nonzero participant support; same input identities and rule as saved run09 mask", - "native_mask_voxels": 198029, - "native_positive_voxels": 24 - }, - { - "run": "narps-r1-11", - "condition": "stamped-explicit", - "label": "Use STAMPED skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", - "condition_assignment_sha256": "58fd42670489699d4d7b65b300b41c687153e03a043da3aedca0b2f4c2e47af1", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "Nilearn MNI152 brain mask resampled as in source; all input values verified finite by source", - "native_mask_voxels": 196120, - "native_positive_voxels": 23 - }, - { - "run": "narps-r1-12", - "condition": "stamped-explicit", - "label": "Use STAMPED skills", - "branch_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", - "condition_assignment_sha256": "58fd42670489699d4d7b65b300b41c687153e03a043da3aedca0b2f4c2e47af1", - "condition_coordinator_revision": "e86a968be5a03114a279985fadd7ce7274f235aa", - "primary_correction": "permutation max-T", - "mask_rule": "54/54 finite nonzero participant support; same input identities and rule as saved run09 mask", - "native_mask_voxels": 198029, - "native_positive_voxels": 24 - } - ], - "conditions": [ - { - "id": "baseline", - "label": "No supplied skills" - }, - { - "id": "discover-general", - "label": "Find useful skills" - }, - { - "id": "discover-science", - "label": "Find research skills" - }, - { - "id": "stamped-explicit", - "label": "Use STAMPED skills" - } - ], - "evaluation_support": "Intersection of all twelve native analysis masks and finite nonzero support in all 54 participant maps. Outside is not evaluated as a zero or negative result.", - "frequency_definition": "For each condition, count the three saved native positive primary FWE decisions at each shared-support voxel; native correction/search-space choices are retained.", - "t_variability_definition": "Sample SD (ddof=1) across the three saved unthresholded t values per condition, restricted to the same shared support; no new group inference.", - "display": { - "view": "posterior axial crops", - "xlim_mni_mm": [ - -42, - 42 - ], - "ylim_mni_mm": [ - -110, - -78 - ], - "z_cuts_mni_mm": [ - -8.4, - -3.6, - -1.2 - ], - "orientation": "neurological: image left is participant left", - "slice_selection": "Three axial planes containing the observed posterior corrected loci; a descriptive result visualization, not an independent localization test." - }, - "anatomy": { - "description": "Nilearn bundled skull-stripped MNI152 anatomical context, continuously resampled to the native grid", - "url": "https://nilearn.github.io/stable/modules/generated/nilearn.datasets.load_mni152_template.html" - }, - "software": { - "numpy": "2.5.4", - "nibabel": "5.4.2", - "nilearn": "0.14.1" - }, - "npz_sha256": "7c630a699298b18e0fdad17ebfe6e89400d64568705dacc10d820381ed13509f", - "source_files": { - "narps-r1-09/results/common_brain_mask.nii.gz": { - "sha256": "e72a50e0531fd4e353fff55c81b2790319aebe2cb30aba305fbf51b7394e5ff1", - "bytes": 23179, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-09", - "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "git_object": "64d0cb426a4591f510acb841af2644f00a654714", - "path": "results/common_brain_mask.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/common_brain_mask.nii.gz" - }, - "narps-r1-01/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-01", - "revision": "d90a335549f43007eac05902859224e6ce2eaada", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/input/sources.json" - }, - "narps-r1-01/results/analysis_summary.json": { - "sha256": "8198242f3ac1eaf7a84ccf23b3513c8ecfbadc65e18d4058d7c814b3de1c8f67", - "bytes": 6963, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-01", - "revision": "d90a335549f43007eac05902859224e6ce2eaada", - "git_object": "bd230c0a3def24aa19b66f3edd3f9998e06c319b", - "path": "results/analysis_summary.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/analysis_summary.json" - }, - "narps-r1-01/scripts/group_gain.py": { - "sha256": "01399fbc0a5cff2b2b27719e0a4ffb74feadab548bea2ae74db39583f0cb50fb", - "bytes": 10499, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-01", - "revision": "d90a335549f43007eac05902859224e6ce2eaada", - "git_object": "f0191bd256f500c3a330194f5933c21376eae233", - "path": "scripts/group_gain.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/scripts/group_gain.py" - }, - "narps-r1-01/results/group_t_positive.nii.gz": { - "sha256": "8db0756ebc4224b4eebe8724b85a13798da4b8aa0f0393bffb56c01ac8c2c997", - "bytes": 958920, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-01", - "revision": "d90a335549f43007eac05902859224e6ce2eaada", - "git_object": "446a865d05de288b3133836d3604e818f3b26535", - "path": "results/group_t_positive.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/group_t_positive.nii.gz" - }, - "narps-r1-01/results/group_p_fwe_bonferroni.nii.gz": { - "sha256": "fba75a6e4a2e7e91d83dec13a3548611938aefe56253ea176421ef95c59dcb5b", - "bytes": 39319, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-01", - "revision": "d90a335549f43007eac05902859224e6ce2eaada", - "git_object": "4af7537ba5635c8f97214ac5196074033dd6a347", - "path": "results/group_p_fwe_bonferroni.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/group_p_fwe_bonferroni.nii.gz" - }, - "narps-r1-01/results/whole_brain_search_mask.nii.gz": { - "sha256": "7f97b6442cf936366df6513ab56867d3052b74a33b4b1ff77447e79be9473128", - "bytes": 65767, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-01", - "revision": "d90a335549f43007eac05902859224e6ce2eaada", - "git_object": "8c9f42ce30520c33f97ab77373659023b8f06a0c", - "path": "results/whole_brain_search_mask.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01/results/whole_brain_search_mask.nii.gz" - }, - "narps-r1-02/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-02", - "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/input/sources.json" - }, - "narps-r1-02/results/results.json": { - "sha256": "bf469b8e89420e8eb59270035d63b5defd4e766139daef8a765a7d8775bdaa49", - "bytes": 2717, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-02", - "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "git_object": "601f06c9527731eb94a79b71164c56d3fced28df", - "path": "results/results.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/results.json" - }, - "narps-r1-02/scripts/analyze.py": { - "sha256": "167005a3e7dfaec350d4ba8d14b46415afc372456612aecb5083203ebf43b464", - "bytes": 12938, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-02", - "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "git_object": "751e65efa9fbc30b91c05f9de39d54d5a3a12aad", - "path": "scripts/analyze.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/scripts/analyze.py" - }, - "narps-r1-02/results/group_tstat.nii.gz": { - "sha256": "5c153b28b3694aa8c4a3dd5b21a559e17a574b8d52705443d81911a26dbe3b32", - "bytes": 752707, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-02", - "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "git_object": "e0988f67b81a0f57ecb2a1331c2bb9e2fa922909", - "path": "results/group_tstat.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/group_tstat.nii.gz", - "annex_key": "SHA256E-s752707--5c153b28b3694aa8c4a3dd5b21a559e17a574b8d52705443d81911a26dbe3b32.nii.gz" - }, - "narps-r1-02/results/group_bonferroni_fwe_p.nii.gz": { - "sha256": "51849618a87da2339d14e0e7f81b6db615e53bde1ce7109dc0eda51efe9cf394", - "bytes": 18147, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-02", - "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "git_object": "89a8e2ba980f2b241ec7569ba37bd5f61f672832", - "path": "results/group_bonferroni_fwe_p.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/group_bonferroni_fwe_p.nii.gz" - }, - "narps-r1-02/results/analysis_mask.nii.gz": { - "sha256": "6f795d10c04fe5079dbba16f11816edcd2bd0921a5c823638f9deb4496c0e49a", - "bytes": 24682, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-02", - "revision": "e0a8fb1ae78b457a38ff7102825b1d8bc63119b4", - "git_object": "2fa7ef1b443696382780fa69bfd8f717941ec67c", - "path": "results/analysis_mask.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02/results/analysis_mask.nii.gz" - }, - "narps-r1-03/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-03", - "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/input/sources.json" - }, - "narps-r1-03/results/summary.json": { - "sha256": "550cecbb35f10e7cfb16e4f177a15b11a47525115be5297f52b271613f91a812", - "bytes": 8811, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-03", - "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", - "git_object": "fc9a8227ba6c9aaea07b3d1cb5debf123b21a042", - "path": "results/summary.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/summary.json" - }, - "narps-r1-03/analyze.py": { - "sha256": "049b06cc99210ff268129b0cc45a6585221dcfe37b17e276de12583672c1babd", - "bytes": 13626, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-03", - "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", - "git_object": "093fabbf82e9c065b64a73e0d945a80bff9b4671", - "path": "analyze.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/analyze.py" - }, - "narps-r1-03/results/group_t.nii.gz": { - "sha256": "aff0a67360cf89eb3609b7f9cd54b40c26967c99c2cb537ffd00a179cd42f26c", - "bytes": 821466, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-03", - "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", - "git_object": "b057360af40130678b4842e2dfff3fd374048244", - "path": "results/group_t.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/group_t.nii.gz", - "annex_key": "SHA256E-s821466--aff0a67360cf89eb3609b7f9cd54b40c26967c99c2cb537ffd00a179cd42f26c.nii.gz" - }, - "narps-r1-03/results/p_fwer_maxT.nii.gz": { - "sha256": "bba0aa044ee8a3d4e7b807b8b34abfbcb154734a403b4bb29e68bb765a406a5f", - "bytes": 21364, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-03", - "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", - "git_object": "8caec43611d30ded5f2c26fdbb960fcf4e899aa5", - "path": "results/p_fwer_maxT.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/p_fwer_maxT.nii.gz" - }, - "narps-r1-03/results/analysis_mask.nii.gz": { - "sha256": "9f6ddeec95fed989653ff849adfa5efa0dab7219d9d91b2e2730673d791c85f3", - "bytes": 44508, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-03", - "revision": "abf95b00c02fb55d16c4d269926c1428cedc0574", - "git_object": "adc7874de1e9ca808ac7f2ea25502c7a6a54ecee", - "path": "results/analysis_mask.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-03/results/analysis_mask.nii.gz" - }, - "narps-r1-04/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-04", - "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/input/sources.json" - }, - "narps-r1-04/results/group_results.json": { - "sha256": "41f8072ac1bc0bccb46502250b9c7f04325ed973d892bff508cbe030cc9fc322", - "bytes": 2920, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-04", - "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", - "git_object": "3a98ea065bff101e851415d7c7770a9d941ac0ab", - "path": "results/group_results.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/results/group_results.json" - }, - "narps-r1-04/analysis/run_group_analysis.py": { - "sha256": "e168db1e5d0cc310a09bc5f4c798589fcfc2dc20b56770e484ef46b53563df42", - "bytes": 15524, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-04", - "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", - "git_object": "1011c2edd7510fe355af428321f60cfa9a56dbbb", - "path": "analysis/run_group_analysis.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/analysis/run_group_analysis.py" - }, - "narps-r1-04/results/t_gain.nii.gz": { - "sha256": "818262bf4481df4ae3d73d41033953eb844772f9df8291ca7ebcc5a4bd088d1e", - "bytes": 1013790, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-04", - "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", - "git_object": "771aa7a862a1099fcdc2db48dc86ffd7748c4440", - "path": "results/t_gain.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/results/t_gain.nii.gz", - "annex_key": "SHA256E-s1013790--818262bf4481df4ae3d73d41033953eb844772f9df8291ca7ebcc5a4bd088d1e.nii.gz" - }, - "narps-r1-04/results/p_fwe_gain.nii.gz": { - "sha256": "ede0004a41ebf7857d89ba3f4eb14b7280c4cc923970c11793e2c57447625035", - "bytes": 43187, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-04", - "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", - "git_object": "e70d17de28dd1b93aace14c0c3f95a47e02a3602", - "path": "results/p_fwe_gain.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/results/p_fwe_gain.nii.gz" - }, - "narps-r1-04/results/group_coverage_mask.nii.gz": { - "sha256": "0de1b9e5607e91c3dc7bdcf084ec4c305aa9cb6b29a0eb23f59d23b174e72f36", - "bytes": 65417, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-04", - "revision": "a424c3e8ae47f9208fa661fc4f974f6b187acb00", - "git_object": "f4e5133921fbc84c914c9e24f3b89a595089bcd8", - "path": "results/group_coverage_mask.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-04/results/group_coverage_mask.nii.gz" - }, - "narps-r1-05/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-05", - "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/input/sources.json" - }, - "narps-r1-05/results/run_summary.json": { - "sha256": "08274f541bff5d0fa7673474fbb401b00619a9bdaf4cb523b06baad574bd2972", - "bytes": 3060, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-05", - "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "git_object": "fd9592aeace204f563c6ffbc0dbd6071bd12a444", - "path": "results/run_summary.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/run_summary.json" - }, - "narps-r1-05/analysis/run_group_analysis.py": { - "sha256": "a97d38d8c7cb60fb2687c34885c0098bd86bd068145305675ec5377db7b8223c", - "bytes": 12838, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-05", - "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "git_object": "b173d1d1a6b5ee97e0c3d3801afee671ce48d30a", - "path": "analysis/run_group_analysis.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/analysis/run_group_analysis.py" - }, - "narps-r1-05/results/group_tstat.nii.gz": { - "sha256": "f8733393f7b503600e07f8f1198091f2e86adeb19aa1aad88cf099194066f10f", - "bytes": 1013927, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-05", - "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "git_object": "096eca1d8bcf5db687c0fd6e63936fc4b9770fa2", - "path": "results/group_tstat.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/group_tstat.nii.gz", - "annex_key": "SHA256E-s1013927--f8733393f7b503600e07f8f1198091f2e86adeb19aa1aad88cf099194066f10f.nii.gz" - }, - "narps-r1-05/results/group_log10p_fwe_max_t.nii.gz": { - "sha256": "2a784f4bbe222200e8893619879e84144816f3cb54ba982fc1ed0fc257425c12", - "bytes": 72712, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-05", - "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "git_object": "21abdd68768170a125ed3af8cd449ef7b102645d", - "path": "results/group_log10p_fwe_max_t.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/group_log10p_fwe_max_t.nii.gz" - }, - "narps-r1-05/results/common_brain_mask.nii.gz": { - "sha256": "0540b531a4724bac2748a0de1b0746634393fd7b89ab6883b9e9dfef9df9dc85", - "bytes": 65428, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-05", - "revision": "e2d266ea0ca7cc52e9ecab358e0f5a8c9085f6b9", - "git_object": "12eb1f6b3a85b3da585b0a63c9735eec240e3c99", - "path": "results/common_brain_mask.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05/results/common_brain_mask.nii.gz" - }, - "narps-r1-06/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-06", - "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/input/sources.json" - }, - "narps-r1-06/results/analysis_results.json": { - "sha256": "a3863b5f4cc8cd1adf157e6aec7015f1715ed725d08aa63cc8982b98a558c527", - "bytes": 10956, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-06", - "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", - "git_object": "3a3da636f1b7964f3e1a42416249f29539131d87", - "path": "results/analysis_results.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/results/analysis_results.json" - }, - "narps-r1-06/scripts/group_analysis.py": { - "sha256": "3dbf553406bafd545f39462813068672fb273ed93221542252dc02d54a3cd204", - "bytes": 12129, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-06", - "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", - "git_object": "d7dd9afee47f5dcd285b15916d55bd8549f6b454", - "path": "scripts/group_analysis.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/scripts/group_analysis.py" - }, - "narps-r1-06/results/maps/group_t_unthresholded.nii.gz": { - "sha256": "0324b5ce56478512b0d37604bf07cfce5534785e7aca2637d2b04780bebd998c", - "bytes": 958133, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-06", - "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", - "git_object": "4449805cee59c2428b7b0dded07514d73c4f8e92", - "path": "results/maps/group_t_unthresholded.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/results/maps/group_t_unthresholded.nii.gz", - "annex_key": "SHA256E-s958133--0324b5ce56478512b0d37604bf07cfce5534785e7aca2637d2b04780bebd998c.nii.gz" - }, - "narps-r1-06/results/maps/group_p_fwe_maxT.nii.gz": { - "sha256": "6b92cf51c74166cfd8f7de3bc5b52748c42a8c46022ddbd268799e415abd4bcb", - "bytes": 70588, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-06", - "revision": "32d9cabf7b5d041f9efb97830bf5279068809357", - "git_object": "180861cf52bcee553d4ca15f0401fc94c3c41960", - "path": "results/maps/group_p_fwe_maxT.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06/results/maps/group_p_fwe_maxT.nii.gz" - }, - "narps-r1-07/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-07", - "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/input/sources.json" - }, - "narps-r1-07/results/analysis_results.json": { - "sha256": "8d46dee5fbba952a3834240325da284af53fb3dd1d797895c211735692c7e3dd", - "bytes": 1704, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-07", - "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "git_object": "1714164ffa958051656204cde9a4f4a24d977f4d", - "path": "results/analysis_results.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/results/analysis_results.json" - }, - "narps-r1-07/scripts/group_analysis.py": { - "sha256": "037fdf48616604d8c87d7a9acf3825626a23aa8d9052e0110968f7e015f11a72", - "bytes": 16600, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-07", - "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "git_object": "2c6a109f48d14b316744da7a19d2d7dff45d99cd", - "path": "scripts/group_analysis.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/scripts/group_analysis.py" - }, - "narps-r1-07/results/maps/group_tstat.nii.gz": { - "sha256": "92b81dd579ac9b50a7869f2d7773139b5584067ff33ed6cf593ef0f9f1b9cba5", - "bytes": 772872, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-07", - "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "git_object": "cc30d59874df527f1cb782721e675d53c753037f", - "path": "results/maps/group_tstat.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/results/maps/group_tstat.nii.gz", - "annex_key": "SHA256E-s772872--92b81dd579ac9b50a7869f2d7773139b5584067ff33ed6cf593ef0f9f1b9cba5.nii.gz" - }, - "narps-r1-07/results/maps/group_positive_maxT_pFWE.nii.gz": { - "sha256": "c80f1af69033f88e0aae80afd6aafdbacddd3fb73f63760ee321334a82c0d6a6", - "bytes": 50258, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-07", - "revision": "f30190d8144a9e15acfa1c0d973eadf0d655c83c", - "git_object": "72d82e9bc98babeab60cbdec3739fb0fae4899ea", - "path": "results/maps/group_positive_maxT_pFWE.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07/results/maps/group_positive_maxT_pFWE.nii.gz" - }, - "narps-r1-08/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-08", - "revision": "42e957201315aa8221ba60fbe614119e22639ce8", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/input/sources.json" - }, - "narps-r1-08/results/analysis_summary.json": { - "sha256": "24ea1b1c7e01825adb9f13109e178263d0098415a378da6d1d607ad9b2e1b3f5", - "bytes": 2592, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-08", - "revision": "42e957201315aa8221ba60fbe614119e22639ce8", - "git_object": "75a2624b5f4722883e59d9b6376b8fb44d65232b", - "path": "results/analysis_summary.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/analysis_summary.json" - }, - "narps-r1-08/scripts/analyze_gain.py": { - "sha256": "878fdd3c61821980b1e13a951c33e65afab30761bad6ef3f165078d687881d8d", - "bytes": 14587, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-08", - "revision": "42e957201315aa8221ba60fbe614119e22639ce8", - "git_object": "021bc9d6484d5c9f8fc0aa095d7bbbd087361aed", - "path": "scripts/analyze_gain.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/scripts/analyze_gain.py" - }, - "narps-r1-08/results/group_t_positive.nii.gz": { - "sha256": "d3db14fceb26d1ce9d39b29a590d6b3915c083c48318bcae92239e0798dc96da", - "bytes": 1076313, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-08", - "revision": "42e957201315aa8221ba60fbe614119e22639ce8", - "git_object": "e5b90006b20988ad1b6dfaa21cc4b7491280d38d", - "path": "results/group_t_positive.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/group_t_positive.nii.gz", - "annex_key": "SHA256E-s1076313--d3db14fceb26d1ce9d39b29a590d6b3915c083c48318bcae92239e0798dc96da.nii.gz" - }, - "narps-r1-08/results/group_p_fwe_positive.nii.gz": { - "sha256": "a104f1d14cfdd1799efa530f774bd4d89ee7f193bb63a9585a8626731b1c2033", - "bytes": 71787, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-08", - "revision": "42e957201315aa8221ba60fbe614119e22639ce8", - "git_object": "9dd612f8f12c875cdb881908e04e088f63a4b002", - "path": "results/group_p_fwe_positive.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/group_p_fwe_positive.nii.gz" - }, - "narps-r1-08/results/group_mask_90pct_coverage.nii.gz": { - "sha256": "2c88b35880eb8814322a5df81c277844020c1662416375e92bdae4c76f6d0970", - "bytes": 66546, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-08", - "revision": "42e957201315aa8221ba60fbe614119e22639ce8", - "git_object": "10cfedc354302b03f0ce65b609398a873ae2163b", - "path": "results/group_mask_90pct_coverage.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08/results/group_mask_90pct_coverage.nii.gz" - }, - "narps-r1-09/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-09", - "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/input/sources.json" - }, - "narps-r1-09/results/results.json": { - "sha256": "c1c5073516a8de8412b63d36a96524dab63bb54073db9033c5b9ab977f7afd47", - "bytes": 2500, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-09", - "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "git_object": "bf76fe1606138531cfd0cd40d3c1fdd0eb8847eb", - "path": "results/results.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json" - }, - "narps-r1-09/scripts/analyze_gain.py": { - "sha256": "efb44f741818ba6b414b27cd57b5414bb5dd7ed7c02c7d55b1e52eae3531dcf8", - "bytes": 12814, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-09", - "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "git_object": "1373c078213f3a2a54277d2302622ae7b79c5a80", - "path": "scripts/analyze_gain.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py" - }, - "narps-r1-09/results/one_sample_t.nii.gz": { - "sha256": "75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b", - "bytes": 772808, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-09", - "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "git_object": "bd77eaca1c34cc3f19032439486a21ab8c0356dc", - "path": "results/one_sample_t.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/one_sample_t.nii.gz", - "annex_key": "SHA256E-s772808--75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b.nii.gz" - }, - "narps-r1-09/results/max_t_log10_fwe_p.nii.gz": { - "sha256": "dd436be34e0012334759bb4b123bdeec3284919c37fd32b31b62fd6f0c38ac5a", - "bytes": 47377, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-09", - "revision": "2ad7c466615141d11b81720ff97d61c2d7c23f73", - "git_object": "b28b244e45d0b0d94d4a830562cb863ddc8311ae", - "path": "results/max_t_log10_fwe_p.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/max_t_log10_fwe_p.nii.gz" - }, - "narps-r1-10/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-10", - "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/input/sources.json" - }, - "narps-r1-10/results/final-v3/summary.json": { - "sha256": "06e5103de5e0243408b18d30fba039f3ea26086c38c26c4f3f82360e8a66e949", - "bytes": 3219, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-10", - "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", - "git_object": "b48264ef7abad5cc7a65331c407f2197c174a5c5", - "path": "results/final-v3/summary.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/results/final-v3/summary.json" - }, - "narps-r1-10/code/analyze.py": { - "sha256": "1337978109b8887c3286cd09e7faf2faa1a85ec555331b9185fe1fe7d8f549fc", - "bytes": 12680, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-10", - "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", - "git_object": "596d3af5316ae3b13b3a2e5a22630fe731011e8d", - "path": "code/analyze.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/code/analyze.py" - }, - "narps-r1-10/results/final-v3/group-t.nii.gz": { - "sha256": "818262bf4481df4ae3d73d41033953eb844772f9df8291ca7ebcc5a4bd088d1e", - "bytes": 1013790, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-10", - "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", - "git_object": "b0167541f62e77922406bdc261d2edbcb1784d61", - "path": "results/final-v3/group-t.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/results/final-v3/group-t.nii.gz", - "annex_key": "SHA256E-s1013790--818262bf4481df4ae3d73d41033953eb844772f9df8291ca7ebcc5a4bd088d1e.nii.gz" - }, - "narps-r1-10/results/final-v3/group-fwe-p.nii.gz": { - "sha256": "52d4e6b11d498ea3c1f00700f1fc6dca91ff3401ceb2404937b3c07894a3b7d5", - "bytes": 70057, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-10", - "revision": "62d247e48e69978d294dc39175d53f9aa638ce0d", - "git_object": "56294839562feed428fc6b52899462846f9c0090", - "path": "results/final-v3/group-fwe-p.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-10/results/final-v3/group-fwe-p.nii.gz", - "annex_key": "SHA256E-s70057--52d4e6b11d498ea3c1f00700f1fc6dca91ff3401ceb2404937b3c07894a3b7d5.nii.gz" - }, - "narps-r1-11/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-11", - "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/input/sources.json" - }, - "narps-r1-11/results/summary.json": { - "sha256": "a048f20f1e91f92d19468a5bd676a4908361a7ee87cfc241aa5c077c0d79edb8", - "bytes": 1882, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-11", - "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", - "git_object": "6718202154ff9bf689f367e3f92823d1c2837706", - "path": "results/summary.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/results/summary.json" - }, - "narps-r1-11/scripts/group_analysis.py": { - "sha256": "f46c4330c0f3afee026f734476ef0c71af90fd6a94e9b8c651166c7708b33825", - "bytes": 14551, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-11", - "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", - "git_object": "576123c9d0e0c2253361518d3bdab9480f780c83", - "path": "scripts/group_analysis.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/scripts/group_analysis.py" - }, - "narps-r1-11/results/t_unthresholded.nii.gz": { - "sha256": "6c5a0804531f381e6eaba8554268743b8853a0f6d22fd9ae368d014df387f393", - "bytes": 767226, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-11", - "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", - "git_object": "f4b757f639bf756416be805de29845f7e8d131fb", - "path": "results/t_unthresholded.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/results/t_unthresholded.nii.gz", - "annex_key": "SHA256E-s767226--6c5a0804531f381e6eaba8554268743b8853a0f6d22fd9ae368d014df387f393.nii.gz" - }, - "narps-r1-11/results/p_fwe.nii.gz": { - "sha256": "1fcaf00879f434ba08cdb99b90ed475ec076099d6c5e9a53d3b6785a06c88ad0", - "bytes": 20998, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-11", - "revision": "284c8768140cbd816d983f8bd2697bd9b541eb25", - "git_object": "b8566f47c3904ea433fddfed94ddc7eef4996dba", - "path": "results/p_fwe.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-11/results/p_fwe.nii.gz" - }, - "narps-r1-12/input/sources.json": { - "sha256": "919be9b4278c31f7e39ae3d02fcf159eb4ae222a2fb96c90df7c3a92e5fb19cd", - "bytes": 19843, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-12", - "revision": "40164f018638f6fc744881a91a70d3257b77985f", - "git_object": "1d3637a98c93a1bdd00da5f988eda0c7fae3d5d7", - "path": "input/sources.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/input/sources.json" - }, - "narps-r1-12/results/group-analysis/summary.json": { - "sha256": "f1e44446f26280e346cf0de507b206be1fd2eff6e87bf9de9e22e613daa62c6d", - "bytes": 2040, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-12", - "revision": "40164f018638f6fc744881a91a70d3257b77985f", - "git_object": "a40824eb7129716bc05e9ad6c92d4079b867ecb9", - "path": "results/group-analysis/summary.json", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/results/group-analysis/summary.json" - }, - "narps-r1-12/analysis/group_analysis.py": { - "sha256": "d304d0d970d32de4d8c538ebbed534d168cfda55afa3b62a0eab596f3adcde55", - "bytes": 12740, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-12", - "revision": "40164f018638f6fc744881a91a70d3257b77985f", - "git_object": "d8cae9be5b10e53066582617c9d5df4294d28513", - "path": "analysis/group_analysis.py", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/analysis/group_analysis.py" - }, - "narps-r1-12/results/group-analysis/group_t.nii.gz": { - "sha256": "f33c040247773ffed29a93a7a643fdedfe03fc8dd919feef2a0be4142b38330e", - "bytes": 1027323, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-12", - "revision": "40164f018638f6fc744881a91a70d3257b77985f", - "git_object": "1672c359ba32c8c2fed0e53034ab30efdb262ee4", - "path": "results/group-analysis/group_t.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/results/group-analysis/group_t.nii.gz", - "annex_key": "SHA256E-s1027323--f33c040247773ffed29a93a7a643fdedfe03fc8dd919feef2a0be4142b38330e.nii.gz" - }, - "narps-r1-12/results/group-analysis/p_fwe_maxT.nii.gz": { - "sha256": "f8da3849ad54a028d39ac59608ebbeef0615901aeea70d797daf8ef8d1b45024", - "bytes": 76105, - "repository": "https://github.com/leej3/stamped-in-practice", - "branch": "codex/narps-r1-12", - "revision": "40164f018638f6fc744881a91a70d3257b77985f", - "git_object": "675e71b0b486d4c984cebb3f2415b0fafcbc943d", - "path": "results/group-analysis/p_fwe_maxT.nii.gz", - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-12/results/group-analysis/p_fwe_maxT.nii.gz" - } - } -} diff --git a/2026-usrse/stamped-ai-study/data/narps-spatial/render-manifest.json b/2026-usrse/stamped-ai-study/data/narps-spatial/render-manifest.json deleted file mode 100644 index 56a16285..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-spatial/render-manifest.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "input_provenance_sha256": "54bea628a9a2a4454288b9a2b2c12f56e39799ec50a7f28a9d8c0139e1509ebd", - "script_sha256": "1303f14f12f8962072bf56b777c5a5d8cf76186a7420501feb23f2fd4ddcbea7", - "derived_summary_sha256": "016821e822d1ab2e27f013efa56ddd6d817bc5d1a2fc735caf80d15c059320ab", - "figure_sha256": { - "svg": "7f7d3d44bacbbe6a8a911d89859fb7612ae3875bf35217efcc85b4891c6af790", - "png": "f93b8a67c4d714622d891934546a1b384d99c7e3e32cc4fa42b06375f7355bf8" - }, - "software": { - "numpy": "2.5.4", - "matplotlib": "3.11.2" - } -} diff --git a/2026-usrse/stamped-ai-study/data/narps-spatial/spatial-inputs.npz b/2026-usrse/stamped-ai-study/data/narps-spatial/spatial-inputs.npz deleted file mode 120000 index 222ad315..00000000 --- a/2026-usrse/stamped-ai-study/data/narps-spatial/spatial-inputs.npz +++ /dev/null @@ -1 +0,0 @@ -../../../../.git/annex/objects/pF/Zx/MD5E-s4292062--1fdef22f9f979756e157d0823d6c7be3.npz/MD5E-s4292062--1fdef22f9f979756e157d0823d6c7be3.npz \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json index f1c3a49b..581303ec 100644 --- a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json +++ b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json @@ -1,19 +1,19 @@ { "reviewer": "Codex agent", "author_review": false, - "pdf_sha256": "289d01b8d3c11c821af197f4f1934c9d1f6d5199ae341a088e965d8b705fc091", - "preview_sha256": "1b56557847966bb7e200a0dc038c767a746b305e21f0ea0a96a530ef0673b86e", - "reviewed_utc": "2026-10-16T04:51:21.120226+00:00", + "pdf_sha256": "4f1b1e32c225ba04282bc2406e3a973a4092b9f386c0ca93d0cc2fb6b69f229d", + "preview_sha256": "9734c16cfab996ac3a099823b9d616bb621e0a89093a95648d6491d0d303b400", + "reviewed_utc": "2026-10-16T05:48:22.643514+00:00", "checks": [ "Inspected the current full-page PDF raster preview", - "STAMPED principles appear in the top band with concise definitions", - "Original study occupies one sentence; assistance is explained with the revision comparison", - "All twelve first-iteration runs have individual assessment rows; all 36 allocated run IDs are present", - "Spatial agreement figure uses all twelve runs on shared coverage and distinguishes unassessed areas", - "All visible GitHub evidence links use named branches", + "Experiment framing restored in the blue banner; principles run down the left column", + "Compact four-row condition summary reserves space for pooled retained iterations", + "Both scientific figures are verified display copies from the benchmark repository", + "Research-object message and invitation retain prominent positions", + "No experiment-design concerns or completion-plan text appear on the poster", "Three columns, captions, invitation and footer fit without clipping or overlap", - "Four QR codes decode from PDF pixels; all PDF text meets the 24 pt minimum", - "Bibliographic URL update leaves the reviewed PDF raster byte-identical" + "All 29 links pass and use named branches for GitHub evidence navigation", + "Four QR codes decode from PDF pixels; all PDF text meets the 24 pt minimum" ], "result": "passed" } diff --git a/2026-usrse/stamped-ai-study/exports/html-audit.json b/2026-usrse/stamped-ai-study/exports/html-audit.json index b96c40fc..38d63728 100644 --- a/2026-usrse/stamped-ai-study/exports/html-audit.json +++ b/2026-usrse/stamped-ai-study/exports/html-audit.json @@ -4,7 +4,7 @@ "height": 4224 }, "minimum_text_px": 32, - "text_node_count": 265, + "text_node_count": 150, "small": [], "outside": [], "regionOverflow": [], @@ -41,7 +41,7 @@ "href": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", "rect": { "x": 1270.21875, - "y": 1416.8125, + "y": 1368.8125, "width": 1328.609375, "height": 629.84375 } @@ -49,10 +49,10 @@ { "src": "figures/narps-spatial-agreement.svg", "loaded": true, - "href": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", + "href": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", "rect": { "x": 1270.21875, - "y": 2583.5, + "y": 2535.5, "width": 1328.609375, "height": 856.203125 } @@ -158,17 +158,11 @@ "links": [ "https://dev.centerforopenneuroscience.org/", "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", - "https://github.com/stamped-principles/stamped-paper", "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", - "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", - "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", - "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", - "https://github.com/leej3/stamped-in-practice", "https://checklist.stamped-principles.org/", "https://pubmed.ncbi.nlm.nih.gov/17255512/", "https://doi.org/10.1038/s41586-020-2314-9", @@ -178,37 +172,16 @@ "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", - "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py", - "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/narps-spatial", + "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", + "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/render_narps_spatial.py", + "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial", "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-assessment.md", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-response.json", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-assessment.md", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-response.json", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-assessment.md", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-response.json", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-assessment.md", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-response.json", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-assessment.md", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-response.json", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-assessment.md", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-response.json", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-assessment.md", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-response.json", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", - "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", "https://github.com/leej3/stamped-in-practice/tree/main/iterations", + "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", + "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-v1/procedure.json", + "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", + "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1", + "https://github.com/leej3/stamped-in-practice", "https://github.com/con/skills/commits/codex/pr26-operational-environment/", "https://pbs.dartmouth.edu/", "https://www.repronim.org/" @@ -219,9 +192,9 @@ "class": "", "rect": { "x": 2690.828125, - "y": 760, + "y": 712, "width": 1445.15625, - "height": 519.6875 + "height": 452.5 } }, { @@ -229,19 +202,19 @@ "class": "results-matrix", "rect": { "x": 2690.828125, - "y": 1289.6875, + "y": 1174.5, "width": 1445.15625, - "height": 1640 + "height": 620.375 } }, { "element": "SECTION", - "class": "assessment-key", + "class": "ruled evidence-section", "rect": { "x": 2690.828125, - "y": 2955.6875, + "y": 1866.875, "width": 1445.15625, - "height": 331.71875 + "height": 913.25 } }, { @@ -249,31 +222,26 @@ "class": "ruled revision-section", "rect": { "x": 2690.828125, - "y": 3313.40625, + "y": 2806.125, "width": 1445.15625, - "height": 237.15625 + "height": 199.375 } } ], "browser": "151.0.7922.34", - "created_utc": "2026-10-16T04:46:15.771Z", + "created_utc": "2026-10-16T05:47:27.131Z", "source_sha256": { - "index.html": "65adf144d4d676298f48b3ea6bb16b46945592f3aa8323c4549e85baae9f9aff", + "index.html": "29a3aebdcb3fcb42ddf3d32879095bdea133fee2e52371632d068fbab85475c4", "template.css": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", - "poster.css": "0a4e777fb1ca3042c26b743a0b525fedbf13778c601fca6d937116a7fe0b9977", - "build-poster.cjs": "5aa4ae64ee5846d8ea4f11a3a88c9950d2f26cf2801209072e57cebd152f669e", + "poster.css": "352b253e7fa7fdf56f165fdbb053f0233a6e26900fa9303811685efc7082871d", + "build-poster.cjs": "3c392e51ef7a2151447fa6fe0e934ef77b7926086923e10a9b938fe4ba9d0a1a", "verify-pdf.py": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", "verify-links.py": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", "make-logo-qrs.py": "7d7b2cd508a25f0e15d7674caee7061aaacf6d5eb32d9371df8433f94c42257c", "source-manifest.json": "4690c150b8f52f8311d4dbb83caceea4abeb753513b104c9dc9ca33c8a90f3ea", - "update-results.py": "4fecd6800bcdc4c654d8797f89f4ea661fb49b5bd03d6777e622bccebb707c94", - "data/assessment-snapshot.json": "ffe68055bb16cd5dbba608856621fbb76d34031820d8b0853e8c3648ed540477", - "figures/narps-figure-manifest.json": "05ddd6e5b0f8b2e19b4e48dd8f83030df34ec88d2ad1ad262b6793171711e67a", - "data/narps-spatial/render-manifest.json": "c856ace4958901d7ce4f1f4b266a9185c21baa801e0118bf5850b8f35fc6671d", - "scripts/render-narps-figures.py": "6f7f75d2bfef7a2ad466dc29b9af1cd138f7cc6a7f41d972f31a2a295d68d33e", - "scripts/render-narps-spatial.py": "1303f14f12f8962072bf56b777c5a5d8cf76186a7420501feb23f2fd4ddcbea7", - "scripts/extract-narps-spatial.py": "6c2f00088746092123a35cbfc2d798defddbe11047f78f91341afa2dc0fd3507", - "pixi.toml": "1cb16abd8da8dbada99853862612c66ecfedd1b914a6b6e6ab0b6a3220a896fb", + "figures/benchmark-source.json": "fb70d4d7caf1a7ebe4cad0a54d83415f1447e3d18d3bd1953c1c5492237a8445", + "scripts/import-benchmark-figures.py": "c634739fdfae9eca4e21d00b1ce392f1d387f8df2206d7f856c8a4cd4fca2106", + "pixi.toml": "64d54f1fac88141849c2308803b01d5144b6dc1d89638e97d9646790d934c50f", "package-lock.json": "c4a27d1390a90be1fed6dd2c6f713f8b9ecfb49f5721656de4db136af2307cdc" }, "errors": [] diff --git a/2026-usrse/stamped-ai-study/exports/link-audit.json b/2026-usrse/stamped-ai-study/exports/link-audit.json index ee80855f..167d0161 100644 --- a/2026-usrse/stamped-ai-study/exports/link-audit.json +++ b/2026-usrse/stamped-ai-study/exports/link-audit.json @@ -1,11 +1,11 @@ { - "html_audit_sha256": "e2d2aa0412c9a636f9e8747145ff895b0a7981633141bf028870a325fb95d4a3", - "checked_at": "2026-10-16T04:46:28.427005+00:00", + "html_audit_sha256": "ce8a3f41d1cfe671abfe35464629e42d61399314b72295bc2cc9ea255f7a5c0a", + "checked_at": "2026-10-16T05:47:48.897702+00:00", "authentication": "none", "results": [ { "url": "https://checklist.stamped-principles.org/", - "checked_at": "2026-10-16T04:46:21.172677+00:00", + "checked_at": "2026-10-16T05:47:44.560961+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://checklist.stamped-principles.org/", @@ -13,7 +13,7 @@ }, { "url": "https://dev.centerforopenneuroscience.org/", - "checked_at": "2026-10-16T04:46:21.172931+00:00", + "checked_at": "2026-10-16T05:47:44.561232+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://dev.centerforopenneuroscience.org/", @@ -21,15 +21,15 @@ }, { "url": "https://doi.org/10.1038/s41586-020-2314-9", - "checked_at": "2026-10-16T04:46:21.172993+00:00", + "checked_at": "2026-10-16T05:47:44.561305+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=e9ab83c0-ece9-43f3-820a-14af19f40f90", + "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=7f13aca7-398d-4868-8eb1-f167688c117e", "passed": true }, { "url": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", - "checked_at": "2026-10-16T04:46:21.173037+00:00", + "checked_at": "2026-10-16T05:47:44.561353+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://openneuro.org/datasets/ds001734/versions/1.0.4", @@ -37,7 +37,7 @@ }, { "url": "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T04:46:21.366949+00:00", + "checked_at": "2026-10-16T05:47:44.798628+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", @@ -45,7 +45,7 @@ }, { "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T04:46:21.412053+00:00", + "checked_at": "2026-10-16T05:47:44.840190+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", @@ -53,7 +53,7 @@ }, { "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", - "checked_at": "2026-10-16T04:46:21.712596+00:00", + "checked_at": "2026-10-16T05:47:45.187936+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", @@ -61,7 +61,7 @@ }, { "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", - "checked_at": "2026-10-16T04:46:21.915572+00:00", + "checked_at": "2026-10-16T05:47:45.327622+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", @@ -69,7 +69,7 @@ }, { "url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", - "checked_at": "2026-10-16T04:46:21.939255+00:00", + "checked_at": "2026-10-16T05:47:45.351082+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", @@ -77,167 +77,39 @@ }, { "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", - "checked_at": "2026-10-16T04:46:22.147235+00:00", + "checked_at": "2026-10-16T05:47:45.688209+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", "passed": true }, - { - "url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", - "checked_at": "2026-10-16T04:46:22.443467+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json", - "passed": true - }, - { - "url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py", - "checked_at": "2026-10-16T04:46:22.494649+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py", - "passed": true - }, { "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", - "checked_at": "2026-10-16T04:46:22.566122+00:00", + "checked_at": "2026-10-16T05:47:45.800010+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", "passed": true }, - { - "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/narps-spatial", - "checked_at": "2026-10-16T04:46:22.965625+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/narps-spatial", - "passed": true - }, { "url": "https://github.com/leej3/stamped-in-practice", - "checked_at": "2026-10-16T04:46:22.993741+00:00", + "checked_at": "2026-10-16T05:47:45.959389+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-assessment.md", - "checked_at": "2026-10-16T04:46:23.000341+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-v1/procedure.json", + "checked_at": "2026-10-16T05:47:46.085000+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-assessment.md", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-response.json", - "checked_at": "2026-10-16T04:46:23.031440+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-01-judge-01-output/2026-10-16-response.json", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-assessment.md", - "checked_at": "2026-10-16T04:46:23.400367+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-assessment.md", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-response.json", - "checked_at": "2026-10-16T04:46:23.455869+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-02-judge-01-output/2026-10-16-response.json", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-assessment.md", - "checked_at": "2026-10-16T04:46:23.502554+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-assessment.md", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-response.json", - "checked_at": "2026-10-16T04:46:23.545186+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-05-judge-01-output/2026-10-16-response.json", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-assessment.md", - "checked_at": "2026-10-16T04:46:23.849767+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-assessment.md", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-response.json", - "checked_at": "2026-10-16T04:46:23.960701+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-06-judge-01-output/2026-10-16-response.json", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-assessment.md", - "checked_at": "2026-10-16T04:46:24.023520+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-assessment.md", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-response.json", - "checked_at": "2026-10-16T04:46:24.042539+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-07-judge-01-output/2026-10-16-response.json", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-assessment.md", - "checked_at": "2026-10-16T04:46:24.276733+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-assessment.md", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-response.json", - "checked_at": "2026-10-16T04:46:24.486556+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-08-judge-01-output/2026-10-16-response.json", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-assessment.md", - "checked_at": "2026-10-16T04:46:24.504897+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-assessment.md", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-response.json", - "checked_at": "2026-10-16T04:46:24.581408+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09-judge-01-output/2026-10-16-response.json", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-v1/procedure.json", "passed": true }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", - "checked_at": "2026-10-16T04:46:24.683582+00:00", + "checked_at": "2026-10-16T05:47:46.300489+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", @@ -245,7 +117,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", - "checked_at": "2026-10-16T04:46:24.973784+00:00", + "checked_at": "2026-10-16T05:47:46.602338+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", @@ -253,15 +125,23 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", - "checked_at": "2026-10-16T04:46:25.044552+00:00", + "checked_at": "2026-10-16T05:47:46.623393+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", "passed": true }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/render_narps_spatial.py", + "checked_at": "2026-10-16T05:47:46.754258+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/render_narps_spatial.py", + "passed": true + }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", - "checked_at": "2026-10-16T04:46:25.098395+00:00", + "checked_at": "2026-10-16T05:47:46.760156+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", @@ -269,7 +149,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", - "checked_at": "2026-10-16T04:46:25.134898+00:00", + "checked_at": "2026-10-16T05:47:47.074565+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", @@ -277,151 +157,55 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", - "checked_at": "2026-10-16T04:46:25.446858+00:00", + "checked_at": "2026-10-16T05:47:47.155292+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", - "checked_at": "2026-10-16T04:46:25.525494+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/iterations/narps-v1/procedure.json", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", - "checked_at": "2026-10-16T04:46:25.558552+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-01", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", - "checked_at": "2026-10-16T04:46:25.610277+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-02", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", - "checked_at": "2026-10-16T04:46:25.884455+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-03", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", - "checked_at": "2026-10-16T04:46:25.955372+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-04", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", - "checked_at": "2026-10-16T04:46:26.070539+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-05", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", - "checked_at": "2026-10-16T04:46:26.093976+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-06", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", - "checked_at": "2026-10-16T04:46:26.414664+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-07", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", - "checked_at": "2026-10-16T04:46:26.444417+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-08", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", - "checked_at": "2026-10-16T04:46:26.554285+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1", + "checked_at": "2026-10-16T05:47:47.249848+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1", "passed": true }, { "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", - "checked_at": "2026-10-16T04:46:26.588351+00:00", + "checked_at": "2026-10-16T05:47:47.378484+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", - "checked_at": "2026-10-16T04:46:26.879740+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", + "checked_at": "2026-10-16T05:47:47.509444+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-10", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", - "checked_at": "2026-10-16T04:46:26.884264+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial", + "checked_at": "2026-10-16T05:47:47.602822+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-11", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", - "checked_at": "2026-10-16T04:46:26.981597+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-12", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial", "passed": true }, { "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", - "checked_at": "2026-10-16T04:46:27.034701+00:00", + "checked_at": "2026-10-16T05:47:47.800881+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", "passed": true }, - { - "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", - "checked_at": "2026-10-16T04:46:27.363090+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations/narps-v1", - "passed": true - }, - { - "url": "https://github.com/stamped-principles/stamped-paper", - "checked_at": "2026-10-16T04:46:27.387098+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/stamped-principles/stamped-paper", - "passed": true - }, { "url": "https://neurovault.org/collections/4932/", - "checked_at": "2026-10-16T04:46:27.426205+00:00", + "checked_at": "2026-10-16T05:47:47.829485+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://neurovault.org/collections/4932/", @@ -429,7 +213,7 @@ }, { "url": "https://pbs.dartmouth.edu/", - "checked_at": "2026-10-16T04:46:27.460414+00:00", + "checked_at": "2026-10-16T05:47:48.062545+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://pbs.dartmouth.edu/", @@ -437,7 +221,7 @@ }, { "url": "https://pubmed.ncbi.nlm.nih.gov/17255512/", - "checked_at": "2026-10-16T04:46:27.776871+00:00", + "checked_at": "2026-10-16T05:47:48.194696+00:00", "method": "HEAD", "http_status": 203, "final_url": "https://pubmed.ncbi.nlm.nih.gov/17255512/", @@ -445,7 +229,7 @@ }, { "url": "https://www.repronim.org/", - "checked_at": "2026-10-16T04:46:27.796288+00:00", + "checked_at": "2026-10-16T05:47:48.297052+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://repronim.org/", diff --git a/2026-usrse/stamped-ai-study/exports/pdf-audit.json b/2026-usrse/stamped-ai-study/exports/pdf-audit.json index 2d53a325..dad00323 100644 --- a/2026-usrse/stamped-ai-study/exports/pdf-audit.json +++ b/2026-usrse/stamped-ai-study/exports/pdf-audit.json @@ -1,5 +1,5 @@ { - "pdf_sha256": "289d01b8d3c11c821af197f4f1934c9d1f6d5199ae341a088e965d8b705fc091", + "pdf_sha256": "4f1b1e32c225ba04282bc2406e3a973a4092b9f386c0ca93d0cc2fb6b69f229d", "page_count": 1, "page_points": [ 3168.0, @@ -8,9 +8,9 @@ "minimum_html_text_px": 32, "minimum_html_text_pt": 24.0, "minimum_pdf_text_pt": 24.0, - "inspected_pdf_text_runs": 339, - "link_annotation_count": 92, - "unique_expected_links": 56, + "inspected_pdf_text_runs": 219, + "link_annotation_count": 37, + "unique_expected_links": 29, "missing_links": [], "raster_dpi": 150, "qr_results": [ diff --git a/2026-usrse/stamped-ai-study/exports/pdf-preview.png b/2026-usrse/stamped-ai-study/exports/pdf-preview.png index 3c1a214b..f3a30659 120000 --- a/2026-usrse/stamped-ai-study/exports/pdf-preview.png +++ b/2026-usrse/stamped-ai-study/exports/pdf-preview.png @@ -1 +1 @@ -../../../.git/annex/objects/Vp/q1/MD5E-s1109867--4a784886434a9b2f74d505be6f3f5c82.png/MD5E-s1109867--4a784886434a9b2f74d505be6f3f5c82.png \ No newline at end of file +../../../.git/annex/objects/KX/xM/MD5E-s1012249--fb120e92a88e4205b2d5b54521840d3f.png/MD5E-s1012249--fb120e92a88e4205b2d5b54521840d3f.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json index 1900f997..0f613b6d 100644 --- a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json +++ b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json @@ -1,5 +1,5 @@ { - "checked_utc": "2026-10-16T04:51:39.652943+00:00", + "checked_utc": "2026-10-16T05:48:40.738147+00:00", "authentication": "none", "method": "download and compare full payload SHA-256", "files": [ @@ -27,54 +27,6 @@ "bytes": 67623, "passed": true }, - { - "path": "data/narps-spatial/spatial-inputs.npz", - "key": "MD5E-s4292062--1fdef22f9f979756e157d0823d6c7be3.npz", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s4292062--1fdef22f9f979756e157d0823d6c7be3.npz", - "sha256": "7c630a699298b18e0fdad17ebfe6e89400d64568705dacc10d820381ed13509f", - "bytes": 4292062, - "passed": true - }, - { - "path": "data/narps-2026-10-15/maps/one_sample_t.nii.gz", - "key": "MD5E-s772808--30da57fa1b8cc7a318c3b4f5edd628b6.nii.gz", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s772808--30da57fa1b8cc7a318c3b4f5edd628b6.nii.gz", - "sha256": "75f39f65b5e76b3036387488e36df52a5d147a56a9bd7939156117a23bcf739b", - "bytes": 772808, - "passed": true - }, - { - "path": "data/narps-2026-10-15/maps/common_brain_mask.nii.gz", - "key": "MD5E-s23179--b25609ef0de74955022971bf2597b668.nii.gz", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s23179--b25609ef0de74955022971bf2597b668.nii.gz", - "sha256": "e72a50e0531fd4e353fff55c81b2790319aebe2cb30aba305fbf51b7394e5ff1", - "bytes": 23179, - "passed": true - }, - { - "path": "data/narps-2026-10-15/maps/max_t_fwe_p05_mask.nii.gz", - "key": "MD5E-s4192--20ebf663b35d48e2ea0f235518973796.nii.gz", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s4192--20ebf663b35d48e2ea0f235518973796.nii.gz", - "sha256": "e4fcc6042c290ac029f16a5741a15e84c7a0072e8907572edef1cd69a76d78ac", - "bytes": 4192, - "passed": true - }, - { - "path": "data/narps-2026-10-15/maps/anatomical-context.nii.gz", - "key": "MD5E-s207544--035d9295baaa7a578da078948c0807c1.nii.gz", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s207544--035d9295baaa7a578da078948c0807c1.nii.gz", - "sha256": "a110f8454d04756a9eef6dfae4750f75629d96d3e5e6f348a4c71d28495bcbca", - "bytes": 207544, - "passed": true - }, - { - "path": "data/narps-2026-10-15/maps/vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", - "key": "MD5E-s4607--e6ad8475cbac58e6f2cfd22bcf28dc70.nii.gz", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s4607--e6ad8475cbac58e6f2cfd22bcf28dc70.nii.gz", - "sha256": "b520b7442d546efa2aa7bbc0fa1c72beab5c77fee3c0d4e1d1901f16e5fd4337", - "bytes": 4607, - "passed": true - }, { "path": "figures/narps-group-map.png", "key": "MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png", @@ -101,18 +53,18 @@ }, { "path": "exports/stamped-ai-poster.pdf", - "key": "MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf", - "sha256": "289d01b8d3c11c821af197f4f1934c9d1f6d5199ae341a088e965d8b705fc091", - "bytes": 892882, + "key": "MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf", + "sha256": "4f1b1e32c225ba04282bc2406e3a973a4092b9f386c0ca93d0cc2fb6b69f229d", + "bytes": 838462, "passed": true }, { "path": "exports/pdf-preview.png", - "key": "MD5E-s1109867--4a784886434a9b2f74d505be6f3f5c82.png", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1109867--4a784886434a9b2f74d505be6f3f5c82.png", - "sha256": "1b56557847966bb7e200a0dc038c767a746b305e21f0ea0a96a530ef0673b86e", - "bytes": 1109867, + "key": "MD5E-s1012249--fb120e92a88e4205b2d5b54521840d3f.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1012249--fb120e92a88e4205b2d5b54521840d3f.png", + "sha256": "9734c16cfab996ac3a099823b9d616bb621e0a89093a95648d6491d0d303b400", + "bytes": 1012249, "passed": true }, { diff --git a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf index 25754225..149bcdcc 120000 --- a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf +++ b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf @@ -1 +1 @@ -../../../.git/annex/objects/5k/5P/MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf/MD5E-s892882--8fb66a8397e55c022c41a884750c0dd5.pdf \ No newline at end of file +../../../.git/annex/objects/PM/68/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/benchmark-source.json b/2026-usrse/stamped-ai-study/figures/benchmark-source.json new file mode 100644 index 00000000..63a83b24 --- /dev/null +++ b/2026-usrse/stamped-ai-study/figures/benchmark-source.json @@ -0,0 +1,133 @@ +{ + "schema_version": 1, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/stamped-poster-analysis", + "revision": "c8750a39e329bb8d6d7e4024282d6253a25df11e", + "source_manifest": { + "path": "experiments/narps-poster/figures/poster-figure-manifest.json", + "sha256": "702219533f5e039f0c09fdcd7ce8f1ea70eb05693ea38601021f74135736bf3c" + }, + "source_manifest_content": { + "schema_version": 1, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/stamped-poster-analysis", + "command": "pixi run poster-figures", + "scope": "Scientific figure source of truth. Presentation repositories retain display copies; source data, code and scientific provenance remain here.", + "figures": [ + { + "path": "experiments/narps-poster/figures/narps-group-map.svg", + "sha256": "4d22926b56073a6bc1b981413d3d117948e8f02781f664faa876cd3e79995f3b", + "bytes": 87877 + }, + { + "path": "experiments/narps-poster/figures/narps-group-map.png", + "sha256": "c35b14d41d0b3496c6247d6dbc14db9c2f1e4009764d7370e07b0ec8f013e7b7", + "bytes": 136105 + }, + { + "path": "experiments/narps-poster/figures/narps-spatial-agreement.svg", + "sha256": "7f7d3d44bacbbe6a8a911d89859fb7612ae3875bf35217efcc85b4891c6af790", + "bytes": 142319 + }, + { + "path": "experiments/narps-poster/figures/narps-spatial-agreement.png", + "sha256": "f93b8a67c4d714622d891934546a1b384d99c7e3e32cc4fa42b06375f7355bf8", + "bytes": 166353 + } + ], + "sources": [ + { + "path": "experiments/narps-poster/map-inputs/example/provenance.json", + "sha256": "37c94e97d1957209d39a0383dc4034a4ba5027d966135ef35b85be0c130380e6", + "bytes": 17958 + }, + { + "path": "experiments/narps-poster/map-inputs/spatial/provenance.json", + "sha256": "54bea628a9a2a4454288b9a2b2c12f56e39799ec50a7f28a9d8c0139e1509ebd", + "bytes": 47081 + }, + { + "path": "experiments/narps-poster/map-inputs/spatial/spatial-inputs.npz", + "sha256": "7c630a699298b18e0fdad17ebfe6e89400d64568705dacc10d820381ed13509f", + "bytes": 4292062 + }, + { + "path": "experiments/narps-poster/figures/narps-group-map-manifest.json", + "sha256": "858db4b1517e54198bf6f5ce3c08c2c868b11460c89a82650223f619c560454d", + "bytes": 503 + }, + { + "path": "experiments/narps-poster/figures/narps-spatial-manifest.json", + "sha256": "82b8ceffc7b455073b56f9e00df9b96d4ed37d2c02bdc00ad8bb6adf88be06a3", + "bytes": 536 + }, + { + "path": "experiments/narps-poster/figures/narps-spatial-summary.json", + "sha256": "016821e822d1ab2e27f013efa56ddd6d817bc5d1a2fc735caf80d15c059320ab", + "bytes": 3332 + }, + { + "path": "pixi.toml", + "sha256": "fd15ff19066829b17ca49abd3452c5ef1c86b31b59e16cf13efa0460d3b6a04e", + "bytes": 2706 + }, + { + "path": "scripts/render_narps_group_map.py", + "sha256": "15cdbe99c7b26468b060fd5616e3b598760b0af32b6a8dffcae0680f30183f24", + "bytes": 8040 + }, + { + "path": "scripts/render_narps_spatial.py", + "sha256": "28018e9574eb3200942827f4204c8212b575082c286e3000f69c3ba9ac31281a", + "bytes": 8402 + }, + { + "path": "scripts/extract_narps_spatial.py", + "sha256": "d2a3ea0798a88cf361bd110b012cd44fff318df54291d4bd1a394c93277c82f3", + "bytes": 11039 + }, + { + "path": "scripts/capture_narps_group_map.py", + "sha256": "e6a41115689a637f600b484904b5c217a6dce9175c965e225427bc5082a443da", + "bytes": 4230 + }, + { + "path": "scripts/narps_figure_sources.py", + "sha256": "0645e30272e44692e614d29e52b71c8d6d4743eed2c64ad4bdb28a38307a317c", + "bytes": 6250 + }, + { + "path": "scripts/narps_poster_figure_manifest.py", + "sha256": "47e7c9d06d8ce668a30599d236c4d0a8a6d95fbd4127622eb08e659008ea313f", + "bytes": 2094 + } + ] + }, + "figures": [ + { + "path": "figures/narps-group-map.svg", + "sha256": "4d22926b56073a6bc1b981413d3d117948e8f02781f664faa876cd3e79995f3b", + "bytes": 87877, + "source_path": "experiments/narps-poster/figures/narps-group-map.svg" + }, + { + "path": "figures/narps-group-map.png", + "sha256": "c35b14d41d0b3496c6247d6dbc14db9c2f1e4009764d7370e07b0ec8f013e7b7", + "bytes": 136105, + "source_path": "experiments/narps-poster/figures/narps-group-map.png" + }, + { + "path": "figures/narps-spatial-agreement.svg", + "sha256": "7f7d3d44bacbbe6a8a911d89859fb7612ae3875bf35217efcc85b4891c6af790", + "bytes": 142319, + "source_path": "experiments/narps-poster/figures/narps-spatial-agreement.svg" + }, + { + "path": "figures/narps-spatial-agreement.png", + "sha256": "f93b8a67c4d714622d891934546a1b384d99c7e3e32cc4fa42b06375f7355bf8", + "bytes": 166353, + "source_path": "experiments/narps-poster/figures/narps-spatial-agreement.png" + } + ], + "scope": "Verified display copies. Scientific code, inputs, environment and provenance are retained in the benchmark repository." +} diff --git a/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json b/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json deleted file mode 100644 index eef60918..00000000 --- a/2026-usrse/stamped-ai-study/figures/narps-figure-manifest.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "input_provenance_sha256": "37c94e97d1957209d39a0383dc4034a4ba5027d966135ef35b85be0c130380e6", - "render_script_sha256": "6f7f75d2bfef7a2ad466dc29b9af1cd138f7cc6a7f41d972f31a2a295d68d33e", - "software": { - "numpy": "2.5.4", - "matplotlib": "3.11.2", - "nibabel": "5.4.2" - }, - "output_sha256": { - "narps-group-map.svg": "4d22926b56073a6bc1b981413d3d117948e8f02781f664faa876cd3e79995f3b", - "narps-group-map.png": "c35b14d41d0b3496c6247d6dbc14db9c2f1e4009764d7370e07b0ec8f013e7b7" - } -} diff --git a/2026-usrse/stamped-ai-study/index.html b/2026-usrse/stamped-ai-study/index.html index 2a251e88..fb4f3e57 100644 --- a/2026-usrse/stamped-ai-study/index.html +++ b/2026-usrse/stamped-ai-study/index.html @@ -27,8 +27,14 @@ QR code for this poster, figures and sourcePoster + code
-
-

STAMPED: principles for reproducible research

+
+

Our experiment: iteratively improve STAMPED research skills by validating the scientific results and research objects they produce.

+

Make the improvement process inspectable.Link the skills, data, runs, assessments and revisions, so others can evaluate both the science and how the guidance evolved.

+
+
+
+
+

The seven principles

Self-contained
Reach all essential components from one project root.
Tracked
Record which versions produced each result.
@@ -38,12 +44,10 @@

STAMPED: p
Ephemeral
Use a disposable environment for each execution.
Distributable
Preserve retrievable components and rebuildable environments.

-
-
-
+
-

Improve the skills
by testing their results

-

We wished to iteratively improve skills for STAMPED research by validating the scientific results and research objects they produced.

+

Test the skills
through the work

+

Do successive revisions improve scientific adequacy, reproducibility and consistency?

  1. RunFresh agents address the same scientific question.
  2. @@ -53,16 +57,6 @@

    STAMPED: p

Three iterations of testing and revision. In the final iteration, evaluate without further tuning.

-
-

Follow any result back to its source

- -

stamped-in-practice links the skills, data, runs, assessments and revisions—including unsuccessful attempts.

This lets others assess both the scientific results and the process of improving the skills. Ideas for better guidance become testable when we can trace the data generated along the way.

-

Put the principles to work

The skills guide project creation, analysis, assessment and improvement. They make STAMPED actionable guidance for an agent.

Use the STAMPED checklist to examine your own research object, then follow the evidence behind each answer.

@@ -83,55 +77,42 @@

Group-level gain response

Where do repeated analyses agree?

- Spatial agreement of corrected positive findings across three runs in each assistance condition -
Group statistics agree; correction choices change detected extent. Iteration 1: colour shows how many of three runs detected corrected positive signal on shared coverage. Runs 01–02 use Bonferroni; the others use permutation max-T. Figure code · Map inputs
+ Spatial agreement of corrected positive findings across three runs in each assistance condition +
Group statistics agree; correction choices change detected extent. Colour shows how many of three runs detected corrected positive signal on shared coverage. Runs 01–02 use Bonferroni; the others use permutation max-T. Figure code · Map inputs
@@ -140,7 +121,7 @@

Where do repeated analyses agree?

QR code for reusable STAMPED research skillsUse the skills
-

A reproducible study of reproducibility. Source, figure inputs, run-level evidence and the completion plan accompany this editable poster.

OpenAI Codex assisted analysis and poster preparation.

+

A reproducible study of reproducibility. Source, figure inputs and run-level evidence are linked from the study.

OpenAI Codex assisted analysis and poster preparation.

diff --git a/2026-usrse/stamped-ai-study/pixi.toml b/2026-usrse/stamped-ai-study/pixi.toml index c80a5924..90836ece 100644 --- a/2026-usrse/stamped-ai-study/pixi.toml +++ b/2026-usrse/stamped-ai-study/pixi.toml @@ -6,11 +6,6 @@ platforms = [{ platform = "osx-arm64", macos = "14.0" }, "linux-64"] [dependencies] python = ">=3.12,<3.14" -numpy = ">=2,<3" -scipy = ">=1.15,<2" -matplotlib-base = ">=3.10,<4" -nibabel = ">=5.3,<6" -nilearn = ">=0.14,<0.15" pillow = ">=11,<13" pypdf = ">=6,<7" qrcode = ">=8,<9" @@ -26,10 +21,7 @@ git-annex = "*" [tasks] setup-browser = "npm ci && npx playwright install chromium" -group-map = "python scripts/render-narps-figures.py" -spatial-map = "python scripts/render-narps-spatial.py" -figures = { depends-on = ["group-map", "spatial-map"] } -table = "python update-results.py" -build = { cmd = "node build-poster.cjs --out-dir exports", depends-on = ["figures", "table"] } +figures = "python scripts/import-benchmark-figures.py" +build = { cmd = "node build-poster.cjs --out-dir exports", depends-on = ["figures"] } verify = "python verify-pdf.py --review-dir exports" links = "python verify-links.py --review-dir exports" diff --git a/2026-usrse/stamped-ai-study/poster.css b/2026-usrse/stamped-ai-study/poster.css index f39436b7..f3f80997 100644 --- a/2026-usrse/stamped-ai-study/poster.css +++ b/2026-usrse/stamped-ai-study/poster.css @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: CC-BY-SA-4.0 */ -.poster { grid-template-rows: 324px 288px 1fr 286px 220px; gap: 32px; } +.poster { grid-template-rows: 324px 240px 1fr 286px 220px; gap: 32px; } .masthead { grid-template-columns: 1.2fr 690px 1fr; gap: 60px; } .con-logo { width: 690px; } h1 { font-size: 92px; } @@ -7,11 +7,12 @@ h1 span { font-size: 48px; } .authors { font-size: 38px; } .authors .affiliation { font-size: 32px; } .author-panel { gap: 38px; } -.principles-band { background:var(--ink); color:white; margin:0 -88px; padding:28px 88px; } -.principles-band h2 { font-size:44px; margin:0 0 26px; } -.principles-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:30px; margin:0; } -.principles-grid > div + div { border-left:2px solid #647d86; padding-left:28px; } -.principles-grid dt { font-size:36px; font-weight:700; margin-bottom:14px; } +.lead p { font-size:42px; } +.lead .pitch strong { font-size:44px; } +.lead .pitch span { font-size:36px; } +.principles-grid { display:grid; gap:18px; margin:0; } +.principles-grid > div { display:grid; grid-template-columns:300px 1fr; gap:24px; padding:16px 0; border-bottom:2px solid var(--rule); } +.principles-grid dt { font-size:36px; font-weight:700; color:var(--green); } .principles-grid dd { font-size:32px; line-height:1.3; margin:0; } .columns { grid-template-columns: 0.95fr 1.2fr 1.3fr; gap: 48px; } .columns > * { min-width: 0; } @@ -26,7 +27,6 @@ h1 span { font-size: 48px; } .loop { list-style: none; padding:0; margin:34px 0; display:grid; gap:18px; counter-reset: step; } .loop li { display:grid; grid-template-columns: 160px 1fr; gap:22px; padding:24px; background:var(--tint); font-size:36px; line-height:1.25; border-left:7px solid var(--green); } .loop b { color:var(--green); font-size:38px; } -.columns .experiment-statement { font-size:42px; line-height:1.32; } .evidence-chain { background:var(--tint); padding:28px; margin-bottom:28px; display:grid; text-align:center; gap:12px; font-size:34px; line-height:1.25; } .evidence-chain span { color:var(--green); font-size:34px; } .source-links { color:var(--green); } @@ -44,22 +44,15 @@ figcaption { font-size:32px; line-height:1.32; margin:18px 0 0; } .outcomes .revision-section p { margin-bottom:0; } .outcomes .results-matrix { margin-top:10px; } .outcome-table { width:100%; border-collapse:collapse; table-layout:fixed; font-size:32px; line-height:1.25; } -.outcome-table th, .outcome-table td { padding:9px 12px; text-align:left; border-bottom:2px solid var(--rule); vertical-align:middle; } +.outcome-table th, .outcome-table td { padding:24px 12px; text-align:left; border-bottom:2px solid var(--rule); vertical-align:middle; } .outcome-table thead th { background:var(--green); color:white; font-size:32px; padding:22px 12px; } -.outcome-table .iteration th { background:#dce6dd; padding:18px 12px; color:var(--green); } -.outcome-table .condition-cell { font-weight:700; } -.outcome-table .run-cell { white-space:nowrap; font-weight:400; } -.outcome-table .reserved td, .outcome-table .reserved th { padding-top:14px; padding-bottom:14px; } -.outcome-table .values { display:block; white-space:nowrap; } -.outcome-table .missing { color:#647980; } -.outcome-table col:first-child { width:28%; } -.outcome-table col:nth-child(2) { width:16%; } -.outcome-table col:nth-child(3) { width:15%; } -.outcome-table col:nth-child(4) { width:13%; } -.outcome-table col:nth-child(5) { width:28%; } -.assessment-key { padding:25px 28px; background:var(--tint); } -.assessment-key p { font-size:32px; line-height:1.28; margin-bottom:18px; } -.assessment-key p:last-child { margin:0; } +.outcome-table col:first-child { width:34%; } +.outcome-table col:nth-child(2) { width:10%; } +.outcome-table col:nth-child(3) { width:17%; } +.outcome-table col:nth-child(4) { width:16%; } +.outcome-table col:nth-child(5) { width:23%; } +.columns .summary-key { margin-top:24px; } +.outcomes .evidence-section { margin-top:72px; } .revision { border-left:6px solid var(--con-blue); padding:18px 26px; margin-bottom:20px; } .revision b { font-size:37px; } .revision p { font-size:34px; margin:12px 0 0; } diff --git a/2026-usrse/stamped-ai-study/scripts/export-assessments.py b/2026-usrse/stamped-ai-study/scripts/export-assessments.py deleted file mode 100644 index 292e9be0..00000000 --- a/2026-usrse/stamped-ai-study/scripts/export-assessments.py +++ /dev/null @@ -1,311 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience -# SPDX-License-Identifier: Apache-2.0 -"""Export a dated, public-safe poster snapshot without changing the study. - -Usage: python stamped-poster-assessment-export.py --study COORDINATOR --out JSON - -Only completed judgments registered in each round ledger are admitted. Raw item -statuses remain intact; the external measurement-validity overlay is separate. -The output contains no transcripts, credentials, native commands or host paths. -""" - -import argparse -import collections -import datetime as dt -import hashlib -import json -import re -import subprocess -from pathlib import Path -from zoneinfo import ZoneInfo - - -STATUSES = ("met", "partial", "unmet", "not-checked", "not-applicable") -REMOTE = "https://github.com/leej3/stamped-in-practice" - - -def digest(data): - return hashlib.sha256(data).hexdigest() - - -def git(root, *args): - result = subprocess.run(["git", "-C", str(root), *args], capture_output=True) - return result.stdout if result.returncode == 0 else None - - -def scientific_label(report): - # Preserve the judge's classification, not whether the tested hypothesis won. - match = re.search(r"Scientific adequacy:\*?\*?\s*\*?\*?\s*(not supported|qualified|supported|unable to assess|not checked)", report, re.I) - if match: - return match.group(1).lower() - # Judges also label the scientific section's verdict "Adequacy" or - # "Classification". Restrict these alternatives to that section so a - # checklist verdict elsewhere cannot be mistaken for scientific adequacy. - section = re.search(r"^## Scientific[^\n]*\n(.*?)(?=^## |\Z)", report, re.I | re.M | re.S) - if section: - match = re.search(r"(?:Adequacy|Classification):\*?\*?\s*\*?\*?\s*(not supported|qualified|supported|unable to assess|not checked)", section[1], re.I) - if match: - return match[1].lower() - return None - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--study", required=True, type=Path, - help="Coordinator checkout containing iterations/narps-v1") - parser.add_argument("--out", required=True, type=Path, help="Destination JSON filename") - args = parser.parse_args() - root = args.study.resolve() - iteration = root / "iterations/narps-v1" - now = dt.datetime.now(dt.timezone.utc) - sources = {} - warnings = [] - head_bytes = git(root, "rev-parse", "HEAD") - head = head_bytes.decode().strip() if head_bytes else None - # Read advertised refs without fetching or mutating the live study checkout. - # Named links are easier to navigate; immutable revisions and file hashes - # below retain the exact identity verified when the snapshot was exported. - advertised = git(root, "ls-remote", "--heads", REMOTE + ".git") - public_branches = {} - if advertised: - for line in advertised.decode().splitlines(): - revision, ref = line.split("\t", 1) - public_branches[ref.removeprefix("refs/heads/")] = revision - else: - warnings.append("Public branch advertisement unavailable; no new source links verified") - - def read_source(path, source_id, coordinator_relative=None): - data = path.read_bytes() - record = {"sha256": digest(data), "bytes": len(data), "public_url": None} - if coordinator_relative: - record["coordinator_path"] = coordinator_relative - committed = git(root, "show", f"HEAD:{coordinator_relative}") - record["matches_coordinator_head"] = committed == data - public_revision = public_branches.get("main") - published = git(root, "show", f"{public_revision}:{coordinator_relative}") if public_revision else None - if published == data: - record["public_url"] = f"{REMOTE}/blob/main/{coordinator_relative}" - record["public_branch"] = "main" - record["published_commit"] = public_revision - record["publication_status"] = "published-branch-source-hash-verified" - else: - record["publication_status"] = "not-established-by-this-export" - judgment_id = source_id.split("/")[0] - match = re.fullmatch(r"(narps-r\d+-\d+)-judgment-(\d+)", judgment_id) - branch = f"codex/{match[1]}-judge-{match[2]}-output" if match else None - revision = public_branches.get(branch) - if revision and path.name.endswith(("assessment.md", "response.json", "fresh-rerun.json")): - published = git(path.parent, "show", f"{revision}:{path.name}") - if published == data: - record["public_url"] = f"{REMOTE}/blob/{branch}/{path.name}" - record["public_branch"] = branch - record["published_commit"] = revision - record["publication_status"] = "published-branch-source-hash-verified" - else: - warnings.append(f"{source_id}: advertised output branch does not match source bytes") - sources[source_id] = record - return data - - def read_coordinator(name): - rel = f"iterations/narps-v1/{name}" - return json.loads(read_source(root / rel, name, rel)) - - allocation = read_coordinator("allocation.json") - disposition = read_coordinator("measurement-disposition-01.json") - disposition_by_id = {j["judgment_id"]: j for j in disposition["judgments"]} - # Capture ledgers up front. A late filesystem artifact does not become an - # outcome unless it was already completed in this captured ledger. - ledgers = {} - for planned in allocation["rounds"]: - name = f"round-{planned['round']}.json" - if (iteration / name).exists(): - ledgers[planned["round"]] = read_coordinator(name) - - def judgment(run_id, entry): - jid = f"{run_id}-{entry['judgment_id']}" - overlay = disposition_by_id.get(jid, {}) - role = overlay.get("role", entry.get("judgment_role")) - result = { - "judgment_id": jid, "role": role, "status": entry.get("status"), - "procedure_sha256": entry.get("procedure_sha256"), - "assessment_scope": entry.get("assessment_scope"), - "finished_at": entry.get("finished_at"), - "science": None, "replay": None, "checklist": None, - } - if entry.get("status") != "completed": - return result - base = Path(entry["evidence"]) - assessment_dir = base / "judgment" - response_paths = sorted(assessment_dir.glob("????-??-??-response.json")) - report_paths = sorted(assessment_dir.glob("????-??-??-assessment.md")) - replay_paths = sorted(assessment_dir.glob("????-??-??-fresh-rerun.json")) - source_prefix = jid + "/" - if len(response_paths) != 1 or len(report_paths) != 1: - warnings.append(f"{jid}: completed ledger entry lacks one unambiguous response/report pair") - result["status"] = "completed-artifacts-incomplete" - return result - response = json.loads(read_source(response_paths[0], source_prefix + "response.json")) - report = read_source(report_paths[0], source_prefix + "assessment.md").decode() - validity = overlay.get("measure_validity", []) - blocked = {v["measure"]: v["status"] for v in validity - if v["status"] in ("unavailable", "invalid")} - answers = response["responses"] - raw = collections.Counter(a["status"] for a in answers.values()) - valid = collections.Counter(a["status"] for key, a in answers.items() if key not in blocked) - unavailable = sum(key in answers and value == "unavailable" for key, value in blocked.items()) - invalid = sum(key in answers and value == "invalid" for key, value in blocked.items()) - total = len(answers) - result["checklist"] = { - "version": response.get("checklist_version"), - "raw_counts": {s: raw[s] for s in STATUSES}, - "comparable_counts": {s: valid[s] for s in STATUSES}, - "total_items": total, - "applicable_items": total - raw["not-applicable"], - "comparable_applicable_items": sum(valid.values()) - valid["not-applicable"], - "unavailable_items": unavailable, "invalid_items": invalid, - "descriptive_met_numerator": valid["met"], - "descriptive_met_denominator": sum(valid.values()) - valid["not-applicable"], - "item_statuses": {key: value["status"] for key, value in sorted(answers.items())}, - "item_validity_overrides": {key: value for key, value in sorted(blocked.items()) if key in answers}, - "raw_retrieval_item": answers.get("stamped-checklist:must/016", {}).get("status"), - "retrieval_item_validity": blocked.get("stamped-checklist:must/016", "available"), - "source_id": source_prefix + "response.json", - } - dependency = overlay.get("scientific_dependency", {}) - label = scientific_label(report) - if label is None: - warnings.append(f"{jid}: scientific adequacy label could not be extracted") - result["science"] = { - "reported_adequacy": label, - "evidence_dependency": dependency.get("status", "no-uncertainty-overlay-recorded"), - "display_qualifier": "replay evidence unavailable" if dependency.get("status") == "uncertain" else None, - "source_id": source_prefix + "assessment.md", - } - if len(replay_paths) == 1: - replay = json.loads(read_source(replay_paths[0], source_prefix + "fresh-rerun.json")) - comparison = replay.get("comparison", {}) - result["replay"] = { - "raw_status": replay.get("status"), - "comparable_status": blocked.get("replay", replay.get("status")), - "validity": blocked.get("replay", "available"), - "identical_outputs": len(comparison.get("identical", [])) if comparison else None, - "within_tolerance_outputs": len(comparison.get("within_tolerance", [])) if comparison else None, - "different_outputs": comparison.get("differing", []), - "missing_outputs": comparison.get("missing_after_rerun", []), - "candidate_outputs": sum(len(comparison.get(key, [])) for key in - ("identical", "within_tolerance", "differing", "missing_after_rerun")) if comparison else None, - "host_scope": "same-host", - "source_id": source_prefix + "fresh-rerun.json", - } - native = base / "native/result.json" - if native.exists(): - native_data = json.loads(read_source(native, source_prefix + "native-result.json")) - result["assessor_source_commit"] = native_data.get("assessment_pin", {}).get("source_commit") - result["assessor_environment_commit"] = native_data.get("assessment_pin", {}).get("environment_commit") - binding_path = base.parent / "retention" / f"{entry['judgment_id']}-output-binding.json" - result["evidence_binding"] = "pending" - if binding_path.exists(): - binding_id = source_prefix + "output-binding.json" - binding = json.loads(read_source(binding_path, binding_id)) - checks = [ - binding.get("outputs", {}).get("response", {}).get("sha256") == sources[source_prefix + "response.json"]["sha256"], - binding.get("outputs", {}).get("report", {}).get("sha256") == sources[source_prefix + "assessment.md"]["sha256"], - binding.get("native_result_sha256") == sources.get(source_prefix + "native-result.json", {}).get("sha256"), - ] - if overlay.get("native_result_sha256"): - checks.append(overlay["native_result_sha256"] == sources[source_prefix + "native-result.json"]["sha256"]) - if overlay.get("output_binding_sha256"): - checks.append(overlay["output_binding_sha256"] == sources[binding_id]["sha256"]) - result["evidence_binding"] = "hashes-match" if all(checks) else "hash-mismatch" - if not all(checks): - warnings.append(f"{jid}: retained output binding hash mismatch; do not use as a finalized outcome") - return result - - rounds = [] - rows = [] - other_judgments = [] - for plan in allocation["rounds"]: - number = plan["round"] - ledger = ledgers.get(number) - by_id = {r["run"]: r for r in ledger["runs"]} if ledger else {} - round_rows = [] - for assignment in sorted(plan["launch_order"], key=lambda r: r["run"]): - run_id = assignment["run"] - run = by_id.get(run_id, {}) - row = { - "run": run_id, "iteration": number, - "condition": assignment["condition"], "replicate": assignment["replicate"], - "status": run.get("status", "planned" if not ledger else "not-started"), - "worker_result_commit": run.get("worker_head_commit"), - "worker_finished_at": run.get("finished_at"), - "worker_elapsed_seconds": run.get("worker_elapsed_seconds"), - "result_url": f"{REMOTE}/tree/codex/{run_id}" if run.get("worker_head_commit") and public_branches.get(f"codex/{run_id}") == run["worker_head_commit"] else None, - "result_branch": f"codex/{run_id}", - "result_branch_verified_commit": public_branches.get(f"codex/{run_id}"), - "primary": None, "retrieval": None, - "duplicate_assigned": run_id in plan["duplicate_judgments"], - } - for entry in run.get("judgments", []): - outcome = judgment(run_id, entry) - if outcome["role"] == "primary": - row["primary"] = outcome - else: - other_judgments.append({"run": run_id, **outcome}) - retention = run.get("independent_retention_evidence", {}) - if retention.get("path") and Path(retention["path"]).exists(): - source_id = run_id + "/recipient-check.json" - receipt = json.loads(read_source(Path(retention["path"]), source_id)) - annex_count = next((receipt[key] for key in ("annex_paths_verified", "annex_paths", "annex_files") if key in receipt), None) - row["retrieval"] = { - "verified": receipt.get("passed", receipt.get("success")), - "annex_paths_verified": annex_count, - "scope": "coordinator-preservation-of-exact-worker-stop", - "worker_delivery_credit": False, - "scientific_execution": False, - "completed_at": receipt.get("finished_at", receipt.get("completed_at")), - "source_id": source_id, - } - round_rows.append(row) - rows.extend(round_rows) - rounds.append({ - "iteration": number, "status": "recorded-in-progress" if ledger else "planned", - "final_untuned_evaluation": plan.get("final_untuned_evaluation"), - "allocated_workers": len(plan["launch_order"]), - "allocated_primary_judgments": len(plan["launch_order"]), - "allocated_duplicate_judgments": len(plan["duplicate_judgments"]), - "skills_commit": ledger.get("skills_commit") if ledger else None, - "ledger_updated_at": ledger.get("last_updated_at") if ledger else None, - "workers_finished": sum(row["worker_result_commit"] is not None for row in round_rows), - "completed_primary_judgments": sum(row["primary"] is not None and row["primary"]["status"] == "completed" for row in round_rows), - }) - output = { - "schema_version": 1, "study": "narps", "comparison_id": "narps-v1", - "snapshot_at_utc": now.isoformat(), - "snapshot_at_eastern": now.astimezone(ZoneInfo("America/New_York")).isoformat(), - "coordinator_head": head, "coordinator_url": REMOTE, - "allocation_sha256": sources["allocation.json"]["sha256"], - "disposition_sha256": sources["measurement-disposition-01.json"]["sha256"], - "interpretation": { - "checklist": "Descriptive item counts, not a combined score or certification. Partial never counts as met. N/A and invalid/unavailable items are excluded only from the explicitly comparable applicable denominator. Not-checked items remain in that denominator and are shown separately.", - "scientific_adequacy": "Judge support for the scientific analysis is separate from support for the hypothesis. Infrastructure uncertainty flags preserve the raw scientific classification without regrading it.", - "replay": "Assessor-infrastructure failures are unavailable, not worker failures. Same-host replay does not establish cross-host portability.", - "retrieval": "Coordinator preservation verifies exact stopped-worker bytes; it is not worker delivery credit or successful scientific execution.", - "missing": "Missing assessments and future runs are missing observations, never zero scores. Supplementary judgments cannot replace assigned primaries or duplicates.", - "publication": "Reader links use named branches, verified against advertised remote heads at export. Exact commits and source hashes retain snapshot identity. Branches may later advance. A null public_url means publication of that raw source is not established by this export; result links are independent from assessment publication.", - }, - "rounds": rounds, "rows": rows, "other_judgments": other_judgments, - "sources": sources, "warnings": warnings, - } - serialized = json.dumps(output, indent=2, sort_keys=True) + "\n" - if re.search(r"/Users/|/home/|file://", serialized): - raise RuntimeError("Unexpected host path in public snapshot") - args.out.parent.mkdir(parents=True, exist_ok=True) - args.out.write_text(serialized) - print(json.dumps({"rows": len(rows), "sources": len(sources), - "completed_primary_judgments": sum(r["completed_primary_judgments"] for r in rounds), - "warnings": warnings, "snapshot_sha256": digest(serialized.encode())})) - - -if __name__ == "__main__": - main() diff --git a/2026-usrse/stamped-ai-study/scripts/extract-narps-spatial.py b/2026-usrse/stamped-ai-study/scripts/extract-narps-spatial.py deleted file mode 100644 index 0693742f..00000000 --- a/2026-usrse/stamped-ai-study/scripts/extract-narps-spatial.py +++ /dev/null @@ -1,210 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience -# SPDX-License-Identifier: Apache-2.0 -"""Freeze spatial evidence from the twelve completed NARPS round-one workers. - -Read-only with respect to worker checkouts. The compact NPZ stores each native -analysis mask and corrected-positive decision, plus lossless deduplicated t -values on shared support. These suffice to regenerate the spatial figure and -its numerical summary offline. Original file identities and branches are -recorded in provenance.json; no participant images are copied. -""" -from __future__ import annotations - -import argparse -from datetime import datetime, timezone -import hashlib -import json -from pathlib import Path -import subprocess - -import nibabel as nib -import nilearn -from nilearn import datasets, image -import numpy as np - -ROOT = Path(__file__).resolve().parents[1] -OUT = ROOT / "data/narps-spatial" -REPO = "https://github.com/leej3/stamped-in-practice" -# Final primary analysis only: baseline 01/02 use Bonferroni, not their max-T -# sensitivity analysis. Other workers use native participant sign-flip max-T. -RUNS = { - 1: ("group_t_positive", "group_p_fwe_bonferroni", "whole_brain_search_mask", "analysis_summary.json", "scripts/group_gain.py"), - 2: ("group_tstat", "group_bonferroni_fwe_p", "analysis_mask", "results.json", "scripts/analyze.py"), - 3: ("group_t", "p_fwer_maxT", "analysis_mask", "summary.json", "analyze.py"), - 4: ("t_gain", "p_fwe_gain", "group_coverage_mask", "group_results.json", "analysis/run_group_analysis.py"), - 5: ("group_tstat", "group_log10p_fwe_max_t", "common_brain_mask", "run_summary.json", "analysis/run_group_analysis.py"), - 6: ("maps/group_t_unthresholded", "maps/group_p_fwe_maxT", None, "analysis_results.json", "scripts/group_analysis.py"), - 7: ("maps/group_tstat", "maps/group_positive_maxT_pFWE", None, "analysis_results.json", "scripts/group_analysis.py"), - 8: ("group_t_positive", "group_p_fwe_positive", "group_mask_90pct_coverage", "analysis_summary.json", "scripts/analyze_gain.py"), - 9: ("one_sample_t", "max_t_log10_fwe_p", "common_brain_mask", "results.json", "scripts/analyze_gain.py"), - 10: ("final-v3/group-t", "final-v3/group-fwe-p", None, "final-v3/summary.json", "code/analyze.py"), - 11: ("t_unthresholded", "p_fwe", None, "summary.json", "scripts/group_analysis.py"), - 12: ("group-analysis/group_t", "group-analysis/p_fwe_maxT", None, "group-analysis/summary.json", "analysis/group_analysis.py"), -} -CONDITIONS = [ - ("baseline", "No supplied skills"), - ("discover-general", "Find useful skills"), - ("discover-science", "Find research skills"), - ("stamped-explicit", "Use STAMPED skills"), -] -EXPECTED_MASK = [186400, 192333, 210968, 198029, 198029, 186192, - 198029, 210968, 198029, 198029, 196120, 198029] -EXPECTED_POSITIVE = [11, 11, 24, 24, 24, 24, 24, 24, 24, 24, 23, 24] - - -def digest(path): - return hashlib.sha256(path.read_bytes()).hexdigest() - - -def git(path, *args): - return subprocess.check_output(["git", "-C", str(path), *args], text=True).strip() - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--workers-root", type=Path, required=True) - parser.add_argument("--capture-root", type=Path, required=True) - args = parser.parse_args() - OUT.mkdir(parents=True, exist_ok=True) - sources, records = {}, [] - t_maps, p_maps, masks = [], [], [] - ref = None - source_cohort = None - common54 = None - - def source(worker, relative): - path = worker / relative - if git(worker, "status", "--porcelain", "--", relative): - raise ValueError(f"Uncommitted source: {path}") - branch = git(worker, "branch", "--show-current") - key = f"{worker.name}/{relative}" - sources[key] = { - "sha256": digest(path), "bytes": path.stat().st_size, - "repository": REPO, "branch": branch, - "revision": git(worker, "rev-parse", "HEAD"), - "git_object": git(worker, "rev-parse", f"HEAD:{relative}"), - "path": relative, "url": f"{REPO}/blob/{branch}/{relative}", - } - if path.is_symlink(): - sources[key]["annex_key"] = path.readlink().name - return path - - # This saved mask uses every participant's finite, nonzero map support. - worker09 = args.workers_root / "narps-r1-09" - common54 = nib.load(source(worker09, "results/common_brain_mask.nii.gz")).get_fdata() > 0 - for n, (t_name, p_name, mask_name, summary_name, script_name) in RUNS.items(): - run = f"narps-r1-{n:02}" - worker = args.workers_root / run - cohort = json.loads(source(worker, "input/sources.json").read_text()) - cohort_hashes = {k: v["sha256"] for k, v in cohort["files"].items() if k.endswith(".nii.gz")} - if source_cohort is None: - source_cohort = cohort_hashes - if cohort_hashes != source_cohort or len(cohort_hashes) != 54: - raise ValueError(f"Participant map identities differ in {run}") - source(worker, f"results/{summary_name}") - source(worker, script_name) - t_img = nib.load(source(worker, f"results/{t_name}.nii.gz")) - p_img = nib.load(source(worker, f"results/{p_name}.nii.gz")) - if ref is None: - ref = t_img - for img in (t_img, p_img): - if img.shape != ref.shape or not np.allclose(img.affine, ref.affine): - raise ValueError(f"Grid mismatch in {run}") - t = t_img.get_fdata() - p = p_img.get_fdata() - if n in (5, 9): - p = np.power(10.0, -p) - if mask_name: - mask_img = nib.load(source(worker, f"results/{mask_name}.nii.gz")) - if mask_img.shape != ref.shape or not np.allclose(mask_img.affine, ref.affine): - raise ValueError(f"Mask grid mismatch in {run}") - mask = mask_img.get_fdata() > 0 - mask_rule = "native saved analysis mask" - elif n == 6: - # The source script writes p=0 outside its support. All in-mask - # Monte Carlo p values are strictly positive by construction. - mask = p > 0 - mask_rule = "positive p values; source writes zero outside tested support" - elif n == 7: - mask = np.isfinite(p) - mask_rule = "finite p values; source writes NaN outside tested support" - elif n == 11: - # Exactly the source's finite-data/template mask construction. - mask = image.resample_to_img( - datasets.load_mni152_brain_mask(resolution=2), ref, - interpolation="nearest", force_resample=True, copy_header=True, - ).get_fdata() > 0 - mask_rule = "Nilearn MNI152 brain mask resampled as in source; all input values verified finite by source" - else: - mask = common54.copy() - mask_rule = "54/54 finite nonzero participant support; same input identities and rule as saved run09 mask" - if mask.sum() != EXPECTED_MASK[n - 1]: - raise ValueError(f"Reconstructed support differs from {run} summary") - positive = mask & np.isfinite(p) & (p <= .05) & (t > 0) - if positive.sum() != EXPECTED_POSITIVE[n - 1]: - raise ValueError(f"Primary corrected result differs from {run} summary") - assignment_path = args.capture_root / run / "launch/native/condition-assignment.json" - assignment = json.loads(assignment_path.read_text()) - condition, label = CONDITIONS[(n - 1) // 3] - if assignment["condition"] != condition: - raise ValueError(f"Unexpected assigned condition for {run}") - records.append({ - "run": run, "condition": condition, "label": label, - "branch_url": f"{REPO}/tree/codex/{run}", - "condition_assignment_sha256": digest(assignment_path), - "condition_coordinator_revision": assignment["coordinator_commit"], - "primary_correction": "Bonferroni" if n in (1, 2) else "permutation max-T", - "mask_rule": mask_rule, "native_mask_voxels": int(mask.sum()), - "native_positive_voxels": int(positive.sum()), - }) - t_maps.append(t) - p_maps.append(positive) - masks.append(mask) - - shared = common54 & np.logical_and.reduce(masks) - unique_t, t_indices, seen = [], [], {} - for t in t_maps: - values = t[shared].astype(np.float32) - if not np.array_equal(values.astype(np.float64), t[shared]): - raise ValueError("float32 storage would alter saved source values") - h = hashlib.sha256(values.tobytes()).hexdigest() - if h not in seen: - seen[h] = len(unique_t) - unique_t.append(values) - t_indices.append(seen[h]) - anatomy = image.resample_to_img( - datasets.load_mni152_template(resolution=2), ref, - interpolation="continuous", force_resample=True, copy_header=True, - ).get_fdata(dtype=np.float32) - np.savez_compressed( - OUT / "spatial-inputs.npz", affine=ref.affine, - native_masks=np.stack(masks), native_positive=np.stack(p_maps), - common_participant_support=common54, shared_support=shared, - common_t_unique=np.stack(unique_t), common_t_index=np.array(t_indices), - anatomy=anatomy, - ) - meta = { - "generated_utc": datetime.now(timezone.utc).isoformat(), - "study": "NARPS AO86 equal-indifference potential-gain group analysis", - "n_participants": 54, "runs_per_condition": 3, "records": records, - "conditions": [{"id": c, "label": label} for c, label in CONDITIONS], - "evaluation_support": "Intersection of all twelve native analysis masks and finite nonzero support in all 54 participant maps. Outside is not evaluated as a zero or negative result.", - "frequency_definition": "For each condition, count the three saved native positive primary FWE decisions at each shared-support voxel; native correction/search-space choices are retained.", - "t_variability_definition": "Sample SD (ddof=1) across the three saved unthresholded t values per condition, restricted to the same shared support; no new group inference.", - "display": {"view": "posterior axial crops", "xlim_mni_mm": [-42, 42], - "ylim_mni_mm": [-110, -78], "z_cuts_mni_mm": [-8.4, -3.6, -1.2], - "orientation": "neurological: image left is participant left", - "slice_selection": "Three axial planes containing the observed posterior corrected loci; a descriptive result visualization, not an independent localization test."}, - "anatomy": {"description": "Nilearn bundled skull-stripped MNI152 anatomical context, continuously resampled to the native grid", - "url": "https://nilearn.github.io/stable/modules/generated/nilearn.datasets.load_mni152_template.html"}, - "software": {"numpy": np.__version__, "nibabel": nib.__version__, "nilearn": nilearn.__version__}, - "npz_sha256": digest(OUT / "spatial-inputs.npz"), - "source_files": sources, - } - (OUT / "provenance.json").write_text(json.dumps(meta, indent=2) + "\n") - print(f"Frozen 12 runs; shared support {shared.sum():,} voxels; {len(unique_t)} distinct saved t fields") - - -if __name__ == "__main__": - main() diff --git a/2026-usrse/stamped-ai-study/scripts/import-benchmark-figures.py b/2026-usrse/stamped-ai-study/scripts/import-benchmark-figures.py new file mode 100644 index 00000000..c28a137d --- /dev/null +++ b/2026-usrse/stamped-ai-study/scripts/import-benchmark-figures.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 +# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience +# SPDX-License-Identifier: Apache-2.0 +"""Import or verify display copies; scientific generation belongs to the benchmark.""" +from __future__ import annotations +import argparse +import hashlib +import json +from pathlib import Path +import shutil +import subprocess + +ROOT = Path(__file__).resolve().parents[1] +MANIFEST = Path('experiments/narps-poster/figures/poster-figure-manifest.json') +BINDING = ROOT / 'figures/benchmark-source.json' +EXPECTED = {f'{name}.{ext}' for name in ('narps-group-map', 'narps-spatial-agreement') for ext in ('svg', 'png')} + + +def digest(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def checked_path(root, relative): + path = Path(relative) + if path.is_absolute() or '..' in path.parts: + raise ValueError(f'Expected repository-relative path: {relative}') + return root / path + + +def verify(root, entries): + for entry in entries: + path = checked_path(root, entry['path']) + if digest(path) != entry['sha256'] or path.stat().st_size != entry['bytes']: + raise ValueError(f'Figure source or display copy changed: {path}') + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--benchmark', type=Path, help='Import from a committed benchmark checkout; omit to verify existing display copies') + args = parser.parse_args() + if args.benchmark: + benchmark = args.benchmark.resolve() + raw = (benchmark / MANIFEST).read_bytes() + source = json.loads(raw) + if {Path(row['path']).name for row in source['figures']} != EXPECTED: + raise ValueError('Benchmark must export the expected two SVG and two PNG figures') + entries = source['figures'] + source['sources'] + verify(benchmark, entries) + paths = [MANIFEST.as_posix(), *[row['path'] for row in entries]] + subprocess.run(['git', '-C', str(benchmark), 'ls-files', '--error-unmatch', '--', *paths], check=True, stdout=subprocess.DEVNULL) + subprocess.run(['git', '-C', str(benchmark), 'diff', '--quiet', 'HEAD', '--', *paths], check=True) + revision = subprocess.check_output(['git', '-C', str(benchmark), 'rev-parse', 'HEAD'], text=True).strip() + rows = [] + for row in source['figures']: + destination = ROOT / 'figures' / Path(row['path']).name + destination.parent.mkdir(parents=True, exist_ok=True) + # Preserve existing annex symlinks when the exported bytes are unchanged. + if not destination.exists() or digest(destination) != row['sha256']: + if destination.is_symlink(): + raise ValueError(f'Unlock annexed display copy before replacing it: {destination}') + shutil.copyfile(benchmark / row['path'], destination) + rows.append({**row, 'source_path': row['path'], 'path': destination.relative_to(ROOT).as_posix()}) + binding = { + 'schema_version': 1, 'repository': source['repository'], + 'branch': source['branch'], 'revision': revision, + 'source_manifest': {'path': MANIFEST.as_posix(), 'sha256': hashlib.sha256(raw).hexdigest()}, + 'source_manifest_content': source, 'figures': rows, + 'scope': 'Verified display copies. Scientific code, inputs, environment and provenance are retained in the benchmark repository.' + } + BINDING.write_text(json.dumps(binding, indent=2) + '\n') + binding = json.loads(BINDING.read_text()) + verify(ROOT, binding['figures']) + print(json.dumps({'verified_display_copies': len(binding['figures']), 'benchmark_revision': binding['revision']})) + + +if __name__ == '__main__': + main() diff --git a/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py b/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py deleted file mode 100644 index 6547442b..00000000 --- a/2026-usrse/stamped-ai-study/scripts/render-narps-figures.py +++ /dev/null @@ -1,158 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience -# SPDX-License-Identifier: Apache-2.0 -"""Regenerate poster SVG/PNG figures from the checked-in, hashed NARPS snapshot. - -No remote data or running worker state is used. See data/*/provenance.json for -original source revisions, input-map URLs and analysis methods. The figures -summarize saved worker outputs; this is not a new participant-level analysis. -""" - -from __future__ import annotations - -import hashlib -import json -from pathlib import Path - -import matplotlib -matplotlib.use("Agg") -import matplotlib.pyplot as plt -from matplotlib.colors import Normalize -from matplotlib.lines import Line2D -import nibabel as nib -import numpy as np - - -ROOT = Path(__file__).resolve().parents[1] -DATA = ROOT / "data" / "narps-2026-10-15" -OUT = ROOT / "figures" -INK = "#17344c" -TEAL = "#007e87" -ORANGE = "#cf731d" -PALE = "#e8eef1" - - -def save(fig, stem): - for extension in ("svg", "png"): - fig.savefig( - OUT / f"{stem}.{extension}", dpi=150, facecolor="white", - metadata={"Date": None} if extension == "svg" else {}, - ) - svg = OUT / f"{stem}.svg" - svg.write_text("\n".join(line.rstrip() for line in svg.read_text().splitlines()) + "\n") - plt.close(fig) - - -def verify_snapshot(meta): - for relative, source in meta["sources"].items(): - digest = hashlib.sha256((DATA / relative).read_bytes()).hexdigest() - if digest != source["sha256"]: - raise ValueError(f"Snapshot hash mismatch: {relative}") - if len(meta["records"]) != 8: - raise ValueError("Expected the eight completed runs in this frozen snapshot") - - -def maps(meta): - files = { - "t": "one_sample_t.nii.gz", "coverage": "common_brain_mask.nii.gz", - "fwe": "max_t_fwe_p05_mask.nii.gz", "roi": "vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", - "anatomy": "anatomical-context.nii.gz", - } - images = {key: nib.load(DATA / "maps" / name) for key, name in files.items()} - ref = images["t"] - for img in images.values(): - if img.shape != ref.shape or not np.allclose(img.affine, ref.affine): - raise ValueError("Snapshot map geometry mismatch") - if not np.allclose(ref.affine[:3, :3], np.diag(np.diag(ref.affine[:3, :3]))): - raise ValueError("This display expects an axis-aligned map grid") - data = {key: img.get_fdata() for key, img in images.items()} - mask = data["coverage"].astype(bool) - sig = data["fwe"].astype(bool) - roi = data["roi"].astype(bool) - if mask.sum() != 198029 or sig.sum() != 24 or (sig & roi).sum() != 0: - raise ValueError("Saved map counts differ from run09 summary") - if np.any(sig & ~mask) or np.any(roi & ~mask): - raise ValueError("Corrected result or ROI outside analysis coverage") - - cmap = plt.get_cmap("RdBu_r").copy() - cmap.set_bad((0, 0, 0, 0)) - cmap.set_under(cmap(0)) - cmap.set_over(cmap(1)) - norm = Normalize(-6, 6, clip=True) - fig, axes = plt.subplots(1, 3, figsize=(13.5, 6.4)) - fig.subplots_adjust(left=.012, right=.985, top=.80, bottom=.30, wspace=.045) - cuts = meta["map_display"]["slice_centers_mni_mm"] - titles = ["Sagittal", "Coronal", "Axial"] - for dim, (ax, mm) in enumerate(zip(axes, cuts)): - index = int(round((mm - ref.affine[dim, 3]) / ref.affine[dim, dim])) - actual_mm = ref.affine[dim, dim] * index + ref.affine[dim, 3] - remaining = [i for i in range(3) if i != dim] - xdim, ydim = remaining - extent = [ - ref.affine[xdim, 3] - ref.affine[xdim, xdim] / 2, - ref.affine[xdim, 3] + ref.affine[xdim, xdim] * (ref.shape[xdim] - .5), - ref.affine[ydim, 3] - ref.affine[ydim, ydim] / 2, - ref.affine[ydim, 3] + ref.affine[ydim, ydim] * (ref.shape[ydim] - .5), - ] - take = lambda a: np.take(a, index, axis=dim).T - background = take(data["anatomy"]) - ax.imshow(background, origin="lower", extent=extent, cmap="gray", vmin=0, vmax=.9, interpolation="nearest") - values = np.ma.masked_where(~take(mask), take(data["t"])) - ax.imshow(values, origin="lower", extent=extent, cmap=cmap, norm=norm, alpha=.82, interpolation="nearest") - for contour, color, linewidth in ((roi, "#ffd54a", 2.5), (sig, "#4effe0", 2.8)): - plane = take(contour) - if plane.any(): - ax.contour(plane, levels=[.5], origin="lower", extent=extent, - colors=[color], linewidths=linewidth) - ax.set_facecolor("black") - if dim == 0: - ax.set_xlim(-114, 84) - ax.set_ylim(-63, 89) - corners = ("P", "A") - else: - ax.set_xlim(-86, 86) - ax.set_ylim((-63, 89) if dim == 1 else (-114, 84)) - corners = ("L", "R") - ax.set_title(f"{titles[dim]}\n{'xyz'[dim]} = {actual_mm:g} mm", fontsize=24, pad=13) - for x, letter in zip((.035, .965), corners): - ax.text(x, .055, letter, transform=ax.transAxes, ha="center", color="white", fontsize=24, weight="bold") - ax.set_xticks([]) - ax.set_yticks([]) - for spine in ax.spines.values(): - spine.set_visible(False) - cax = fig.add_axes([.055, .135, .31, .032]) - colorbar = fig.colorbar(plt.cm.ScalarMappable(norm=norm, cmap=cmap), cax=cax, orientation="horizontal", ticks=[-6, 0, 6]) - colorbar.ax.set_xticklabels(["≤−6", "0", "≥6"]) - colorbar.ax.tick_params(labelsize=24, length=0, pad=7) - colorbar.ax.set_title("Unthresholded group t", fontsize=24, pad=13, loc="left") - fig.legend(handles=[ - Line2D([], [], color="#d7a700", linewidth=4, label="vmPFC region"), - Line2D([], [], color="#00a88e", linewidth=4, label="Positive FWE p ≤ .05"), - ], loc="lower right", bbox_to_anchor=(.985, .07), frameon=False, fontsize=24) - fig.text(.055, .018, "Gray anatomy: outside common coverage", fontsize=24, color=INK) - save(fig, "narps-group-map") - - -def main(): - plt.rcParams.update({ - "font.family": ["Arial", "DejaVu Sans", "sans-serif"], "font.size": 24, "text.color": INK, - "axes.labelcolor": INK, "axes.titlecolor": INK, - "xtick.color": INK, "ytick.color": INK, - "svg.fonttype": "none", "svg.hashsalt": "stamped-narps-poster-2026-10-15", - }) - meta = json.loads((DATA / "provenance.json").read_text()) - verify_snapshot(meta) - OUT.mkdir(exist_ok=True) - maps(meta) - outputs = [OUT / "narps-group-map.svg", OUT / "narps-group-map.png"] - (OUT / "narps-figure-manifest.json").write_text(json.dumps({ - "input_provenance_sha256": hashlib.sha256((DATA / "provenance.json").read_bytes()).hexdigest(), - "render_script_sha256": hashlib.sha256(Path(__file__).read_bytes()).hexdigest(), - "software": {"numpy": np.__version__, "matplotlib": matplotlib.__version__, "nibabel": nib.__version__}, - "output_sha256": {p.name: hashlib.sha256(p.read_bytes()).hexdigest() for p in outputs}, - }, indent=2) + "\n") - print("Verified snapshot hashes and map counts; rendered the illustrative group map as SVG and PNG.") - - -if __name__ == "__main__": - main() diff --git a/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py b/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py deleted file mode 100644 index 77538c16..00000000 --- a/2026-usrse/stamped-ai-study/scripts/render-narps-spatial.py +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience -# SPDX-License-Identifier: Apache-2.0 -"""Render spatial reproducibility and recompute its numerical summary offline.""" -from __future__ import annotations - -import hashlib -import json -from pathlib import Path - -import matplotlib -matplotlib.use("Agg") -from matplotlib.colors import BoundaryNorm, ListedColormap -import matplotlib.pyplot as plt -import numpy as np - -ROOT = Path(__file__).resolve().parents[1] -DATA = ROOT / "data/narps-spatial" -OUT = ROOT / "figures" -INK = "#17344c" - - -def digest(path): - return hashlib.sha256(path.read_bytes()).hexdigest() - - -def main(): - meta = json.loads((DATA / "provenance.json").read_text()) - if digest(DATA / "spatial-inputs.npz") != meta["npz_sha256"]: - raise ValueError("Spatial input hash mismatch") - arrays = np.load(DATA / "spatial-inputs.npz") - shared = arrays["shared_support"] - native = arrays["native_masks"] - positive = arrays["native_positive"] - if not np.array_equal(shared, native.all(axis=0) & arrays["common_participant_support"]): - raise ValueError("Shared support is not the recorded intersection") - if np.any(positive & ~native): - raise ValueError("Positive decision outside native tested support") - t = arrays["common_t_unique"][arrays["common_t_index"]].astype(np.float64) - frequency = np.stack([positive[k:k + 3].sum(axis=0) for k in range(0, 12, 3)]) - summary = { - "shared_support_voxels": int(shared.sum()), - "all_runs_maximum_pairwise_t_difference": float(np.ptp(t, axis=0).max()), - "all_runs_median_pairwise_t_range": float(np.median(np.ptp(t, axis=0))), - "conditions": [], - "interpretation": "Saved group t fields agree to numerical precision on shared support. The observed variation in corrected detections reflects native correction choices: two No supplied skills runs use Bonferroni; all other runs use permutation max-T. This descriptive comparison does not isolate a causal condition effect.", - } - for k, condition in enumerate(meta["conditions"]): - ids = slice(k * 3, k * 3 + 3) - sd = np.std(t[ids], axis=0, ddof=1) - summary["conditions"].append({ - **condition, "runs": [r["run"] for r in meta["records"][ids]], - "maximum_t_sample_sd": float(sd.max()), "median_t_sample_sd": float(np.median(sd)), - "maximum_pairwise_t_difference": float(np.ptp(t[ids], axis=0).max()), - "positive_in_n_runs_voxel_counts": {str(n): int(np.sum(shared & (frequency[k] == n))) for n in range(4)}, - "native_positive_voxels_per_run": [int(v.sum()) for v in positive[ids]], - "shared_positive_voxels_per_run": [int((v & shared).sum()) for v in positive[ids]], - "positive_voxels_outside_shared_support_per_run": [int((v & ~shared).sum()) for v in positive[ids]], - }) - (DATA / "derived-summary.json").write_text(json.dumps(summary, indent=2) + "\n") - - plt.rcParams.update({ - "font.family": ["Arial", "DejaVu Sans", "sans-serif"], "font.size": 24, "text.color": INK, - "axes.titlecolor": INK, "xtick.color": INK, "ytick.color": INK, - "svg.fonttype": "none", "svg.hashsalt": "stamped-narps-spatial", - "hatch.color": "#8197a5", "hatch.linewidth": .6, - }) - fig, axes = plt.subplots(4, 3, figsize=(13.5, 8.7)) - fig.subplots_adjust(left=.245, right=.99, top=.91, bottom=.215, wspace=.045, hspace=.14) - cmap = ListedColormap(["#f0b650", "#df685a", "#8c206c"]) - norm = BoundaryNorm([.5, 1.5, 2.5, 3.5], cmap.N) - anatomy, affine = arrays["anatomy"], arrays["affine"] - if not np.allclose(affine[:3, :3], np.diag(np.diag(affine[:3, :3]))): - raise ValueError("This display requires an axis-aligned native image grid") - extent = [affine[0, 3] - affine[0, 0] / 2, - affine[0, 3] + affine[0, 0] * (shared.shape[0] - .5), - affine[1, 3] - affine[1, 1] / 2, - affine[1, 3] + affine[1, 1] * (shared.shape[1] - .5)] - labels = ["No supplied\nskills", "Find useful\nskills", "Find research\nskills", "Use STAMPED\nskills"] - for row in range(4): - for col, mm in enumerate(meta["display"]["z_cuts_mni_mm"]): - ax = axes[row, col] - z = int(round((mm - affine[2, 3]) / affine[2, 2])) - brain = anatomy[:, :, z].T - available = shared[:, :, z].T - ax.imshow(brain, extent=extent, origin="lower", cmap="gray", vmin=0, vmax=.9, interpolation="nearest") - missing = (~available) & (brain > .04) - ax.contourf(missing, levels=[.5, 1.5], origin="lower", extent=extent, - colors="none", hatches=["////"], alpha=.8) - values = frequency[row, :, :, z].T - display = np.ma.masked_where((values == 0) | ~available, values) - ax.imshow(display, extent=extent, origin="lower", cmap=cmap, norm=norm, interpolation="nearest") - ax.set_xlim(*meta["display"]["xlim_mni_mm"]) - ax.set_ylim(*meta["display"]["ylim_mni_mm"]) - ax.set_xticks([]) - ax.set_yticks([]) - ax.set_facecolor("black") - for spine in ax.spines.values(): - spine.set_visible(False) - if row == 0: - ax.set_title(f"z = {mm:g} mm", fontsize=24, pad=14) - for x, letter in ((.045, "L"), (.955, "R")): - ax.text(x, .06, letter, transform=ax.transAxes, ha="center", va="bottom", color="white", fontsize=24) - fig.canvas.draw() - for row, label in enumerate(labels): - box = axes[row, 0].get_position() - fig.text(.015, (box.y0 + box.y1) / 2, label, fontsize=24, va="center", weight="bold") - fig.text(.245, .968, "Posterior axial slices", fontsize=24) - fig.text(.245, .16, "Runs with a positive FWE result", fontsize=24) - cax = fig.add_axes([.245, .10, .68, .035]) - colorbar = fig.colorbar(plt.cm.ScalarMappable(norm=norm, cmap=cmap), cax=cax, - orientation="horizontal", ticks=[1, 2, 3]) - colorbar.ax.set_xticklabels(["1 / 3", "2 / 3", "3 / 3"]) - colorbar.ax.tick_params(labelsize=24, length=0, pad=7) - colorbar.outline.set_visible(False) - fig.text(.015, .018, "Gray: 0/3 · hatched: outside shared coverage", fontsize=24) - OUT.mkdir(exist_ok=True) - for extension in ("svg", "png"): - fig.savefig(OUT / f"narps-spatial-agreement.{extension}", dpi=160, facecolor="white", - metadata={"Date": None} if extension == "svg" else {}) - svg = OUT / "narps-spatial-agreement.svg" - svg.write_text("\n".join(line.rstrip() for line in svg.read_text().splitlines()) + "\n") - plt.close(fig) - (DATA / "render-manifest.json").write_text(json.dumps({ - "input_provenance_sha256": digest(DATA / "provenance.json"), - "script_sha256": digest(Path(__file__)), - "derived_summary_sha256": digest(DATA / "derived-summary.json"), - "figure_sha256": {ext: digest(OUT / f"narps-spatial-agreement.{ext}") for ext in ("svg", "png")}, - "software": {"numpy": np.__version__, "matplotlib": matplotlib.__version__}, - }, indent=2) + "\n") - print(json.dumps(summary, indent=2)) - - -if __name__ == "__main__": - main() diff --git a/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py b/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py deleted file mode 100644 index 3d60f5d8..00000000 --- a/2026-usrse/stamped-ai-study/scripts/snapshot-narps-figures.py +++ /dev/null @@ -1,188 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience -# SPDX-License-Identifier: Apache-2.0 -"""Freeze the completed NARPS worker outputs used by the poster figures. - -Run explicitly against existing worker checkouts and coordinator capture records. -This copies no participant images and never reruns or modifies the study. -Rendering the committed snapshot uses render-narps-figures.py and needs no network. -""" - -from __future__ import annotations - -import argparse -from datetime import datetime, timezone -import hashlib -import json -from pathlib import Path -import shutil -import subprocess - -import nibabel as nib -import nilearn -from nilearn import datasets, image - - -POSTER = Path(__file__).resolve().parents[1] -SNAPSHOT = POSTER / "data" / "narps-2026-10-15" -REPOSITORY = "https://github.com/leej3/stamped-in-practice" -SUMMARIES = { - "01": "analysis_summary.json", - "02": "results.json", - "03": "summary.json", - "05": "run_summary.json", - "06": "analysis_results.json", - "07": "analysis_results.json", - "08": "analysis_summary.json", - "09": "results.json", -} - - -def sha256(path: Path) -> str: - return hashlib.sha256(path.read_bytes()).hexdigest() - - -def git(path: Path, *args: str) -> str: - return subprocess.check_output(["git", "-C", str(path), *args], text=True).strip() - - -def main() -> None: - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--workers-root", type=Path, required=True) - parser.add_argument("--capture-root", type=Path, required=True) - parser.add_argument("--snapshot-utc", required=True, - help="UTC cutoff for selecting completed results") - args = parser.parse_args() - SNAPSHOT.mkdir(parents=True, exist_ok=True) - sources: dict[str, dict] = {} - records = [] - - def copy_source(worker: Path, relative: str, destination: str) -> Path: - src = worker / relative - dst = SNAPSHOT / destination - revision = git(worker, "rev-parse", "HEAD") - branch = git(worker, "branch", "--show-current") - if not branch: - raise ValueError(f"Source needs a named public branch: {worker.name}") - if git(worker, "status", "--porcelain", "--", relative): - raise ValueError(f"Source is not a clean committed file: {src}") - dst.parent.mkdir(parents=True, exist_ok=True) - shutil.copyfile(src, dst) - sources[destination] = { - "sha256": sha256(dst), - "bytes": dst.stat().st_size, - "source_repository": REPOSITORY, - "source_revision": revision, - "source_branch": branch, - "source_path": relative, - "source_git_object": git(worker, "rev-parse", f"HEAD:{relative}"), - "source_url": f"{REPOSITORY}/blob/{branch}/{relative}", - "transformation": "byte-for-byte copy; annex symlinks dereferenced", - } - if src.is_symlink(): - sources[destination]["source_annex_key"] = src.readlink().name - return dst - - for number, filename in SUMMARIES.items(): - run = f"narps-r1-{number}" - worker = args.workers_root / run - assignment_path = args.capture_root / run / "launch/native/condition-assignment.json" - assignment = json.loads(assignment_path.read_text()) - summary_path = copy_source(worker, f"results/{filename}", f"summaries/{run}.json") - d = json.loads(summary_path.read_text()) - condition = assignment["condition"] - if number == "01": - mask, positive = d["voxels_tested"], d["parametric_bonferroni_fwe05_voxels"] - elif number == "02": - mask = d["analysis_mask_voxels"] - positive = d["whole_brain_bonferroni_fwe_voxels_p_lt_0.05"] - elif number == "03": - mask, positive = d["analysis_voxels"], d["n_whole_brain_fwer_significant"] - elif number == "05": - mask = d["mask_voxels_common_nonzero"] - positive = d["test"]["positive_whole_brain_fwe_significant_voxels"] - elif number == "06": - mask = d["analysis"]["mask_voxels"] - positive = d["analysis"]["whole_brain_fwe05_voxel_count"] - elif number == "07": - mask, positive = d["whole_brain_voxels"], d["significant_positive_whole_brain_voxels"] - elif number == "08": - mask, positive = d["n_voxels_tested"], d["significant_voxels_fwe"] - else: - mask = d["common_mask_voxels"] - positive = d["significant_voxels_fwe_p_le_0_05"] - records.append({ - "run": run, - "condition": condition, - "condition_assignment_sha256": sha256(assignment_path), - "condition_coordinator_revision": assignment["coordinator_commit"], - "condition_assignment": { - k: assignment[k] for k in ( - "condition", "requested_condition", "config_sha256", - "additional_prompt_sha256", "supplied_skills_commit" - ) - }, - "summary": str(summary_path.relative_to(SNAPSHOT)), - "mask_voxels": mask, - "positive_whole_brain_fwe_voxels": positive, - "primary_correction": "Bonferroni" if number in {"01", "02"} else "max-T", - }) - - worker = args.workers_root / "narps-r1-09" - for filename in ( - "one_sample_t.nii.gz", "common_brain_mask.nii.gz", - "max_t_fwe_p05_mask.nii.gz", "vmPFC_AAL_medial_orbitofrontal_mask.nii.gz", - ): - copy_source(worker, f"results/{filename}", f"maps/{filename}") - copy_source(worker, "input/sources.json", "participant-map-sources.json") - copy_source(worker, "scripts/analyze_gain.py", "source-analysis-run09.py") - - # Anatomical context only: a distributed MNI template, not participant anatomy. - ref = nib.load(SNAPSHOT / "maps/one_sample_t.nii.gz") - template = image.resample_to_img( - datasets.load_mni152_template(resolution=2), ref, - interpolation="continuous", force_resample=True, copy_header=True, - ) - destination = "maps/anatomical-context.nii.gz" - nib.save(template, SNAPSHOT / destination) - sources[destination] = { - "sha256": sha256(SNAPSHOT / destination), - "bytes": (SNAPSHOT / destination).stat().st_size, - "source_url": "https://nilearn.github.io/stable/modules/generated/nilearn.datasets.load_mni152_template.html", - "source_description": "Nilearn bundled skull-stripped ICBM152 MNI template; anatomical context only", - "nilearn_version": nilearn.__version__, - "transformation": "load_mni152_template(resolution=2), continuous resampling to run09 t-map grid", - } - result = { - "result_selection_cutoff_utc": args.snapshot_utc, - "snapshot_generated_utc": datetime.now(timezone.utc).isoformat(), - "study": "NARPS Hypothesis 1, AO86 equal-indifference participant gain maps", - "paper": "https://doi.org/10.1038/s41586-020-2314-9", - "data": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", - "participant_maps": "https://neurovault.org/collections/4932/", - "n_participants": 54, - "conditions": ["baseline", "discover-general", "discover-science", "stamped-explicit"], - "records": records, - "missing_completed_results": { - "discover-general": ["narps-r1-04"], - "stamped-explicit": ["narps-r1-10", "narps-r1-11", "narps-r1-12"], - }, - "comparison_scope": "Descriptive differences among completed worker analyses of the same 54 participant maps. Mask rules and correction methods differ; these are not causal estimates of condition effects. Failed or incomplete runs are never assigned a zero value.", - "representative_map_run": "narps-r1-09", - "representative_map_selection": "A completed run using common nonzero coverage for every participant and a verifiable corrected mask; it is an example, not an average or a condition comparison.", - "map_display": { - "statistic": "unthresholded one-sample t; signed colors, clipped at +/- 6", - "mask": "common nonzero coverage across all 54 participants; no color outside coverage", - "roi": "AAL SPM12 bilateral Frontal_Med_Orb parcels, intersected with common coverage; descriptive vmPFC localization", - "corrected": "positive-direction permutation max-T, 10,000 sign flips, whole-brain FWE p <= .05", - "slice_centers_mni_mm": [-2, 24, -3.599997043609619], - "orientation": "neurological: left hemisphere on image left in coronal and axial panels", - }, - "sources": sources, - } - (SNAPSHOT / "provenance.json").write_text(json.dumps(result, indent=2) + "\n") - print(f"Snapshotted {len(records)} completed runs and {len(sources)} source files") - - -if __name__ == "__main__": - main() diff --git a/2026-usrse/stamped-ai-study/update-results.py b/2026-usrse/stamped-ai-study/update-results.py deleted file mode 100644 index e524ca6b..00000000 --- a/2026-usrse/stamped-ai-study/update-results.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-FileCopyrightText: 2026 Center for Open Neuroscience -# SPDX-License-Identifier: Apache-2.0 -"""Render all allocated iterations from saved assessments, without network access.""" -import html -import json -from pathlib import Path - -ROOT = Path(__file__).resolve().parent -CONDITIONS = [('baseline', 'No supplied skills'), ('discover-general', 'Find useful skills'), - ('discover-science', 'Find research skills'), ('stamped-explicit', 'Use STAMPED skills')] -EVIDENCE = 'https://github.com/con/talks/blob/codex/stamped-example-poster/2026-usrse/stamped-ai-study/data/assessment-snapshot.json' -SKILLS = 'https://github.com/con/skills/tree/codex/pr26-operational-environment/skills' - - -def run_link(row): - target = row.get('result_url') or EVIDENCE - return f'{row["run"].split("-")[-1]}' - - -def outcome_cells(row, data): - primary = row['primary'] - if not primary or primary['status'] != 'completed': - return '—' * 3 - sc = primary['science'] - science = {'supported':'S', 'qualified':'Q', 'not supported':'N', 'unable to assess':'U', 'not checked':'U'}[sc['reported_adequacy']] - if sc['display_qualifier']: - science += '*' - source = data['sources'][sc['source_id']].get('public_url') or EVIDENCE - science = f'{science}' - rp = primary['replay'] - replay = {'met':'P', 'passed':'P', 'pass':'P', 'partial':'~', 'unmet':'F', 'failed':'F', 'unavailable':'NA', 'invalid':'NA', 'not-checked':'U', 'not checked':'U'}[rp['comparable_status']] if rp else '—' - checklist = primary['checklist'] - counts = '/'.join(str(checklist['comparable_counts'][k]) for k in ('met','partial','unmet')) - evidence = data['sources'][checklist['source_id']].get('public_url') or EVIDENCE - counts = f'{counts}' - return ''.join(f'{value}' for value in (science, replay, counts)) - - -def main(): - data = json.loads((ROOT / 'data/assessment-snapshot.json').read_text()) - assert not data['warnings'], data['warnings'] - parts = ['', - ''] - for iteration in data['rounds']: - number = iteration['iteration'] - revision = iteration.get('skills_commit') - label = f'Iteration {number}' + (' · final evaluation' if iteration['final_untuned_evaluation'] else '') - if revision: - label += f' · skill revision {revision[:7]}' - parts.append(f'') - iteration_started = any(r.get('result_url') for r in data['rows'] if r['iteration'] == number) - for condition, label in CONDITIONS: - rows = sorted((r for r in data['rows'] if r['iteration'] == number and r['condition'] == condition), key=lambda r:r['replicate']) - assert len(rows) == 3 - if not iteration_started: - # Reserved iterations expand to individual run rows when data arrive. - parts.append(f'') - continue - for index, row in enumerate(rows): - condition_cell = f'' if index == 0 else '' - parts.append(f'{condition_cell}'+outcome_cells(row, data)+'') - parts.append('
InstructionRunScienceReplaySTAMPED
met / partial / unmet
{label}
{label}'+ - ' · '.join(run_link(row) for row in rows)+'———
{label}
{run_link(row)}
') - content = (ROOT/'index.html').read_text() - start, tail = content.split('',1) - _, end = tail.split('',1) - (ROOT/'index.html').write_text(start+'\n'+ '\n'.join(parts)+'\n'+end) - print(json.dumps({'allocated_runs':len(data['rows']), 'iterations':len(data['rounds']), 'completed_primary_judgments':sum(r['primary'] is not None and r['primary']['status']=='completed' for r in data['rows'])})) - - -if __name__ == '__main__': - main() diff --git a/REUSE.toml b/REUSE.toml index b63becc9..7bbced22 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -531,7 +531,6 @@ SPDX-License-Identifier = "CC-BY-SA-4.0" path = [ "2026-usrse/stamped-ai-study/build-poster.cjs", "2026-usrse/stamped-ai-study/make-logo-qrs.py", - "2026-usrse/stamped-ai-study/update-results.py", "2026-usrse/stamped-ai-study/verify-links.py", "2026-usrse/stamped-ai-study/verify-pdf.py", ] @@ -561,19 +560,11 @@ SPDX-FileCopyrightText = "2026 Center for Open Neuroscience" SPDX-License-Identifier = "Apache-2.0" [[annotations]] -path = ["2026-usrse/stamped-ai-study/data/assessment-snapshot.json", "2026-usrse/stamped-ai-study/data/*/provenance.json", "2026-usrse/stamped-ai-study/data/narps-spatial/*.json", "2026-usrse/stamped-ai-study/figures/*.json"] +path = "2026-usrse/stamped-ai-study/figures/*.json" precedence = "closest" SPDX-FileCopyrightText = "2026 Center for Open Neuroscience" SPDX-License-Identifier = "CC-BY-SA-4.0" -# Scientific source artifacts are attributed in the input provenance manifest. -# Copying them here does not relicense their upstream data, atlas or code. -[[annotations]] -path = ["2026-usrse/stamped-ai-study/data/*/maps/**", "2026-usrse/stamped-ai-study/data/*/summaries/**", "2026-usrse/stamped-ai-study/data/*/participant-map-sources.json", "2026-usrse/stamped-ai-study/data/*/source-analysis-run09.py", "2026-usrse/stamped-ai-study/data/narps-spatial/*.npz"] -precedence = "override" -SPDX-FileCopyrightText = "NOASSERTION" -SPDX-License-Identifier = "LicenseRef-ThirdPartyMixed" - [[annotations]] path = ["2026-usrse/stamped-ai-study/figures/narps-group-map.*", "2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.*"] precedence = "override" From f4dd4c96b0b9f3d71e84f034b1e1e5b77b6d9915 Mon Sep 17 00:00:00 2001 From: leej3 Date: Fri, 16 Oct 2026 10:05:01 -0400 Subject: [PATCH 08/15] docs(poster): add lessons on assessment and experimental progress Explain how assessment can prescribe worker practices and how repeated assessment repair postponed fresh tests of revised research skills. Link both lessons to the neutral comparison's retained evidence while preserving the experiment banner and scientific figures. Refresh the reviewed PDF, preview, and validation records. All 30 links, four PDF QR codes, and the 24-point text minimum pass. Record the current PDF and preview payload publication as pending without implying that the previous public export includes these changes. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- 2026-usrse/stamped-ai-study/README.md | 14 ++- .../stamped-ai-study/completion-plan.md | 11 ++- .../exports/agent-visual-review.json | 20 ++--- .../stamped-ai-study/exports/html-audit.json | 17 ++-- .../stamped-ai-study/exports/link-audit.json | 86 ++++++++++--------- .../stamped-ai-study/exports/pdf-audit.json | 6 +- .../stamped-ai-study/exports/pdf-preview.png | 2 +- .../exports/retrieval-audit.json | 62 ++++++++----- .../exports/stamped-ai-poster.pdf | 2 +- 2026-usrse/stamped-ai-study/index.html | 11 ++- 10 files changed, 140 insertions(+), 91 deletions(-) diff --git a/2026-usrse/stamped-ai-study/README.md b/2026-usrse/stamped-ai-study/README.md index 06fd535d..e810a41a 100644 --- a/2026-usrse/stamped-ai-study/README.md +++ b/2026-usrse/stamped-ai-study/README.md @@ -3,7 +3,9 @@ An editable **44 × 44 inch** poster about improving STAMPED research skills through the scientific work they produce. The blue banner states the experiment; the left column introduces STAMPED, the centre shows the NARPS scientific example, and the right connects condition-level outcomes to the study's research objects. -Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or retrieve [the PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf). +Open [index.html](index.html) or inspect the local [PDF](exports/stamped-ai-poster.pdf) and [preview](exports/pdf-preview.png). +The revised PDF and preview are retained locally; their annex payload publication is pending. +The [previous public PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf) predates the methodological lessons. The [completion plan](completion-plan.md) identifies the evidence needed to fill the pooled comparison and guide subsequent data collection. ## Scientific figures belong to the benchmark @@ -18,6 +20,13 @@ Group t maps agree to numerical precision; native correction choices account for These development examples remain useful while the compact outcomes table reserves space for eligible benchmark iterations pooled by condition. No comparison averages have been inserted yet. +## Methodological lessons + +The two lessons beneath the research-object section concern assessment without prescribing worker practices, and repeated assessment repair postponing fresh research rounds. +They draw on the later neutral comparison's [registered design](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md) and [round-one assessment history](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md). +The original 24 worker deliveries remained unchanged during reassessment. +These retrospective methodological lessons are distinct from the earlier twelve-run scientific illustrations and do not establish skill effectiveness or a measured effect of evaluation on workers' choices. + ## Retrieve and build Run from this directory: @@ -34,7 +43,7 @@ pixi run verify pixi run links ``` -`pixi run build` verifies the scientific display copies against their binding, then exports the local HTML/CSS poster. It does not regenerate scientific analyses or request live study data. Before replacing annexed exports, run `pixi run git annex unlock exports/stamped-ai-poster.pdf exports/pdf-preview.png`. The exact validated `pixi.lock` is preserved separately on [`codex/env-stamped-poster-contained-20261016`](https://github.com/con/talks/tree/codex/env-stamped-poster-contained-20261016). For an exact environment replay, retrieve its `2026-usrse/stamped-ai-study/pixi.lock` here before `pixi install --locked`. +`pixi run build` verifies the scientific display copies against their binding, then exports the local HTML/CSS poster. It does not regenerate scientific analyses or request live study data. Before replacing annexed exports, run `pixi run git annex unlock exports/stamped-ai-poster.pdf exports/pdf-preview.png`. The exact validated `pixi.lock` is preserved separately on [`codex/env-poster-method-lessons-20261016`](https://github.com/con/talks/tree/codex/env-poster-method-lessons-20261016). For an exact environment replay, retrieve its `2026-usrse/stamped-ai-study/pixi.lock` here before `pixi install --locked`. To import a new committed benchmark export: @@ -55,6 +64,7 @@ QR regeneration additionally requires Inkscape and `rsvg-convert`; ordinary buil ## Verification and provenance [HTML audit](exports/html-audit.json), [PDF audit](exports/pdf-audit.json), [link audit](exports/link-audit.json), [retrieval audit](exports/retrieval-audit.json) and [visual review](exports/agent-visual-review.json) describe the current export. +The retrieval audit distinguishes previously published assets from the pending current PDF and preview. Checks require one 44-inch square page, at least 24-point print text, no layout overflow, clickable PDF links, and four QR codes decoded from PDF pixels. These are agent checks; author review remains part of poster preparation. diff --git a/2026-usrse/stamped-ai-study/completion-plan.md b/2026-usrse/stamped-ai-study/completion-plan.md index acb9c5d5..e498cab3 100644 --- a/2026-usrse/stamped-ai-study/completion-plan.md +++ b/2026-usrse/stamped-ai-study/completion-plan.md @@ -11,9 +11,12 @@ Its common prompt already prescribed several assessed practices, and assessment The twelve scientific analyses remain useful examples and evidence for improving both skills and measurement. They do not populate the poster's pooled comparison. -A cleaner comparison needs a neutral common scientific task, explicit condition-specific skill instructions, a frozen assessment procedure and an end-to-end assessment pilot before launch. -Changing the common instructions or repairing incompatible primary measurements calls for a separately registered comparison, linked to the development findings that motivated it. -Poster preparation does not launch workers or change the registered protocol. +The subsequent [neutral comparison](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md) leaves methods and delivery practices to the workers and records coordinator preservation separately. +Its [round-one assessment history](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md) documents repeated assessment repairs and reassessment of the same 24 unchanged worker deliveries before later research rounds. +These records support the poster's two methodological lessons, separately from the earlier twelve-run scientific figures and any eventual comparison of skill effectiveness. +The assessment histories remain distinct; changes to the measurement procedure cannot be silently pooled as a skill-only effect. +Follow the benchmark's [current status](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/STATUS.md) and existing authorized sequence for remaining collection. +Poster preparation does not launch workers, add assessment trials or change the registered protocol. ## Pool retained iterations by condition @@ -78,7 +81,7 @@ Keep worker delivery distinct from coordinator recovery and publication. ## Finish from the records -1. Register the clean comparison and validate its collection and assessment procedures. +1. Use the registered comparison and preserve its documented assessment boundaries. 2. Publish each retained run, assessment and retrievable payload with its source binding. 3. Generate pooled condition summaries and updated spatial figures in the benchmark. 4. Link each skill revision to the observation that motivated it and its subsequent test. diff --git a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json index 581303ec..1d01eee6 100644 --- a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json +++ b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json @@ -1,18 +1,18 @@ { - "reviewer": "Codex agent", + "reviewer": "Codex agent; independent editorial and visual review by a second agent", "author_review": false, - "pdf_sha256": "4f1b1e32c225ba04282bc2406e3a973a4092b9f386c0ca93d0cc2fb6b69f229d", - "preview_sha256": "9734c16cfab996ac3a099823b9d616bb621e0a89093a95648d6491d0d303b400", - "reviewed_utc": "2026-10-16T05:48:22.643514+00:00", + "pdf_sha256": "eb7e1c194d8d0b524911112f51056bcf7dda30a85e6707d25995a78c10575ef8", + "preview_sha256": "e884e10d04b96f627757365ec2e6adb0346d8ec9c65ea3afdc5f43fa77a0be75", + "reviewed_utc": "2026-10-16T14:02:19.247244+00:00", "checks": [ "Inspected the current full-page PDF raster preview", - "Experiment framing restored in the blue banner; principles run down the left column", - "Compact four-row condition summary reserves space for pooled retained iterations", - "Both scientific figures are verified display copies from the benchmark repository", - "Research-object message and invitation retain prominent positions", - "No experiment-design concerns or completion-plan text appear on the poster", + "Experiment framing remains in the blue banner; principles remain down the left column", + "Two linked methodological lessons fit below the research-object section", + "Lessons distinguish worker choice from coordinator preservation and describe reassessment of unchanged deliveries", + "Supporting notes distinguish the later neutral comparison from the earlier scientific illustrations", + "Both scientific figures remain verified display copies from the benchmark repository", "Three columns, captions, invitation and footer fit without clipping or overlap", - "All 29 links pass and use named branches for GitHub evidence navigation", + "All 30 links pass and use named branches for GitHub evidence navigation", "Four QR codes decode from PDF pixels; all PDF text meets the 24 pt minimum" ], "result": "passed" diff --git a/2026-usrse/stamped-ai-study/exports/html-audit.json b/2026-usrse/stamped-ai-study/exports/html-audit.json index 38d63728..e7fc039c 100644 --- a/2026-usrse/stamped-ai-study/exports/html-audit.json +++ b/2026-usrse/stamped-ai-study/exports/html-audit.json @@ -4,7 +4,7 @@ "height": 4224 }, "minimum_text_px": 32, - "text_node_count": 150, + "text_node_count": 153, "small": [], "outside": [], "regionOverflow": [], @@ -182,7 +182,8 @@ "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1", "https://github.com/leej3/stamped-in-practice", - "https://github.com/con/skills/commits/codex/pr26-operational-environment/", + "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md", + "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md", "https://pbs.dartmouth.edu/", "https://www.repronim.org/" ], @@ -214,24 +215,24 @@ "x": 2690.828125, "y": 1866.875, "width": 1445.15625, - "height": 913.25 + "height": 864.65625 } }, { "element": "SECTION", - "class": "ruled revision-section", + "class": "ruled lessons-section", "rect": { "x": 2690.828125, - "y": 2806.125, + "y": 2757.53125, "width": 1445.15625, - "height": 199.375 + "height": 795.90625 } } ], "browser": "151.0.7922.34", - "created_utc": "2026-10-16T05:47:27.131Z", + "created_utc": "2026-10-16T14:00:14.822Z", "source_sha256": { - "index.html": "29a3aebdcb3fcb42ddf3d32879095bdea133fee2e52371632d068fbab85475c4", + "index.html": "00d74b8b91af44d572a664571977cd2bfc5d6d553300b6b7b226b750285da525", "template.css": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", "poster.css": "352b253e7fa7fdf56f165fdbb053f0233a6e26900fa9303811685efc7082871d", "build-poster.cjs": "3c392e51ef7a2151447fa6fe0e934ef77b7926086923e10a9b938fe4ba9d0a1a", diff --git a/2026-usrse/stamped-ai-study/exports/link-audit.json b/2026-usrse/stamped-ai-study/exports/link-audit.json index 167d0161..69426c41 100644 --- a/2026-usrse/stamped-ai-study/exports/link-audit.json +++ b/2026-usrse/stamped-ai-study/exports/link-audit.json @@ -1,11 +1,11 @@ { - "html_audit_sha256": "ce8a3f41d1cfe671abfe35464629e42d61399314b72295bc2cc9ea255f7a5c0a", - "checked_at": "2026-10-16T05:47:48.897702+00:00", + "html_audit_sha256": "a515bf5406e5433079a204fa1e4f486838c4692a45b8bf189c525333a14b0176", + "checked_at": "2026-10-16T14:00:54.779630+00:00", "authentication": "none", "results": [ { "url": "https://checklist.stamped-principles.org/", - "checked_at": "2026-10-16T05:47:44.560961+00:00", + "checked_at": "2026-10-16T14:00:47.535967+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://checklist.stamped-principles.org/", @@ -13,7 +13,7 @@ }, { "url": "https://dev.centerforopenneuroscience.org/", - "checked_at": "2026-10-16T05:47:44.561232+00:00", + "checked_at": "2026-10-16T14:00:47.536200+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://dev.centerforopenneuroscience.org/", @@ -21,15 +21,15 @@ }, { "url": "https://doi.org/10.1038/s41586-020-2314-9", - "checked_at": "2026-10-16T05:47:44.561305+00:00", + "checked_at": "2026-10-16T14:00:47.536285+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=7f13aca7-398d-4868-8eb1-f167688c117e", + "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=df11cfec-1ce3-4d61-9dcd-ebd6b922b149", "passed": true }, { "url": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", - "checked_at": "2026-10-16T05:47:44.561353+00:00", + "checked_at": "2026-10-16T14:00:47.536346+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://openneuro.org/datasets/ds001734/versions/1.0.4", @@ -37,7 +37,7 @@ }, { "url": "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T05:47:44.798628+00:00", + "checked_at": "2026-10-16T14:00:47.816199+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", @@ -45,7 +45,7 @@ }, { "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T05:47:44.840190+00:00", + "checked_at": "2026-10-16T14:00:47.893100+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", @@ -53,7 +53,7 @@ }, { "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", - "checked_at": "2026-10-16T05:47:45.187936+00:00", + "checked_at": "2026-10-16T14:00:48.172130+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", @@ -61,23 +61,15 @@ }, { "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", - "checked_at": "2026-10-16T05:47:45.327622+00:00", + "checked_at": "2026-10-16T14:00:48.590167+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", "passed": true }, - { - "url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", - "checked_at": "2026-10-16T05:47:45.351082+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/con/skills/commits/codex/pr26-operational-environment/", - "passed": true - }, { "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", - "checked_at": "2026-10-16T05:47:45.688209+00:00", + "checked_at": "2026-10-16T14:00:48.723187+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", @@ -85,7 +77,7 @@ }, { "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", - "checked_at": "2026-10-16T05:47:45.800010+00:00", + "checked_at": "2026-10-16T14:00:48.852084+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", @@ -93,15 +85,31 @@ }, { "url": "https://github.com/leej3/stamped-in-practice", - "checked_at": "2026-10-16T05:47:45.959389+00:00", + "checked_at": "2026-10-16T14:00:49.196212+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice", "passed": true }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md", + "checked_at": "2026-10-16T14:00:49.570180+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md", + "checked_at": "2026-10-16T14:00:49.577065+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md", + "passed": true + }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-v1/procedure.json", - "checked_at": "2026-10-16T05:47:46.085000+00:00", + "checked_at": "2026-10-16T14:00:49.609074+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-v1/procedure.json", @@ -109,7 +117,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", - "checked_at": "2026-10-16T05:47:46.300489+00:00", + "checked_at": "2026-10-16T14:00:49.914150+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", @@ -117,7 +125,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", - "checked_at": "2026-10-16T05:47:46.602338+00:00", + "checked_at": "2026-10-16T14:00:50.158126+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", @@ -125,7 +133,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", - "checked_at": "2026-10-16T05:47:46.623393+00:00", + "checked_at": "2026-10-16T14:00:50.208142+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", @@ -133,7 +141,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/render_narps_spatial.py", - "checked_at": "2026-10-16T05:47:46.754258+00:00", + "checked_at": "2026-10-16T14:00:50.221033+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/render_narps_spatial.py", @@ -141,7 +149,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", - "checked_at": "2026-10-16T05:47:46.760156+00:00", + "checked_at": "2026-10-16T14:00:50.523204+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", @@ -149,7 +157,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", - "checked_at": "2026-10-16T05:47:47.074565+00:00", + "checked_at": "2026-10-16T14:00:50.724194+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", @@ -157,7 +165,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", - "checked_at": "2026-10-16T05:47:47.155292+00:00", + "checked_at": "2026-10-16T14:00:50.909166+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", @@ -165,7 +173,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1", - "checked_at": "2026-10-16T05:47:47.249848+00:00", + "checked_at": "2026-10-16T14:00:50.933174+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1", @@ -173,7 +181,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", - "checked_at": "2026-10-16T05:47:47.378484+00:00", + "checked_at": "2026-10-16T14:00:51.122184+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", @@ -181,7 +189,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", - "checked_at": "2026-10-16T05:47:47.509444+00:00", + "checked_at": "2026-10-16T14:00:51.241129+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", @@ -189,7 +197,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial", - "checked_at": "2026-10-16T05:47:47.602822+00:00", + "checked_at": "2026-10-16T14:00:51.503153+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial", @@ -197,7 +205,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", - "checked_at": "2026-10-16T05:47:47.800881+00:00", + "checked_at": "2026-10-16T14:00:51.560077+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", @@ -205,7 +213,7 @@ }, { "url": "https://neurovault.org/collections/4932/", - "checked_at": "2026-10-16T05:47:47.829485+00:00", + "checked_at": "2026-10-16T14:00:51.680302+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://neurovault.org/collections/4932/", @@ -213,7 +221,7 @@ }, { "url": "https://pbs.dartmouth.edu/", - "checked_at": "2026-10-16T05:47:48.062545+00:00", + "checked_at": "2026-10-16T14:00:51.818211+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://pbs.dartmouth.edu/", @@ -221,7 +229,7 @@ }, { "url": "https://pubmed.ncbi.nlm.nih.gov/17255512/", - "checked_at": "2026-10-16T05:47:48.194696+00:00", + "checked_at": "2026-10-16T14:00:52.085583+00:00", "method": "HEAD", "http_status": 203, "final_url": "https://pubmed.ncbi.nlm.nih.gov/17255512/", @@ -229,7 +237,7 @@ }, { "url": "https://www.repronim.org/", - "checked_at": "2026-10-16T05:47:48.297052+00:00", + "checked_at": "2026-10-16T14:00:52.093210+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://repronim.org/", diff --git a/2026-usrse/stamped-ai-study/exports/pdf-audit.json b/2026-usrse/stamped-ai-study/exports/pdf-audit.json index dad00323..29226f7c 100644 --- a/2026-usrse/stamped-ai-study/exports/pdf-audit.json +++ b/2026-usrse/stamped-ai-study/exports/pdf-audit.json @@ -1,5 +1,5 @@ { - "pdf_sha256": "4f1b1e32c225ba04282bc2406e3a973a4092b9f386c0ca93d0cc2fb6b69f229d", + "pdf_sha256": "eb7e1c194d8d0b524911112f51056bcf7dda30a85e6707d25995a78c10575ef8", "page_count": 1, "page_points": [ 3168.0, @@ -8,9 +8,9 @@ "minimum_html_text_px": 32, "minimum_html_text_pt": 24.0, "minimum_pdf_text_pt": 24.0, - "inspected_pdf_text_runs": 219, + "inspected_pdf_text_runs": 228, "link_annotation_count": 37, - "unique_expected_links": 29, + "unique_expected_links": 30, "missing_links": [], "raster_dpi": 150, "qr_results": [ diff --git a/2026-usrse/stamped-ai-study/exports/pdf-preview.png b/2026-usrse/stamped-ai-study/exports/pdf-preview.png index f3a30659..a7e48c9a 120000 --- a/2026-usrse/stamped-ai-study/exports/pdf-preview.png +++ b/2026-usrse/stamped-ai-study/exports/pdf-preview.png @@ -1 +1 @@ -../../../.git/annex/objects/KX/xM/MD5E-s1012249--fb120e92a88e4205b2d5b54521840d3f.png/MD5E-s1012249--fb120e92a88e4205b2d5b54521840d3f.png \ No newline at end of file +../../../.git/annex/objects/0x/61/MD5E-s1113227--e409190c803eba9bf21df3e1be969146.png/MD5E-s1113227--e409190c803eba9bf21df3e1be969146.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json index 0f613b6d..60dc7650 100644 --- a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json +++ b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json @@ -9,7 +9,8 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s71083--8f66e387d1e50c94a14c747cc1a363ab.svg", "sha256": "3256be5b0c21a68881a5259ac190ccf30684d8bc25ae8b2d3085fbcc8687a03c", "bytes": 71083, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" }, { "path": "assets/stamped-qr-poster.svg", @@ -17,7 +18,8 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s72488--fcda447d1d4515e37ed70c0359039be9.svg", "sha256": "28439d899807c61b06977e9359fc6ec6766d7fb78e504c282389d9ca9a90dbdc", "bytes": 72488, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" }, { "path": "assets/stamped-qr-study.svg", @@ -25,7 +27,8 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s67623--fad8037a2c4eac1c81b0f96a75bb69e2.svg", "sha256": "771b6b0ca8b7efac41a536648d8f17f4d4ff63fcc8b5d4d2a6ae51f7db0a891e", "bytes": 67623, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" }, { "path": "figures/narps-group-map.png", @@ -33,7 +36,8 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png", "sha256": "c35b14d41d0b3496c6247d6dbc14db9c2f1e4009764d7370e07b0ec8f013e7b7", "bytes": 136105, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" }, { "path": "figures/narps-spatial-agreement.svg", @@ -41,7 +45,8 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s142319--635c889a2b6a58de2a5c8aa69f11e8e4.svg", "sha256": "7f7d3d44bacbbe6a8a911d89859fb7612ae3875bf35217efcc85b4891c6af790", "bytes": 142319, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" }, { "path": "figures/narps-spatial-agreement.png", @@ -49,23 +54,28 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s166353--6c8e79de1133a513b18c6123e3db1e71.png", "sha256": "f93b8a67c4d714622d891934546a1b384d99c7e3e32cc4fa42b06375f7355bf8", "bytes": 166353, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" }, { "path": "exports/stamped-ai-poster.pdf", - "key": "MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf", - "sha256": "4f1b1e32c225ba04282bc2406e3a973a4092b9f386c0ca93d0cc2fb6b69f229d", - "bytes": 838462, - "passed": true + "key": "MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf", + "sha256": "eb7e1c194d8d0b524911112f51056bcf7dda30a85e6707d25995a78c10575ef8", + "bytes": 841738, + "passed": null, + "checked_utc": null, + "status": "publication_pending" }, { "path": "exports/pdf-preview.png", - "key": "MD5E-s1012249--fb120e92a88e4205b2d5b54521840d3f.png", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1012249--fb120e92a88e4205b2d5b54521840d3f.png", - "sha256": "9734c16cfab996ac3a099823b9d616bb621e0a89093a95648d6491d0d303b400", - "bytes": 1012249, - "passed": true + "key": "MD5E-s1113227--e409190c803eba9bf21df3e1be969146.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1113227--e409190c803eba9bf21df3e1be969146.png", + "sha256": "e884e10d04b96f627757365ec2e6adb0346d8ec9c65ea3afdc5f43fa77a0be75", + "bytes": 1113227, + "passed": null, + "checked_utc": null, + "status": "publication_pending" }, { "path": "../orinoco-lite/assets/con-logo-outlined.svg", @@ -73,7 +83,8 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", "bytes": 125811, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" }, { "path": "../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", @@ -81,7 +92,8 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", "bytes": 379034, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" }, { "path": "../orinoco-lite/assets/repronim_logo.svg", @@ -89,7 +101,8 @@ "url": "https://raw.githubusercontent.com/con/talks/codex/stamped-example-poster/2026-usrse/orinoco-lite/assets/repronim_logo.svg", "sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", "bytes": 33939, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" }, { "path": "../orinoco-lite/assets/orinoco-qr-con.svg", @@ -97,8 +110,15 @@ "url": "https://raw.githubusercontent.com/con/talks/codex/stamped-example-poster/2026-usrse/orinoco-lite/assets/orinoco-qr-con.svg", "sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", "bytes": 67605, - "passed": true + "passed": true, + "checked_utc": "2026-10-16T05:48:40.738147+00:00" } ], - "all_passed": true + "all_passed": false, + "updated_utc": "2026-10-16T14:04:44.756888+00:00", + "pending_uploads": [ + "exports/stamped-ai-poster.pdf", + "exports/pdf-preview.png" + ], + "scope": "Unchanged assets retain their prior retrieval checks. Current PDF and preview are retained locally; remote payload publication is pending." } diff --git a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf index 149bcdcc..5e8d1e9c 120000 --- a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf +++ b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf @@ -1 +1 @@ -../../../.git/annex/objects/PM/68/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf \ No newline at end of file +../../../.git/annex/objects/9p/wV/MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf/MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/index.html b/2026-usrse/stamped-ai-study/index.html index fb4f3e57..0cb5af62 100644 --- a/2026-usrse/stamped-ai-study/index.html +++ b/2026-usrse/stamped-ai-study/index.html @@ -110,9 +110,16 @@

Where do repeated analyses agree?

Code + execution records + results↓ Assessments + reasons for revisions -

stamped-in-practice links the skills, data, runs, assessments and revisions—including unsuccessful attempts.

This lets others assess both the scientific results and the process of improving the skills. Ideas for better guidance become testable when we can trace the data generated along the way.

+

stamped-in-practice links the skills, data, runs, assessments and revisions—including unsuccessful attempts.

Preserve enough evidence to examine both the scientific result and the decisions that shaped the experiment.

+ +
+ +

Assess without prescribing

+

Requiring particular tools or output formats makes assessment easier, but risks prescribing the practices being evaluated. Our revised design let workers choose their methods and delivery practices, while recording coordinator preservation separately. The challenge is to make work inspectable while preserving meaningful freedom.

+

Keep repair from replacing experimentation

+

Defects in round-one assessment prompted repeated repairs and reassessment of the same research deliveries, postponing tests of revised skills on fresh work. This experience motivates explicit boundaries between developing the assessment and running the experiment: freeze the procedure, retain failures and uncertainty, and define when to proceed.

+

Neutral task design · Assessment history

-

Link each revision to evidence

Observed failure → skill change → subsequent test.

Iteration records · Skill history

From 7e40cec608d4471c2b27e0a41364e4cb344b9d2d Mon Sep 17 00:00:00 2001 From: leej3 Date: Fri, 16 Oct 2026 11:12:34 -0400 Subject: [PATCH 09/15] docs(poster): verify public PDF and preview publication Publish the reviewed poster exports and confirm anonymous full-byte retrieval against their recorded SHA-256 values. Replace the pending publication notice with the verified PDF link and retain per-file audit scopes for unchanged assets. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- 2026-usrse/stamped-ai-study/README.md | 9 +++--- .../exports/retrieval-audit.json | 31 ++++++++++--------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/2026-usrse/stamped-ai-study/README.md b/2026-usrse/stamped-ai-study/README.md index e810a41a..dbfddbca 100644 --- a/2026-usrse/stamped-ai-study/README.md +++ b/2026-usrse/stamped-ai-study/README.md @@ -3,9 +3,8 @@ An editable **44 × 44 inch** poster about improving STAMPED research skills through the scientific work they produce. The blue banner states the experiment; the left column introduces STAMPED, the centre shows the NARPS scientific example, and the right connects condition-level outcomes to the study's research objects. -Open [index.html](index.html) or inspect the local [PDF](exports/stamped-ai-poster.pdf) and [preview](exports/pdf-preview.png). -The revised PDF and preview are retained locally; their annex payload publication is pending. -The [previous public PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s838462--d8ef321e58eda856e01de66965ab01d9.pdf) predates the methodological lessons. +Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or download [the revised PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf). +The current PDF and preview are publicly retrievable; anonymous downloads match the reviewed local files byte-for-byte. The [completion plan](completion-plan.md) identifies the evidence needed to fill the pooled comparison and guide subsequent data collection. ## Scientific figures belong to the benchmark @@ -43,7 +42,7 @@ pixi run verify pixi run links ``` -`pixi run build` verifies the scientific display copies against their binding, then exports the local HTML/CSS poster. It does not regenerate scientific analyses or request live study data. Before replacing annexed exports, run `pixi run git annex unlock exports/stamped-ai-poster.pdf exports/pdf-preview.png`. The exact validated `pixi.lock` is preserved separately on [`codex/env-poster-method-lessons-20261016`](https://github.com/con/talks/tree/codex/env-poster-method-lessons-20261016). For an exact environment replay, retrieve its `2026-usrse/stamped-ai-study/pixi.lock` here before `pixi install --locked`. +`pixi run build` verifies the scientific display copies against their binding, then exports the local HTML/CSS poster. It does not regenerate scientific analyses or request live study data. Before replacing annexed exports, run `pixi run git annex unlock exports/stamped-ai-poster.pdf exports/pdf-preview.png`. The exact validated `pixi.lock` is preserved separately on [`codex/env-poster-method-lessons-published-20261016`](https://github.com/con/talks/tree/codex/env-poster-method-lessons-published-20261016). For an exact environment replay, retrieve its `2026-usrse/stamped-ai-study/pixi.lock` here before `pixi install --locked`. To import a new committed benchmark export: @@ -64,7 +63,7 @@ QR regeneration additionally requires Inkscape and `rsvg-convert`; ordinary buil ## Verification and provenance [HTML audit](exports/html-audit.json), [PDF audit](exports/pdf-audit.json), [link audit](exports/link-audit.json), [retrieval audit](exports/retrieval-audit.json) and [visual review](exports/agent-visual-review.json) describe the current export. -The retrieval audit distinguishes previously published assets from the pending current PDF and preview. +The retrieval audit records fresh full-payload checks for the current PDF and preview, alongside earlier checks for unchanged assets. Checks require one 44-inch square page, at least 24-point print text, no layout overflow, clickable PDF links, and four QR codes decoded from PDF pixels. These are agent checks; author review remains part of poster preparation. diff --git a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json index 60dc7650..6e2bfead 100644 --- a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json +++ b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json @@ -1,5 +1,5 @@ { - "checked_utc": "2026-10-16T05:48:40.738147+00:00", + "checked_utc": "2026-10-16T15:11:51.055227+00:00", "authentication": "none", "method": "download and compare full payload SHA-256", "files": [ @@ -63,9 +63,12 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf", "sha256": "eb7e1c194d8d0b524911112f51056bcf7dda30a85e6707d25995a78c10575ef8", "bytes": 841738, - "passed": null, - "checked_utc": null, - "status": "publication_pending" + "passed": true, + "checked_utc": "2026-10-16T15:11:50.961999+00:00", + "status": "verified", + "http_status": 200, + "retrieved_bytes": 841738, + "retrieved_sha256": "eb7e1c194d8d0b524911112f51056bcf7dda30a85e6707d25995a78c10575ef8" }, { "path": "exports/pdf-preview.png", @@ -73,9 +76,12 @@ "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1113227--e409190c803eba9bf21df3e1be969146.png", "sha256": "e884e10d04b96f627757365ec2e6adb0346d8ec9c65ea3afdc5f43fa77a0be75", "bytes": 1113227, - "passed": null, - "checked_utc": null, - "status": "publication_pending" + "passed": true, + "checked_utc": "2026-10-16T15:11:51.054258+00:00", + "status": "verified", + "http_status": 200, + "retrieved_bytes": 1113227, + "retrieved_sha256": "e884e10d04b96f627757365ec2e6adb0346d8ec9c65ea3afdc5f43fa77a0be75" }, { "path": "../orinoco-lite/assets/con-logo-outlined.svg", @@ -114,11 +120,8 @@ "checked_utc": "2026-10-16T05:48:40.738147+00:00" } ], - "all_passed": false, - "updated_utc": "2026-10-16T14:04:44.756888+00:00", - "pending_uploads": [ - "exports/stamped-ai-poster.pdf", - "exports/pdf-preview.png" - ], - "scope": "Unchanged assets retain their prior retrieval checks. Current PDF and preview are retained locally; remote payload publication is pending." + "all_passed": true, + "updated_utc": "2026-10-16T15:11:51.055227+00:00", + "pending_uploads": [], + "scope": "Current PDF and preview downloaded anonymously and verified byte-for-byte. Unchanged assets retain their earlier retrieval checks at the per-file times shown." } From 2b1726c91a7b61424d439bb1e7901516553147cb Mon Sep 17 00:00:00 2001 From: leej3 Date: Fri, 16 Oct 2026 13:44:38 -0400 Subject: [PATCH 10/15] feat(poster): present retained judgments and later-round spatial results Populate the compact condition table from verified benchmark reporting and replace development figures with the formal round-two example and all 48 round-two/three spatial decisions. Import data and figures from committed benchmark sources; keep reporting diagnostics in the linked research object. Preserve the experiment banner, STAMPED principles and invitation. Verify 44-inch PDF layout, 24-point minimum text, four QR codes, 31 links and public PDF/asset retrieval. Round-three judgments remain in the original chat. Co-Authored-By: Codex Desktop 26.1007.71326 (runtime codex-cli 0.162.0-alpha.17.2) / gpt-6-astra Codex-Reasoning-Effort: ultra --- 2026-usrse/stamped-ai-study/README.md | 28 +- .../assets/stamped-qr-skills.svg | 2 +- 2026-usrse/stamped-ai-study/build-poster.cjs | 2 +- .../stamped-ai-study/completion-plan.md | 113 +--- .../data/benchmark-outcomes-source.json | 9 + .../data/benchmark-outcomes.json | 466 ++++++++++++++++ .../exports/agent-visual-review.json | 31 +- .../stamped-ai-study/exports/html-audit.json | 66 +-- .../stamped-ai-study/exports/link-audit.json | 132 ++--- .../stamped-ai-study/exports/pdf-audit.json | 14 +- .../stamped-ai-study/exports/pdf-preview.png | 2 +- .../exports/retrieval-audit.json | 200 +++---- .../exports/stamped-ai-poster.pdf | 2 +- .../figures/benchmark-source.json | 95 ++-- .../figures/narps-group-map.png | 2 +- .../figures/narps-group-map.svg | 496 +++++++++--------- .../figures/narps-spatial-agreement.png | 2 +- .../figures/narps-spatial-agreement.svg | 2 +- 2026-usrse/stamped-ai-study/index.html | 55 +- 2026-usrse/stamped-ai-study/make-logo-qrs.py | 2 +- 2026-usrse/stamped-ai-study/pixi.toml | 3 +- 2026-usrse/stamped-ai-study/poster.css | 6 +- .../scripts/import-benchmark-outcomes.py | 97 ++++ 23 files changed, 1189 insertions(+), 638 deletions(-) create mode 100644 2026-usrse/stamped-ai-study/data/benchmark-outcomes-source.json create mode 100644 2026-usrse/stamped-ai-study/data/benchmark-outcomes.json create mode 100644 2026-usrse/stamped-ai-study/scripts/import-benchmark-outcomes.py diff --git a/2026-usrse/stamped-ai-study/README.md b/2026-usrse/stamped-ai-study/README.md index dbfddbca..23b6d531 100644 --- a/2026-usrse/stamped-ai-study/README.md +++ b/2026-usrse/stamped-ai-study/README.md @@ -3,9 +3,9 @@ An editable **44 × 44 inch** poster about improving STAMPED research skills through the scientific work they produce. The blue banner states the experiment; the left column introduces STAMPED, the centre shows the NARPS scientific example, and the right connects condition-level outcomes to the study's research objects. -Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or download [the revised PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf). +Open [index.html](index.html), inspect the [PDF preview](exports/pdf-preview.png), or download [the revised PDF](https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s857856--47b3904e1be7ccc9f35de93dc2a178f2.pdf). The current PDF and preview are publicly retrievable; anonymous downloads match the reviewed local files byte-for-byte. -The [completion plan](completion-plan.md) identifies the evidence needed to fill the pooled comparison and guide subsequent data collection. +The [completion plan](completion-plan.md) tracks the remaining round-three assessment integration. ## Scientific figures belong to the benchmark @@ -13,18 +13,19 @@ The [benchmark figure workflow](https://github.com/leej3/stamped-in-practice/blo This poster retains display copies and a [source binding](figures/benchmark-source.json), including the exact benchmark revision and SHA-256 values. Reader-facing links open named branches; exact revisions remain in the provenance. -The group map illustrates development run 09, conditional on the supplied AO86 participant maps. -The spatial comparison includes twelve development runs, three per condition, on shared coverage. -Group t maps agree to numerical precision; native correction choices account for the displayed difference in positive extent. -These development examples remain useful while the compact outcomes table reserves space for eligible benchmark iterations pooled by condition. -No comparison averages have been inserted yet. +The group map shows formal round-two run 09: a one-sample group test on 54 participant maps, 9,999 sign-flip permutations and whole-brain FWE correction. +The spatial comparison uses all 48 analyses from rounds two and three, twelve per condition, on 168,285 shared tested voxels. +Every run retains its native corrected decisions and coverage; the source repository preserves masks, scientific code, reports and capture identities. -## Methodological lessons +The compact outcomes table pools the retained operational assessments from rounds one and two: 48 original research runs, 47 primary scientific judgments and 45 valid primary checklists. +Native replay counts distinguish full selected-output matches from observed executions. +The [benchmark summary](https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/retained-round-reporting/pooled) retains all grades, denominators, partial matches and separate round summaries. +The [display data](data/benchmark-outcomes.json) and [source binding](data/benchmark-outcomes-source.json) identify the exact imported report. +Round three will enter this table after its existing judges and closed extraction finish; its scientific maps are already included in the spatial figure. -The two lessons beneath the research-object section concern assessment without prescribing worker practices, and repeated assessment repair postponing fresh research rounds. -They draw on the later neutral comparison's [registered design](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md) and [round-one assessment history](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md). -The original 24 worker deliveries remained unchanged during reassessment. -These retrospective methodological lessons are distinct from the earlier twelve-run scientific illustrations and do not establish skill effectiveness or a measured effect of evaluation on workers' choices. +The poster focuses on the scientific results and skill-development experiment. +Original reporting failures, additive extraction corrections and infrastructure diagnostics remain in the benchmark's linked reporting record. +The final guidance example links directly to the research-loop skill's environment-recipe clarification. ## Retrieve and build @@ -42,13 +43,14 @@ pixi run verify pixi run links ``` -`pixi run build` verifies the scientific display copies against their binding, then exports the local HTML/CSS poster. It does not regenerate scientific analyses or request live study data. Before replacing annexed exports, run `pixi run git annex unlock exports/stamped-ai-poster.pdf exports/pdf-preview.png`. The exact validated `pixi.lock` is preserved separately on [`codex/env-poster-method-lessons-published-20261016`](https://github.com/con/talks/tree/codex/env-poster-method-lessons-published-20261016). For an exact environment replay, retrieve its `2026-usrse/stamped-ai-study/pixi.lock` here before `pixi install --locked`. +`pixi run build` verifies the scientific display copies and outcome table against their bindings, then exports the local HTML/CSS poster. It does not regenerate scientific analyses or request live study data. Before replacing annexed exports, run `pixi run git annex unlock exports/stamped-ai-poster.pdf exports/pdf-preview.png`. The exact validated `pixi.lock` is preserved separately on [`codex/env-poster-method-lessons-published-20261016`](https://github.com/con/talks/tree/codex/env-poster-method-lessons-published-20261016). For an exact environment replay, retrieve its `2026-usrse/stamped-ai-study/pixi.lock` here before `pixi install --locked`. To import a new committed benchmark export: ```sh pixi run git annex unlock figures pixi run python scripts/import-benchmark-figures.py --benchmark /path/to/stamped-in-practice +pixi run python scripts/import-benchmark-outcomes.py --benchmark /path/to/stamped-in-practice pixi run build ``` diff --git a/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg b/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg index 5dd329c7..b09b7148 120000 --- a/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg +++ b/2026-usrse/stamped-ai-study/assets/stamped-qr-skills.svg @@ -1 +1 @@ -../../../.git/annex/objects/Mq/Xq/MD5E-s71083--8f66e387d1e50c94a14c747cc1a363ab.svg/MD5E-s71083--8f66e387d1e50c94a14c747cc1a363ab.svg \ No newline at end of file +../../../.git/annex/objects/P1/QQ/MD5E-s71319--3a2ac51ee9d25a2a98c5067806447aec.svg/MD5E-s71319--3a2ac51ee9d25a2a98c5067806447aec.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/build-poster.cjs b/2026-usrse/stamped-ai-study/build-poster.cjs index b7249d49..e767544b 100644 --- a/2026-usrse/stamped-ai-study/build-poster.cjs +++ b/2026-usrse/stamped-ai-study/build-poster.cjs @@ -96,7 +96,7 @@ const sha = file => crypto.createHash('sha256').update(fs.readFileSync(file)).di }); audit.browser = browser.version(); audit.created_utc = new Date().toISOString(); - audit.source_sha256 = Object.fromEntries(['index.html', 'template.css', 'poster.css', 'build-poster.cjs', 'verify-pdf.py', 'verify-links.py', 'make-logo-qrs.py', 'source-manifest.json', 'figures/benchmark-source.json', 'scripts/import-benchmark-figures.py', 'pixi.toml', 'package-lock.json'].map(n => [n, sha(path.join(root, n))])); + audit.source_sha256 = Object.fromEntries(['index.html', 'template.css', 'poster.css', 'build-poster.cjs', 'verify-pdf.py', 'verify-links.py', 'make-logo-qrs.py', 'source-manifest.json', 'figures/benchmark-source.json', 'scripts/import-benchmark-figures.py', 'scripts/import-benchmark-outcomes.py', 'data/benchmark-outcomes.json', 'data/benchmark-outcomes-source.json', 'pixi.toml', 'package-lock.json'].map(n => [n, sha(path.join(root, n))])); audit.errors = errors; fs.writeFileSync(path.join(output, 'html-audit.json'), JSON.stringify(audit, null, 2) + '\n'); await page.screenshot({ path: path.join(output, 'layout-review.png'), fullPage: true }); diff --git a/2026-usrse/stamped-ai-study/completion-plan.md b/2026-usrse/stamped-ai-study/completion-plan.md index e498cab3..57fd88ad 100644 --- a/2026-usrse/stamped-ai-study/completion-plan.md +++ b/2026-usrse/stamped-ai-study/completion-plan.md @@ -1,89 +1,28 @@ # Completing the STAMPED in Practice poster -The poster presents the argument we want the experiment to establish: iteratively improve research skills by validating the scientific results and research objects they produce. -Open comparison cells identify evidence still needed, while the scientific figures show real completed development work. -The invitation is to use STAMPED, try the skills and contribute studies that test how well the guidance transfers. - -## Retain development evidence; define the comparison - -The benchmark's [round-one synthesis](https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1/synthesis) classifies `narps-v1` as development evidence. -Its common prompt already prescribed several assessed practices, and assessment infrastructure made many replay measurements unavailable. -The twelve scientific analyses remain useful examples and evidence for improving both skills and measurement. -They do not populate the poster's pooled comparison. - -The subsequent [neutral comparison](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md) leaves methods and delivery practices to the workers and records coordinator preservation separately. -Its [round-one assessment history](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md) documents repeated assessment repairs and reassessment of the same 24 unchanged worker deliveries before later research rounds. -These records support the poster's two methodological lessons, separately from the earlier twelve-run scientific figures and any eventual comparison of skill effectiveness. -The assessment histories remain distinct; changes to the measurement procedure cannot be silently pooled as a skill-only effect. -Follow the benchmark's [current status](https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/STATUS.md) and existing authorized sequence for remaining collection. -Poster preparation does not launch workers, add assessment trials or change the registered protocol. - -## Pool retained iterations by condition - -The poster uses four rows: no supplied skills, find useful skills, find research skills, and use STAMPED skills. -Pool eligible iterations into one summary per condition, giving each independent research run equal weight. -Retain iteration, replicate, skill revision and assessor revision in the linked records. -Use one designated primary judgment per run; supplementary judgments measure disagreement, not additional independent runs. - -- **Runs:** retained run count and contributing iterations. -- **Science:** proportions supported, qualified, unsupported and unable to assess, with the assessed denominator. -- **Replay:** proportions passed, partial and failed among interpretable measurements, with available and unavailable counts. -- **STAMPED:** average each run's proportion of applicable checklist items marked met, then average those proportions across runs. -Use the same frozen checklist and applicability rules; retain MUST/SHOULD/MAY breakdowns and partial, unmet and unchecked profiles in the evidence. -Do not treat an unavailable measurement as a failed run or silently omit unchecked items to raise a percentage. - -Freeze the precise checklist denominator and missingness rules before collecting the comparison. -If the applicable item set differs materially across runs, show the item profiles alongside the mean and avoid interpreting the mean as certification. -Balanced replicate counts give iterations equal representation; if completion differs, report iteration coverage and avoid silently selecting whichever judgments finished. - -Pooling describes overall performance under each condition. -The improvement claim also needs a linked chain for each revision: observed failure, reusable skill change, and the subsequent test. -Preserve those revision-specific records even though the poster table is pooled. -Keep the final evaluation free of further tuning. - -## Complete the scientific panels - -The original study question remains one sentence. -The replication tests NARPS H1 using 54 fixed AO86 participant gain-effect maps, with a linked paper, task and data. -Select the final illustrative analysis by a stated rule and retain its correction, region, estimate, interval, scientific commit and input hashes. -Do not pool regional coefficients from different anatomical definitions. - -The variability figure shows how many runs detect corrected positive signal on shared coverage, grouped by condition. -The present development example uses the intersection of twelve native search masks and participant coverage: 184,543 voxels, without resampling. -It preserves native correction choices and treats unassessed voxels as missing coverage. -The t fields agree to numerical precision; correction choices account for the displayed extent differences. -Agreement is descriptive and does not by itself establish scientific validity. - -For later retained iterations, declare the evaluation domain and denominator before extracting results. -Retain native masks, correction family/method/alpha, support size and coverage fraction. -Use common geometry, cuts and colour scales; do not count uncovered voxels as negative. -Report null variation when present instead of changing the endpoint to create variation. - -All scientific capture, rendering, inputs and outputs belong in the [benchmark workflow](https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/POSTER-FIGURES.md). -The poster imports verified display copies only. - -## Collect one bound record per run - -| Record | Required fields | -| --- | --- | -| Assignment | study, iteration, run, condition, replicate, scientific task, inputs, skill revision, model/settings and worker stop commit | -| Skill exposure | discovered, installed and used skills, versions, unsuccessful attempts and supporting evidence | -| Science | participants/exclusions, model/design, effect units, region, maps, native support, spatial reference, correction, permutations/seed and hypothesis conclusion | -| Assessment | primary/supplementary role, assessor/procedure revision, adequacy, every checklist verdict, validity overlays and missing reasons | -| Replay | entry point, generated-output manifest, input hashes before/after, per-file comparison rule, missing outputs, scope and elapsed time | -| Delivery and effort | worker delivery, coordinator preservation, independent retrieval, intervention and measured costs with their scope | -| Secondary extraction | specification/code version, source hashes, evaluation domain, denominator, metric/units and missing reason | - -Generated-output manifests and input-hash guards must keep replay cleanup from deleting required inputs. -Define exact versus numerical comparisons and treatment of timestamps and authored prose before assessment. -Preserve raw judgments and their validity overlays; a more favourable reassessment must not silently replace a primary. -Keep worker delivery distinct from coordinator recovery and publication. - -## Finish from the records - -1. Use the registered comparison and preserve its documented assessment boundaries. -2. Publish each retained run, assessment and retrievable payload with its source binding. -3. Generate pooled condition summaries and updated spatial figures in the benchmark. -4. Link each skill revision to the observation that motivated it and its subsequent test. -5. Fill the compact poster table, add the supported comparison finding, and import the benchmark figures. -6. Rebuild and inspect the PDF; verify branch links, payload retrieval and QR codes. +The poster now contains measured outcomes from the retained operational assessments of rounds one and two, plus scientific spatial results from all 48 round-two and round-three analyses. +The original development comparison is not included in these summaries. +The invitation remains to use STAMPED, try the skills and contribute example studies. + +## Completed + +- Corrected reporting recognizes the authorized research and skill revisions while preserving original reports, raw judgments and every individual admission failure. +- The condition table gives each original research run equal weight, uses its designated primary judge and retains separate round summaries. +- Science, checklist and native replay observations have explicit denominators; missing measurements and partial output matches remain distinct. +- Scientific figure code, native maps, coverage, source records and provenance live in the benchmark. +The poster imports verified display copies. +- The formal example is round-two run09. +The variability figure includes twelve analyses per condition from rounds two and three, on 168,285 shared tested voxels. +- The revised PDF is inspected and checked for layout, legible text, links and QR destinations. + +## Remaining integration + +1. Wait for the existing round-three judgments and their closed extraction; launch no new research or judges. +2. Apply the benchmark's [same retained-input reporting procedure](https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/retained-round-reporting), preserving its original rejection report and every remaining failure. +3. Add round three to the benchmark pool, retain all revision-specific and run-level evidence, and regenerate the summary. +4. Import the committed summary with `scripts/import-benchmark-outcomes.py`; rebuild, inspect and publish the updated PDF. +5. Reconcile the final experiment synthesis with the corrected reporting, then close the recurring evidence review. + +The infrastructure history and detailed exclusions belong in the linked research object. +They are not additional poster panels. +The current registered experiment, frozen judging runtime and active coordinator checkout remain unchanged by this reporting work. diff --git a/2026-usrse/stamped-ai-study/data/benchmark-outcomes-source.json b/2026-usrse/stamped-ai-study/data/benchmark-outcomes-source.json new file mode 100644 index 00000000..592d13cf --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/benchmark-outcomes-source.json @@ -0,0 +1,9 @@ +{ + "schema_version": 1, + "repository": "https://github.com/leej3/stamped-in-practice", + "branch": "codex/stamped-poster-analysis", + "revision": "e4127a648c0ca93b360077002478326bd0dfdfc4", + "source": "experiments/retained-round-reporting/pooled/poster-outcomes.json", + "sha256": "ed70a12a7b34e3e335dd3d58e65b88b98946e91b649259b674384ff499ab5011", + "scope": "Display copy; aggregation and run-level evidence remain in the benchmark." +} diff --git a/2026-usrse/stamped-ai-study/data/benchmark-outcomes.json b/2026-usrse/stamped-ai-study/data/benchmark-outcomes.json new file mode 100644 index 00000000..e63dabd7 --- /dev/null +++ b/2026-usrse/stamped-ai-study/data/benchmark-outcomes.json @@ -0,0 +1,466 @@ +{ + "conditions": [ + { + "assigned_runs": 12, + "checklist_evaluated_items_max": 29, + "checklist_evaluated_items_mean": 26.9, + "checklist_evaluated_items_min": 26, + "checklist_mean_met_percent": 21.117496807151976, + "checklist_n": 10, + "checklist_sd_met_percent": 6.314473655054218, + "checklist_status_counts": { + "met": 57, + "not-applicable": 23, + "not-checked": 18, + "partial": 49, + "unmet": 163 + }, + "checklist_unavailable": 2, + "completed_runs": 12, + "condition": "baseline", + "label": "No supplied skills", + "replay_executed_n": 3, + "replay_execution_unobserved_or_unavailable": 9, + "replay_matched_n": 3, + "replay_partial_selected_output_match_n": 0, + "science": { + "not supported": 0, + "qualified": 1, + "supported": 11, + "unable to assess": 0 + }, + "scientific_n": 12, + "scientific_unavailable": 0 + }, + { + "assigned_runs": 12, + "checklist_evaluated_items_max": 29, + "checklist_evaluated_items_mean": 26.666666666666668, + "checklist_evaluated_items_min": 23, + "checklist_mean_met_percent": 23.030110911170382, + "checklist_n": 12, + "checklist_sd_met_percent": 6.224262762375705, + "checklist_status_counts": { + "met": 74, + "not-applicable": 19, + "not-checked": 33, + "partial": 68, + "unmet": 178 + }, + "checklist_unavailable": 0, + "completed_runs": 12, + "condition": "discover-general", + "label": "Find useful skills", + "replay_executed_n": 1, + "replay_execution_unobserved_or_unavailable": 11, + "replay_matched_n": 1, + "replay_partial_selected_output_match_n": 0, + "science": { + "not supported": 0, + "qualified": 2, + "supported": 10, + "unable to assess": 0 + }, + "scientific_n": 12, + "scientific_unavailable": 0 + }, + { + "assigned_runs": 12, + "checklist_evaluated_items_max": 28, + "checklist_evaluated_items_mean": 26.545454545454547, + "checklist_evaluated_items_min": 23, + "checklist_mean_met_percent": 21.93040453910019, + "checklist_n": 11, + "checklist_sd_met_percent": 6.908763214892358, + "checklist_status_counts": { + "met": 64, + "not-applicable": 25, + "not-checked": 24, + "partial": 58, + "unmet": 170 + }, + "checklist_unavailable": 1, + "completed_runs": 12, + "condition": "discover-science", + "label": "Find research skills", + "replay_executed_n": 5, + "replay_execution_unobserved_or_unavailable": 7, + "replay_matched_n": 3, + "replay_partial_selected_output_match_n": 2, + "science": { + "not supported": 1, + "qualified": 5, + "supported": 5, + "unable to assess": 0 + }, + "scientific_n": 11, + "scientific_unavailable": 1 + }, + { + "assigned_runs": 12, + "checklist_evaluated_items_max": 30, + "checklist_evaluated_items_mean": 27, + "checklist_evaluated_items_min": 23, + "checklist_mean_met_percent": 25.52305120333606, + "checklist_n": 12, + "checklist_sd_met_percent": 9.5321858374739, + "checklist_status_counts": { + "met": 83, + "not-applicable": 28, + "not-checked": 20, + "partial": 79, + "unmet": 162 + }, + "checklist_unavailable": 0, + "completed_runs": 12, + "condition": "stamped-explicit", + "label": "Use STAMPED skills", + "replay_executed_n": 4, + "replay_execution_unobserved_or_unavailable": 8, + "replay_matched_n": 2, + "replay_partial_selected_output_match_n": 2, + "science": { + "not supported": 0, + "qualified": 4, + "supported": 8, + "unable to assess": 0 + }, + "scientific_n": 12, + "scientific_unavailable": 0 + } + ], + "config_sha256": "86fc71a4381bcf01aa21e70676d9ab335ce7ae4c51a96721ce2bdb4cfd494d0c", + "definitions": { + "checklist": "For each valid primary response: met/(met+partial+unmet). Average these run fractions equally. Not-checked and not-applicable items do not enter the evaluated-item denominator; their counts remain in the run table.", + "pooling": "Each research run has equal weight; duplicate judges do not replace primaries or increase sample size. Round-specific tables retain revision history.", + "replay": "Native-bound entrypoint execution and explicit selected-output matches on the assessment host, restricted to admitted primary judgments. No execution claim from prose or launcher exit alone. Unobserved or unavailable replay is not failure.", + "science": "Recorded adequacy of the analysis supporting its conclusion, not direction of the neuroscience hypothesis." + }, + "generator_sha256": "fd25a02c0ed317ee7efa9ecd21b203063c4db007d3832e3c6f5d25200ad4a39d", + "retained_rounds": [ + 1, + 2 + ], + "revisions": [ + { + "assessment_series": "narps-neutral-r1-operational-v4", + "research_guidance_commit": "f2e74ea3ed372f966c95692cb0826d56ad5e6a6c", + "round": 1 + }, + { + "assessment_series": "narps-neutral-r2-operational-v4", + "research_guidance_commit": "d83d7d66a9060be6afae57336124afdcfc1743e9", + "round": 2 + } + ], + "round_conditions": [ + { + "assigned_runs": 6, + "checklist_evaluated_items_max": 27, + "checklist_evaluated_items_mean": 26.75, + "checklist_evaluated_items_min": 26, + "checklist_mean_met_percent": 19.65811965811966, + "checklist_n": 4, + "checklist_sd_met_percent": 3.7867810137467974, + "checklist_status_counts": { + "met": 21, + "not-applicable": 11, + "not-checked": 6, + "partial": 13, + "unmet": 73 + }, + "checklist_unavailable": 2, + "completed_runs": 6, + "condition": "baseline", + "label": "No supplied skills", + "replay_executed_n": 2, + "replay_execution_unobserved_or_unavailable": 4, + "replay_matched_n": 2, + "replay_partial_selected_output_match_n": 0, + "round": 1, + "science": { + "not supported": 0, + "qualified": 0, + "supported": 6, + "unable to assess": 0 + }, + "scientific_n": 6, + "scientific_unavailable": 0 + }, + { + "assigned_runs": 6, + "checklist_evaluated_items_max": 29, + "checklist_evaluated_items_mean": 26.5, + "checklist_evaluated_items_min": 23, + "checklist_mean_met_percent": 26.772642118094392, + "checklist_n": 6, + "checklist_sd_met_percent": 7.0202173290947005, + "checklist_status_counts": { + "met": 43, + "not-applicable": 10, + "not-checked": 17, + "partial": 25, + "unmet": 91 + }, + "checklist_unavailable": 0, + "completed_runs": 6, + "condition": "discover-general", + "label": "Find useful skills", + "replay_executed_n": 0, + "replay_execution_unobserved_or_unavailable": 6, + "replay_matched_n": 0, + "replay_partial_selected_output_match_n": 0, + "round": 1, + "science": { + "not supported": 0, + "qualified": 1, + "supported": 5, + "unable to assess": 0 + }, + "scientific_n": 6, + "scientific_unavailable": 0 + }, + { + "assigned_runs": 6, + "checklist_evaluated_items_max": 28, + "checklist_evaluated_items_mean": 26.166666666666668, + "checklist_evaluated_items_min": 23, + "checklist_mean_met_percent": 21.721139837081864, + "checklist_n": 6, + "checklist_sd_met_percent": 7.363264698522647, + "checklist_status_counts": { + "met": 34, + "not-applicable": 16, + "not-checked": 13, + "partial": 24, + "unmet": 99 + }, + "checklist_unavailable": 0, + "completed_runs": 6, + "condition": "discover-science", + "label": "Find research skills", + "replay_executed_n": 3, + "replay_execution_unobserved_or_unavailable": 3, + "replay_matched_n": 3, + "replay_partial_selected_output_match_n": 0, + "round": 1, + "science": { + "not supported": 1, + "qualified": 2, + "supported": 3, + "unable to assess": 0 + }, + "scientific_n": 6, + "scientific_unavailable": 0 + }, + { + "assigned_runs": 6, + "checklist_evaluated_items_max": 30, + "checklist_evaluated_items_mean": 27, + "checklist_evaluated_items_min": 23, + "checklist_mean_met_percent": 22.13030237018243, + "checklist_n": 6, + "checklist_sd_met_percent": 3.1294867482035063, + "checklist_status_counts": { + "met": 36, + "not-applicable": 14, + "not-checked": 10, + "partial": 36, + "unmet": 90 + }, + "checklist_unavailable": 0, + "completed_runs": 6, + "condition": "stamped-explicit", + "label": "Use STAMPED skills", + "replay_executed_n": 2, + "replay_execution_unobserved_or_unavailable": 4, + "replay_matched_n": 2, + "replay_partial_selected_output_match_n": 0, + "round": 1, + "science": { + "not supported": 0, + "qualified": 2, + "supported": 4, + "unable to assess": 0 + }, + "scientific_n": 6, + "scientific_unavailable": 0 + }, + { + "assigned_runs": 6, + "checklist_evaluated_items_max": 29, + "checklist_evaluated_items_mean": 27, + "checklist_evaluated_items_min": 26, + "checklist_mean_met_percent": 22.09041490650686, + "checklist_n": 6, + "checklist_sd_met_percent": 7.767052492475633, + "checklist_status_counts": { + "met": 36, + "not-applicable": 12, + "not-checked": 12, + "partial": 36, + "unmet": 90 + }, + "checklist_unavailable": 0, + "completed_runs": 6, + "condition": "baseline", + "label": "No supplied skills", + "replay_executed_n": 1, + "replay_execution_unobserved_or_unavailable": 5, + "replay_matched_n": 1, + "replay_partial_selected_output_match_n": 0, + "round": 2, + "science": { + "not supported": 0, + "qualified": 1, + "supported": 5, + "unable to assess": 0 + }, + "scientific_n": 6, + "scientific_unavailable": 0 + }, + { + "assigned_runs": 6, + "checklist_evaluated_items_max": 28, + "checklist_evaluated_items_mean": 26.833333333333332, + "checklist_evaluated_items_min": 24, + "checklist_mean_met_percent": 19.287579704246372, + "checklist_n": 6, + "checklist_sd_met_percent": 1.5271006207749773, + "checklist_status_counts": { + "met": 31, + "not-applicable": 9, + "not-checked": 16, + "partial": 43, + "unmet": 87 + }, + "checklist_unavailable": 0, + "completed_runs": 6, + "condition": "discover-general", + "label": "Find useful skills", + "replay_executed_n": 1, + "replay_execution_unobserved_or_unavailable": 5, + "replay_matched_n": 1, + "replay_partial_selected_output_match_n": 0, + "round": 2, + "science": { + "not supported": 0, + "qualified": 1, + "supported": 5, + "unable to assess": 0 + }, + "scientific_n": 6, + "scientific_unavailable": 0 + }, + { + "assigned_runs": 6, + "checklist_evaluated_items_max": 28, + "checklist_evaluated_items_mean": 27, + "checklist_evaluated_items_min": 26, + "checklist_mean_met_percent": 22.18152218152218, + "checklist_n": 5, + "checklist_sd_met_percent": 7.170141313935277, + "checklist_status_counts": { + "met": 30, + "not-applicable": 9, + "not-checked": 11, + "partial": 34, + "unmet": 71 + }, + "checklist_unavailable": 1, + "completed_runs": 6, + "condition": "discover-science", + "label": "Find research skills", + "replay_executed_n": 2, + "replay_execution_unobserved_or_unavailable": 4, + "replay_matched_n": 0, + "replay_partial_selected_output_match_n": 2, + "round": 2, + "science": { + "not supported": 0, + "qualified": 3, + "supported": 2, + "unable to assess": 0 + }, + "scientific_n": 5, + "scientific_unavailable": 1 + }, + { + "assigned_runs": 6, + "checklist_evaluated_items_max": 29, + "checklist_evaluated_items_mean": 27, + "checklist_evaluated_items_min": 24, + "checklist_mean_met_percent": 28.915800036489692, + "checklist_n": 6, + "checklist_sd_met_percent": 12.746692613907557, + "checklist_status_counts": { + "met": 47, + "not-applicable": 14, + "not-checked": 10, + "partial": 43, + "unmet": 72 + }, + "checklist_unavailable": 0, + "completed_runs": 6, + "condition": "stamped-explicit", + "label": "Use STAMPED skills", + "replay_executed_n": 2, + "replay_execution_unobserved_or_unavailable": 4, + "replay_matched_n": 0, + "replay_partial_selected_output_match_n": 2, + "round": 2, + "science": { + "not supported": 0, + "qualified": 2, + "supported": 4, + "unable to assess": 0 + }, + "scientific_n": 6, + "scientific_unavailable": 0 + } + ], + "schema_version": 1, + "scope": "One selected operational assessment series per round; original primaries only, every assigned run retained.", + "sources": [ + { + "path": "round-01/analysis/runs.jsonl", + "round": 1, + "sha256": "13873f2a0cbc91d4e98aef14887f805d9cb5bcf25bf0203a9338c1487940858a" + }, + { + "path": "round-01/analysis/judgments.jsonl", + "round": 1, + "sha256": "913293575d82499aef62cbd46300c66baff30a568d24f7825dcb521a24466683" + }, + { + "path": "round-01/analysis/items.jsonl", + "round": 1, + "sha256": "bed06782e4b3609d9a5623607ad841a112fbed4aacdaf951a086bd877920c917" + }, + { + "path": "round-01/final-replay-audit-01/result.json", + "round": 1, + "sha256": "a1e0bd99527a7244860ebe7f699840f9425d1d447e9d268f34ba42d1de5e4ae3" + }, + { + "path": "round-02/analysis/runs.jsonl", + "round": 2, + "sha256": "6c4fa1a3daea5a5b43814ceee425c967e2bfbc5968646bb8fa7c4cc582fbdd6c" + }, + { + "path": "round-02/analysis/judgments.jsonl", + "round": 2, + "sha256": "f4b93d3c975e6f2724a262ddc69e5d3d3ecf9a78eeae85c9a31a7550e0e091e8" + }, + { + "path": "round-02/analysis/items.jsonl", + "round": 2, + "sha256": "67d50c7be0acc06ef12f8cd549f079bf26b8c825ee4ffabfb1c807f8ff4eb222" + }, + { + "path": "round-02/replay-native-observations.json", + "round": 2, + "sha256": "8288cc35c2656a4ce2e0dd479445ebb55e3822fe0925fba518540c470205c4c4" + } + ] +} diff --git a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json index 1d01eee6..1ac5cb4c 100644 --- a/2026-usrse/stamped-ai-study/exports/agent-visual-review.json +++ b/2026-usrse/stamped-ai-study/exports/agent-visual-review.json @@ -1,19 +1,18 @@ { - "reviewer": "Codex agent; independent editorial and visual review by a second agent", - "author_review": false, - "pdf_sha256": "eb7e1c194d8d0b524911112f51056bcf7dda30a85e6707d25995a78c10575ef8", - "preview_sha256": "e884e10d04b96f627757365ec2e6adb0346d8ec9c65ea3afdc5f43fa77a0be75", - "reviewed_utc": "2026-10-16T14:02:19.247244+00:00", - "checks": [ - "Inspected the current full-page PDF raster preview", - "Experiment framing remains in the blue banner; principles remain down the left column", - "Two linked methodological lessons fit below the research-object section", - "Lessons distinguish worker choice from coordinator preservation and describe reassessment of unchanged deliveries", - "Supporting notes distinguish the later neutral comparison from the earlier scientific illustrations", - "Both scientific figures remain verified display copies from the benchmark repository", - "Three columns, captions, invitation and footer fit without clipping or overlap", - "All 30 links pass and use named branches for GitHub evidence navigation", - "Four QR codes decode from PDF pixels; all PDF text meets the 24 pt minimum" + "checked_utc": "2026-10-16T17:43:58.925314+00:00", + "reviewer": "Codex", + "files": { + "index.html": "c219353135bbb4f0266d19614bab42124fcc6a5aad0fcb792794a8841baadb66", + "poster.css": "f0399ef01d8bafa3ee991dbd6dda78611ec75c47a10c3b9a09d62724555f0c9d", + "exports/stamped-ai-poster.pdf": "c84506453c5eac6a034baee8bc31741830f639cc6a674cce708373c0fbc8ce9c", + "exports/pdf-preview.png": "88711415d6cacc8af484ea5e1ae6644c794d20daa14ac40f9b6cf6a78d47e8cb" + }, + "observations": [ + "Inspected the rendered PDF preview: no overlaps, clipping or unreadable labels.", + "Blue experiment banner leads; STAMPED principles remain in the left column.", + "Compact four-condition table displays imported primary summaries and explicit measurement denominators.", + "Scientific example is formal round-two run 09; variability figure covers 48 round-two/three analyses.", + "Infrastructure corrections and rejection details remain linked in the benchmark, outside the poster." ], - "result": "passed" + "passed": true } diff --git a/2026-usrse/stamped-ai-study/exports/html-audit.json b/2026-usrse/stamped-ai-study/exports/html-audit.json index e7fc039c..f5e41739 100644 --- a/2026-usrse/stamped-ai-study/exports/html-audit.json +++ b/2026-usrse/stamped-ai-study/exports/html-audit.json @@ -4,7 +4,7 @@ "height": 4224 }, "minimum_text_px": 32, - "text_node_count": 153, + "text_node_count": 163, "small": [], "outside": [], "regionOverflow": [], @@ -38,12 +38,12 @@ { "src": "figures/narps-group-map.svg", "loaded": true, - "href": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", + "href": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace", "rect": { "x": 1270.21875, - "y": 1368.8125, + "y": 1354.8125, "width": 1328.609375, - "height": 629.84375 + "height": 688.90625 } }, { @@ -52,9 +52,9 @@ "href": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", "rect": { "x": 1270.21875, - "y": 2535.5, + "y": 2517.96875, "width": 1328.609375, - "height": 856.203125 + "height": 925.09375 } }, { @@ -71,7 +71,7 @@ { "src": "assets/stamped-qr-skills.svg", "loaded": true, - "href": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", + "href": "https://github.com/con/skills/tree/codex/narps-round3-research-guidance/skills", "rect": { "x": 3913, "y": 3658.59375, @@ -136,7 +136,7 @@ }, { "name": "skills", - "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", + "url": "https://github.com/con/skills/tree/codex/narps-round3-research-guidance/skills", "rect": { "x": 3913, "y": 3658.59375, @@ -158,32 +158,33 @@ "links": [ "https://dev.centerforopenneuroscience.org/", "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", - "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", - "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", - "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", - "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", - "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", + "https://github.com/con/skills/tree/codex/narps-round3-research-guidance/skills", + "https://github.com/con/skills/blob/codex/narps-round3-research-guidance/skills/do-full-research-loop/SKILL.md", + "https://github.com/con/skills/blob/codex/pr26-neutral-assessor/skills/assess-alignment-with-stamped-principles/SKILL.md", + "https://github.com/con/skills/blob/codex/narps-round3-research-guidance/skills/align-with-stamped-principles/SKILL.md", + "https://github.com/con/skills/blob/codex/narps-round3-research-guidance/skills/create-stamped-project/SKILL.md", "https://checklist.stamped-principles.org/", "https://pubmed.ncbi.nlm.nih.gov/17255512/", "https://doi.org/10.1038/s41586-020-2314-9", "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", "https://neurovault.org/collections/4932/", "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", - "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", + "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace", + "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace/analysis/run_group.py", + "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace/results/summary.json", "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/render_narps_spatial.py", "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial", "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", "https://github.com/leej3/stamped-in-practice/tree/main/iterations", + "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/retained-round-reporting/pooled", "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", - "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-v1/procedure.json", - "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", - "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1", + "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/procedure.json", + "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace/report.md", + "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-neutral-v1", "https://github.com/leej3/stamped-in-practice", "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md", - "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md", + "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-neutral-v1/skill-reflection", "https://pbs.dartmouth.edu/", "https://www.repronim.org/" ], @@ -205,7 +206,7 @@ "x": 2690.828125, "y": 1174.5, "width": 1445.15625, - "height": 620.375 + "height": 823.5625 } }, { @@ -213,7 +214,7 @@ "class": "ruled evidence-section", "rect": { "x": 2690.828125, - "y": 1866.875, + "y": 2070.0625, "width": 1445.15625, "height": 864.65625 } @@ -223,26 +224,29 @@ "class": "ruled lessons-section", "rect": { "x": 2690.828125, - "y": 2757.53125, + "y": 2960.71875, "width": 1445.15625, - "height": 795.90625 + "height": 575.53125 } } ], "browser": "151.0.7922.34", - "created_utc": "2026-10-16T14:00:14.822Z", + "created_utc": "2026-10-16T17:41:09.580Z", "source_sha256": { - "index.html": "00d74b8b91af44d572a664571977cd2bfc5d6d553300b6b7b226b750285da525", + "index.html": "c219353135bbb4f0266d19614bab42124fcc6a5aad0fcb792794a8841baadb66", "template.css": "e8c4ec782936e242e824c49305dba2add22c54257c652380f95852006d0ea845", - "poster.css": "352b253e7fa7fdf56f165fdbb053f0233a6e26900fa9303811685efc7082871d", - "build-poster.cjs": "3c392e51ef7a2151447fa6fe0e934ef77b7926086923e10a9b938fe4ba9d0a1a", + "poster.css": "f0399ef01d8bafa3ee991dbd6dda78611ec75c47a10c3b9a09d62724555f0c9d", + "build-poster.cjs": "878a2b50e848d0d8775c3c2ec63378def4d302f1e546d0ee438d66559da065de", "verify-pdf.py": "e0375281137d158da636f5faf8c3eb40d0bfbacdac848400157c181f2e0c479c", "verify-links.py": "d7d8139a9c7bdc95deb2300eb97c9b5cf3ec20434e5a67ace59b09ab8d9c4e4c", - "make-logo-qrs.py": "7d7b2cd508a25f0e15d7674caee7061aaacf6d5eb32d9371df8433f94c42257c", + "make-logo-qrs.py": "c66c1f5af9422b96eaee726f91df10e20e301707d704d2787432c91b830f4632", "source-manifest.json": "4690c150b8f52f8311d4dbb83caceea4abeb753513b104c9dc9ca33c8a90f3ea", - "figures/benchmark-source.json": "fb70d4d7caf1a7ebe4cad0a54d83415f1447e3d18d3bd1953c1c5492237a8445", + "figures/benchmark-source.json": "e62324959d9a633d24f5f7e0bddb43b47767cebb488c5b8412ca92fef60f022b", "scripts/import-benchmark-figures.py": "c634739fdfae9eca4e21d00b1ce392f1d387f8df2206d7f856c8a4cd4fca2106", - "pixi.toml": "64d54f1fac88141849c2308803b01d5144b6dc1d89638e97d9646790d934c50f", + "scripts/import-benchmark-outcomes.py": "b1310fed5a1bbf6b9549368d497496599dadb88e513acc69d3481a212e5bb556", + "data/benchmark-outcomes.json": "ed70a12a7b34e3e335dd3d58e65b88b98946e91b649259b674384ff499ab5011", + "data/benchmark-outcomes-source.json": "334d6e95d6840d1a9799d8435d82cd02b4f79ae50d22cd97e4f6d073ce70deb8", + "pixi.toml": "8d593bb8c5e1495e07831d33a21d84bcb94183624749b2861d89875e74258a70", "package-lock.json": "c4a27d1390a90be1fed6dd2c6f713f8b9ecfb49f5721656de4db136af2307cdc" }, "errors": [] diff --git a/2026-usrse/stamped-ai-study/exports/link-audit.json b/2026-usrse/stamped-ai-study/exports/link-audit.json index 69426c41..20610658 100644 --- a/2026-usrse/stamped-ai-study/exports/link-audit.json +++ b/2026-usrse/stamped-ai-study/exports/link-audit.json @@ -1,11 +1,11 @@ { - "html_audit_sha256": "a515bf5406e5433079a204fa1e4f486838c4692a45b8bf189c525333a14b0176", - "checked_at": "2026-10-16T14:00:54.779630+00:00", + "html_audit_sha256": "57e5d54be979e61dbdbd366e408234d9f41f15113b85d68be6531e7604fd4d22", + "checked_at": "2026-10-16T17:41:22.034385+00:00", "authentication": "none", "results": [ { "url": "https://checklist.stamped-principles.org/", - "checked_at": "2026-10-16T14:00:47.535967+00:00", + "checked_at": "2026-10-16T17:41:17.637521+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://checklist.stamped-principles.org/", @@ -13,7 +13,7 @@ }, { "url": "https://dev.centerforopenneuroscience.org/", - "checked_at": "2026-10-16T14:00:47.536200+00:00", + "checked_at": "2026-10-16T17:41:17.637885+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://dev.centerforopenneuroscience.org/", @@ -21,63 +21,63 @@ }, { "url": "https://doi.org/10.1038/s41586-020-2314-9", - "checked_at": "2026-10-16T14:00:47.536285+00:00", + "checked_at": "2026-10-16T17:41:17.637983+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=df11cfec-1ce3-4d61-9dcd-ebd6b922b149", + "final_url": "https://www.nature.com/articles/s41586-020-2314-9?error=cookies_not_supported&code=53ed44ad-7647-4efa-8b22-168c134d94a2", "passed": true }, { "url": "https://doi.org/10.18112/openneuro.ds001734.v1.0.4", - "checked_at": "2026-10-16T14:00:47.536346+00:00", + "checked_at": "2026-10-16T17:41:17.638046+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://openneuro.org/datasets/ds001734/versions/1.0.4", "passed": true }, { - "url": "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T14:00:47.816199+00:00", + "url": "https://github.com/con/skills/blob/codex/narps-round3-research-guidance/skills/align-with-stamped-principles/SKILL.md", + "checked_at": "2026-10-16T17:41:17.834548+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/blob/codex/pr26-assessment-evidence/skills/assess-alignment-with-stamped-principles/SKILL.md", + "final_url": "https://github.com/con/skills/blob/codex/narps-round3-research-guidance/skills/align-with-stamped-principles/SKILL.md", "passed": true }, { - "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", - "checked_at": "2026-10-16T14:00:47.893100+00:00", + "url": "https://github.com/con/skills/blob/codex/narps-round3-research-guidance/skills/create-stamped-project/SKILL.md", + "checked_at": "2026-10-16T17:41:17.846488+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/align-with-stamped-principles/SKILL.md", + "final_url": "https://github.com/con/skills/blob/codex/narps-round3-research-guidance/skills/create-stamped-project/SKILL.md", "passed": true }, { - "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", - "checked_at": "2026-10-16T14:00:48.172130+00:00", + "url": "https://github.com/con/skills/blob/codex/narps-round3-research-guidance/skills/do-full-research-loop/SKILL.md", + "checked_at": "2026-10-16T17:41:18.178653+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/create-stamped-project/SKILL.md", + "final_url": "https://github.com/con/skills/blob/codex/narps-round3-research-guidance/skills/do-full-research-loop/SKILL.md", "passed": true }, { - "url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", - "checked_at": "2026-10-16T14:00:48.590167+00:00", + "url": "https://github.com/con/skills/blob/codex/pr26-neutral-assessor/skills/assess-alignment-with-stamped-principles/SKILL.md", + "checked_at": "2026-10-16T17:41:18.423210+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/blob/codex/pr26-operational-environment/skills/do-full-research-loop/SKILL.md", + "final_url": "https://github.com/con/skills/blob/codex/pr26-neutral-assessor/skills/assess-alignment-with-stamped-principles/SKILL.md", "passed": true }, { - "url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", - "checked_at": "2026-10-16T14:00:48.723187+00:00", + "url": "https://github.com/con/skills/tree/codex/narps-round3-research-guidance/skills", + "checked_at": "2026-10-16T17:41:18.434946+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", + "final_url": "https://github.com/con/skills/tree/codex/narps-round3-research-guidance/skills", "passed": true }, { "url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", - "checked_at": "2026-10-16T14:00:48.852084+00:00", + "checked_at": "2026-10-16T17:41:18.720677+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/con/talks/tree/codex/stamped-example-poster/2026-usrse/stamped-ai-study", @@ -85,63 +85,55 @@ }, { "url": "https://github.com/leej3/stamped-in-practice", - "checked_at": "2026-10-16T14:00:49.196212+00:00", + "checked_at": "2026-10-16T17:41:18.816385+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md", - "checked_at": "2026-10-16T14:00:49.570180+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/procedure.json", + "checked_at": "2026-10-16T17:41:18.940513+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/assessment-series/narps-neutral-r1-operational-v4/synthesis/viability.md", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/procedure.json", "passed": true }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md", - "checked_at": "2026-10-16T14:00:49.577065+00:00", + "checked_at": "2026-10-16T17:41:19.202358+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-neutral-v1/registration.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-v1/procedure.json", - "checked_at": "2026-10-16T14:00:49.609074+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace/analysis/run_group.py", + "checked_at": "2026-10-16T17:41:19.331824+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/iteration-narps-v1/procedure.json", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace/analysis/run_group.py", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", - "checked_at": "2026-10-16T14:00:49.914150+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace/report.md", + "checked_at": "2026-10-16T17:41:19.469525+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/report.md", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace/report.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", - "checked_at": "2026-10-16T14:00:50.158126+00:00", + "url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace/results/summary.json", + "checked_at": "2026-10-16T17:41:19.611557+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/results/results.json", - "passed": true - }, - { - "url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", - "checked_at": "2026-10-16T14:00:50.208142+00:00", - "method": "HEAD", - "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/narps-r1-09/scripts/analyze_gain.py", + "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace/results/summary.json", "passed": true }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/render_narps_spatial.py", - "checked_at": "2026-10-16T14:00:50.221033+00:00", + "checked_at": "2026-10-16T17:41:19.790592+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/stamped-poster-analysis/scripts/render_narps_spatial.py", @@ -149,7 +141,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", - "checked_at": "2026-10-16T14:00:50.523204+00:00", + "checked_at": "2026-10-16T17:41:19.917903+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/sources.json", @@ -157,7 +149,7 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", - "checked_at": "2026-10-16T14:00:50.724194+00:00", + "checked_at": "2026-10-16T17:41:19.995889+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/codex/study-narps/input/study-task.md", @@ -165,31 +157,31 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", - "checked_at": "2026-10-16T14:00:50.909166+00:00", + "checked_at": "2026-10-16T17:41:20.151582+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/blob/main/comparison-plan.md", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1", - "checked_at": "2026-10-16T14:00:50.933174+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-neutral-v1", + "checked_at": "2026-10-16T17:41:20.338403+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-v1", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-neutral-v1", "passed": true }, { - "url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", - "checked_at": "2026-10-16T14:00:51.122184+00:00", + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-neutral-v1/skill-reflection", + "checked_at": "2026-10-16T17:41:20.447639+00:00", "method": "HEAD", "http_status": 200, - "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/narps-r1-09/results", + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/iteration-narps-neutral-v1/skill-reflection", "passed": true }, { "url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", - "checked_at": "2026-10-16T14:00:51.241129+00:00", + "checked_at": "2026-10-16T17:41:20.461585+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/figures", @@ -197,15 +189,31 @@ }, { "url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial", - "checked_at": "2026-10-16T14:00:51.503153+00:00", + "checked_at": "2026-10-16T17:41:20.736674+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial", "passed": true }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace", + "checked_at": "2026-10-16T17:41:20.858458+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/narps-poster/map-inputs/spatial/sources/narps-neutral-r2-09/workspace", + "passed": true + }, + { + "url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/retained-round-reporting/pooled", + "checked_at": "2026-10-16T17:41:20.916165+00:00", + "method": "HEAD", + "http_status": 200, + "final_url": "https://github.com/leej3/stamped-in-practice/tree/codex/stamped-poster-analysis/experiments/retained-round-reporting/pooled", + "passed": true + }, { "url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", - "checked_at": "2026-10-16T14:00:51.560077+00:00", + "checked_at": "2026-10-16T17:41:20.920628+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://github.com/leej3/stamped-in-practice/tree/main/iterations", @@ -213,7 +221,7 @@ }, { "url": "https://neurovault.org/collections/4932/", - "checked_at": "2026-10-16T14:00:51.680302+00:00", + "checked_at": "2026-10-16T17:41:21.250454+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://neurovault.org/collections/4932/", @@ -221,7 +229,7 @@ }, { "url": "https://pbs.dartmouth.edu/", - "checked_at": "2026-10-16T14:00:51.818211+00:00", + "checked_at": "2026-10-16T17:41:21.321703+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://pbs.dartmouth.edu/", @@ -229,7 +237,7 @@ }, { "url": "https://pubmed.ncbi.nlm.nih.gov/17255512/", - "checked_at": "2026-10-16T14:00:52.085583+00:00", + "checked_at": "2026-10-16T17:41:21.349465+00:00", "method": "HEAD", "http_status": 203, "final_url": "https://pubmed.ncbi.nlm.nih.gov/17255512/", @@ -237,7 +245,7 @@ }, { "url": "https://www.repronim.org/", - "checked_at": "2026-10-16T14:00:52.093210+00:00", + "checked_at": "2026-10-16T17:41:21.381535+00:00", "method": "HEAD", "http_status": 200, "final_url": "https://repronim.org/", diff --git a/2026-usrse/stamped-ai-study/exports/pdf-audit.json b/2026-usrse/stamped-ai-study/exports/pdf-audit.json index 29226f7c..4eadd31c 100644 --- a/2026-usrse/stamped-ai-study/exports/pdf-audit.json +++ b/2026-usrse/stamped-ai-study/exports/pdf-audit.json @@ -1,5 +1,5 @@ { - "pdf_sha256": "eb7e1c194d8d0b524911112f51056bcf7dda30a85e6707d25995a78c10575ef8", + "pdf_sha256": "c84506453c5eac6a034baee8bc31741830f639cc6a674cce708373c0fbc8ce9c", "page_count": 1, "page_points": [ 3168.0, @@ -8,9 +8,9 @@ "minimum_html_text_px": 32, "minimum_html_text_pt": 24.0, "minimum_pdf_text_pt": 24.0, - "inspected_pdf_text_runs": 228, - "link_annotation_count": 37, - "unique_expected_links": 30, + "inspected_pdf_text_runs": 237, + "link_annotation_count": 38, + "unique_expected_links": 31, "missing_links": [], "raster_dpi": 150, "qr_results": [ @@ -38,12 +38,12 @@ }, { "name": "skills", - "expected": "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills", + "expected": "https://github.com/con/skills/tree/codex/narps-round3-research-guidance/skills", "decoded": [ - "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + "https://github.com/con/skills/tree/codex/narps-round3-research-guidance/skills" ], "decoded_rotated": [ - "https://github.com/con/skills/tree/codex/pr26-operational-environment/skills" + "https://github.com/con/skills/tree/codex/narps-round3-research-guidance/skills" ], "passed": true }, diff --git a/2026-usrse/stamped-ai-study/exports/pdf-preview.png b/2026-usrse/stamped-ai-study/exports/pdf-preview.png index a7e48c9a..e7173a76 120000 --- a/2026-usrse/stamped-ai-study/exports/pdf-preview.png +++ b/2026-usrse/stamped-ai-study/exports/pdf-preview.png @@ -1 +1 @@ -../../../.git/annex/objects/0x/61/MD5E-s1113227--e409190c803eba9bf21df3e1be969146.png/MD5E-s1113227--e409190c803eba9bf21df3e1be969146.png \ No newline at end of file +../../../.git/annex/objects/49/j3/MD5E-s1097314--fab1b82faec92bf7d011bd7ff0ded6e6.png/MD5E-s1097314--fab1b82faec92bf7d011bd7ff0ded6e6.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json index 6e2bfead..eb51ec69 100644 --- a/2026-usrse/stamped-ai-study/exports/retrieval-audit.json +++ b/2026-usrse/stamped-ai-study/exports/retrieval-audit.json @@ -1,127 +1,133 @@ { - "checked_utc": "2026-10-16T15:11:51.055227+00:00", + "checked_utc": "2026-10-16T17:43:58.925314+00:00", "authentication": "none", - "method": "download and compare full payload SHA-256", + "method": "Full annex payload download and SHA-256 comparison; ordinary Git source identities separately identified", "files": [ { - "path": "assets/stamped-qr-skills.svg", - "key": "MD5E-s71083--8f66e387d1e50c94a14c747cc1a363ab.svg", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s71083--8f66e387d1e50c94a14c747cc1a363ab.svg", - "sha256": "3256be5b0c21a68881a5259ac190ccf30684d8bc25ae8b2d3085fbcc8687a03c", - "bytes": 71083, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", + "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", + "bytes": 379034, + "key": "MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", + "storage": "annex", + "downloaded_sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", + "downloaded_bytes": 379034, + "passed": true }, { - "path": "assets/stamped-qr-poster.svg", - "key": "MD5E-s72488--fcda447d1d4515e37ed70c0359039be9.svg", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s72488--fcda447d1d4515e37ed70c0359039be9.svg", - "sha256": "28439d899807c61b06977e9359fc6ec6766d7fb78e504c282389d9ca9a90dbdc", - "bytes": 72488, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "../orinoco-lite/assets/con-logo-outlined.svg", + "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", + "bytes": 125811, + "key": "MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", + "storage": "annex", + "downloaded_sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", + "downloaded_bytes": 125811, + "passed": true }, { - "path": "assets/stamped-qr-study.svg", - "key": "MD5E-s67623--fad8037a2c4eac1c81b0f96a75bb69e2.svg", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s67623--fad8037a2c4eac1c81b0f96a75bb69e2.svg", - "sha256": "771b6b0ca8b7efac41a536648d8f17f4d4ff63fcc8b5d4d2a6ae51f7db0a891e", - "bytes": 67623, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "../orinoco-lite/assets/orinoco-qr-con.svg", + "sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", + "bytes": 67605, + "storage": "Git", + "check": "Local source identity; published with poster branch", + "passed": true }, { - "path": "figures/narps-group-map.png", - "key": "MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png", - "sha256": "c35b14d41d0b3496c6247d6dbc14db9c2f1e4009764d7370e07b0ec8f013e7b7", - "bytes": 136105, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "../orinoco-lite/assets/repronim_logo.svg", + "sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", + "bytes": 33939, + "storage": "Git", + "check": "Local source identity; published with poster branch", + "passed": true }, { - "path": "figures/narps-spatial-agreement.svg", - "key": "MD5E-s142319--635c889a2b6a58de2a5c8aa69f11e8e4.svg", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s142319--635c889a2b6a58de2a5c8aa69f11e8e4.svg", - "sha256": "7f7d3d44bacbbe6a8a911d89859fb7612ae3875bf35217efcc85b4891c6af790", - "bytes": 142319, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "assets/stamped-qr-poster.svg", + "sha256": "28439d899807c61b06977e9359fc6ec6766d7fb78e504c282389d9ca9a90dbdc", + "bytes": 72488, + "storage": "Git", + "check": "Local source identity; published with poster branch", + "passed": true }, { - "path": "figures/narps-spatial-agreement.png", - "key": "MD5E-s166353--6c8e79de1133a513b18c6123e3db1e71.png", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s166353--6c8e79de1133a513b18c6123e3db1e71.png", - "sha256": "f93b8a67c4d714622d891934546a1b384d99c7e3e32cc4fa42b06375f7355bf8", - "bytes": 166353, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "assets/stamped-qr-skills.svg", + "sha256": "4c043504b993958fa5250cbeae04f40ae7fa28ed18fd4ff6a634fe55290460b3", + "bytes": 71319, + "key": "MD5E-s71319--3a2ac51ee9d25a2a98c5067806447aec.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s71319--3a2ac51ee9d25a2a98c5067806447aec.svg", + "storage": "annex", + "downloaded_sha256": "4c043504b993958fa5250cbeae04f40ae7fa28ed18fd4ff6a634fe55290460b3", + "downloaded_bytes": 71319, + "passed": true }, { - "path": "exports/stamped-ai-poster.pdf", - "key": "MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf", - "sha256": "eb7e1c194d8d0b524911112f51056bcf7dda30a85e6707d25995a78c10575ef8", - "bytes": 841738, - "passed": true, - "checked_utc": "2026-10-16T15:11:50.961999+00:00", - "status": "verified", - "http_status": 200, - "retrieved_bytes": 841738, - "retrieved_sha256": "eb7e1c194d8d0b524911112f51056bcf7dda30a85e6707d25995a78c10575ef8" + "path": "assets/stamped-qr-study.svg", + "sha256": "771b6b0ca8b7efac41a536648d8f17f4d4ff63fcc8b5d4d2a6ae51f7db0a891e", + "bytes": 67623, + "storage": "Git", + "check": "Local source identity; published with poster branch", + "passed": true }, { "path": "exports/pdf-preview.png", - "key": "MD5E-s1113227--e409190c803eba9bf21df3e1be969146.png", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s1113227--e409190c803eba9bf21df3e1be969146.png", - "sha256": "e884e10d04b96f627757365ec2e6adb0346d8ec9c65ea3afdc5f43fa77a0be75", - "bytes": 1113227, - "passed": true, - "checked_utc": "2026-10-16T15:11:51.054258+00:00", - "status": "verified", - "http_status": 200, - "retrieved_bytes": 1113227, - "retrieved_sha256": "e884e10d04b96f627757365ec2e6adb0346d8ec9c65ea3afdc5f43fa77a0be75" + "sha256": "88711415d6cacc8af484ea5e1ae6644c794d20daa14ac40f9b6cf6a78d47e8cb", + "bytes": 1097314, + "storage": "Git", + "check": "Local source identity; published with poster branch", + "passed": true }, { - "path": "../orinoco-lite/assets/con-logo-outlined.svg", - "key": "MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s125811--5429db5139ba49cc5a94dceb1532abe0.svg", - "sha256": "076adc1bf4e2d9dba5983e22f753f562a7408c8a3393adea281c5478f64f7ee1", - "bytes": 125811, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "exports/stamped-ai-poster.pdf", + "sha256": "c84506453c5eac6a034baee8bc31741830f639cc6a674cce708373c0fbc8ce9c", + "bytes": 857856, + "key": "MD5E-s857856--47b3904e1be7ccc9f35de93dc2a178f2.pdf", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s857856--47b3904e1be7ccc9f35de93dc2a178f2.pdf", + "storage": "annex", + "downloaded_sha256": "c84506453c5eac6a034baee8bc31741830f639cc6a674cce708373c0fbc8ce9c", + "downloaded_bytes": 857856, + "passed": true }, { - "path": "../orinoco-lite/assets/con-ccn-dartmouth-letterhead.svg", - "key": "MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", - "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s379034--be7ae71a14ff2301bb0cf1cde08457e9.svg", - "sha256": "69dfcc6cd70367b7a03b19982589ac7d2180fdf6723bbb17ae2361c6c356d625", - "bytes": 379034, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "figures/narps-group-map.png", + "sha256": "3811568c61a663fab1787818793be71826bd71ad716aaf126e28bfbf34ffb6f6", + "bytes": 147376, + "key": "MD5E-s147376--edb524418ea5236eed62734e960ce400.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s147376--edb524418ea5236eed62734e960ce400.png", + "storage": "annex", + "downloaded_sha256": "3811568c61a663fab1787818793be71826bd71ad716aaf126e28bfbf34ffb6f6", + "downloaded_bytes": 147376, + "passed": true }, { - "path": "../orinoco-lite/assets/repronim_logo.svg", - "key": null, - "url": "https://raw.githubusercontent.com/con/talks/codex/stamped-example-poster/2026-usrse/orinoco-lite/assets/repronim_logo.svg", - "sha256": "0e1101fa2dca811587d0ad4caa040961da5156e11b9b23f64f29ca3463d84870", - "bytes": 33939, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "figures/narps-group-map.svg", + "sha256": "52075a4d64f04dc92a685ecccae059220d178bfbb0c7ffbb8d7a98dd68ca7070", + "bytes": 85237, + "storage": "Git", + "check": "Local source identity; published with poster branch", + "passed": true }, { - "path": "../orinoco-lite/assets/orinoco-qr-con.svg", - "key": null, - "url": "https://raw.githubusercontent.com/con/talks/codex/stamped-example-poster/2026-usrse/orinoco-lite/assets/orinoco-qr-con.svg", - "sha256": "9f5725bea98bf4b3b4b4a9479bdc734529b19db205089b291ee86e43320b1d49", - "bytes": 67605, - "passed": true, - "checked_utc": "2026-10-16T05:48:40.738147+00:00" + "path": "figures/narps-spatial-agreement.png", + "sha256": "6fec749b6442244b49dfe51beb8391bb9b288339ea6d8cb7524edc5d41fbcbff", + "bytes": 214622, + "key": "MD5E-s214622--e69cf5666eea13d942de8b3ed7d6eef6.png", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s214622--e69cf5666eea13d942de8b3ed7d6eef6.png", + "storage": "annex", + "downloaded_sha256": "6fec749b6442244b49dfe51beb8391bb9b288339ea6d8cb7524edc5d41fbcbff", + "downloaded_bytes": 214622, + "passed": true + }, + { + "path": "figures/narps-spatial-agreement.svg", + "sha256": "a61474cf047a403276e32d416efa896495828b46c7fb24c2a11de9578a2d8ecd", + "bytes": 146605, + "key": "MD5E-s146605--127f77cb852e1b3dff0a293f2e9db479.svg", + "url": "https://hub.centerforopenneuroscience.org/git-annex-p2phttp/git-annex/40d344f5-0628-494e-82e4-9fab0949ed12/key/MD5E-s146605--127f77cb852e1b3dff0a293f2e9db479.svg", + "storage": "annex", + "downloaded_sha256": "a61474cf047a403276e32d416efa896495828b46c7fb24c2a11de9578a2d8ecd", + "downloaded_bytes": 146605, + "passed": true } ], - "all_passed": true, - "updated_utc": "2026-10-16T15:11:51.055227+00:00", - "pending_uploads": [], - "scope": "Current PDF and preview downloaded anonymously and verified byte-for-byte. Unchanged assets retain their earlier retrieval checks at the per-file times shown." + "all_passed": true } diff --git a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf index 5e8d1e9c..c57624e7 120000 --- a/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf +++ b/2026-usrse/stamped-ai-study/exports/stamped-ai-poster.pdf @@ -1 +1 @@ -../../../.git/annex/objects/9p/wV/MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf/MD5E-s841738--411e41cdacf46c5470b4678d695d6d5c.pdf \ No newline at end of file +../../../.git/annex/objects/x2/wv/MD5E-s857856--47b3904e1be7ccc9f35de93dc2a178f2.pdf/MD5E-s857856--47b3904e1be7ccc9f35de93dc2a178f2.pdf \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/benchmark-source.json b/2026-usrse/stamped-ai-study/figures/benchmark-source.json index 63a83b24..1bdbd80e 100644 --- a/2026-usrse/stamped-ai-study/figures/benchmark-source.json +++ b/2026-usrse/stamped-ai-study/figures/benchmark-source.json @@ -2,10 +2,10 @@ "schema_version": 1, "repository": "https://github.com/leej3/stamped-in-practice", "branch": "codex/stamped-poster-analysis", - "revision": "c8750a39e329bb8d6d7e4024282d6253a25df11e", + "revision": "e4127a648c0ca93b360077002478326bd0dfdfc4", "source_manifest": { "path": "experiments/narps-poster/figures/poster-figure-manifest.json", - "sha256": "702219533f5e039f0c09fdcd7ce8f1ea70eb05693ea38601021f74135736bf3c" + "sha256": "0c9d521f0fb05724e9815b912d39c8946a2cba16ef818ba100e141d91398d0e1" }, "source_manifest_content": { "schema_version": 1, @@ -16,116 +16,121 @@ "figures": [ { "path": "experiments/narps-poster/figures/narps-group-map.svg", - "sha256": "4d22926b56073a6bc1b981413d3d117948e8f02781f664faa876cd3e79995f3b", - "bytes": 87877 + "sha256": "52075a4d64f04dc92a685ecccae059220d178bfbb0c7ffbb8d7a98dd68ca7070", + "bytes": 85237 }, { "path": "experiments/narps-poster/figures/narps-group-map.png", - "sha256": "c35b14d41d0b3496c6247d6dbc14db9c2f1e4009764d7370e07b0ec8f013e7b7", - "bytes": 136105 + "sha256": "3811568c61a663fab1787818793be71826bd71ad716aaf126e28bfbf34ffb6f6", + "bytes": 147376 }, { "path": "experiments/narps-poster/figures/narps-spatial-agreement.svg", - "sha256": "7f7d3d44bacbbe6a8a911d89859fb7612ae3875bf35217efcc85b4891c6af790", - "bytes": 142319 + "sha256": "a61474cf047a403276e32d416efa896495828b46c7fb24c2a11de9578a2d8ecd", + "bytes": 146605 }, { "path": "experiments/narps-poster/figures/narps-spatial-agreement.png", - "sha256": "f93b8a67c4d714622d891934546a1b384d99c7e3e32cc4fa42b06375f7355bf8", - "bytes": 166353 + "sha256": "6fec749b6442244b49dfe51beb8391bb9b288339ea6d8cb7524edc5d41fbcbff", + "bytes": 214622 } ], "sources": [ + { + "path": "experiments/narps-poster/README.md", + "sha256": "eeadeb19117f0751eb45eb5f3d88d2e4c817ed6e22f9b0f306d452c946ad9d0c", + "bytes": 4537 + }, + { + "path": "experiments/narps-poster/map-inputs/spatial/selection.json", + "sha256": "4887958f8f729880e5dfaf9bfd301993cf66ce013da2c9ce161b08c8be1d33b7", + "bytes": 13886 + }, { "path": "experiments/narps-poster/map-inputs/example/provenance.json", - "sha256": "37c94e97d1957209d39a0383dc4034a4ba5027d966135ef35b85be0c130380e6", - "bytes": 17958 + "sha256": "e052cab9db9aa92c80be27a8b3719814c73c6ddc10032e78da0c8e10da572098", + "bytes": 2560 }, { "path": "experiments/narps-poster/map-inputs/spatial/provenance.json", - "sha256": "54bea628a9a2a4454288b9a2b2c12f56e39799ec50a7f28a9d8c0139e1509ebd", - "bytes": 47081 + "sha256": "2e29a00885c5e9f8c946c8a8d28935701a83b5956559e08a4865c28066f076ac", + "bytes": 190192 }, { "path": "experiments/narps-poster/map-inputs/spatial/spatial-inputs.npz", - "sha256": "7c630a699298b18e0fdad17ebfe6e89400d64568705dacc10d820381ed13509f", - "bytes": 4292062 + "sha256": "bf728205bb83fdbb628db4be775981a165ae58b390ebdb84c943ca8d28ce46d3", + "bytes": 3341808 }, { "path": "experiments/narps-poster/figures/narps-group-map-manifest.json", - "sha256": "858db4b1517e54198bf6f5ce3c08c2c868b11460c89a82650223f619c560454d", + "sha256": "386e971dc5237489b231452d6825d751d705de2432e51f33d94a1d59a3b4f5b3", "bytes": 503 }, { "path": "experiments/narps-poster/figures/narps-spatial-manifest.json", - "sha256": "82b8ceffc7b455073b56f9e00df9b96d4ed37d2c02bdc00ad8bb6adf88be06a3", + "sha256": "311fbdbdc241a8ace858aa22cbcbbfd454e174ae1082c5ad12ac13885e97be62", "bytes": 536 }, { "path": "experiments/narps-poster/figures/narps-spatial-summary.json", - "sha256": "016821e822d1ab2e27f013efa56ddd6d817bc5d1a2fc735caf80d15c059320ab", - "bytes": 3332 + "sha256": "b26c18ba51a2069a2c4139ab50fc664b20b352bba76fb863ea859b48373efeea", + "bytes": 9382 }, { "path": "pixi.toml", - "sha256": "fd15ff19066829b17ca49abd3452c5ef1c86b31b59e16cf13efa0460d3b6a04e", - "bytes": 2706 + "sha256": "c693f080571a11200b8586cfe1abb4b4a1e23b781e34194828d9bf5fc845da92", + "bytes": 3094 }, { "path": "scripts/render_narps_group_map.py", - "sha256": "15cdbe99c7b26468b060fd5616e3b598760b0af32b6a8dffcae0680f30183f24", - "bytes": 8040 + "sha256": "fae676ef6ff54323b265faa53230007ff6de4a6f93dbd4c2ccd661c00642ab1d", + "bytes": 8089 }, { "path": "scripts/render_narps_spatial.py", - "sha256": "28018e9574eb3200942827f4204c8212b575082c286e3000f69c3ba9ac31281a", - "bytes": 8402 + "sha256": "285d6904c133a9f28cc20e5398e949a10cbd091a0c11488ae006f7d916fe5d0e", + "bytes": 8914 }, { "path": "scripts/extract_narps_spatial.py", - "sha256": "d2a3ea0798a88cf361bd110b012cd44fff318df54291d4bd1a394c93277c82f3", - "bytes": 11039 + "sha256": "5d938a21d815e32bf9be779f47601b0128535926dee744b5c72232af5ff52877", + "bytes": 16744 }, { "path": "scripts/capture_narps_group_map.py", - "sha256": "e6a41115689a637f600b484904b5c217a6dce9175c965e225427bc5082a443da", - "bytes": 4230 - }, - { - "path": "scripts/narps_figure_sources.py", - "sha256": "0645e30272e44692e614d29e52b71c8d6d4743eed2c64ad4bdb28a38307a317c", - "bytes": 6250 + "sha256": "3ebbccb39198b5083a8c1b0ddc5b8b4ae6fc3ffe89191c9e184c8faefe40625a", + "bytes": 445 }, { "path": "scripts/narps_poster_figure_manifest.py", - "sha256": "47e7c9d06d8ce668a30599d236c4d0a8a6d95fbd4127622eb08e659008ea313f", - "bytes": 2094 + "sha256": "6770363cdaaaf7a34017992e8266ea899281a7c1774a53ac7d622603ce1ea647", + "bytes": 2159 } ] }, "figures": [ { "path": "figures/narps-group-map.svg", - "sha256": "4d22926b56073a6bc1b981413d3d117948e8f02781f664faa876cd3e79995f3b", - "bytes": 87877, + "sha256": "52075a4d64f04dc92a685ecccae059220d178bfbb0c7ffbb8d7a98dd68ca7070", + "bytes": 85237, "source_path": "experiments/narps-poster/figures/narps-group-map.svg" }, { "path": "figures/narps-group-map.png", - "sha256": "c35b14d41d0b3496c6247d6dbc14db9c2f1e4009764d7370e07b0ec8f013e7b7", - "bytes": 136105, + "sha256": "3811568c61a663fab1787818793be71826bd71ad716aaf126e28bfbf34ffb6f6", + "bytes": 147376, "source_path": "experiments/narps-poster/figures/narps-group-map.png" }, { "path": "figures/narps-spatial-agreement.svg", - "sha256": "7f7d3d44bacbbe6a8a911d89859fb7612ae3875bf35217efcc85b4891c6af790", - "bytes": 142319, + "sha256": "a61474cf047a403276e32d416efa896495828b46c7fb24c2a11de9578a2d8ecd", + "bytes": 146605, "source_path": "experiments/narps-poster/figures/narps-spatial-agreement.svg" }, { "path": "figures/narps-spatial-agreement.png", - "sha256": "f93b8a67c4d714622d891934546a1b384d99c7e3e32cc4fa42b06375f7355bf8", - "bytes": 166353, + "sha256": "6fec749b6442244b49dfe51beb8391bb9b288339ea6d8cb7524edc5d41fbcbff", + "bytes": 214622, "source_path": "experiments/narps-poster/figures/narps-spatial-agreement.png" } ], diff --git a/2026-usrse/stamped-ai-study/figures/narps-group-map.png b/2026-usrse/stamped-ai-study/figures/narps-group-map.png index 8427bb0a..fd8b651e 120000 --- a/2026-usrse/stamped-ai-study/figures/narps-group-map.png +++ b/2026-usrse/stamped-ai-study/figures/narps-group-map.png @@ -1 +1 @@ -../../../.git/annex/objects/0f/77/MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png/MD5E-s136105--1da95ba2ba89559e653cfb9f4e21cc21.png \ No newline at end of file +../../../.git/annex/objects/PP/q2/MD5E-s147376--edb524418ea5236eed62734e960ce400.png/MD5E-s147376--edb524418ea5236eed62734e960ce400.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/narps-group-map.svg b/2026-usrse/stamped-ai-study/figures/narps-group-map.svg index d5f2c4e3..08a7383b 100644 --- a/2026-usrse/stamped-ai-study/figures/narps-group-map.svg +++ b/2026-usrse/stamped-ai-study/figures/narps-group-map.svg @@ -1,7 +1,7 @@ - + @@ -20,8 +20,8 @@ - - - + +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" id="imagef4f8912feb" transform="scale(1 -1) translate(0 -231.84)" x="14" y="-101.16" width="301.92" height="231.84"/> - +" clip-path="url(#pb32dcbeb6a)" style="fill: none; stroke: #ffd54a; stroke-width: 2.5"/> - P + P - A + A - Sagittal - x = -2 mm + Sagittal + x = 0 mm - - + +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" id="image509331e085" transform="scale(1 -1) translate(0 -231.84)" x="353" y="-101.16" width="262.56" height="231.84"/> - +M 469.289368 269.494102 +L 470.814632 267.663786 +L 469.289368 265.83347 +L 467.764105 267.663786 +L 469.289368 269.494102 +z +" clip-path="url(#p8eeb568ea1)" style="fill: none; stroke: #ffd54a; stroke-width: 2.5"/> - L + L - R + R - Coronal - y = 24 mm + Coronal + y = 40 mm - - + +iVBORw0KGgoAAAANSUhEUgAAAaQAAAHjCAYAAABsEWvhAABYmUlEQVR4nO29abBt6V3et+Zp733me++5Y3cjdQsxjwIjYRKCQlx8iIldLrBxATYOOFAlCJQDIYkDBEuUk0JJihBCAsEVAklhK4FKYceDAIMwRoIg0y3Q0Oq5+w5n2uOaV2qf7i/v+zyts2VLuu/tfn7f9r/WXnutd6113r3P87zP3/c8b/CEEEKI+0xwvw9ACCGEWKMJSQghhBNoQhJCCOEEmpCEEEI4gSYkIYQQTqAJSQghhBNoQhJCCOEEmpCEEEI4gSYkIYQQTqAJSQghhBNoQhJCCOEE0f0+APH65Zfe+beM1/5kD7YZkgJqfZxD7a98+9/4FB+dEOIzjX4hCSGEcAJNSEIIIZxAE5IQQggn0IQkhBDCCXw16BOfan7iLV8AtYPDfagdfs4bjNd7bzBfr8muPQy1aAv3VTcN1FaLBdS+/pu+HWoLst39YDQaQe0bvuEboHbz5k2o7ezsGK+XyyVs8+c/7xrUfuyX/hHUnnzySag98cQTr3LUQnzq0C8kIYQQTqAJSQghhBNoQhJCCOEEmpCEEEI4gUwNYmP+YnQZateuoVD+5W9EI8JDn3UFauMrY+P19hsPYZv86lWopYc3oOZHCdS6roXanbM51D74xJ9C7Zu/6/u8zzTvete7oPb2t78dag/tZlAbbj9tvG5mp/gBTQWlfrXCzZYl1E7vHUPtb//GB6H2q7/6q/i5QmyIfiEJIYRwAk1IQgghnEATkhBCCCfQhCSEEMIJZGoQlB9++AuxeBnNBFtbW1DLohBqn7+DLSMmV81kgv3PQQPD+BbW4p0DqA0BdlIZ4hRq06aD2nyBqQaPv/9fGq+/6Qd+1PvXxffXj5nJj/zIj0Dt0Ucfhdrb3/YVUAtrNGb4Z3eN1+0St2nu3YZafYYpFdXJDGrzl85wfytMx1i2OJY/+sTHjNfvfe97YRsh1ugXkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnACVYPGa5uf//NdB7doupi0cv1RD7fl6gNo4R+NAEqKpYdnhew92zPdOrqJZIbmKqQ9NjYkDbYXpAi36F7xVjekNzQqF+HCFIv6/Lnt7e1A7OTmB2uc/9llQW67wvNIezyHaumS8TvYw9SKMY6j1zcehtnoRr/3qNh7HYonbhRFe5x/73M82P/NLH4Ntvuf//V2offCDmAQhXtvoF5IQQggn0IQkhBDCCTQhCSGEcAJNSEIIIZxASQ2vIf63H/wOqF0ema0Kblri95qzj9+D2vIlFPorknIwnmArhJykMqTbaH648sWmiJ8++nn4mSG+b3l8B2rtAtMFkgyPI5lsQ20YUIi/8/STxmt/jiaHD/zmb0Dt0RsPQW30WWjMuPyV/y7UugyPra/wOjQVtowIMrOVR5YXsE3hoQkhOn0BavM//kOoPffbH4bas89NoZZ6PdS2rHYZQYamlzDF78Y//pGnoPZrv/ZrUBOvHfQLSQghhBNoQhJCCOEEmpCEEEI4gTSkB5Rf/JF3QO2hQ2wxfvNgx3jdT0nL6iPUX5opJjl3ZEGmn6AekG0RDWnLTPZes/MFpmZUb+NizsUUW3HHHR5bFKAO5Af4fctP8Ng8ksZt8+xHsM1587yZYr2mPMaxfOzP/lnc4Ru+DEptgG3YY6/dKNl8Xpr6UFOjXjSemDrTmq0MF8t6H/odKD3z66T2ITNhfE1PxvJgu7hQs1st8b7sfdQsz3y8H/7iL/5fUBMPJvqFJIQQwgk0IQkhhHACTUhCCCGcQBOSEEIIJ1Da9wPA//Hj3w+1Rz/rEaiNEhSo/cgUmZMJis5JjGL6sE/EdHJsfojfaZIxGgeyA0zyDvZNE4Pf4+1YjCdQCwM8hyBKXsWzY9J15LxIzbOE9/1bmMT9QoPvu/VmTPYOr74Baj053oAcbxTjWDILxrZlJugSvC4DMXnUA5pSRtZ1WTO+Zppj1uzfw0W79QzHJM7N6zqQO6kq8diqBaa67x7i+L7/f/wvofa2730X1MoSE8uFW+gXkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnECmhvvIL73rB6E2KTA9+03EwFBkmIIdRng5+85a7d6SlIMd/F4Sx7j/gKRnD2S7hIjiwxhNDX2UXpjA0JPjpbJ+iOfeDMFGBoZ2gUne4WBuF+ZkX5N9qMWk5Xpnned5rUaBvYvw2jcNpmdnMZ5raiVVxD6aFTpiXglYmsUIDQy7b7gBtWqKpobF7QXUkpFptiE+Cq+LMJWhv4PnvrOLieiHD78Ran/8e78FtX//L3871B5//HE8GHHf0C8kIYQQTqAJSQghhBNoQhJCCOEEmpCEEEI4gUwN99HAQAIHvMfeiAJtUWA76pSkMgQh1nprVXxbkdXqLOVgF00I3g6aFYIcRebTDk/saIntELzBrEU+ruBPQjy2HWvl/ys7g8p8hQaG2QpX//cVvvdgbLZq8FFf93xi6PCYgaHHN6/mpP33Nl6/psfvjKclnleRmJ8bkgPua/Y+dBj05HijHTRwTK5fwvcSE0aya96/yS62wSgWeF/uPYzXanLrCtTSG2j68a2W7mv+wS//ItQ+/0vfYryuSdsO8ZlDv5CEEEI4gSYkIYQQTqAJSQghhBNoQhJCCOEEMjV8Gvjld/8Y1HqSBvCGR3BVf5aiKB4VKNCGCTEisDYKTX1h64KetWSIMTXAK3AF/7LHPS4aXHU/XaFYvKqqC9tKXN/Bc08GTG8YGhTFsxDH8rTFc+3J97LBMnrEHo5HkmItjuONDBeNde7nlHMoBTmO+bTG/S2tRAt/QHNBPOB1CYhpImzxWpFwBS/bGmHxFhod4kOrduk6bJP35NisFiBrImK26TM01gSkNUgeY+133/uPjddf+tavgW3EZw79QhJCCOEEmpCEEEI4gSYkIYQQTqAJSQghhBPI1PDpgMT8P/amN0FtJ0fRffBR2O9JawVbdH+19hNDYMrRfoZCdJxjLdy5DLVyw+8vE7L6P5rg8U7tw/Vx/3sFaZlQnUCtJyJ+QowZrL1H16N47lnXoSeJEUOKhosuxhYdUY8mjCIjppSItIIIsTaK8R5ZtfY5kJYixJnAjCTM+OJZ99GaZIL3TTLBVJHw5mPG67pAY0JLjDXMmNGT+74J0EjSwXjw1iM72xPj9e//7m/DNl/+Z94GNfHpQb+QhBBCOIEmJCGEEE6gCUkIIYQTaEISQgjhBGv9kii64pPhf//ZnzJev/HWNdjm+iTdqP1EG5GEhCTfqP1E1uPqf99a7R7uYgsJb4KtBSoPxeNViyLzQFbTxwGpkdYSK6tVQUPuxK0UzzPuVngcxBDR+dFGBoaWtFso6+bCtgTPPPsc1G7euAG1HWLMSIjRwQvROOAnaBLovItNDQ05zyzE9+XknglXaBrxyxnUApKu4FttMM6ZmCaGjiQrMMNBXy2wNuA5zEnaxHyJyR0pOf/Uui/7Ho/juRdehNpXvk2JDp8O9AtJCCGEE2hCEkII4QSakIQQQjiBJiQhhBBOoKSGT5Jf+pn/FmrXr5ii7eElNAlEPgrnXoSCfeCjAN7HxBBBjAP+HRTZvdoUd8NdbA+wIp+5sAwHa5oWReyKxPwzo0NGUgjsNAR4vRanSSuLyMNxG0jLhHhAwT4a8HiTDBMXZp15DiVZ+V+TS0qGzSvxFLyEXPuhQ6NDO0ODARun0dhsU9GShhExS2VoiRkkneCxZVtQCwL88xES40BgJY2ELRoO/NUUah4xGLTEEOE3eA49M36Q6+Cl5r2fkGdt/+pNqH3jN34j1N7znveQDxCfDPqFJIQQwgk0IQkhhHACTUhCCCGcQBrSJ0uAc/jhZVNDCsk2QU7+Lx+SRZ8k2dsnC2OTGv/n3pyg3hAX1v/Eyf/9G0svWbOs8P/3bHFoyWpkfyHRTHwrQXqShhslPjerJdRSHwWCcYTHQTque32I52ov0m2JJhGyFHai73RkMWdFFgEPZLuGPKJVjccbTs2Fq9sT0vaeff8kmklFNMXTBY55QxazTjK8ztu5eV1jltZ+5xk8NrLINmT6GTneJMdzbQLcX2kt9ibd4b12wH19/dd/PdSkIf2bo19IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwApkaPkkeefTNUItTM6E7TNGE0GdoavBIO2afCOUBCWT3BxTxs8Or+N7tgw0WOHobLW6dVrhws2tJ62kfzQksfTrwTEG57fBAKmKa6Mli2TDB966IQD0jC3mbco4bRpYATsaj7fqN0sRrMkZtieflsZbdLMWcGSwscb5vcP8+SzpPsA35gowvCXqH67cmIotvh848loEYa/wReT7IefoNLnYO5nehFpNncMixdXrgmyYM1vogivB+fuwtfxZq7/rlX4faD37TnyN7FK+GfiEJIYRwAk1IQgghnEATkhBCCCfQhCSEEMIJZGr4BPzMz/89qO0doDCa+KZoPVgJBGuI/u11nb9RovaYCPYZ+Yzwyi2o9Vtmy/Klj6vVa3JwPnE6DMSsEIfkvUSc90naub2qPyBtzlsiM4cxpgFEVmrzyxCTAIlqqK1E9DWZJc6HpF137BHxv8J91T1JxSbv3S5QiO+IAaAi5zB05v5IWIbXkATw6RLND3dm2CI+I9dmv8DrkHeY6BCF5j3XjfAZCnOS4l2h2aQn6RBBgNe+GnDcZsQ0M6/qC9PKWfJKRJJHDi/heYlPDv1CEkII4QSakIQQQjiBJiQhhBBOoAlJCCGEE8jU8Arv/tlfgMF58xs/C2pxV13YTnwggmrPVvAT0Z10yvY6sr82xhX2QY4tB+aeKfgeLTFtYVGjwF7E+F3l2haK7qRzuFeuUBQfehy30DrZNMbzTBOS8EAMHR5pkV71pJ0FueNHpFVB4pni+fzeC7DNmJzTUBX4ATGmY6RWusf5Z5JzCFI0ocznOOjz0ryuTYvXOU1QiD9b4XbTBWkxnpFWGyM0E4SkncUQm+daEhNNSMwbCTE6sFYeZYTXYbbEczgm5zUtzes8TvCeyWOsjVI83sMtvPY/9ff/EdS++y9g6wrxMvqFJIQQwgk0IQkhhHACTUhCCCGcQBOSEEIIJ5Cp4RPMzOOYJCnMT6AWj0wzAfEgeANpK4F7X6ccYHVFlt2no12oReR4c2uVeRLimZ71uPo9JwJ7Zgn9a2qSwBCELMSfpAtYaQgxObakR9E99FDUb2M0XJwS8b8niRkpaZkQWW0f6ukRbJMTU0o1xX2N9/agFhOhPGxRdA8GHPMRaxlRm4YFEgLilehdoe0ysmizBJG7czQT1CMU9gvruiYkDSElY+mRZJBZRdIxiBOI34HkHmQbWiSWaWlNQXw1XYzbrfbQ0CJeHf1CEkII4QSakIQQQjiBJiQhhBBOoAlJCCGEE6xVvg1kvQeXv/M//BzUmLD/1i/9Aqjtko4GfrWAWuCbYmmUkBXsKYq9foJCfEOi9MsBj3eU4Yr4A7ZyvpoZr4cCzRBHq26j9gheha0F6hVpEVBhUkOcoxA/ZBPjdUrGLffQ1DCQVhB3ShSsP3aM12pEzAR7KY5vWJvj5p3dgW2uXUazwgt3jqEW5OZ5rikmKHbHPZowfKa6b2Gbgyow74eeCPh1i8aBZYmfWZMWGosSDQxTYjBIM0yguHmwY7y+vk1SKuzxPjcC4T1+3OL1axpiXiG1l2Z4Xk9a98iY3B+PkT8E0eoUal1EjrfC6/D8KT4zf+lrvxJqr0f0C0kIIYQTaEISQgjhBJqQhBBCOIEmJCGEEE7wmk9qmJA4+S/5vDdD7coEhdaYCPs9aSXQLi3jQImiZeCzNgooeMYjNDoEA1kWbhkp1jTk+0UYmoKs36CwOyYtDqoVisJdje8NKzzXhBxbQtpZ2OdKAim8hhQrUptXpC3I0G+UyhCS7er51PzMChMTPnaE5o06QPNG6mHbh5hcq4EYWtg3xsC6384/IzSPJcrRRNOSGjM/NCTOYrXC87+zqjZqyXG9M98bD2hU8btmo6SGNCKtWFo8h5ac17zB++b50/JCE8kVy3yz5pKVgLImIe09thJ8thJi3vnHv/0voPb2t73+jA76hSSEEMIJNCEJIYRwAk1IQgghnEATkhBCCCd4TZkafvynMJXh6rVrULt0sA+1uMVV/RExInQdiv1ebQr7bYlidxejuBkEpAVBZYrpa7ZjFEuDFM+hI4Jsl5hCdkDE44QkBDSk7UM3oMkjIV9pMjxcLyIR/r3VboH4BrzFqtxIdI+IIeIy6RGQkGval3jt52dm4sKQoZnlRQyu8J4+whX8lwsUsd/g46O3N843SswIl2dQ60rT6FCnaK5ILj0EtYLcl/EE3xsTM0FNOkbskNSLy6k55sEUUy+GCMeoZ+YYYkrpSKsUr8fjzWKsRVZqy3SOz+7REp+F3YNtPA5idAjId/5xhuc6uXIJav/0n/0z4/W/87Vf673W0S8kIYQQTqAJSQghhBNoQhJCCOEEmpCEEEI4wWvK1ND2KFjvX0FTQ0XE2BERgX0fNwyJoN6tTFE8JKvEPWJg6DsiWFsGiXPuoYgdXELx1d9/+MJUgzREx4FfLzdq8cCE57Al6RAkScAngm/dm7UFUck7ck1f7ppikhGxu2+JWcNKYFiznOPxer55bMU2tpr4+AmK3TMPP3Pcolvj+AyPIyaGi2KoNmrV0Fv34PoutGmn2Boj30ExfSdHo8NOioaLIsTjDXs8V39mmRgivFZDjiaBPi42St/ISIuSOMbPOBzjvf/wrnleL5FzWpJOLNMat0uJw2cgxgxy+l5s3W9rbl2/7r3e0C8kIYQQTqAJSQghhBNoQhJCCOEED6yG9MPv/lmoHd64BbWKzLl9QBb5heFGadzFBP8PPRyZtY5oQx5ZWBiwNPElakj+HBdbDiNcqOnhWllv0Zj/cx8Gor9Yi2fXtCUeW0f+H+6PUFsJSHv1jugoK6stdtkTnY1ISDnRB4IOtZahwQWvzRLHslmihrZ3zVxEurBS09cUMeoZjx5ii/h9slB4aS28XdMyTZGk1fsDJtOHoXl/tR0e2zDHz2w83K7fwWsap3iP7GTkOSpRz+kj83j7EbnfkjHUlg0ZDw9viIiMG9NFdxLUwd58yfzcwxFerFmN+y/JcxSSdPK6wfs+Jn9XInKdYyuF/33//Ddhm6/66q/xXkvoF5IQQggn0IQkhBDCCTQhCSGEcAJNSEIIIZzggTU13FngAsSbYxSUzyoUJA/JPFy2KJYSDd/Lx7iAdrx32Xhdn97FfRGB3WO1EsVYnxzIQBYgJh1pT56YgnJMROGBLCBly1FZ+nJFxOgwwevQnuGYtNbnsvToniwYjEmr74IkOfekvXq5IguKYzQJzC2DxQvHuJA1s4wE58eBh+YFbDTJWJ4t8Nj2t3HhapRmFy/AnKGBoZse4ftIen2T4HmlEYr9EUveJrUhSj+hyWHNihgYVuSZjEOy/xD3F6XE+EIuw4FlYtgZoSHn3qrfaLFsQ9Lwa2Iu6Xs8tlGK42un2u9dee0vlNUvJCGEEE6gCUkIIYQTaEISQgjhBJqQhBBCOMEDYWr4xh/6Saglu4dQO12h0H+wFW4k2Lek/TcTo32yndUF2SN6qtcePQ+18hSF8iDC443IyvmIpB4H956GWpGYIm0XkKQJktSQkO8qYYyKfUu2O15iakLoo1jsW+nIORF7WTI7S063Qs1f9VxrIoCXIa7gX1pmmJqszN8jSQVjkiKxIOkFLIXA89Fg0JLzD4nRI7HMK36G1zSs0UQzECG+JWntcYxjGY4PoObH5Jlpqws/k5wSJbUftnWNGClW5MYZyPOchObfjJQk2q+IAWW1wHu8quqNkr0z0nKdeB88O/mhJuP2C//Pe6H2rd/wb3sPKvqFJIQQwgk0IQkhhHACTUhCCCGcQBOSEEIIJ3ggTA0taRu+f4Ar2HOywpxFvVc1isw+ERojUus7fO9gGR18Ij6ygWYrx5mpIbl0FWrxZAdq3dk9qLWn5ur8kLzPI+3KQ6u9+PlxZJhSMSQodi9b1roC9xdYQvyIiMfbpC3IQK5BPUfBvibXuSctAsbjCdSSidlSe1LhvrZScs+Q+y3O0DRRkbYEfoMpHe38BGppTL5HWmJ/StqT9EmyUSuW3sda5eN7B+K4aJgZxmrd0ZFWHqXVJuV8/+S5z0kbl7BEc1BPTCgdO7bevK5hgveC1+C1Z+09etIrpSB/QzzS8mNFYkp6670suSJlz/MDjH4hCSGEcAJNSEIIIZxAE5IQQggn0IQkhBDCCR4IU0MyxqSCgKzW3x9jGkBC4urrlvW5x6EIiBDfefi5zZaZGpHn2JLBW6LwOtnHdhFDjmJ0uHsFtwvw2HwyJsH8zH4nbNMv8NjY0nm2mr7vcCwjIvgmGYrFpTWWKWkhkVanUFtZRo2XDwRLDTEOMOPLOCapF7U5JrspCvG+T4Rokg7RElH8cBcNIqszXP3fliRdIRpfeB2iMd5H3QSfoyVJkajJuIUkCiMjz1FI7svWMj+clfi+RYvPacr+OhFDi0/ap+RWOsT5cdRYCzJzLFsPjyMkZpuYOJIa8mxVxIjgkZQV2xj1MubzEZKUit0Ck0e+/6f/T6j9N3/zL3kPAvqFJIQQwgk0IQkhhHACTUhCCCGcQBOSEEIIJ3DS1PBvveMnjNd+jALwnIixY5IaMCE1JkhmJCFhRFTViAiLXmoKyH2Ox+szswIRQYeItGlgImi9glpLhGffNoS0aKToF9huoGeGDtK6gbV9CInDIGDj1lvx+iThISEmAT/F5IOhw/03FYrRfkdSNErb+OF5dheJ8mgO29Q+ube29qGW59gKoibGjzLE/TWkNUZfmCkSawLLrDGQNIRFhWaCkiRytAPWcvLMhAMxNZD3dtZ93pEEhoAkaLDUi67G+zdk+2NpKcRs1I3NxJeG7GtstUk53y4nCSUkzWNK0kJSnyQuEPNVaj0zARmPSYrj9gWPXPMeVPQLSQghhBNoQhJCCOEEmpCEEEI4gSYkIYQQTuCkqcGOcd/eQRE3ISYEj6yoDsnqfyaWpimKlEWGwnDAEhLsz21RyPSIYN0Ro0NPviNEpC3BsMS2BCFbFG4ZEYYY4+qHAceyIwYDFrmPI7k2BJBWE6SNRFOaAnXX4Ir7KEeTR5Dj/TCsUOymkBX8Q4NJFbOZaXToS7wGyQ4aGDoPx225SDYyPzTEEFCRtgRph6OeROZ1Pl7geMxWeO4ZSaC4NEIjRVAR48sZJma0xJwQFLvG64jcCyFp07BFTEVhOd8kpMPzRji+JUm4OCvN60X8C97IdricGx3w2HYKHLckxuc+IkdMPsKLrTYjPUnGgL896+OdkBYaDwj6hSSEEMIJNCEJIYRwAk1IQgghnEATkhBCCCdw0tSwt39gvD7YxpXul3ewNq9QFPfnOOcWGUlDsATENQlZ/Z8RU0Niifh+gokGjI58H2Cr2H3SGsMjKQGJj6Jna8X1txkaKZoB9zWsUMTuKkyHoAI1MYj0KxSjvdo83tp6veaEJCvsFqQVRInHm1gtJNaUC2xn0ZPhra1rM76Eq999Yo4JSDuOBTmvcMtMCFhTNWg6iFK8l4iO7a0ac5xmS7xWPjm2xMdnJmnu4nvJ/VAuiMGAJY1Y9282xnsm99AIFJ6dbWRIIr4Pr/fwPl9YY7SmtFpjDMRckQ7EBEUSYPbHxJjRxRs94w0xEVW1eW1WJJ1m3uC+WvJ35cd+/u9D7T//9r/guYZ+IQkhhHACTUhCCCGcQBOSEEIIJ7jvGtLn/bUfhVqYmAvMdkf4f9iDcbJR2vXRAv8vnyT4f27Wn7sh/ztOyBxutxZuBjw2RtTg4sWILEAcSIvmgCyW7Zb4Xm9kLiLtClOfWzOr8f/XeYxjFNb4mQHReIKApII3qGkMlrYyW+G+wgjHsmArgEvUi0IyRhXRGacBLmhcWMLS7BT1kqBHTaYjOpBHFvKWSzyOJVncezjGxZwRSYmvrfOKSdq1X5P7Y4XXpalQu0nIAnOWuh4QDcmzrr1/TPTJFV4/JpYFJDk9stqQr2lrbP0+Iu2+bTmHJWqzWkp0vDzD4hDgeMwrvDaLCu+bphouTIhnafsxOd797Qdjsax+IQkhhHACTUhCCCGcQBOSEEIIJ9CEJIQQwgnuu6nh+i4Ko1cvmenABYnCDVj7byKCNj3WMpLUO2bJwkQcrKyFdGyhGxMaA5KLvU+ihf3FMe5/isnePhPUSStyO4972MaDWzRY60ma+m6BwmjcoRhLhs2LMmzrPlgLNVdLNCH0JKGapS/HxEgxJOS8Mrx+cxYXnVnnWqFIHiRouOis1O3z2hiTp++coUkiDMKNFsFWDS6Q7AezFndokEj7cqPrl47xOofECDQUe1BrIzQddPbYTW/DNn1N7qMM9+WNzb8N55CW7h5JZ88WuOA3S01DRB9nGxmIvLbcaOGx3+O1miRowsgKrPmWYagmad9dj+aYlrSbv7KHKf8uol9IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwgvtuarixi8Lljcu7F7b1ZknZCRGZt0mL5pgoxQNJHBh8tjIa33u3MsXGe0sUH7MYBevxFRT6U5Ko3c8woToajTdaOT+7ZwnIOQrsQYzpDSckGfnSAYrY8dnzeBxMBE5RKN/eNhOZVx5ppW4lHq/piZDbkf03PjE65HjfDKR1ut3q3CeJEdEWCuwr0r1+RhKZa+J8GaXBZiYacl/GoXlfFhmee1Zg4kluvW9NSBLcPXL+odWafM2CRG+HsXlfxuT4VxWaBFgyfbB7E2oDSVnxialhmKKpIQhNw1BMEko6llQf4p/OjhgivBZviIGYUnzy3O9a4xbt4N+LeIbXLyeJ5X2+WXrM/Ua/kIQQQjiBJiQhhBBOoAlJCCGEE2hCEkII4QT33dTwRY89DLX9A1OgPlqgCHi0Iq2+PRRGr3hEUI6IqBrgZ0QJirstSVw4nZsmhg8+h1H6B1toOPiiQxQp/Z60DSAr1sMdNCL4PQrly9MPm6+fMl+vOd1GUf/Ew+MdebiafrdGMTbz8Rwi0nLdloAfGeHYtiRtYV7jbXtM2jmcLPB+mFsGlDXBgJ+RWIkLAxGs75XMrAAlryepIkR39mKywt63WtCvSUmL+O2xeY+MMhTnY9IOfdmy8cWTaInxo7pzemEr9TWZlfoRnGIaSU+MQGPyzPjEDJKRv2IBSVLwiDlhsMwJLdmmmWE7js5q63L+3i001nQJPuO9TxI58Gi9wGoNkhDT0sEE/zacBfhM1sQc8w9+/Z9A7T/4c1/n3U/0C0kIIYQTaEISQgjhBJqQhBBCOIEmJCGEEE5w300NV3dxNXZqmQnqAUXAO1MULXsS/97nKBd2DdbqEEW/ZY+f2xDjwNwS1Jkx4fIYV0onPhGxSZuGMEXhcsgwqSEgn7t16arxenWGLSqu7qIY6y9wX/OSGAJSjLVfefjelCQY5K3ZliCt0AwSLFFkTsdo6Gg7/G61KtGE0RMDw0AkZbsjx0Cue0tqGXErZDF5zMhxBDWea3+ExoGgx4SEZGQaHaIABfAFMTA8dYSf+fgL2O5kVVWbnStpW/LwjnksV7fwnlmQdirxBJNBPJKUElV4Dt3pPaj5rMWF9fens9pRnNcKTDdZ+mgaWQ0kvaHGMe8G0qaC3IOJZbiIiGHEC0liTYx/a5oWjQ7jgrT3uM/oF5IQQggn0IQkhBDCCTQhCSGEcAJNSEIIIZzgvpsaWIy7LQPu5LgynbGqUDnPE3xvTMRYotd78xr3V/cXtxK4sY9i4c0t0gqBCJn9BAV7L8Bz6CKs+QNZJd+bn5HNUQDOligAX98+hBpLzJhWKNoWpA0IM4M0VtuAhBgfAhxuryNtKlbE/DBKiHmFtCromTnBMiL0JDGhI+Mdtdj2ICZCfEMePZ8I+96An7uYoTFle8f83HmL+1qEeF8+fQdTCD78AhopiB/Ci0i8wI5lrlizPzINALe20biTjTAJIkrQOEA6x3h+iWaYfnoEtbBAA1Vv3edNjAafBTHHzFbVRi1sWCsI9tx3xOQSWoYFn9y7Hbl3SQcQb0UuYET+Nt5v9AtJCCGEE2hCEkII4QSakIQQQjiBJiQhhBBOcN9NDT0RfO1V7HmMInYYkRYEAc6vPtmuJ9sx0b1iq/PJauwwNs8hJ5/J9n9viYL1OMVV+ERPpmLmKMHPTRIzDWF49iOwTfvCx6FWfPYXQi3eewhqJwsUd6sliu7RGFfAr6wEjra4BNt0IQrgL91BETsj7odkicJ2FKJQfvXhN+L+PPPaNMcvwjbPfPxZqN28eRNq6R4aRFYxCuwvPP8c1Hxy9bsITSPP3jbPdS/HeyHexvF9eA/HNyKr/186RqPDosXt9olhYbswDT1RiM98TGqjDM+TdJ/weiL2R1uYrhCQli1VZqZGLOt2o3YRaYr3UUrah7AUCerMINc0tK59QMaoi/A4FjOSYsOSQcjfwfuNe0ckhBDidYkmJCGEEE6gCUkIIYQTaEISQgjhBPfd1OB7KEaHltg2DLhNRNILJjkKfC1JVliRFHei+Xkdma+ZHpkEZrFrcdX5c0co/p8t8Xhv7W9DLSVL4u3PXBOSiPn+6AXzM/8EhfjTZ1Cwfoyox3tfiOOxHeJ1SPZRsF+NsHZnYQrIiwrHbdkQwTrF1Iukw4SExR0810ceexPUUg+vjTe9Y7yc/6v3wyYHCTm2Dg0MQY7nPvjYHmJ85QbUPvoxNJzkVvLBmv2RaYYJIjTMZCkK51cnmEywt4P34Oc+fB1qJwsUz0fEWDMJzAeunr4E26TM6OCTyAGS0jGExBBADAx9jGO+XJnnUNd4D8bE5JERo1XAjAM++WND/ib5JFnDt5I7ApJqExDTS0GOtyXHe7clx3af0S8kIYQQTqAJSQghhBNoQhJCCOEE911DGmr8P7S9EJYlFwfk/6QB0ZpWRJdoSFvhmGgybLZmCxXtBbQsPTrFf+F6EQt3Jm3IowD/R56xqGWyILU7Mv9fH9Z4IDuXsKV0wJLIj3BxaLdC3arbwsW93UO4YNIbzPPqyHmOJ6hn5D7uK67wvZcfxoW8eYP3W0haStdWu+uMtHkPyULTYPcK7isqNloQHme43aXrt6DWkv/9j7dNfWQrI7ojaaVOHpn10UGFLcrcJan2EVls2bemnhWEuGg1bPG6+CQ922eLOQOiK5GFpi3Rms6s5PSmw3NPybgFREwmf0K8uMfjDckz7ltjxP6ehWyFfMDaoYcbdTioVqi73m/0C0kIIYQTaEISQgjhBJqQhBBCOIEmJCGEEE5w300NZ7efh9ojD5lCbkXWby0t0XnNnLQwX1btRuLjJMWh2CFOhJYYFmaWcaInYuzhLgrAB6Td8yghgiT92kBSoMki1dAyGFz9/Ic2WhUcj/B4vQbHNznEdOvm8DGotQEu5gysFuA9UdhZSnHIDB1E2A6uPILHkWHq+CzEhbbxyDInZGRxK2lrXg+kZTU5h7rFc203FNSZQca3PqP2UcCPiKgf9fgcJf6w2XYNUdnJZ7SpaQgZyMLm1EpXX9P7eO4r8oyP0vFmCfnEXDI/vme8ni3xPKOg2szoQAwXGTETZBEu0A3pQvfS3D8xPoQDmkEisv+YGFXuvYALx+83+oUkhBDCCTQhCSGEcAJNSEIIIZxAE5IQQggnuO+mhpwI1GFvincTIiAuKhQaO7KCnXRy9jq2ApwIyn6HJoGUJETsj0whd99q2bzm8ggPZMzSokla8pS4OhY11iZE3N1/+IuM19tjTGVo72ECQz8/g1pwcBXf+/AXQ+3FMxRak5C0hrYMADNiQElI4vNehtclClDIbUjyw9NWwviaZ07xXC9b1/SN+2gGKY/NJPU1RY4pEihF8zSPhNxbkzExIhDDwsIyGDw/w4SSMWk5vkXut7TFFfwDaQffVQuoBREx1uybKeaN1TZ8TU3akFcNXqslSzchgv04QQNDTIwvE+tZZWYIu5X4GvLo0pSVtsarP8dL4/nk2PLEvM6Jlf69pmfXqiemH2KiiXtyIPcZ/UISQgjhBJqQhBBCOIEmJCGEEE6gCUkIIYQT3HdTQ01aZVelKYqnZGX3tQIP/XJKxDyy+j+Nycr8GMXYjrRgYD3Md3PzvdvtFPe/QOE8jbF9wYyI3XfmaOCYElNDRUwYQWHWdi6/AbYJUxTiwxW2smh3rkHtuMTxHciKddY14Mx67wszPM9rE0x4iIhwHlco7rYBXucXidj/1D0U5xOr3cKdOV6Xp54y25yv+ZzPJS0pmn4jMw9LCwlqPK+eJHIse/O9cyJi1yvSqoCkISQZ3g9+M4faUGKtnZ5CLbISBpKtPdimJ0kYETE/+CRFYkHGNw3RJJCWeE9fn5hjuVfg/dbV2GKln6HJgyaNJHgPthHW5iXel/Olee1HMTGAkRSbocXzLFf4bAWN2k8IIYQQFP3LTgghhBNoQhJCCOEEmpCEEEI4wX03NRBPg9c1psA3Zq0hclytHgZkBX+HYmHYY5LAMMKV/tMOP9cPsbafmmJm+NI93P/pXTyOLbJinSRGsPYFqb/h6nHLmLEiIuhochnfl+B4DJnZRmBNVDYbte3oiUGkGcxrQzRbb+hxPDoiHgfEDNKSe+vFKV770yWeQ2WZAipyo05LNAnMa5IakON7xyyhZHUCtYF8Z2xJAkVg3Q9XSDIIM+Qw8Z9dq2F8gPtj7U5CvPe7mXleETmOIUQzwZDjdjFrjUHSPJqOvDcZXdgCJfHwASEdRdaOJCj15F6tSWLEqiU3eoznH1vmHfsan9Pg/Vwv0WxSz7HmE8PM/Ua/kIQQQjiBJiQhhBBOoAlJCCGEE2hCEkII4QT33dRQ+KTlQGWmGkxyFBrTloigROwOiakhIKun+xTFx56sbI8sEXRNXdcXrnRPD/EzO7I63SfnEJNzWK5w9fhqwDEZReZ3jp4IyksSaz+JSGpAi5+5n6LA3ndoEmgiNEnsWC0T3rCP45YR8b8fsFYmaLg4K9m1Ys0gkNgS+yPSGoI1KwhJJAWrDT6aCWrSViIiCSLM6GC3Mtki19kntZi0dmGmhtYjrVgiPAe/ml/4uezeTS7jtV9V5Fqx1IQ5mkF6ku5Sb6Mxo/XMc4jJdW58fP76GFu9ND6O0VGJ98gzZ3gOHTFE3Byb+xvnON6xl2/0N285w/SYgZhj7jf6hSSEEMIJNCEJIYRwAk1IQgghnEATkhBCCCe476aG4M5HoTZk1gr++Dps4zco4PtktXNPWit0KZoJygqFwIQYDArUFb1haQmG5DP93UOoVZaguqY+Q/Ex6fHYcg+NCKsVHu/MEq2jLRRjwxbF/2WNEfYpEXzZ6nSrc8M5AVklP4lNI0ke4HgkRDgn3Qa8eU2SD8i1+rKH9qG2qHEsx1ZshE/Ok5kEmhb3NS1x3JbkJApithkR84NPTBJ2LSCGC4+I3QNpU1EN+GeBJXzEJBokZmOye8V43WZoLqhDvD/qFWm9cUZSUBbHWCP3TU9SDSY75v0QkWetJ5EfC6vdx5rjJbZ4ePoMP/OZEzQ1NCShZRyZf6f2ianBJ9c5sYxMazqS9kJ7wtxn3DsiIYQQr0s0IQkhhHACTUhCCCGcQBOSEEIIJ7jvpob2+Seh1h/sGq/9GMVeL0dx3gvJymNidPCJuJt1KEZ7RGT3VyhSJr0pZmYxrp7ufJz7qyWKtkG1IJ+Jq9/H5DMaIoDbIvusxHMviDAaDcRgQFbwd0QoZm6CtsLtIivlISTvC5mRgpgmJikWCxLXf53cIl2E99J0aR7v8azaKNFgXuJ2ATEEJCnelyF1g2CJdFvwfKvIvmnGpBoQs8a8xXukIT0YWiKehwW2VDmyUlU+dIT3/W6J9/h+jAOXkHu1bUgySInGgYI8M8u5aSIa53hdkm00wszvovnomLRi6YmZYG8Ub9SGx7PuL2ai8Rs8z4EZWsi96hHT1v1Gv5CEEEI4gSYkIYQQTqAJSQghhBPcdw3pr777l6D2K//TW4zXN/fIwliWqkzaD/tEu/FY617y/9QhRW0hKjBVOvOLCxerNccv4GFM8f/QLVlY2dd4XuOEXDqiQXRZcZEsRjWJIcfFwx3TPRLUvPoWdRSfJCGHVqI402TIekGvIZpMRs49nJFFlCU5XqItxNbi0HGM99FujueUk+MgazQhnXtNQ/SGZ8+qjVqRP7STbbCIGXfVsvueppjje4eQJIUXe1C7e9u8z48WqFH5AY7lNtEUE/I8pzlevzlJt67Jn7tmMD+39XGBbrnEZ3LGNFbyfOySc5gQwSgI8JpOrGe8Y78fEjz3njw0Tx3hff/N3/V9nmvoF5IQQggn0IQkhBDCCTQhCSGEcAJNSEIIIZzgvpsaGFVupgH3EYqFQYdib5zEG824PmnHzFpK98U21EIiIvpWQnBtp3+vhdGjl6DWTbH18lmHl2Tv2i2oBTVZQHv6MaiNrpjvDbav4HEQEdv38Tjafriw1ffL7yVjFOKY99aYMzMIW7tXkoTqJel2PcrxXEdj5pIgi14rU8iOSLp6ShaGZjFZ3EvasCdku6M5nsRLM1xQfDDOLjR1FCGeZ02MQDVZZZx4/UbbTUuSgE6MRYnliLg0wue5sNLV1+SkFjVYG8gzOdrB++3eDBff7ljmnYq0Vw8sY9CrnUNY4Gd6A3HgEHJyP3TW87aw7sk1swBNVj25Bs+S1HEX0S8kIYQQTqAJSQghhBNoQhJCCOEEmpCEEEI4gZOmBnslOkvuZe2peyLEByTxuSfzcDMQsZSkCNvpAufb9abYuCItsVuSQlCR4x0yTIfoIhSxgzM0SVRPY3J6lFspEsTU4EcYge2TtIWg2yzZuycJF6xNeGBFRIzJ3RhZSeprhhTH494Cr9WMCPFdRIwZAZ7/YLV+H1o0kcQkvoCJ0/kIV/8TfwhlkqJQvpPiZwT+xcnQzIDSNXhd8oTsnxgipiRBpCMa/nZm7m87RZPAmHzmcPcp3D95Zpow3ehvgTeQFPPT28brhBhQ0p1LeLx7l/HYljOo1YszPAzytyAif1d862/Bgvy5PiVGh67G86yIEchF9AtJCCGEE2hCEkII4QSakIQQQjiBJiQhhBBO4KSp4a98y7cYr//gD/8Qtkn3zTbna5qWtBCucHV2T9old0QYDUlef0hE8c5Sclu28p+0V5/1OPzpNoqlDRFoExL9nx0c4Ofu3TReHzXkO0iD5zlK8HhDIrDPWxyPeydofmhJJP7lcXyh6JysMM0iJN+jihG2mS5J2+1ljffICUlIsLcrApJmQVbhp8SEEa5QeE7I6v9D0tr60givQ0T6WSyt69CSMUpJ7EXm4zkEZ6bQv8afHUFtZ/8G1KoUn0u/N4/Fn92Bbbqnntyo7X149RGoDaynSoDPR07aVCyOzXMd7eB1aUnySpfi/sOjZ/G9R3fxeIlJos1JKsxgGmmSCM1CCWl3crIkiRSWscRV9AtJCCGEE2hCEkII4QSakIQQQjiBJiQhhBBO4KSpweZ9f/BBqH3d13w11MY9iqDd7aexVqPwHO2imSAkwj6bwStrpX+fo7Db+yQNgAQf+CRKf0WMA+ODh6CW7F+F2iw04+nbjkQEoC7qnaxQ6L+7RHH+uEKh/MUpJmsUVvLBmtgSZCcj0sqiXF6YSnBeI6aRPEGBekWu4JPHmMJwe2EaLB6dbNa6oW6J0YEIz2zhvD0ea5IYjQ6LGq/h1DZhkNYYhwUZ38Ux1IbjF/F4T1CcT0fbm7V2scxG/hLTC7oZmlf8HXwmvV00UqyWaIZpW7xX4zE+l0Np/i3oC7MdxTnkPBuS7hETo1E0xveWGdb6EJ/7vjafo4jcNBn5u/KnH3ocat/917/VexDQLyQhhBBOoAlJCCGEE2hCEkII4QSakIQQQjjBA2Fq+B4iyP3W730AahERxVOyYju5iuJ/UOxALUvwvSzEvfNNIXfWoKjfDij2ltYK9jUj8hUhIq6DmrZMwDYHtdUiYJyQFfykZcIpMSvcm5EECg/fOybjZrcUWXPHMg4ckjYNPjEJREToDyKs+SHWOmIQmXU4Jidz89gWAbvyeE6zEs0g0RjvrUWHY9Q2eGwDaQ+xanBMEutQJiRRJCrRTOD1JKlh7xBqPkkX6Ei6gE/STQIrvaKfk5YMDRoTQmJquL3A8bg9RXdQ0+F2ezneD+1g3r99Sp4hZgTqSJuKPTRcZNt4P3Tkb0FLWt301r1UkXM6s4wP5/vftLeJg+gXkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnOCBMDUwerISO0hQkIz2r0EtPLiJ+yMCeB3gfF2RSPxVVV+4Cr+sULSsahRyZ6enUBtv4erx2QoNBs0Sa2luphVExJYRzXC1/sEIhfhwC1t0kK4SXrCT4bGRDaPAFIbjjpgmSMuEhhgpQmIwYOeak9YNN0jLgdwyMRQ9JkaUqCd7URhslCyRRdFG4nnjExNKiOe1Z92+I5JawgwMw9YVqN1e4XYVlrx8wOPdiskN0VrHEhNDDklICBO83zzS2sXr8W9BaZl51hyvsC1D7pnPZUtSXLJitJEJYUGMRkWBLSNych2anvx9SMznKPBxPOZnmKBRMRPGA4J+IQkhhHACTUhCCCGcQBOSEEIIJ9CEJIQQwgkeWFPD809+GGqPXP5yqPXM6EAE5Y4ItGdzFEHPiHEgtMX5APdVtkQsJe0tkgwNAcckXv9oiSLoDLVd7/KuKeIHBX4HuRTjZ4YVnvvuaH8js0JCWh90A9bsUbKG8Zx+cnBhMsYrRwyViCRmjIkZ5rGUpAs8tGe8Tgtchf8Hv/8vofamW2iiWZLWCnWDpoN0B8+1Jd8Zie7uRZ4plAckBcTP0ahyQhI57i6IYE/SIS7nOOZFhPd0FJutFfxtTGAIMrNNystvRBGfbOWVJH3EI4kRI8vgc75Zad6FpWVQWhNn+L6GGBOOGjS+nJI2LttjbDWRk6SRqjefwZCkb3zsIx+B2n/8H36b96CiX0hCCCGcQBOSEEIIJ9CEJIQQwgk0IQkhhHCCB9bUwNoZzHuygp+snvaIcBl1WAtYJD45lMHSN0O2EVlhvjNBsTQmLRiOz1AAnxNR9bhEwd63WjwUxBCwM8LV5AMRaH1yDjFJUhhWmPyQFNiqYNqbt9+CLDAf52ikiHq8Lh5LebATAtabHb+I2x3havd430wwCG++GbZ585ux1hHzirc43ezeGvC9CTEJxD7eYH1qyv11gEaVssIBrkisyA5p07Cf4vOWx/h9tu3wvuyshIFwgukQiwivVUzO3RvQJDDK8TgSYhgaJzhuC8u7M10sYJsgx2eyIgaikiQk+D5uOBDzThiT1iOteY/0JCVmPJC4kAcY/UISQgjhBJqQhBBCOIEmJCGEEE6w/m/mgxsNa/F//yYuVNzb28PaCP+/vOPj/+87koLdkoW2Sy+5cHHdaoZtm/d2UFfJCtSVSqvN8ppZg/+IvkcW4dmJ2pcy3NdWgeMRkNuCtTrPmNY0fQlqwxgXfR6F2xe25r5SoMwZz1AH8sgi2MRKSz4/to60lF5McX9W+nSd431Uhbj/hKzujauzCxeynh8bSfYeiEZXkTbs3dhsMX5EFrzOG6xlJP08JCnpkxjPi1waryH36tJqw16R9t/TFUknJ1oZCR338hD3NyaLSNN6hsdmpebfmeH9XEzwOfWIvtWS1uEJGd+dEd43xYB/M3pLZzw+wQXWX/CWr/JeS+gXkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnODBXRhL+JMnHofa2976VRu1N64zXAzoB2SFa0taDfemqHqPCKMeWbRbnaDIekiStz0fxdKMrL69OsF05K3U3K4IcV+tj7fBS1M8hzzB915N8L1Dhe8NYjzXLjENHMuGLA4kt2hgr0Q+179xu5C0YV+wVvIdjuVgGSyiAE0TywrPqd/GhbyLAa9LSM6BhGd7I3JfBmQx66K7OA1+SUwjowgNAdvkMzuymnMg32dDcq+GlkGmSHH/g7VI+vx4yeLTO3M0HwVkkfjNCe4vIaaRhbUQNiVt01uyiLkgreqLJN6opX084In1NT4zjbXQ9l898SHvtY5+IQkhhHACTUhCCCGcQBOSEEIIJ9CEJIQQwgleU6aG/+RvfjvU/uFv/g7UksuHULu3JC2PExTFB2JqWFqrzFmyAlud3pFe1O2UJEaQLI2eCLSjDAXZq2MzWSJ+EYXRyS62lG4yXJ3esJhisqrfJ8nebYwJF63V/nxZong8y/EWTfdu4VEEuN2UDNxihakJfYzHG0fmsWQ9Jgks774AtcmemZiw5sx2HKy/CZKvggExqhQkMSNJ8Tp7bXChmD4i4v8uSe6YpCQ9m6QheCRFwifPR2YZOHJynim5znZ78TUdSROvSVv6psNz6IjpwE/NduJJTMaW0eNnhjgcXkTSTQbWg75C08y9O2YKvU+u32sN/UISQgjhBJqQhBBCOIEmJCGEEE6gCUkIIYQTvKZMDYx/72veCrXf+P3/D2pJigkJUxLz35A2wp0Vkx8Q8bQlq7PnpO32QFpIBEQB78hK/2FgnURMM4FPWi3UJ9guYu/6G6HWpiSGnyQfeFYCw/mxZVu4v5n53iLC86xq3P9xiOO7JO3VQ9KWnnWXr8l1XlmGiNASv9f0Ed4zC2LMOFngPTPK8b07RNhfzbDlQDpBs01sHUsRoMIek/3vktbk0eI21ELSNp4lNQwBXpvEvn+JQcQnrerPShT6V2R8xwlLjCDftX3SGiQ2jzcl7V9IRxGvJcaEpsF7NYxIS3fynC6XeK4f/ehHjdd/+Tvf4b3W0S8kIYQQTqAJSQghhBNoQhJCCOEEmpCEEEI4wWve1MD4uj/zZVD71X/6Wxu1n2jJHL6yBNSllUBwDktb6HG7qiaiLUlgSIjSGpCV87OVub8rNx+DbbrpPailPQq0zd2noOYTM8iQYiqDh54AL7GGN4/xdsyIQaQm5zm0OG6eh4JyRa7NvMFaYNkfYpK+4bFECpIkkKYJHq9H2jkQsbsm91tPTBie1VYks8T6NREZj2BxhPt/3hTT1zRneI/4GV7n8NI1qI0uXTVerxo0+PjEuDNboXFgSZ6PjBgpOpJq0NWkn0VpthDJCtIqhKQ3rIZkI0PL4hRNRB4xJH38I89A7fVgYrDRLyQhhBBOoAlJCCGEE2hCEkII4QSakIQQQjjB69LUwCLsP/AECrn7hyjQtiGKmWeWoE7CFrwrExReseJ5PRNtRyiqbhPxlXgkvKUlgM+3DmCblLSaCAZcTR9VKLy2ixm+Fw9jrShDKbOi+WOykj5L8BZtSxzg2O83urmXpCXFUycLqOW5uWI/J70FwtUpHm+GZ5/vXIHa3Sl+5qLFz8hTknBBDBa9lWjBxi0kN0iwwOvSk+vgE2HfT4jZZjSBmleYyRIDM5GQz7wyQcPMnBgdximea0xcRPXxi1ALO3Pc+n4PtukHvKY1MSYsyfU7mS6h9uLzz3sb9Zh5HaJfSEIIIZxAE5IQQggn0IQkhBDCCTQhCSGEcILXpamB8QfP4Ir1mwGK/fN6DrWqMef1gpkQSHrBXo7i9OUxCrkH2xiJ77GWFKS5QmO1xmCpBFGGRo26QbF7sostAo5nKOx3Z8d4uDmOZTEyDRZ+GG2UaOCRVfgh2YwFZizIav1FjRtubZljUsT4vtXJC1AL8NJ7k8ObUJuTdgPM1MFaaLAEES80PzgnpoZ+iUaVNsEIjeDGm7DWVhtdh3zvEGqLwPyMOuw2Ovf9EWnvsY2GljRAQ8A2uQ7LBg0GvfXWmhgYFqR9SE+MUXWDtUWL5/XMMf4N2c2Zxen1h34hCSGEcAJNSEIIIZxAE5IQQggn0IQkhBDCCV6XpgYW8/+ed34f1L7mHf811PYum1H6a2pLFA8DNDDEJK7+coFmha0IhdERWYk+b/AcKrLaO7L072HD8RhIi4euRUF5TMTz06O7UEsmO3hsltEjtUwOa5YliukBW4VPTmxJRObOVrE9z3v48i7UtnPzesUkqWHYwVX9PhHngwZF8cskhaAkLR6CBs0PQUhMDYF1HUj7iSxFpX8Z43F0Cd6/dYtjub+DRpWKXIfZsrrwfovIV+OYOFUmKUs8ISkaHRoYKivNgo1lNz+DbWZNuFEbjJIYZj7ysSfxM4kB529917dh8XWIfiEJIYRwAk1IQgghnEATkhBCCCd4XWpIDPa//5j8Yzsk/5ufJJbeQNp6pxmpWe9bE3j4v+mmQh2lG/DSRVYr9fNjszZLfKK/sP+tB3hsURhvlNI83kK9qCVjEudjcxuyGNcj+ktmC2Ov0rI6IYuHL41RR9nfQy1oZi1cLUuycPPGo1Crp7jA2p+jprZTmOe+5ogsuh7YmDANKTX315DvmkGLGkdO9IxyiQubR1s4Ri25307J4tuFpQPmRBvyiUYHq1bPrynWcvK1uj7D1uG9tXh4TToy9bIox4XCZYzP2or86SzL+UbPhxbBvjr6hSSEEMIJNCEJIYRwAk1IQgghnEATkhBCCCeQqeETLNb7vM/B1OPSw8Wsq7kp2vpkWOctCtEVWYC4naHYfXKGi/XyMba2nqT4GSNLLI48FLYbsqB2RWphgMaEfIwGhoIswOx3r0PtqDeNE3WJgnjsRxtdq4QI5VlITA1bOOZ+gGMSWunLpzXuqyLJ0DFZ9eiviFmhxhbmewWO79GCLMgl902/ZbZJJ6HuXlBjMntw72moFSW2pfcjNLT4N/H5iBJc3FwE5sEkZLFvW5JW6gk+CyFZFD2Q5O1Zidd076HHoBYk5phXpA15TNLgkwHH40pBnucCn4VnP/ohqImX0S8kIYQQTqAJSQghhBNoQhJCCOEEmpCEEEI4gUwNr/ADP/m/wOCMx8TA0KOYmVoJxHskDeDSNq4AXxDleRrhJfFJIvPZ2QnUMtJy3Y9Nkb1vMJUhJAkMZJG81xCDQbF9GWoBWU0/kFbZXWWaMI6WKKbHZF8RMQ7kZLvDlKRAnz4PNd9KjFgzttpu9xme+/T2S1DbS/A4ApZwweKtSbLEHkmROFrgNewso4dPWr/7xEwQk+SOnlz8jrRcHz7+BO7v4BZ+bmTev0GJKQrdFO/nYIIp7H6CtbtzPLZsjOO28jF9pLcNC+QajAu8fkUWb5Qmvujw2b0T43GIl9EvJCGEEE6gCUkIIYQTaEISQgjhBJqQhBBCOIFMDZ+grfCVHVx5PQQoZo5GpvlhQgTwzCervdmH9ridT7bb2cGEhIaI0femZiJATFoXxDFrfU5ab0R4HEOKxo+OfEYdoNGjHczV9H5GTCQlCtbLU0yuePMjN/B4O9yOfUafoxmk7czzr4jhoictL4aOJCsQ04S3jYkGHmt/TlIptnAovRePzePbH+FG4wzF9LBAEwJztHQrTJZoFji+7b0XcHfF9oXvWz2Hrb4Huy372kD02JdA7dLeVahVpOV6SFqdD9a9yh7J/QyfBb8mbTbY9WuJYYikTYiX0S8kIYQQTqAJSQghhBNoQhJCCOEEmpCEEEI4gUwNr5CRFevXiHocxFgLrQj7ngjRPRFZA2J0CAfcbou0lcgyPI6atIzorBX7JTmORYm1giQO5HG8WTsAYhI4XeJn2FH/ERGFz+bYuuHSARoCIrL6vR9dvnA81swrvA7PHZvJAYv5EraZhJg+UZIWD0mLK/hTch95IakRlT0kxprCauVxNsfjGOV4vAMxeQwhSQvZwuuXrNDoETz3cai1jdmexSPnPr7+CO6LpJYM5L7vWzRcDMQMM5T4/TvdMpMfYmJUSaa4r57cq/6Ax5azRI4OW2OIl9EvJCGEEE6gCUkIIYQTaEISQgjhBJqQhBBCOIFMDa9QJGgcuDTBpIbeJykElgh8VqJoWTZE/CcLtpnRoes2a8HgE6HVs1ofdGT/ZV/j+4igPJlg4oBPVr8vWnKuxPywn5ufQTRhbxJgG4FiPIEaHoXnndXE5EGSMBYrXHVfV6YQ3zU4RjOSXpCT1IuqRqE8WqFQno6ImaBnpgbcbntry/xMvE29oZltJLCTu4gaHZh5ZfvqQ1CbW8aUPiLGIGKY8W0zxPq6NMQQUBPTwRJbXHgFppsEVluUsMfPDEjbDp+MR4iX2UsT0nqEDbA4R7+QhBBCOIEmJCGEEE6gCUkIIYQTaEISQgjhBDI1vEKe4kr/hAj7AWmt4FtGB99HdbP18H1LIihvFWbqw5qyQ0E9qnD1f0EE1MxqGZFnuFq/99GsMErx3BOy6rwh32l80r7gMMFzDU7MVgUtcXnsbl2C2oCXyqsGcmykFUQU4GeULYrWW5Y5oUhx/6e370Ct393CY4txfHticklaMkbEcBKcPA+11GqPkQVkPEhKh7+zDzVmEfEH0rrBJ9c+RyPQZGx+RhvhPd6RNIv69PZGCQwdaQ1Cuqd46S7eS3NryLfHu/iZQ76RkYJdq5CMW5aQG1ico19IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwApkaXqGsUJDsiMgeklXWW4k5rwcemgt2cqz1JDWgI0aHhiYwkJYUIWkZEZhCdjpCQTkkrTcCskq+99KNvtMU5Dj8F5+E2vKjT5jHEZF4Aas9wPl2O9h+otjCWhsRAwc5r3J5gsdrPRqdh++rYtLOYIymhibGFg8eMWF0DSZGBOTYujvPQG31ommw6EmiwejWNTyMbRxfjyQpDCER4kmrFC/AaxhE5nt9Kz3k1QwS0QQNF12Nz2lCTD9pimPek1o0WGkhJImlI/eRR55djyRyeKSdRU+us3gZ/UISQgjhBJqQhBBCOIEmJCGEEE4gDekVllY77TVHS9QNJhlZvGm1z7ZTrNekMdZ68n/zM9JOvCYLPPe28H/6+x622Q56c8HhMJB0Z7IoMahxX35HkpBJ8nRQYtJye/tZqHUr83//PU0wx1bcjKDG/8v7RFfyiBaSjTEFuu3MY+lj1BGyK6g3NAVqSCsSUD3J8DgGsvCYaSteQo5lz/zcgS2yHWE691CghlQmuF3bb6anZqTot+WFSfWrlmhqZEFxceNRqCX1YiMta0Y00Mx6thKif/YVaYdOxoMu+CWJ/kynEi+jX0hCCCGcQBOSEEIIJ9CEJIQQwgk0IQkhhHACmRpeYVmjCHy2QKE8ZQngnrX4lIi9OU0AR8UzJcL2kiijLVlY6RPR2rMMBrbAvCZoSQtzstiQmRp8kr7ckoWb5b1jqOWXzYWPwd4V3D9JrR4aNGH0ZLuKLA5tAkyj9jNcMFkvzPOa1WgsmbUoTsfElNISEfv4DMdy2eCC0RuTq1AbxSjOB9vmWA4kZdonyemnIbaDP13g+DKY2aaI8Vy3UvN4WzKWc1Jjrb4Dcp39FM/BY4vJyf0QWSYfv8Lng7WvZyaXFXk+Tq376LxWkQW04hz9QhJCCOEEmpCEEEI4gSYkIYQQTqAJSQghhBPI1PAKOUuaJm2Kd3Nc1V+EFyd2v7hEsfT2DEXQlxakDbKVlrwmDjAJuSBC61ZiivhBNYdtPJJqzhINKBFJfmDHS1LGo8OHjNf9/i08NCJiewtMwF6eHmGNtAlvfJKwTlb6d9ZKfDZENTGbsPbtDUnFfuoUr8OfEtH9LTcwSeHWBMd3uzAf5SDER7sjqQxVTZIJyMmyc723xHt1kuLnhpbBoCJmiOMVGikuj9h9j2aFhiRvn01xfJsan7fUSpZoyf57kt7fEhMU8WV4J2fYXv17/vq34obiHP1CEkII4QSakIQQQjiBJiQhhBBOoAlJCCGEE8jU8Ao/+o7vgMH56Z/7e1DLbuFq9743XQ1HKxSx3/dxFN3/+BlML8hIW+xre5guMI5RfL08OoTaKDEFWZ+tYCdR/QNpM83wiXge3kBzRbiHLSm83Gwv0CeYmFASMT0kbQkqH8Xj1sdzmFotL84/18MxiSyxOyUJBL7V2uN8uwivVUcE8JikdNQkXWFe4fHWIxzf2kruSEgbco+0sshYJ4QEi1GLx7uT4fhuEVNDbI3lnBgpTkscy4yklkzIfX92hvfWdIntU4aOtBO3nreQmUHI93ZmcimJaeKJxx/HDcWrol9IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwApkaPgGTBOfr3/v9D0Dtkc/9QuP1R04wleGPnrwLtekpCq9phpdkTGrzEsXu4zl+7l5uCs9Jg8KrV2FSgR/FG4niAxHPu/EBvrXAhAu/MY83ICaBkNyiLEkgiDEJwidCfBSSNhUtmgnKyjyWqibmAmJWmM3QXBGQsdzP8bz2rLSFNSNiMGD768KL2yMM5PqtLR0XJSusKYiZoIgxScHyL7xcs9IPyCXwfGIsaUjqxYzc90tybSpybQaSoBJb38nZH0RmdGDtan7//fi3gXgfxCdAv5CEEEI4gSYkIYQQTqAJSQghhBNoQhJCCOEEMjV8Ar7lW74Faj/+Uz8HteOPv2S8fvIemhVKEq8fEnU3SVEozkktjlHYLkmsvx31n/coxnb3noeaH6NZwc8xhcAvJuS9RFAnKQzwvhINAXGDgjXxKtCEi/Uae/IpWPHROGA3Hul83NeKtIuIczzPMMLHLAvwJAorVWPN7hjHMk3x2vSheQ6LjpwnMYMQ34BHAhK8jNyrbDsSrAHmBNbq5RJpNVGQazqQNIvOx/GtyXftiKYwmMfWt/ic1uVqI9PEd/7Vb4Ka+OTQLyQhhBBOoAlJCCGEE2hCEkII4QSakIQQQjiBTA2fJM9NMQ3hD//4fcbrhx/9bNgmCVGITsgq/NEERfHdbTQOxAnur2lReO/syP0AL/nQokDr9Sge++QzvRWmPPA8AKJ2WyK7X81xXxWOt5/ieETE5DEhiQMJEa2jDI0D3WC+tyCnviAtKYoMEyMWDRPi8b37BV778QhrQeRv1A7BJrESE9aEZF8kbMELGhT2gyVer4gcSJxZ1yvFMQoCvH6pj/vqiHFnleD+hhq36ztiWLDuS9/H97UdGmv+9Am1lfh0oF9IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwApkaPkl++of+I6h91Xe/03gdBzjP+0RQTsjK/EmBAm1LzArLJaZB7IS42r0uzc8YAhRtGUOLQm5PhHg/Ii0IiCEiqPF4vdZshdHdeQ6Pg6yu98h5tiQiwO+w1UZE3psnpOXHEFzYVqFMcTzGxKgyECNJ6eF2Hfl+yNotNMSIkFv3UkoMF7GH5hW/JK1H+u7CViFr6uc+ArXu5B7UkktXjdej64/h/vN9qDXEMNOv0Ejht2TMyT3YBmTMrZYUVcPOHWuhGkt8WtAvJCGEEE6gCUkIIYQTaEISQgjhBNKQPgW876d+yHhdf+ePwzaf87lfBLWACBPBQFKlK9RCmowkN7e4v3lpvrfdGcM2/u4VqM2OseV6QxLLhwE1r8kEazlpn+1bi1SHarmRRtUvpnhsJBW8JzpCl27hdgG+N7SGd+zjuc9q1DO20ktQa0mb8NkSr+ltsgh4maHOeECSsTMrQTvpqws1O3YNzmskEb4kiddTErvezMji5uMnjNcHGUmNv74LtWWF12Ww7uc1YUCSwslX7VmNz1ZvLbStyGd+6I8+CLUf+M5vww8Q/8boF5IQQggn0IQkhBDCCTQhCSGEcAJNSEIIIZxApoZPA+//mR+G2iM/8StQi8mCzDTE5GmfGB1q0kJ5QUTbe0tzu+0JCsBRhOnZdd5stEA3JN9p6hATqmOSqB1bCzDDvUNvE+IU91UtyHGQNt5NgufaknELLQNARY0U+L6TKYr6LUmyDsni07OKGFpqvA6jFPeXW4tlgzkuUN2UnuR91+RPRbd7C2pDgqYRf3FkvF6QRcwRMaCULITex3MviRGh7/F+iMni5lPLMPTiMV7np0/R0CE+PegXkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnECmhs8Qj5OWx1/6JV8Ita5G0XY8wv7ZLWkVPWWtslemUJ6coOi+TYTiJN3Gz+xmUBtFeAuR7tFevUTheT81UyNC/Mh1T2kohUR0D0Nc/d93eGzzCpXykDsnjJcVMZvMB9JenZgQCnL9tgsc88bD91bEABCSBPTIvg4kGcMjCQyMitxHQ0LGlyTYLzr83CK3jA7k0LKGpICQ1PwpbubVDY5RS1IpTkg6xgunZjrIP3nf+2Gb97zz+/BDxacF/UISQgjhBJqQhBBCOIEmJCGEEE6gCUkIIYQTyNTwGeKJX/jbUMuS/wpql0ZodBiRFgSt1WJ7zYllYFhTWUJ5TdoNXM5wX2PS6nw7RWGbdNP2iBbt9aQFg502kSaY8OCRttPegPtKyRjduYer7uueHDAxiJTWRyxI6kNJ2i9cISkKuxkxfpBHryJmkAI/wtsdk3GyGOJso/OsSGuTNiCtTUjahEfuEeLB8ErrvWGEN0hT43EkIV77KCQ3V4zHVhNzyZ1TNOX8w9/+gPH6137i+3H/4jOGfiEJIYRwAk1IQgghnEATkhBCCCfQhCSEEMIJZGq4j/zBz/5nUMuSd0Lti78IjQ77uyj47o5JiwfrK0dADAGzFa7gb300SGztoanBI60x/Gqx0TefwRbFE4xqGCJMORhICkFHDAEhE8Db1UZpCI3VamNVoUje9SQhoCFj2eEYNaTdQkhqRYbmhDExcPidmRoxMIMIuQodadPQEkOA5+G5JiSpISMtVRqrPUQX4b0bELNNTMwPI7L/Jbmna5L88JEP/ynUZGJwC/1CEkII4QSakIQQQjiBJiQhhBBOoAlJCCGEE8jU4BgREYr/+e+aq8nXvOUrvgJqCRGLD7dNU8BuipfcJ20JWrKCfyBtH7wowe2IOB943YXfhvym3CipYYhQ6CdH5m3luF1PEgGGFdbq3jzejojk5FJ58xLbbAwh1soB31yRFIl8QgwM7GStJhor0lKkJSaMjrTVGGJ2j+D5s8OISExH2Zrn3w94z9TEWDL0OG49ca9UlmlizR/90R9BbS8naRPCKfQLSQghhBNoQhJCCOEEmpCEEEI4gSYkIYQQTiBTg2P81n//gxttV6R/B2q7X4VGh9WWeYkb0kYg6FCwbhsUikm3Ba8nBoOAiNFRgLea3Yag79Bc0Z3dhVrt477ifAK1SUiSFIiuXbe4v7IxxfOQiPVJiLJ+SJwOvbdZ64oVMzoMaOo4XeL4LgZz7JZkLBvSsqSI8TNHIY7HQIwvJByDGl/q2kpq8DDJownQ6NCR78ssgeED738/1FKS8vC9f+NbyRELl9AvJCGEEE6gCUkIIYQTaEISQgjhBJqQhBBCOIFMDQ8o/+Kn/1OoXd35SahNnzXF4sMxmhCI/us9+sZHoTYrUVDOMkxgGKe4+r9PsY1EYxsFGmwNUU5nUKtbFMX9GiX20fYe1EJifvAb3F8cm/tLSduDtiXtEVJ0TaSkXQT0BVkbE0hQxUtnc6gdHaOpYWTtL0/RJLA9HkNt6NE04RGzBkvMqElLjiVpXbFszHvkT/74g7DNaYX30cmKtKQgppEffcd34PGKBxL9QhJCCOEEmpCEEEI4gSYkIYQQTqAJSQghhBPI1PAa4j3v/L5P2b5++N0/C7WIGBOiBGs1SSFIrOSD8/eGplCeETG9Zyv4rfetaXr8bnVyjIaIOCUtKXx8bxxZj8YwbNbOgdQie1/r8SAmgZaI+M+9dAK1jCRQXBqb1+EGaUWS+GgciMh5LVYklYEkP1Qt7u/eKZowPvj4h43X71BigngV9AtJCCGEE2hCEkII4QSakIQQQjjB+p/2JMNZiM34L/67/xlqb//qt0Jtb2sEtTA0vw+lREOKSHJ4SxKfKyKHViTdeiB6UU9arnetqZm873d+Z6MW5qwF/Vvf+taNUryfPMWVsc+f4KLdlKxlvbllakiP7ON4H5BF0Z7Vqn1NSWK8T6d4HO/9nd+F2opohT/83X8NdygEQb+QhBBCOIEmJCGEEE6gCUkIIYQTaEISQgjhBDI1iPt38/mmAeB7v/d7YZvr169DretQiC+KAmpXrlyBWp5jEvl8jos5v/mbv9n7VPF3f+Z/hdpb3oLt5mvSwvzF6RJqixWaH64WZqL4pREmjP/KL/4C1N797ndDbSCLZYX4TKBfSEIIIZxAE5IQQggn0IQkhBDCCTQhCSGEcAKZGoQQQjiBfiEJIYRwAk1IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghnEATkhBCCCfQhCSEEMIJNCEJIYRwAk1IQgghPBf4/wEJhdavPt88pgAAAABJRU5ErkJggg==" id="image92e7b30e73" transform="scale(1 -1) translate(0 -231.84)" x="704" y="-101.16" width="201.6" height="231.84"/> - +" clip-path="url(#p2d5415e557)" style="fill: none; stroke: #ffd54a; stroke-width: 2.5"/> - +" clip-path="url(#p2d5415e557)" style="fill: none; stroke: #4effe0; stroke-width: 2.8"/> - L + L - R + R - Axial - z = -3.6 mm + Axial + z = -3.6 mm - +iVBORw0KGgoAAAANSUhEUgAAAnQAAAAiCAYAAADWIUQMAAACBklEQVR4nO3WW3KjMBAFUCQn+8mWZv9rAKZSlphmEDbO46Orzvmx0mpasvO65f3jzzo1pd52r6e1231dH/SVWh/P6LU266yvXrjTV+b2da0l1O7rUsr5XqjVcqz19f7Z9tr64/635m590+nc0fuJe7e2vl2svT3tq8/nhs9h1Pd24U5X7/u01j+beKe2rIP79r7eE/uGMwbv9VFfvFtfDs+P3/PtTud98cy+rNOgFt7X5b7/zgxHTf2au5/9trzc968tPFue3iOeUdbtz9w0rUurLYfa9Khv2B9qy+/M3fra/N28Ud9o3jK3L+N95/3r5/7ca8e+NfT1/X1t/+w26+ysfsZgxsv33M09zljnfqdQ2+557Fvm12Ys8zfOGu5dO7+fO+5bB3332hL2xv3r8az27HDu1n9+5tnc/szuTtvnGu+5f3a0t4Tfs7mtQ9uXaz8xI9bCT/fgrPgeXquFfwsAAGQk0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQAkJ9ABACQn0AEAJCfQAQBMuf0F1FRJ2Ph/kagAAAAASUVORK5CYII=" id="imageddfb01830a" transform="scale(1 -1) translate(0 -16.32)" x="53.28" y="-412.32" width="301.44" height="16.32"/> - ≤−6 + ≤−6 - 0 + 0 - ≥6 + ≥6 - - Unthresholded group t + Unthresholded group t - Gray anatomy: outside common coverage + Gray anatomy: outside common coverage - - vmPFC region + vmPFC region - - Positive FWE p ≤ .05 + Positive FWE p ≤ .05 - - + + - - + + - - + + diff --git a/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.png b/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.png index 4a7a9ca4..e2fdb3ce 120000 --- a/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.png +++ b/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.png @@ -1 +1 @@ -../../../.git/annex/objects/Fj/60/MD5E-s166353--6c8e79de1133a513b18c6123e3db1e71.png/MD5E-s166353--6c8e79de1133a513b18c6123e3db1e71.png \ No newline at end of file +../../../.git/annex/objects/zf/J5/MD5E-s214622--e69cf5666eea13d942de8b3ed7d6eef6.png/MD5E-s214622--e69cf5666eea13d942de8b3ed7d6eef6.png \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.svg b/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.svg index a5d916a9..3fb2682f 120000 --- a/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.svg +++ b/2026-usrse/stamped-ai-study/figures/narps-spatial-agreement.svg @@ -1 +1 @@ -../../../.git/annex/objects/x8/QZ/MD5E-s142319--635c889a2b6a58de2a5c8aa69f11e8e4.svg/MD5E-s142319--635c889a2b6a58de2a5c8aa69f11e8e4.svg \ No newline at end of file +../../../.git/annex/objects/wW/qg/MD5E-s146605--127f77cb852e1b3dff0a293f2e9db479.svg/MD5E-s146605--127f77cb852e1b3dff0a293f2e9db479.svg \ No newline at end of file diff --git a/2026-usrse/stamped-ai-study/index.html b/2026-usrse/stamped-ai-study/index.html index 0cb5af62..9b011653 100644 --- a/2026-usrse/stamped-ai-study/index.html +++ b/2026-usrse/stamped-ai-study/index.html @@ -28,7 +28,7 @@
-

Our experiment: iteratively improve STAMPED research skills by validating the scientific results and research objects they produce.

+

Our experiment: iteratively improve STAMPED research skills by validating the scientific results and research objects they produce.

Make the improvement process inspectable.Link the skills, data, runs, assessments and revisions, so others can evaluate both the science and how the guidance evolved.

@@ -50,35 +50,35 @@

Do successive revisions improve scientific adequacy, reproducibility and consistency?

    -
  1. RunFresh agents address the same scientific question.
  2. -
  3. AssessIndependent judges inspect the research object and attempt replay.
  4. -
  5. ReviseUse recurring findings to improve and compress the skills.
  6. -
  7. RepeatTest the next pinned revision with fresh agents.
  8. +
  9. RunFresh agents address the same scientific question.
  10. +
  11. AssessIndependent judges inspect the research object and attempt replay.
  12. +
  13. ReviseUse recurring findings to improve and compress the skills.
  14. +
  15. RepeatTest the next pinned revision with fresh agents.

Three iterations of testing and revision. In the final iteration, evaluate without further tuning.

-

Put the principles to work

The skills guide project creation, analysis, assessment and improvement. They make STAMPED actionable guidance for an agent.

Use the STAMPED checklist to examine your own research object, then follow the evidence behind each answer.

+

Put the principles to work

The skills guide project creation, analysis, assessment and improvement. They make STAMPED actionable guidance for an agent.

Use the STAMPED checklist to examine your own research object, then follow the evidence behind each answer.

Replicating a gain-response analysis

Tom et al. asked how the brain represents potential gains and losses during risky choices.

-

Our replication: test whether potential gain increases ventromedial prefrontal cortex (vmPFC) activity in the equal-indifference group (NARPS H1). Agents choose group inference for 54 fixed AO86 participant maps.

+

Our replication: does potential gain increase ventromedial prefrontal cortex (vmPFC) activity? Agents test NARPS H1 using the same 54 equal-indifference AO86 participant maps.

Group-level gain response

- Orthogonal views of the NARPS group gain-effect t map, vmPFC region, and corrected positive signal -
Example completed analysis, run 09. One-sample group test, 10,000 sign flips, whole-brain family-wise error correction at 0.05. Analysis code · Numerical results
+ Orthogonal views of the NARPS group gain-effect t map, vmPFC region, and corrected positive signal +
Round 2, run 09. One-sample test, 9,999 sign flips, whole-brain family-wise error (FWE) correction at 0.05. Analysis code · Numerical results
-
No corrected positive vmPFC signal

24 posterior voxels survived; none in bilateral AAL medial-orbitofrontal parcels. Regional mean coefficient −0.0079 (95% CI −0.0346 to 0.0188; supplied model’s units).

+
No corrected positive vmPFC signal

24 posterior voxels survived correction; none overlapped the analysis’s Harvard–Oxford vmPFC proxy.

Where do repeated analyses agree?

- Spatial agreement of corrected positive findings across three runs in each assistance condition -
Group statistics agree; correction choices change detected extent. Colour shows how many of three runs detected corrected positive signal on shared coverage. Runs 01–02 use Bonferroni; the others use permutation max-T. Figure code · Map inputs
+ Spatial agreement of corrected positive findings across twelve runs in each assistance condition, from rounds two and three +
Corrected findings vary across repeated analyses. Colour shows the fraction of 12 runs per condition detecting positive FWE-corrected signal in rounds 2 and 3. Each run retains its chosen method; 168,285 voxels share tested coverage. Figure code · Map inputs
@@ -86,46 +86,47 @@

Where do repeated analyses agree?

Use STAMPED. Try the skills. Bring us a study.

Share a hypothesis, accessible data and a reference result. Help us test the skills on your science—and discuss what better guidance should do.

QR code for the STAMPED in Practice research objectStudy + data - QR code for reusable STAMPED research skillsUse the skills + QR code for reusable STAMPED research skillsUse the skills