@dogfood-lab/study-swarm 1.2.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,26 @@
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
+
5
25
  ## [1.2.0] — 2026-06-30
6
26
 
7
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.
package/PROTOCOL.md CHANGED
@@ -147,3 +147,15 @@ Designs that touch model-facing behavior default to this shape unless evidence j
147
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
148
 
149
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
@@ -78,6 +78,9 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
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
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
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. |
81
84
 
82
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.
83
86
 
@@ -90,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
90
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
91
94
  ```
92
95
 
93
- Tres envíos completos y revisados se publican como referencias: [`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) y [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (el diseño del 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).
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).
94
97
 
95
98
  ### Valídalo en la integración continua
96
99
 
@@ -122,6 +125,20 @@ Un envío verificado y con base sólida solo es auditable si se puede indicar *q
122
125
 
123
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)).
124
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
+
125
142
  ## Por qué funciona, en pocas palabras
126
143
 
127
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.
@@ -132,7 +149,7 @@ Un envío verificado y con base sólida solo es auditable si se puede indicar *q
132
149
 
133
150
  ## Estado
134
151
 
135
- Un protocolo funcional, verificado externamente por su propia maquinaria: una familia de modelos diferente verifica sus citas (vea la prueba anterior). **v1.1** mejora el verificador donde la primera versión era silenciosa: solidez descompuesta/ternaria, fundamentación en el momento de la generación, una cascada controlada por un oráculo para combinar lentes y abstención calibrada; todo ello se basa en el envío v1.1 verificado. **v1.2** hace que un envío sea reproducible a nivel de bytes: `study-swarm lock` fija el modelo resuelto, el mensaje y el esquema de la herramienta por paso, además del comprobante del verificador, y `lock --verify` falla si detecta alguna desviación. 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.
136
153
 
137
154
  Con licencia MIT.
138
155
 
package/README.fr.md CHANGED
@@ -78,6 +78,9 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
78
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
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
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. |
81
84
 
82
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.
83
86
 
@@ -90,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
90
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
91
94
  ```
92
95
 
93
- Trois analyses complètes et validées par « lint » sont fournies à titre d’exemple : [`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’analyse complète de la version 1.1 : 27 références, chacune d’entre elles ayant été validée en externe) et [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (la conception du verrouillage de la version 1.2 : 39 références, validées par l’outil, et la première analyse à inclure son propre fichier de verrouillage).
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é).
94
97
 
95
98
  ### Intégration dans l’intégration continue (CI)
96
99
 
@@ -122,6 +125,20 @@ Une analyse validée et vérifiée n’est auditable que si vous pouvez indiquer
122
125
 
123
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)).
124
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
+
125
142
  ## Pourquoi cela fonctionne, en un clin d’œil
126
143
 
127
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.
@@ -132,7 +149,7 @@ Une analyse validée et vérifiée n’est auditable que si vous pouvez indiquer
132
149
 
133
150
  ## État actuel
134
151
 
135
- Un protocole fonctionnel, vérifié de manière 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** affine le vérificateur là où la première version était silencieuse : fondement décomposé/ternaire, ancrage au moment de la génération, cascade contrôlée par un oracle pour combiner les objectifs et abstention calibrée chacun étant basé sur les données probantes de la version 1.1 vérifiée. La **version 1.2** rend une sortie reproductible : `study-swarm lock` fixe le modèle résolu, l’invite et le schéma d’outil pour chaque étape, ainsi que le reçu du vérificateur, et `lock --verify` échoue en cas de dérive. Ce dépôt est la référence publique ; [PROTOCOL.md](PROTOCOL.md) est la forme exécutable. 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.
136
153
 
137
154
  Licence MIT.
138
155
 
package/README.hi.md CHANGED
@@ -78,6 +78,9 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
78
78
  | `study-swarm lint [--json] <path…>` | एक प्रेषण की *अनुसंधान आधार* की जांच सोर्सिंग मानक के विरुद्ध करें - प्रत्येक निष्कर्ष में एक लेखक, एक वर्ष और एक हल करने योग्य पहचानकर्ता (arXiv / DOI / URL) होना चाहिए; "अध्ययनों से पता चलता है..." जैसे अस्पष्ट कथन अस्वीकार कर दिए जाते हैं। उल्लंघन होने पर `1` से बाहर निकलें, इसलिए यह CI को संसाधित करता है। `<path>` एक फ़ाइल, एक निर्देशिका (जो `*.dispatch.md` के लिए पुनरावर्ती रूप से जांच की जाती है), या `-` stdin के लिए हो सकता है; `--json` मशीन-पठनीय रिपोर्ट उत्सर्जित करता है। |
79
79
  | `study-swarm lock <dispatch> --from <orchestration.json>` | किसी प्रेषण को फिर से चलाने के लिए पिन करें – `<dispatch>.lock.json` सामग्री-आधारित, चरण-2 एजेंट के अनुसार लिखें, **समाधान मॉडल आईडी** + **बाइट-सटीक प्रॉम्प्ट का SHA-256** + **टूल स्कीमा का SHA-256**, साथ ही चरण-4 **सत्यापन रसीद**, एक `lock_sha256` में समेकित करें। |
80
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` सत्यापन को रिकॉर्ड करता है)। आइडेंपोटेंट; साइडकार के ऑडिट ट्रेल में जोड़ता है। |
81
84
 
82
85
  `lint` नियतात्मक है - शून्य मॉडल कॉल - इसलिए यह CI में सुरक्षित है। यह स्थानीय रूप से **चरण 3 के सोर्सिंग मानक** को लागू करता है; मॉडल-आधारित **चरण 4** सत्यापन अभी भी [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → प्रिज्म पर निर्भर करता है।
83
86
 
@@ -90,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
90
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
91
94
  ```
92
95
 
