@dogfood-lab/study-swarm 1.1.0 → 1.3.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/README.it.md CHANGED
@@ -17,55 +17,55 @@
17
17
 
18
18
  `study-swarm` è un protocollo, non uno strumento. Quando si prende una decisione progettuale importante con un LLM (un nuovo livello di prodotto, una scelta architettonica, una valutazione sul fatto se fidarsi o meno del modello), improvvisare partendo da principi generali porta a progetti obsoleti e citare articoli a memoria porta a progetti basati su fonti inesistenti o che non dicono ciò che si pensa. `study-swarm` sostituisce entrambi: attiva agenti di ricerca paralleli, richiede risultati specifici dalle ricerche citate e sottopone ogni citazione a un **verificatore esterno appartenente a una famiglia di modelli diversa** prima che influenzi il progetto.
19
19
 
20
- Applica la propria metodologia. Il protocollo prevede l'utilizzo di verificatori per proteggere le informazioni contenute nei sistemi che aiuta a progettare, quindi lo applica anche a se stesso. **Nessun modello valuta il proprio lavoro, incluso quello che esegue il protocollo.**
20
+ Applica la propria "medicina". Il protocollo prevede l'utilizzo di verificatori per proteggere le informazioni contenute nei sistemi che aiuta a progettare, quindi lo applica anche a se stesso. **Nessun modello valuta il proprio lavoro, incluso quello che esegue il protocollo.**
21
21
 
22
22
  ## Il protocollo in cinque passaggi:
23
23
 
24
- 1. **Identificare** 3-5 domande progettuali fondamentali a cui una prova empirica cambierebbe la risposta.
25
- 2. **Attivare** un agente di ricerca per ogni domanda, in parallelo. Ognuno deve restituire titoli degli articoli + autori + anni + URL + un risultato espresso in una frase (dare priorità alla specificità rispetto all'ampiezza: "6-8 risultati ben documentati sono meglio di 20 affermazioni vaghe").
26
- 3. **Sintetizzare** i risultati in una sezione intitolata *Fondamento della ricerca*: `N. **<risultato>.** <Autori> <anno> (<arXiv/DOI>). <implicazione progettuale>.`
27
- 4. **Verificare esternamente** — una *famiglia di modelli diversa*, priva di capacità di ragionamento, controlla ogni citazione in due fasi: un **oracolo di recupero** conferma l'esistenza dell'articolo (non si basa mai sulla memoria del modello), quindi una lente di **verifica della veridicità** conferma che il risultato corrisponda alla fonte. **Interrompere** se la citazione è fabbricata o attribuita in modo errato; **interrompere e segnalare** se il verificatore o l'oracolo di recupero non sono disponibili (non interpretare mai l'assenza come "le citazioni sono corrette").
28
- 5. **Collegare** ogni scelta architettonica a un risultato specifico, tramite numero. Le citazioni prive di implicazioni progettuali sono irrilevanti.
24
+ 1. **Identificare** 3-5 domande progettuali fondamentali su cui le prove empiriche potrebbero cambiare la risposta.
25
+ 2. **Attivare** un agente di ricerca per ogni domanda, in parallelo. Ognuno deve restituire titoli degli articoli + autori + anni + URL + una breve sintesi (una frase) dare priorità alla specificità rispetto all'ampiezza ("6-8 risultati ben documentati sono meglio di 20 affermazioni vaghe").
26
+ 3. **Sintetizzare** i risultati in una sezione "Fondamento della ricerca": `N. **<risultato>.** <Autori> <anno> (<arXiv/DOI>). <implicazione progettuale>.`
27
+ 4. **Verificare esternamente** — una *famiglia di modelli diversa*, priva di capacità di ragionamento, controlla ogni citazione in due fasi: un **oracolo di recupero** conferma che l'articolo esiste (non si basa mai sulla memoria del modello), quindi una "lente di fondatezza" verifica che il risultato corrisponda alla fonte. **Interrompere** se la citazione è fabbricata o attribuita in modo errato; **interrompere e segnalare** se il verificatore o l'oracolo di recupero non sono disponibili (non interpretare mai l'assenza come "le citazioni sono corrette").
28
+ 5. **Collegare** ogni scelta architettonica a un risultato specifico, tramite numero. Le citazioni prive di implicazioni progettuali sono rumore.
29
29
 
30
- I dettagli completi e implementabili — la tabella di interruzione, lo standard per le fonti, la regola dell'insieme — si trovano in **[PROTOCOL.md](PROTOCOL.md)**.
30
+ I dettagli completi e eseguibili — la tabella di interruzione, lo standard per le fonti, la regola dell'insieme — si trovano in **[PROTOCOL.md](PROTOCOL.md)**.
31
31
 
32
- ## Perché una *famiglia* diversa, priva di capacità di ragionamento?
32
+ ## Perché una *famiglia diversa*, priva di capacità di ragionamento?
33
33
 
34
34
  Perché i modi di errore sono documentati, non ipotetici:
35
35
 
36
36
  - **Gli LLM non possono verificare in modo affidabile i propri risultati.** 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)) — il verificatore esterno offre i vantaggi; l'autovalutazione è inerte.
37
- - **I giudici della stessa famiglia tendono a favorire se stessi.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — l'autoriconoscimento è correlato *linearmente* con la preferenza per sé stessi, quindi un'occlusione parziale non aiuta. Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — un gruppo composto da famiglie diverse è meno influenzato, con un costo inferiore di circa il 7 volte.
38
- - **Le citazioni sono dove gli LLM mentono.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — il 55% delle citazioni di GPT-3.5 / il 18% delle citazioni di GPT-4 sono fabbricate. Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — i collegamenti risolvono il >94% delle volte, ma solo il 39-77% del contenuto citato supporta effettivamente l'affermazione. Pertanto, l'esistenza deve essere verificata tramite **recupero, non richiamo**.
37
+ - **I giudici della stessa famiglia tendono a favorire se stessi.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — l'autoriconoscimento è correlato *linearmente* all'autopreferenza, quindi un'occlusione parziale non aiuta. Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — un gruppo di esperti provenienti da famiglie diverse è meno influenzato, con un costo inferiore di circa il 7%.
38
+ - **Le citazioni sono dove gli LLM mentono.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — il 55% delle citazioni di GPT-3.5 / il 18% di GPT-4 sono fabbricate. Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — i collegamenti risolvono oltre il 94% delle volte, ma solo il 39-77% del contenuto citato supporta effettivamente l'affermazione. Pertanto, l'esistenza deve essere verificata tramite **recupero, non richiamo**.
39
39
  - **Nascondere il ragionamento del generatore.** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), "Gaming the Judge") — la sola manipolazione della catena di pensiero aumenta i falsi positivi del giudice fino al 90%, mantenendo le azioni fisse. Turpin et al. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — la catena di pensiero è una razionalizzazione post-hoc. Il verificatore vede solo l'affermazione della citazione, mai il "perché ho incluso questo".
40
- - **La diversità supera la quantità.** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — quattro verificatori con una correlazione a coppie ρ ∈ [0,05, 0,25] superano qualsiasi singolo verificatore tramite copertura submodulare. Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — gli errori degli LLM sono *correlati*, quindi la variabile più importante è la diversità delle lenti, non la quantità assoluta.
40
+ - **La diversità supera la quantità.** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — quattro verificatori con una correlazione a coppie ρ ∈ [0,05, 0,25] superano qualsiasi singolo verificatore tramite copertura submodulare. Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — gli errori degli LLM sono *correlati*, quindi la variabile più importante è la diversità delle "lenti", non la quantità assoluta.
41
41
 
42
42
  ## Funziona davvero? (prova)
43
43
 
44
- Come test, il protocollo è stato applicato alle proprie citazioni. Due famiglie diverse da Claude e non correlate — **Mistral** (`mistral-small:24b`) e **IBM Granite** (`granite4.1:30b`) — hanno controllato un insieme di citazioni, senza capacità di ragionamento, con due trappole nascoste:
44
+ Come test, il protocollo è stato applicato alle proprie citazioni. Due famiglie diverse da Claude e non correlate — **Mistral** (`mistral-small:24b`) e **IBM Granite** (`granite4.1:30b`) — hanno controllato un insieme di citazioni, senza capacità di ragionamento, con due "trappole" nascoste:
45
45
 
46
- | Trappola inserita intenzionalmente | Mistral | IBM Granite | Verità oggettiva |
46
+ | Trappola piazzata | Mistral | IBM Granite | Verità oggettiva |
47
47
  |---|---|---|---|
48
- | Il ragionamento della catena di pensiero è attribuito a "Nakamura & Olsen" | non rilevata | **rilevata** (attribuzione errata → in realtà Wei et al. 2022, arXiv:2201.11903) | attribuzione errata |
48
+ | Il ragionamento della catena di pensiero è attribuito a "Nakamura & Olsen" | mancato | **rilevato** (attribuito in modo errato → in realtà Wei et al. 2022, arXiv:2201.11903) | attribuito in modo errato |
49
49
  | un articolo fabbricato con la frase "il 98% degli errori è stato eliminato, non è necessario alcun oracolo" | **caught** (fabricated) | **caught** (fabricated) | fabbricato |
50
50
 
51
- Nessuna delle due famiglie ha rilevato entrambe le trappole da sola, ma la loro **unione ha rilevato 2/2**. Un singolo giudice avrebbe accettato l'attribuzione errata. Separatamente, l'oracolo di recupero ha individuato due *vere* attribuzioni errate nei nostri documenti progettuali (articoli citati con il nome del primo autore sbagliato) che nessun LLM parametrico avrebbe potuto segnalare e ha confermato correttamente articoli genuini del 2026 che entrambi gli LLM hanno erroneamente contrassegnato come fabbricati semplicemente perché gli articoli sono successivi alla loro data di addestramento. Quest'ultimo punto è la ragione principale per cui il controllo dell'esistenza nel passaggio 4 **deve** essere effettuato da un oracolo di recupero, e non da un LLM.
51
+ Nessuna delle due famiglie ha rilevato entrambe le trappole da sola, ma la loro **unione ha rilevato 2/2**. Un singolo giudice avrebbe accettato l'attribuzione errata. Separatamente, l'oracolo di recupero ha individuato due *vere* attribuzioni errate nei nostri documenti progettuali (articoli citati con il primo autore sbagliato) che nessun LLM parametrico avrebbe potuto segnalare e ha confermato correttamente articoli genuini del 2026 che entrambi gli LLM hanno erroneamente contrassegnato come fabbricati semplicemente perché gli articoli sono successivi alla loro data di addestramento. Quest'ultimo punto è la ragione principale per cui il controllo dell'esistenza nel passaggio 4 **deve** essere effettuato tramite un oracolo di recupero, e non tramite un LLM.
52
52
 
