Skip to content

πŸ’‘ Inspiration: what this project borrowed, and from where

Status: reference. Written 2026-08-13. Updated 2026-08-24.

Every external idea this project took, what was taken, and -- where it matters -- what was deliberately not taken. Credit is the first purpose; the second is that knowing which upstream a design came from is the fastest way to understand why it has the shape it does.

Written for anyone wanting the provenance of a design decision, and anyone checking this project's licence hygiene.

Not covered here: the citation provenance of a draft, which is a different question entirely and belongs to the review layer (CITATION-PROVENANCE.md). This file is about where the pipeline's own ideas came from, not where a draft's claims came from.

🧭 Table of contents

✍ The drafting layer's method

  • hadufer/claude-storm (MIT License) -- the .claude/skills/deep-research/ skill and its deep-research-interviewer/deep-research-writer subagents adapt its 7-phase pipeline (perspective discovery, parallel grounded interviews, contradiction mapping, outline, cited writing, synthesis, self peer-review). Retooled here for a closed, citekey-grounded local corpus instead of live web sources -- see reference.md in that skill's directory for exactly what changed and why.
  • stanford-oval/storm -- the original STORM method claude-storm implements: "Assisting in Writing Wikipedia-like Articles From Scratch with Large Language Models" (Shao, Jiang, Kanell, Xu, Khattab, Lam; NAACL 2024; arXiv:2402.14207).
  • Nav Toor's (@heynavtoor) 4-prompt adaptation, fused into claude-storm's pipeline and carried through into deep-research's synthesis-briefing and single-reviewer (quick depth) peer-review phases.
  • K-Dense-AI/scientific-agent-skills (MIT at the repository root, (c) 2025 K-Dense Inc.; per-skill license: frontmatter diverges from it -- four skills declare none and two are non-commercial, so check the skill rather than the root before reusing anything). Read 2026-08-28 as a peer project: a skills repository in the same format family as .claude/skills/. Three ideas are credited to it and none of its text is used.

  • A numeral in prose is a claim too. Its writing skill errors on a line containing a number with no claim marker. This project's gate proves a citekey is real; nothing proves a magnitude came from anywhere, which is the gap FEATURE-ROADMAP.md's C4 records.

  • Missing is not zero. Its rubric records each criterion as rated, missing or not-applicable, refuses to encode a missing one as zero, and emits a coverage warning beside any aggregate. REVIEW.md adopts the distinction for this project's aids.
  • Publish a score, then show its fragility. Its weight-sensitivity pass perturbs each weight and reports whether the ordering flips -- a way to let a number exist without it becoming the thing optimised.

Two things were read and deliberately not taken. Its citation verification is a human attestation -- two booleans in a JSON file the agent itself writes, with the reference checker network-free and syntax-only by design -- so it is an evidence bookkeeping system where this project has an enforcement one. And its claim hash is format-checked but never recomputed from the manuscript, so it cannot detect a claim edited after verification: the same decays-while-looking-authoritative failure this project refuses for author provenance (DESIGN.md) and avoids by regenerating sections.md rather than trusting it. - ITER-RETGEN -- Shao, Gong, Shen, Huang, Duan and Chen, "Enhancing Retrieval-Augmented Large Language Models with Iterative Retrieval-Generation Synergy", Findings of EMNLP 2023, pp. 9248-9274. The idea behind FEATURE-ROADMAP.md's E4: form the next retrieval query by concatenating the previous generation with the question, so no model call is needed to write a query. Credited as a published method rather than a codebase; the adaptation -- a person's own draft standing in for the generation -- is not something the paper proposes, and the paper explicitly does not cover long-form generation. - RUC-NLPIR/FlashRAG (MIT) -- read as a reproduction surface rather than for code. Two mechanisms credited: its IRCoT pipeline's cross-round document merge (dedupe by id, max(old, new) on the score, re-sort) which E4 adopts with the cap that implementation is missing, and its habit of writing every round's retrieval, prompt and prediction into the record as a per-iteration trace. Its evidence on determinism is cited in RAG.md against itself: seeded runs still varied, because sampling was on by default, batching was composition-dependent and the inference backend changed the result. - run-llama/llama_index (MIT core, read at v0.14.24) -- read only for its response-synthesis shapes. C5's citekey-union invariant comes from the observation that four of its five modes can drop a source with no error and no log, and that only the mode keeping one output slot per input can say which source went missing. The invariant itself is not theirs -- it is what their failure modes imply. - Imbad0202/academic-research-skills -- the idea behind deep-research's standard/deep-depth peer review (an independent multi-reviewer panel including a dedicated adversarial reviewer, reconciled against a concession threshold) is credited to that project's Stage-3 peer-review design. That project is licensed CC-BY-NC 4.0; no text from it was copied -- .claude/agents/peer-reviewer.md and .claude/skills/deep-research/reference.md Β§7 are written from scratch, adapting only the concept of an independent panel plus a Devil's Advocate role, not its implementation.