93
- तीन पूर्ण, त्रुटि-मुक्त प्रेषण संदर्भों के रूप में भेजे जाते हैं: [`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 उद्धरण, रनर के माध्यम से नियंत्रित, और पहला प्रेषण जो अपना स्वयं का लॉक भेजता है)।
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 उद्धरण, और पहला प्रेषण जिसे वापस लिया गया है और फिर से योग्य बनाया गया)
94
97
 
95
98
  ### इसे CI में संसाधित करें
96
99
 
@@ -122,6 +125,20 @@ jobs:
122
125
 
123
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))।
124
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
+
125
142
  ## यह कैसे काम करता है, एक सांस में
126
143
 
127
144
  **वर्तमान** - क्षेत्र तेजी से आगे बढ़ रहा है; विशिष्ट अध्ययनों के साथ वर्षों की मांग करने से डिज़ाइन 18 महीने पीछे नहीं रहते हैं। **कार्यात्मक** - साक्ष्य दिखाते हैं कि क्या *असफल* होता है, न कि केवल यह कि क्या काम करता है (व्याख्याएँ *गलत* AI पर अत्यधिक निर्भरता बढ़ा सकती हैं - बंसल एट अल. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779))। **सुरक्षित** - सत्यापनकर्ता-संरक्षित आवरण वह आर्किटेक्चर है जिसे साक्ष्य समर्थन देता है, और प्रोटोकॉल इसे अपने स्वयं के आउटपुट पर लागू करता है। सोर्सिंग अकादमिक नाटक नहीं है; यह साक्ष्य श्रृंखला है।
@@ -132,7 +149,7 @@ jobs:
132
149
 
133
150
  ## स्थिति
134
151
 
135
- एक कार्यशील प्रोटोकॉल, जिसकी अपनी मशीनरी द्वारा बाहरी रूप से पुष्टि की जाती है – एक अलग मॉडल परिवार इसके उद्धरणों की जांच करता है (ऊपर प्रमाण देखें)। **v1.1** सत्यापनकर्ता को तेज करता है जहाँ पहला संस्करण मौन था: विघटित/त्रिक आधार, पीढ़ी-समय आधार, लेंस को संयोजित करने के लिए एक ओरेकल-गेटेड कैस्केड और अंशांकित परित्याग प्रत्येक सत्यापित v1.1 प्रेषण में आधारित। **v1.2** एक प्रेषण को बाइट-पुन: चलाने योग्य बनाता है: `study-swarm lock` चरण दर चरण समाधान मॉडल, प्रॉम्प्ट और टूल स्कीमा को पिन करता है, साथ ही सत्यापनकर्ता रसीद भी, और `lock --verify` विचलन पर विफल हो जाता है। यह रिपॉजिटरी सार्वजनिक संदर्भ है; [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) परिवार का हिस्सा एआई युग में निर्माण के लिए विधियाँ और प्रदर्शन।
136
153
 
137
154
  MIT लाइसेंस प्राप्त।
138
155
 
package/README.it.md CHANGED
@@ -78,6 +78,9 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
78
78
  | `study-swarm lint [--json] <path…>` | Verifica la *fondatezza della ricerca* di un sistema rispetto allo standard di riferimento: ogni risultato deve avere un autore, un anno e un identificatore risolvibile (arXiv / DOI / URL); le affermazioni generiche del tipo "gli studi dimostrano..." vengono rifiutate. In caso di violazioni, il programma termina con codice `1`, in modo da bloccare l'integrazione continua (CI). Un `<path>` può essere un file, una directory (analizzata ricorsivamente per i file `*.dispatch.md`) o `-` per l'input standard; `--json` emette un report leggibile dalla macchina. |
79
79
  | `study-swarm lock <dispatch> --from <orchestration.json>` | Blocca un sistema per la riproduzione: scrive il contenuto di `<dispatch>.lock.json`, che, per ogni agente del passaggio 2, include l'**ID del modello risolto**, l'**SHA-256 del prompt esatto in byte** e l'**SHA-256 dello schema dello strumento**, oltre alla **ricevuta del verificatore** del passaggio 4, tutto racchiuso in un unico `lock_sha256`. |
80
80
  | `study-swarm lock --verify <dispatch> [--from …]` | Ricalcola questi hash e verifica che corrispondano al blocco; qualsiasi discrepanza fa terminare il programma con codice `1`, in modo da bloccare l'integrazione continua (CI) come farebbe un file di blocco dei pacchetti. Senza `--from`, controlla l'integrità del blocco stesso. |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **Meccanismo di compensazione per il rollback canonico.** Segnala ogni elemento nel corpus la cui *base di ricerca* cita `<id>` come `evidenza ritirata` (un file "tombstone" associato `<slug>.withdrawn.json" — segnala, non eliminare mai) ed emette una ricevuta di ritiro basata sul contenuto. `--reason` ∈ `fabbricato · attribuito erroneamente · ritrattato · verificatore modificato · altro`. |
82
+ | `study-swarm requalify --check <corpus-dir>` | In caso di errore, interrompe l'esecuzione (esce con codice `1`) per qualsiasi elemento che contenga un flag `evidenza ritirata` non risolto: questo è il segnale che **interrompe** le dipendenze di una scoperta ritirata fino a quando non viene rimossa o rielaborata. Attiva il CI. |
83
+ | `study-swarm requalify --resolve <dispatch> <id> --mode removed\ | regrounded [--note …]` | Cancella un flag una volta che la scoperta è stata rimossa (la citazione non è più presente) o rielaborata (riverificata e convalidata dal processo parallelo; `--note` registra l'attestazione). È idempotente; aggiunge al registro di controllo del file associato. |
81
84
 
82
85
  `lint` è deterministico: non effettua chiamate al modello, quindi è sicuro da utilizzare nell'integrazione continua (CI). Applica **lo standard di riferimento del passaggio 3** a livello locale; la verifica basata sul modello del **passaggio 4** si basa ancora su [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
83
86
 
@@ -90,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
90
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
91
94
  ```
92
95
 
93
- Tre sistemi completi e "puliti" secondo i criteri di linting vengono forniti come riferimento: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la decisione centrale del protocollo, in forma compatta), [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (l'intero passaggio di progettazione della versione 1.1: 27 citazioni, tutte verificate esternamente) e [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (il progetto del blocco della versione 1.2: 39 citazioni, verificate tramite lo strumento, ed è il primo sistema a fornire il proprio file di blocco).
96
+ Quattro elementi completi, puliti e funzionanti vengono pubblicati come riferimento: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (la decisione centrale del protocollo, in forma compatta), [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (il design completo della versione 1.1 27 citazioni, tutte verificate esternamente), [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (il design del blocco della versione 1.2 39 citazioni, gestito tramite il processo parallelo e il primo elemento a pubblicare il proprio blocco) e [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md) (il design del rollback canonico della versione 1.3 — 27 citazioni relative alla revoca, al ritiro, alle sequenze di eventi e all'invalidazione della build, ed è il primo elemento ad essere ritirato e quindi riqualificato).
94
97
 
95
98
  ### Bloccalo nell'integrazione continua (CI)
96
99
 
@@ -122,6 +125,20 @@ Un sistema fondato e verificato è auditabile solo se si può dire *cosa lo ha p
122
125
 
123
126
  **Blocca gli input, non gli output.** Bloccare il modello + prompt + temperatura *non* rende l'output di un LLM identico bit per bit: l'invarianza del batch, la non associatività dei numeri in virgola mobile, il routing a esperti multipli e la deriva silenziosa del provider sono tutti elementi al di fuori del controllo di uno strumento offline. Pertanto, il blocco fornisce **input riproducibili e output con rilevamento della deriva**, mai una "riproduzione deterministica". Il progetto è basato su evidenze, citazione per citazione, in [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) — la prima implementazione che include il proprio blocco ([`examples/study-swarm-lock.lock.json`](examples/study-swarm-lock.lock.json)).
124
127
 
128
+ ### Esegue il rollback di una scoperta ritirata (`withdraw` / `requalify`)
129
+
130
+ Una scoperta verificata diventa **canonica**: fornisce informazioni per una decisione successiva. Quindi, cosa succede quando viene successivamente **ritirata** (una citazione si rivela fabbricata o attribuita erroneamente durante una nuova esecuzione, un documento citato viene ritrattato o il meccanismo di controllo la modifica)? Un `git revert` non è sufficiente, perché la scoperta è già stata propagata. Il meccanismo di compensazione per il rollback canonico rende possibile l'esecuzione della correzione:
131
+
132
+ ```bash
133
+ study-swarm withdraw arXiv:2402.15089 --reason misattributed --from dispatches/ --receipt rollback.json
134
+ # → flags every dispatch citing it `evidence-withdrawn` (a tombstone sidecar — flag, never delete)
135
+ # and writes a content-addressed withdrawal receipt naming every dependent.
136
+ study-swarm requalify --check dispatches/ # exit 1 while any flag is unresolved — the andon HALT
137
+ study-swarm requalify --resolve d.dispatch.md arXiv:2402.15089 --mode removed # or: --mode regrounded --note "<attestation>"
138
+ ```
139
+
140
+ `requalify --check` **interrompe l'esecuzione** fino a quando ogni scoperta contrassegnata non viene rimossa o **rielaborata** (riverificata e convalidata dal processo parallelo; la CLI registra l'attestazione, ma non esegue essa stessa una nuova verifica). Il ritiro viene evidenziato in modo **contraddittorio**, mai come un semplice annullamento silenzioso. Tutto — il file "tombstone" e la ricevuta — è basato sul contenuto ed è rilevabile nel tempo, e opera solo sullo strato di *evidenza*: `lock --verify` non viene influenzato da un ritiro. Il design si basa su [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md), e il [PROTOCOL.md](PROTOCOL.md) §"Compensating a withdrawn finding" rappresenta la forma eseguibile. Questo è lo standard **NAMED_COMPENSATORS** reso eseguibile: un'operazione di annullamento denominata e idempotente che lascia uno stato post-operazione noto e una ricevuta.
141
+
125
142
  ## Perché funziona, in sintesi:
126
143
 
127
144
  **Attuale:** il settore è in rapida evoluzione; richiedere studi specifici che durino anni impedisce di rilasciare i progetti con 18 mesi di ritardo. **Funzionale:** le evidenze mostrano cosa *fallisce*, non solo cosa funziona (le spiegazioni possono aumentare l'eccessiva dipendenza da un'IA *errata* — Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Sicuro:** l'ambito protetto dal verificatore è l'architettura supportata dalle evidenze e il protocollo la applica ai propri output. L'analisi delle fonti non è un esercizio accademico; è la traccia delle evidenze.
@@ -132,7 +149,7 @@ Un sistema fondato e verificato è auditabile solo se si può dire *cosa lo ha p
132
149
 
133
150
  ## Stato
134
151
 
135
- Un protocollo funzionante, verificato esternamente dai propri meccanismi: una famiglia di modelli diversa verifica le sue citazioni (vedere la prova sopra). **v1.1** affina il verificatore rispetto alla prima versione, che era silenziosa: base dati scomposta/ternaria, ancoraggio al momento della generazione, una cascata controllata da un oracolo per combinare le "lenti" e astensione calibrata — ciascuno basato sulle evidenze verificate di v1.1. **v1.2** rende un output riproducibile byte per byte: `study-swarm lock` blocca il modello, il prompt e lo schema dello strumento risolti per ogni passaggio più la ricevuta del verificatore, e `lock --verify` fallisce in caso di deriva. Questo repository è il riferimento pubblico; [PROTOCOL.md](PROTOCOL.md) è la forma eseguibile. Parte della famiglia [dogfood-lab](https://github.com/dogfood-lab): metodi ed esempi per lo sviluppo nell'era dell'IA.
152
+ Un protocollo funzionante, verificato esternamente dai propri meccanismi: una famiglia diversa di modelli verifica le sue citazioni (vedere la prova sopra). La **versione 1.1** affina il verificatore rispetto alla prima versione, che era silenziosa: base di ricerca scomposta/ternaria, base di ricerca al momento della generazione, cascata controllata da un oracolo per combinare le diverse prospettive e astensione calibrata — ciascuna basata sulla scoperta verificata della versione 1.1. La **versione 1.2** rende un elemento riproducibile: `study-swarm lock` fissa il modello, il prompt e lo schema degli strumenti risolti per ogni passaggio, oltre alla ricevuta del verificatore, e `lock --verify` interrompe l'esecuzione in caso di modifiche. La **versione 1.3** rende eseguibile il rollback: quando una scoperta che è già diventata canonica viene ritirata, `study-swarm withdraw` contrassegna tutte le dipendenze e `requalify --check` le interrompe, bloccandole fino a quando non vengono rimosse o rielaborate — un meccanismo di compensazione denominato, con ricevuta e idempotente. Questo repository è il riferimento pubblico; [PROTOCOL.md](PROTOCOL.md) rappresenta la forma eseguibile. Fa parte della famiglia [dogfood-lab](https://github.com/dogfood-lab): metodi ed esempi per lo sviluppo nell'era dell'IA.
136
153
 
137
154
  Con licenza MIT.
138
155
 
package/README.ja.md CHANGED
@@ -78,6 +78,9 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
78
78
  | `study-swarm lint [--json] <path…>` | ディスパッチの*研究根拠*をソース標準と比較してチェックします。すべての発見には、著者、年、および解決可能な識別子(arXiv / DOI / URL)が必要です。「研究によると…」という曖昧な表現は拒否されます。違反があった場合、終了コード`1`を返し、CIでゲートとして機能します。`<path>`はファイル、ディレクトリ(`.dispatch.md`ファイルを再帰的にlint)、または`-`(標準入力)のいずれかになります。`--json`オプションを使用すると、機械可読形式のレポートが出力されます。 |
79
79
  | `study-swarm lock <dispatch> --from <orchestration.json>` | ディスパッチをリプレイ用に固定します。`<dispatch>.lock.json`ファイルに、ステップ2のエージェントごとに、**解決されたモデルID** + **正確なバイト単位のプロンプトのSHA-256ハッシュ** + **ツールスキーマのSHA-256ハッシュ**、およびステップ4の**検証レシート**をまとめて書き込みます。これらを1つの`lock_sha256`にまとめます。 |
80
80
  | `study-swarm lock --verify <dispatch> [--from …]` | これらのハッシュを再計算し、ロックファイルと一致することを確認します。いずれかのハッシュが異なる場合、終了コード`1`を返し、CIでゲートとして機能します(パッケージのロックファイルと同様)。`--from`オプションがない場合は、ロックファイルの整合性をチェックします。 |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **正準ロールバック補償機能。** コーパス内のすべてのディスパッチについて、*調査根拠*が`<id>`を`証拠の撤回`として引用している場合にフラグを設定します(墓石サイドカー`<slug>.withdrawn.json`—フラグを設定し、削除は行わない)。また、コンテンツアドレス指定された撤回レシートを出力します。`--reason` ∈ `fabricated · misattributed · retracted · verifier-flipped · other`。 |
82
+ | `study-swarm requalify --check <corpus-dir>` | 未解決の`証拠の撤回`フラグを持つすべてのディスパッチに対して、処理を停止(終了コード`1`で終了)します。これは、撤回された調査結果に依存する要素が削除または再検証されるまで、その処理を一時停止させるための仕組みです。CIゲートとして機能します。 |
83
+ | `study-swarm requalify --resolve <dispatch> <id> --mode removed\ | regrounded [--note …]` | 調査結果が削除されたとき(引用がなくなったとき)または再検証されたときに、フラグをクリアします(兄弟ランナーによって再検証され、問題がないことが確認されます。`--note`にはその証拠が記録されます)。べき等性があり、サイドカーの監査ログに追加されます。 |
81
84
 
82
85
  `lint`は決定論的であり、モデル呼び出しはゼロであるため、CIでの使用に安全です。ローカルで**ステップ3のソース標準**を適用し、モデルベースの**ステップ4**検証は引き続き[`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prismに委ねます。
83
86
 
@@ -90,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
90
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
91
94
  ```
92
95
 
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件の引用があり、実行環境を通じて管理され、独自のロックを実装した最初のドキュメント)。
96
+ 4つの完全で、lintチェックに合格したディスパッチをリファレンスとして公開します:[`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md)(プロトコルの中心的な決定事項、コンパクト)、[`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md)(完全なv1.1設計パス—27件の引用。すべて外部で検証済み)、[`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md)(v1.2ロック設計—39件の引用、ランナーを通じてゲート処理され、独自のロックを公開する最初のディスパッチ)、および[`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md)(v1.3正準ロールバック設計—撤回、取り下げ、サガ、ビルド無効化にわたる27件の引用。また、最初に撤回され、その後再検証されるディスパッチ)。
94
97
 
95
98
  ### CIでゲートとして使用する
96
99
 
@@ -122,6 +125,20 @@ jobs:
122
125
 
123
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)) として提供されます。
124
127
 
128
+ ### 撤回された調査結果をロールバックします(`withdraw`/`requalify`)
129
+
130
+ 検証済みの調査結果は**正準**となります。これは、後続の意思決定に影響を与えます。したがって、後で**撤回**された場合(再実行時に引用が捏造または誤って帰属されていることが判明した場合、引用された論文が取り下げられた場合、またはゲートがそれを却下した場合)どうなるでしょうか?`git revert`だけでは不十分です。なぜなら、調査結果はすでに伝播しているからです。正準ロールバック補償機能により、クリーンアップを実行できるようになります。
131
+
132
+ ```bash
133
+ study-swarm withdraw arXiv:2402.15089 --reason misattributed --from dispatches/ --receipt rollback.json
134
+ # → flags every dispatch citing it `evidence-withdrawn` (a tombstone sidecar — flag, never delete)
135
+ # and writes a content-addressed withdrawal receipt naming every dependent.
136
+ study-swarm requalify --check dispatches/ # exit 1 while any flag is unresolved — the andon HALT
137
+ study-swarm requalify --resolve d.dispatch.md arXiv:2402.15089 --mode removed # or: --mode regrounded --note "<attestation>"
138
+ ```
139
+
140
+ `requalify --check`は、フラグが設定されたすべての調査結果が削除または**再検証**されるまで、処理を停止します(兄弟ランナーによって再検証され、問題がないことが確認されます。CLIは証拠を記録しますが、それ自体で再検証は行いません)。撤回は**対照的**に表示され、サイレントな削除とはなりません。すべて—墓石とレシート—はコンテンツアドレス指定されており、ドリフト検出が可能であり、*証拠*レイヤーでのみ動作します:`lock --verify`は撤回によって影響を受けません。この設計は[`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md)に基づいており、[PROTOCOL.md](PROTOCOL.md)の§「撤回された調査結果を補償する」が実行可能な形式です。これは、**NAMED_COMPENSATORS**標準を実行可能にしたものです:名前付きでべき等なアンドゥ処理であり、既知のポスト状態とレシートを残します。
141
+
125
142
  ## その仕組みを簡潔に説明します
126
143
 
127
144
  **最新性** — この分野は急速に進歩しており、特定の研究(数年間の期間が必要)に固執すると、設計が18か月遅れてしまう可能性があります。**機能性** — 証拠は、何が「うまくいく」かだけでなく、何が「うまくいかない」かを示しています(説明を加えることで、誤ったAIへの過度な依存が生じる可能性があります—Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779))。**安全性** — 検証者によって保護された範囲は、証拠が裏付けるアーキテクチャであり、プロトコルによってその出力に強制されます。情報源の提示は学術的なパフォーマンスではなく、証拠の追跡です。