53
- Questa singola esecuzione rappresenta la tesi in miniatura: **lenti correlate + un oracolo di recupero per l'esistenza superano qualsiasi singolo giudice esperto.**
53
+ Questa singola esecuzione rappresenta la tesi in miniatura: **"lenti" correlate + un oracolo di recupero per l'esistenza superano qualsiasi singolo giudice esperto.**
54
54
 
55
55
  ### ...e ancora, per progettare la versione 1.1
56
56
 
57
- Le modifiche della versione 1.1 sono state scelte nello stesso modo: eseguendo `study-swarm` su `study-swarm`. Quattro domande a cui la prima versione lasciava spazio per un "a mio parere" (come *meccanizzare* il controllo di fondatezza, se effettuare la verifica al momento della generazione, come *combinare* le diverse fonti, se astenersi in caso di incertezza calibrata) sono state affidate ad agenti di ricerca paralleli e tutte le **27 citazioni risultanti** sono state verificate tramite il passaggio 4 prima che qualsiasi elemento influenzasse la progettazione. L'oracolo di verifica ha confermato l'esistenza di **tutte le 27 citazioni**, inclusi sei articoli del 2025-2026 che un modello parametrico avrebbe erroneamente classificato come fabbricati, e ha corretto cinque attribuzioni che il modello non sarebbe stato in grado di fare, tra cui una reale errata attribuzione dell'autore principale che l'agente di ricerca aveva individuato. Eseguendo l'analisi senza ragionamento, le diverse fonti hanno persino riprodotto i propri modi documentati di fallimento nel nostro esempio: un elemento ha identificato erroneamente un articolo reale e la loro *discrepanza* ha innescato un'escalation, esattamente come previsto dal processo. L'esempio funzionante è disponibile come [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md); le modifiche che sono state verificate (fondatezza scomposta/ternaria, verifica al momento della generazione, cascata convalidata dall'oracolo e astensione calibrata) sono disponibili in [PROTOCOL.md](PROTOCOL.md).
57
+ Le modifiche della versione 1.1 sono state scelte nello stesso modo: eseguendo `study-swarm` su `study-swarm`. Quattro domande a cui la prima versione lasciava spazio per un "a mio parere" (come *meccanizzare* il controllo di fondatezza, se effettuare la verifica al momento della generazione, come *combinare* le diverse prospettive, se astenersi in caso di incertezza calibrata) sono state indirizzate ad agenti di ricerca paralleli e tutte le **27 citazioni risultanti** sono state verificate tramite il passaggio 4 prima che qualsiasi elemento influenzasse la progettazione. L'oracolo di recupero ha confermato l'esistenza di **tutte le 27 citazioni**, incluse sei pubblicazioni del 2025-2026 che un modello parametrico avrebbe erroneamente classificato come fabbricate, e ha corretto cinque attribuzioni che un modello non sarebbe stato in grado di fare, tra cui una reale errata attribuzione dell'autore principale individuata dall'agente di ricerca. Eseguendo l'analisi senza ragionamento deduttivo, le diverse prospettive hanno persino riprodotto i propri noti punti deboli nel nostro sistema: un elemento ha identificato erroneamente una pubblicazione reale e la loro *discrepanza* ha innescato un'escalation, esattamente come previsto. Il sistema funzionante viene fornito come [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md); le modifiche che sono state apportate (fondatezza scomposta/ternaria, verifica al momento della generazione, cascata controllata dall'oracolo e astensione calibrata) sono disponibili in [PROTOCOL.md](PROTOCOL.md).
58
58
 
59
- ## Come funziona
59
+ ## Come è strutturato
60
60
 
61
- È possibile eseguire il protocollo manualmente: qualsiasi modello di famiglia diversa, purché risolva l'identificativo arXiv/DOI, soddisfa il passaggio 4. Due strumenti complementari lo rendono un unico comando:
61
+ È possibile eseguire il protocollo manualmente: qualsiasi modello di famiglia diversa, purché si risolvano autonomamente le informazioni da arXiv/DOI, soddisfa il passaggio 4. Due strumenti complementari lo rendono un unico comando:
62
62
 
63
- - **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)**: il verificatore in fase di esecuzione: instradamento per famiglie diverse, analisi senza ragionamento, arbitraggio multi-fonte, un limite minimo deterministico per la verifica dell'esistenza (arXiv → Crossref) e ricevute firmate.
64
- - **[role-os](https://github.com/mcp-tool-shop-org/role-os)**: fornisce `roleos verify-citations <dispatch>`, lo strumento che estrae le citazioni da un esempio e le verifica tramite prism.
63
+ - **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)**: il verificatore in fase di esecuzione: instradamento per famiglie diverse, analisi senza ragionamento deduttivo, arbitraggio multi-prospettiva, un limite deterministico per l'esistenza dei risultati (arXiv → Crossref) e ricevute firmate.
64
+ - **[role-os](https://github.com/mcp-tool-shop-org/role-os)**: fornisce `roleos verify-citations <dispatch>`, lo strumento che estrae le citazioni da un sistema e le verifica tramite prism.
65
65
 
66
- Il passaggio di consegne è il formato dell'esempio stesso: una scoperta scritta come `N. **scoperta.** Autori anno (arXiv|DOI). implicazione.` — con **un identificativo risolvibile per ogni scoperta** — è esattamente ciò che `roleos verify-citations` estrae e verifica. Un esempio "pulito" tramite `lint` viene gestito correttamente; una citazione malformata è ciò che lo strumento segnala come non analizzata. Questo contratto è ciò che `study-swarm lint` controlla a livello locale, in modo che il passaggio 3 e il passaggio 4 concordino su cosa sia una citazione.
66
+ Il passaggio di consegne è il formato del sistema stesso: un risultato scritto come `N. **risultato.** Autori anno (arXiv|DOI). implicazione.` — con **un identificatore risolvibile per ogni risultato** — è esattamente ciò che `roleos verify-citations` estrae e verifica. Un sistema "pulito" secondo i criteri di linting passa senza problemi; una citazione malformata è ciò che lo strumento segnala come non analizzata. Questo contratto è ciò che `study-swarm lint` controlla a livello locale, in modo che il passaggio 3 e il passaggio 4 concordino su cosa sia una citazione.
67
67
 
68
- ## CLI (interfaccia a riga di comando)
68
+ ## Interfaccia a riga di comando (CLI)
69
69
 
70
70
  ```bash
71
71
  npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
@@ -75,9 +75,14 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
75
75
  |---|---|
76
76
  | `study-swarm protocol` | Stampa l'intero protocollo: i cinque passaggi, la tabella di arresto e lo standard di riferimento. |
77
77
  | `study-swarm new <slug>` | Crea uno scheletro `<slug>.dispatch.md` con i cinque passaggi da completare. |
78
- | `study-swarm lint [--json] <path…>` | Verifica la *fondatezza della ricerca* di un esempio rispetto allo standard di riferimento: ogni scoperta deve avere un autore, un anno e un identificativo risolvibile (arXiv / DOI / URL); le affermazioni generiche del tipo "gli studi dimostrano..." vengono rifiutate. In caso di violazioni, viene restituito il codice `1`, in modo da bloccare l'integrazione continua. Un `<path>` può essere un file, una directory (analizzata ricorsivamente per i file `*.dispatch.md`) o `-` per l'input standard; `--json` emette un report leggibile dalla macchina. |
78
+ | `study-swarm lint [--json] <path…>` | Verifica la *fondatezza della ricerca* di un sistema rispetto allo standard di riferimento: ogni risultato deve avere un autore, un anno e un identificatore risolvibile (arXiv / DOI / URL); le affermazioni generiche del tipo "gli studi dimostrano..." vengono rifiutate. In caso di violazioni, il programma termina con codice `1`, in modo da bloccare l'integrazione continua (CI). Un `<path>` può essere un file, una directory (analizzata ricorsivamente per i file `*.dispatch.md`) o `-` per l'input standard; `--json` emette un report leggibile dalla macchina. |
79
+ | `study-swarm lock <dispatch> --from <orchestration.json>` | Blocca un sistema per la riproduzione: scrive il contenuto di `<dispatch>.lock.json`, che, per ogni agente del passaggio 2, include l'**ID del modello risolto**, l'**SHA-256 del prompt esatto in byte** e l'**SHA-256 dello schema dello strumento**, oltre alla **ricevuta del verificatore** del passaggio 4, tutto racchiuso in un unico `lock_sha256`. |
80
+ | `study-swarm lock --verify <dispatch> [--from …]` | Ricalcola questi hash e verifica che corrispondano al blocco; qualsiasi discrepanza fa terminare il programma con codice `1`, in modo da bloccare l'integrazione continua (CI) come farebbe un file di blocco dei pacchetti. Senza `--from`, controlla l'integrità del blocco stesso. |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **Meccanismo di compensazione per il rollback canonico.** Segnala ogni elemento nel corpus la cui *base di ricerca* cita `<id>` come `evidenza ritirata` (un file "tombstone" associato `<slug>.withdrawn.json" — segnala, non eliminare mai) ed emette una ricevuta di ritiro basata sul contenuto. `--reason` ∈ `fabbricato · attribuito erroneamente · ritrattato · verificatore modificato · altro`. |
82
+ | `study-swarm requalify --check <corpus-dir>` | In caso di errore, interrompe l'esecuzione (esce con codice `1`) per qualsiasi elemento che contenga un flag `evidenza ritirata` non risolto: questo è il segnale che **interrompe** le dipendenze di una scoperta ritirata fino a quando non viene rimossa o rielaborata. Attiva il CI. |
83
+ | `study-swarm requalify --resolve <dispatch> <id> --mode removed\ | regrounded [--note …]` | Cancella un flag una volta che la scoperta è stata rimossa (la citazione non è più presente) o rielaborata (riverificata e convalidata dal processo parallelo; `--note` registra l'attestazione). È idempotente; aggiunge al registro di controllo del file associato. |
79
84
 
80
- `lint` è deterministico: non effettua chiamate al modello, quindi è sicuro nell'integrazione continua. Applica lo **standard di riferimento del passaggio 3** a livello locale; la verifica basata sul modello del **passaggio 4** si basa ancora su [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
85
+ `lint` è deterministico: non effettua chiamate al modello, quindi è sicuro da utilizzare nell'integrazione continua (CI). Applica **lo standard di riferimento del passaggio 3** a livello locale; la verifica basata sul modello del **passaggio 4** si basa ancora su [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
81
86
 
82
87
  Un ciclo tipico:
83
88
 
@@ -88,11 +93,11 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
88
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
89
94
  ```
90
95
 
91
- Due esempi completi e "puliti" tramite `lint` sono disponibili come riferimento: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la decisione centrale del protocollo, in forma compatta) e [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (l'intera revisione della versione 1.1: 27 citazioni, tutte verificate esternamente).
96
+ Quattro elementi completi, puliti e funzionanti vengono pubblicati come riferimento: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la decisione centrale del protocollo, in forma compatta), [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (il design completo della versione 1.1 27 citazioni, tutte verificate esternamente), [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (il design del blocco della versione 1.2 — 39 citazioni, gestito tramite il processo parallelo e il primo elemento a pubblicare il proprio blocco) e [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md) (il design del rollback canonico della versione 1.3 — 27 citazioni relative alla revoca, al ritiro, alle sequenze di eventi e all'invalidazione della build, ed è il primo elemento ad essere ritirato e quindi riqualificato).
92
97
 
93
- ### Integrare nell'integrazione continua
98
+ ### Bloccalo nell'integrazione continua (CI)
94
99
 
95
- `lint` accetta un file, una directory (analizzata ricorsivamente per i file `*.dispatch.md`) o `-` per l'input standard e `--json` emette un report leggibile dalla macchina. È possibile aggiungere questo al repository per verificare la fondatezza di ogni esempio in ogni richiesta pull (un esempio di copia-incolla è disponibile anche in [`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)):
100
+ `lint` accetta un file, una directory (analizzata ricorsivamente per i file `*.dispatch.md`) o `-` per l'input standard e `--json` emette un report leggibile dalla macchina. Aggiungi questo al tuo repository per verificare la fondatezza di ogni sistema in ogni richiesta pull (un esempio di copia-incolla è disponibile anche in [`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)):
96
101
 
