@dogfood-lab/study-swarm 1.0.0 → 1.2.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.ja.md CHANGED
@@ -13,67 +13,73 @@
13
13
  <img src="https://img.shields.io/badge/cited%20research-verified-1f6feb" alt="Cited research, verified">
14
14
  </p>
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. **実行する**: 各質問に対して、複数の研究エージェントを並行して実行します。各エージェントは、論文タイトル+著者+発表年+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
- 完全な実行可能な詳細(停止テーブル、情報源に関する標準、アンサンブルルール)は、**[PROTOCOL.md](PROTOCOL.md)**に記載されています。
30
+ 完全な実行可能な詳細(停止テーブル、情報源に関する標準、アンサンブルルール)は、**[PROTOCOL.md](PROTOCOL.md)**に記載されている。
31
31
 
32
- ## なぜ*異なる*モデルファミリーで、推論機能を削除する必要があるのでしょうか?
32
+ ## なぜ*別の*ファミリーで、推論機能を削除する必要があるのか?
33
33
 
34
- その理由は、失敗モードが仮説ではなく、実際に確認されているからです。
34
+ それは、失敗モードが仮説ではなく、文書化されているためである:
35
35
 
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
- - **同じファミリーの評価者は、自分を高く評価する傾向があります**。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つの検証者は、サブモジュールカバレッジによって、単一の検証者よりも優れた結果をもたらします。Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — LLMのエラーは*相関しているため、重要な変数はレンズの多様性であり、単純な数ではありません。
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
+ - **同じファミリーの評価者は、自分を高く評価する傾向がある。** 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つの検証者は、サブモジュラーカバレッジによって、いずれかの単一の検証者よりも優れた結果をもたらす。Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — LLMのエラーは*相関しているため、重要な変数はレンズの多様性であり、単純な数ではない。
41
41
 
42
- ## 実際に機能するのでしょうか?(証拠)
42
+ ## 実際に機能するのか?(証拠)
43
43
 
