paper-claim-audit
Zero-context verification that every number, comparison, and scope claim in the paper matches raw result files. Uses a fresh cross-model reviewer with NO prior context to prevent confirmation bias. Use when user says "审查论文数据", "check paper claims", "verify numbers", "论文数字核对", or before submission to
By wanshuiyin · 365 installs
npx skills add wanshuiyin/auto-claude-code-research-in-sleep --skill paper-claim-audit
Source repository · Upstream listing
Paper Claim Audit: Zero Context Evidence Verification
🔒 Do not wrap this skill in /loop , /schedule , or CronCreate . It is
verdict bearing — it judges paper to evidence fidelity with a deliberately
zero context fresh reviewer. Re firing that verdict on a wall clock timer adds
no new signal (it changes only when the paper or results change). Schedule
the external wait that precedes it — paper draft ready → then audit
once . See
[ shared references/external cadence.md ](../shared references/external cadence.md).
Verify that every claim in the paper matches raw evidence for: $ARGUMENTS
Why This Exists
The executor writes experiments AND writes the paper. It "knows" what the results should be. This creates confirmation bias:
Rounding 84.7% up to 85.3%
Reporting best seed instead of average
Citing metrics from a different experiment config
Claiming "improves by 15%" when the delta is actually 12.8%
A fresh reviewer with zero prior context catches these because it has no expectations — it just compares paper text vs raw files.
How This Differs From Other Audit Skills
Skill Question it answers
/experiment audit Is the experiment code honest? (fake GT, normalization fraud)
/result to claim Does the data scientifically support this claim?
/paper claim audit Does the paper report the data truthfully and precisely?
Core Principle
Zero context, fresh reviewer. The auditor receives ONLY:
Paper .tex files (the claims)
Raw result files (the evidence)
It does NOT receive:
❌ EXPERIMENT LOG.md
❌ EXPERIMENT TRACKER.md
❌ AUTO REVIEW.md
❌ NARRATIVE REPORT.md
❌ Any executor summary or interpretation
❌ Any prior audit results
❌ Any conversation history
This is stricter than reviewer independence — it's zero context evidence audit.
Workflow
Step 1: Collect Files (Executor — Claude)
Locate paper and result files WITHOUT reading or interpreting them.
Paper files (claims) — paths shown relative to the shell's working
directory so you can find them with ls ; when writing them into
audited input hashes , use paths relative to the paper dir (no paper/
prefix) per the "Submission Artifact Emission" section below:
Result files (evidence):
Exclude (no summaries, no interpretations):
Step 2: Fresh Reviewer Audit (GPT 6 Astra — NEW thread, no reply)
CRITICAL: Use mcp codex codex (new thread), NEVER mcp codex codex reply . Every run must be a fresh context.
Step 3: Write Report (Executor — Claude)
Parse the reviewer's response and write PAPER CLAIM AUDIT.md :
Also write PAPER CLAIM AUDIT.json for machine consumption.
Step 4: Print Summary
When to Run
1. After /paper write — first check before improvement loop
2. After /auto paper improvement loop — recheck if improvement loop changed numbers
3. Before submission — final verification
Integration with Other Skills
Read by /auto paper improvement loop (if exists)
Advisory, Never Blocking
Same pattern as /experiment audit :
PASS → continue normally
WARN → print warning, continue, flag draft as "check numbers before submission"
FAIL → print alert, continue, but do NOT mark as submission ready
Render HTML view (auto, when RENDER HTML = true , default)
After writing paper/PAPER CLAIM AUDIT.md and paper/PAPER CLAIM AUDIT.json , invoke /render html on the audit report so the user has a readable HTML view of the verdict + per claim breakdown:
Uses full Codex review gate (audit class artifact — render fidelity check matches the skill's existing zero context cross model audit invariant). Output lands at paper/PAPER CLAIM AUDIT.html with embedded source SHA256 and a .review.json sidecar carrying the render verdict.
Non blocking : if /render html fails (helper missing, Codex MCP unavailable, file write error), log the failure and treat the skill as complete — the JSON + MD verdict files are the canonical outputs; the HTML view is a convenience for human readers.
Skip if RENDER HTML = false is set in the project's CLAUDE.md or passed as — render html: false .
Key Rules
Fresh thread EVERY run. Never use codex reply . Never carry context.
Zero executor interpretation. Only file paths. No summaries.
Only raw results. No EXPERIMENT LOG, no AUTO REVIEW, no human summaries.
Rounding rule. Only standard rounding to displayed precision. 84.7% → 84.7% or 85% is OK. 84.7% → 85.3% is NOT OK.
Cross model. Reviewer must be a different model family from executor.
Review Tracing
After each mcp codex codex or mcp codex codex reply reviewer call, save the trace following shared references/review tracing.md (Policy C — forensic; never silently skip). Use save trace.sh (resolved per the chain in shared references/integration contract.md §2) or write files directly to .aris/traces/<skill /<date run<NN / . Respect the trace: parameter (default: full ).
Submission Artifact Emission
This skill always writes paper/PAPER CLAIM AUDIT.json , regardless of
caller or detector outcome. A detector negative run (paper has no numeric
claims) emits verdict NOT APPLICABLE ; a paper with numeric claims but no
raw results run emits BLOCKED . Silent skip is forbidden — paper writing
Phase 6 and verify paper audits.sh both rely on this artifact
existing at a predictable path.
The artifact conforms to the schema in shared references/assurance contract.md :
audited input hashes scope
Hash the declared input set passed into this audit invocation — i.e. the
exact .tex files and raw result / config files this run read — not a
repo wide union and not the reviewer's self reported subset. If a caller
passed only main.tex + a single result file, hash those two files and no
others. The external verifier rehashes these entries; any mismatch flags
STALE .
Path convention (must match what verify paper audits.sh
expects): keys are paths relative to the paper directory (the arg
passed to the verifier) for in paper files — so main.tex , not
paper/main.tex — and absolute paths for out of paper files such as
external results/ dirs. The verifier resolves relative entries via
os.path.join(paper dir, key) ; prefixing with paper/ produces
paper/paper/main.tex and false fails as STALE.
Verdict decision table
Input state Verdict reason code example
No numeric claims detected in paper NOT APPLICABLE no numeric claims
Numeric claims detected, no raw result files found BLOCKED no raw evidence
All claims reconcile to raw data PASS all numbers match
Minor rounding drift only, no material mismatch WARN rounding drift
Any material mismatch (wrong number, config mismatch) FAIL claim mismatch
Reviewer invocation failed (network / malformed) ERROR reviewer error
Thread independence
Every invocation uses a fresh mcp codex codex thread. Never
codex reply . Do not accept prior audit outputs (PROOF AUDIT, CITATION AUDIT,
EXPERIMENT LOG, AUTO REVIEW summaries) as input to this audit — the fresh
thread preserves reviewer independence per
shared references/reviewer independence.md .
Human readable sibling
paper/PAPER CLAIM AUDIT.md is written alongside the JSON for readers.
The JSON is authoritative for verify paper audits.sh ; the Markdown
is for humans. The parent skill ( paper writing Phase 6) plus the verifier
decide whether the verdict blocks finalization — this skill itself never
blocks; it only emits.