97
102
  ```yaml
98
103
  # .github/workflows/dispatches.yml
@@ -114,17 +119,37 @@ jobs:
114
119
  - run: npx @dogfood-lab/study-swarm@latest lint dispatches/
115
120
  ```
116
121
 
117
- ## Perché funziona, in sintesi
122
+ ### Blocca un sistema per la riproduzione (`dispatch.lock.json`)
118
123
 
119
- **Attuale**: il settore si evolve rapidamente; richiedere studi specifici con l'anno impedisce che le progettazioni siano obsolete di 18 mesi. **Funzionale**: i dati mostrano cosa *fallisce*, non solo cosa funziona (le spiegazioni possono aumentare la dipendenza da un'IA *errata* Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Sicuro**: l'ambito protetto dal verificatore è l'architettura supportata dai dati e il protocollo lo applica ai propri risultati. La verifica delle fonti non è un esercizio accademico; è la traccia dei dati.
124
+ Un sistema fondato e verificato è auditabile solo se si può dire *cosa lo ha prodotto*. `study-swarm lock` scrive un file di blocco complementare che, per ogni agente di ricerca, include l'**ID del modello risolto** (mai un alias fluttuante), l'**SHA-256 del prompt esatto in byte** e l'**SHA-256 dello schema dello strumento** fornito, oltre alla **ricevuta del verificatore esterno**, tutto racchiuso in un unico `lock_sha256`. `study-swarm lock --verify` ricalcola questi hash e fallisce se rileva discrepanze, quindi una modifica al prompt, uno scambio di modello o una variazione della superficie dello strumento vengono rilevati: lo standard di riproducibilità [PIN_PER_STEP](https://github.com/dogfood-lab/study-swarm), reso eseguibile. Il sistema emette il record; l'interfaccia a riga di comando rimane senza dipendenze e indipendente dalla rete, limitandosi alla normalizzazione (RFC 8785), all'hashing e alla convalida.
125
+
126
+ **Blocca gli input, non gli output.** Bloccare il modello + prompt + temperatura *non* rende l'output di un LLM identico bit per bit: l'invarianza del batch, la non associatività dei numeri in virgola mobile, il routing a esperti multipli e la deriva silenziosa del provider sono tutti elementi al di fuori del controllo di uno strumento offline. Pertanto, il blocco fornisce **input riproducibili e output con rilevamento della deriva**, mai una "riproduzione deterministica". Il progetto è basato su evidenze, citazione per citazione, in [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) — la prima implementazione che include il proprio blocco ([`examples/study-swarm-lock.lock.json`](examples/study-swarm-lock.lock.json)).
127
+
128
+ ### Esegue il rollback di una scoperta ritirata (`withdraw` / `requalify`)
129
+
130
+ Una scoperta verificata diventa **canonica**: fornisce informazioni per una decisione successiva. Quindi, cosa succede quando viene successivamente **ritirata** (una citazione si rivela fabbricata o attribuita erroneamente durante una nuova esecuzione, un documento citato viene ritrattato o il meccanismo di controllo la modifica)? Un `git revert` non è sufficiente, perché la scoperta è già stata propagata. Il meccanismo di compensazione per il rollback canonico rende possibile l'esecuzione della correzione:
131
+
132
+ ```bash
133
+ study-swarm withdraw arXiv:2402.15089 --reason misattributed --from dispatches/ --receipt rollback.json
134
+ # → flags every dispatch citing it `evidence-withdrawn` (a tombstone sidecar — flag, never delete)
135
+ # and writes a content-addressed withdrawal receipt naming every dependent.
136
+ study-swarm requalify --check dispatches/ # exit 1 while any flag is unresolved — the andon HALT
137
+ study-swarm requalify --resolve d.dispatch.md arXiv:2402.15089 --mode removed # or: --mode regrounded --note "<attestation>"
138
+ ```
139
+
140
+ `requalify --check` **interrompe l'esecuzione** fino a quando ogni scoperta contrassegnata non viene rimossa o **rielaborata** (riverificata e convalidata dal processo parallelo; la CLI registra l'attestazione, ma non esegue essa stessa una nuova verifica). Il ritiro viene evidenziato in modo **contraddittorio**, mai come un semplice annullamento silenzioso. Tutto — il file "tombstone" e la ricevuta — è basato sul contenuto ed è rilevabile nel tempo, e opera solo sullo strato di *evidenza*: `lock --verify` non viene influenzato da un ritiro. Il design si basa su [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md), e il [PROTOCOL.md](PROTOCOL.md) §"Compensating a withdrawn finding" rappresenta la forma eseguibile. Questo è lo standard **NAMED_COMPENSATORS** reso eseguibile: un'operazione di annullamento denominata e idempotente che lascia uno stato post-operazione noto e una ricevuta.
141
+
142
+ ## Perché funziona, in sintesi:
143
+
144
+ **Attuale:** il settore è in rapida evoluzione; richiedere studi specifici che durino anni impedisce di rilasciare i progetti con 18 mesi di ritardo. **Funzionale:** le evidenze mostrano cosa *fallisce*, non solo cosa funziona (le spiegazioni possono aumentare l'eccessiva dipendenza da un'IA *errata* — Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Sicuro:** l'ambito protetto dal verificatore è l'architettura supportata dalle evidenze e il protocollo la applica ai propri output. L'analisi delle fonti non è un esercizio accademico; è la traccia delle evidenze.
120
145
 
121
146
  ## Sicurezza
122
147
 
123
- `study-swarm` fornisce una **CLI (interfaccia a riga di comando) leggera e con zero dipendenze** (`study-swarm`) insieme alla metodologia. Non effettua **chiamate di rete o al modello** e non raccoglie **dati di telemetria**: non ci sono segreti o credenziali nel codice sorgente. In fase di esecuzione, legge solo il file passato a `lint` e scrive un singolo file `<slug>.dispatch.md` nella directory corrente per l'operazione `new` (rifiutando di sovrascriverlo e mai al di fuori della directory di lavoro). La verifica basata sul modello descritta dalla metodologia (passaggio 4) viene eseguita dagli strumenti complementari, non da questo pacchetto. Consultare [SECURITY.md](SECURITY.md).
148
+ `study-swarm` include una **CLI leggera, senza dipendenze** (`study-swarm`) insieme alla metodologia. Non effettua **nessuna chiamata di rete o al modello** e non raccoglie **dati di telemetria**; non ci sono segreti o credenziali nel codice sorgente. In fase di esecuzione legge solo il file che si passa a `lint` e scrive un singolo file `<slug>.dispatch.md` nella directory corrente per `new` (rifiutando di sovrascriverlo e operando sempre all'interno della directory di lavoro). La verifica basata sul modello descritta dalla metodologia (Passaggio 4) viene eseguita dagli strumenti correlati, non da questo pacchetto. Vedere [SECURITY.md](SECURITY.md).
124
149
 
125
- ## Stato attuale
150
+ ## Stato
126
151
 
127
- Un protocollo funzionante, verificato esternamente dai propri meccanismi: una famiglia di modelli diversa verifica le sue citazioni (vedere la prova sopra). La **versione 1.1** affina il verificatore dove la prima versione era silenziosa: fondatezza scomposta/ternaria, verifica al momento della generazione, cascata convalidata dall'oracolo per combinare le diverse fonti e astensione calibrata: ogni elemento è basato sull'esempio verificato della versione 1.1. Questo repository è il riferimento pubblico; [PROTOCOL.md](PROTOCOL.md) è la forma eseguibile. Fa parte della famiglia [dogfood-lab](https://github.com/dogfood-lab): metodi ed esempi per costruire nell'era dell'IA.
152
+ Un protocollo funzionante, verificato esternamente dai propri meccanismi: una famiglia diversa di modelli verifica le sue citazioni (vedere la prova sopra). La **versione 1.1** affina il verificatore rispetto alla prima versione, che era silenziosa: base di ricerca scomposta/ternaria, base di ricerca al momento della generazione, cascata controllata da un oracolo per combinare le diverse prospettive e astensione calibrata — ciascuna basata sulla scoperta verificata della versione 1.1. La **versione 1.2** rende un elemento riproducibile: `study-swarm lock` fissa il modello, il prompt e lo schema degli strumenti risolti per ogni passaggio, oltre alla ricevuta del verificatore, e `lock --verify` interrompe l'esecuzione in caso di modifiche. La **versione 1.3** rende eseguibile il rollback: quando una scoperta che è già diventata canonica viene ritirata, `study-swarm withdraw` contrassegna tutte le dipendenze e `requalify --check` le interrompe, bloccandole fino a quando non vengono rimosse o rielaborate — un meccanismo di compensazione denominato, con ricevuta e idempotente. Questo repository è il riferimento pubblico; [PROTOCOL.md](PROTOCOL.md) rappresenta la forma eseguibile. Fa parte della famiglia [dogfood-lab](https://github.com/dogfood-lab): metodi ed esempi per lo sviluppo nell'era dell'IA.
128
153
 
129
154
  Con licenza MIT.
130
155
 
package/README.ja.md CHANGED
@@ -15,17 +15,17 @@
15
15
 
16
16
  **引用された研究に基づいて設計上の決定を行い、その後、そのすべての内容が公式なものになる前に、*別の*モデルファミリーを使用して引用を検証する。**
17
17
 
18
- `study-swarm`はツールではなくプロトコルである。大規模言語モデル(LLM)を用いて重要な設計上の決定を行う場合(新しい製品レイヤー、アーキテクチャの選択、「ここでモデルを信頼すべきか」という判断など)、最初の原則から即興で進めることは、時代遅れの設計につながり、記憶に基づいて論文を引用することは、存在しない情報源や、あなたが考えていることとは異なる内容の情報源に依存する設計につながる。`study-swarm`はこれら両方を置き換える:並行して研究エージェントを派遣し、特定の引用された調査結果を要求し、すべての引用を**別のモデルファミリーの外部検証者**を通じてゲートすることで、その情報が設計に影響を与えるようにする。
18
+ `study-swarm`はツールではなくプロトコルである。大規模言語モデル(LLM)を用いて重要な設計上の決定を行う場合(新しい製品レイヤー、アーキテクチャの選択、「ここでモデルを信頼すべきか」という判断など)、最初から即興で進めるのではなく、事前に研究に基づいて設計すると、時代遅れの設計になったり、記憶に基づいて論文を引用すると、存在しない情報源や、あなたが考えていることとは異なる内容の情報源に依存した設計になってしまう。`study-swarm`はこれら2つを置き換える:複数の研究エージェントを並行して派遣し、特定の引用された調査結果を要求し、すべての引用について、設計に影響を与える前に、**別のモデルファミリーの外部検証者**によって検証する。
19
19
 
20
- それは独自の治療法を適用する。このプロトコルは、支援するシステムの設計において、検証者によって保護されたエンベロープを規定するため、それ自体にもそれを適用する。**プロトコルを実行しているモデルを含め、どのモデルも自分の宿題を評価しない。**
20
+ これは、自らその方法を採用している。このプロトコルは、設計を支援するシステムに対して、検証者による保護された環境を規定するため、それ自体にも適用される。**プロトコルを実行するモデルであっても、自分の宿題を評価することはできない。**
21
21
 
22
- ## 5つのステップで構成されるプロトコル
22
+ ## プロトコルの5つのステップ
23
23
 
24
- 1. **特定する**:経験的証拠によって回答が変わる可能性のある3〜5個の重要な設計上の質問を特定する。
25
- 2. **派遣する**:各質問に対して、並行して1つの研究エージェントを派遣する。それぞれが論文タイトル+著者+年+URL+1文の調査結果を返す必要がある(網羅性よりも具体性を重視:「6〜8件の信頼できる調査結果は、20件の曖昧な記述よりも優れている」)。
26
- 3. **統合する**:調査結果を「研究による根拠」セクションに統合する:`N. **<調査結果>.** <著者> <年> (<arXiv/DOI>). <設計への影響>.`
27
- 4. **外部で検証する**:*別のモデルファミリー(推論機能を削除したもの)が、2つの段階ですべての引用をチェックする。まず、**検索オラクル**が論文が存在することを確認する(モデルの記憶ではなく)。次に、「根拠」レンズが、調査結果が情報源と一致することを確認する。**捏造または誤った帰属の場合、処理を停止する。検証者または検索オラクルが利用できない場合は、処理を停止してエスカレーションする(不在を「引用は問題ない」と解釈しないこと)。
28
- 5. **関連付ける**:各アーキテクチャの選択を、番号を使って調査結果に関連付ける。設計への影響がない引用はノイズである。
24
+ 1. **特定する:** 実証的な証拠によって回答が変わる可能性のある、3〜5個の重要な設計上の質問を特定する。
25
+ 2. **派遣する:** 各質問に対して、並行して1つの研究エージェントを派遣する。各エージェントは、論文タイトル+著者+年+URL+一文の調査結果を返す必要がある(広範囲よりも具体性重視。「6〜8件の信頼できる調査結果が、20件の曖昧な情報よりも優れている」)。
26
+ 3. **統合する:** 調査結果を「研究による根拠」セクションに統合する:「N.**<調査結果>。<著者><年>(<arXiv/DOI>)。<設計への影響>。」
27
+ 4. **外部で検証する:** *別のモデルファミリー*(推論機能を削除したもの)を使用して、すべての引用を2つの段階でチェックする。まず、**検索オラクル**が論文が存在することを確認する(モデルの記憶ではなく)。次に、「根拠」レンズが、調査結果が情報源と一致することを確認する。**捏造または誤った帰属の場合、処理を停止する。検証者または検索オラクルが利用できない場合は、処理を停止してエスカレーションする(不在を「引用は問題ない」と解釈しないこと)。
28
+ 5. **関連付ける:** 各アーキテクチャの選択を、番号を使って調査結果に関連付ける。設計への影響がない引用はノイズである。
29
29
 
30
30
  完全な実行可能な詳細(停止テーブル、情報源に関する標準、アンサンブルルール)は、**[PROTOCOL.md](PROTOCOL.md)**に記載されている。
31
31
 
@@ -35,37 +35,37 @@
35
35
 
36
36
  - **LLMは、自分の出力を確実に検証できない。** 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)) — 外部検証者がメリットをもたらす。自己批判的な内容は効果がない。
37
37
  - **同じファミリーの評価者は、自分を高く評価する傾向がある。** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — 自己認識は、自己選好と*線形に*相関するため、部分的なブラインド処理では効果がない。Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — 異なるファミリーのパネルを使用すると、約7分の1のコストで偏りが少なくなる。
38
- - **引用は、LLMが嘘をつく場所である。** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — GPT-3.5の55%、GPT-4の18%の引用が捏造されている。Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) —リンクは94%以上の確率で解決するが、引用されたコンテンツのわずか39〜77%しか主張を裏付けていない。したがって、存在は**検索によってチェックする必要があり、想起によってチェックしてはいけない。**
39
- - **生成者の推論を隠す。** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), "Gaming the Judge") — 操作された連鎖思考だけでは、評価者の誤検出率が最大90%まで増加する(アクションは固定されている)。Turpin et al. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — CoTは、事後的な合理化である。検証者は、単なる引用の主張のみを確認し、「なぜこれを含めたのか」は確認しない。
40
- - **多様性は数よりも重要である。** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — ペアワイズ相関ρ∈[0.05, 0.25]の4つの検証者は、サブモジュールカバレッジによって、いずれか1つの優れた評価者よりも優れている。Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — LLMのエラーは*相関しているため、重要な変数はレンズの多様性であり、生の数ではない。
38
+ - **LLMは、引用において嘘をつく。** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — GPT-3.5の55%、GPT-4の18%の引用が捏造されている。Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — リンクは94%以上の確率で解決するが、引用されたコンテンツのわずか39〜77%しか主張を裏付けていない。したがって、存在は**検索によって確認する必要があり、記憶に頼るべきではない。**
39
+ - **生成者の推論を隠す。** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), "Gaming the Judge") — 操作された連鎖思考だけでは、評価者の誤検出率が最大90%まで増加する(アクションは固定)。Turpin et al. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — CoTは、事後的な合理化である。検証者は、単なる引用の主張のみを確認し、「なぜこれを含めたのか」という理由は確認しない。
40
+ - **多様性は、数よりも重要である。** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — ペアワイズ相関ρ∈[0.05, 0.25]の4つの検証者は、サブモジュラーカバレッジによって、いずれかの単一の検証者よりも優れた結果をもたらす。Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — LLMのエラーは*相関しているため、重要な変数はレンズの多様性であり、単純な数ではない。
41
41
 