44
- テストとして、このプロトコルを自分の引用に対して実行しました。2つの非類似のモデルファミリー(**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
- | 「Nakamura & Olsen」に帰属された連鎖思考プロンプト | 見逃した | **検出**(誤った帰属→実際にはWei et al. 2022、arXiv:2201.11903 | 誤って帰属された |
49
- | 「98%のエラーが除去され、オラクルは不要」という捏造された論文 | **caught** (fabricated) | **caught** (fabricated) | 捏造された |
48
+ | 「Nakamura & Olsen」に帰属された連鎖思考プロンプト | 見逃した | **検出(誤った帰属→実際にはWei et al. 2022、arXiv:2201.11903)** | 誤って帰属された |
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
+
55
+ ### …そして再び、v1.1を設計するために
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)に記載されています。
54
58
 
55
59
  ## その仕組み
56
60
 
57
- 手動でプロトコルを実行できます。異なるモデルと、ご自身でarXiv/DOIを解決することで、ステップ4を満たします。2つの関連ツールが連携して、1つのコマンドとして実行されます。
61
+ プロトコルを手動で実行できます。異なるモデルと、arXiv/DOIを自分で解決することでステップ4を満たすことができます。2つの関連ツールを使用すると、1つのコマンドで実行できます。
58
62
 
59
- - **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** — 実行時の検証ツール:異なるモデル間のルーティング、推論の簡略化、多角的な判断、決定的な検索による存在確認(arXiv → Crossref)、署名されたレシート。
60
- - **[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を通じて検証するランナーです。
61
65
 
62
- ハンドオフは、ディスパッチ形式そのものです。「N. **finding.** 著者 (arXiv|DOI). 含意。」という形式で記述された調査結果(**各調査結果に対して解決可能な識別子を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では、引用文献が何であるかについて合意します。
63
67
 
64
- ## CLI(コマンドラインインターフェース)
68
+ ## CLI
65
69
 
66
70
  ```bash
67
71
  npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
68
72
  ```
69
73
 
70
- | コマンド | 実行内容 |
74
+ | コマンド | その機能 |
71
75
  |---|---|
72
- | `study-swarm protocol` | 完全なプロトコル(5つのステップ、停止テーブル、情報源の標準)を表示します。 |
73
- | `study-swarm new <slug>` | 5つのステップで構成されたスケルトンを含む`<slug>.dispatch.md`を作成し、情報を入力できるようにします。 |
74
- | `study-swarm lint [--json] <path…>` | ディスパッチの「研究根拠」を情報源の標準と比較してチェックします。すべての調査結果には、著者、年、および解決可能な識別子(arXiv / DOI / URL)が必要です。「研究によると…」という曖昧な表現は拒否されます。違反があった場合、終了コード`1`を返し、CI(継続的インテグレーション)のゲートとして機能します。`<path>`はファイル、ディレクトリ(`.dispatch.md`ファイルを再帰的にチェック)、または`-`(標準入力)を指定できます。`--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`オプションがない場合は、ロックファイルの整合性をチェックします。 |
75
81
 
76
- `lint`は決定的な処理であり、モデルへの呼び出しは行われません。そのため、CI環境で安全に使用できます。ローカルで**ステップ3の情報源標準**を適用します。モデルベースの**ステップ4**の検証は、引き続き[`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prismによって行われます。
82
+ `lint`は決定論的であり、モデル呼び出しはゼロであるため、CIでの使用に安全です。ローカルで**ステップ3のソース標準**を適用し、モデルベースの**ステップ4**検証は引き続き[`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prismに委ねます。
77
83
 
78
84
  典型的なループ:
79
85
 
@@ -84,11 +90,11 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
84
90
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
85
91
  ```
86
92
 
87
- 完全で`lint`によるチェックに合格したディスパッチ(study-swarmを自身の設計に適用したもの)は、[`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md)として、参考資料として提供されます。
93
+ 以下に示す3つの完全な、不要な情報を削除して整理されたドキュメントを参考として提供します。[`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件の引用があり、実行環境を通じて管理され、独自のロックを実装した最初のドキュメント)。
88
94
 
89
- ### CI環境でゲートとして使用する
95
+ ### CIでゲートとして使用する
90
96
 
91
- `lint`は、ファイル、ディレクトリ(`.dispatch.md`ファイルを再帰的にチェック)、または`-`(標準入力)を受け取り、`--json`オプションを使用すると、機械可読形式のレポートが出力されます。これをリポジトリに追加して、すべてのディスパッチの情報源を各PR(プルリクエスト)で検証します(コピー&ペーストできるサンプルは[`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)にもあります)。
97
+ `lint`は、ファイル、ディレクトリ(`.dispatch.md`ファイルを再帰的にlint)、または`-`(標準入力)を受け取り、`--json`オプションを使用すると、機械可読形式のレポートが出力されます。これをリポジトリに追加して、各PRでディスパッチのソースをゲートします(コピー&ペーストできるサンプルは[`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)にもあります)。
92
98
 
93
99
  ```yaml
94
100
  # .github/workflows/dispatches.yml
@@ -110,17 +116,23 @@ jobs:
110
116
  - run: npx @dogfood-lab/study-swarm@latest lint dispatches/
111
117
  ```
112
118
 
113
- ## その仕組み:
119
+ ### ディスパッチをリプレイ用に固定する(`dispatch.lock.json`)
120
+
121
+ 根拠があり、検証されたディスパッチは、それがどのように生成されたかを説明できれば、監査可能になります。`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)、ハッシュ化、および検証を行います。
122
+
123
+ **入力は固定し、出力は固定しません。** モデル、プロンプト、温度を固定しても、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)) として提供されます。
124
+
125
+ ## その仕組みを簡潔に説明します
114
126
 
115
- **現状**この分野は急速に進化しており、特定の研究と年を指定することで、設計が18か月遅れて公開されるのを防ぎます。**機能性**証拠は、何が「有効」であるかだけでなく、何が「無効」であるかを示します(説明を加えることで、*誤った*AIへの過度な依存が増加する可能性があります—Bansal et al. 2021[arXiv:2006.14779](https://arxiv.org/abs/2006.14779))。**安全性** — 検証ツールによって保護された範囲は、証拠が裏付けるアーキテクチャであり、プロトコルはその出力を強制します。情報源の明示は、学術的な儀式ではなく、証拠の追跡です。
127
+ **最新性**この分野は急速に進歩しており、特定の研究(数年間の期間が必要)に固執すると、設計が18か月遅れてしまう可能性があります。**機能性**証拠は、何が「うまくいく」かだけでなく、何が「うまくいかない」かを示しています(説明を加えることで、誤ったAIへの過度な依存が生じる可能性があります—Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779))。**安全性** — 検証者によって保護された範囲は、証拠が裏付けるアーキテクチャであり、プロトコルによってその出力に強制されます。情報源の提示は学術的なパフォーマンスではなく、証拠の追跡です。
116
128
 
117
129
  ## セキュリティ
118
130
 
119
- `study-swarm`は、**軽量で依存関係のないCLI(コマンドラインインターフェース)** (`study-swarm`)と、その方法論を一緒に提供します。**ネットワークへの接続やモデルへの呼び出しを行わず**、**テレメトリも収集しません**。ソースコードには秘密情報や認証情報は含まれていません。実行時に、`lint`に渡されたファイルを読み取り、現在のディレクトリに単一の`<slug>.dispatch.md`ファイルを作成するだけです(上書きはせず、作業ディレクトリ外に出力することはありません)。方法論で説明されているモデルベースの検証(ステップ4)は、このパッケージではなく、関連ツールによって実行されます。詳細は[SECURITY.md](SECURITY.md)を参照してください。
131
+ `study-swarm` は、この手法とともに、**軽量で依存関係のないCLI(コマンドラインインターフェース)** (`study-swarm`) を提供します。**ネットワーク接続やモデルへのアクセスは行わず、テレメトリデータも収集しません。** ソースコードには、秘密情報や認証情報は含まれていません。実行時には、`lint` に渡されたファイルのみを読み取り、現在のディレクトリに `<slug>.dispatch.md` という名前のファイルを1つだけ書き込みます(上書きは行わず、作業ディレクトリ外への書き込みも行いません)。この手法で説明されているモデルベースの検証(ステップ4)は、このパッケージではなく、関連するツールによって実行されます。詳細は [SECURITY.md](SECURITY.md) を参照してください。
120
132
 
121
133
  ## ステータス
122
134
 
123
- 動作するプロトコルであり、自身のメカニズムによって外部から検証されています(異なるモデルファミリーがその引用をチェックします。上記の証拠を参照)。このリポジトリは公開されている参考資料です。[PROTOCOL.md](PROTOCOL.md)は、実行可能な形式です。これは、[dogfood-lab](https://github.com/dogfood-lab)ファミリーの一部であり、AI時代における構築のための方法と事例を紹介します。
135
+ 動作するプロトコルであり、独自の仕組みによって外部から検証されています—異なるモデルファミリーがその引用をチェックします(上記の証拠を参照)。**v1.1** では、最初のリリースでは明示されていなかった検証機能を強化しています。具体的には、分解/三値の根拠付け、生成時の根拠付け、レンズを組み合わせるためのオラクルゲート付きカスケード、およびキャリブレーションされた棄権などです。これらの要素はすべて、検証済みの v1.1 ディスパッチに基づいて構築されています。**v1.2** では、ディスパッチをバイト単位で再現可能にするために、`study-swarm lock` を使用して、各ステップで使用される解決済みのモデル、プロンプト、およびツールスキーマに加えて、検証者のレシートを固定します。また、`lock --verify` コマンドを使用すると、ドリフトが発生した場合に処理が停止します。このリポジトリは公開参照であり、[PROTOCOL.md](PROTOCOL.md) に実行可能な形式で記述されています。これは、[dogfood-lab](https://github.com/dogfood-lab) ファミリーの一部であり、AI時代における構築のための方法と事例を紹介しています。
124
136
 
125
137
  MITライセンス。
126
138
 
package/README.md CHANGED
@@ -52,6 +52,10 @@ Neither family caught both traps alone — but their **union caught 2/2**. A sin
52
52
 
53
53
  That single run is the thesis in miniature: **decorrelated lenses + a retrieval oracle for existence beat any one smart judge.**
54
54
 
55
+ ### …and again, to design v1.1
56
+
57
+ The v1.1 refinements were chosen the same way — by running study-swarm **on study-swarm**. Four questions the first release left to "I think" (how to *mechanize* the groundedness check, whether to ground at generation time, how to *combine* the lenses, whether to abstain on calibrated uncertainty) went to parallel research agents, and all **27 resulting citations** were gated through Step 4 before any informed the design. The retrieval oracle confirmed **27/27 exist** — including six 2025–2026 papers a parametric model would have false-flagged as fabricated — and corrected five attributions a model could not, among them a real first-author misattribution the research agent flagged on itself. Run reasoning-stripped, the groundedness lenses even reproduced their own documented failure modes on our dispatch: one confidently mislabelled a real paper, and their *disagreement* triggered escalation — exactly as the cascade prescribes. The worked dispatch ships as [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md); the refinements it grounded — decomposed/ternary groundedness, generation-time grounding, the oracle-gated cascade, and calibrated abstention — are in [PROTOCOL.md](PROTOCOL.md).
58
+
55
59
  ## How it's wired
56
60
 
57
61
  You can run the protocol by hand — any different-family model plus resolving the arXiv/DOI yourself satisfies Step 4. Two sibling tools make it one command:
@@ -72,6 +76,8 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
72
76
  | `study-swarm protocol` | Print the full protocol — the five steps, the halt table, the sourcing standard. |
73
77
  | `study-swarm new <slug>` | Scaffold a `<slug>.dispatch.md` with the five-step skeleton to fill in. |
74
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. |
75
81
 
76
82
  `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.
77
83
 
@@ -84,7 +90,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
84
90
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
85
91
  ```
86
92
 
87
- A complete, lint-clean dispatch study-swarm applied to its own design — ships in [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) as a worked reference.
93
+ Three 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), and [`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).
88
94
 
89
95
  ### Gate it in CI
90
96
 
@@ -110,6 +116,12 @@ jobs:
110
116
  - run: npx @dogfood-lab/study-swarm@latest lint dispatches/
111
117
  ```
112
118
 
119
+ ### Pin a dispatch for replay (`dispatch.lock.json`)
120
+
121
+ 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.
122
+
123
+ **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)).
124
+
113
125
  ## Why it works, in one breath
114
126
 
115
127
  **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.
@@ -120,7 +132,7 @@ jobs:
120
132
 
121
133
  ## Status
122
134
 
123
- A working protocol, externally verified by its own machinery — a different model family checks its citations (see the proof above). 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.
135
+ 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. 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.
124
136
 
125
137
  MIT licensed.
126
138
 
package/README.pt-BR.md CHANGED
@@ -13,53 +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
- **Baseie as decisões de design em pesquisa citada — e depois verifique as citações com uma família de modelos *diferente* antes que qualquer parte disso se torne canônica.**
16
+ **Baseie as decisões de projeto em pesquisas citadas — e, em seguida, verifique as citações com um *modelo diferente* antes que qualquer coisa se torne parte do cânone.**
17
17
 
18
- `study-swarm` é um protocolo, não uma ferramenta. Quando você está tomando uma decisão de design substancial com um LLM — uma nova camada de produto, uma escolha de arquitetura, uma decisão de "devemos confiar no modelo aqui" — improvisar a partir de primeiros princípios entrega designs que estão desatualizados, e citar artigos de memória entrega designs que se baseiam em fontes que não existem ou não dizem o que você pensa. study-swarm substitui ambos: despache agentes de pesquisa paralelos, exija descobertas citadas específicas e submeta cada citação a um **verificador externo de uma família de modelos diferente** antes que ela informe o design.
18
+ `study-swarm` é um protocolo, não uma ferramenta. Ao tomar uma decisão de projeto importante com um LLM — uma nova camada de produto, uma escolha arquitetural, uma decisão sobre "se devemos confiar no modelo aqui" — improvisar a partir de princípios básicos resulta em projetos desatualizados e citar artigos de memória leva a projetos baseados em fontes que não existem ou que não dizem o que você pensa. O `study-swarm` substitui ambos: ele envia agentes de pesquisa paralelos, exige descobertas específicas citadas e valida cada citação por meio de um **verificador externo de uma família de modelos diferente** antes que ela influencie o projeto.
19
19
 
20
- Ele aplica seu próprio remédio. O protocolo prescreve envelopes protegidos por verificador para os sistemas que ajuda a projetar — então ele executa um em si mesmo. **Nenhum modelo corrige sua própria tarefa, incluindo aquele que executa o protocolo.**
20
+ Ele aplica sua própria abordagem. O protocolo prescreve "envelopes" protegidos por verificadores para os sistemas que ele ajuda a projetar — portanto, ele executa um deles em si mesmo. **Nenhum modelo avalia seu próprio trabalho, incluindo o que está executando o protocolo.**
21
21
 
22
- ## O protocolo em cinco passos
22
+ ## O protocolo em cinco etapas:
23
23
 
24
- 1. **Identifique** 35 questões de design cruciais onde evidências empíricas mudariam a resposta.
25
- 2. **Despache** um agente de pesquisa por questão, em paralelo. Cada um deve retornar títulos de artigos + autores + anos + URLs + uma descoberta em uma frase — especificidade em vez de amplitude ("68 descobertas bem fundamentadas valem mais que 20 gestos vagos").
26
- 3. **Sintetize** as descobertas em uma seção de *Base de pesquisa*: `N. **<descoberta>.** <Autores> <ano> (<arXiv/DOI>). <implicação de design>.`
27
- 4. **Verifique externamente** — uma *família de modelos diferente*, sem raciocínio, verifica cada citação em duas etapas: um **oráculo de recuperação** confirma que o artigo existe (nunca a memória do modelo), e então uma **lente de fundamentação** confirma que a descoberta corresponde à fonte. **Pare** em caso de fabricação/ atribuição; **pare e escale** se o verificador ou o oráculo de recuperação estiver indisponível (nunca interprete a ausência como "citações estão ok").
28
- 5. **Conecte** cada escolha arquitetônica a uma descoberta pelo número. Citações sem uma implicação de design são ruído.
24
+ 1. **Identifique** 3 a 5 questões de projeto cruciais, nas quais evidências empíricas mudariam a resposta.
25
+ 2. **Envie** um agente de pesquisa por questão, em paralelo. Cada um deve retornar títulos de artigos + autores + anos + URLs + uma descoberta em uma frase — especificidade em vez de amplitude ("6 a 8 descobertas bem fundamentadas superam 20 observações vagas").
26
+ 3. **Sintetize** as descobertas em uma seção de *fundamentação da pesquisa*: `N. **<descoberta>.** <Autores> <ano> (<arXiv/DOI>). <implicação para o projeto>.`
27
+ 4. **Verifique externamente** — uma *família de modelos diferente*, sem raciocínio, verifica cada citação em duas etapas: um **oráculo de recuperação** confirma que o artigo existe (nunca a memória do modelo) e, em seguida, uma lente de **validação** confirma que a descoberta corresponde à fonte. **Interrompa** se for fabricada/atribuída incorretamente; **interrompa e alerte** se o verificador ou o oráculo de recuperação não estiverem disponíveis (nunca interprete a ausência como "citações válidas").
28
+ 5. **Conecte** cada escolha arquitetural a uma descoberta por meio de um número. Citações sem implicação para o projeto são ruído.
29
29
 
30
- O detalhe executável completo — a tabela de paradas, o padrão de fontes, a regra de conjunto — está em **[PROTOCOL.md](PROTOCOL.md)**.
30
+ Os detalhes completos e executáveis — a tabela de interrupção, o padrão de referência e a regra do conjunto — estão em **[PROTOCOL.md](PROTOCOL.md)**.
31
31
 
32
- ## Por que uma família *diferente*, sem raciocínio?
32
+ ## Por que uma *família diferente*, sem raciocínio?
33
33
 
34
34
  Porque os modos de falha são documentados, não hipotéticos:
35
35
 
36
- - **Os LLMs não conseguem verificar de forma confiável suas próprias saídas.** 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)) — o verificador externo é responsável pelos ganhos; o conteúdo de autocrítica é inerte.
37
- - **Juízes da mesma família preferem a si mesmos.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — o autorreconhecimento correlaciona-se *linearmente* com a autopreferência, portanto, o cegamento parcial não ajuda. Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — um painel entre famílias distintas é menos tendencioso a um custo ~7× menor.
38
- - **Citações são onde os LLMs mentem.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — 55% das citações do GPT-3.5 / 18% das citações do GPT-4 são fabricadas. Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — os links resolvem >94% das vezes, mas apenas 39–77% do conteúdo citado realmente apoia a afirmação. Portanto, a existência deve ser verificada por **recuperação, não por recordação**.
39
- - **Oculte o raciocínio do gerador.** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), "Gaming the Judge") — o raciocínio em cadeia (chain-of-thought) manipulado por si só infla os falsos positivos de um juiz em até 90% com as ações mantidas fixas. Turpin et al. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — CoT é uma racionalização a posteriori. O verificador vê a afirmação da citação em si, nunca o 'por que incluí isto'.
40
- - **Diversidade supera quantidade.** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — quatro verificadores com correlação par a par ρ ∈ [0.05, 0.25] superam qualquer um individualmente através de cobertura submodular. Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — os erros dos LLMs são *correlacionados*, portanto, a variável crucial é a diversidade das lentes, não a quantidade bruta.
36
+ - **Os LLMs não conseguem verificar de forma confiável sua própria saída.** 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)) — o verificador externo traz os benefícios; o conteúdo de autocrítica é inerte.
37
+ - **Juízes da mesma família se auto favorecem.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — o autorreconhecimento está correlacionado *linearmente* com a autopreferência, portanto, o bloqueio parcial não ajuda. Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — um painel de famílias distintas é menos tendencioso, com um custo cerca de 7 vezes menor.
38
+ - **As citações são onde os LLMs mentem.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — 55% das citações do GPT-3.5 / 18% do GPT-4 são fabricadas. Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — os links resolvem >94% das vezes, mas apenas 39–77% do conteúdo citado realmente sustentam a afirmação. Portanto, a existência deve ser verificada por meio de **recuperação, não de recordação**.
39
+ - **Oculte o raciocínio do gerador.** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), "Gaming the Judge") — a manipulação da cadeia de pensamento sozinha aumenta os falsos positivos de um juiz em até 90%, com as ações mantidas fixas. Turpin et al. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — a cadeia de pensamento é uma racionalização *a posteriori*. O verificador vê apenas a afirmação da citação, nunca o "por que eu incluí isso".
40
+ - **A diversidade supera a quantidade.** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — quatro verificadores com correlação de pares ρ ∈ [0,05, 0,25] superam qualquer um deles por meio da cobertura submodular. Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — os erros do LLM são *correlacionados*, portanto, a variável crucial é a diversidade das lentes, não a quantidade bruta.
41
41
 
