@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/CHANGELOG.md CHANGED
@@ -2,6 +2,45 @@
2
2
 
3
3
  All notable changes to this project are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
4
4
 
5
+ ## [1.3.0] — 2026-06-30
6
+
7
+ Makes the **canon-rollback** executable. A verified finding becomes canon — it informs a downstream design decision — so when it is 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: the finding already propagated. This release ships the protocol's named `requalify_dependent_slices` compensator as three deterministic, network-free verbs. The design was grounded by running study-swarm on this feature itself — five load-bearing questions (revocation propagation, machine-readable status states, scholarly retraction, sound compensators, build-system staleness/tombstones/contrastive surfacing) dispatched to parallel retrieval-grounded agents; all 27 findings were gated through Step 4 (`roleos verify-citations` → prism, a different model family, reasoning-stripped) with a public-key-verified Ed25519 receipt before any informed the design.
8
+
9
+ ### Added
10
+
11
+ - **`study-swarm withdraw <identifier> --reason <reason> [--detail <text>] [--from <dir>] [--receipt <path>]`** — scans the corpus for every dispatch whose *Research grounding* cites `<identifier>` (identifier-normalized across arXiv / DOI / RFC / URL forms), flags each as `evidence-withdrawn` in a co-located tombstone sidecar `<slug>.withdrawn.json` (**flag, never delete**) with a closed machine-readable `--reason` (`fabricated` / `misattributed` / `retracted` / `verifier-flipped` / `other`), and emits a content-addressed withdrawal receipt (the withdrawn id + reason + every dependent flagged + a `receipt_sha256` + the post-rollback state).
12
+ - **`study-swarm requalify --check <corpus-dir>`** — fails 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. Also catches a hand-edited sidecar via self-integrity. Gates CI.
13
+ - **`study-swarm requalify --resolve <dispatch> <identifier> --mode removed|regrounded [--note <text>]`** — clears a flag once the finding is removed (deterministically checked) or re-grounded (`--note` records the sibling-runner re-verification attestation; the CLI does not itself re-verify). **Idempotent**, and **appends** to the sidecar's append-only audit trail rather than editing in place.
14
+ - A worked, runner-verified reference dispatch — `examples/study-swarm-canon-rollback.dispatch.md` (27 cited findings) — with its harness record (`examples/study-swarm-canon-rollback.orchestration.json`) and lock (`examples/study-swarm-canon-rollback.lock.json`); the first dispatch to ship a lock **and** be withdrawn-then-requalified.
15
+ - Smoke coverage proving the rollback round-trips: a meta-test seeds two dispatches citing one identifier, withdraws it (both go `evidence-withdrawn`, `requalify --check` goes **RED**), re-grounds one (it goes **GREEN** while the other stays **RED**), plus determinism, idempotency, self-integrity tamper, line-ending invariance, and a DECOMPOSE boundary test proving `lock --verify` is unaffected by a withdraw/resolve.
16
+
17
+ ### Changed
18
+
19
+ - `PROTOCOL.md` adds a **"Compensating a withdrawn finding (canon-rollback)"** section — the executable shape of `requalify_dependent_slices` and its honest ceiling.
20
+
21
+ ### Honest ceiling
22
+
23
+ The CLI **flags, gates, and receipts deterministically** (file reads, JSON I/O, SHA-256 — zero-dependency, network-free). The actual **re-verification** of a re-grounded finding is the sibling runner's job (`roleos verify-citations` → prism), not this package; `requalify --resolve --mode regrounded` records that it happened, it does not perform it. The tombstone is the volatile evidence layer and never touches the stable `PROTOCOL.md`/lock shape. Grounded in Garcia-Molina & Salem 1987 (Sagas, DOI:10.1145/38713.38742), RFC 5280 / RFC 6066 / RFC 7633, OpenVEX & CSAF 2.0 & CycloneDX 1.6, NISO CREC RP-45-2024, the RetractoBot RCT (DeVito et al. 2024), Mokhov, Mitchell & Peyton Jones 2018 (DOI:10.1145/3236774), Buçinca et al. 2024 (arXiv:2410.04253), and Bansal et al. 2021 (arXiv:2006.14779).
24
+
25
+ ## [1.2.0] — 2026-06-30
26
+
27
+ Makes a study-swarm dispatch **byte-replayable**. The design was grounded by running study-swarm on this feature itself — five load-bearing questions (replay-manifest structure, cross-platform canonicalization, step-level provenance, LLM replay-determinism reality, tool-schema drift) dispatched to parallel retrieval-grounded agents; all 39 findings were gated through Step 4 (`roleos verify-citations` → prism, a different model family, reasoning-stripped) with a public-key-verified Ed25519 receipt before any informed the design.
28
+
29
+ ### Added
30
+
31
+ - **`study-swarm lock <dispatch> --from <orchestration.json>`** — writes a companion `dispatch.lock.json` that content-addresses, per Step-2 research agent, the resolved model id, the SHA-256 of the byte-exact prompt, and the SHA-256 of the tool schema, plus the Step-4 verifier receipt, rolled into one `lock_sha256` (the PIN_PER_STEP standard). The harness emits the record; the CLI stays zero-dependency and network-free, only canonicalizing (RFC 8785 JCS + NFC normalization, no BOM), hashing (SHA-256, self-describing `sha256-…` digests), and validating.
32
+ - **`study-swarm lock --verify <dispatch> [--from …]`** — re-derives every deterministic hash and fails closed (exit `1`) on any drift: a changed prompt, a swapped or aliased model, a shifted tool surface, edited dispatch text, or a tampered lock file. Gates CI like a package lockfile. Without `--from`, it checks the lock's own integrity.
33
+ - A worked, runner-verified reference dispatch — `examples/study-swarm-lock.dispatch.md` (39 cited findings) — with its harness record (`examples/study-swarm-lock.orchestration.json`) and the first shipped lock (`examples/study-swarm-lock.lock.json`). All three ship in the npm tarball.
34
+ - Smoke coverage proving `lock --verify` goes **RED** on every drift class (prompt, output, model, dispatch text, lock-file tamper) and that `lock` builds deterministically — a lock that can't detect drift is theater.
35
+
36
+ ### Changed
37
+
38
+ - `PROTOCOL.md` adds a short **Replayability** section stating the PIN_PER_STEP property and its honest ceiling.
39
+
40
+ ### Honest ceiling
41
+
42
+ Pinning model + prompt + temperature does **not** make an LLM's *output* bit-identical (batch-invariance, floating-point non-associativity, mixture-of-experts routing, silent provider drift). The lock pins **inputs byte-exact and records output hashes for drift detection** — replayable inputs + drift-detectable outputs, never "deterministic replay." Grounded in He & Thinking Machines Lab 2025, Yuan et al. 2025 (arXiv:2506.09501), Atil et al. 2024 (arXiv:2408.04667), and Chen, Zaharia & Zou 2023 (arXiv:2307.09009).
43
+
5
44
  ## [1.1.0] — 2026-06-29
6
45
 
7
46
  The protocol run on itself a second time — to design its own next version. Four load-bearing questions the first release left to "I think" were dispatched to parallel research agents; all 27 resulting citations were gated through Step 4 (retrieval oracle for existence + two different model families for groundedness, reasoning-stripped) before any informed the design. The oracle confirmed 27/27 exist — including six 2025–2026 papers a parametric model would have false-flagged — and corrected five attributions, among them a real first-author misattribution the research agent flagged on itself.
@@ -76,6 +115,7 @@ First stable release. A dogfood-swarm health + feature pass hardened the CLI and
76
115
  - `SECURITY.md`, MIT `LICENSE`, project logo.
77
116
  - Landing page + Starlight handbook at <https://dogfood-lab.github.io/study-swarm/>.