42
42
  ## 実際に機能するのか?(証拠)
43
43
 
44
- テストとして、このプロトコルを自分の引用に対して実行した。2つの非相関性の高いClaude以外のファミリー(**Mistral** (`mistral-small:24b`)と**IBM Granite** (`granite4.1:30b`))を使用して、推論機能を削除し、2つのブラインドトラップで設定された引用セットをチェックした。
44
+ テストとして、このプロトコルを自分の引用に対して実行した。2つの非相関性の高いClaude以外のファミリー(**Mistral** (`mistral-small:24b`)と**IBM Granite** (`granite4.1:30b`))を使用して、推論機能を削除し、2つのブラインドトラップを埋め込んだ引用セットをチェックした。
45
45
 
46
- | 仕掛けられた罠 | Mistral | IBM Granite | 真実 |
46
+ | 仕掛けられたトラップ | Mistral | IBM Granite | 真実 |
47
47
  |---|---|---|---|
48
48
  | 「Nakamura & Olsen」に帰属された連鎖思考プロンプト | 見逃した | **検出(誤った帰属→実際にはWei et al. 2022、arXiv:2201.11903)** | 誤って帰属された |
49
- | 「98%のエラーが除去され、オラクルは不要」という捏造された論文 | **caught** (fabricated) | **caught** (fabricated) | 捏造された |
49
+ | 「98%のエラーが解消され、オラクルは不要」という捏造された論文 | **caught** (fabricated) | **caught** (fabricated) | 捏造された |
50
50
 