42
- ## Funciona de verdade? (prova)
42
+ ## Ele realmente funciona? (prova)
43
43
 
44
- Como teste, o protocolo foi executado contra suas próprias citações. Duas famílias não Claude e decorrelacionadas — **Mistral** (`mistral-small:24b`) e **IBM Granite** (`granite4.1:30b`) — verificaram um conjunto de citações, sem o raciocínio, plantadas com duas armadilhas cegas:
44
+ Como teste, o protocolo foi executado em suas próprias citações. Duas famílias decorrelacionadas e diferentes do Claude — **Mistral** (`mistral-small:24b`) e **IBM Granite** (`granite4.1:30b`) — verificaram um conjunto de citações, sem raciocínio, com duas armadilhas ocultas:
45
45
 
46
- | Armadilha plantada | Mistral | IBM Granite | Verdade fundamental |
46
+ | Armadilha plantada | Mistral | IBM Granite | Verdade factual |
47
47
  |---|---|---|---|
48
- | Prompt de raciocínio em cadeia atribuído a "Nakamura & Olsen" | perdida | **apanhada** (atribuída incorretamente → na verdade Wei et al. 2022, arXiv:2201.11903) | atribuída incorretamente |
49
- | um artigo fabricado "98% dos erros removidos, sem necessidade de oráculo" | **caught** (fabricated) | **caught** (fabricated) | fabricado |
48
+ | O raciocínio da cadeia de pensamento foi atribuído a "Nakamura & Olsen" | não detectada | **detectada** (atribuição incorreta → na verdade, Wei et al. 2022, arXiv:2201.11903) | atribuída incorretamente |
49
+ | um artigo fabricado com a afirmação de que "98% dos erros foram removidos, nenhum oráculo é necessário" | **caught** (fabricated) | **caught** (fabricated) | fabricado |
50
50
 
