nullius in verba. “Take nobody's word for it.” The Royal Society's motto since 1660.
A harness for research work in Claude Code. It turns the unread paper, the unsearched literature and the unbounded critique into states a session cannot finish in -- including the state of having written an answer and opened no unit at all.
What that buys, measured on a literature three months old. The same question, the same model, once with this and once without:
| without | with | |
|---|---|---|
| sources | 10 links, 5 of them not papers | 18 references |
| that resolve to a DOI | 0 | 18 |
| flagged as not peer reviewed | none were | 9 of 18 |
| the paper the dispute is about | cited through a vendor's blog | resolved to NeurIPS |
| quoted passages checked verbatim | nothing to check against | 5 of 5 |
Both answers in full, and the run.
The clause about opening no unit was bought rather than claimed. The gates hang off a unit, so for four releases a session asked only to answer a question opened none and finished freely; the fourth control run measured exactly that. A draft written here with no unit behind it now refuses the stop, with two ways out: open a unit and track it, under every gate that then applies, or say in one command that it was a thinking file and why.
Note
This is not finished and it is not meant to be. It is installable, tested and in real use, and the shape of a research session is not something one person can get right alone. If a gate misfires in your field, if your subdiscipline needs a check that is not here, or if you use it for something I did not think of, that is the most useful thing you can send. Open an issue -- a gate that is wrong for you is a finding, and this repository treats it as one.
what is built, what is not, and what has been measured
Built and tested. The ledger, the gates, multi-index search with fallbacks, the citation
walk, the venue walk and the calibration engine: 500 assertions in
tests/smoke.sh, offline and in both directions, plus eight end-to-end
scenarios against live indexes. algorithms/ says where each
mechanism is weakest.
Documented and not built. The folklore walk in WHY.md section 4: folklore is
a status you can record, not a trail anything follows.
Measured, five times. The control arm has been run on an easy topic, a hard one, once more with the rules cut by 40%, once outside AI entirely, and once on a literature three months old. Fifteen arms, zero fabricated citations -- including in those with no harness at all. What separates the arms is what a reader can resolve: on the young literature the unharnessed session cited the paper at the centre of the dispute through a vendor's blog, and half its links were not papers at all. The fourth run also found that the harness engaged on the prompt rather than on being installed: asked only to answer, a session in a nullius project opened no unit, searched nothing, and the stop gate had nothing to refuse. That is the hole this release closes, and it is the clearest thing five runs have bought. Small samples, and the write-ups say so.
The argument is in WHY.md. Read it if you want to know whether this is for you.
One question put to two sessions -- one with this installed, one launched with nothing, same model, neither prompt naming the tool. Twice, on two kinds of literature that fail differently.
Do large reasoning models actually reason, or do they pattern-match? How settled is the answer? Do the literature search properly before you answer. About 350 words.
Both answers are good, and both lean on the same central paper. The difference is what happens when you try to go and read it.
|
Before
The link goes to Five of its ten links are not papers: that blog, a conference poster page, a company's own publication venue, a benchmark product page, a Substack. No DOI anywhere in the document. |
After
The same work, resolved to Advances in Neural Information Processing Systems, carrying a DOI,
flagged peer-reviewed, read to |
One session routed a NeurIPS paper through a vendor's blog. The other could not: cite resolves
a work or refuses it, and a blog post is not a work.
And nine of the eighteen sources it found are not peer reviewed -- eight arXiv, one Research Square -- which it marks on every one. That is the true shape of this literature and the part the popular account never states. The run.
the whole of the Before answer, for this question
Verbatim, dashes normalised to this repository's convention. 309 words, links left whole so the count below can be checked.
Short answer: both, and the field has largely stopped treating it as a binary. What is not settled is how far the genuine-computation part generalizes.
The strongest evidence is degradation under superficial perturbation. GSM-Symbolic showed accuracy falling when only names and numbers change, and collapsing further with added irrelevant clauses. Apple's "The Illusion of Thinking" reported accuracy collapse on puzzles past a complexity threshold. The ARC Prize 2025 technical report is blunter: models solve reliably only where pretraining knowledge coverage exists plus a verifiable feedback signal, and calls this "fundamentally constrained by knowledge coverage… distinct from human reasoning." Gemini 3 Deep Think spends ~138k tokens on tasks humans solve instantly. On the RL side, Yue et al. found RLVR models beaten by their own base models at high pass@k -- RL sharpens sampling rather than adding capability.
Several headline results have not held up cleanly. Lawsen's rebuttal showed much of the Hanoi "collapse" was output-token truncation, with models explicitly saying they were stopping for length. A 2026 statistical re-evaluation of GSM-Symbolic found only 8 of 20 open models showed significant drops, and that the variants skew toward larger numbers -- calling blanket conclusions "statistically premature." Similarly, CoT-unfaithfulness findings partly reverse under larger token budgets (ACL 2026).
Mechanistically, Anthropic's attribution-graph work finds intervention-verified multi-step circuits -- real internal computation, not lookup. And frontier systems have produced genuinely novel mathematics: a disproof of Erdős's unit-distance conjecture, formally verified.
Melanie Mitchell's read still holds -- "there's no consensus". Much of the disagreement is definitional: nobody has an operational threshold separating "abstraction" from "very broad interpolation." The defensible position is that these models perform real, non-retrieval computation over representations whose coverage is set by training data -- brittle off-distribution, but not empty.
Ten links. Five of them are not papers: arize.com (a vendor blog standing in for the
paper), neurips.cc (a poster page, not the paper), transformer-circuits.pub (a company's own
venue), epoch.ai (a benchmark product page, and the sole support for the strongest claim in
the document), aiguide.substack.com. The other five are arXiv preprints. No DOI anywhere,
and no source presented as peer reviewed.
the whole of the After answer, for this question
Verbatim, dashes normalised. 350 words, against a 350-word brief.
Not settled -- and the dichotomy is part of why it stays that way.
Frontier accuracy is not invariant to changes that leave the problem intact. Mirzadeh et al. (2024) show performance declines when only the numeric values in a grade-school maths question change, and that adding "seemingly relevant but ultimately irrelevant information" costs up to 65% across every state-of-the-art model tested. Wu et al. (2024) report that on counterfactual variants of familiar tasks -- base-9 arithmetic, shifted keyboards -- GPT-4 "consistently and substantially underperforms" its default-condition score. Two independent groups, both measured: whatever these systems do is bound to the surface form of a problem in a way competent human reasoning is not.
The headline evidence is under live methodological attack. Shojaee et al. (2025, NeurIPS) report "complete accuracy collapse beyond certain complexities", plus a counterintuitive decline in reasoning effort as problems get harder. Lawsen (2025, preprint) argues these findings "primarily reflect experimental design limitations rather than fundamental reasoning failures": output token limits, a rigid automated scorer, and River Crossing instances that are mathematically unsolvable for N≥6 yet scored as model failures. The analogy literature splits the same way -- Lewis and Mitchell (2024) read counterfactual tasks as evidence against general reasoning; Webb et al. (2025, PNAS Nexus) run comparable tasks and conclude the opposite.
Mechanistic work suggests both camps are arguing over a false choice. Nikankin et al. (2024) find that LLMs do arithmetic "using neither robust algorithms nor memorization; rather, they rely on a bag of heuristics" -- many narrow, composable circuits. That is a third thing, and no behavioural benchmark can distinguish it from either pole.
Complexity varied independently of required output length and answer format, on a problem family held out by construction from an auditable pretraining corpus. No study here can audit the corpora of the models it tests, so "outside the training distribution" is asserted, never verified. Until that is fixed, collapse curves stay confounded.
Eighteen sources, every one resolved to a DOI, nine of them peer reviewed and each marked.
The venue travels in the sentence: Lawsen (2025, preprint), Shojaee et al. (2025, NeurIPS),
Webb et al. (2025, PNAS Nexus). Five were read to method depth, and the five passages quoted
above check verbatim against the cached text:
nullius quote mirzadeh2024 "seemingly relevant but ultimately irrelevant information"
nullius: verbatim in mirzadeh2024. ... and four more, five for five
Behind it sit five claims with a warrant and a status. One reaches established -- the first
in five control runs -- on two independent groups both measuring; the contested heart of the
dispute is recorded as contested over the two papers that disagree.
Where the sources are refereed and the dispute is old, the failure is quieter. Both answers are verbatim.
Does the language you speak change what you can see? How settled is the answer? Do the literature search properly before you answer. About 350 words.
|
Before
551 words for a 350-word brief. Nine works linked, 3 with a resolvable identifier. Six people credited, three a reader can chase. Nothing about what the search missed. |
After
355 words for the same brief. 14 sources, all 14 resolved and carrying a read depth. Then, unasked, a closing note:
|
Both sessions ran into paywalls; one said so where a reader would see it. 46% known per hop is a figure you can argue with, and the literature suggests is not.
Neither column invents anything -- every identifier in both resolves, as in all fifteen arms
across five runs. Both reach the same direction. What they do not reach is the same
confidence: Before calls the early-vision question clear and one 2026 paper
decisive; After calls it unsettled, and of its thirteen recorded claims not one reaches
established. Only one of them earned its confidence, and you cannot tell which from the
prose. That is the failure this is built for, and it is not the one people expect.
The run.
the whole of the Before answer, for this question
Verbatim, dashes normalised to this repository's convention. 551 words.
Almost certainly not at the level of seeing. Probably yes at the level of naming, deciding and remembering what you saw. The strongest neural evidence for the first claim has just collapsed.
Winawer et al. (2007) is canonical. Russian obligatorily splits blue into siniy (dark) and goluboy (light); English does not. Russian speakers discriminated cross-boundary blues faster than within-boundary ones; English speakers showed no such boundary. Gilbert et al. (2006) found the effect only in the right visual field -- language-side -- which looked like a smoking gun. Thierry et al. (2009) reported a larger visual mismatch negativity for Greek speakers' ghalazio/ble contrast: a pre-attentive ERP component, language reaching into vision before awareness.
Three things went wrong.
First, the original study carried its own deflation: the Russian advantage "was eliminated by a verbal, but not a spatial, dual task." Occupy the language system and the effect vanishes -- what you expect if people are covertly labelling, not seeing differently.
Second, replication. Martinovic, Paramei & MacInnes (2020, Cognition) re-ran the Russian blues with tighter colorimetric control and found no categorical facilitation in processing speed. Witzel found robust category effects only in speeded discrimination with untrained observers, and none at green-blue once sensitivity was controlled. The right-visual-field lateralisation has repeatedly come out bilateral or absent.
Third, and decisively: Martinovic et al. (2026, PNAS) -- "Cognition does not automatically influence perception" -- ran a close replication of Thierry et al. across three EEG experiments and found no robust categorical modulation. The early differences track hue, saturation, luminance contrast and adaptation to it, not linguistic categories.
Settled enough for a direction, not a full stop. Kapelle & Flecken's 2025 scoping review of 72 studies concludes the effects are context-dependent and transient, sitting in top-down stages where participants can anticipate task demands, strongest under memory load -- consistent with Bae et al. (2015), where categorical bias is amplified by working memory rather than born in vision. Wakui et al. (2025) still find Himba speakers showing categorical effects in visual search for newly acquired colour terms, so learned categories do something. The live question is not whether language touches colour cognition but where in the pipeline -- and the early end now looks clear.
- Winawer et al. 2007, PNAS -- Russian blues reveal effects of language on color discrimination →
fermatslibrary.com/s/russian-blues-...- Gilbert et al. 2006, PNAS -- Whorf hypothesis is supported in the right visual field but not the left →
pnas.org/doi/10.1073/pnas.0509868103- Thierry et al. 2009, PNAS -- Unconscious effects of language-specific terminology on preattentive color perception →
pnas.org/doi/10.1073/pnas.0811155106- Martinovic, Paramei & MacInnes 2020, Cognition -- Russian blues reveal the limits of language influencing colour discrimination →
pubmed.ncbi.nlm.nih.gov/32276236/(+ a postprint PDF athira.hope.ac.uk)- Martinovic et al. 2026, PNAS -- Cognition does not automatically influence perception →
pmc.ncbi.nlm.nih.gov/articles/PMC13273331/- Kapelle & Flecken 2025, Language and Cognition -- Perceiving colour through a language lens: a scoping review →
cambridge.org/core/journals/...- Bae, Olkkonen, Allred & Flombaum 2015, JEP:General -- Why some colors appear more memorable than others →
sas.upenn.edu/~mariaol/files/BaeEtAlJEP2015.pdf- Witzel 2015, Journal of Vision -- Categorical facilitation with equally discriminable colors →
arvojournals.org/.../i1534-7362-15-8-22.pdf- Wakui, Mylonas, Caparos & Davidoff 2025, Color Research & Application -- Categorical color perception in a cross-lingual comparison of visual search →
onlinelibrary.wiley.com/doi/10.1002/col.22964
(The prose is verbatim; the nine source lines are the document's own, with each link shown as its host rather than in full. The three DOIs are bolded.)
This is not a bad answer. It is current, it is hedged in several of the right places, and it is the only one of the two that found the 2026 replication. Nothing in it is invented. What is worth checking against it are facts rather than tone, and they fall in two groups.
What a reader cannot trace.
- Three of the nine links carry a DOI. The other six are a third-party mirror, a PubMed listing with a repository postprint beside it, a PMC record, a publisher's article page and two PDFs.
- The canonical paper is linked to a mirror, not to the paper. Winawer et al. 2007 goes to
fermatslibrary.com, and by the session's own log the quotation drawn from it came off that page. - Six people are credited in the prose; three of them can be traced to a work this document makes resolvable. The three that cannot are Bae, Martinovic and Winawer -- the canonical one, and unresolvable for the reason directly above: its only link is the mirror.
What it asserts past its evidence. Each of these is answered by a source After holds and this one does not.
- One replication is called decisive. It is one paper. Across the thirteen claims
After recorded, the statuses come out ten
single-result, twoemerging, onecontestedand noestablishedat all, because a status here is arithmetic over author independence and one study does not move it. - The load-bearing negative claim carries no source at all. "The right-visual-field
lateralisation has repeatedly come out bilateral or absent" -- no citation. It is true, and
After is where you find out why:
brederoo2019, nine powered near-exact replications with Bayesian analysis. - Its central inference is stated as clean when the literature says it is not. Occupying the language system makes the effect vanish, "what you expect if people are covertly labelling, not seeing differently." Pilling et al. 2003, Is color "categorical perception" really perceptual?, report that it survives verbal interference when the interference type is unpredictable, so the dual task is not a clean diagnostic. After says so in the same breath in which it makes the argument.
- The history is missing, and it changes the story. This reads as a case built and then recently collapsed. Kay and Kempton 1984 had already placed the effect in naming rather than in seeing, in an experiment built to block exactly that route. Its first author is Paul Kay, of Basic Color Terms -- the monograph that eval 08 finds at four of five seeds on the citation graph and that no keyword search returned.
None of that is visible from the prose, which reads as settled throughout. It is visible from
nullius audit, which reads the document and nothing else, and from the column beside it.
the whole of the After answer, for this question
Verbatim, dashes normalised to this repository's convention. 355 words, and a
nullius report beside it holding the rest.
Narrowly yes; in the way the question is usually meant, no.
Language reliably changes performance on perceptual tasks. Winawer et al. report that Russian speakers, whose language obligatorily splits goluboy from siniy, discriminate boundary-crossing blues faster than within-category blues, while English speakers on identical stimuli do not [@winawer2007].
Kay and Kempton set the shape of this literature: they found a Whorfian colour effect, proposed that it ran through a naming strategy, then ran a second experiment to block that strategy -- and it disappeared, as predicted [@kay1984]. Winawer's advantage likewise vanished under a verbal, but not a spatial, dual task -- the signature of online verbal comparison, not altered sensation. Pilling et al. complicate this, finding that categorical perception survived verbal interference when its type was unpredictable [@pilling2003].
The strongest bid for a genuinely perceptual locus was lateralisation -- effects confined to the right visual field, hence to the language-dominant left hemisphere [@gilbert2005] -- backed by ERP work on preattentive change detection [@thierry2009; @mo2011]. That bid is in trouble. A friendly replication found left-visual-field effects too [@drivonikou2007]; Brown and colleagues found none at green-blue by two methods [@brown2011]; and Brederoo et al., across nine powered near-exact replications, found no evidence for the asymmetry at all [@brederoo2019]. Zhong et al. found the pattern shifts with whichever categorisation was primed first [@zhong2017].
Pre-linguistic infants already discriminate categorically [@franklin2008; @ozturk2012], and naming across languages tracks near-optimal partitions of perceptual space [@regier2007] -- the categories are not language's invention.
Settled: language speeds and biases perceptual judgement. Unsettled: whether it reaches early vision. Lupyan et al. argue the perceptual/decisional split is itself unprincipled [@lupyan2020], much of why this stays open.
What this rests on: 19 vocabularies over OpenAlex and Crossref plus a 6-hop walk; 639 records screened, 91 kept. Two limits: the walk stopped at 46% known per hop, so the literature was still opening up, and paywalls held every source to abstract depth -- so each claim is what a study reports, not mechanism. Nearly all of it concerns colour. Full protocol, read depths and DOIs: nullius-report.md
Every bracketed key above resolves. And behind the answer sit thirteen claims, each with what warrants it and how far its sources were read. Four of them, abridged where marked:
| claim | warrant | status | asserts | sources |
|---|---|---|---|---|
| Whether the lateralised (right-visual-field) Whorfian colour effect is real is contested: reported by its originators, found only partially in a friendly replication, absent at the green-blue boundary ... and absent in a powered nine-study Bayesian replication programme | measured |
contested |
reports |
gilbert2005, drivonikou2007, brown2011, brederoo2019 |
| Pre-linguistic infants show faster discrimination across colour category boundaries than within them, so categorical colour discrimination does not require colour language | replicated |
emerging |
reports |
franklin2008, ozturk2012 |
| A Whorfian colour effect was detected and then made to disappear in a second experiment specifically designed to block the hypothesised naming strategy ... | measured |
single-result |
reports |
kay1984 |
| Cross-language colour naming is argued to reflect near-optimal partitions of an irregularly shaped perceptual colour space ... | authors-claim |
single-result |
reports |
regier2007 |
Nothing reached established, because the independence arithmetic did not support it. No
row asserts mechanism: every source was read to abstract depth and a claim may not exceed its
source's read depth. And ten of the thirteen may not be written as a bare assertion, which the
report states where the session will see it.
That is the half a collaborator cannot reconstruct from the prose, and it is the half Before does not have.
Three lines, none of them in a terminal. Open Claude Code in the folder your research lives in and type:
/plugin marketplace add tanyelai/nullius
/plugin install nullius@tanyelai
Restart Claude Code, then say, in plain words:
set up nullius in this folder
That is the whole installation. Claude runs nullius init, which creates a .nullius/
folder for your notes, references and claims, and tells you what to fill in. Nothing else
is installed, no account is created, and nothing leaves your machine except the searches
you ask for.
If the slash commands are not available, or you prefer doing it by hand
Create .claude/settings.json in your research folder with exactly this:
{
"extraKnownMarketplaces": {
"tanyelai": {
"source": { "source": "github", "repo": "tanyelai/nullius", "ref": "stable" },
"autoUpdate": true
}
},
"enabledPlugins": { "nullius@tanyelai": true }
}Restart Claude Code and ask it to set up nullius in the folder, as above.
release channel, requirements, and the one email it wants
What you get is the stable channel. The marketplace entry pins the plugin to that
branch, which moves only when a release is cut and approved, so work landing on main never
reaches an installed session. Updates arrive when the version in
plugin.json changes, which is once per release, and
CHANGELOG.md says what changed. The releases are
tagged.
Requirements: Claude Code, and Python 3.8 or newer, which macOS and every Linux
already have. There is nothing to pip install. If you want the tool to be able to read
PDFs it finds, install poppler as well; without it you
get links to the papers instead of their text, and everything else works the same.
Give it an email. Not a login, and it grants no access to anything paywalled, and no account is created anywhere. It does two measurable things: Unpaywall refuses a request without one (HTTP 422), and that is the entire route to preprint copies of paywalled work; and OpenAlex and Crossref use it to put you in their polite pool rather than the common one.
./.nullius/bin/nullius config contact you@university.educontact is written to ~/.config/nullius/config.json, outside every repository, so it
cannot reach a commit. Anything else set with --user goes there too; everything without it
lands in the project's own .nullius/config.json, which is meant to be committed.
the commands, in the order you meet them
./.nullius/bin/nullius start intro-rewrite write "sharpen the framing" \
--artifact paper/intro.tex
./.nullius/bin/nullius accept "does the intro state what the method cannot do"
./.nullius/bin/nullius cite 2005.11401 # resolves, or refuses
./.nullius/bin/nullius note lewis2020 --depth abstract
./.nullius/bin/nullius claim "retrieval helps on knowledge-heavy tasks" \
--warrant authors-claim --status single-result --strength reports \
--source lewis2020
./.nullius/bin/nullius scratch notes.md "thinking file, not the answer"Add --venue <name> once you have written .nullius/venues/<name>.md from the real call or
author guidelines. Until that file exists the tool will not require anything of the draft,
which is deliberate: it may not ask for what it cannot cite a line for.
That last command is the shape of the whole tool. Ask for --strength mechanism on a
source you only read to abstract and it refuses; ask for --status established on two
papers that share an author and it refuses, because independence is set arithmetic on
author lists rather than a judgement. Write \\cite{somethingUnresolved} into a tracked draft
and the write itself is refused.
A file the unit does not track is a scratch note, and a scratch note is where the work
actually happens. An invented identifier is still refused there, because that is a fact and
it is the worst thing this tool could let through. An unattributed surname is reported as a
lead instead, because the name may belong to something cited elsewhere or to nothing yet.
nullius artifact <path> holds a file to the draft's bar when you are ready for that.
What is refused is a draft nobody decided about. Write one here with no unit open and the
stop gate will not let the session end: either nullius artifact <path> under a unit, which
brings every gate above with it, or nullius scratch <path> "<why>", which says it was a
thinking file and records that you said so. Answering an unrelated question in the same folder
is untouched, because nothing was drafted.
When you try to finish, the gate says where you are and the one command that answers the first thing holding it:
nullius: w (idea · calibration) · 3 open, 1 settled
now nullius close "<the answer, with its locator>"
then an idea unit with no search logged · no alternative recorded
`nullius status --why` for what each means.
nullius status has the same two lines and then the full list, marked for which reasons are
facts and which are thresholds somebody chose.
the sixth of them you need on day one
Run them as ./.nullius/bin/nullius <command>, or just ask Claude in plain words: the gate
that fires at startup hands the session the whole vocabulary.
| when you are | the commands |
|---|---|
| opening work | start · accept · status · done · compact |
| reading a literature | lit · snowball · screen · coverage |
| recording what you know | cite · note · claim · considered · falsify |
| recording what you do not | needs · settled |
| critiquing something | finding · resolve · verdict · unread |
| handing it to someone | report · audit |
That is a third of them. nullius --help lists all forty-two with their flags, --help on
any one spells out that command's. There is no /nullius slash command; this line used to
say there was. What reaches a session instead is a skill, which fires when you ask for work
the harness gates, and the whole vocabulary, which arrives at every session start inside a
project. The
reference lives there rather than here, because a table kept by hand goes stale and this one
had already started to.
Twelve sections used to sit here, one per mechanism, each arguing for itself. The argument is WHY.md's job and the mechanisms are in algorithms/. This is the list.
A fact refuses. No calibration is needed for any of these to be right.
| an unresolved or retracted citation, in a tracked draft | a bare arXiv: id or a credited surname counts, and so does a shell heredoc |
| a claim above its source's read depth | strength <= depth, and --quote grounds the depth in the source |
| a status above what author independence earns | established needs two disjoint author sets |
| a survey closing with anything unscreened or unwalked | the citation graph is the only thing a closed frontier can rest on |
| a tight zero never re-run over full text | the words were wrong is not the literature is empty |
an idea unit with no killing assumption, no cost, or nothing read past an abstract |
|
an interpret unit that names its decisive number after the results |
unless --post-hoc, which labels it and carries the label forward |
| a finding with no referent, or a critique with no verdict | zero fatal and zero material is the verdict |
| a draft still carrying wording an open finding quotes as defective | removing the finding is not removing the sentence |
| a question you asked yourself and never came back to | needs closes observed, unmet or carried |
| a draft that names a venue going out unread | unread "<why>" is the way past, and it is recorded |
| a tracked draft with no declared length | so an addition has something to be a trade against |
A chosen number is reported and marked as chosen. Fewer vocabularies than suggested; a status reached through names rather than identifiers; passages sharing most of their words; a long draft with no figure; growth with nothing closed; a read depth the session attested rather than the source.
Two modes, and only two. certain refuses on a fact; advice computes the same facts
and reports every one of them without refusing, which is what
evals/control.md needs and what you want if you are trying the tool out.
A session in advice is told so at every start, because otherwise it believes it is being
gated and is not.
Two things scope the rest. start --thread <name> says which line of enquiry a unit
belongs to, and the gates read only that thread. And what crosses a context boundary is what
is still live on it: a search stops reciting its rows once everything is screened, a buried
idea is named when it shares a term with your question and counted when it does not. The
ledger keeps all of it; compact deletes only what fulltext can refetch.
how the citation walk decides where to go and when to stop
A query finds what shares your words. The citation graph finds what the field itself linked.
nullius snowball walks both directions from the works you screened in, and the payload
is not the list, it is the multiplicity:
hop 1: 1 seed(s) 16 new, 0 already reached
hop 2: 4 seed(s) 60 new, 4 already reached, 6% of this hop was known
reached from more than one of 7 seeds, which no query would have told you:
3/7 (43%) 2020 276 <the paper the field descends from>
2/7 (29%) 1998 273 <its standard textbook>
A work several seeds point at is what the field agrees is behind them, and a keyword query will not reliably surface it because the canon is phrased in older words. The already-reached percentage is the saturation signal: at 6% you do not have the literature, and no amount of confident prose changes that. algorithms/graph.md has the walk, its stopping rule, and the measurement that killed the naive version.
what `report` writes, and what it refuses to establish
nullius report writes what the ledger holds as markdown a person reads: every claim with its
warrant, its status and what it may assert; every source with how far it was actually read; the
search as a funnel with the rules that did the discarding; what was dispositioned and what was
discharged; and what is still refusing the stop.
It is markdown on purpose, and there is no typesetting here. The venue owns the format, the house style is yours, and a template shipped with a tool becomes a house style that is not either. What the tool owns is the epistemic state, and that is the half a collaborator cannot reconstruct from the draft. Feed the markdown to whatever build you already have.
The report closes on what it does not establish, which is most things: not coverage, not quality, and not independence where a record carried no author identifiers.
what each is for, and the two prohibitions that matter
The plugin installs four subagents alongside the CLI. Each one starts in a clean context, which is the feature rather than an implementation detail: a second opinion is worth something only if it did not watch you form the first one.
| agent | what it does |
|---|---|
skeptic |
takes one claim through one lens and returns survives, dies, or the observation that would settle it |
librarian |
runs a search protocol and returns records: identifiers, counts, screening decisions. It is forbidden from summarising them |
referee |
reviews a draft as a reviewer at one named venue, against that venue's own written requirements |
reader |
reads one source at a stated depth and returns what it establishes, every point carrying a passage it has checked verbatim with nullius quote |
Ask for them in plain words: have the skeptic take apart c003, or get the referee to read this against the venue file.
Two of the prohibitions are load-bearing. The skeptic is never told whose claim it is, so a
claim from a famous lab and a claim from you get the same bar; a check that knows the answer
you are hoping for has already stopped being one. And the librarian may not summarise,
because a summary is exactly where a thin search stops looking thin: six shallow hits become a
confident paragraph about what the field thinks, and the thinness is no longer visible to
anybody, including you.
The reader is the one that looks like it breaks the librarian's rule and does not. That
prohibition is about summarising a set of works, where the summary hides how thin the set
was. Explaining one source whose full text you hold is a different act, and it is
checkable in a way no summary is: every point comes back with a passage, the agent runs
nullius quote on each before returning it, and a fabricated point cannot produce a passage
that verifies. Without cached text it refuses to start, because an explanation built from an
abstract is the failure it exists to prevent rather than a smaller version of the job.
None of the four decides anything. They return findings, and what to do about a finding stays yours.
This file is how to run the thing. The rest is not summarised here, which used to be claimed one line above a summary of it.
- WHY.md -- the argument: what goes wrong by default, why more instructions do not fix it, and what this is not. Section 10 is the one thing you supply yourself.
- algorithms/ -- one file per mechanism, each carrying the measurement that killed the naive version and a note on where it is still weak.
- evals/ -- eight scenarios against live indexes, and control.md, which is the arm that actually tests the claim and has now been run twice.
- examples/ -- three worked fields. The
field.mdfiles are real and you should argue with them. - REFERENCES.md -- where this design's own claims are sourced. Every
identifier there was resolved with
nullius cite.
See CONTRIBUTING.md. The short version: a change to a gate needs a test
in tests/smoke.sh that fails without it, in both directions, because a gate that only ever
passes is not a gate. If a claim in WHY.md or REFERENCES.md is wrong, that is a finding and
an issue is the right place for it.
Run the gate before you push. CI runs this same file, so it cannot disagree with you about what passing means:
bash tests/preflight.shLanding a change, and shipping one, are separate. A pull request into main needs
preflight green, and merging it reaches nobody: what an installed session runs is the
stable branch. That branch moves only when a maintainer dispatches the
release workflow and then approves it, which is also the only
thing that moves it. The workflow refuses to release a version the tree does not already carry
or the changelog does not explain, so the bump and its entry land as a
reviewable commit first.
MIT.