78
117
 
118
+ [1.2.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v1.2.0
79
119
  [1.1.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v1.1.0
80
120
  [1.0.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v1.0.0
81
121
  [0.6.0]: https://github.com/dogfood-lab/study-swarm/releases/tag/v0.6.0
package/PROTOCOL.md CHANGED
@@ -141,3 +141,21 @@ Verifier admits before output
141
141
  - **Verifier as admission gate** — the verifier checks the output against the structure before admitting it; retries use a fresh context to avoid sycophancy drift.
142
142
 
143
143
  Designs that touch model-facing behavior default to this shape unless evidence justifies a different one.
144
+
145
+ ## Replayability — pinning a dispatch (`dispatch.lock.json`)
146
+
147
+ A grounded, verified dispatch is only auditable if you can say *what produced it*. `study-swarm lock <dispatch> --from <orchestration.json>` writes a companion `dispatch.lock.json` that pins, per Step-2 research agent, the **resolved model id** (never an alias), the **SHA-256 of the byte-exact prompt**, and the **SHA-256 of the tool schema** the agent was given, plus the Step-4 **verifier receipt** — rolled into one `lock_sha256` content-address. `study-swarm lock --verify` re-derives those hashes and exits non-zero on any drift, so a changed prompt, model, or tool surface is caught — it gates CI exactly like a package lockfile. This is the PIN_PER_STEP standard made executable: the harness emits the record, and the CLI (zero-dependency, network-free) only canonicalizes, hashes, and validates it.
148
+
149
+ **Honest ceiling:** 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 all sit outside any offline tool's control. So the lock pins **inputs byte-exact and records output hashes for drift detection** — *replayable inputs + drift-detectable outputs*, never "deterministic replay." The design and its evidence are the worked dispatch [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) — itself the first dispatch to ship its own lock.
150
+
151
+ ## Compensating a withdrawn finding (canon-rollback)
152
+
153
+ A verified finding still becomes **canon** — it informs a downstream design decision. So the protocol must answer: what happens when a finding that already propagated is later **withdrawn** — a citation turns out fabricated or misattributed on a re-run, a cited paper is **retracted** upstream, or the gate flips it? A `git revert` of the dispatch commit is **not** sufficient: the finding already informed the dependent design, and a compensator "undoes from a semantic point of view, [it] does not necessarily restore the [prior] state" (Garcia-Molina & Salem 1987, the protocol's saga heritage). The named compensator is **`requalify_dependent_slices`**, made executable as three deterministic, network-free CLI verbs:
154
+
155
+ - **`study-swarm withdraw <identifier> --reason <reason> [--detail <text>] [--from <corpus-dir>] [--receipt <path>]`** — scan the corpus for every dispatch whose *Research grounding* cites `<identifier>` (the same parser `lint` uses, identifier-normalized across arXiv / DOI / RFC / URL forms), and for each dependent write a co-located **tombstone sidecar** `<slug>.withdrawn.json` flagging it `evidence-withdrawn` with a **closed, machine-readable reason** (`fabricated` / `misattributed` / `retracted` / `verifier-flipped` / `other`). It **flags, never deletes** — every mature system retains-and-flags (X.509 CRL keeps the serial with a reason code; `cargo yank` "does not delete any data"; npm recommends `deprecate` over `unpublish` precisely *because* a version has dependents; PyPI's PEP 592 keeps yanked files; Cassandra writes a tombstone rather than removing the value; COPE/Crossref retain the retracted record and mark it). It emits a content-addressed **withdrawal receipt** (the withdrawn id + reason + the dependents flagged + a `receipt_sha256` + the post-rollback state) — the saga log, made auditable.
156
+ - **`study-swarm requalify --check <corpus-dir>`** — **fails closed (exit 1)** for any dispatch carrying an unresolved `evidence-withdrawn` flag. This is the andon: a withdrawn finding **HALTS** its dependents until the finding is removed or **re-grounded**. Fail-closed (not a soft alert) is the evidence-driven choice — the RetractoBot RCT (DeVito et al. 2024) found that *notifying* citing authors did **not** reduce continued citation of retracted work, and unexplained drops drive over-reliance (Bansal et al. 2021), so the gate refuses to treat a missing re-verification as "fine" (the Must-Staple rule, RFC 7633).
157
+ - **`study-swarm requalify --resolve <dispatch> <identifier> --mode removed|regrounded [--note <text>]`** — clears a flag once the finding is **removed** (deterministic: the citation is gone from the dispatch) or **re-grounded** (re-verified clean by the sibling runner; the CLI records the attestation, it does not itself re-verify). **Idempotent** — re-running on an already-cleared finding is a no-op — and it **appends** a transition to the sidecar's audit trail rather than editing in place (the event-sourcing / CRL-`removeFromCRL` rule: un-withdrawal is an explicit, recorded transition, never a silent edit).
158
+
159
+ The withdrawal is surfaced **contrastively**, never as a silent drop — *"finding N withdrawn because X; you may have relied on it; dispatches A, B are flagged — re-ground or override"* (Buçinca et al. 2024) — pairing with Step 4's `CANNOT_CONFIRM` checkpoint.
160
+
161
+ **Honest ceiling:** the CLI **flags, gates, and receipts deterministically** (file reads, JSON I/O, SHA-256 — zero-dependency, network-free, like the lock). The actual **re-verification** of a re-grounded finding is the **sibling runner's** job (`roleos verify-citations` → `prism`), not this package; `requalify --resolve --mode regrounded` records that it happened, it does not perform it. The tombstone is the **volatile evidence layer** (per-dispatch) and never touches the **stable** `PROTOCOL.md`/lock shape — `lock --verify` is unaffected by a withdraw/resolve, by design. The design and its evidence are the worked dispatch [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md).
package/README.es.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 el protocolo completo: los cinco pasos, la tabla de detención y el estándar de fuentes. |
77
77
  | `study-swarm new <slug>` | Crea un archivo `<slug>.dispatch.md` con el esqueleto de los cinco pasos para completarlo. |
78
78
  | `study-swarm lint [--json] <path…>` | Verifica la *fundamentación de la investigación* de una prueba en comparación con el estándar de fuentes: cada hallazgo necesita un autor, un año y un identificador resoluble (arXiv / DOI / URL); se rechaza cualquier afirmación vaga del tipo "los estudios demuestran...". Sale con código `1` si hay infracciones, por lo que valida la integración continua. Un `<path>` puede ser un archivo, un directorio (se analiza recursivamente para archivos `*.dispatch.md`) o `-` para la entrada estándar; `--json` emite un informe legible por máquina. |
79
+ | `study-swarm lock <dispatch> --from <orchestration.json>` | Fija un envío para su reproducción: escribe el contenido con direccionamiento por contenido en `<dispatch>.lock.json`, según el agente del paso 2, que incluye el **ID de modelo resuelto** + el **SHA-256 del mensaje exacto en bytes** + el **SHA-256 del esquema de la herramienta**, más el **comprobante del verificador** del paso 4, todo integrado en un único `lock_sha256`. |
80
+ | `study-swarm lock --verify <dispatch> [--from …]` | Vuelve a generar esos hashes y verifica que coincidan con el bloqueo; cualquier desviación provoca una salida con código `1`, por lo que actúa como un archivo de bloqueo de paquetes para la integración continua. Sin `--from`, comprueba la integridad del propio bloqueo. |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **Compensador de anulación del canon.** Marcar cada envío en el corpus cuyo *fundamento de la investigación* cite `<id>` como `evidencia retirada` (un archivo adjunto tipo "lápida" `<slug>.withdrawn.json`: marcar, nunca eliminar) y emitir un recibo de retirada identificado por su contenido. `--reason` ∈ `fabricado · atribuido incorrectamente · retractado · verificador revertido · otro`. |
82
+ | `study-swarm requalify --check <corpus-dir>` | Si falla, se cierra el proceso (salir con código `1`) para cualquier envío que contenga una marca `evidencia retirada` no resuelta; este es el mecanismo que **detiene** los elementos dependientes de un hallazgo retirado hasta que se elimine o se vuelva a fundamentar. Activa CI. |
83
+ | `study-swarm requalify --resolve <envío> <id> --mode removed\ | regrounded [--note …]` | Eliminar una marca una vez que se haya eliminado el hallazgo (la cita ya no existe) o se haya vuelto a fundamentar (el ejecutor hermano lo vuelve a verificar y confirma su validez; `--note` registra la confirmación). Es idempotente; agrega información al registro de auditoría del archivo adjunto. |
79
84
 
80
85
  `lint` es determinista: no realiza llamadas al modelo, por lo que es seguro en la integración continua. Aplica el **estándar de fuentes del paso 3** localmente; la verificación basada en modelos del **paso 4** sigue utilizando [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
81
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
- Dos pruebas completas y "limpias" se incluyen como referencias: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la decisión central del protocolo, concisa) y [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (el diseño completo de la versión 1.1: 27 citas, todas verificadas externamente).
96
+ Cuatro envíos completos y limpios sirven como referencia: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la decisión central del protocolo, concisa), [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (el diseño completo de la versión 1.1: 27 citas, todas verificadas externamente), [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (el diseño de bloqueo de la versión 1.2: 39 citas, controlado a través del ejecutor y el primer envío que incluye su propio bloqueo) y [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md) (el diseño de anulación del canon de la versión 1.3: 27 citas relacionadas con la revocación, la retractación, las sagas y la invalidación de la compilación, y el primer envío que se retira y luego se vuelve a calificar).
92
97
 
93
98
  ### Valídalo en la integración continua
94
99
 
@@ -114,6 +119,26 @@ jobs:
114
119
  - run: npx @dogfood-lab/study-swarm@latest lint dispatches/
115
120
  ```
116
121
 
122
+ ### Fija un envío para su reproducción (`dispatch.lock.json`)
123
+
124
+ Un envío verificado y con base sólida solo es auditable si se puede indicar *qué lo produjo*. `study-swarm lock` escribe un archivo de bloqueo complementario que, según el agente de investigación, utiliza el direccionamiento por contenido para incluir el **ID de modelo resuelto** (nunca un alias dinámico), el **SHA-256 del mensaje exacto en bytes** y el **SHA-256 del esquema de la herramienta** que se le proporcionó, más el **comprobante externo del verificador**, todo integrado en un único `lock_sha256`. `study-swarm lock --verify` vuelve a generar esos hashes y falla si detecta alguna desviación, por lo que cualquier cambio en el mensaje, un modelo diferente o una modificación en la herramienta se detectan. Este es el estándar de reproducibilidad [PIN_PER_STEP](https://github.com/dogfood-lab/study-swarm) implementado. El sistema emite el registro; la CLI permanece sin dependencias y sin conexión a la red, solo normaliza (RFC 8785), calcula hashes y lo valida.
125
+
126
+ **Fija las entradas, no las salidas.** Fijar el modelo + el mensaje + la temperatura *no* hace que la salida de un LLM sea idéntica en bits; la invariancia por lotes, la no asociatividad de punto flotante, el enrutamiento de mezcla de expertos y la desviación silenciosa del proveedor están fuera del control de una herramienta offline. Por lo tanto, el bloqueo le proporciona **entradas reproducibles y salidas con detección de desviaciones**, nunca una "reproducción determinista". El diseño se basa, cita por cita, en [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md): el primer envío que incluye su propio bloqueo ([`examples/study-swarm-lock.lock.json`](examples/study-swarm-lock.lock.json)).
127
+
128
+ ### Anular un hallazgo retirado (`withdraw` / `requalify`)
129
+
130
+ Un hallazgo verificado se convierte en **canon**: sirve como base para una decisión posterior. Entonces, ¿qué sucede cuando más adelante se **retira** (una cita resulta ser fabricada o atribuida incorrectamente en una nueva ejecución, un documento citado se retira o el mecanismo de control lo revierte)? Un `git revert` no es suficiente, porque el hallazgo ya se ha propagado. El compensador de anulación del canon hace que la limpieza sea ejecutable:
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` **falla y se cierra** hasta que cada hallazgo marcado se elimine o se **vuelva a fundamentar** (el ejecutor hermano lo vuelve a verificar y confirma su validez; la CLI registra la confirmación, pero no lo vuelve a verificar por sí misma). La retirada se presenta de forma **contrastiva**, nunca como una eliminación silenciosa. Todo —la "lápida" y el recibo— está identificado por su contenido y es detectable en caso de cambios, y opera solo en la capa de *evidencia*: `lock --verify` no se ve afectado por una retirada. El diseño se basa en [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md), y el [PROTOCOL.md](PROTOCOL.md) §"Compensación de un hallazgo retirado" es la forma ejecutable. Este es el estándar **NAMED_COMPENSATORS** convertido en ejecutable: una anulación con nombre e idempotente que deja un estado posterior conocido y un recibo.
141
+
117
142
  ## Por qué funciona, en pocas palabras
118
143
 
119
144
  **Actual:** el campo evoluciona rápidamente; exigir estudios específicos con años evita que los diseños se retrasen 18 meses. **Funcional:** la evidencia muestra lo que *falla*, no solo lo que funciona (las explicaciones pueden aumentar la dependencia excesiva de la IA *incorrecta* — Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Seguro:** el entorno protegido por el verificador es la arquitectura que respalda la evidencia, y el protocolo lo aplica a su propia salida. La verificación de fuentes no es un ejercicio académico; es el rastro de la evidencia.
@@ -124,7 +149,7 @@ jobs:
124
149
 
125
150
  ## Estado
126
151
 
127
- Un protocolo funcional, verificado externamente por su propio mecanismo: una familia de modelos diferente verifica sus citas (vea la prueba anterior). La **versión 1.1** mejora el verificador donde la primera versión no lo hacía: fundamentación descompuesta/ternaria, búsqueda en el momento de la generación, cascada validada por un oráculo para combinar perspectivas y abstención calibrada; todo ello se basa en la prueba verificada de la versión 1.1. Este repositorio es la referencia pública; [PROTOCOL.md](PROTOCOL.md) es la forma ejecutable. Forma parte de la familia [dogfood-lab](https://github.com/dogfood-lab): métodos y ejemplos para construir en la era de la IA.
152
+ Un protocolo funcional, verificado externamente por su propio mecanismo: una familia de modelos diferente verifica sus citas (consulte la prueba anterior). **v1.1** mejora el verificador, ya que la primera versión era silenciosa: fundamento descompuesto/ternario, fundamento en tiempo de generación, una cascada controlada por un oráculo para combinar lentes y abstención calibrada; todo ello se basa en el envío verificado v1.1. **v1.2** hace que un envío sea reproducible mediante la repetición de bytes: `study-swarm lock` fija el modelo resuelto, el mensaje y el esquema de herramientas por paso, además del recibo del verificador, y `lock --verify` falla y se cierra si hay cambios. **v1.3** hace que la anulación sea ejecutable: cuando un hallazgo que ya se convirtió en canon se retira, `study-swarm withdraw` marca todos los elementos dependientes y `requalify --check` los detiene y los cierra hasta que se eliminen o se vuelvan a fundamentar; este es un compensador con nombre, con recibo e idempotente. Este repositorio es la referencia pública; [PROTOCOL.md](PROTOCOL.md) es la forma ejecutable. Forma parte de la familia [dogfood-lab](https://github.com/dogfood-lab): métodos y ejemplos para construir en la era de la IA.
128
153
 
129
154
  Con licencia MIT.
130
155
 
package/README.fr.md CHANGED
@@ -15,16 +15,16 @@
15
15
 
16
16
  **Ancrez les décisions de conception dans des recherches citées, puis vérifiez ces citations à l’aide d’une *autre* famille de modèles avant que quoi que ce soit ne devienne un élément canonique.**
17
17
 
18
- `study-swarm` est un protocole, pas un outil. Lorsque vous prenez une décision de conception importante avec un LLM (un nouveau niveau de produit, un choix d’architecture, une question du type « devons-nous faire confiance au modèle ici »), improviser à partir de principes fondamentaux conduit à des conceptions obsolètes, et citer des articles de mémoire conduit à des conceptions qui reposent sur des sources inexistantes ou qui ne disent pas ce que vous pensez. `study-swarm` remplace les deux : il lance en parallèle des agents de recherche, exige des résultats spécifiques cités et soumet chaque citation à un **vérificateur externe d’une famille de modèles différente** avant qu’elle n’influence la conception.
18
+ `study-swarm` est un protocole, pas un outil. Lorsque vous prenez une décision de conception importante avec un LLM (un nouveau niveau de produit, un choix d’architecture, une question du type « devons-nous faire confiance au modèle ici »), improviser à partir de principes fondamentaux conduit à des conceptions obsolètes, et citer des articles de mémoire conduit à des conceptions qui reposent sur des sources inexistantes ou qui ne disent pas ce que vous pensez. `study-swarm` remplace les deux : déployez des agents de recherche parallèles, exigez des résultats spécifiques cités et soumettez chaque citation à un **vérificateur externe d’une famille de modèles différente** avant qu’elle n’influence la conception.
19
19
 
20
20
  Il applique sa propre méthode. Le protocole prescrit l’utilisation d’enveloppes protégées par un vérificateur pour les systèmes dont il facilite la conception, il l’applique donc à lui-même. **Aucun modèle ne corrige ses propres devoirs, y compris celui qui exécute le protocole.**
21
21
 
22
22
  ## Le protocole en cinq étapes
23
23
 
24
- 1. **Identifiez** 3 à 5 questions de conception essentielles dont la réponse serait modifiée par des preuves empiriques.
25
- 2. **Lancez** un agent de recherche par question, en parallèle. Chacun doit renvoyer les titres des articles + les auteurs + les années + les URL + une conclusion d’une phrase (privilégiez la spécificité à l’étendue : « 6 à 8 conclusions bien étayées sont plus efficaces que 20 observations vagues »).
24
+ 1. **Identifiez** 3 à 5 questions de conception essentielles auxquelles des preuves empiriques permettraient de modifier la réponse.
25
+ 2. **Déployez** un agent de recherche par question, en parallèle. Chacun doit renvoyer les titres d’articles + les auteurs + les années + les URL + une conclusion en une phrase (la spécificité prime sur l’étendue : « 6 à 8 conclusions bien étayées sont plus efficaces que 20 observations vagues »).
26
26
  3. **Synthétisez** les conclusions dans une section intitulée *Justification par la recherche* : `N. <conclusion>. <Auteurs> <année> (<arXiv/DOI>). <implication pour la conception>.`
27
- 4. **Vérifiez de manière externe** — une *famille de modèles différente*, sans raisonnement, vérifie chaque citation en deux étapes : un **oracle de récupération** confirme que l’article existe (jamais à partir de la mémoire du modèle), puis une **lentille d’exactitude** confirme que la conclusion correspond à la source. **Arrêtez le processus** si la citation est fabriquée ou mal attribuée ; **arrêtez et escaladez** si le vérificateur ou l’oracle de récupération n’est pas disponible (ne considérez jamais l’absence comme signifiant que les citations sont correctes).
27
+ 4. **Vérifiez de manière externe** — une *famille de modèles différente*, sans raisonnement, vérifie chaque citation en deux étapes : un **oracle de récupération** confirme que l’article existe (jamais la mémoire du modèle), puis une **lentille d’exactitude** confirme que la conclusion correspond à la source. **Arrêtez le processus** si la citation est fabriquée ou mal attribuée ; **arrêtez et escaladez** si le vérificateur ou l’oracle de récupération n’est pas disponible (ne considérez jamais l’absence comme signifiant que les citations sont correctes).
28
28
  5. **Reliez** chaque choix architectural à une conclusion en utilisant un numéro. Les citations qui n’ont pas d’implication pour la conception sont du bruit.
29
29
 
30
30
  Les détails complets et exécutables (le tableau d’arrêt, la norme de référencement, la règle d’ensemble) se trouvent dans **[PROTOCOL.md](PROTOCOL.md)**.
@@ -34,8 +34,8 @@ Les détails complets et exécutables (le tableau d’arrêt, la norme de réfé
34
34
  Parce que les modes d’échec sont documentés, et non hypothétiques :
35
35
 
36
36
  - **Les LLM ne peuvent pas vérifier de manière fiable leurs propres résultats.** Huang et al. 2023 ([arXiv:2310.01798](https://arxiv.org/abs/2310.01798)) ; Kambhampati et al. 2024 ([arXiv:2402.01817](https://arxiv.org/abs/2402.01817), LLM-Modulo) ; Stechly et al. 2024 ([arXiv:2402.08115](https://arxiv.org/abs/2402.08115)) — le vérificateur externe apporte les améliorations ; le contenu d’autocritique est inerte.
37
- - **Les juges de la même famille ont une préférence pour eux-mêmes.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — l’auto-reconnaissance est corrélée *linéairement* avec la préférence pour soi-même, de sorte qu’un aveuglement partiel n’est pas utile. Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — un groupe de juges issus de familles distinctes est moins biaisé, pour un coût environ 7 fois inférieur.
38
- - **Les citations sont les endroits où les LLM mentent.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — 55 % des citations de GPT-3.5 et 18 % des citations de GPT-4 sont fabriquées. Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — les liens résolvent plus de 94 % du temps, mais seulement 39 à 77 % du contenu cité soutiennent réellement l’affirmation. Par conséquent, l’existence doit être vérifiée par **la récupération, et non par la mémorisation**.
37
+ - **Les juges de la même famille ont une préférence pour eux-mêmes.** Panickssery, Bowman & Feng 2024 ([arXiv:2404.13076](https://arxiv.org/abs/2404.13076)) — l’auto-reconnaissance est corrélée *linéairement* avec la préférence pour soi-même, de sorte qu’un aveuglement partiel n’est pas utile. Verga et al. 2024 ([arXiv:2404.18796](https://arxiv.org/abs/2404.18796), PoLL) — un groupe de juges issus de familles différentes est moins biaisé, pour un coût environ 7 fois inférieur.
38
+ - **Les citations sont les points où les LLM mentent.** Walters & Wilder 2023 ([doi:10.1038/s41598-023-41032-5](https://doi.org/10.1038/s41598-023-41032-5)) — 55 % des citations de GPT-3.5 et 18 % des citations de GPT-4 sont fabriquées. Onweller et al. 2026 ([arXiv:2605.06635](https://arxiv.org/abs/2605.06635)) — les liens résolvent plus de 94 % du temps, mais seulement 39 à 77 % du contenu cité soutiennent réellement l’affirmation. Par conséquent, l’existence doit être vérifiée par **récupération, et non par rappel**.
39
39
  - **Masquez le raisonnement du générateur.** Khalifa et al. 2026 ([arXiv:2601.14691](https://arxiv.org/abs/2601.14691), « Gaming the Judge ») — la manipulation de la chaîne de pensée seule augmente les faux positifs d’un juge jusqu’à 90 %, les actions étant maintenues fixes. Turpin et al. 2023 ([arXiv:2305.04388](https://arxiv.org/abs/2305.04388)) — la chaîne de pensée est une rationalisation a posteriori. Le vérificateur voit uniquement l’affirmation de citation, jamais le « pourquoi je l’ai incluse ».
40
40
  - **La diversité surpasse la quantité.** Rajan 2025 ([arXiv:2511.16708](https://arxiv.org/abs/2511.16708)) — quatre vérificateurs avec une corrélation par paires ρ ∈ [0,05, 0,25] sont plus efficaces qu’un seul grâce à la couverture sous-modulaire. Kim et al. 2025 ([arXiv:2506.07962](https://arxiv.org/abs/2506.07962)) — les erreurs des LLM sont *corrélées*, de sorte que la variable essentielle est la diversité des lentilles, et non la quantité brute.
41
41
 
@@ -43,27 +43,27 @@ Parce que les modes d’échec sont documentés, et non hypothétiques :
43
43
 
44
44
  À titre de test, le protocole a été appliqué à ses propres citations. Deux familles non-Claude décorrélées — **Mistral** (`mistral-small:24b`) et **IBM Granite** (`granite4.1:30b`) — ont vérifié un ensemble de citations, sans raisonnement, en y intégrant deux pièges aveugles :
45
45
 
46
- | Piège planté | Mistral | IBM Granite | Vérité terrain |
46
+ | Piège implanté | Mistral | IBM Granite | Vérité terrain |
47
47
  |---|---|---|---|
48
48
  | Une chaîne de pensée attribuée à « Nakamura & Olsen » | non détecté | **détecté** (mal attribué → en réalité Wei et al. 2022, arXiv:2201.11903) | mal attribué |
49
49
  | un article fabriqué affirmant que « 98 % des erreurs sont éliminées, aucun oracle n’est nécessaire » | **caught** (fabricated) | **caught** (fabricated) | fabriqué |
50
50
 
51
- Aucune des deux familles n’a détecté les deux pièges individuellement, mais leur **union a permis de détecter 2/2**. Un seul juge aurait validé la mauvaise attribution. Par ailleurs, l’oracle de récupération a détecté deux *vrais* mauvaises attributions dans nos propres documents de conception (articles cités sous le nom du mauvais premier auteur) que aucun LLM paramétrique n’aurait pu signaler — et il a correctement confirmé des articles authentiques de 2026 que les deux LLM ont faussement signalés comme étant fabriqués simplement parce que les articles sont postérieurs à leur date d’entraînement. Ce dernier point est la raison pour laquelle la vérification de l’existence dans l’étape 4 **doit** être effectuée par un oracle de récupération, et non par un LLM.
51
+ Aucune des deux familles n’a détecté les deux pièges individuellement, mais leur **union a permis de détecter 2/2**. Un seul juge aurait validé la mauvaise attribution. De plus, l’oracle de récupération a détecté deux *vrais* mauvaises attributions dans nos propres documents de conception (articles cités sous le mauvais premier auteur) que aucun LLM paramétrique n’aurait pu signaler — et il a correctement confirmé des articles authentiques de 2026 que les deux LLM ont faussement signalés comme étant fabriqués simplement parce que les articles sont postérieurs à leur date d’entraînement. Ce dernier point est la raison pour laquelle la vérification de l’existence dans l’étape 4 **doit** être effectuée par un oracle de récupération, et non par un LLM.
52
52
 
53
53
  Cette seule expérience résume la thèse : **des lentilles décorrélées + un oracle de récupération pour vérifier l’existence sont plus efficaces qu’un seul juge intelligent.**
54
54
 
55
55
  ### …et encore une fois, pour concevoir la version 1.1
56
56
 
57
- Les améliorations de la version 1.1 ont été choisies de la même manière : en exécutant « study-swarm » sur « study-swarm ». Quatre questions auxquelles la première version n’avait pas répondu (« Je pense que… ») (comment *mécaniser* la vérification du fondement, faut-il effectuer le fondement au moment de la génération, comment *combiner* les différentes sources d’information, faut-il s’abstenir en cas d’incertitude calibrée) ont été soumises à des agents de recherche parallèles, et les **27 références résultantes** ont été validées à l’étape 4 avant d’influencer la conception. L’oracle de récupération a confirmé que **les 27/27 existent**, y compris six articles datant de 2025-2026 qu’un modèle paramétrique aurait faussement identifiés comme étant fabriqués, et il a corrigé cinq attributions qu’un modèle n’aurait pas pu faire, dont une véritable erreur d’attribution à un premier auteur que l’agent de recherche avait lui-même signalée. En exécutant le processus sans raisonnement préalable, les différentes sources d’information ont même reproduit leurs propres modes d’échec documentés dans notre analyse : l’une a identifié avec assurance un article réel de manière incorrecte, et leur *désaccord* a déclenché une escalade, exactement comme le prévoit la cascade. L’analyse effectuée est fournie sous forme de [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) ; les améliorations qui ont été validées (fondement décomposé/ternaire, fondement au moment de la génération, cascade validée par l’oracle et abstention calibrée) sont disponibles dans [PROTOCOL.md](PROTOCOL.md).
57
+ Les améliorations de la version 1.1 ont été choisies de la même manière : en exécutant « study-swarm » sur « study-swarm ». Quatre questions auxquelles la première version n’avait pas répondu (« Je pense que… ») (comment *automatiser* la vérification de la pertinence, faut-il effectuer cette vérification au moment de la génération, comment *combiner* les différentes sources d’information, faut-il s’abstenir en cas d’incertitude calibrée) ont été soumises à des agents de recherche parallèles, et les **27 références résultantes** ont été validées à l’étape 4 avant d’influencer la conception. L’oracle de récupération a confirmé que **27 sur 27 existent**, y compris six articles datant de 2025-2026 qu’un modèle paramétrique aurait faussement identifiés comme étant fabriqués, et il a corrigé cinq attributions qu’un modèle n’aurait pas pu faire, dont une véritable erreur d’attribution à un premier auteur que l’agent de recherche avait lui-même signalée. En exécutant le processus sans raisonnement préalable, les différentes sources d’information ont même reproduit leurs propres modes d’échec documentés dans notre analyse : l’une a identifié de manière erronée un article réel et leur *divergence* a déclenché une escalade, exactement comme le prévoit la séquence. L’analyse effectuée est fournie sous forme de [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) ; les améliorations qui ont été validées (pertinence décomposée/ternaire, validation au moment de la génération, séquence validée par l’oracle et abstention calibrée) sont disponibles dans [PROTOCOL.md](PROTOCOL.md).
58
58
 
59
59
  ## Comment cela fonctionne
60
60
 
61
- Vous pouvez exécuter le protocole manuellement : tout modèle d’une famille différente, associé à la résolution de l’identifiant arXiv/DOI, satisfait les exigences de l’étape 4. Deux outils complémentaires permettent de réaliser cette opération en une seule commande :
61
+ Vous pouvez exécuter le protocole manuellement : tout modèle d’une famille différente, associé à la résolution de l’identifiant arXiv/DOI, suffit pour l’étape 4. Deux outils complémentaires permettent de ne réaliser qu’une seule opération :
62
62
 
63
- - **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** : le vérificateur d’exécution : routage pour les modèles de familles différentes, suppression du raisonnement préalable, arbitrage multi-sources, seuil minimal déterministe pour la récupération (arXiv → Crossref) et reçus signés.
64
- - **[role-os](https://github.com/mcp-tool-shop-org/role-os)** : fournit `roleos verify-citations <dispatch>`, l’outil qui extrait les références d’une analyse et les valide à travers prism.
63
+ - **[prism-verify](https://github.com/mcp-tool-shop-org/prism-verify)** : le vérificateur d’exécution ; il effectue un routage en fonction de la famille, supprime le raisonnement, utilise une adjudication multi-sources et établit un seuil minimal déterministe pour l’existence des références (arXiv → Crossref), et fournit des reçus signés.
64
+ - **[role-os](https://github.com/mcp-tool-shop-org/role-os)** : il fournit la commande `roleos verify-citations <dispatch>`, qui extrait les références d’une analyse et les valide à l’aide de prism.
65
65
 
66
- Le transfert se fait par le biais du format de l’analyse : une conclusion rédigée sous la forme « N. **conclusion**. Auteurs, année (arXiv|DOI). implication » — avec **un seul identifiant résolvable par conclusion** — est exactement ce que `roleos verify-citations` extrait et valide. Une analyse propre (« lint-clean ») se transfère sans problème ; une référence mal formée est celle que l’outil signale comme non analysée. Ce contrat est ce que `study-swarm lint` vérifie localement, de sorte que les étapes 3 et 4 s’accordent sur la définition d’une référence.
66
+ Le transfert se fait par le biais du format de l’analyse : une conclusion rédigée sous la forme `N. **conclusion.** Auteurs année (arXiv|DOI). implication.` — avec **un identifiant résolvable par conclusion** — est exactement ce que `roleos verify-citations` extrait et valide. Une analyse propre, validée par « lint », se transfère sans problème ; une citation mal formée est ce que l’outil signale comme non analysée. Ce contrat est ce que `study-swarm lint` vérifie localement, de sorte que les étapes 3 et 4 s’accordent sur la définition d’une citation.
67
67
 
68
68
  ## Interface en ligne de commande (CLI)
69
69
 
@@ -75,11 +75,16 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
75
75
  |---|---|
76
76
  | `study-swarm protocol` | Affiche le protocole complet : les cinq étapes, la table d’arrêt et la norme de référencement. |
77
77
  | `study-swarm new <slug>` | Crée un fichier `<slug>.dispatch.md` avec le squelette des cinq étapes à compléter. |
78
- | `study-swarm lint [--json] <path…>` | Vérifie le *fondement de la recherche* d’une analyse par rapport à la norme de référencement : chaque conclusion doit comporter un auteur, une année et un identifiant résolvable (arXiv / DOI / URL) ; les affirmations du type « des études montrent que… » ne sont pas acceptées. En cas de violation, le programme se termine avec le code `1`, ce qui permet de contrôler l’intégration continue (CI). Un `<path>` peut être un fichier, un répertoire (vérifié récursivement pour les fichiers `*.dispatch.md`) ou `-` pour l’entrée standard ; l’option `--json` génère un rapport lisible par machine. |
78
+ | `study-swarm lint [--json] <path…>` | Vérifie la *pertinence de la recherche* d’une analyse par rapport à la norme de référencement : chaque conclusion doit comporter un auteur, une année et un identifiant résolvable (arXiv / DOI / URL) ; les affirmations du type « des études montrent que… » ne sont pas acceptées. En cas de violation, le programme se termine avec le code `1`, ce qui permet de contrôler l’intégration continue (CI). Un `<path>` peut être un fichier, un répertoire (validé récursivement pour les fichiers `*.dispatch.md`) ou `-` pour l’entrée standard ; l’option `--json` génère un rapport lisible par machine. |
79
+ | `study-swarm lock <dispatch> --from <orchestration.json>` | Enregistre une analyse pour la relecture : écrit le contenu de `<dispatch>.lock.json`, qui, par agent, adresse le **modèle résolu** (jamais un alias flottant), le **SHA-256 de l’invite exacte**, et le **SHA-256 du schéma d’outil** qui lui a été fourni, ainsi que le **reçu du vérificateur** de l’étape 4, dans un seul `lock_sha256`. |
80
+ | `study-swarm lock --verify <dispatch> [--from …]` | Recalcule ces hachages et vérifie qu’ils correspondent à ceux enregistrés ; en cas d’écart, le programme se termine avec le code `1`, ce qui permet de contrôler l’intégration continue (CI), comme un fichier de verrouillage des dépendances. Sans l’option `--from`, il vérifie l’intégrité du propre fichier de verrouillage. |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **Mécanisme de compensation pour annulation.** Marquer chaque élément du corpus dont la *justification* cite `<id>` comme `preuve retirée` (un fichier d’annulation `<slug>.withdrawn.json` – à marquer, ne jamais supprimer) et générer un reçu d’annulation identifié par son contenu. `--reason` ∈ `fabriqué · mal attribué · rétracté · vérificateur inversé · autre`. |
82
+ | `study-swarm requalify --check <corpus-dir>` | En cas d’erreur, interrompre le processus (quitter avec le code `1`) pour tout élément portant un indicateur `preuve retirée` non résolu – cet indicateur est comme un signal d’alarme qui **arrête** les dépendances d’une conclusion annulée jusqu’à ce qu’elle soit supprimée ou réévaluée. Intégré à CI. |
83
+ | `study-swarm requalify --resolve <dispatch> <id> --mode removed\ | regrounded [--note …]` | Supprimer l’indicateur une fois que la conclusion est supprimée (la citation a disparu) ou réévaluée (revérifiée par le processus parallèle ; `--note` enregistre l’attestation). Idempotent ; ajoute des informations au journal d’audit du fichier. |
79
84
 
80
- `lint` est déterministe il n’effectue aucun appel de modèle ce qui le rend sûr à utiliser dans l’intégration continue (CI). Il applique localement la **norme de référencement de l’étape 3** ; la vérification basée sur un modèle de l’**étape 4** est toujours effectuée par les outils complémentaires, et non par ce paquet. Voir [SECURITY.md](SECURITY.md).
85
+ `lint` est déterministe : il n’effectue aucun appel au modèle, ce qui le rend sûr pour l’intégration continue (CI). Il applique localement la **norme de référencement de l’étape 3** ; la vérification basée sur un modèle à l’**étape 4** s’appuie toujours sur [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
81
86
 
82
- Exemple d’utilisation :
87
+ Exemple de boucle typique :
83
88
 
84
89
  ```bash
85
90
  study-swarm new my-decision # creates my-decision.dispatch.md
@@ -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
- Deux analyses complètes et propres sont fournies en exemple : [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la décision centrale du protocole, concise) et [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (l’ensemble des 27 références de la version 1.1, chacune ayant été vérifiée en externe).
96
+ Quatre éléments complets et validés sont fournis en tant que références : [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la décision centrale du protocole, concise), [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (l’ensemble complet de la version 1.1 – 27 citations, chacune vérifiée en externe), [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (la conception du verrouillage de la version 1.2 – 39 citations, soumise au processus parallèle, et le premier élément à inclure son propre verrouillage), et [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md) (la conception d’annulation de la version 1.3 – 27 citations relatives à la révocation, au retrait, aux séquences d’événements et à l’invalidation de la construction, et le premier élément à être annulé puis réévalué).
92
97
 
93
98
  ### Intégration dans l’intégration continue (CI)
94
99
 
95
- `lint` prend un fichier, un répertoire (vérifié récursivement pour les fichiers `*.dispatch.md`) ou `-` pour l’entrée standard, et `--json` génère un rapport lisible par machine. Vous pouvez intégrer cela dans votre dépôt afin de valider le référencement de chaque analyse lors de chaque demande d’extraction (un exemple de copie-collage est également disponible dans [`examples/study-swarm-ci.yml`](examples/study-swarm-ci.yml)) :
100
+ `lint` prend un fichier, un répertoire (validé récursivement pour les fichiers `*.dispatch.md`) ou `-` pour l’entrée standard, et `--json` génère un rapport lisible par machine. Intégrez ceci dans votre dépôt afin de contrôler le référencement de chaque analyse à chaque demande d’extraction (un exemple que vous pouvez copier-coller est également disponible dans [`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
- ## Pourquoi cela fonctionne, en résumé
122
+ ### Enregistre une analyse pour la relecture (`dispatch.lock.json`)
118
123
 
119
- **Actuel** : le domaine évolue rapidement ; exiger des études spécifiques avec les années correspondantes évite que les conceptions ne soient mises en œuvre avec 18 mois de retard. **Fonctionnel** : les données montrent ce qui *échoue*, et pas seulement ce qui fonctionne (les explications peuvent entraîner une dépendance excessive à l’égard d’une IA *incorrecte* Bansal et al., 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Sûr** : lenveloppe protégée par le vérificateur est l’architecture que les données étayent, et le protocole l’applique à sa propre sortie. Le référencement n’est pas un exercice académique ; c’est la preuve.
124
+ Une analyse validée et vérifiée n’est auditable que si vous pouvez indiquer *ce qui l’a produite*. `study-swarm lock` écrit un fichier de verrouillage associé qui, par agent de recherche, adresse le **modèle résolu** (jamais un alias flottant), le **SHA-256 de l’invite exacte**, et le **SHA-256 du schéma d’outil** qui lui a été fourni, ainsi que le **reçu du vérificateur externe** dans un seul `lock_sha256`. `study-swarm lock --verify` recalcule ces hachages et échoue si l’un d’eux diffère, de sorte qu’une invite modifiée, un modèle remplacé ou une surface d’outil décalée sont détectés : la norme de reproductibilité [PIN_PER_STEP](https://github.com/dogfood-lab/study-swarm), rendue exécutable. Lensemble des outils émet le rapport ; l’interface en ligne de commande reste sans dépendance et sans connexion réseau, se contentant de normaliser (RFC 8785), de hacher et de valider les données.
125
+
126
+ **Il fixe les entrées, pas les sorties.** Le fait de fixer le modèle + l’invite + la température ne permet *pas* d’obtenir une sortie d’un LLM qui soit exactement identique à chaque fois — l’invariance par lots, la non-associativité des nombres à virgule flottante, le routage du mélange d’experts et la dérive silencieuse du fournisseur sont autant de facteurs qui échappent au contrôle d’un outil hors ligne. Ainsi, le verrouillage vous donne des **entrées reproductibles et des sorties dont la dérive peut être détectée**, mais jamais une « reproduction déterministe ». La conception est basée sur des données probantes, citation par citation, dans [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) — le premier outil à intégrer son propre verrouillage ([`examples/study-swarm-lock.lock.json`](examples/study-swarm-lock.lock.json)).
127
+
128
+ ### Annuler une conclusion retirée (`withdraw` / `requalify`)
129
+
130
+ Une conclusion vérifiée devient **canonique** – elle influence une décision ultérieure. Alors, que se passe-t-il lorsqu’elle est ensuite **retirée** (une citation s’avère être fabriquée ou mal attribuée lors d’une nouvelle exécution, un article cité est rétracté, ou le processus de validation l’invalide) ? Un `git revert` ne suffit pas, car la conclusion a déjà été diffusée. Le mécanisme de compensation pour annulation rend possible cette opération :
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` **échoue** jusqu’à ce que chaque conclusion marquée soit supprimée ou **réévaluée** (revérifiée par le processus parallèle – l’interface en ligne de commande enregistre l’attestation, mais ne la revérifie pas elle-même). Le retrait est mis en évidence de manière **contrastive**, et non silencieuse. Tout – le fichier d’annulation et le reçu – est identifié par son contenu et permet de détecter les dérives, et opère uniquement sur la couche des *preuves* : `lock --verify` n’est pas affecté par un retrait. La conception est basée sur [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md), et le [PROTOCOL.md](PROTOCOL.md) § « Compenser une conclusion retirée » représente la forme exécutable. Il s’agit de la norme **NAMED_COMPENSATORS** rendue exécutable : une annulation nommée et idempotente qui laisse un état final connu et génère un reçu.
141
+
142
+ ## Pourquoi cela fonctionne, en un clin d’œil
143
+
144
+ **Efficacité** — le domaine évolue rapidement ; exiger des études spécifiques sur plusieurs années empêcherait la publication de nouvelles versions 18 mois plus tard. **Fonctionnalité** — les données probantes montrent ce qui *ne fonctionne pas*, et pas seulement ce qui fonctionne (les explications peuvent entraîner une dépendance excessive à l’égard d’une IA *erronée* — Bansal et al., 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Sécurité** — l’enveloppe protégée par le vérificateur est l’architecture que les données probantes soutiennent, et le protocole l’applique à sa propre sortie. La recherche de sources n’est pas un exercice académique ; il s’agit du fil conducteur des données probantes.
120
145
 
121
146
  ## Sécurité
122
147
 
123
- `study-swarm` fournit une **CLI légère et sans dépendances** (`study-swarm`) ainsi que la méthodologie. Il n’effectue **aucun appel réseau ou de modèle** et ne collecte **aucune télémétrie** ; il n’y a pas de secrets ni d’identifiants dans le code source. Lors de l’exécution, il lit uniquement le fichier que vous transmettez à `lint` et écrit un seul fichier `<slug>.dispatch.md` dans le répertoire actuel pour `new` (il refuse d’écraser les fichiers existants et n’écrira jamais en dehors du répertoire de travail). La vérification basée sur un modèle décrite dans la méthodologie (étape 4) est effectuée par les outils complémentaires, et non par ce paquet. Voir [SECURITY.md](SECURITY.md).
148
+ `study-swarm` fournit une **CLI légère et sans dépendances** (`study-swarm`) en plus de la méthodologie. Il n’effectue **aucune requête réseau ou vers le modèle** et ne collecte **aucune télémétrie** ; il n’y a pas de secrets ni d’identifiants dans le code source. Au moment de l’exécution, il lit uniquement le fichier que vous transmettez à `lint` et écrit un seul fichier `<slug>.dispatch.md` dans le répertoire courant pour `new` (il refuse d’écraser les fichiers et ne fonctionne jamais en dehors du répertoire de travail). La vérification basée sur le modèle décrite par la méthodologie (étape 4) est effectuée par les outils associés, et non par ce paquet. Voir [SECURITY.md](SECURITY.md).
124
149
 
125
150
  ## État actuel
126
151
 
127
- Un protocole fonctionnel, vérifié en externe par ses propres mécanismes : un modèle d’une famille différente vérifie ses références (voir la preuve ci-dessus). La **version 1.1** affine le vérificateur là où la première version était silencieuse : fondement décomposé/ternaire, fondement au moment de la génération, cascade validée par l’oracle pour combiner les sources d’information et abstention calibrée chacun étant basé sur l’analyse vérifiée de la version 1.1. Ce dépôt est la référence publique ; [PROTOCOL.md](PROTOCOL.md) est la forme exécutable. Il fait partie de la famille [dogfood-lab](https://github.com/dogfood-lab) : méthodes et exemples pour construire dans l’ère de l’IA.
152
+ Un protocole fonctionnel, vérifié en externe par ses propres mécanismes une famille de modèles différente vérifie ses citations (voir la preuve ci-dessus). La **version 1.1** améliore le processus de validation là où la première version était silencieuse : justification décomposée/ternaire, justification au moment de la génération, cascade à activation par un oracle pour combiner les perspectives et abstention calibrée chaque élément est basé sur la conclusion vérifiée de la version 1.1. La **version 1.2** rend un élément rejouable en boucle : `study-swarm lock` fixe le modèle résolu, l’invite et le schéma d’outils pour chaque étape, ainsi que le reçu du processus de validation, et `lock --verify` échoue en cas de dérive. La **version 1.3** rend l’annulation exécutable : lorsqu’une conclusion qui est déjà devenue canonique est retirée, `study-swarm withdraw` marque toutes les dépendances et `requalify --check` les interrompt et provoque leur échec jusqu’à ce qu’elles soient supprimées ou réévaluées – une compensation nommée, avec reçu et idempotente. Ce dépôt constitue la référence publique ; [PROTOCOL.md](PROTOCOL.md) représente la forme exécutable. Il fait partie de la famille [dogfood-lab](https://github.com/dogfood-lab) méthodes et exemples pour construire des systèmes à l’ère de l’IA.
128
153
 
129
154
  Licence MIT.
130
155
 
package/README.hi.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` | पूरे प्रोटोकॉल को प्रिंट करें - पांच चरण, रोक तालिका, सोर्सिंग मानक। |
77
77
  | `study-swarm new <slug>` | पांच-चरणीय ढांचे के साथ `<slug>.dispatch.md` बनाएं ताकि इसे भरा जा सके। |
78
78
  | `study-swarm lint [--json] <path…>` | एक प्रेषण की *अनुसंधान आधार* की जांच सोर्सिंग मानक के विरुद्ध करें - प्रत्येक निष्कर्ष में एक लेखक, एक वर्ष और एक हल करने योग्य पहचानकर्ता (arXiv / DOI / URL) होना चाहिए; "अध्ययनों से पता चलता है..." जैसे अस्पष्ट कथन अस्वीकार कर दिए जाते हैं। उल्लंघन होने पर `1` से बाहर निकलें, इसलिए यह CI को संसाधित करता है। `<path>` एक फ़ाइल, एक निर्देशिका (जो `*.dispatch.md` के लिए पुनरावर्ती रूप से जांच की जाती है), या `-` stdin के लिए हो सकता है; `--json` मशीन-पठनीय रिपोर्ट उत्सर्जित करता है। |
79
+ | `study-swarm lock <dispatch> --from <orchestration.json>` | किसी प्रेषण को फिर से चलाने के लिए पिन करें – `<dispatch>.lock.json` सामग्री-आधारित, चरण-2 एजेंट के अनुसार लिखें, **समाधान मॉडल आईडी** + **बाइट-सटीक प्रॉम्प्ट का SHA-256** + **टूल स्कीमा का SHA-256**, साथ ही चरण-4 **सत्यापन रसीद**, एक `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` ∈ `गढ़ा हुआ · गलत तरीके से श्रेय दिया गया · वापस लिया गया · सत्यापनकर्ता-उलट गया · अन्य`। |
82
+ | `study-swarm requalify --check <corpus-dir>` | किसी भी ऐसे प्रेषण के लिए विफल बंद (निकास `1`) जिसमें एक अनसुलझा `सबूत-वापस लिया गया` ध्वज हो — वह उपकरण जो किसी वापस लिए गए निष्कर्ष की निर्भरताओं को तब तक रोकता है जब तक कि उसे हटाया या पुन: स्थापित नहीं किया जाता। गेट्स सीआई। |
83
+ | `study-swarm requalify --resolve <dispatch> <id> --mode removed\ | regrounded [--note …]` | एक बार जब निष्कर्ष हटा दिया जाता है (उद्धरण गायब हो जाता है) या पुन: स्थापित किया जाता है, तो एक ध्वज साफ़ करें (भाई रनर द्वारा पुन: सत्यापित स्वच्छ; `--note` सत्यापन को रिकॉर्ड करता है)। आइडेंपोटेंट; साइडकार के ऑडिट ट्रेल में जोड़ता है। |
79
84
 
80
85
  `lint` नियतात्मक है - शून्य मॉडल कॉल - इसलिए यह CI में सुरक्षित है। यह स्थानीय रूप से **चरण 3 के सोर्सिंग मानक** को लागू करता है; मॉडल-आधारित **चरण 4** सत्यापन अभी भी [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → प्रिज्म पर निर्भर करता है।
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
- दो पूर्ण, लिंट-स्वच्छ प्रेषण संदर्भ के रूप में भेजे जाते हैं: [`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
+ चार पूर्ण, लिंट-स्वच्छ प्रेषण संदर्भों के रूप में भेजे जाते हैं: [`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
98
  ### इसे CI में संसाधित करें
94
99
 
@@ -114,6 +119,26 @@ jobs:
114
119
  - run: npx @dogfood-lab/study-swarm@latest lint dispatches/
115
120
  ```
116
121
 
122
+ ### किसी प्रेषण को फिर से चलाने के लिए पिन करें (`dispatch.lock.json`)
123
+
124
+ एक सत्यापित प्रेषण केवल तभी ऑडिट करने योग्य होता है जब आप बता सकें कि *इसे क्या उत्पन्न किया*। `study-swarm lock` एक सहायक लॉकफ़ाइल लिखता है जो सामग्री-आधारित है, अनुसंधान एजेंट के अनुसार, **समाधान मॉडल आईडी** (कभी भी अस्थायी उपनाम नहीं), **बाइट-सटीक प्रॉम्प्ट का SHA-256**, और **टूल स्कीमा का SHA-256** जिसे दिया गया था, साथ ही बाहरी **सत्यापन रसीद** – एक `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` **विफल बंद** होता है जब तक कि प्रत्येक चिह्नित निष्कर्ष को हटाया या **पुन: स्थापित** नहीं किया जाता (भाई रनर द्वारा पुन: सत्यापित स्वच्छ — सीएलआई सत्यापन रिकॉर्ड करता है, यह स्वयं से पुन: सत्यापित नहीं करता)। वापसी को **तुलनात्मक रूप से** प्रस्तुत किया जाता है, कभी भी चुपचाप नहीं। सब कुछ — मकबरे और रसीद — सामग्री-आधारित और विचलन-पता लगाने योग्य है, और केवल *सबूत* परत पर संचालित होता है: `lock --verify` एक वापसी से अप्रभावित रहता है। डिज़ाइन [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md) में निहित है, और [PROTOCOL.md](PROTOCOL.md) §"एक वापस लिए गए निष्कर्ष की क्षतिपूर्ति" निष्पादन योग्य आकार है। यह **NAMED_COMPENSATORS** मानक है जिसे निष्पादन योग्य बनाया गया है: एक नामित, आइडेंपोटेंट पूर्ववत जो एक ज्ञात पोस्ट-स्थिति और एक रसीद छोड़ता है।
141
+
117
142
  ## यह कैसे काम करता है, एक सांस में
118
143
 
119
144
  **वर्तमान** - क्षेत्र तेजी से आगे बढ़ रहा है; विशिष्ट अध्ययनों के साथ वर्षों की मांग करने से डिज़ाइन 18 महीने पीछे नहीं रहते हैं। **कार्यात्मक** - साक्ष्य दिखाते हैं कि क्या *असफल* होता है, न कि केवल यह कि क्या काम करता है (व्याख्याएँ *गलत* AI पर अत्यधिक निर्भरता बढ़ा सकती हैं - बंसल एट अल. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779))। **सुरक्षित** - सत्यापनकर्ता-संरक्षित आवरण वह आर्किटेक्चर है जिसे साक्ष्य समर्थन देता है, और प्रोटोकॉल इसे अपने स्वयं के आउटपुट पर लागू करता है। सोर्सिंग अकादमिक नाटक नहीं है; यह साक्ष्य श्रृंखला है।
@@ -124,7 +149,7 @@ jobs:
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) परिवार का हिस्सा एआई युग में निर्माण के लिए विधियाँ और प्रदर्शन।
128
153
 
129
154
  MIT लाइसेंस प्राप्त।
130
155