51
- Nenhuma das famílias apanhou ambas as armadilhas sozinha — mas a sua **união apanhou 2/2**. Um único juiz teria deixado passar a atribuição incorreta. Separadamente, o oráculo de recuperação apanhou duas atribuições incorretas *reais* nos nossos próprios documentos de projeto (artigos citados com o primeiro autor incorreto) que nenhum LLM paramétrico poderia ter sinalizado — e confirmou corretamente artigos genuínos de 2026 que ambos os LLMs sinalizaram falsamente como fabricados simplesmente porque os artigos são posteriores ao seu treinamento. Esse último ponto é a razão pela qual a verificação de existência da Etapa 4 **deve** ser um oráculo de recuperação, nunca um LLM.
51
+ Nenhuma das famílias detectou as duas armadilhas sozinha — mas sua **união detectou 2/2**. Um único juiz teria aceitado a atribuição incorreta. Separadamente, o oráculo de recuperação detectou duas *atribuições incorretas reais* em nossos próprios documentos de projeto (artigos citados sob o autor principal errado) que nenhum LLM paramétrico poderia ter sinalizado — e ele confirmou corretamente artigos genuínos de 2026 que ambos os LLMs marcaram falsamente como fabricados, simplesmente porque os artigos são posteriores ao seu treinamento. Esse último ponto é a razão pela qual a verificação da existência na etapa 4 **deve** ser um oráculo de recuperação, nunca um LLM.
52
52
 