🀝 Code standards

  • wojteklu/clean_code.md -- the widely-circulated summary of Robert C. Martin's Clean Code: A Handbook of Agile Software Craftsmanship (Prentice Hall, 2008). This is the source standard behind CODE-STANDARDS.md: its section structure (general rules, design, names, functions, comments, source structure, tests, code smells) is the checklist that document is written against, and the rule-by-rule table there records which rules are enforced, which are left to review, and which do not apply to a stdlib-heavy, classless Python codebase.

Two of its rules are load-bearing here in a way worth naming:

  • Its comment rules -- explain intent, clarify, warn of consequences -- are the canonical support for this repository's house style of dense rationale comments. The rule the canon actually states is "don't be redundant", not "don't comment", and the difference is the whole of CODE-STANDARDS.md's comment section.
  • Its code smells vocabulary -- rigidity, fragility, immobility, needless complexity, needless repetition, opacity -- is adopted directly as the review vocabulary, because naming a smell is what turns "this feels wrong" into a reviewable claim.

πŸͺ Harness engineering

  • walkinglabs/awesome-harness-engineering -- a curated list for harness engineering: "the practice of shaping the environment around AI agents so they can work reliably." That is a fair description of what most of this repository actually is. The categories it tracks map onto parts of this project closely enough to be worth stating, both as credit and as a reading list for whichever part you are about to change:
Its category Where this project does that
Specs, agent files & workflow design CLAUDE.md, AGENTS.md, DEVELOPER-AGENTS.md (git checkout only), .claude/skills/
Constraints, guardrails & safe autonomy The citation gate and its PostToolUse hook; the review layer's rule that it never blocks (SOUL.md)
Context, memory & working state The dossier (DRAFT-ITERATION.md), and TOKENS.md for what context costs
Evals & observability The review layer's seven aids, and AUTO-IMPROVEMENT.md's unbuilt agenda
Foundations SOUL.md and DESIGN.md

The gap that list makes most obvious is evals: this project has review aids and a gate, and no benchmark suite measuring whether the drafting layer is getting better. PERFORMANCE.md measures the deterministic half only, and a parked evaluation-harness proposal is the open thread.

  • Four public hook collections, read together when working out what a second PostToolUse hook should look like and why the existing launcher is not portable, both recorded issues. What each contributed, and what was refused, is set out in HOOKS.md; in brief:
Upstream Taken Not taken
obra/superpowers The fail-silent contract for a context injection, and the caution that the advisory-context field name differs per host The polyglot run-hook.cmd, which needs shell form and so cannot coexist with exec form
addyosmani/agent-skills The standard-envelope rule, and testing that a hook's payload parses Its jq dependency, against the stdlib-only posture
shanraisshan/claude-code-best-practice The survey of hook events, output fields and version-gated options behind this project's if and async notes Its per-hook enable/disable config -- the gate must not be individually disableable
affaan-m/ECC The principle that paths are resolved in the interpreter, not in the shell The dispatcher process, which trades away fault isolation

The refusals matter as much as the borrowings. Three of the four are fail-silent by design, which is right for what they protect and would be a silently inert citation gate if copied across.