51
- どちらのファミリーも単独では両方の罠を検出できなかったが、**それらの組み合わせで2/2を検出した。** 単一の評価者は、誤った帰属を認めてしまうだろう。別途、検索オラクルは、当社の設計ドキュメントにある2つの*実際の*誤った帰属(間違った最初の著者に引用された論文)を検出し、どのパラメトリックLLMも検出できなかった。また、両方のLLMが、トレーニング後の論文であるという理由だけで、捏造されたと誤ってフラグを立てた真の2026年の論文を正しく確認した。最後の点は、ステップ4の存在チェックが**検索オラクルでなければならず、LLMであってはならない**という理由そのものである。
51
+ どちらのファミリーも単独では両方のトラップを検出できなかったが、**組み合わせることで2/2を検出した。** 単一の評価者であれば、誤った帰属をそのまま採用していただろう。別途、検索オラクルは、当社の設計ドキュメントにある2つの*実際の*誤った帰属(間違った最初の著者に引用された論文)を検出し、どのパラメトリックLLMでも検出できなかった。また、両方のLLMが、トレーニングデータ以降に発表された論文を単純に捏造されたと誤ってフラグ付けしたため、正当な2026年の論文も正しく確認できた。最後の点が、ステップ4の存在チェックが**検索オラクルでなければならず、LLMであってはならない理由である。**
52
52
 
53
- この単一の実行は、ミニチュア版の論文である:**相関性の低いレンズ+存在を検証するための検索オラクルは、優れた評価者よりも優れている。**
53
+ この単一の実行は、ミニチュア版の仮説である:**相関性の低いレンズと、存在を確認するための検索オラクルがあれば、どんなに優れた単一の評価者よりも優れている。**
54
54
 
55
- ### …そして再び、v1.1の設計のために
55
+ ### …そして再び、v1.1を設計するために
56
56
 
57
- v1.1の改良は、同じ方法で選択された。つまり、「study-swarm」上で「study-swarm」を実行することによってだ。最初のリリースで「おそらく」という回答になった4つの質問(根拠チェックをどのように*機械化*するか、生成時に根拠を示すべきか、レンズをどのように*組み合わせるか、不確実性の評価において保留すべきかどうか)は、並行して研究を行うエージェントに割り当てられ、得られた**27件の参考文献**はすべて、設計に反映される前にステップ4で検証された。検索オラクルは、**27/27件が存在すること**を確認した。これには、パラメトリックモデルが捏造されたものとして誤ってフラグを立てるであろう6つの2025〜2026年の論文も含まれており、また、モデルでは確認できなかった5つの参考文献の帰属についても修正が行われた。その中には、研究エージェント自身が指摘した実際の最初の著者の誤った帰属も含まれている。推論を排除して実行すると、根拠を示すためのレンズは、私たちのシステムで文書化された自身の失敗モードを再現する。つまり、1つの論文を自信を持って誤って分類し、その*不一致*がエスカレーションを引き起こす。これはまさにカスケードで規定されていることだ。実際に動作するシステムは、[`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md)として提供される。このシステムで根拠が示された改良点(分解/三項の根拠、生成時の根拠、オラクルによって制御されるカスケード、および校正された保留)は、[PROTOCOL.md](PROTOCOL.md)に記載されている。
57
+ v1.1の改良は、同じ方法で選択されました。つまり、「study-swarm」上で「study-swarm」を実行することによってです。最初のリリースで「私はそう思う」という形で残された4つの質問(根拠チェックをどのように*機械化*するか、生成時に根拠を与えるかどうか、レンズをどのように*組み合わせるか、校正された不確実性に対して保留にするかどうか)は、並行研究エージェントに割り当てられ、すべての**27件の結果として得られた引用文献**は、設計に反映される前にステップ4で検証されました。検索オラクルは、**27/27件が存在すること**を確認しました。これには、パラメトリックモデルが捏造されたものと誤って判断する可能性のある6つの2025〜2026年の論文も含まれており、また、モデルでは確認できなかった5つの引用の誤りを修正しました。その中には、研究エージェント自身が指摘した実際の最初の著者の誤った引用が含まれています。推論を排除して実行すると、根拠レンズは、私たちのディスパッチで文書化された自身の失敗モードを再現します。つまり、1つの論文を自信を持って誤って分類し、それらの*不一致*がエスカレーションを引き起こします。これはまさにカスケードで規定されているとおりです。この動作するディスパッチは、[`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md)として提供されます。それに含まれる改良点(分解/三項根拠、生成時の根拠、オラクルによるカスケードの検証、校正された保留)は、[PROTOCOL.md](PROTOCOL.md)に記載されています。
58
58
 
59
59
  ## その仕組み
60
60
 
61
- このプロトコルを手動で実行することもできる。異なるモデルと、arXiv/DOIを自分で解決することでステップ4を満たすことができる。2つの関連ツールを使用すると、これを1つのコマンドにまとめることができる。
61
+ プロトコルを手動で実行できます。異なるモデルと、arXiv/DOIを自分で解決することでステップ4を満たすことができます。2つの関連ツールを使用すると、1つのコマンドで実行できます。
62
62
 
