{"id":51215859,"url":"https://github.com/u7079256/paperjury","last_synced_at":"2026-07-16T14:01:12.631Z","repository":{"id":362215853,"uuid":"1256868358","full_name":"u7079256/paperjury","owner":"u7079256","description":"Pre-submission AI review stress-test for research papers. A Claude Code skill: review, verdict, revise, verify.","archived":false,"fork":false,"pushed_at":"2026-06-30T09:19:19.000Z","size":13334,"stargazers_count":510,"open_issues_count":0,"forks_count":36,"subscribers_count":21,"default_branch":"main","last_synced_at":"2026-06-30T10:25:41.334Z","etag":null,"topics":["academic-writing","ai-agents","claude-code","latex","llm-agents","paper-review","peer-review","research-tool"],"latest_commit_sha":null,"homepage":"https://u7079256.github.io/paperjury/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/u7079256.png","metadata":{"files":{"readme":"README.en.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-02T06:45:10.000Z","updated_at":"2026-06-30T10:08:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/u7079256/paperjury","commit_stats":null,"previous_names":["u7079256/papercourt","u7079256/paperjury"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/u7079256/paperjury","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u7079256%2Fpaperjury","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u7079256%2Fpaperjury/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u7079256%2Fpaperjury/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u7079256%2Fpaperjury/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/u7079256","download_url":"https://codeload.github.com/u7079256/paperjury/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/u7079256%2Fpaperjury/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35546267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-16T02:00:06.687Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["academic-writing","ai-agents","claude-code","latex","llm-agents","paper-review","peer-review","research-tool"],"created_at":"2026-06-28T04:01:00.196Z","updated_at":"2026-07-16T14:01:12.613Z","avatar_url":"https://github.com/u7079256.png","language":"JavaScript","funding_links":[],"categories":["⭐ 精选第三方技能"],"sub_categories":["🔬 学术科研"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/paperjury-mark.png\" width=\"170\" alt=\"PaperJury logo\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003ePaperJury\u003c/h1\u003e\n\n\u003ch2 align=\"center\"\u003e\u003cb\u003eBefore a reviewer tears it apart, let a jury do it first.\u003c/b\u003e\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e\u003ci\u003e\u003cfont size=\"5\"\u003eJust tell Claude Code: \"review this, especially experiments and claims.\"\u003c/font\u003e\u003c/i\u003e\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  📄 \u003cb\u003eThe paper is on arXiv — read and cite it here.\u003c/b\u003e \u003ca href=\"https://arxiv.org/abs/2606.16322\"\u003e\u003ci\u003ePaperJury: Due-Process Review for Bounded LaTeX Revision\u003c/i\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://u7079256.github.io/paperjury/overview.html?lang=en\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/overview-card-dark.png\"\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"docs/overview-card-light.png\"\u003e\n      \u003cimg src=\"docs/overview-card.png\" alt=\"PaperJury interactive overview\" width=\"100%\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://arxiv.org/abs/2606.16322\"\u003e\u003cimg alt=\"arXiv\" src=\"https://img.shields.io/badge/arXiv-2606.16322-b31b1b?logo=arxiv\u0026logoColor=white\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://u7079256.github.io/paperjury/overview.html?lang=en\"\u003e\u003cimg alt=\"Interactive overview\" src=\"https://img.shields.io/badge/Interactive_Overview-online-d6a14b?logo=githubpages\u0026logoColor=white\"\u003e\u003c/a\u003e\n  \u003ca href=\"samples/dogfood/\"\u003e\u003cimg alt=\"Dogfood sample\" src=\"https://img.shields.io/badge/Sample-Dogfood-2f7d55\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/u7079256/paperjury/releases\"\u003e\u003cimg alt=\"Releases\" src=\"https://img.shields.io/badge/Releases-stable-3b3d47\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-yellow.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/u7079256/paperjury\"\u003e\u003cimg alt=\"GitHub\" src=\"https://img.shields.io/badge/GitHub-paperjury-181717?logo=github\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.md\"\u003e中文\u003c/a\u003e · \u003cb\u003eEnglish\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://u7079256.github.io/paperjury/overview.html?lang=en\"\u003e🧭 Interactive overview\u003c/a\u003e ·\n  \u003ca href=\"docs/showcase/SHOWCASE.md\"\u003e🏆 Dogfood showcase\u003c/a\u003e ·\n  \u003ca href=\"docs/AGENT-GUIDE.md\"\u003e🧑‍✈️ Agent Guide\u003c/a\u003e ·\n  \u003ca href=\"CITATION.bib\"\u003e📌 BibTeX\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/u7079256/paperjury-codex\"\u003e💻 Codex port\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"18%\"\u003e\n\u003ca href=\"docs/showcase/SHOWCASE.md\"\u003e\u003cimg src=\"docs/paperjury-mark.png\" width=\"120\" alt=\"PaperJury dogfood showcase\"\u003e\u003c/a\u003e\n\u003c/td\u003e\n\u003ctd valign=\"middle\"\u003e\n\u003cb\u003e🏆 Real dogfood sample\u003c/b\u003e\u003cbr\u003e\u003cbr\u003e\nA full multi-round review on a real draft: the repo ships \u003cb\u003ebefore/after PDFs\u003c/b\u003e plus a \u003cb\u003ehuman-verified run report\u003c/b\u003e. Inspect the sample before handing it your own manuscript.\u003cbr\u003e\u003cbr\u003e\n\u003ca href=\"docs/showcase/SHOWCASE.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/View_Full_Sample_→-Before_After_Report-d73a49?style=for-the-badge\" alt=\"View full sample\"\u003e\u003c/a\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n\u003e [!IMPORTANT]\n\u003e PaperJury is a pre-submission self-check workflow. It **does not replace your scientific judgment, and it does not replace peer review.** It should never be used to invent experiments, fabricate results, add unsupported claims, or hide a paper's limitations. When an issue needs a new experiment, missing evidence, private knowledge, or a research-level decision, it routes that issue to the author instead of patching it automatically.\n\n---\n\n## 🔥 News\n\n- 🎉 **RedNote community milestone:** the PaperJury post has reached **30k views** and **1.8k saves**. Thanks for sharing and saving it, and for recommending PaperJury to more friends who are writing and revising papers.\n- 📄 **2026-06-15: The PaperJury paper is on arXiv.** Read it here: [*PaperJury: Due-Process Review for Bounded LaTeX Revision*](https://arxiv.org/abs/2606.16322) (arXiv:2606.16322) — the full review → verdict → revise → verify engine written up as a paper: the deterministic-vs-semantic split, contestability routing, the due-process trial, and risk-proportional edit guards.\n- 🔔 **2026-06-10: v1.0.0 released.** First stable release, aligned with the Codex port's v1.0. Adds a non-blocking update reminder that points to the latest stable release when a newer tag exists.\n- 🚀 **2026-06-05: PaperJury's Codex-first port has shipped.** Open it here: [paperjury-codex](https://github.com/u7079256/paperjury-codex).\n- 🧪 **Dogfood sample added:** this repo now includes a compact [dogfood sample](samples/dogfood/) with before/after PDFs and a human-verified run report.\n\n## 📌 Citation\n\nIf PaperJury helps your research or writing workflow, cite the arXiv paper:\n\n```bibtex\n@misc{wang2026paperjurydueprocessreviewbounded,\n  title={PaperJury: Due-Process Review for Bounded LaTeX Revision},\n  author={Yiran Wang and Ruixuan An and Biao Wu and Wenhao Wang},\n  year={2026},\n  eprint={2606.16322},\n  archivePrefix={arXiv},\n  primaryClass={cs.CL},\n  url={https://arxiv.org/abs/2606.16322},\n}\n```\n\nThe same entry is available in [`CITATION.bib`](CITATION.bib).\n\n---\n\n## ⚡ Quick Start\n\nInstall inside Claude Code:\n\n```text\n/plugin marketplace add u7079256/paperjury\n/plugin install paperjury@u7079256\n```\n\nThen say what you need inside your paper project:\n\n```text\nreview this, especially experiments and claims.\n```\n\nOr keep it casual:\n\n```text\ntighten this introduction paragraph without changing the claim.\n```\n\nYou do not need to remember modes. PaperJury routes your request to direct-edit, review, or auto, and patches wait for your confirmation before they land.\n\n---\n\n## 🤔 What Is This?\n\nMost writing tools only push your paper forward: they draft and they polish. None of them argues the other side of your claims the way a reviewer will. PaperJury is built around that gap.\n\nConcrete outputs:\n\n| Output | What it contains |\n|---|---|\n| **📋 Issue ledger** | Evidence, location, verdict, and status for every reviewer-style issue. |\n| **🧩 Reviewable patches** | Minimal edits for safe fixes only; risky edits are queued for author judgment. |\n| **🛠️ Verification report** | Real LaTeX and formatting checks when the toolchain exists; explicit degradation when it does not. |\n| **🧪 Dogfood sample** | [`samples/dogfood/`](samples/dogfood/) includes before/after PDFs and a human-verified run report. |\n\nWhat makes it different:\n\n| | What it does |\n|---|---|\n| **⚖️ Adversarial by construction** | N domain reviewers read the whole paper → a contestability router sends the real disputes to a two-sided trial → a jury of 5 deliberates under isolation (escalating to 12 only without a clear majority) → a judge returns one of three verdicts. A verdict can land \"no fix\" — which a yes-and rewriter structurally cannot return. |\n| **🔁 Closed-loop, not forward-only** | Each round is a clean re-review of the edited paper (the panel never sees the prior ledger, so a re-raised issue is corroboration, not anchoring), and a deterministic clerk reconciles every round into one ledger until a clean round surfaces nothing new. Before any edit, fresh skeptics try to revive whatever got wrongly dropped. |\n| **🛡️ Guardrails, not autopilot** | Safe fixes land under risk-proportional safety (frozen anchors, a per-passage edit cap, an anchor and cross-section meaning audit), always behind your sign-off. Risky edits are not applied silently; they queue for one human pass. |\n| **🛠️ Real compile, not just critique** | It runs an actual LaTeX build on your machine and reports true errors, undefined refs, overfull boxes, and the page count, or degrades honestly to a structural lint when no toolchain is present. Deterministic desk-reject checks catch the classics: anonymization leaks, margin/spacing hacks, documentclass drift, missing required sections, page-limit overflow. |\n\n---\n\n## 🧭 Three Modes\n\nYou don't run commands; you say what you want and the skill picks the mode.\n\n| Mode | Trigger | Behavior | Human gate |\n|---|---|---|---|\n| **✍️ direct-edit** (common) | Describe a change in English or Chinese, edit the manuscript (LaTeX or Markdown) directly. E.g. \"polish this paragraph\", \"tighten this\", \"turn my note into LaTeX\" | No review panel; go straight to drafting the patch through the writing toolkit | Applied after author sign-off |\n| **🔎 review** (occasional) | Ask for critique: review / critique / 审稿 / mock-review; scope `full` (whole paper) or `passage` (one section/paragraph/claim) | Runs the courtroom engine (`references/review-engine-v3.md`), surfacing real weaknesses and separating fatal flaws from nits | Sign-off per edit |\n| **🔁 auto** (unattended) | **Explicit only:** `/goal` or config `mode: auto` | Establish the `spine` and reviewer assignment up front (human steps), then run multiple rounds under the bounded-aggressive + edit-safety policy until convergence | Up-front sign-off + return queue |\n\nRule of thumb: **one change → just say it; want it picked apart → say \"review\"; want it run unattended → `/goal`.**\n\n\u003e [!WARNING]\n\u003e **auto is never self-detected; it is explicit only.** There is no runtime signal for it, so it is entered only via a `/goal` context or a project config `mode: auto`. Turning on the \"auto\" tool-permission and sending a normal prompt runs one round and stops — it does not loop (see [`docs/AGENT-GUIDE.md`](docs/AGENT-GUIDE.md) §3).\n\n---\n\n## 🧪 Sample Run\n\nTo see real output, the repo ships a dogfood sample: a full multi-round review on a real draft, with **before/after PDFs** and a **human-verified run report**.\n\n➡️ [`samples/dogfood/`](samples/dogfood/) ([`original_draft.pdf`](samples/dogfood/original_draft.pdf) · [`revised_draft.pdf`](samples/dogfood/revised_draft.pdf) · [run report](samples/dogfood/RUN_REPORT.md))\n\nMake sure it won't get desk-rejected: say \"run the submission-readiness / compliance check\" and it does deterministic format screening + a compile-driven layout check.\n\n---\n\n## 🚀 Install\n\nIt is a Claude Code skill, installable two ways. For the Codex-first port, use [paperjury-codex](https://github.com/u7079256/paperjury-codex).\n\n**Option A: Claude Code plugin (marketplace route).** From inside Claude Code:\n\n```text\n/plugin marketplace add u7079256/paperjury\n/plugin install paperjury@u7079256\n```\n\n**Option B: clone as a skill.** Clone the repo into the folder Claude Code reads skills from:\n\n```bash\n# macOS / Linux\ngit clone https://github.com/u7079256/paperjury ~/.claude/skills/paperjury\n```\n\n```powershell\n# Windows (PowerShell)\ngit clone https://github.com/u7079256/paperjury \"$env:USERPROFILE\\.claude\\skills\\paperjury\"\n```\n\nYou can also put it under `\u003cproject\u003e/.claude/skills/` to scope it to one project. After installing:\n\n- Claude Code auto-discovers it through `SKILL.md` and it shows up as the `paperjury` skill.\n- `node` is required (the deterministic checks run on it); a LaTeX toolchain is optional (the real-compile and layout checks use it, and degrade honestly when it is absent).\n- Run `npm run doctor` from the skill folder to verify the install: it checks repo integrity, required tools, and that your manuscript can be detected.\n- At startup the skill does a soft update check against stable GitHub release tags. If a newer tag exists, it prints how to update (re-run the plugin install, or `git pull` for clone installs); if GitHub is unreachable, it stays silent and continues. Set `PAPERJURY_DISABLE_UPDATE_CHECK=1` to disable it; start a new session after updating.\n\n**For Claude / coding agents:** the deep \"how to drive this\" reference is [`docs/AGENT-GUIDE.md`](docs/AGENT-GUIDE.md): install, the three modes and their triggers, the engine pipeline, the `auto` vs `/goal` distinction, and how the fan-out launches, written for an agent to read. Curious about the internals? Just point Claude at that file and ask.\n\n---\n\n## FAQ\n\n\u003e **Can PaperJury review a Word (.docx) file?**\n\nYes. PaperJury converts your .docx to Markdown once, tells you exactly what the conversion kept and what it could not carry over (complex tables, equations), and runs the full multi-round review on that Markdown. Your original Word file is never modified. You get back the edited Markdown plus a list of every change; merging changes back into Word is up to you (e.g. via pandoc). You can also export to .md or .tex yourself and hand that in directly.\n\n---\n\n## Technical details\n\nIf you only want to use PaperJury, you can skip this section. If you want the mechanism, source layout, or agent-driving details, start here:\n\n| What you want to inspect | Entry point |\n|---|---|\n| Real run output | [`samples/dogfood/RUN_REPORT.md`](samples/dogfood/RUN_REPORT.md) |\n| How to drive Claude / coding agents | [`docs/AGENT-GUIDE.md`](docs/AGENT-GUIDE.md) |\n| Engine design rationale | [`docs/REVIEW_ENGINE_V3_DESIGN.md`](docs/REVIEW_ENGINE_V3_DESIGN.md) |\n| Full protocol and ledger state machine | [`references/review-engine-v3.md`](references/review-engine-v3.md) · [`references/ledger-schema.md`](references/ledger-schema.md) |\n| Visual overview | [live interactive overview](https://u7079256.github.io/paperjury/overview.html?lang=en) |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eExpand engine, architecture, and repository details\u003c/b\u003e\u003c/summary\u003e\n\n### How the engine works\n\nThe engine organizes these stages as a \"courtroom\": generation is bounded (N holistic domain reviewers, not a per-(unit × lens) flood), adjudication is routed by contestability, edits are guarded by risk, and the multi-round loop converges via a deterministic clerk.\n\n```text\nassign-reviewers → reading-check → coverage-auditor → merge\n  → { trial ‖ polish } → recall-audit → drafter\n  → { edit-audit | meaning-audit } → clerk\n```\n\nThe deterministic guards in `scripts/` run orchestrator-side via Bash between workflow calls (the Workflow sandbox has no filesystem and no subprocess).\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDeterministic stages (full list)\u003c/b\u003e\u003c/summary\u003e\n\n1. `decompose`: split the manuscript (LaTeX or Markdown) into reading units, the canonical section list, and stable `passage-id`s (which prevent text drift and give jurors local context).\n2. `extract-docx.js`: one-time Word (.docx) → Markdown extraction with an honesty report of everything kept or dropped; the original Word file is never modified.\n3. `spine` (auto only): extract anchors, author confirm, freeze → `spine.json`.\n4. `ledger.js`: JSON ledger plus MD view; gate = `/goal` completion fact (0 gate-blocking active major; author-required is gate-OK and accumulates to the human queue). `floor` is the significance floor (only major, fix-worthy findings reach the auto editor); `mode \u003cledger\u003e collapse` folds minor findings into a digest (full detail always kept in the JSON).\n5. `journal.js`: append-only per-edit revert log (JSONL).\n6. `apply-patch.js`: atomic apply plus journal of a drafted patch, and revert (exact-once guard on `before` text).\n7. `anchor-diff.js`: locate frozen anchors; flag which `need_audit` when the support region changed.\n8. `cross-ref.js`: edit-safety risk pre-filter: does a changed salient token in a patch appear in other passages?\n9. `rekey.js`: round-end re-link of open findings whose passage moved after edits.\n10. `compile-guard.js`: real LaTeX compile (latexmk/pdflatex) or a degraded structural-lint path with `compiled:null`.\n11. `compliance-check.js`: submission-readiness A: deterministic desk-reject screening.\n12. `doctor.js`: install/repo health check (`npm run doctor`).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSemantic stages (full list)\u003c/b\u003e\u003c/summary\u003e\n\n1. `assign-reviewers`: name N subfields, instantiate N domain reviewers from the project gatekeeper core + a generated domain overlay.\n2. `reading-check`: N holistic reviewers each read the WHOLE paper once → weaknesses (significance + kind + verbatim quote; a reviewer that cannot quote the source did not read it) + one overall_confidence + a per-section coverage report; targeted re-invoke mode for anti-skim.\n3. `coverage-auditor`: anti-skim L2: flag skimmed (reviewer, section) pairs across the coverage reports.\n4. `merge`: semantic dedup across reviewers; the workflow derives significance (MAX) / kind (substantive-dominates) / corroboration deterministically.\n5. `trial`: a 5-juror trial tier: whole-paper defense → independent local-context jury (with on-demand context expansion) → a deterministic majority verdict + a judge that routes a decided-valid charge (valid-fixable vs author-required); escalate to a 12-juror tier only on no clear majority.\n6. `polish`: the track that skips the jury: batch copy-edit (mechanical) + batch light-check (minor-substantive); can escalate a misrouted major back to trial.\n7. `recall-audit`: Mode A revives wrongly-dropped charges (bias to revive); Mode B spot-checks strong-consensus majors before the edit.\n8. `drafter`: minimal-edit patch for valid-fixable charges.\n9. `edit-audit` / `meaning-audit`: `edit-audit` checks a risky non-anchor edit (make-sense + cross-section alignment); `meaning-audit` is the four-state frozen-anchor + arc audit.\n10. `clerk`: the round boundary: reconcile carried open-questions against this round's edits, dedup re-raises, and emit the deterministic convergence counts.\n\nAlso present: `review-panel.workflow.js`, a quick 3-lens panel (fast path).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eThe three primitives: Skill + Workflow + Memory\u003c/b\u003e\u003c/summary\u003e\n\n1. **Skill (entry point + methodology):** the protocol, reviewer assignment, the consensus gate, the writing toolkit, the human gates. Detail in `references/review-engine-v3.md`, `references/reviewer-personas.md`, `references/writing-toolkit.md`.\n2. **Workflow (fan-out engine):** the semantic, no-human-in-the-middle steps run as Workflows (parallelism plus schema-validated output). The deterministic guards run orchestrator-side via Bash because the Workflow sandbox has no fs.\n3. **Memory (durable state + learned conventions):**\n   - **Ledger**: `LEDGER.json` resolved at runtime = the machine source of truth, plus a rendered `LEDGER.md` view; managed by `scripts/ledger.js`. The live, mutable issue state across rounds and sessions.\n   - **Claude memory**: the active project's memory — stable conventions worth recalling next session (this paper's house style, venue, persona tuning).\n\n**Reviewers** are N domain-expert holistic reviewers (default 3, range 2-4), assigned at runtime to the paper's subfields, all sharing a senior-reviewer gatekeeper core (harsh, precise, constructive; separate fatal flaws from fixable nits; reason across sections). When a slot cannot be confirmed (headless) it degrades to a generic gatekeeper (one bad slot never degrades the whole panel); the generic fallback lenses are Theory / Foundations, Empirical / Benchmark, and Applied / Systems (an unordered tendency, not fixed slots).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eThe six hard rules\u003c/b\u003e\u003c/summary\u003e\n\n1. **Never edit the manuscript without explicit author sign-off.** Auto-mode carve-out: the rule HOLDS; auto satisfies it via up-front sign-off (the `spine` + reviewer-assignment confirmation plus the pre-authorized bounded-aggressive policy) plus the return queue, not per-edit sign-off.\n2. **Reviewers / jurors are isolated.** Fresh eyes per round: no cross-talk, no prior-round leakage, no sight of the `ledger`. Enforced by what goes into each agent's prompt AND an explicit ISOLATION instruction in every reviewer-type prompt.\n3. **Every valid-fixable issue carries a `close_criterion`** (one concrete sentence describing what an edit must satisfy), set by the judge.\n4. **No leakage into the reviewed text.** Revision logs, back-translations, and self-check verdicts are author-side aids; they never enter the manuscript or any frozen snapshot.\n5. **Disagreement resolves through discussion, then override (logged), never a silent dismissal.**\n6. **No hardcoded paths or project files in the skill.** Resolve at runtime.\n\n\u003c/details\u003e\n\n---\n\n## Architecture \u0026 privacy\n\n- The Workflow sandbox has no filesystem and no subprocess; that is why all deterministic guards run orchestrator-side via Bash between workflow calls.\n- `compile-guard.js` is explicit about what it cannot verify: when it cannot truly compile, it degrades to structural lint and reports `compiled:null`.\n- Submission-readiness is cross-mode, two parts: **A** = `compliance-check.js` plus a semantic agent; **B** = a compile-driven layout loop reusing `compile-guard.js` plus Read-on-PDF.\n\n\u003e [!NOTE]\n\u003e Your project files, ledger, journal, and patches stay inside your local paper project. PaperJury has no backend or server of its own, so nothing is sent to a PaperJury server. The review runs through your own Claude Code session, which means the model itself runs in the cloud: how your content is handled there follows the terms and settings of that Claude Code environment, not anything PaperJury adds on top.\n\n## Project structure\n\n| Path | Purpose |\n|---|---|\n| `.claude-plugin/` | Claude Code marketplace packaging metadata. |\n| `workflows/` | Semantic stages: reviewer assignment, coverage, merge, trial, recall audit, drafting, and convergence. |\n| `scripts/` | Deterministic guards: ledger, journal, apply-patch, anchor-diff, cross-ref, compile-guard, doctor, and related checks. |\n| `references/` | Engine protocol, ledger schema, reviewer personas, writing toolkit, and methodology notes. |\n| `docs/` | Design notes, interactive overview, arXiv paper PDF, and agent driving guide. |\n| `samples/dogfood/` | Before/after PDFs and a human-verified run report from a real dogfood run. |\n| `tests/` | Tests for deterministic scripts and core state-machine behavior. |\n\n---\n\n\u003c/details\u003e\n\n## Roadmap\n\nWhere this is going (planned unless checked):\n\n- [x] 🔔 **Soft update reminders.** Check for newer stable release tags at startup and show a non-blocking update notice.\n- [ ] **Fast mode / quick version.** A lower-latency, lower-token path for fast triage when you want useful triage more than full courtroom depth.\n- [ ] **Reviewer personas tuned to each venue community's taste.** CVPR, ACL, and NeurIPS reviewers do not critique the same way; the goal is a reviewer that carries each community's expectations.\n- [ ] **Vision-based layout verification**: compile, render, and check the visual layout (column overflow, figure placement), not just the compile log.\n- [ ] **Automatic venue detection** from your `.cls` / template.\n- [ ] **Validation of the engine on real papers at scale.**\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eMore file and path references\u003c/b\u003e\u003c/summary\u003e\n\n- Engine protocol: `references/review-engine-v3.md`\n- Auto protocol: `references/auto-mode.md`\n- Personas / writing toolkit / methodology: `references/reviewer-personas.md`, `references/writing-toolkit.md`, `references/methodology.md`\n- Ledger schema + status machine: `references/ledger-schema.md`\n- Submission compliance: `references/submission-compliance.md`\n- Design rationale: `docs/REVIEW_ENGINE_V3_DESIGN.md`\n- Scripts dir: `scripts/` (decompose, extract-docx, ledger, journal, apply-patch, anchor-diff, cross-ref, spine, rekey, compile-guard, compliance-check, doctor)\n- Workflows dir: `workflows/` (assign-reviewers, reading-check, coverage-auditor, merge, trial, polish, recall-audit, drafter, edit-audit, meaning-audit, clerk, review-panel)\n\n\u003c/details\u003e\n\n**Learn more:** [`docs/AGENT-GUIDE.md`](docs/AGENT-GUIDE.md) (driving guide) · [`docs/REVIEW_ENGINE_V3_DESIGN.md`](docs/REVIEW_ENGINE_V3_DESIGN.md) (design rationale) · [live interactive overview](https://u7079256.github.io/paperjury/overview.html?lang=en)\n\n---\n\n## Credits\n\nThe spine and anti-drift design (the anchor logic-transfer audit, the claim register, and the minimal-edit, intent-preserving revision policy) is inspired by [PaperSpine](https://github.com/WUBING2023/PaperSpine), a motivation-driven paper drafting and rewriting skill. PaperSpine is a forward generate/rewrite tool with no adversarial loop; PaperJury borrows its anchoring idea and its \"deterministic scripts for checkable steps, model agents for judgment\" mechanism, then adds the adversarial courtroom review engine on top.\n\n---\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=u7079256/paperjury\u0026type=Date)](https://www.star-history.com/#u7079256/paperjury\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu7079256%2Fpaperjury","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fu7079256%2Fpaperjury","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fu7079256%2Fpaperjury/lists"}