@@ -132,7 +149,7 @@ jobs:
132
149
 
133
150
  ## ステータス
134
151
 
135
- 動作するプロトコルであり、独自の仕組みによって外部から検証されています—異なるモデルファミリーがその引用をチェックします(上記の証拠を参照)。**v1.1** では、最初のリリースでは明示されていなかった検証機能を強化しています。具体的には、分解/三値の根拠付け、生成時の根拠付け、レンズを組み合わせるためのオラクルゲート付きカスケード、およびキャリブレーションされた棄権などです。これらの要素はすべて、検証済みの v1.1 ディスパッチに基づいて構築されています。**v1.2** では、ディスパッチをバイト単位で再現可能にするために、`study-swarm lock` を使用して、各ステップで使用される解決済みのモデル、プロンプト、およびツールスキーマに加えて、検証者のレシートを固定します。また、`lock --verify` コマンドを使用すると、ドリフトが発生した場合に処理が停止します。このリポジトリは公開参照であり、[PROTOCOL.md](PROTOCOL.md) に実行可能な形式で記述されています。これは、[dogfood-lab](https://github.com/dogfood-lab) ファミリーの一部であり、AI時代における構築のための方法と事例を紹介しています。
152
+ 独自のメカニズムによって外部検証された、動作するプロトコル—別のモデルファミリーがその引用をチェックします(上記の証拠を参照)。**v1.1**は、最初のリリースではサイレントだった検証機能を強化しました:分解/三値の根拠付け、生成時の根拠付け、レンズを組み合わせるためのオラクルゲート付きカスケード、および調整された棄権—それぞれが検証済みのv1.1ディスパッチに基づいて行われます。**v1.2**は、ディスパッチをバイト単位で再現可能にします:`study-swarm lock`は、各ステップと検証レシートごとに解決されたモデル、プロンプト、およびツールスキーマを固定し、`lock --verify`はドリフトが発生した場合に処理を停止します。**v1.3**は、ロールバックを実行可能にします:すでに正準となった調査結果が撤回されると、`study-swarm withdraw`はすべての依存関係にフラグを設定し、`requalify --check`はそれらを削除または再検証されるまで処理を停止します—名前付きで、レシート付きの、べき等な補償機能です。このリポジトリは公開リファレンスであり、[PROTOCOL.md](PROTOCOL.md)が実行可能な形式です。[dogfood-lab](https://github.com/dogfood-lab)ファミリーの一部であり、AI時代におけるビルドのための方法とショーケースを提供します。
136
153
 
137
154
  MITライセンス。
138
155
 
package/README.md CHANGED
@@ -78,6 +78,9 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
78
78
  | `study-swarm lint [--json] <path…>` | Check a dispatch's *Research grounding* against the sourcing standard — every finding needs an author, a year, and a resolvable identifier (arXiv / DOI / URL); "studies show…" hand-waving is rejected. Exit `1` on violations, so it gates CI. A `<path>` may be a file, a directory (linted recursively for `*.dispatch.md`), or `-` for stdin; `--json` emits a machine-readable report. |
79
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
80
  | `study-swarm lock --verify <dispatch> [--from …]` | Re-derive those hashes and assert they match the lock; any drift exits `1`, so it gates CI like a package lockfile. Without `--from`, checks the lock's own integrity. |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **Canon-rollback compensator.** Flag every dispatch in the corpus whose *Research grounding* cites `<id>` as `evidence-withdrawn` (a tombstone sidecar `<slug>.withdrawn.json` — flag, never delete) and emit a content-addressed withdrawal receipt. `--reason` ∈ `fabricated · misattributed · retracted · verifier-flipped · other`. |
82
+ | `study-swarm requalify --check <corpus-dir>` | Fail closed (exit `1`) for any dispatch carrying an unresolved `evidence-withdrawn` flag — the andon that **halts** a withdrawn finding's dependents until it is removed or re-grounded. Gates CI. |
83
+ | `study-swarm requalify --resolve <dispatch> <id> --mode removed\|regrounded [--note …]` | Clear a flag once the finding is removed (the citation is gone) or re-grounded (re-verified clean by the sibling runner; `--note` records the attestation). Idempotent; appends to the sidecar's audit trail. |
81
84
 
82
85
  `lint` is deterministic — zero model calls — so it's safe in CI. It enforces **Step 3's sourcing standard** locally; the model-based **Step 4** verification still defers to [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
83
86
 
@@ -90,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
90
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
91
94
  ```
92
95
 
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).
96
+ Four complete, lint-clean worked dispatches ship as references: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (the protocol's central decision, compact), [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (the full v1.1 design pass — 27 citations, every one externally verified), [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (the v1.2 lock design — 39 citations, gated through the runner, and the first dispatch to ship its own lock), and [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md) (the v1.3 canon-rollback design — 27 citations across revocation, retraction, sagas, and build-invalidation, and the first dispatch to be withdrawn-then-requalified).
94
97
 
95
98
  ### Gate it in CI
96
99
 
@@ -122,6 +125,20 @@ A grounded, verified dispatch is only auditable if you can say *what produced it
122
125
 
123
126
  **It pins inputs, not outputs.** Pinning model + prompt + temperature does *not* make an LLM's output bit-identical — batch-invariance, floating-point non-associativity, mixture-of-experts routing, and silent provider drift are all outside an offline tool's control. So the lock gives you **replayable inputs and drift-detectable outputs**, never "deterministic replay." The design is grounded, citation by citation, in [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) — the first dispatch to ship its own lock ([`examples/study-swarm-lock.lock.json`](examples/study-swarm-lock.lock.json)).
124
127
 
128
+ ### Roll back a withdrawn finding (`withdraw` / `requalify`)
129
+
130
+ A verified finding becomes **canon** — it informs a downstream decision. So what happens when it's later **withdrawn** (a citation turns out fabricated/misattributed on a re-run, a cited paper is retracted, or the gate flips it)? A `git revert` is not enough, because the finding already propagated. The canon-rollback compensator makes the cleanup executable:
131
+
132
+ ```bash
133
+ study-swarm withdraw arXiv:2402.15089 --reason misattributed --from dispatches/ --receipt rollback.json
134
+ # → flags every dispatch citing it `evidence-withdrawn` (a tombstone sidecar — flag, never delete)
135
+ # and writes a content-addressed withdrawal receipt naming every dependent.
136
+ study-swarm requalify --check dispatches/ # exit 1 while any flag is unresolved — the andon HALT
137
+ study-swarm requalify --resolve d.dispatch.md arXiv:2402.15089 --mode removed # or: --mode regrounded --note "<attestation>"
138
+ ```
139
+
140
+ `requalify --check` **fails closed** until each flagged finding is removed or **re-grounded** (re-verified clean by the sibling runner — the CLI records the attestation, it does not itself re-verify). The withdrawal is surfaced **contrastively**, never as a silent drop. Everything — the tombstone and the receipt — is content-addressed and drift-detectable, and operates on the *evidence* layer only: `lock --verify` is untouched by a withdraw. The design is grounded in [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md), and the [PROTOCOL.md](PROTOCOL.md) §"Compensating a withdrawn finding" is the executable shape. This is the **NAMED_COMPENSATORS** standard made executable: a named, idempotent undo that leaves a known post-state and a receipt.
141
+
125
142
  ## Why it works, in one breath
126
143
 
127
144
  **Current** — the field moves fast; demanding specific studies-with-years keeps designs from shipping 18 months behind. **Functional** — evidence shows what *fails*, not just what works (explanations can increase over-reliance on *wrong* AI — Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Safe** — the verifier-protected envelope is the architecture the evidence supports, and the protocol enforces it on its own output. Sourcing isn't academic theater; it's the evidence trail.
@@ -132,7 +149,7 @@ A grounded, verified dispatch is only auditable if you can say *what produced it
132
149
 
133
150
  ## Status
134
151
 
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.
152
+ A working protocol, externally verified by its own machinery — a different model family checks its citations (see the proof above). **v1.1** sharpens the verifier where the first release was silent: decomposed/ternary groundedness, generation-time grounding, an oracle-gated cascade for combining lenses, and calibrated abstention — each grounded in the verified v1.1 dispatch. **v1.2** makes a dispatch byte-replayable: `study-swarm lock` pins the resolved model, prompt, and tool schema per step plus the verifier receipt, and `lock --verify` fails closed on drift. **v1.3** makes the rollback executable: when a finding that already became canon is withdrawn, `study-swarm withdraw` flags every dependent and `requalify --check` halts them fail-closed until they're removed or re-grounded — a named, receipted, idempotent compensator. This repo is the public reference; [PROTOCOL.md](PROTOCOL.md) is the executable shape. Part of the [dogfood-lab](https://github.com/dogfood-lab) family — methods and showcases for building in the AI era.
136
153
 
137
154
  MIT licensed.
138
155
 
package/README.pt-BR.md CHANGED
@@ -78,6 +78,9 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
78
78
  | `study-swarm lint [--json] <path…>` | Verifica a *fundamentação da pesquisa* de uma análise em relação ao padrão de referência – cada achado precisa de um autor, um ano e um identificador resolvível (arXiv / DOI / URL); “estudos mostram…” sem embasamento é rejeitado. Sai com `1` em caso de violações, para que valide o CI. Um `<path>` pode ser um arquivo, um diretório (analisado recursivamente para `*.dispatch.md`) ou `-` para stdin; `--json` emite um relatório legível por máquina. |
79
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
80
  | `study-swarm lock --verify <dispatch> [--from …]` | Recalcule esses hashes e verifique se correspondem ao bloqueio; qualquer desvio resulta em saída `1`, portanto, controla o CI como um arquivo de bloqueio de pacote. Sem `--from`, verifica a própria integridade do bloqueio. |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **Mecanismo de compensação para reversão do canon.** Marcar cada registro no corpus cujo *fundamento da pesquisa* cite `<id>` como `evidência-retirada` (um arquivo auxiliar `<slug>.withdrawn.json` — marcar, nunca excluir) e emitir um comprovante de retirada com base no conteúdo. `--reason` ∈ `fabricado · atribuído incorretamente · revogado · verificador alterado · outro`. |
82
+ | `study-swarm requalify --check <corpus-dir>` | Falhar em modo fechado (sair com código `1`) para qualquer registro que contenha uma marcação `evidência-retirada` não resolvida — o sinalizador que **interrompe** os elementos dependentes de um resultado retirado até que seja removido ou reavaliado. Gates CI. |
83
+ | `study-swarm requalify --resolve <registro> <id> --mode removed\ | regrounded [--note …]` | Remover uma marcação assim que o resultado for removido (a citação desaparecer) ou reavaliado (reverificado e validado pelo executor irmão; `--note` registra a confirmação). Idempotente; adiciona ao histórico de auditoria do arquivo auxiliar. |
81
84
 
82
85
  `lint` é determinístico – sem chamadas de modelo – portanto, é seguro no CI. Ele aplica o **padrão de referência da Etapa 3** localmente; a verificação baseada em modelo da **Etapa 4** ainda depende de [`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism.
83
86
 
@@ -90,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
90
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
91
94
  ```
92
95
 
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).
96
+ Quatro registros completos, limpos e funcionais são enviados como referência: [`examples/study-swarm-self.dispatch.md`](examples/study-swarm-self.dispatch.md) (a decisão central do protocolo, concisa), [`examples/study-swarm-v1_1.dispatch.md`](examples/study-swarm-v1_1.dispatch.md) (o design completo da versão 1.1 27 citações, todas verificadas externamente), [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) (o design de bloqueio da versão 1.2 39 citações, controlado pelo executor e o primeiro registro a enviar seu próprio bloqueio) e [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md) (o design de reversão do canon da versão 1.3 — 27 citações em relação à revogação, retração, sequências e invalidação da construção, e o primeiro registro a ser retirado e depois reavaliado).
94
97
 
95
98
  ### Valide no CI
96
99
 
@@ -122,6 +125,20 @@ Um envio validado e comprovado só pode ser auditado se você puder dizer *o que
122
125
 
123
126
  **Ele fixa as entradas, não as saídas.** Fixar modelo + prompt + temperatura *não* torna a saída de um LLM bit a bit idêntica – invariância em lote, não associatividade de ponto flutuante, roteamento de mistura de especialistas e desvio silencioso do provedor estão todos fora do controle de uma ferramenta offline. Portanto, o bloqueio fornece **entradas reproduzíveis e saídas com detecção de desvio**, nunca "reprodução determinística". O design é fundamentado, citação por citação, em [`examples/study-swarm-lock.dispatch.md`](examples/study-swarm-lock.dispatch.md) – o primeiro envio a incluir seu próprio bloqueio ([`examples/study-swarm-lock.lock.json`](examples/study-swarm-lock.lock.json)).
124
127
 
128
+ ### Reverter um resultado retirado (`withdraw` / `requalify`)
129
+
130
+ Um resultado verificado torna-se **canon** — ele informa uma decisão subsequente. Então, o que acontece quando ele é posteriormente **retirado** (uma citação se revela fabricada/atribuída incorretamente em uma nova execução, um artigo citado é retirado ou o controle o altera)? Um `git revert` não é suficiente, porque o resultado já foi propagado. O mecanismo de compensação para reversão do canon torna a limpeza executável:
131
+
132
+ ```bash
133
+ study-swarm withdraw arXiv:2402.15089 --reason misattributed --from dispatches/ --receipt rollback.json
134
+ # → flags every dispatch citing it `evidence-withdrawn` (a tombstone sidecar — flag, never delete)
135
+ # and writes a content-addressed withdrawal receipt naming every dependent.
136
+ study-swarm requalify --check dispatches/ # exit 1 while any flag is unresolved — the andon HALT
137
+ study-swarm requalify --resolve d.dispatch.md arXiv:2402.15089 --mode removed # or: --mode regrounded --note "<attestation>"
138
+ ```
139
+
140
+ `requalify --check` **falha em modo fechado** até que cada resultado marcado seja removido ou **reavaliado** (reverificado e validado pelo executor irmão — a CLI registra a confirmação, não o faz por conta própria). A retirada é apresentada de forma **contrastante**, nunca como uma remoção silenciosa. Tudo — o arquivo auxiliar e o comprovante — tem base no conteúdo e pode ser detectado em caso de desvio, e opera apenas na camada de *evidência*: `lock --verify` não é afetado por uma retirada. O design é baseado em [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md), e o [PROTOCOL.md](PROTOCOL.md) §"Compensando um resultado retirado" é a forma executável. Este é o padrão **NAMED_COMPENSATORS** tornado executável: uma operação de desfazer nomeada e idempotente que deixa um estado pós-operacional conhecido e um comprovante.
141
+
125
142
  ## Por que funciona, em poucas palavras
126
143
 
127
144
  **Atual** – o campo evolui rapidamente; exigir estudos específicos com anos evita que os projetos sejam lançados com 18 meses de atraso. **Funcional** – a evidência mostra o que *falha*, não apenas o que funciona (explicações podem aumentar a dependência excessiva em IA *incorreta* – Bansal et al. 2021, [arXiv:2006.14779](https://arxiv.org/abs/2006.14779)). **Seguro** – o envelope protegido pelo verificador é a arquitetura que a evidência suporta, e o protocolo a aplica em sua própria saída. A referência não é um exercício acadêmico; é o rastro da evidência.
@@ -132,7 +149,7 @@ Um envio validado e comprovado só pode ser auditado se você puder dizer *o que
132
149
 
133
150
  ## Status
134
151
 
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.
152
+ Um protocolo funcional, verificado externamente por sua própria infraestrutura uma família diferente de modelos verifica suas citações (veja a prova acima). **v1.1** aprimora o verificador, onde a primeira versão era silenciosa: fundamentação decomposta/ternária, fundamentação no momento da geração, cascata controlada por um oráculo para combinar lentes e abstinência calibrada cada um baseado no registro verificado da versão 1.1. **v1.2** torna um registro reproduzível: `study-swarm lock` fixa o modelo resolvido, o prompt e o esquema de ferramentas por etapa, além do comprovante do verificador, e `lock --verify` falha em modo fechado em caso de desvio. **v1.3** torna a reversão executável: quando um resultado que já se tornou canon é retirado, `study-swarm withdraw` marca todos os elementos dependentes e `requalify --check` os interrompe, fazendo com que falhem até que sejam removidos ou reavaliados — um compensador nomeado, com comprovante e idempotente. Este repositório é a referência pública; [PROTOCOL.md](PROTOCOL.md) é a forma executável. Faz parte da família [dogfood-lab](https://github.com/dogfood-lab) métodos e demonstrações para construir na era da IA.
136
153
 
137
154
  Licenciado sob MIT.
138
155
 
package/README.zh.md CHANGED
@@ -78,6 +78,9 @@ npm i -g @dogfood-lab/study-swarm # or run ad-hoc: npx @dogfood-lab/study-sw
78
78
  | `study-swarm lint [--json] <path…>` | 根据来源标准检查工作流程的*研究扎实性*——每条研究结果都需要作者、年份和一个可解析的标识符(arXiv / DOI / URL);“研究表明……”这种含糊其辞的方式将被拒绝。如果存在违规行为,则退出代码为`1`,以便在CI中进行筛选。`<path>`可以是文件、目录(递归地检查所有`.dispatch.md`文件),或者`-`表示标准输入;`--json`会输出机器可读的报告。 |
79
79
  | `study-swarm lock <dispatch> --from <orchestration.json>` | 将一个调度固定下来以便重放——编写 `<dispatch>.lock.json`,其中包含基于内容的哈希值,按照步骤 2 中的代理进行操作,包括**已解析的模型 ID** + **字节级精确提示的 SHA-256 值** + **工具模式的 SHA-256 值**,以及步骤 4 中的**验证者凭证**,并将它们组合成一个 `lock_sha256`。 |
80
80
  | `study-swarm lock --verify <dispatch> [--from …]` | 重新计算这些哈希值并确认它们与锁匹配;如果出现任何偏差,则退出并返回 1,因此它就像软件包的 lock 文件一样,可以控制 CI 流程。如果不使用 `--from` 参数,则会检查锁自身的完整性。 |
81
+ | `study-swarm withdraw <id> --reason <reason> [--from <dir>] [--receipt <path>]` | **规范回滚补偿器。** 标记语料库中每个引用 `<id>` 作为“证据已撤回”(一个墓碑侧文件 `<slug>.withdrawn.json`——标记,永不删除)的文档,并生成基于内容的撤回凭证。 `--reason` ∈ `fabricated · misattributed · retracted · verifier-flipped · other`。 |
82
+ | `study-swarm requalify --check <corpus-dir>` | 对于任何带有未解决的“证据已撤回”标志的文档,执行失败安全机制(退出代码为 `1`)——这是一种“andon”(警报),它会**阻止**已撤回结论的依赖项,直到该结论被删除或重新验证。用于门控 CI。 |
83
+ | `study-swarm requalify --resolve <dispatch> <id> --mode removed\ | regrounded [--note …]` | 一旦该结论被删除(引用消失)或重新验证(由辅助运行器重新验证;`--note` 记录证明),则清除标志。幂等性;附加到侧文件的审计跟踪中。 |
81
84
 
82
85
  `lint`是确定性的——不调用任何模型——因此可以在CI中安全使用。它在本地强制执行**第3步的来源标准**;基于模型的**第4步**验证仍然依赖于[`roleos verify-citations`](https://github.com/mcp-tool-shop-org/role-os) → prism。
83
86
 
@@ -90,7 +93,7 @@ study-swarm lint my-decision.dispatch.md # enforce the sourcing standard
90
93
  roleos verify-citations my-decision.dispatch.md # model-based Step 4 (different family, via prism)
91
94
  ```
92
95
 
93
- 三个完整的、经过清理的调度文件作为参考发布:[`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 处引用,通过运行器进行控制,并且是第一个发布其自身锁的调度文件)。
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 个引用,涵盖撤销、撤稿、连续事件和构建失效,并且是第一个被撤回然后重新验证的文档)。
94
97
 
95
98
  ### 在CI中进行筛选
96
99
 
@@ -122,6 +125,20 @@ jobs:
122
125
 
123
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))的调度文件。
124
127
 
128
+ ### 回滚已撤回的结论 (`withdraw` / `requalify`)
129
+
130
+ 经过验证的结论成为**规范**——它会影响下游决策。那么,如果稍后该结论被**撤回**(在重新运行时发现引用是捏造/错误归因,引用的论文被撤稿,或者门控机制将其标记),会发生什么?简单的 `git revert` 并不足以解决问题,因为该结论已经传播开来。规范回滚补偿器使清理过程可执行:
131
+
132
+ ```bash
133
+ study-swarm withdraw arXiv:2402.15089 --reason misattributed --from dispatches/ --receipt rollback.json
134
+ # → flags every dispatch citing it `evidence-withdrawn` (a tombstone sidecar — flag, never delete)
135
+ # and writes a content-addressed withdrawal receipt naming every dependent.
136
+ study-swarm requalify --check dispatches/ # exit 1 while any flag is unresolved — the andon HALT
137
+ study-swarm requalify --resolve d.dispatch.md arXiv:2402.15089 --mode removed # or: --mode regrounded --note "<attestation>"
138
+ ```
139
+
140
+ `requalify --check` 在每个带有标志的结论被删除或**重新验证**(由辅助运行器重新验证——CLI 记录证明,它本身不会重新验证)之前,将**失败安全**。撤回以**对比方式**呈现,而不是默默地删除。所有内容——墓碑和凭证——都基于内容进行寻址且可检测漂移,并且仅对*证据*层进行操作:`lock --verify` 不受撤回的影响。该设计基于 [`examples/study-swarm-canon-rollback.dispatch.md`](examples/study-swarm-canon-rollback.dispatch.md),并且 [PROTOCOL.md](PROTOCOL.md) §“补偿已撤回的结论”是可执行的形式。这是**NAMED_COMPENSATORS** 标准的可执行版本:一种命名的、幂等的撤销操作,它会留下一个已知的后期状态和一个凭证。
141
+
125
142
  ## 用一句话概括其工作原理
126
143
 
127
144
  **及时性**——该领域发展迅速;要求提供具体的带有年份的研究,可以防止设计落后18个月。**功能性**——证据表明哪些*方法失败*,而不仅仅是哪些有效(解释可能会增加对*错误*人工智能的过度依赖——Bansal等人,2021年,[arXiv:2006.14779](https://arxiv.org/abs/2006.14779))。**安全性**——受验证器保护的范围是证据支持的架构,并且协议对其自身的输出进行强制执行。来源不是学术上的形式主义;它是证据链。
@@ -132,7 +149,7 @@ jobs:
132
149
 
133
150
  ## 状态
134
151
 
135
- 一个可工作的协议,由其自身的机制进行外部验证——不同的模型系列会检查其引用(参见上面的证明)。**v1.1** 改进了验证器,而第一个版本是静默的:分解/三元接地、生成时接地、用于组合透镜的 oracle 门控级联以及校准后的弃权——所有这些都基于经过验证的 v1.1 调度。**v1.2** 使调度可以进行字节级别的重放:`study-swarm lock` 会按照步骤固定已解析的模型、提示和工具模式,并添加验证者凭证,而 `lock --verify` 则会在出现偏差时失败并停止。此仓库是公共参考;[PROTOCOL.md](PROTOCOL.md) 是可执行的形式。它是 [dogfood-lab](https://github.com/dogfood-lab) 系列的一部分——用于在人工智能时代构建的各种方法和示例。
152
+ 一个可工作的协议,由其自身的机制进行外部验证——不同的模型系列检查其引用(参见上面的证明)。**v1.1** 改进了验证器,而第一个版本是静默的:分解/三元验证、生成时验证、用于组合透镜的基于 oracle 的级联以及校准后的弃权——每个都基于经过验证的 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) 系列的一部分——用于在人工智能时代构建的方法和示例。
136
153
 
137
154
  采用MIT许可证。
138
155