[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82156":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":23,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":14,"starSnapshotCount":14,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},82156,"deltasci","boheling\u002Fdeltasci","boheling","A verification layer for scientific work",null,"Python",125,18,12,0,3,54,93,29,79.14,"MIT License",false,"main",true,[],"2026-06-12 04:01:37","# DeltaScience\n\n> **A verification layer for scientific work.**\n> Paste any scientific text — or a whole PDF — and every PMID, DOI, arXiv ID and GitHub repo is checked against the real record: does it exist, does its metadata match, does the cited paper support the claim? Fabricated and mis-cited references are flagged. Deterministic, no API key.\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Python 3.10+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10+-blue.svg)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n[![Status: alpha](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-alpha-orange.svg)](#)\n[![Live demo](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdemo-boheling.github.io%2Fdeltasci-2f6f5b)](https:\u002F\u002Fboheling.github.io\u002Fdeltasci)\n\n**▶ [Live demo & interactive verifier](https:\u002F\u002Fboheling.github.io\u002Fdeltasci)** — paste a paragraph, watch it catch a fabricated or mis-cited reference.\n\n---\n\n## What is DeltaScience?\n\nDeltaScience checks the citations in scientific writing against the real record — whether you drafted the text yourself or with an AI. Its core is a **citation verifier**: paste a paragraph, a hypothesis, or a whole paper, and every identifier is checked against PubMed \u002F Crossref \u002F OpenAlex \u002F arXiv \u002F DataCite \u002F GitHub — does it exist, does its metadata match, and does the cited paper actually support the claim? It is **deterministic** (real lookups + string matching, no LLM in the trust path), so it runs with **no API key**.\n\nAround that trust path it adds the **discovery** layer: **`scan`** (retrieve the closest real prior work) and **`gap`** (a coverage-honest read of how crowded an area is) — plus a workflow layer that runs the right ones for your goal (`grant`, `paper`, `review`, `ideate`). The principle is **no LLM in the *trust path***, not \"no LLM anywhere\": `verify` must be deterministic, but discovery is better with intelligence. So `scan`\u002F`gap` run keyless out of the box (deterministic term-overlap retrieval), and get sharper when an agent drives them — pass your own queries with `scan --query \"…\"`, or let the [`deltasci-ground` skill](#inside-claude-code) write the queries and reason over the results. A weak discovery pass can only make you *miss* prior art; it can never corrupt a verdict.\n\nIt also includes the **two-perspective co-reasoning mode** it grew out of — a domain scientist and an ML engineer talk an idea through in structured rounds (`deltasci run`, needs an LLM), documented below. The verifier is the part that stands on its own.\n\nIt ships in two form factors:\n\n1. **`pip install deltasci`** — a Python CLI + library.\n2. **Claude Code skills** — install `skill\u002F` for the two-perspective hypothesis mode (`deltasci`), and\u002For `skill-ground\u002F` for the **grounding layer** (`deltasci-ground`), where the agent drives scan → gap and calls the deterministic engine to verify.\n\nBoth share the same domain packs (biomed, materials, climate, plus your own).\n\n## Why two perspectives?\n\nFree-form chatbot brainstorming gives plausible-sounding research ideas with no grounding. Single-prompt \"be a scientist\" approaches collapse two distinct expertises (domain mechanism, ML feasibility) into one voice and produce mush. DeltaScience keeps them separate:\n\n```\nRound 1  Domain Scientist  → mechanism, unmet need, prior evidence, constraints\nRound 2  ML Engineer       → data representation, method, precedents, risks\nRound 3  Domain Scientist  → refinement, evaluation realism, falsifiable prediction\nRound 4  ML Engineer       → revised plan, formulas, implementation, expected outcomes\n                ↓\n            Synthesis: a grounded, falsifiable hypothesis with citation trail\n```\n\nA complete deltasci run produces six artifacts: hypothesis, experiment protocol, risk register, adversarial challenger findings, citation audit, and a transcript of the dialogue that produced them — all auditable, all in one navigable run directory.\n\nSix things make it different from \"just prompting an LLM\":\n\n| | DeltaScience | Free-form LLM |\n|--|--|--|\n| **Grounding** | Every claim tagged with type, source, AND AI's training-coverage self-assessment (`well-covered` \u002F `sparse`) | Untagged; mixes facts and vibes |\n| **Honest about AI's edges** | Material outside training distribution is emitted as `[KNOWLEDGE_GAP]` for the researcher, not fabricated | Confabulates citations to fill gaps |\n| **Falsifiability gate** | Synthesis refuses to emit a hypothesis without a measurable threshold | \"It might work!\" |\n| **Epistemic humility gate** | Synthesis refuses if zero `KNOWLEDGE_GAP` and zero `NOVEL_SYNTHESIS` across the dialogue (a complete-certainty transcript is itself a hallucination signal) | No such check |\n| **Citation audit pillar** | Every PMID\u002FDOI\u002FarXiv ID\u002FGitHub repo\u002FGEO accession in a CLAIM is verified against the real PubMed\u002FCrossref\u002FOpenAlex\u002FGitHub record; metadata mismatches surface as a prominent \"FAILED AUDIT\" section (this catches the BioIntel-style failure where a fabricated PMID got a green checkmark) | \"I checked it\" with no actual fetch |\n| **Adversarial challenger** | A second-opinion model (optionally a different provider via `--challenger-llm`) tries to break the hypothesis; its findings are first-class output and its own citations get audited too | None |\n| **Structured protocol + risks** | Hypothesis ships with a concrete 6-step experiment plan and a ranked risk register; both flow through the same audit pillar | Hypothesis text only |\n| **Domain awareness** | Pluggable domain packs parameterize the expert lens | Generic \"be a scientist\" |\n\n### The three first-class tags\n\n```\n[CLAIM type=\u003CTYPE> coverage=\u003CCOVERAGE> source=\"\u003CCITATION>\"]\u003Ctext>[\u002FCLAIM]\n[KNOWLEDGE_GAP category=\u003CCATEGORY>]\u003Cquestion for the researcher>[\u002FKNOWLEDGE_GAP]\n[NOVEL_SYNTHESIS rationale=\"\u003Cone-line>\"]\u003Cthe connection you're proposing>[\u002FNOVEL_SYNTHESIS]\n```\n\n`coverage` ∈ `{well-covered, sparse}`. Material the AI thinks is `uncovered` (lab-tribal, paywalled, niche, non-English, the researcher's pilot data, etc.) is **never** allowed as a CLAIM — it must be a `KNOWLEDGE_GAP`. Connections the AI is *making* (not citing) are `NOVEL_SYNTHESIS`. This is exactly the line between \"AI knows what's well-discussed online\" and \"the researcher knows what's at the frontier of their field\" — DeltaScience surfaces it instead of papering over it.\n\n## Install\n\n```bash\npip install deltasci                    # core (CLI + library)\npip install \"deltasci[anthropic]\"       # + Anthropic adapter\npip install \"deltasci[openai]\"          # + OpenAI adapter\npip install \"deltasci[all]\"             # both\n```\n\nProvider keys are read from the environment (`ANTHROPIC_API_KEY` or `OPENAI_API_KEY`).\n\n## Quick start\n\n### One-liner (Materials)\n\n```bash\nexport ANTHROPIC_API_KEY=...\ndeltasci run \\\n  --pack materials \\\n  --idea \"Train a graph neural network on the Materials Project to identify Li-ion cathode candidates in the spinel family with predicted voltage > 4.3V.\"\n```\n\nOutputs go to `.\u002Fdeltasci-output\u002F\u003Ctimestamp>_\u003Cslug>\u002F` in a numbered staged layout:\n\n```\n00_idea.md\n01_framing\u002F      02_engineering\u002F    03_refinement\u002F    04_plan\u002F      (per-round transcripts)\n05_synthesis\u002F    hypothesis.md + summary.json (three-section evidence trail + falsifiability)\n06_protocol\u002F     protocol.md + experiment_plan.json (concrete, execution-ready plan)\n07_risks\u002F        risks.md + risk_register.json (5–10 ranked failure modes + mitigations)\n08_audits\u002F       citations.json + codex.md (citation audit + adversarial challenger)\nmanifest.json    (run-level metadata)\n```\n\nThe web UI at `deltasci view \u003Crun-dir>` (auto-launched at the end of `deltasci run` unless you pass `--no-view`) renders all of this with the audit results, including any `FAILED AUDIT` section showing both what the AI claimed and what was actually at the cited identifier.\n\n### Try it without an API key\n\n```bash\ndeltasci demo --pack biomed --llm mock\n```\n\nThis runs a deterministic mock LLM end-to-end so you can see the output shape.\n\n### Inside Claude Code\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fboheling\u002Fdeltasci\ncd deltasci\nbash skill\u002Finstall.sh         # deltasci — two-perspective hypothesis mode\nbash skill-ground\u002Finstall.sh  # deltasci-ground — the scan → gap → verify grounding layer\n```\n\nThen in Claude Code, for the grounding layer (the agent writes the queries and reasons; `verify` stays deterministic — no key):\n\n> *\"Ground this idea: an experience-learning framework with RL for LLM-agent skill evolution.\"*\n> *\"Verify the citations in paper.pdf.\"*\n\n…or for the hypothesis mode:\n\n> *\"Use deltasci with the climate pack to generate a hypothesis for: train a neural emulator on ERA5 to downscale Sahel precipitation.\"*\n\n## Verify citations in *any* text (no run required)\n\nDeltaScience's citation-audit pillar also ships as a standalone verifier you can point at **any** LLM-generated scientific text — a pasted related-work section, a JSON list of claims, or a `.bib` file. It checks that each cited PMID \u002F DOI \u002F arXiv \u002F GitHub identifier exists, that its metadata matches, and (by default) that the cited paper actually *supports* the claim — catching the \"real paper, wrong citation\" failure that plagues autonomous AI-scientist pipelines. **No provider API key required.**\n\n```bash\ndeltasci verify --file related_work.md          # untagged prose\necho \"X drives Y (PMID 35562209).\" | deltasci verify --file -\ndeltasci verify --text '…' --json               # machine output; exit code 2 on any failed audit\n```\n\nEach claim gets a verdict: `PASS` \u002F `FABRICATED` \u002F `METADATA-MISMATCH` \u002F `UNSUPPORTED` \u002F `UNVERIFIABLE` \u002F `SKIPPED`.\n\n### As an MCP server\n\nVerify generated citations from inside any MCP client (Claude Code\u002FDesktop, Cursor) or AI-scientist pipeline — without forking anything:\n\n```bash\npip install \"deltasci[mcp]\"\nclaude mcp add deltasci-verify -- deltasci-mcp\n```\n\nIt exposes one tool, `verify_scientific_claims(text, format, check_support)`, returning the same per-claim verdicts.\n\n### Verify a whole paper (PDF)\n\nReal papers cite by number, with the references in a bibliography at the bottom — so a pasted paragraph only has `[12]`, nothing to resolve. Paper mode ingests the whole document: it parses the bibliography, **resolves every reference to a real record** (embedded DOI\u002FPMID\u002FarXiv, or a Crossref title lookup), links each in-text marker to its reference, and checks each citation **in the context of the sentence that cites it**.\n\n```bash\npip install \"deltasci[pdf]\"\ndeltasci verify --pdf paper.pdf                 # verify every numbered citation in context\ndeltasci verify --pdf paper.pdf --max-references 30   # fast first pass on a big bibliography\ndeltasci verify --paper --file paper.txt        # pasted full text (body + references)\ndeltasci verify --pdf paper.pdf --llm anthropic # LLM fallback for author-year \u002F messy bibliographies\n```\n\nThe web UI (`\u002Fverify`) also accepts a PDF upload and shows one card per citation — its verdict, the in-text sentence it was cited in, and a link to the real record. Deterministic by default (no API key); the `--llm` fallback only structures messy bibliographies — every citation is still verified against the real record deterministically.\n\n> **Note:** arXiv references are verified via their DataCite DOI (reliable, no rate-limit issues), so arXiv-heavy CS papers work too. The *claim-to-abstract support* check is PubMed-only — non-PubMed references get existence + metadata verification rather than claim-context. Author-year bibliographies (no `[n]` numbers) are handled by extracting and verifying every cited identifier; use `--llm` for full per-claim context on those.\n\n## Built-in domain packs\n\n| Pack | Display name | What it lenses |\n|------|--------------|----------------|\n| `biomed` | Biomedical Sciences | mechanism, patient framing, evidence base, IRB \u002F regulatory pathway, translational realism |\n| `materials` | Materials Science | first principles, composition\u002Fstructure space, DFT bias, synthesizability, validation pathway |\n| `climate` | Climate & Earth Sciences | physical conservation, observational data ecosystem, statistical regime, decision relevance |\n\nList them: `deltasci list-packs`. Inspect one: `deltasci show-pack biomed`.\n\n## Author your own domain pack\n\nA domain pack is **two files** in a directory:\n\n```\nmy_pack\u002F\n├── pack.toml      # metadata + evidence rules + scoring rubric\n└── lens.md        # the domain expert's reasoning lens (markdown)\n```\n\nScaffold one:\n\n```bash\ndeltasci init-pack neuroscience\n# ... edit pack.toml and lens.md ...\ndeltasci validate-pack .\u002Fpacks\u002Fneuroscience\ndeltasci run --pack .\u002Fpacks\u002Fneuroscience --idea \"...\"\n```\n\nSee [`docs\u002FAUTHORING_DOMAIN_PACKS.md`](docs\u002FAUTHORING_DOMAIN_PACKS.md) for the full guide.\n\n## Comparison\n\n| Tool | Scope | Open source | License | Domain-pluggable | Falsifiability gate |\n|------|-------|-------------|---------|------------------|---------------------|\n| **DeltaScience** | Hypothesis ideation | ✅ | **MIT** | ✅ packs | ✅ hard requirement |\n| ChatGPT \u002F Claude direct | Generic chat | n\u002Fa | n\u002Fa | manual prompts | ❌ |\n| AI Scientist (Sakana) | Full paper generation | ✅ | Apache 2.0 | partial | ❌ |\n| Coscientist (CMU) | Chemistry experiment design | partial | research | locked | partial |\n| Galactica \u002F scite \u002F Elicit | Literature retrieval | ✅\u002F❌ | mixed | n\u002Fa | n\u002Fa |\n\nDeltaScience deliberately occupies a small niche: *get to a defensible hypothesis*. It hands off to your favourite paper-writing or experiment-design tool downstream.\n\n## Library API\n\n```python\nfrom deltasci import CoReasoner, Config, load_pack\nfrom deltasci.llm import get_adapter\n\npack = load_pack(\"biomed\")\nllm = get_adapter(\"anthropic\")\nreasoner = CoReasoner(pack=pack, llm=llm, config=Config(num_rounds=4))\n\nresult = reasoner.run(idea=\"Predict checkpoint-immunotherapy non-response in TFE3-fusion osteosarcoma from spatial transcriptomics.\")\nprint(result.hypothesis.title)\nprint(result.hypothesis.falsifiability.threshold)\nprint(result.hypothesis.feasibility_scores.overall)\n```\n\nThe full hypothesis schema is documented in [`docs\u002FARCHITECTURE.md`](docs\u002FARCHITECTURE.md).\n\n## Configuration\n\nEnvironment variables:\n\n| Variable | Default | Notes |\n|----------|---------|-------|\n| `DELTASCI_LLM_PROVIDER` | auto | `anthropic`, `openai`, `mock`, or `auto` |\n| `DELTASCI_MODEL` | provider default | model id override |\n| `DELTASCI_OUTPUT_DIR` | `.\u002Fdeltasci-output` | where outputs are written |\n| `ANTHROPIC_API_KEY` | — | required for `--llm anthropic` |\n| `OPENAI_API_KEY` | — | required for `--llm openai` |\n\nCLI flags override env vars (`--llm`, `--model`, `--out`).\n\n## Privacy & ethics\n\nDeltaScience runs locally and does not phone home. The only outbound traffic is to whatever LLM provider you choose. No telemetry, no user accounts, no server.\n\nIf you use it for clinical, regulatory, or high-stakes research work, **the falsifiability gate is not a substitute for IRB review, regulatory pathway analysis, or clinical validation.** The tool is an ideation aid, not a decision-maker.\n\n## Citation\n\nIf DeltaScience helps your research, citing it as:\n\n```bibtex\n@software{deltascience2026,\n  title  = {DeltaScience: Two-Perspective Co-Reasoning for AI4Science Hypothesis Generation},\n  author = {{DeltaScience contributors}},\n  year   = {2026},\n  url    = {https:\u002F\u002Fgithub.com\u002Fboheling\u002Fdeltasci},\n  note   = {Version 0.1.0}\n}\n```\n\n## Contributing\n\nContributions welcome — especially **new domain packs**. See [`CONTRIBUTING.md`](CONTRIBUTING.md). The fastest path:\n\n1. Open a [domain pack proposal issue](.github\u002FISSUE_TEMPLATE\u002Fdomain_pack_proposal.md).\n2. Author the pack (≈50 LOC of TOML + 1 markdown file).\n3. Open a PR with `validate-pack` output and one example transcript.\n\n## License\n\nMIT — see [`LICENSE`](LICENSE).\n","DeltaScience 是一个用于科学工作验证的工具，能够检查科学文本中的引用是否真实存在、元数据匹配以及被引用论文是否支持原文中的主张。其核心功能包括自动检测并标记出伪造或错误引用的参考文献，通过PubMed、Crossref等数据库进行实际比对，确保结果的准确性与可靠性。此外，它还提供探索层和工作流层的功能，帮助用户在撰写论文、申请基金或进行文献综述时发现相关领域的研究现状及空白点。适合于需要保证科研诚信的各种学术场景中使用，尤其是当涉及到AI辅助生成的研究假设时。项目采用Python编写，提供了命令行界面和Claude Code技能两种形式供用户选择。",2,"2026-06-11 04:07:53","CREATED_QUERY"]