πŸͺ Hook architecture as a first-class layer

  • jcode -- hooks as shell commands fired at turn, session and tool boundaries, alongside skills and memory, rather than as an add-on. Read against this repository's own hook layer in 2026-08, which is what surfaced the asymmetry issue 431 fixes: every registry row was keyed on a write under content/drafts/, and nothing hooked a change to chitragupta/. Nothing of jcode's own architecture is adopted -- its daemon/client split, its semantic skill matching and its lane-aware queue all answer questions this project does not have.
  • OpenClaw -- the same observation from the other direction: hooks on gateway events, and a four-tier memory stack. Its heartbeat, a periodic agent turn driven by a checklist, was considered as the "driver" the developer loop was said to lack and rejected on this project's own terms: R3 rules out a mechanism aimed at minimising a count, and a timed turn whose job is to find debt to pay is a ranked worklist with a clock on it. Recorded in plans/f-auto-improvement-adoption.md, which retires that loop.

Both were read as secondary sources -- jcode's published documentation, and third-party write-ups of OpenClaw rather than its own docs -- so what is credited here is the idea each made visible, not a claim about either implementation's detail.

πŸ—Ί The feature roadmap

Two upstreams behind FEATURE-ROADMAP.md. Both are Apache-2.0, and copying from both was offered and declined -- the cost of declining was measured at roughly one PR, and that document's "borrowing posture" section has the working. Nothing is copied from either; where the roadmap quotes them it quotes them as evidence for a design claim, and every implementation is written here from scratch. Which makes this the ordinary case for this file, not an exception to it.

  • AkariAsai/OpenScholar (Apache-2.0) -- "OpenScholar: Synthesizing Scientific Literature with Retrieval-Augmented Language Models" (Asai, He, Shao, Shi, Singh, Chang, Lo, Soldaini, et al.; arXiv:2411.14199). Four ideas behind the roadmap's synthesis half:
  • Cap passages per source, then truncate -- the ordering is what produces source diversity, because dropping one paper's fourth-best passage promotes another paper's into the window the drafter sees.
  • Instruct synthesis across sources explicitly, rather than a paper-by-paper summary, so a paragraph fuses several sources.
  • A feedback pass before the final artefact, and the observation that its safety guard has to be something other than a length ratio.
  • Post-hoc citation attribution as a repair pass -- taken chiefly as a negative result: it is a prompt, not a verifier, which is why the roadmap plans a real entailment check as new work rather than a port.

Not taken: its positional [n] citation numbering, which reorders meaning whenever the passage list changes and is the opposite of a citekey; its dead code paths; and its import graph, which pulls a GPU stack unconditionally.

  • dwzhu-pku/PaperBanana (Apache-2.0), and the Google Research project it forks, PaperVizAgent -- a multi-agent framework for academic illustration. Three ideas behind the roadmap's figure half:
  • Commit to a layout metaphor before drawing -- pipeline, layered stack, control loop, branching tree, hub-and-spoke -- which is the idea most likely to fix figure sprawl at its source.
  • A defect catalogue is more useful than a style guide for layout. Its evaluation rubric, not its style guide, is where the concrete layout defects are, and one of them is written for LaTeX specifically.
  • A critique loop's shape: bounded rounds, a structured payload, an explicit "nothing to change" exit, and keeping the last good render.

Not taken: image generation itself, and this is the substantive refusal. Its own published comparison shows the image route inverting a relationship between two series, duplicating a category, and drawing a bar taller than its own gridline where the code route was correct every time. A generator that draws a bar taller than its value is fabricating data, which is the failure this project exists to prevent. Its style guide's content is also raster-oriented and does not survive translation to TikZ.

πŸ•Έ Topic discovery