63
- - **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — 実行時の検証ツール:異なるモデルファミリーへのルーティング、推論を排除した処理、複数のレンズによる判断、決定的な検索の存在確認(arXiv → Crossref)、および署名されたレシート。
64
- - **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — `roleos verify-citations <dispatch>`コマンドを提供し、このコマンドはディスパッチから参考文献を抽出し、prismを通じて検証する。
63
+ - **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — 実行時の検証ツール:異なるモデルファミリーへのルーティング、推論の排除、マルチレンズによる仲裁、決定的な検索存在性の下限(arXiv → Crossref)、署名されたレシート。
64
+ - **[role-os](https://github.com/mcp-tool-shop-org/role-os)** — `roleos verify-citations <dispatch>`を提供します。これは、ディスパッチの引用文献を抽出し、prismを通じて検証するランナーです。
65
65
 
66
- 引き継ぎのプロセスは、ディスパッチ形式そのものである。`N. **finding.** Authors year (arXiv|DOI). implication.`という形式で記述された結果(**各結果に対して1つの解決可能な識別子**)が、`roleos verify-citations`によって読み込まれ、検証される。lintチェックに合格したディスパッチは、問題なく引き継がれる。形式が正しくない参考文献は、実行時に解析不能としてフラグが立てられる。この契約内容は、`study-swarm lint`によってローカルでチェックされるため、ステップ3とステップ4では、参考文献の定義について合意が得られる。
66
+ ハンドオフは、ディスパッチ形式自体です。`N. **finding.** Authors year (arXiv|DOI). implication.`という形式で記述された発見(**各発見に対して1つの解決可能な識別子**)は、まさに`roleos verify-citations`が読み取り、検証するものです。`lint`によってクリーンなディスパッチは問題なくハンドオフされます。不正な形式の引用文献は、ランナーによって解析不能としてフラグが立てられます。この契約内容は、`study-swarm lint`がローカルでチェックするため、ステップ3とステップ4では、引用文献が何であるかについて合意します。
67
67
 
68
- ## CLI(コマンドラインインターフェース)
68
+ ## CLI
69
69
 
70
70
  ```bash
71
71
  npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
@@ -73,11 +73,16 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
73
73
 
74
74
  | コマンド | その機能 |
75
75
  |---|---|
76
- | `study-swarm protocol` | 完全なプロトコル(5つのステップ、停止テーブル、ソースの標準)を表示する。 |
77
- | `study-swarm new <slug>` | 5つのステップで構成されたスケルトンを含む`<slug>.dispatch.md`ファイルを生成し、内容を埋めることができるようにする。 |
78
- | `study-swarm lint [--json] <path…>` | ディスパッチの*研究における根拠*をソース標準と比較してチェックする。すべての結果には、著者、年、および解決可能な識別子(arXiv / DOI / URL)が必要であり、「研究によると…」という曖昧な表現は拒否される。違反があった場合、終了コード1で処理が停止するため、CI(継続的インテグレーション)のゲートとして機能する。<path>はファイル、ディレクトリ(`*.dispatch.md`ファイルを再帰的にlintチェック)、またはstdinを表す`-`とすることができる。`--json`オプションを使用すると、機械可読形式のレポートが出力される。 |
76
+ | `study-swarm protocol` | 完全なプロトコル(5つのステップ、停止テーブル、ソース標準)を出力します。 |
77
+ | `study-swarm new <slug>` | 5つのステップのスケルトンを含む`<slug>.dispatch.md`を作成し、それを埋めるためのテンプレートを提供します。 |
78
+ | `study-swarm lint [--json] <path…>` | ディスパッチの*研究根拠*をソース標準と比較してチェックします。すべての発見には、著者、年、および解決可能な識別子(arXiv / DOI / URL)が必要です。「研究によると…」という曖昧な表現は拒否されます。違反があった場合、終了コード`1`を返し、CIでゲートとして機能します。`<path>`はファイル、ディレクトリ(`.dispatch.md`ファイルを再帰的にlint)、または`-`(標準入力)のいずれかになります。`--json`オプションを使用すると、機械可読形式のレポートが出力されます。 |
79
+ | `study-swarm lock <dispatch> --from <orchestration.json>` | ディスパッチをリプレイ用に固定します。`<dispatch>.lock.json`ファイルに、ステップ2のエージェントごとに、**解決されたモデルID** + **正確なバイト単位のプロンプトのSHA-256ハッシュ** + **ツールスキーマのSHA-256ハッシュ**、およびステップ4の**検証レシート**をまとめて書き込みます。これらを1つの`lock_sha256`にまとめます。 |
80
+ | `study-swarm lock --verify <dispatch> [--from …]` | これらのハッシュを再計算し、ロックファイルと一致することを確認します。いずれかのハッシュが異なる場合、終了コード`1`を返し、CIでゲートとして機能します(パッケージのロックファイルと同様)。`--from`オプションがない場合は、ロックファイルの整合性をチェックします。 |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **正準ロールバック補償機能。** コーパス内のすべてのディスパッチについて、*調査根拠*が`<id>`を`証拠の撤回`として引用している場合にフラグを設定します(墓石サイドカー`<slug>.withdrawn.json`—フラグを設定し、削除は行わない)。また、コンテンツアドレス指定された撤回レシートを出力します。`--reason` ∈ `fabricated · misattributed · retracted · verifier-flipped · other`。 |
82
+ | `study-swarm requalify --check <corpus-dir>` | 未解決の`証拠の撤回`フラグを持つすべてのディスパッチに対して、処理を停止(終了コード`1`で終了)します。これは、撤回された調査結果に依存する要素が削除または再検証されるまで、その処理を一時停止させるための仕組みです。CIゲートとして機能します。 |
83
+ | `study-swarm requalify --resolve <dispatch> <id> --mode removed\ | regrounded [--note …]` | 調査結果が削除されたとき(引用がなくなったとき)または再検証されたときに、フラグをクリアします(兄弟ランナーによって再検証され、問題がないことが確認されます。`--note`にはその証拠が記録されます)。べき等性があり、サイドカーの監査ログに追加されます。 |
79
84
 
80
- `lint`は決定的な処理であり、モデル呼び出しは行わないため、CI環境で安全に使用できる。ローカルで**ステップ3のソース標準**を適用する。モデルベースの**ステップ4**の検証は、[`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prismに委ねられる。
85
+ `lint`は決定論的であり、モデル呼び出しはゼロであるため、CIでの使用に安全です。ローカルで**ステップ3のソース標準**を適用し、モデルベースの**ステップ4**検証は引き続き[`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prismに委ねます。
81
86
 
82
87
  典型的なループ:
83
88
 
@@ -88,11 +93,11 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
88
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
89
94
  ```
90
95
 
91
- 2つの完全で、lintチェックに合格した動作するディスパッチが参照として提供される:[`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md)(プロトコルの中心的な決定であり、簡潔)と[`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md)(完全なv1.1の設計パスであり、27件の参考文献があり、そのすべてが外部で検証されている)。
96
+ 4つの完全で、lintチェックに合格したディスパッチをリファレンスとして公開します:[`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md)(プロトコルの中心的な決定事項、コンパクト)、[`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md)(完全なv1.1設計パス—27件の引用。すべて外部で検証済み)、[`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md)(v1.2ロック設計—39件の引用、ランナーを通じてゲート処理され、独自のロックを公開する最初のディスパッチ)、および[`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md)(v1.3正準ロールバック設計—撤回、取り下げ、サガ、ビルド無効化にわたる27件の引用。また、最初に撤回され、その後再検証されるディスパッチ)。
92
97
 
93
- ### CI環境でのゲートとして使用する
98
+ ### CIでゲートとして使用する
94
99
 
95
- `lint`は、ファイル、ディレクトリ(`*.dispatch.md`ファイルを再帰的にlintチェック)、またはstdinを表す`-`を受け取り、`--json`オプションを使用すると、機械可読形式のレポートが出力される。これをリポジトリに組み込むことで、各PR(プルリクエスト)でディスパッチのソースを検証することができる(コピー&ペーストできるサンプルは、[`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)にも含まれている)。
100
+ `lint`は、ファイル、ディレクトリ(`.dispatch.md`ファイルを再帰的にlint)、または`-`(標準入力)を受け取り、`--json`オプションを使用すると、機械可読形式のレポートが出力されます。これをリポジトリに追加して、各PRでディスパッチのソースをゲートします(コピー&ペーストできるサンプルは[`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)にもあります)。
96
101
 
97
102
  ```yaml
98
103
  # .github/workflows/dispatches.yml
@@ -114,19 +119,39 @@ jobs:
114
119
  - run: npx @dogfood-lab/study-swarm@latest lint dispatches/
115
120
  ```
116
121
 
117
- ## その仕組みを簡潔に説明する
122
+ ### ディスパッチをリプレイ用に固定する(`dispatch.lock.json`)
118
123
 
119
- **最新性** この分野は急速に進展しているため、特定の研究と年を指定することで、設計が18か月遅れて公開されるのを防ぐことができる。**機能性** — 証拠は、何が*成功するか*だけでなく、何が*失敗する*かを示す(説明は、*間違った*AIへの過度の依存を高める可能性がある—Bansal et al. 2021、[arXiv:2006.14779](https://arxiv.org/abs/2006.14779))。**安全性** — 検証ツールによって保護された範囲は、証拠が裏付けるアーキテクチャであり、プロトコルはその出力を強制する。ソースの明示は学術的な儀式ではなく、証拠の追跡である。
124
+ 根拠があり、検証されたディスパッチは、それがどのように生成されたかを説明できれば、監査可能になります。`study-swarm lock`は、コンパニオンのロックファイルを書き込みます。このファイルには、研究エージェントごとに、**解決されたモデルID**(浮動するエイリアスではありません)、**正確なバイト単位のプロンプトのSHA-256ハッシュ**、および与えられた**ツールスキーマのSHA-256ハッシュ**、さらに外部の**検証レシート**が記録されます。これらはすべて1つの`lock_sha256`にまとめられます。`study-swarm lock --verify`は、これらのハッシュを再計算し、いずれかのハッシュが異なる場合、エラーを表示します。したがって、プロンプトが変更されたり、モデルが切り替えられたり、ツールのバージョンが変更されたりすると、検知されます。[PIN_PER_STEP](https://github.com/dogfood-lab/study-swarm)再現性標準を実際に実行できます。この処理は、レコードを出力し、CLIはゼロ依存でネットワークにアクセスする必要がなく、単に正規化(RFC 8785)、ハッシュ化、および検証を行います。
125
+
126
+ **入力は固定し、出力は固定しません。** モデル、プロンプト、温度を固定しても、LLMの出力が完全に同一になるわけではありません。バッチ不変性、浮動小数点演算の非結合性、混合エキスパートルーティング、およびサイレントプロバイダドリフトなど、オフラインツールで制御できない要素が存在するためです。したがって、この仕組みは、**再現可能な入力とドリフトを検出可能な出力を提供し、「決定的な再現」を実現するものではありません。** この設計は、[`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) に記載されているように、個々の要素に基づいて構築されており、独自のロック機能を備えた最初のバージョン ([`examples/study-swarm-lock.lock.json`](examples/study-swarm-lock.lock.json)) として提供されます。
127
+
128
+ ### 撤回された調査結果をロールバックします(`withdraw`/`requalify`)
129
+
130
+ 検証済みの調査結果は**正準**となります。これは、後続の意思決定に影響を与えます。したがって、後で**撤回**された場合(再実行時に引用が捏造または誤って帰属されていることが判明した場合、引用された論文が取り下げられた場合、またはゲートがそれを却下した場合)どうなるでしょうか?`git revert`だけでは不十分です。なぜなら、調査結果はすでに伝播しているからです。正準ロールバック補償機能により、クリーンアップを実行できるようになります。
131
+
132
+ ```bash
133
+ study-swarm withdraw arXiv:2402.15089 --reason misattributed --from dispatches/ --receipt rollback.json
134
+ # → flags every dispatch citing it `evidence-withdrawn` (a tombstone sidecar — flag, never delete)
135
+ # and writes a content-addressed withdrawal receipt naming every dependent.
136
+ study-swarm requalify --check dispatches/ # exit 1 while any flag is unresolved — the andon HALT
137
+ study-swarm requalify --resolve d.dispatch.md arXiv:2402.15089 --mode removed # or: --mode regrounded --note "<attestation>"
138
+ ```
139
+
140
+ `requalify --check`は、フラグが設定されたすべての調査結果が削除または**再検証**されるまで、処理を停止します(兄弟ランナーによって再検証され、問題がないことが確認されます。CLIは証拠を記録しますが、それ自体で再検証は行いません)。撤回は**対照的**に表示され、サイレントな削除とはなりません。すべて—墓石とレシート—はコンテンツアドレス指定されており、ドリフト検出が可能であり、*証拠*レイヤーでのみ動作します:`lock --verify`は撤回によって影響を受けません。この設計は[`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md)に基づいており、[PROTOCOL.md](PROTOCOL.md)の§「撤回された調査結果を補償する」が実行可能な形式です。これは、**NAMED_COMPENSATORS**標準を実行可能にしたものです:名前付きでべき等なアンドゥ処理であり、既知のポスト状態とレシートを残します。
141
+
142
+ ## その仕組みを簡潔に説明します
143
+
144
+ **最新性** — この分野は急速に進歩しており、特定の研究(数年間の期間が必要)に固執すると、設計が18か月遅れてしまう可能性があります。**機能性** — 証拠は、何が「うまくいく」かだけでなく、何が「うまくいかない」かを示しています(説明を加えることで、誤ったAIへの過度な依存が生じる可能性があります—Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779))。**安全性** — 検証者によって保護された範囲は、証拠が裏付けるアーキテクチャであり、プロトコルによってその出力に強制されます。情報源の提示は学術的なパフォーマンスではなく、証拠の追跡です。
120
145
 
121
146
  ## セキュリティ
122
147
 
123
- `study-swarm`は、**軽量で依存関係のないCLI(コマンドラインインターフェース)** (`study-swarm`)と、その方法論を組み合わせて提供する。**ネットワークまたはモデルへの呼び出しは行わず**、**テレメトリも収集しない**。ソースコードには秘密や認証情報は含まれていない。実行時には、`lint`に渡されたファイルのみを読み取り、現在のディレクトリに単一の`<slug>.dispatch.md`ファイルを書き込む(上書きはせず、作業ディレクトリ外には書き込まない)。方法論で説明されているモデルベースの検証(ステップ4)は、このパッケージではなく、関連ツールによって実行される。詳細は[SECURITY.md](SECURITY.md)を参照のこと。
148
+ `study-swarm` は、この手法とともに、**軽量で依存関係のないCLI(コマンドラインインターフェース)** (`study-swarm`) を提供します。**ネットワーク接続やモデルへのアクセスは行わず、テレメトリデータも収集しません。** ソースコードには、秘密情報や認証情報は含まれていません。実行時には、`lint` に渡されたファイルのみを読み取り、現在のディレクトリに `<slug>.dispatch.md` という名前のファイルを1つだけ書き込みます(上書きは行わず、作業ディレクトリ外への書き込みも行いません)。この手法で説明されているモデルベースの検証(ステップ4)は、このパッケージではなく、関連するツールによって実行されます。詳細は [SECURITY.md](SECURITY.md) を参照してください。
124
149
 
125
150
  ## ステータス
126
151
 
127
- 動作するプロトコルであり、その独自のメカニズムによって外部で検証されている。異なるモデルファミリーがその参考文献をチェックしている(上記の証明を参照)。**v1.1**では、最初のリリースでは言及されていなかった点を強化している。具体的には、分解/三項の根拠、生成時の根拠、レンズを組み合わせるためのオラクル制御カスケード、および校正された保留である。これらの要素はすべて、検証済みのv1.1ディスパッチに基づいて根拠が示されている。このリポジトリは公開参照であり、[PROTOCOL.md](PROTOCOL.md)は実行可能な形式である。これは、[dogfood-lab](https://github.com/dogfood-lab)ファミリーの一部であり、AI時代における構築のための方法と事例を紹介するものである。
152
+ 独自のメカニズムによって外部検証された、動作するプロトコル—別のモデルファミリーがその引用をチェックします(上記の証拠を参照)。**v1.1**は、最初のリリースではサイレントだった検証機能を強化しました:分解/三値の根拠付け、生成時の根拠付け、レンズを組み合わせるためのオラクルゲート付きカスケード、および調整された棄権—それぞれが検証済みのv1.1ディスパッチに基づいて行われます。**v1.2**は、ディスパッチをバイト単位で再現可能にします:`study-swarm lock`は、各ステップと検証レシートごとに解決されたモデル、プロンプト、およびツールスキーマを固定し、`lock --verify`はドリフトが発生した場合に処理を停止します。**v1.3**は、ロールバックを実行可能にします:すでに正準となった調査結果が撤回されると、`study-swarm withdraw`はすべての依存関係にフラグを設定し、`requalify --check`はそれらを削除または再検証されるまで処理を停止します—名前付きで、レシート付きの、べき等な補償機能です。このリポジトリは公開リファレンスであり、[PROTOCOL.md](PROTOCOL.md)が実行可能な形式です。[dogfood-lab](https://github.com/dogfood-lab)ファミリーの一部であり、AI時代におけるビルドのための方法とショーケースを提供します。
128
153
 
129
- MITライセンスで提供される。
154
+ MITライセンス。
130
155
 
131
156
  ---
132
157
 
package/README.md CHANGED
@@ -76,6 +76,11 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
76
76
  | `study-swarm protocol` | Print the full protocol — the five steps, the halt table, the sourcing standard. |
77
77
  | `study-swarm new <slug>` | Scaffold a `<slug>.dispatch.md` with the five-step skeleton to fill in. |
78
78
  | `study-swarm lint [--json] <path…>` | Check a dispatch's *Research grounding* against the sourcing standard — every finding needs an author, a year, and a resolvable identifier (arXiv / DOI / URL); "studies show…" hand-waving is rejected. Exit `1` on violations, so it gates CI. A `<path>` may be a file, a directory (linted recursively for `*.dispatch.md`), or `-` for stdin; `--json` emits a machine-readable report. |
79
+ | `study-swarm lock <dispatch> --from <orchestration.json>` | Pin a dispatch for replay — write `<dispatch>.lock.json` content-addressing, per Step-2 agent, the **resolved model id** + the **SHA-256 of the byte-exact prompt** + the **SHA-256 of the tool schema**, plus the Step-4 **verifier receipt**, rolled into one `lock_sha256`. |
80
+ | `study-swarm lock --verify <dispatch> [--from …]` | Re-derive those hashes and assert they match the lock; any drift exits `1`, so it gates CI like a package lockfile. Without `--from`, checks the lock's own integrity. |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **Canon-rollback compensator.** Flag every dispatch in the corpus whose *Research grounding* cites `<id>` as `evidence-withdrawn` (a tombstone sidecar `<slug>.withdrawn.json` — flag, never delete) and emit a content-addressed withdrawal receipt. `--reason` ∈ `fabricated · misattributed · retracted · verifier-flipped · other`. |
82
+ | `study-swarm requalify --check <corpus-dir>` | Fail closed (exit `1`) for any dispatch carrying an unresolved `evidence-withdrawn` flag — the andon that **halts** a withdrawn finding's dependents until it is removed or re-grounded. Gates CI. |
83
+ | `study-swarm requalify --resolve <dispatch> <id> --mode removed\|regrounded [--note …]` | Clear a flag once the finding is removed (the citation is gone) or re-grounded (re-verified clean by the sibling runner; `--note` records the attestation). Idempotent; appends to the sidecar's audit trail. |
79
84
 
80
85
  `lint` is deterministic — zero model calls — so it's safe in CI. It enforces **Step 3's sourcing standard** locally; the model-based **Step 4** verification still defers to [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
81
86
 
@@ -88,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
88
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
89
94
  ```
90
95
 
91
- Two complete, lint-clean worked dispatches ship as references: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (the protocol's central decision, compact) and [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (the full v1.1 design pass — 27 citations, every one externally verified).
96
+ Four complete, lint-clean worked dispatches ship as references: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (the protocol's central decision, compact), [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (the full v1.1 design pass — 27 citations, every one externally verified), [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (the v1.2 lock design — 39 citations, gated through the runner, and the first dispatch to ship its own lock), and [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md) (the v1.3 canon-rollback design — 27 citations across revocation, retraction, sagas, and build-invalidation, and the first dispatch to be withdrawn-then-requalified).
92
97
 
93
98
  ### Gate it in CI
94
99
 
@@ -114,6 +119,26 @@ jobs:
114
119
  - run: npx @dogfood-lab/study-swarm@latest lint dispatches/
115
120
  ```
116
121
 
122
+ ### Pin a dispatch for replay (`dispatch.lock.json`)
123
+
124
+ A grounded, verified dispatch is only auditable if you can say *what produced it*. `study-swarm lock` writes a companion lockfile that content-addresses, per research agent, the **resolved model id** (never a floating alias), the **SHA-256 of the byte-exact prompt**, and the **SHA-256 of the tool schema** it was given, plus the external **verifier receipt** — rolled into one `lock_sha256`. `study-swarm lock --verify` re-derives those hashes and fails closed on any drift, so a changed prompt, a swapped model, or a shifted tool surface is caught — the [PIN_PER_STEP](https://github.com/dogfood-lab/study-swarm) reproducibility standard, made executable. The harness emits the record; the CLI stays zero-dependency and network-free, only canonicalizing (RFC 8785), hashing, and validating it.
125
+
126
+ **It pins inputs, not outputs.** Pinning model + prompt + temperature does *not* make an LLM's output bit-identical — batch-invariance, floating-point non-associativity, mixture-of-experts routing, and silent provider drift are all outside an offline tool's control. So the lock gives you **replayable inputs and drift-detectable outputs**, never "deterministic replay." The design is grounded, citation by citation, in [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) — the first dispatch to ship its own lock ([`examples/study-swarm-lock.lock.json`](examples/study-swarm-lock.lock.json)).
127
+
128
+ ### Roll back a withdrawn finding (`withdraw` / `requalify`)
129
+
130
+ A verified finding becomes **canon** — it informs a downstream decision. So what happens when it's later **withdrawn** (a citation turns out fabricated/misattributed on a re-run, a cited paper is retracted, or the gate flips it)? A `git revert` is not enough, because the finding already propagated. The canon-rollback compensator makes the cleanup executable:
131
+
132
+ ```bash
133
+ study-swarm withdraw arXiv:2402.15089 --reason misattributed --from dispatches/ --receipt rollback.json
134
+ # → flags every dispatch citing it `evidence-withdrawn` (a tombstone sidecar — flag, never delete)
135
+ # and writes a content-addressed withdrawal receipt naming every dependent.
136
+ study-swarm requalify --check dispatches/ # exit 1 while any flag is unresolved — the andon HALT
137
+ study-swarm requalify --resolve d.dispatch.md arXiv:2402.15089 --mode removed # or: --mode regrounded --note "<attestation>"
138
+ ```
139
+
140
+ `requalify --check` **fails closed** until each flagged finding is removed or **re-grounded** (re-verified clean by the sibling runner — the CLI records the attestation, it does not itself re-verify). The withdrawal is surfaced **contrastively**, never as a silent drop. Everything — the tombstone and the receipt — is content-addressed and drift-detectable, and operates on the *evidence* layer only: `lock --verify` is untouched by a withdraw. The design is grounded in [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md), and the [PROTOCOL.md](PROTOCOL.md) §"Compensating a withdrawn finding" is the executable shape. This is the **NAMED_COMPENSATORS** standard made executable: a named, idempotent undo that leaves a known post-state and a receipt.
141
+
117
142
  ## Why it works, in one breath
118
143
 
119
144
  **Current** — the field moves fast; demanding specific studies-with-years keeps designs from shipping 18 months behind. **Functional** — evidence shows what *fails*, not just what works (explanations can increase over-reliance on *wrong* AI — Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Safe** — the verifier-protected envelope is the architecture the evidence supports, and the protocol enforces it on its own output. Sourcing isn't academic theater; it's the evidence trail.
@@ -124,7 +149,7 @@ jobs:
124
149
 
125
150
  ## Status
126
151
 
127
- A working protocol, externally verified by its own machinery — a different model family checks its citations (see the proof above). **v1.1** sharpens the verifier where the first release was silent: decomposed/ternary groundedness, generation-time grounding, an oracle-gated cascade for combining lenses, and calibrated abstention — each grounded in the verified v1.1 dispatch. This repo is the public reference; [PROTOCOL.md](PROTOCOL.md) is the executable shape. Part of the [dogfood-lab](https://github.com/dogfood-lab) family — methods and showcases for building in the AI era.
152
+ A working protocol, externally verified by its own machinery — a different model family checks its citations (see the proof above). **v1.1** sharpens the verifier where the first release was silent: decomposed/ternary groundedness, generation-time grounding, an oracle-gated cascade for combining lenses, and calibrated abstention — each grounded in the verified v1.1 dispatch. **v1.2** makes a dispatch byte-replayable: `study-swarm lock` pins the resolved model, prompt, and tool schema per step plus the verifier receipt, and `lock --verify` fails closed on drift. **v1.3** makes the rollback executable: when a finding that already became canon is withdrawn, `study-swarm withdraw` flags every dependent and `requalify --check` halts them fail-closed until they're removed or re-grounded — a named, receipted, idempotent compensator. This repo is the public reference; [PROTOCOL.md](PROTOCOL.md) is the executable shape. Part of the [dogfood-lab](https://github.com/dogfood-lab) family — methods and showcases for building in the AI era.
128
153
 
129
154
  MIT licensed.
130
155
 
package/README.pt-BR.md CHANGED
@@ -76,6 +76,11 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
76
76
  | `study-swarm protocol` | Imprime o protocolo completo – as cinco etapas, a tabela de interrupção e o padrão de referência. |
77
77
  | `study-swarm new <slug>` | Cria um arquivo `<slug>.dispatch.md` com o esqueleto das cinco etapas para preencher. |
78
78
  | `study-swarm lint [--json] <path…>` | Verifica a *fundamentação da pesquisa* de uma análise em relação ao padrão de referência – cada achado precisa de um autor, um ano e um identificador resolvível (arXiv / DOI / URL); “estudos mostram…” sem embasamento é rejeitado. Sai com `1` em caso de violações, para que valide o CI. Um `<path>` pode ser um arquivo, um diretório (analisado recursivamente para `*.dispatch.md`) ou `-` para stdin; `--json` emite um relatório legível por máquina. |
79
+ | `study-swarm lock <dispatch> --from <orchestration.json>` | Fixe um envio para reprodução – crie o arquivo `<dispatch>.lock.json` com informações de conteúdo, conforme o agente da Etapa 2, incluindo o **ID do modelo resolvido** + o **SHA-256 do prompt exato em bytes** + o **SHA-256 do esquema da ferramenta**, mais o **comprovante do verificador** da Etapa 4, tudo reunido em um único arquivo `lock_sha256`. |
80
+ | `study-swarm lock --verify <dispatch> [--from …]` | Recalcule esses hashes e verifique se correspondem ao bloqueio; qualquer desvio resulta em saída `1`, portanto, controla o CI como um arquivo de bloqueio de pacote. Sem `--from`, verifica a própria integridade do bloqueio. |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **Mecanismo de compensação para reversão do canon.** Marcar cada registro no corpus cujo *fundamento da pesquisa* cite `<id>` como `evidência-retirada` (um arquivo auxiliar `<slug>.withdrawn.json` — marcar, nunca excluir) e emitir um comprovante de retirada com base no conteúdo. `--reason` ∈ `fabricado · atribuído incorretamente · revogado · verificador alterado · outro`. |
82
+ | `study-swarm requalify --check <corpus-dir>` | Falhar em modo fechado (sair com código `1`) para qualquer registro que contenha uma marcação `evidência-retirada` não resolvida — o sinalizador que **interrompe** os elementos dependentes de um resultado retirado até que seja removido ou reavaliado. Gates CI. |
83
+ | `study-swarm requalify --resolve <registro> <id> --mode removed\ | regrounded [--note …]` | Remover uma marcação assim que o resultado for removido (a citação desaparecer) ou reavaliado (reverificado e validado pelo executor irmão; `--note` registra a confirmação). Idempotente; adiciona ao histórico de auditoria do arquivo auxiliar. |
79
84
 
80
85
  `lint` é determinístico – sem chamadas de modelo – portanto, é seguro no CI. Ele aplica o **padrão de referência da Etapa 3** localmente; a verificação baseada em modelo da **Etapa 4** ainda depende de [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
81
86
 
@@ -88,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
88
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
89
94
  ```
90
95
 
91
- Duas análises completas e “limpas” são fornecidas como referência: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (a decisão central do protocolo, concisa) e [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (o projeto completo da v1.1 27 citações, todas validadas externamente).
96
+ Quatro registros completos, limpos e funcionais são enviados como referência: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (a decisão central do protocolo, concisa), [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (o design completo da versão 1.1 27 citações, todas verificadas externamente), [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (o design de bloqueio da versão 1.2 — 39 citações, controlado pelo executor e o primeiro registro a enviar seu próprio bloqueio) e [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md) (o design de reversão do canon da versão 1.3 — 27 citações em relação à revogação, retração, sequências e invalidação da construção, e o primeiro registro a ser retirado e depois reavaliado).
92
97
 
93
98
  ### Valide no CI
94
99
 
@@ -114,6 +119,26 @@ jobs:
114
119
  - run: npx @dogfood-lab/study-swarm@latest lint dispatches/
115
120
  ```
116
121
 
122
+ ### Fixe um envio para reprodução (`dispatch.lock.json`)
123
+
124
+ Um envio validado e comprovado só pode ser auditado se você puder dizer *o que o gerou*. `study-swarm lock` cria um arquivo de bloqueio complementar que, por meio do agente de pesquisa, contém informações sobre o **ID do modelo resolvido** (nunca um alias flutuante), o **SHA-256 do prompt exato em bytes** e o **SHA-256 do esquema da ferramenta** fornecido, mais o **comprovante externo do verificador** – tudo reunido em um único arquivo `lock_sha256`. `study-swarm lock --verify` recalcula esses hashes e falha se houver qualquer desvio, portanto, um prompt alterado, um modelo substituído ou uma ferramenta modificada são detectados – o padrão de reprodutibilidade [PIN_PER_STEP](https://github.com/dogfood-lab/study-swarm), que pode ser executado. O sistema emite o registro; a CLI permanece sem dependências e independente da rede, apenas normalizando (RFC 8785), calculando hashes e validando.
125
+
126
+ **Ele fixa as entradas, não as saídas.** Fixar modelo + prompt + temperatura *não* torna a saída de um LLM bit a bit idêntica – invariância em lote, não associatividade de ponto flutuante, roteamento de mistura de especialistas e desvio silencioso do provedor estão todos fora do controle de uma ferramenta offline. Portanto, o bloqueio fornece **entradas reproduzíveis e saídas com detecção de desvio**, nunca "reprodução determinística". O design é fundamentado, citação por citação, em [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) – o primeiro envio a incluir seu próprio bloqueio ([`examples/study-swarm-lock.lock.json`](examples/study-swarm-lock.lock.json)).
127
+
128
+ ### Reverter um resultado retirado (`withdraw` / `requalify`)
129
+
130
+ Um resultado verificado torna-se **canon** — ele informa uma decisão subsequente. Então, o que acontece quando ele é posteriormente **retirado** (uma citação se revela fabricada/atribuída incorretamente em uma nova execução, um artigo citado é retirado ou o controle o altera)? Um `git revert` não é suficiente, porque o resultado já foi propagado. O mecanismo de compensação para reversão do canon torna a limpeza executável:
131
+
132
+ ```bash
133
+ study-swarm withdraw arXiv:2402.15089 --reason misattributed --from dispatches/ --receipt rollback.json
134
+ # → flags every dispatch citing it `evidence-withdrawn` (a tombstone sidecar — flag, never delete)
135
+ # and writes a content-addressed withdrawal receipt naming every dependent.
136
+ study-swarm requalify --check dispatches/ # exit 1 while any flag is unresolved — the andon HALT
137
+ study-swarm requalify --resolve d.dispatch.md arXiv:2402.15089 --mode removed # or: --mode regrounded --note "<attestation>"
138
+ ```
139
+
140
+ `requalify --check` **falha em modo fechado** até que cada resultado marcado seja removido ou **reavaliado** (reverificado e validado pelo executor irmão — a CLI registra a confirmação, não o faz por conta própria). A retirada é apresentada de forma **contrastante**, nunca como uma remoção silenciosa. Tudo — o arquivo auxiliar e o comprovante — tem base no conteúdo e pode ser detectado em caso de desvio, e opera apenas na camada de *evidência*: `lock --verify` não é afetado por uma retirada. O design é baseado em [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md), e o [PROTOCOL.md](PROTOCOL.md) §"Compensando um resultado retirado" é a forma executável. Este é o padrão **NAMED_COMPENSATORS** tornado executável: uma operação de desfazer nomeada e idempotente que deixa um estado pós-operacional conhecido e um comprovante.
141
+
117
142
  ## Por que funciona, em poucas palavras
118
143
 
119
144
  **Atual** – o campo evolui rapidamente; exigir estudos específicos com anos evita que os projetos sejam lançados com 18 meses de atraso. **Funcional** – a evidência mostra o que *falha*, não apenas o que funciona (explicações podem aumentar a dependência excessiva em IA *incorreta* – Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Seguro** – o envelope protegido pelo verificador é a arquitetura que a evidência suporta, e o protocolo a aplica em sua própria saída. A referência não é um exercício acadêmico; é o rastro da evidência.
@@ -124,7 +149,7 @@ jobs:
124
149
 
125
150
  ## Status
126
151
 
127
- Um protocolo funcional, validado externamente por sua própria ferramenta uma família de modelos diferente verifica suas citações (veja a prova acima). A **v1.1** aprimora o verificador onde a primeira versão estava em silêncio: fundamentação decomposta/ternária, fundamentação no momento da geração, uma cascata validada pelo oráculo para combinar lentes e abstinência calibrada cada um com base na análise v1.1 validada. Este repositório é a referência pública; [PROTOCOL.md](PROTOCOL.md) é a forma executável. Faz parte da família [dogfood-lab](https://github.com/dogfood-lab) métodos e exemplos para construir na era da IA.
152
+ Um protocolo funcional, verificado externamente por sua própria infraestrutura uma família diferente de modelos verifica suas citações (veja a prova acima). **v1.1** aprimora o verificador, onde a primeira versão era silenciosa: fundamentação decomposta/ternária, fundamentação no momento da geração, cascata controlada por um oráculo para combinar lentes e abstinência calibrada cada um baseado no registro verificado da versão 1.1. **v1.2** torna um registro reproduzível: `study-swarm lock` fixa o modelo resolvido, o prompt e o esquema de ferramentas por etapa, além do comprovante do verificador, e `lock --verify` falha em modo fechado em caso de desvio. **v1.3** torna a reversão executável: quando um resultado que já se tornou canon é retirado, `study-swarm withdraw` marca todos os elementos dependentes e `requalify --check` os interrompe, fazendo com que falhem até que sejam removidos ou reavaliados — um compensador nomeado, com comprovante e idempotente. Este repositório é a referência pública; [PROTOCOL.md](PROTOCOL.md) é a forma executável. Faz parte da família [dogfood-lab](https://github.com/dogfood-lab) métodos e demonstrações para construir na era da IA.
128
153
 
129
154
  Licenciado sob MIT.
130
155