@dogfood-lab/study-swarm 0.6.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -0
- package/PROTOCOL.md +39 -4
- package/README.es.md +73 -32
- package/README.fr.md +73 -32
- package/README.hi.md +79 -38
- package/README.it.md +80 -39
- package/README.ja.md +79 -38
- package/README.md +46 -5
- package/README.pt-BR.md +73 -32
- package/README.zh.md +80 -39
- package/SECURITY.md +6 -6
- package/bin/study-swarm.mjs +176 -48
- package/examples/study-swarm-ci.yml +28 -0
- package/examples/study-swarm-self.dispatch.md +46 -0
- package/examples/study-swarm-v1_1.dispatch.md +89 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,60 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
4
4
|
|
|
5
|
+
## [1.1.0] — 2026-06-29
|
|
6
|
+
|
|
7
|
+
The protocol run on itself a second time — to design its own next version. Four load-bearing questions the first release left to "I think" were dispatched to parallel research agents; all 27 resulting citations were gated through Step 4 (retrieval oracle for existence + two different model families for groundedness, reasoning-stripped) before any informed the design. The oracle confirmed 27/27 exist — including six 2025–2026 papers a parametric model would have false-flagged — and corrected five attributions, among them a real first-author misattribution the research agent flagged on itself.
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **PROTOCOL.md Step 4 (groundedness) is now decomposed and ternary.** The stage-2 check no longer judges a finding sentence whole — it decomposes the finding into *molecular* claims (decontextualized + minimal), filters to the load-bearing claim so padding earns no credit, checks each against the source, and returns *fully / partially / not supported*. A partially-supported finding (real paper, resolvable link, overstated sentence) is corrected-once or escalated, never auto-passed. Grounded in Min et al. 2023 (arXiv:2305.14251), Gao et al. 2023 (arXiv:2305.14627), Gunjal & Durrett 2024 (arXiv:2406.20079), Jiang et al. 2024 (arXiv:2407.03572), Wanner et al. 2024 (arXiv:2403.11903).
|
|
12
|
+
- **PROTOCOL.md Step 4 specifies an aggregation rule (the cascade).** Where v1.0.0 said only "≥3 decorrelated lenses, diversity > count," v1.1 says *how* to combine them: existence is gated by the deterministic oracle alone (the one genuinely decorrelated lens), the LLM lenses vote only on groundedness via a tuned minority-veto, and lens disagreement on a post-cutoff paper escalates rather than auto-rejects. Grounded in Kohli 2026 (arXiv:2605.29800), Jain et al. 2025 (arXiv:2510.11822), Kolawole et al. 2024 (arXiv:2407.02348), Tian et al. 2025 (arXiv:2508.06225).
|
|
13
|
+
- **PROTOCOL.md Step 2 mandates generation-time grounding** (browse-then-cite, cite only fetched sources, drop-don't-invent) paired with a coverage-recovery pass, since forcing retrieval buys precision at the cost of coverage. Grounded in Asai et al. 2023 (arXiv:2310.11511), Nakano et al. 2021 (arXiv:2112.09332), Saxena et al. 2025 (arXiv:2509.21557), Rao et al. 2026 (arXiv:2604.03173).
|
|
14
|
+
- **PROTOCOL.md halt table: abstention is now calibrated and evidence-gated.** `CANNOT_CONFIRM` stays a first-class verdict (not a binary collapsed under a confidence cut), triggers on external evidence absence rather than the verifier's own entropy, is surfaced contrastively, and the abstain rate is capped as its own halt. Grounded in Zhang et al. 2023 (arXiv:2311.09677), Phillips et al. 2026 (arXiv:2603.21172), Wang et al. 2024 (arXiv:2407.00499), Srinivasan & Thomason 2025 (arXiv:2502.13321), Zhu et al. 2025 (arXiv:2502.05911).
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Shipped a second worked, lint-clean reference dispatch — `examples/study-swarm-v1_1.dispatch.md` — the full v1.1 design pass with all 27 citations and the external-verification receipt. It is `study-swarm lint`-clean and in the npm tarball.
|
|
19
|
+
|
|
20
|
+
## [1.0.0] — 2026-06-13
|
|
21
|
+
|
|
22
|
+
First stable release. A dogfood-swarm health + feature pass hardened the CLI and verified the methodology against its own gate — all 16 cited papers checked by a retrieval oracle plus a different model family (0 fabricated, 0 misattributed).
|
|
23
|
+
|
|
24
|
+
### Security
|
|
25
|
+
|
|
26
|
+
- `new` now sanitizes the slug to a single filename — path separators are replaced with `-` and pure-dots slugs are rejected — so it can only ever write `<slug>.dispatch.md` in the current working directory (a slug like `../../x` previously wrote outside it).
|
|
27
|
+
- Pinned the GitHub Pages workflow's actions to commit SHAs, matching the release workflow.
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- `lint` now also checks that each finding names an **author** before the year (Unicode-aware, so names like "Buçinca" count), completing the author + year + identifier sourcing standard the docs describe.
|
|
32
|
+
- `lint --json` emits a machine-readable report (stable `rule` ids + line numbers) for CI annotations and downstream tools.
|
|
33
|
+
- `lint` accepts **multiple paths, a directory** (linted recursively for `*.dispatch.md`), or **`-` for stdin** — so `study-swarm lint dispatches/` gates a whole corpus and a pre-commit hook can pipe a staged file.
|
|
34
|
+
- On a clean lint, the CLI now names the deferred Step-4 next step (`roleos verify-citations`), so a clean form-check isn't mistaken for verified.
|
|
35
|
+
- `new` stamps methodology provenance into each scaffolded dispatch (`study-swarm vX.Y.Z · protocol-sha256:… · created:…`), fulfilling the "pin the methodology version" promise.
|
|
36
|
+
- Shipped a worked, lint-clean reference dispatch (`examples/study-swarm-self.dispatch.md`) and a copy-paste CI sample (`examples/study-swarm-ci.yml`); both are in the npm tarball.
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- `lint`: an arXiv id's `YYMM` prefix is no longer mistaken for a publication year, so a finding with no spelled-out year is correctly flagged.
|
|
41
|
+
- `lint`: the "studies show…" gesture check is now scoped to the *Research grounding* section and fires even when a citation sits on the same line.
|
|
42
|
+
- `lint`: the *Research grounding* section is found by a heading whose text *ends* with that phrase, so a document title that merely mentions "research grounding" no longer shadows the real section.
|
|
43
|
+
- `lint`: numbered lines inside fenced code blocks are no longer mistaken for findings.
|
|
44
|
+
- `lint` on a directory, and `protocol` when `PROTOCOL.md` is unreadable, now report an actionable message instead of a raw `EISDIR`.
|
|
45
|
+
- Light-mode handbook link colour darkened to meet WCAG AA contrast, and added a site favicon (previously a 404 on every page).
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
|
|
49
|
+
- `SECURITY.md` and the README Security section now describe the real shipped artifact — a thin, zero-dependency CLI — replacing stale "documentation repository / reserved placeholder / no executable code" language, and the Supported-versions table now lists the version line that actually ships.
|
|
50
|
+
- `new` now notes when it had to sanitize a slug, so the created filename is never a silent surprise.
|
|
51
|
+
|
|
52
|
+
### Docs
|
|
53
|
+
|
|
54
|
+
- Added arXiv identifiers to the Bansal 2021 and Wei 2022 citations so they meet the project's own sourcing standard.
|
|
55
|
+
- README CLI section now shows the typical `new → lint → verify` loop, a "Gate it in CI" recipe, and the Step-3→Step-4 handoff contract.
|
|
56
|
+
- Corrected the PROTOCOL.md sourcing standard so it matches what `lint` enforces (a resolvable identifier **or** a direct URL, not "title AND a separate URL" — the repo's own examples cite a bare arXiv id).
|
|
57
|
+
- New handbook page **Common failure modes** (symptom → catching step → fix); Step-1 "is this question load-bearing?" heuristics in PROTOCOL.md and the handbook; the `new` template now embeds a worked example finding + selection hint.
|
|
58
|
+
|
|
5
59
|
## [0.6.0] — 2026-06-02
|
|
6
60
|
|
|
7
61
|
### Added
|
|
@@ -22,5 +76,7 @@ All notable changes to this project are documented here. The format is based on
|
|
|
22
76
|
- `SECURITY.md`, MIT `LICENSE`, project logo.
|
|
23
77
|
- Landing page + Starlight handbook at <https://dogfood-lab.github.io/study-swarm/>.
|
|
24
78
|
|
|
79
|
+
[1.1.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v1.1.0
|
|
80
|
+
[1.0.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v1.0.0
|
|
25
81
|
[0.6.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v0.6.0
|
|
26
82
|
[0.5.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v0.5.0
|
package/PROTOCOL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# The study-swarm protocol — locked execution shape
|
|
2
2
|
|
|
3
|
-
This is the executable reference. The narrative, the proof, and the research grounding are in [README.md](README.md).
|
|
3
|
+
This is the executable reference. The narrative, the proof, and the research grounding are in [README.md](README.md). The **v1.1** refinements — decomposed groundedness, the oracle-gated cascade, generation-time grounding, and calibrated abstention — are grounded in [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md), the protocol run on itself with every citation verified by a different model family.
|
|
4
4
|
|
|
5
5
|
> **The one-line guard:** no finding reaches Step 5 unverified. If you cannot verify — verifier down, no different family reachable, retrieval oracle unreachable — you HALT and escalate; you do not proceed. The protocol never lets a model grade its own homework, including the one running it.
|
|
6
6
|
|
|
@@ -21,6 +21,15 @@ The cost of running it is one parallel dispatch and a few minutes of synthesis.
|
|
|
21
21
|
|
|
22
22
|
List the specific questions where empirical evidence would change the answer. Aim for 3–5. **Fewer is fine** when the decision is genuinely substantial — run with 1–2 agents; the decision-to-investigate governs invocation, the number of evidence-changing questions governs breadth. Do not manufacture questions to hit a count, and do not abort for being under three. More than ~6 → split into multiple passes.
|
|
23
23
|
|
|
24
|
+
**A question is load-bearing if:**
|
|
25
|
+
|
|
26
|
+
- you can picture **two different designs** that hinge on the answer;
|
|
27
|
+
- the honest current answer is *"I think…"*, not *"evidence says…"*;
|
|
28
|
+
- an **adjacent field** (HCI, SRE, compilers, databases) has probably already measured it;
|
|
29
|
+
- getting it wrong ships a **known-broken default** (e.g. "explanations always help" — they can increase over-reliance on *wrong* AI).
|
|
30
|
+
|
|
31
|
+
Worked decomposition: *"Should a retry reuse the previous output?"* splits into *"does context carryover cause sycophancy drift?"* and *"do explanations increase over-reliance on wrong answers?"* — two evidence-changing questions, not one opinion.
|
|
32
|
+
|
|
24
33
|
## Step 2 — Dispatch parallel research agents
|
|
25
34
|
|
|
26
35
|
One agent per question, dispatched **in parallel** (a single batch). Each agent's prompt MUST include:
|
|
@@ -34,6 +43,8 @@ One agent per question, dispatched **in parallel** (a single batch). Each agent'
|
|
|
34
43
|
|
|
35
44
|
Typical agent count: 3–5.
|
|
36
45
|
|
|
46
|
+
**Ground at generation time, not only at the gate.** An agent operates in a retrieve-then-cite loop — search, fetch, and cite **only sources it actually pulled this session**; a claim it cannot ground in a fetched source is **dropped, not invented**. Forcing retrieval *during* generation cuts off-source fabrication at the source instead of leaving all of it to be caught (and *dropped*) downstream — an inline retrieve-and-critique loop reduces ungrounded output by roughly an order of magnitude (Asai et al. 2023, arXiv:2310.11511; the browse-then-cite contract that made WebGPT answers checkable, Nakano et al. 2021, arXiv:2112.09332). This buys precision at the cost of coverage (Saxena et al. 2025, arXiv:2509.21557), so pair it with a **coverage-recovery pass** — a second sweep for true-but-hard-to-retrieve findings — and never drop the deterministic existence oracle, since citation-heavy agents can still emit plausible non-existent identifiers (Rao et al. 2026, arXiv:2604.03173).
|
|
47
|
+
|
|
37
48
|
> Step 4 makes retrieval a **hard** requirement: a paper an agent "remembers" but cannot retrieve does not enter the dispatch. Existence is established by resolving the identifier, not by recall.
|
|
38
49
|
|
|
39
50
|
## Step 3 — Synthesize into a "Research grounding" section
|
|
@@ -59,7 +70,7 @@ Before any finding informs the design (Step 5), a verifier of a **different mode
|
|
|
59
70
|
### Two-stage check, per citation
|
|
60
71
|
|
|
61
72
|
1. **Existence / attribution — a retrieval oracle, not a parametric LLM.** Resolve the arXiv ID / DOI / URL and confirm the paper exists with the stated title, authors, and year. This stage **must retrieve** (fetch the source / arXiv / Crossref), never model memory — fabrication and misattribution rates are high enough (Walters & Wilder 2023) and 2025–2026 papers postdate model training, so a parametric check will false-flag real work as fabricated (Onweller et al. 2026). If retrieval is unavailable, apply the halt-and-escalate rule below.
|
|
62
|
-
2. **Groundedness — finding matches source.** Confirm the one-sentence finding describes what the source actually claims (
|
|
73
|
+
2. **Groundedness — finding matches source (decomposed, ternary).** Confirm the one-sentence finding describes what the source actually claims. Do **not** judge the sentence whole — a real paper with a resolvable link can still be *overstated* by a finding, and a whole-sentence check cannot localize that (Min et al. 2023, arXiv:2305.14251). Decompose the finding into **molecular claims** — decontextualized + minimal, just enough context to disambiguate, no more (Gunjal & Durrett 2024, arXiv:2406.20079) — **filter to the load-bearing, non-trivial claim** so padding earns no credit (Jiang et al. 2024, arXiv:2407.03572), check each against the source, and return a **ternary** verdict: fully / partially / not supported (Gao et al. 2023, arXiv:2305.14627). A **partially-supported** finding (the link resolves, the paper is real, the sentence overstates it) is treated like a misattribution — corrected once or escalated — never auto-passed. Pin the decomposer per run, because the verdict is sensitive to the decomposition method (Wanner et al. 2024, arXiv:2403.11903). Even strong models fully support their own citations only ~half the time, so this axis is distinct from existence and necessary.
|
|
63
74
|
|
|
64
75
|
### Running it
|
|
65
76
|
|
|
@@ -67,16 +78,21 @@ The reference implementation is **`roleos verify-citations <dispatch>`** ([role-
|
|
|
67
78
|
|
|
68
79
|
**Ensemble — ≥ 3 decorrelated lenses,** counting the **retrieval oracle as one mechanism-diverse lens**: retrieval oracle + ≥ 2 different-family LLM lenses. Diversity of lenses, not raw count, is the load-bearing variable (Rajan 2025; Kim et al. 2025).
|
|
69
80
|
|
|
81
|
+
**Aggregate as a cascade, not a flat vote.** Adding LLM lenses cannot rescue a correlated blind spot — a 9-judge panel across 7 families is worth only ~2 independent votes, because the models miss the same items (Kohli 2026, arXiv:2605.29800), and recent papers that postdate training are exactly such a shared blind spot. So **existence is gated by the deterministic oracle alone** — the one genuinely decorrelated lens — and the LLM lenses vote **only on groundedness**. For that vote, use a **tuned minority-veto** (an invalid verdict needs more than one corroborating flag): it beats both raw disjunction (which over-rejects genuine work) and majority (which misses a single-lens catch) while bounding over-rejection, and a small labeled calibration set beats adding lenses (Jain et al. 2025, arXiv:2510.11822). When the oracle confirms existence but the groundedness lenses **disagree** — especially on a post-cutoff paper — that disagreement is the signal to **escalate to a human, not auto-reject** (Kolawole et al. 2024, arXiv:2407.02348), and a confident "fabricated" flag from an LLM lens is down-weighted relative to the oracle (LLM judges are systematically overconfident — Tian et al. 2025, arXiv:2508.06225).
|
|
82
|
+
|
|
70
83
|
### Halt conditions (scope is per-finding — other verified findings proceed)
|
|
71
84
|
|
|
72
85
|
| Verdict / condition | Action |
|
|
73
86
|
|---|---|
|
|
74
87
|
| **FABRICATED** | The finding is **dropped** — there is no real source to correct, so re-verification is not attempted. |
|
|
75
88
|
| **MISATTRIBUTED** | Correct the attribution and re-verify **once**; a second non-clean verdict drops the finding. |
|
|
89
|
+
| **PARTIALLY_SUPPORTED** | A molecular claim is unsupported or overstated though the paper is real. Treated like a misattribution: correct the finding to what the source actually supports and re-verify **once**, or escalate — never auto-passed. |
|
|
76
90
|
| **CANNOT_CONFIRM** | The finding is **removed from the design connection AND surfaced to a human with a contrastive frame** — "you probably expected finding N citable; I left it out because the oracle couldn't confirm it — override with X." Never silently kept; reinstated only if a human confirms the source. |
|
|
77
91
|
| **Verifier or oracle UNAVAILABLE** | The dispatch **HALTS and escalates to a human.** Unavailability is NEVER read as "citations are fine" and NEVER read as fabrication. Proceeding without a completed verification is forbidden. |
|
|
78
92
|
| **No different family reachable** | The retrieval oracle (Stage 1) still runs — it is mechanism-diverse and needs no different family — and gates existence. The groundedness LLM lens (Stage 2) **halts-and-escalates** rather than running same-family. A same-family LLM is never substituted for the different-family check. |
|
|
79
93
|
|
|
94
|
+
**Abstention is calibrated and evidence-gated.** `CANNOT_CONFIRM` is a **first-class verdict the verifier is instructed to produce** — not a binary accept/reject collapsed under a confidence cut; a model trained or prompted to say "I don't know" is better calibrated than post-hoc thresholding (Zhang et al. 2023, arXiv:2311.09677). Trigger abstention on **external evidence absence** — the source wasn't fetched, or the retrieved text doesn't contain the claim — **never** on the verifier's own entropy or verbalized confidence, which can be confidently wrong (Phillips et al. 2026, arXiv:2603.21172). Where you tune a threshold, tune it with conformal calibration so the *accepted* set carries a provable error bound (Wang et al. 2024, arXiv:2407.00499). Surface a `CANNOT_CONFIRM` **contrastively and selectively** — "I expected to find X and didn't" — never as an always-on confidence bar, which measurably worsens over-reliance (Srinivasan & Thomason 2025, arXiv:2502.13321). Finally, **cap the abstain/escalation rate** against a labeled holdout and treat a spike as its own halt — over-refusal is itself a failure mode (Zhu et al. 2025, arXiv:2502.05911).
|
|
95
|
+
|
|
80
96
|
## Step 5 — Connect findings to architecture, not just cite them
|
|
81
97
|
|
|
82
98
|
The design's decision section references findings by number where they justify a choice; each load-bearing choice traces to ≥ 1 finding. Citations without connection are noise.
|
|
@@ -85,9 +101,28 @@ Example: *"Retry uses a fresh prompt without the previous output. (sycophancy mi
|
|
|
85
101
|
|
|
86
102
|
## Sourcing standard
|
|
87
103
|
|
|
88
|
-
**A citation includes ALL of:** (1) author(s) — first author + "et al." inline is fine; (2) year; (3)
|
|
104
|
+
**A citation includes ALL of:** (1) author(s) — first author + "et al." inline is fine; (2) year; (3) a **resolvable identifier or direct URL** — an arXiv id (arXiv:NNNN.NNNNN), a DOI, an RFC number, or a direct link to the source (not a summary or a social-media thread); a paper title is welcome but optional; (4) a one-sentence key finding in your own words.
|
|
105
|
+
|
|
106
|
+
> `study-swarm lint` enforces exactly this FORM locally — author + year + a resolvable arXiv/DOI/URL, and no "studies show…" gestures. arXiv ids and DOIs are preferred over a bare URL because Step 4's retrieval oracle resolves them deterministically.
|
|
107
|
+
|
|
108
|
+
**Not allowed:** "studies show…" / "research suggests…" / "it's well-established…" without naming the source; an identifier-less citation; citations the research step did not actually surface.
|
|
109
|
+
|
|
110
|
+
## Common failure modes
|
|
111
|
+
|
|
112
|
+
The patterns this protocol exists to catch — each with the step that catches it:
|
|
113
|
+
|
|
114
|
+
| Failure | Symptom | Caught by |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| **Fabricated citation** | the id resolves to nothing | Step 4 retrieval oracle → dropped |
|
|
117
|
+
| **Misattribution** | real paper, wrong author/year | Step 4 oracle → corrected once, else dropped |
|
|
118
|
+
| **Groundedness gap** | the link resolves but the source doesn't say it | Step 4 groundedness lens (distinct from existence) |
|
|
119
|
+
| **Self-grading** | the synthesizing model also "verifies" | Step 4 different-family rule |
|
|
120
|
+
| **Postdated-paper false-flag** | an LLM calls a real 2026 paper fabricated | why existence MUST be retrieval, not recall |
|
|
121
|
+
| **Question padding** | five thin questions, two actually evidence-changing | Step 1 ("don't manufacture to hit a count") |
|
|
122
|
+
| **Orphan citation** | a finding never referenced by a Step-5 choice | Step 5 (citations without a connection are noise) |
|
|
123
|
+
| **"Studies show…"** | a gesture with no source named | the sourcing standard / `lint` |
|
|
89
124
|
|
|
90
|
-
|
|
125
|
+
A fuller version with corrective actions is in the [handbook](https://dogfood-lab.github.io/study-swarm/handbook/failure-modes/).
|
|
91
126
|
|
|
92
127
|
## The architecture this protocol enables
|
|
93
128
|
|
package/README.es.md
CHANGED
|
@@ -13,51 +13,57 @@
|
|
|
13
13
|
<img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
|
-
**
|
|
16
|
+
**Fundamenten las decisiones de diseño en investigaciones citadas; luego, verifique las citas con un *modelo diferente* antes de que se convierta en algo definitivo.**
|
|
17
17
|
|
|
18
|
-
`study-swarm` es un protocolo, no una herramienta. Cuando
|
|
18
|
+
`study-swarm` es un protocolo, no una herramienta. Cuando toma una decisión de diseño importante con un LLM (un nuevo nivel de producto, una elección arquitectónica, una pregunta sobre si debemos confiar en el modelo), improvisar a partir de principios básicos da como resultado diseños obsoletos y citar artículos de memoria da como resultado diseños que se basan en fuentes que no existen o que no dicen lo que cree. `study-swarm` reemplaza ambas opciones: despliega agentes de investigación en paralelo, exige hallazgos específicos citados y valida cada cita a través de un **verificador externo de una familia de modelos diferente** antes de que influya en el diseño.
|
|
19
19
|
|
|
20
|
-
Aplica su propia medicina. El protocolo prescribe
|
|
20
|
+
Aplica su propia medicina. El protocolo prescribe envoltorios protegidos por verificadores para los sistemas que ayuda a diseñar, por lo que ejecuta uno sobre sí mismo. **Ningún modelo califica su propio trabajo, incluido el que ejecuta el protocolo.**
|
|
21
21
|
|
|
22
|
-
## El protocolo en cinco pasos
|
|
22
|
+
## El protocolo en cinco pasos:
|
|
23
23
|
|
|
24
|
-
1. **
|
|
25
|
-
2. **
|
|
26
|
-
3. **
|
|
27
|
-
4. **
|
|
28
|
-
5. **
|
|
24
|
+
1. **Identifique** de 3 a 5 preguntas de diseño clave donde la evidencia empírica cambiaría la respuesta.
|
|
25
|
+
2. **Despliegue** un agente de investigación por pregunta, en paralelo. Cada uno debe devolver títulos de artículos + autores + años + URL + un hallazgo de una sola oración; priorice la especificidad sobre la amplitud ("6 a 8 hallazgos bien documentados superan a 20 observaciones vagas").
|
|
26
|
+
3. **Sintetice** los hallazgos en una sección de *fundamentación basada en investigaciones*: `N. **<hallazgo>.** <Autores> <año> (<arXiv/DOI>). <implicación para el diseño>.`
|
|
27
|
+
4. **Verifique externamente**: una *familia de modelos diferente*, sin razonamiento, verifica cada cita en dos etapas: un **oráculo de recuperación** confirma que el artículo existe (nunca la memoria del modelo), y luego una lente de **fundamentación** confirma que el hallazgo coincide con la fuente. **Deténgase** si se detecta una falsificación o atribución incorrecta; **deténgase y escale** si el verificador o el oráculo de recuperación no están disponibles (nunca interprete la ausencia como "las citas son correctas").
|
|
28
|
+
5. **Conecte** cada elección arquitectónica con un hallazgo mediante un número. Las citas sin una implicación para el diseño son ruido.
|
|
29
29
|
|
|
30
|
-
Los detalles completos y ejecutables
|
|
30
|
+
Los detalles completos y ejecutables: la tabla de detención, el estándar de fuentes y la regla del conjunto se encuentran en **[PROTOCOL.md](PROTOCOL.md)**.
|
|
31
31
|
|
|
32
|
-
## ¿Por qué una *familia diferente
|
|
32
|
+
## ¿Por qué una *familia diferente*, sin razonamiento?
|
|
33
33
|
|
|
34
|
-
Porque los modos de
|
|
34
|
+
Porque los modos de falla están documentados, no son hipotéticos:
|
|
35
35
|
|
|
36
36
|
- **Los LLM no pueden verificar de manera confiable su propia salida.** Huang et al. 2023 ([arXiv:2310.01798](https://arxiv.org/abs/2310.01798)); Kambhampati et al. 2024 ([arXiv:2402.01817](https://arxiv.org/abs/2402.01817), LLM-Modulo); Stechly et al. 2024 ([arXiv:2402.08115](https://arxiv.org/abs/2402.08115)) — el verificador externo proporciona las ventajas; el contenido de autocrítica es inerte.
|
|
37
|
-
- **Los evaluadores de la misma familia se auto-favorecen.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — el
|
|
37
|
+
- **Los evaluadores de la misma familia se auto-favorecen.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — el autorreconocimiento se correlaciona *linealmente* con la autopreferencia, por lo que el cegamiento parcial no ayuda. Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — un panel de familias disjuntas es menos sesgado a un costo aproximadamente 7 veces menor.
|
|
38
38
|
- **Las citas son donde los LLM mienten.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — el 55% de las citas de GPT-3.5 / 18% de las citas de GPT-4 son falsas. Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — los enlaces resuelven más del 94% de las veces, pero solo el 39-77% del contenido citado realmente respalda la afirmación. Por lo tanto, la existencia debe verificarse mediante la **recuperación, no la memoria**.
|
|
39
|
-
- **
|
|
40
|
-
- **La diversidad supera a la cantidad.** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — cuatro verificadores con una correlación por pares
|
|
39
|
+
- **Oculte el razonamiento del generador.** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), "Gaming the Judge") — manipular solo la cadena de pensamiento infla los falsos positivos de un evaluador hasta en un 90% con acciones fijas. Turpin et al. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — CoT es una racionalización *a posteriori*. El verificador ve la afirmación de cita sin adornos, nunca el "por qué lo incluí".
|
|
40
|
+
- **La diversidad supera a la cantidad.** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — cuatro verificadores con una correlación por pares ρ ∈ [0.05, 0.25] superan a cualquiera de ellos mediante una cobertura submodular. Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — los errores de los LLM están *correlacionados*, por lo que la variable clave es la diversidad de las lentes, no la cantidad bruta.
|
|
41
41
|
|
|
42
|
-
## ¿
|
|
42
|
+
## ¿Realmente funciona? (prueba)
|
|
43
43
|
|
|
44
|
-
Como prueba, el protocolo se ejecutó con sus propias citas. Dos familias
|
|
44
|
+
Como prueba, el protocolo se ejecutó con sus propias citas. Dos familias decorrelacionadas y distintas a Claude: **Mistral** (`mistral-small:24b`) e **IBM Granite** (`granite4.1:30b`), verificaron un conjunto de citas sin razonamiento, con dos trampas ocultas:
|
|
45
45
|
|
|
46
46
|
| Trampa plantada | Mistral | IBM Granite | Verdad fundamental |
|
|
47
47
|
|---|---|---|---|
|
|
48
|
-
| El razonamiento
|
|
48
|
+
| El razonamiento de la cadena de pensamiento se atribuyó a "Nakamura & Olsen" | no detectada | **detectada** (atribución incorrecta → en realidad Wei et al. 2022, arXiv:2201.11903) | atribución incorrecta |
|
|
49
49
|
| un artículo fabricado con la afirmación de que "el 98% de los errores se eliminan, no se necesita un oráculo" | **caught** (fabricated) | **caught** (fabricated) | fabricado |
|
|
50
50
|
|
|
51
|
-
Ninguna de las dos familias detectó ambas trampas por sí sola, pero su **unión detectó 2/2**. Un solo evaluador habría aceptado la atribución incorrecta. Por separado, el oráculo de recuperación detectó dos *atribuciones incorrectas reales* en nuestros propios documentos de diseño (artículos citados
|
|
51
|
+
Ninguna de las dos familias detectó ambas trampas por sí sola, pero su **unión detectó 2/2**. Un solo evaluador habría aceptado la atribución incorrecta. Por separado, el oráculo de recuperación detectó dos *atribuciones incorrectas reales* en nuestros propios documentos de diseño (artículos citados bajo el primer autor incorrecto) que ningún LLM paramétrico podría haber señalado, y confirmó correctamente los artículos genuinos de 2026 que ambos LLM marcaron erróneamente como fabricados simplemente porque los artículos son posteriores a su entrenamiento. Ese último punto es la razón por la cual la verificación de existencia en el paso 4 **debe** ser un oráculo de recuperación, nunca un LLM.
|
|
52
52
|
|
|
53
|
-
Esa única ejecución es la tesis en miniatura: **lentes
|
|
53
|
+
Esa única ejecución es la tesis en miniatura: **lentes decorrelacionadas + un oráculo de recuperación para la existencia superan a cualquier evaluador inteligente**.
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
### …y nuevamente, para diseñar v1.1
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
Las mejoras de la versión 1.1 se eligieron de la misma manera: ejecutando `study-swarm` sobre sí mismo (`study-swarm`). Cuatro preguntas que quedaron pendientes en la primera versión ("creo que...") (cómo *mecanizar* la verificación de la fundamentación, si se debe realizar la búsqueda en el momento de la generación, cómo *combinar* las diferentes perspectivas, si se debe abstenerse en caso de incertidumbre calibrada) se enviaron a agentes de investigación paralelos, y todas las **27 citas resultantes** se validaron mediante el paso 4 antes de que ninguna influyera en el diseño. El oráculo de recuperación confirmó la **existencia de 27/27** (incluidos seis artículos de 2025-2026 que un modelo paramétrico habría marcado erróneamente como fabricados) y corrigió cinco atribuciones que un modelo no podría haber identificado, entre ellas una atribución incorrecta real del autor principal que el agente de investigación identificó en sí mismo. Al ejecutarlo sin razonamiento previo, las diferentes perspectivas incluso reprodujeron sus propios modos de fallo documentados en nuestra prueba: uno etiquetó con confianza erróneamente un artículo real, y su *desacuerdo* desencadenó una escalada, exactamente como lo prescribe la cascada. La prueba completa se incluye como [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md); las mejoras que se aplicaron (fundamentación descompuesta/ternaria, búsqueda en el momento de la generación, cascada validada por el oráculo y abstención calibrada) se encuentran en [PROTOCOL.md](PROTOCOL.md).
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
## Cómo está configurado
|
|
60
|
+
|
|
61
|
+
Puede ejecutar el protocolo manualmente; cualquier modelo de una familia diferente más la resolución manual de arXiv/DOI satisface el paso 4. Dos herramientas complementarias lo convierten en un solo comando:
|
|
62
|
+
|
|
63
|
+
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)**: el verificador en tiempo de ejecución: enrutamiento entre familias diferentes, sin razonamiento previo, adjudicación con múltiples perspectivas, un límite determinista para la existencia de referencias (arXiv → Crossref) y recibos firmados.
|
|
64
|
+
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)**: proporciona `roleos verify-citations <dispatch>`, el ejecutor que extrae las citas de una prueba y las valida mediante prism.
|
|
65
|
+
|
|
66
|
+
La transferencia es el propio formato de la prueba: un hallazgo escrito como `N. **hallazgo.** Autores año (arXiv|DOI). implicación.` —con **un identificador resoluble por cada hallazgo— es exactamente lo que `roleos verify-citations` extrae y valida. Una prueba "limpia" se transfiere sin problemas; una cita malformada es lo que el ejecutor marca como no analizada. Este contrato es lo que `study-swarm lint` verifica localmente, por lo que los pasos 3 y 4 coinciden en lo que es una cita.
|
|
61
67
|
|
|
62
68
|
## CLI
|
|
63
69
|
|
|
@@ -65,25 +71,60 @@ Puede ejecutar el protocolo manualmente: cualquier modelo de una familia diferen
|
|
|
65
71
|
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
72
|
```
|
|
67
73
|
|
|
68
|
-
| Comando |
|
|
74
|
+
| Comando | Qué hace |
|
|
69
75
|
|---|---|
|
|
70
|
-
| `study-swarm protocol` | Imprime el protocolo completo: los cinco pasos, la tabla de
|
|
71
|
-
| `study-swarm new <slug>` | Crea un archivo `<slug>.dispatch.md` con
|
|
72
|
-
| `study-swarm lint <
|
|
76
|
+
| `study-swarm protocol` | Imprime el protocolo completo: los cinco pasos, la tabla de detención y el estándar de fuentes. |
|
|
77
|
+
| `study-swarm new <slug>` | Crea un archivo `<slug>.dispatch.md` con el esqueleto de los cinco pasos para completarlo. |
|
|
78
|
+
| `study-swarm lint [--json] <path…>` | Verifica la *fundamentación de la investigación* de una prueba en comparación con el estándar de fuentes: cada hallazgo necesita un autor, un año y un identificador resoluble (arXiv / DOI / URL); se rechaza cualquier afirmación vaga del tipo "los estudios demuestran...". Sale con código `1` si hay infracciones, por lo que valida la integración continua. Un `<path>` puede ser un archivo, un directorio (se analiza recursivamente para archivos `*.dispatch.md`) o `-` para la entrada estándar; `--json` emite un informe legible por máquina. |
|
|
79
|
+
|
|
80
|
+
`lint` es determinista: no realiza llamadas al modelo, por lo que es seguro en la integración continua. Aplica el **estándar de fuentes del paso 3** localmente; la verificación basada en modelos del **paso 4** sigue utilizando [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
|
|
81
|
+
|
|
82
|
+
Un ciclo típico:
|
|
73
83
|
|
|
74
|
-
|
|
84
|
+
```bash
|
|
85
|
+
study-swarm new my-decision # creates my-decision.dispatch.md
|
|
86
|
+
# …fill in the questions, run the research dispatch, write the findings…
|
|
87
|
+
study-swarm lint my-decision.dispatch.md # enforce the sourcing standard (Step 3)
|
|
88
|
+
roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Dos pruebas completas y "limpias" se incluyen como referencias: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la decisión central del protocolo, concisa) y [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (el diseño completo de la versión 1.1: 27 citas, todas verificadas externamente).
|
|
92
|
+
|
|
93
|
+
### Valídalo en la integración continua
|
|
94
|
+
|
|
95
|
+
`lint` acepta un archivo, un directorio (se analiza recursivamente para archivos `*.dispatch.md`) o `-` para la entrada estándar, y `--json` emite un informe legible por máquina. Incluya esto en su repositorio para validar las fuentes de cada prueba en cada solicitud de extracción (también hay una muestra que se puede copiar y pegar en [`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)):
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
# .github/workflows/dispatches.yml
|
|
99
|
+
name: study-swarm lint
|
|
100
|
+
on:
|
|
101
|
+
pull_request:
|
|
102
|
+
paths: ['**/*.dispatch.md', '.github/workflows/dispatches.yml']
|
|
103
|
+
workflow_dispatch:
|
|
104
|
+
concurrency:
|
|
105
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
106
|
+
cancel-in-progress: true
|
|
107
|
+
jobs:
|
|
108
|
+
lint:
|
|
109
|
+
runs-on: ubuntu-latest
|
|
110
|
+
steps:
|
|
111
|
+
- uses: actions/checkout@v4
|
|
112
|
+
- uses: actions/setup-node@v4
|
|
113
|
+
with: { node-version: '20' }
|
|
114
|
+
- run: npx @dogfood-lab/study-swarm@latest lint dispatches/
|
|
115
|
+
```
|
|
75
116
|
|
|
76
117
|
## Por qué funciona, en pocas palabras
|
|
77
118
|
|
|
78
|
-
**
|
|
119
|
+
**Actual:** el campo evoluciona rápidamente; exigir estudios específicos con años evita que los diseños se retrasen 18 meses. **Funcional:** la evidencia muestra lo que *falla*, no solo lo que funciona (las explicaciones pueden aumentar la dependencia excesiva de la IA *incorrecta* — Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Seguro:** el entorno protegido por el verificador es la arquitectura que respalda la evidencia, y el protocolo lo aplica a su propia salida. La verificación de fuentes no es un ejercicio académico; es el rastro de la evidencia.
|
|
79
120
|
|
|
80
121
|
## Seguridad
|
|
81
122
|
|
|
82
|
-
`study-swarm`
|
|
123
|
+
`study-swarm` incluye una **CLI delgada, con cero dependencias** (`study-swarm`) junto con la metodología. No realiza **ninguna llamada a la red ni al modelo** y no recopila **ningún dato de telemetría**; no hay secretos ni credenciales en el código fuente. En tiempo de ejecución, solo lee el archivo que se le pasa a `lint` y escribe un único archivo `<slug>.dispatch.md` en el directorio actual para la opción `new` (rechazando sobrescribir y nunca saliendo del directorio de trabajo). La verificación basada en modelos que describe la metodología (paso 4) la realizan las herramientas complementarias, no este paquete. Consulte [SECURITY.md](SECURITY.md).
|
|
83
124
|
|
|
84
125
|
## Estado
|
|
85
126
|
|
|
86
|
-
Un protocolo funcional, verificado externamente por su propio mecanismo: una familia de modelos diferente verifica sus citas (vea la prueba anterior). Este repositorio es la referencia pública; [PROTOCOL.md](PROTOCOL.md) es la
|
|
127
|
+
Un protocolo funcional, verificado externamente por su propio mecanismo: una familia de modelos diferente verifica sus citas (vea la prueba anterior). La **versión 1.1** mejora el verificador donde la primera versión no lo hacía: fundamentación descompuesta/ternaria, búsqueda en el momento de la generación, cascada validada por un oráculo para combinar perspectivas y abstención calibrada; todo ello se basa en la prueba verificada de la versión 1.1. Este repositorio es la referencia pública; [PROTOCOL.md](PROTOCOL.md) es la forma ejecutable. Forma parte de la familia [dogfood-lab](https://github.com/dogfood-lab): métodos y ejemplos para construir en la era de la IA.
|
|
87
128
|
|
|
88
129
|
Con licencia MIT.
|
|
89
130
|
|
package/README.fr.md
CHANGED
|
@@ -13,77 +13,118 @@
|
|
|
13
13
|
<img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
|
-
**Ancrez les décisions de conception dans
|
|
16
|
+
**Ancrez les décisions de conception dans des recherches citées, puis vérifiez ces citations à l’aide d’une *autre* famille de modèles avant que quoi que ce soit ne devienne un élément canonique.**
|
|
17
17
|
|
|
18
|
-
`study-swarm` est un protocole, pas un outil. Lorsque vous prenez une décision de conception importante avec un LLM (un nouveau niveau de produit, un choix d’architecture, une question du type « devons-nous faire confiance au modèle ici »), improviser à partir de principes
|
|
18
|
+
`study-swarm` est un protocole, pas un outil. Lorsque vous prenez une décision de conception importante avec un LLM (un nouveau niveau de produit, un choix d’architecture, une question du type « devons-nous faire confiance au modèle ici »), improviser à partir de principes fondamentaux conduit à des conceptions obsolètes, et citer des articles de mémoire conduit à des conceptions qui reposent sur des sources inexistantes ou qui ne disent pas ce que vous pensez. `study-swarm` remplace les deux : il lance en parallèle des agents de recherche, exige des résultats spécifiques cités et soumet chaque citation à un **vérificateur externe d’une famille de modèles différente** avant qu’elle n’influence la conception.
|
|
19
19
|
|
|
20
|
-
Il applique sa propre méthode. Le protocole prescrit
|
|
20
|
+
Il applique sa propre méthode. Le protocole prescrit l’utilisation d’enveloppes protégées par un vérificateur pour les systèmes dont il facilite la conception, il l’applique donc à lui-même. **Aucun modèle ne corrige ses propres devoirs, y compris celui qui exécute le protocole.**
|
|
21
21
|
|
|
22
22
|
## Le protocole en cinq étapes
|
|
23
23
|
|
|
24
|
-
1. **Identifiez** 3 à 5 questions de conception essentielles
|
|
25
|
-
2. **Lancez** un agent de recherche par question, en parallèle. Chacun doit renvoyer les titres des articles + les auteurs + les années + les URL +
|
|
26
|
-
3. **Synthétisez** les
|
|
27
|
-
4. **Vérifiez de manière externe** — une *famille de modèles différente*, sans raisonnement, vérifie chaque citation en deux étapes : un **oracle de récupération** confirme que l’article existe (jamais la mémoire du modèle), puis une **lentille
|
|
28
|
-
5. **Reliez** chaque choix architectural à
|
|
24
|
+
1. **Identifiez** 3 à 5 questions de conception essentielles dont la réponse serait modifiée par des preuves empiriques.
|
|
25
|
+
2. **Lancez** un agent de recherche par question, en parallèle. Chacun doit renvoyer les titres des articles + les auteurs + les années + les URL + une conclusion d’une phrase (privilégiez la spécificité à l’étendue : « 6 à 8 conclusions bien étayées sont plus efficaces que 20 observations vagues »).
|
|
26
|
+
3. **Synthétisez** les conclusions dans une section intitulée *Justification par la recherche* : `N. <conclusion>. <Auteurs> <année> (<arXiv/DOI>). <implication pour la conception>.`
|
|
27
|
+
4. **Vérifiez de manière externe** — une *famille de modèles différente*, sans raisonnement, vérifie chaque citation en deux étapes : un **oracle de récupération** confirme que l’article existe (jamais à partir de la mémoire du modèle), puis une **lentille d’exactitude** confirme que la conclusion correspond à la source. **Arrêtez le processus** si la citation est fabriquée ou mal attribuée ; **arrêtez et escaladez** si le vérificateur ou l’oracle de récupération n’est pas disponible (ne considérez jamais l’absence comme signifiant que les citations sont correctes).
|
|
28
|
+
5. **Reliez** chaque choix architectural à une conclusion en utilisant un numéro. Les citations qui n’ont pas d’implication pour la conception sont du bruit.
|
|
29
29
|
|
|
30
|
-
Les détails exécutables
|
|
30
|
+
Les détails complets et exécutables (le tableau d’arrêt, la norme de référencement, la règle d’ensemble) se trouvent dans **[PROTOCOL.md](PROTOCOL.md)**.
|
|
31
31
|
|
|
32
32
|
## Pourquoi une *famille différente*, sans raisonnement ?
|
|
33
33
|
|
|
34
34
|
Parce que les modes d’échec sont documentés, et non hypothétiques :
|
|
35
35
|
|
|
36
|
-
- **Les LLM ne peuvent pas vérifier de manière fiable leurs propres résultats.** Huang et al. 2023 ([arXiv:2310.01798](https://arxiv.org/abs/2310.01798)) ; Kambhampati et al. 2024 ([arXiv:2402.01817](https://arxiv.org/abs/2402.01817), LLM-Modulo) ; Stechly et al. 2024 ([arXiv:2402.08115](https://arxiv.org/abs/2402.08115)) — le vérificateur externe apporte les
|
|
37
|
-
- **Les juges de la même famille ont une préférence pour eux-mêmes.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — l’auto-reconnaissance est corrélée *linéairement* avec
|
|
38
|
-
- **Les citations sont les endroits où les LLM mentent.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — 55 % des citations de GPT-3.5
|
|
39
|
-
- **Masquez le raisonnement du générateur.** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), « Gaming the Judge ») — la manipulation
|
|
40
|
-
- **La diversité
|
|
36
|
+
- **Les LLM ne peuvent pas vérifier de manière fiable leurs propres résultats.** Huang et al. 2023 ([arXiv:2310.01798](https://arxiv.org/abs/2310.01798)) ; Kambhampati et al. 2024 ([arXiv:2402.01817](https://arxiv.org/abs/2402.01817), LLM-Modulo) ; Stechly et al. 2024 ([arXiv:2402.08115](https://arxiv.org/abs/2402.08115)) — le vérificateur externe apporte les améliorations ; le contenu d’autocritique est inerte.
|
|
37
|
+
- **Les juges de la même famille ont une préférence pour eux-mêmes.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — l’auto-reconnaissance est corrélée *linéairement* avec la préférence pour soi-même, de sorte qu’un aveuglement partiel n’est pas utile. Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — un groupe de juges issus de familles distinctes est moins biaisé, pour un coût environ 7 fois inférieur.
|
|
38
|
+
- **Les citations sont les endroits où les LLM mentent.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — 55 % des citations de GPT-3.5 et 18 % des citations de GPT-4 sont fabriquées. Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — les liens résolvent plus de 94 % du temps, mais seulement 39 à 77 % du contenu cité soutiennent réellement l’affirmation. Par conséquent, l’existence doit être vérifiée par **la récupération, et non par la mémorisation**.
|
|
39
|
+
- **Masquez le raisonnement du générateur.** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), « Gaming the Judge ») — la manipulation de la chaîne de pensée seule augmente les faux positifs d’un juge jusqu’à 90 %, les actions étant maintenues fixes. Turpin et al. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — la chaîne de pensée est une rationalisation a posteriori. Le vérificateur voit uniquement l’affirmation de citation, jamais le « pourquoi je l’ai incluse ».
|
|
40
|
+
- **La diversité surpasse la quantité.** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — quatre vérificateurs avec une corrélation par paires ρ ∈ [0,05, 0,25] sont plus efficaces qu’un seul grâce à la couverture sous-modulaire. Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — les erreurs des LLM sont *corrélées*, de sorte que la variable essentielle est la diversité des lentilles, et non la quantité brute.
|
|
41
41
|
|
|
42
42
|
## Est-ce que cela fonctionne réellement ? (preuve)
|
|
43
43
|
|
|
44
|
-
À titre de test, le protocole a été appliqué à ses propres citations. Deux familles non-Claude
|
|
44
|
+
À titre de test, le protocole a été appliqué à ses propres citations. Deux familles non-Claude décorrélées — **Mistral** (`mistral-small:24b`) et **IBM Granite** (`granite4.1:30b`) — ont vérifié un ensemble de citations, sans raisonnement, en y intégrant deux pièges aveugles :
|
|
45
45
|
|
|
46
46
|
| Piège planté | Mistral | IBM Granite | Vérité terrain |
|
|
47
47
|
|---|---|---|---|
|
|
48
|
-
|
|
|
49
|
-
| un article fabriqué « 98 % des erreurs éliminées, aucun oracle n’est nécessaire » | **caught** (fabricated) | **caught** (fabricated) | fabriqué |
|
|
48
|
+
| Une chaîne de pensée attribuée à « Nakamura & Olsen » | non détecté | **détecté** (mal attribué → en réalité Wei et al. 2022, arXiv:2201.11903) | mal attribué |
|
|
49
|
+
| un article fabriqué affirmant que « 98 % des erreurs sont éliminées, aucun oracle n’est nécessaire » | **caught** (fabricated) | **caught** (fabricated) | fabriqué |
|
|
50
50
|
|
|
51
|
-
Aucune des deux familles n’a détecté les deux pièges
|
|
51
|
+
Aucune des deux familles n’a détecté les deux pièges individuellement, mais leur **union a permis de détecter 2/2**. Un seul juge aurait validé la mauvaise attribution. Par ailleurs, l’oracle de récupération a détecté deux *vrais* mauvaises attributions dans nos propres documents de conception (articles cités sous le nom du mauvais premier auteur) que aucun LLM paramétrique n’aurait pu signaler — et il a correctement confirmé des articles authentiques de 2026 que les deux LLM ont faussement signalés comme étant fabriqués simplement parce que les articles sont postérieurs à leur date d’entraînement. Ce dernier point est la raison pour laquelle la vérification de l’existence dans l’étape 4 **doit** être effectuée par un oracle de récupération, et non par un LLM.
|
|
52
52
|
|
|
53
|
-
Cette seule
|
|
53
|
+
Cette seule expérience résume la thèse : **des lentilles décorrélées + un oracle de récupération pour vérifier l’existence sont plus efficaces qu’un seul juge intelligent.**
|
|
54
|
+
|
|
55
|
+
### …et encore une fois, pour concevoir la version 1.1
|
|
56
|
+
|
|
57
|
+
Les améliorations de la version 1.1 ont été choisies de la même manière : en exécutant « study-swarm » sur « study-swarm ». Quatre questions auxquelles la première version n’avait pas répondu (« Je pense que… ») (comment *mécaniser* la vérification du fondement, faut-il effectuer le fondement au moment de la génération, comment *combiner* les différentes sources d’information, faut-il s’abstenir en cas d’incertitude calibrée) ont été soumises à des agents de recherche parallèles, et les **27 références résultantes** ont été validées à l’étape 4 avant d’influencer la conception. L’oracle de récupération a confirmé que **les 27/27 existent**, y compris six articles datant de 2025-2026 qu’un modèle paramétrique aurait faussement identifiés comme étant fabriqués, et il a corrigé cinq attributions qu’un modèle n’aurait pas pu faire, dont une véritable erreur d’attribution à un premier auteur que l’agent de recherche avait lui-même signalée. En exécutant le processus sans raisonnement préalable, les différentes sources d’information ont même reproduit leurs propres modes d’échec documentés dans notre analyse : l’une a identifié avec assurance un article réel de manière incorrecte, et leur *désaccord* a déclenché une escalade, exactement comme le prévoit la cascade. L’analyse effectuée est fournie sous forme de [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) ; les améliorations qui ont été validées (fondement décomposé/ternaire, fondement au moment de la génération, cascade validée par l’oracle et abstention calibrée) sont disponibles dans [PROTOCOL.md](PROTOCOL.md).
|
|
54
58
|
|
|
55
59
|
## Comment cela fonctionne
|
|
56
60
|
|
|
57
|
-
Vous pouvez exécuter le protocole manuellement
|
|
61
|
+
Vous pouvez exécuter le protocole manuellement : tout modèle d’une famille différente, associé à la résolution de l’identifiant arXiv/DOI, satisfait les exigences de l’étape 4. Deux outils complémentaires permettent de réaliser cette opération en une seule commande :
|
|
62
|
+
|
|
63
|
+
- **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** : le vérificateur d’exécution : routage pour les modèles de familles différentes, suppression du raisonnement préalable, arbitrage multi-sources, seuil minimal déterministe pour la récupération (arXiv → Crossref) et reçus signés.
|
|
64
|
+
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** : fournit `roleos verify-citations <dispatch>`, l’outil qui extrait les références d’une analyse et les valide à travers prism.
|
|
58
65
|
|
|
59
|
-
|
|
60
|
-
- **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — fournit `roleos verify-citations <dispatch>`, l’exécutant qui extrait les citations d’un document et les soumet à prism pour vérification.
|
|
66
|
+
Le transfert se fait par le biais du format de l’analyse : une conclusion rédigée sous la forme « N. **conclusion**. Auteurs, année (arXiv|DOI). implication » — avec **un seul identifiant résolvable par conclusion** — est exactement ce que `roleos verify-citations` extrait et valide. Une analyse propre (« lint-clean ») se transfère sans problème ; une référence mal formée est celle que l’outil signale comme non analysée. Ce contrat est ce que `study-swarm lint` vérifie localement, de sorte que les étapes 3 et 4 s’accordent sur la définition d’une référence.
|
|
61
67
|
|
|
62
|
-
## Interface en ligne de commande
|
|
68
|
+
## Interface en ligne de commande (CLI)
|
|
63
69
|
|
|
64
70
|
```bash
|
|
65
71
|
npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
|
|
66
72
|
```
|
|
67
73
|
|
|
68
|
-
| Commande |
|
|
74
|
+
| Commande | Fonctionnalité |
|
|
69
75
|
|---|---|
|
|
70
|
-
| `study-swarm protocol` | Affiche le protocole complet
|
|
76
|
+
| `study-swarm protocol` | Affiche le protocole complet : les cinq étapes, la table d’arrêt et la norme de référencement. |
|
|
71
77
|
| `study-swarm new <slug>` | Crée un fichier `<slug>.dispatch.md` avec le squelette des cinq étapes à compléter. |
|
|
72
|
-
| `study-swarm lint <
|
|
78
|
+
| `study-swarm lint [--json] <path…>` | Vérifie le *fondement de la recherche* d’une analyse par rapport à la norme de référencement : chaque conclusion doit comporter un auteur, une année et un identifiant résolvable (arXiv / DOI / URL) ; les affirmations du type « des études montrent que… » ne sont pas acceptées. En cas de violation, le programme se termine avec le code `1`, ce qui permet de contrôler l’intégration continue (CI). Un `<path>` peut être un fichier, un répertoire (vérifié récursivement pour les fichiers `*.dispatch.md`) ou `-` pour l’entrée standard ; l’option `--json` génère un rapport lisible par machine. |
|
|
79
|
+
|
|
80
|
+
`lint` est déterministe — il n’effectue aucun appel de modèle — ce qui le rend sûr à utiliser dans l’intégration continue (CI). Il applique localement la **norme de référencement de l’étape 3** ; la vérification basée sur un modèle de l’**étape 4** est toujours effectuée par les outils complémentaires, et non par ce paquet. Voir [SECURITY.md](SECURITY.md).
|
|
81
|
+
|
|
82
|
+
Exemple d’utilisation :
|
|
73
83
|
|
|
74
|
-
|
|
84
|
+
```bash
|
|
85
|
+
study-swarm new my-decision # creates my-decision.dispatch.md
|
|
86
|
+
# …fill in the questions, run the research dispatch, write the findings…
|
|
87
|
+
study-swarm lint my-decision.dispatch.md # enforce the sourcing standard (Step 3)
|
|
88
|
+
roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Deux analyses complètes et propres sont fournies en exemple : [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la décision centrale du protocole, concise) et [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (l’ensemble des 27 références de la version 1.1, chacune ayant été vérifiée en externe).
|
|
92
|
+
|
|
93
|
+
### Intégration dans l’intégration continue (CI)
|
|
94
|
+
|
|
95
|
+
`lint` prend un fichier, un répertoire (vérifié récursivement pour les fichiers `*.dispatch.md`) ou `-` pour l’entrée standard, et `--json` génère un rapport lisible par machine. Vous pouvez intégrer cela dans votre dépôt afin de valider le référencement de chaque analyse lors de chaque demande d’extraction (un exemple de copie-collage est également disponible dans [`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)) :
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
# .github/workflows/dispatches.yml
|
|
99
|
+
name: study-swarm lint
|
|
100
|
+
on:
|
|
101
|
+
pull_request:
|
|
102
|
+
paths: ['**/*.dispatch.md', '.github/workflows/dispatches.yml']
|
|
103
|
+
workflow_dispatch:
|
|
104
|
+
concurrency:
|
|
105
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
106
|
+
cancel-in-progress: true
|
|
107
|
+
jobs:
|
|
108
|
+
lint:
|
|
109
|
+
runs-on: ubuntu-latest
|
|
110
|
+
steps:
|
|
111
|
+
- uses: actions/checkout@v4
|
|
112
|
+
- uses: actions/setup-node@v4
|
|
113
|
+
with: { node-version: '20' }
|
|
114
|
+
- run: npx @dogfood-lab/study-swarm@latest lint dispatches/
|
|
115
|
+
```
|
|
75
116
|
|
|
76
|
-
## Pourquoi cela fonctionne, en
|
|
117
|
+
## Pourquoi cela fonctionne, en résumé
|
|
77
118
|
|
|
78
|
-
**Actuel**
|
|
119
|
+
**Actuel** : le domaine évolue rapidement ; exiger des études spécifiques avec les années correspondantes évite que les conceptions ne soient mises en œuvre avec 18 mois de retard. **Fonctionnel** : les données montrent ce qui *échoue*, et pas seulement ce qui fonctionne (les explications peuvent entraîner une dépendance excessive à l’égard d’une IA *incorrecte* — Bansal et al., 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Sûr** : l’enveloppe protégée par le vérificateur est l’architecture que les données étayent, et le protocole l’applique à sa propre sortie. Le référencement n’est pas un exercice académique ; c’est la preuve.
|
|
79
120
|
|
|
80
121
|
## Sécurité
|
|
81
122
|
|
|
82
|
-
`study-swarm`
|
|
123
|
+
`study-swarm` fournit une **CLI légère et sans dépendances** (`study-swarm`) ainsi que la méthodologie. Il n’effectue **aucun appel réseau ou de modèle** et ne collecte **aucune télémétrie** ; il n’y a pas de secrets ni d’identifiants dans le code source. Lors de l’exécution, il lit uniquement le fichier que vous transmettez à `lint` et écrit un seul fichier `<slug>.dispatch.md` dans le répertoire actuel pour `new` (il refuse d’écraser les fichiers existants et n’écrira jamais en dehors du répertoire de travail). La vérification basée sur un modèle décrite dans la méthodologie (étape 4) est effectuée par les outils complémentaires, et non par ce paquet. Voir [SECURITY.md](SECURITY.md).
|
|
83
124
|
|
|
84
|
-
## État
|
|
125
|
+
## État actuel
|
|
85
126
|
|
|
86
|
-
Un protocole fonctionnel, vérifié
|
|
127
|
+
Un protocole fonctionnel, vérifié en externe par ses propres mécanismes : un modèle d’une famille différente vérifie ses références (voir la preuve ci-dessus). La **version 1.1** affine le vérificateur là où la première version était silencieuse : fondement décomposé/ternaire, fondement au moment de la génération, cascade validée par l’oracle pour combiner les sources d’information et abstention calibrée — chacun étant basé sur l’analyse vérifiée de la version 1.1. Ce dépôt est la référence publique ; [PROTOCOL.md](PROTOCOL.md) est la forme exécutable. Il fait partie de la famille [dogfood-lab](https://github.com/dogfood-lab) : méthodes et exemples pour construire dans l’ère de l’IA.
|
|
87
128
|
|
|
88
129
|
Licence MIT.
|
|
89
130
|
|