Seven upstreams behind TOPIC-DISCOVERY.md's design (G5-G9; plans/g5-topic-discovery.md). As everywhere in this file: ideas taken, no text or code copied, and the refusals are as load-bearing as the borrowings.

  • HKUDS/MiniRAG (MIT; Fan, Wang, Ren and Huang, arXiv:2501.06713) -- the heterogeneous graph: documents and concepts in one structure, so a single traversal answers "which papers" and "which topics relate" together, plus topology-based scoring (personalised PageRank from resolved seed topics, G7) in place of LLM reasoning at query time. Not taken: its (S)LM entity extraction at index time -- BERTopic and c-TF-IDF already supply the concept layer statistically -- its LLM answer-type prediction at query time, and its Neo4j/PostgreSQL backends, all scale or generative machinery a 500-paper corpus does not want.
  • AkariAsai/OpenScholar (Apache-2.0; arXiv:2411.14199), a second borrowing from a repository the roadmap section above already credits -- this time its retrieval half: the bi-encoder-recall-then-cross-encoder-precision cascade (G7's rerank tier), candidate-pool union with one scorer as the common scale, and capping passages per paper so one long source cannot dominate. Not taken: its LLM self-feedback loop and post-hoc citation attribution (citekeys are structurally guaranteed here, so the subsystem solves a problem this project defined away), its 45M-paper serving infrastructure, and its citation-count prior, which needs a live API against a corpus that is deliberately closed.
  • Marker-Inc-Korea/AutoRAG (Apache-2.0), the archived 1.x tool only -- the evaluation methodology behind G8: a small hand-labelled gold set (query -> expected ids), node-wise greedy sweeps, and Recall@k/MRR/ NDCG per pipeline stage, so every knob change is a measured decision. Not taken: AutoRAG 2.x entirely (an LLM agent at query time), its LLM-generated QA datasets (hand-writing ~40 gold queries is more trustworthy at this scale), and the framework itself.
  • run-llama/llama_index (MIT) -- the fusion-retriever pattern (lexical and dense rankings fused by Reciprocal Rank Fusion; Cormack, Clarke and BΓΌttcher, SIGIR 2009) and the property-graph data model persisted as one JSON store. Not taken: the framework as a dependency -- at this scale RRF and the graph store are each a page of code -- and every LLM-driven retriever beside the borrowed one (synonym expansion, text-to-Cypher, multi-query generation).
  • RUC-NLPIR/FlashRAG (MIT; arXiv:2405.13576) -- the component taxonomy (retriever / reranker / refiner as swappable seams) and, chiefly, the extractive refiner: compress by selecting the most relevant sentences rather than generating a summary, which is what --out's verbatim snippets are. Not taken: every generator, the abstractive and perplexity-based refiners, and the iterative LLM pipelines (Self-RAG, FLARE, IRCoT).
  • PrithivirajDamodaran/FlashRank (Apache-2.0) -- the licence, so to speak, for G7's precision tier: tiny CPU cross-encoders are a legitimate last-mile scorer with no generative model and no GPU, and capping the scored pair length is the latency lever. Not taken: its 7B generative listwise reranker, and the package itself -- sentence_transformers.CrossEncoder is already in the enrich group, so borrowing the idea costs zero dependencies.
  • NovaSearch-Team/RAG-Retrieval (MIT) -- the uniform score(query, candidates) seam over heterogeneous scorers, and max-score splitting for documents longer than an encoder's window (score chunks, pool the best) rather than first-512-token truncation -- a trap the enrich layer had already measured and fixed independently (TOPIC-MODELLING.md Β§4), which is why this entry corroborates rather than introduces it. Not taken: the whole training/distillation stack -- there is no labelled relevance data in a personal corpus, and fine-tuning is out of scope.

πŸ”‘ The rule on borrowing

Stated once, because it is the same rule the pipeline applies to drafts:

Attribute the idea, and never copy the text. Where an upstream is permissively licensed the adaptation is still written from scratch, and where it is not (academic-research-skills, CC-BY-NC 4.0) only the concept is taken and the entry above says so explicitly. The rule held when it was tested: copying from two permissively-licensed upstreams was offered for the feature roadmap and declined, at a measured cost of about one PR. That is SOUL.md's refusal to manufacture support, pointed at this project's own provenance rather than a draft's.