53
- Essa única execução é a tese em miniatura: **lentes decorrelacionadas + um oráculo de recuperação para existência superam qualquer juiz inteligente.**
53
+ Essa única execução é a tese em miniatura: **lentes decorrelacionadas + um oráculo de recuperação para a existência superam qualquer juiz inteligente.**
54
+
55
+ ### …e novamente, para projetar a v1.1
56
+
57
+ As melhorias da versão 1.1 foram escolhidas da mesma forma – executando o `study-swarm` no próprio `study-swarm`. Quatro questões que a primeira versão deixou em aberto (“Acho que…” – como *mecanizar* a verificação da fundamentação, se a fundamentação deve ser feita no momento da geração, como *combinar* as lentes, se deve abster-se na incerteza calibrada) foram encaminhadas para agentes de pesquisa paralelos, e todas as **27 citações resultantes** foram validadas na Etapa 4 antes que qualquer uma delas influenciasse o projeto. O oráculo de recuperação confirmou que **27/27 existem** – incluindo seis artigos de 2025–2026 que um modelo paramétrico teria classificado erroneamente como fabricados – e corrigiu cinco atribuições que um modelo não conseguiria, entre elas uma real má atribuição do primeiro autor que o agente de pesquisa identificou em si mesmo. Executando sem raciocínio, as lentes de fundamentação até reproduziram seus próprios modos de falha documentados em nossa análise: uma delas rotulou incorretamente um artigo real com confiança, e sua *discordância* desencadeou a escalada – exatamente como o processo estabelece. A análise completa está disponível em [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md); as melhorias que foram implementadas – fundamentação decomposta/ternária, fundamentação no momento da geração, a cascata validada pelo oráculo e a abstinência calibrada – estão em [PROTOCOL.md](PROTOCOL.md).
54
58
 
55
59
  ## Como funciona
56
60
 
57
- Pode executar o protocolo manualmente qualquer modelo de família diferente, além de resolver o arXiv/DOI você mesmo, satisfaz a Etapa 4. Duas ferramentas irmãs tornam isso um único comando:
61
+ Você pode executar o protocolo manualmente qualquer modelo de família diferente mais a resolução do arXiv/DOI por conta própria satisfaz a Etapa 4. Duas ferramentas complementares tornam isso um único comando:
58
62
 
59
- - **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** o verificador em tempo de execução: roteamento diferenciado por família, sem raciocínio, adjudicação multilente, um piso determinístico de existência de recuperação (arXiv → Crossref) e recibos assinados.
60
- - **[role-os](https://github.com/mcp-tool-shop-org/role-os)** fornece `roleos verify-citations <dispatch>`, o executor que extrai as citações de um despacho e as encaminha através do prism.
63
+ - **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** o verificador em tempo de execução: roteamento entre famílias diferentes, sem raciocínio, adjudicação multi-lente, um limite determinístico para a existência da recuperação (arXiv → Crossref) e recibos assinados.
64
+ - **[role-os](https://github.com/mcp-tool-shop-org/role-os)** fornece `roleos verify-citations <dispatch>`, o executor que extrai as citações de uma análise e as valida por meio do prism.
61
65
 
62
- A transferência é o próprio formato do despacho: uma descoberta escrita como `N. **descoberta.** Autores ano (arXiv|DOI). implicação.` com **um identificador resolvível por descoberta** é exatamente o que `roleos verify-citations` extrai e encaminha. Um despacho limpo pelo `lint` é transferido sem problemas; uma citação malformada é o que o executor sinaliza como não analisada. Esse contrato é o que `study-swarm lint` verifica localmente, para que o Passo 3 e o Passo 4 concordem sobre o que é uma citação.
66
+ A transferência é o próprio formato da análise: um achado escrito como `N. **achado.** Autores ano (arXiv|DOI). implicação.` com **um identificador resolvível por achado** é exatamente o que `roleos verify-citations` extrai e valida. Uma análise “limpa” passa facilmente; uma citação malformada é o que o executor sinaliza como não analisada. Esse contrato é o que `study-swarm lint` verifica localmente, para que as Etapas 3 e 4 concordem sobre o que é uma citação.
63
67
 
64
68
  ## CLI
65
69
 
@@ -67,13 +71,15 @@ A transferência é o próprio formato do despacho: uma descoberta escrita como
67
71
  npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-swarm <command>
68
72
  ```
69
73
 
70
- | Comando | O que faz |
74
+ | Comando | O que ele faz |
71
75
  |---|---|
72
- | `study-swarm protocol` | Imprime o protocolo completo os cinco passos, a tabela de parada, o padrão de fontes. |
73
- | `study-swarm new <slug>` | Gera o esqueleto de um `<slug>.dispatch.md` com a estrutura de cinco passos para preencher. |
74
- | `study-swarm lint [--json] <path…>` | Verifica a *Base de pesquisa* de um despacho em relação ao padrão de fontes cada descoberta precisa de um autor, um ano e um identificador resolvível (arXiv / DOI / URL); o discurso vago de "estudos mostram..." é rejeitado. Sai com `1` em caso de violações, para que bloqueie a CI. Um `<path>` pode ser um arquivo, um diretório (verificado recursivamente para `*.dispatch.md`), ou `-` para stdin; `--json` emite um relatório legível por máquina. |
76
+ | `study-swarm protocol` | Imprime o protocolo completo as cinco etapas, a tabela de interrupção e o padrão de referência. |
77
+ | `study-swarm new <slug>` | Cria um arquivo `<slug>.dispatch.md` com o esqueleto das cinco etapas para preencher. |
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. |
75
81
 
76
- `lint` é determinístico zero chamadas ao modelo portanto, é seguro na CI. Ele impõe o **padrão de fontes do Passo 3** localmente; a verificação baseada em modelo do **Passo 4** ainda depende de [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
82
+ `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.
77
83
 
78
84
  Um ciclo típico:
79
85
 
@@ -84,11 +90,11 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
84
90
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
85
91
  ```
86
92
 
87
- Um despacho completo e limpo pelo `lint` study-swarm aplicado ao seu próprio design está disponível em [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) como uma referência prática.
93
+ Três envios completos e validados 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) e [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (o design do bloqueio da versão 1.2 – 39 citações, controlado pelo executor, e o primeiro envio a incluir seu próprio bloqueio).
88
94
 
89
- ### Bloqueie na CI
95
+ ### Valide no CI
90
96
 
91
- `lint` aceita um arquivo, um diretório (verificado recursivamente para `*.dispatch.md`), ou `-` para stdin, e `--json` emite um relatório legível por máquina. Adicione isto ao seu repositório para bloquear as fontes de cada despacho em cada PR (um exemplo para copiar e colar também está em [`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)):
97
+ `lint` recebe um arquivo, um diretório (analisado recursivamente para `*.dispatch.md`) ou `-` para stdin, e `--json` emite um relatório legível por máquina. Adicione isso ao seu repositório para validar a referência de cada análise em cada PR (uma amostra de cópia e colagem também está em [`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)):
92
98
 
93
99
  ```yaml
94
100
  # .github/workflows/dispatches.yml
@@ -110,19 +116,25 @@ jobs:
110
116
  - run: npx @dogfood-lab/study-swarm@latest lint dispatches/
111
117
  ```
112
118
 
113
- ## Por que funciona, em uma só frase
119
+ ### Fixe um envio para reprodução (`dispatch.lock.json`)
120
+
121
+ 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.
122
+
123
+ **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)).
124
+
125
+ ## Por que funciona, em poucas palavras
114
126
 
115
- **Atual** o campo avança rapidamente; exigir estudos específicos com anos impede que os designs fiquem 18 meses atrasados. **Funcional** as evidências mostram o que *falha*, não apenas o que funciona (explicações podem aumentar a confiança excessiva em IA *errada* Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Seguro** o envelope protegido pelo verificador é a arquitetura que as evidências suportam, e o protocolo a impõe em sua própria saída. A citação de fontes não é teatro acadêmico; é o rastro de evidências.
127
+ **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.
116
128
 
117
129
  ## Segurança
118
130
 
119
- `study-swarm` é fornecido com uma **CLI leve e sem dependências** (`study-swarm`) juntamente com a metodologia. Ele não faz **nenhuma chamada de rede ou de modelo** e não coleta **telemetria**; não há segredos ou credenciais no código-fonte. Em tempo de execução, ele apenas o arquivo que você passa para `lint` e escreve um único `<slug>.dispatch.md` no diretório atual para `new` (recusando sobrescrever e nunca fora do diretório de trabalho). A verificação baseada em modelo que a metodologia descreve (Passo 4) é executada pelas ferramentas irmãs, não por este pacote. Consulte [SECURITY.md](SECURITY.md).
131
+ `study-swarm` fornece uma **CLI fina e com poucas dependências** (`study-swarm`) junto com a metodologia. Ele não faz **chamadas de rede ou modelo** e não coleta **telemetria**; não há segredos ou credenciais no código-fonte. Em tempo de execução, ele apenas o arquivo que você passa para `lint` e grava um único arquivo `<slug>.dispatch.md` no diretório atual para `new` (recusando-se a sobrescrever e nunca fora do diretório de trabalho). A verificação baseada em modelo descrita na metodologia (Etapa 4) é executada pelas ferramentas complementares, não por este pacote. Consulte [SECURITY.md](SECURITY.md).
120
132
 
121
133
  ## Status
122
134
 
123
- Um protocolo funcional, verificado externamente por sua própria maquinaria uma família de modelos diferente verifica suas citações (veja a prova acima). Este repositório é a referência pública; [PROTOCOL.md](PROTOCOL.md) é a forma executável. Parte da família [dogfood-lab](https://github.com/dogfood-lab) métodos e vitrines para construir na era da IA.
135
+ Um protocolo funcional, verificado externamente por sua própria estrutura uma família de modelos diferente verifica suas citações (veja a prova acima). A **versão 1.1** aprimora o verificador, onde a primeira versão era silenciosa: fundamentação decomposta/ternária, fundamentação no momento da geração, uma cascata controlada por um oráculo para combinar lentes e abstinência calibrada – cada um fundamentado no envio verificado da versão 1.1. A **versão 1.2** torna um envio reproduzível em bytes: `study-swarm lock` fixa o modelo resolvido, o prompt e o esquema da ferramenta por etapa, mais o comprovante do verificador, e `lock --verify` falha se houver desvio. Este repositório é a referência pública; [PROTOCOL.md](PROTOCOL.md) é a forma executável. Parte da família [dogfood-lab](https://github.com/dogfood-lab) métodos e demonstrações para construir na era da IA.
124
136
 
125
- Licenciado pelo MIT.
137
+ Licenciado sob MIT.
126
138
 
127
139
  ---
128
140