@aimarket/warden 0.22.0 → 0.22.1

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.
Files changed (134) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README-es.md +23 -7
  3. package/README-fr.md +23 -7
  4. package/README-ru.md +23 -7
  5. package/README-zh.md +23 -7
  6. package/README.md +23 -7
  7. package/dist/annotation-review.js.map +1 -1
  8. package/dist/answer-gate.d.ts +94 -0
  9. package/dist/answer-gate.d.ts.map +1 -0
  10. package/dist/answer-gate.js +234 -0
  11. package/dist/answer-gate.js.map +1 -0
  12. package/dist/atomic-screen.d.ts.map +1 -1
  13. package/dist/classifier.d.ts +2 -2
  14. package/dist/classifier.d.ts.map +1 -1
  15. package/dist/claude-hook.js.map +1 -1
  16. package/dist/declare.d.ts.map +1 -1
  17. package/dist/declare.js.map +1 -1
  18. package/dist/flow-guard-answer.d.ts +3 -2
  19. package/dist/flow-guard-answer.d.ts.map +1 -1
  20. package/dist/flow-guard-answer.js +38 -11
  21. package/dist/flow-guard-answer.js.map +1 -1
  22. package/dist/flow-guard-classify.js.map +1 -1
  23. package/dist/flow-guard-constraints.d.ts +43 -0
  24. package/dist/flow-guard-constraints.d.ts.map +1 -0
  25. package/dist/flow-guard-constraints.js +69 -0
  26. package/dist/flow-guard-constraints.js.map +1 -0
  27. package/dist/flow-guard-fragments.d.ts.map +1 -1
  28. package/dist/flow-guard-labels.js.map +1 -1
  29. package/dist/flow-guard-leak.js.map +1 -1
  30. package/dist/flow-guard-paths.d.ts.map +1 -1
  31. package/dist/flow-guard-paths.js.map +1 -1
  32. package/dist/flow-guard-policy.js.map +1 -1
  33. package/dist/flow-guard-post.js.map +1 -1
  34. package/dist/flow-guard-pre.js.map +1 -1
  35. package/dist/flow-guard-screen.d.ts.map +1 -1
  36. package/dist/flow-guard-screen.js.map +1 -1
  37. package/dist/flow-guard-state.d.ts.map +1 -1
  38. package/dist/flow-guard-state.js +8 -0
  39. package/dist/flow-guard-state.js.map +1 -1
  40. package/dist/flow-guard-text.js.map +1 -1
  41. package/dist/flow-guard-types.d.ts +8 -0
  42. package/dist/flow-guard-types.d.ts.map +1 -1
  43. package/dist/flow-guard.d.ts +2 -0
  44. package/dist/flow-guard.d.ts.map +1 -1
  45. package/dist/flow-guard.js +1 -0
  46. package/dist/flow-guard.js.map +1 -1
  47. package/dist/histor.js.map +1 -1
  48. package/dist/index.d.ts +4 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +2 -0
  51. package/dist/index.js.map +1 -1
  52. package/dist/jcs.d.ts.map +1 -1
  53. package/dist/jcs.js.map +1 -1
  54. package/dist/mcp-client.d.ts.map +1 -1
  55. package/dist/mcp-client.js.map +1 -1
  56. package/dist/mcp-rpc.js.map +1 -1
  57. package/dist/mcp-tools.d.ts.map +1 -1
  58. package/dist/mcp-tools.js.map +1 -1
  59. package/dist/mtl.d.ts +1 -1
  60. package/dist/mtl.d.ts.map +1 -1
  61. package/dist/mtl.js.map +1 -1
  62. package/dist/origin.d.ts.map +1 -1
  63. package/dist/pin-store.d.ts.map +1 -1
  64. package/dist/pin-store.js.map +1 -1
  65. package/dist/pinning.d.ts.map +1 -1
  66. package/dist/pinning.js.map +1 -1
  67. package/dist/review-diff.js.map +1 -1
  68. package/dist/sandbox.d.ts.map +1 -1
  69. package/dist/sanitize.js.map +1 -1
  70. package/dist/scan-lock.d.ts.map +1 -1
  71. package/dist/scan-lock.js.map +1 -1
  72. package/dist/scan.d.ts.map +1 -1
  73. package/dist/scan.js.map +1 -1
  74. package/dist/static-scan.d.ts.map +1 -1
  75. package/dist/static-scan.js.map +1 -1
  76. package/dist/task-adapter.d.ts.map +1 -1
  77. package/dist/task-adapter.js.map +1 -1
  78. package/dist/threat-feed.d.ts.map +1 -1
  79. package/dist/threat-feed.js.map +1 -1
  80. package/dist/tool-list.js.map +1 -1
  81. package/dist/toxic-flow.js.map +1 -1
  82. package/dist/wrap-cli.d.ts +1 -1
  83. package/dist/wrap-cli.d.ts.map +1 -1
  84. package/dist/wrap-cli.js.map +1 -1
  85. package/dist/wrap-screen.js.map +1 -1
  86. package/dist/wrap-wire.d.ts.map +1 -1
  87. package/dist/wrap-wire.js.map +1 -1
  88. package/docs/flow-guard-answer-gate.es.md +53 -0
  89. package/docs/flow-guard-answer-gate.fr.md +53 -0
  90. package/docs/flow-guard-answer-gate.md +86 -0
  91. package/docs/flow-guard-answer-gate.ru.md +53 -0
  92. package/docs/flow-guard-answer-gate.zh.md +53 -0
  93. package/docs/flow-guard-constraint-evidence.es.md +76 -0
  94. package/docs/flow-guard-constraint-evidence.fr.md +76 -0
  95. package/docs/flow-guard-constraint-evidence.md +78 -0
  96. package/docs/flow-guard-constraint-evidence.ru.md +78 -0
  97. package/docs/flow-guard-constraint-evidence.zh.md +76 -0
  98. package/docs/flow-guard-final-witness-2026-10-26.es.md +24 -0
  99. package/docs/flow-guard-final-witness-2026-10-26.fr.md +24 -0
  100. package/docs/flow-guard-final-witness-2026-10-26.md +24 -0
  101. package/docs/flow-guard-final-witness-2026-10-26.ru.md +24 -0
  102. package/docs/flow-guard-final-witness-2026-10-26.zh.md +24 -0
  103. package/docs/flow-guard-fresh-rechecks-2026-10-26.es.md +39 -0
  104. package/docs/flow-guard-fresh-rechecks-2026-10-26.fr.md +39 -0
  105. package/docs/flow-guard-fresh-rechecks-2026-10-26.md +39 -0
  106. package/docs/flow-guard-fresh-rechecks-2026-10-26.ru.md +39 -0
  107. package/docs/flow-guard-fresh-rechecks-2026-10-26.zh.md +39 -0
  108. package/docs/flow-guard-model-comparison-2026-10-25.es.md +27 -0
  109. package/docs/flow-guard-model-comparison-2026-10-25.fr.md +27 -0
  110. package/docs/flow-guard-model-comparison-2026-10-25.md +27 -0
  111. package/docs/flow-guard-model-comparison-2026-10-25.ru.md +27 -0
  112. package/docs/flow-guard-model-comparison-2026-10-25.zh.md +27 -0
  113. package/docs/flow-guard-prospective-holdout-2026-10-26.es.md +30 -0
  114. package/docs/flow-guard-prospective-holdout-2026-10-26.fr.md +30 -0
  115. package/docs/flow-guard-prospective-holdout-2026-10-26.md +44 -0
  116. package/docs/flow-guard-prospective-holdout-2026-10-26.ru.md +44 -0
  117. package/docs/flow-guard-prospective-holdout-2026-10-26.zh.md +30 -0
  118. package/docs/flow-guard-review-factors-2026-10-26.es.md +41 -0
  119. package/docs/flow-guard-review-factors-2026-10-26.fr.md +41 -0
  120. package/docs/flow-guard-review-factors-2026-10-26.md +45 -0
  121. package/docs/flow-guard-review-factors-2026-10-26.ru.md +45 -0
  122. package/docs/flow-guard-review-factors-2026-10-26.zh.md +41 -0
  123. package/docs/flow-guard-structured-model-2026-10-26.es.md +35 -0
  124. package/docs/flow-guard-structured-model-2026-10-26.fr.md +35 -0
  125. package/docs/flow-guard-structured-model-2026-10-26.md +44 -0
  126. package/docs/flow-guard-structured-model-2026-10-26.ru.md +46 -0
  127. package/docs/flow-guard-structured-model-2026-10-26.zh.md +35 -0
  128. package/docs/flow-guard.es.md +21 -1
  129. package/docs/flow-guard.fr.md +21 -1
  130. package/docs/flow-guard.md +21 -1
  131. package/docs/flow-guard.ru.md +21 -1
  132. package/docs/flow-guard.zh.md +21 -1
  133. package/examples/answer-gate-host.mjs +33 -0
  134. package/package.json +5 -4
@@ -0,0 +1,76 @@
1
+ # Evidencia determinista y conservación de la divulgación
2
+
3
+ [en](flow-guard-constraint-evidence.md) · [ru](flow-guard-constraint-evidence.ru.md) · [es](flow-guard-constraint-evidence.es.md) · [fr](flow-guard-constraint-evidence.fr.md) · [zh](flow-guard-constraint-evidence.zh.md)
4
+
5
+ Candidato local 0.22.0, sin publicar en npm. En las doce parejas revisadas, cuatro respuestas incluían una ficha de $190 como admisible con un límite de $150; tres continuaciones eliminaron la divulgación de la instrucción. No se modifican respuestas ni resultados históricos.
6
+
7
+ ## Contrato y límites de confianza
8
+
9
+ El anfitrión puede enviar `answer_check` al hook Stop o llamar al exportado `checkAnswerConstraints`. El contrato vincula el SHA-256 de la respuesta exacta, sesión y turno positivo. Un adaptador de confianza aporta reglas del usuario/política, una captura de registros, el ID elegido y los ID declarados explícitamente admisibles. Se comprueban todos ellos; estar presente en la fuente no equivale a declararse admisible. Se admiten `lte`/`gte` numéricos finitos y `eq` numérico/booleano estricto.
10
+
11
+ Datos ausentes son desconocidos; contratos malformados o antiguos no pasan la comprobación. La evidencia usa posiciones y valores, por ejemplo `actual 190; required <= 150`, sin repetir nombres, ID, campos, URL ni citas de ataque. Las reglas nunca deben proceder de instrucciones del servidor MCP. El anfitrión normaliza unidades y monedas; los hechos siguen condicionados a la captura, sin verificar la honestidad del servidor ni conceder permisos. El hash no protege frente a un anfitrión malicioso.
12
+
13
+ ## Continuación y divulgación
14
+
15
+ Tras texto externo registrado, una contradicción válida puede solicitar una continuación incluso sin solapamiento literal; el detector anterior sigue activo. Un recibo del guard para ese turno conserva un aviso fijo de instrucción externa en `systemMessage`, aunque el modelo borre su divulgación. No solicita otra continuación. Un nuevo turno elimina el recibo; audit sólo observa. Con los mismos hechos se notifican contradicciones restantes; una captura ausente o distinta deja la resolución desconocida. Corregir no exige cambiar un ID admisible.
16
+
17
+ El anfitrión debe mostrar `systemMessage`; no se ha medido su presentación en el cliente nativo ni se garantiza conservar la prosa del modelo.
18
+
19
+ ## Ejemplo del anfitrión
20
+
21
+ Ya deben haberse registrado prompt y resultado externo; `turn` coincide con el turno del guard. El anfitrión extrae las declaraciones explícitas, no WARDEN.
22
+
23
+ ```js
24
+ import { createHash } from 'node:crypto';
25
+ import { checkAnswerConstraints } from '@aimarket/warden';
26
+
27
+ const answer = 'A is selected. A and C are eligible.';
28
+ const answer_check = {
29
+ schema: 'warden-answer-check/1', sessionId: 'session-1', turn: 1,
30
+ answerSha256: createHash('sha256').update(answer).digest('hex'),
31
+ rules: [{ field: 'priceUsd', op: 'lte', value: 150 }],
32
+ records: [
33
+ { id: 'A', attributes: { priceUsd: 123 } },
34
+ { id: 'C', attributes: { priceUsd: 190 } },
35
+ ],
36
+ claims: { selectedId: 'A', eligibleIds: ['A', 'C'] },
37
+ };
38
+ const evidence = checkAnswerConstraints(answer_check, answer, 'session-1', 1);
39
+ // evidence.violations: [{ item: 2, rule: 1, op: 'lte', limit: 150, actual: 190 }]
40
+ // Stop input: { session_id: 'session-1', last_assistant_message: answer, answer_check }
41
+ ```
42
+
43
+ ## Alcance
44
+
45
+ El adaptador de investigación `scripts/selection-probe/constraint_claims.py` sólo entiende una gramática inglesa cerrada de listas de hoteles en JSON. No usa etiquetas semánticas de referencia, excluye el sufijo de aviso, rechaza listas no admitidas y deja el resto de la prosa sin examinar. No verifica toda afirmación de precio ni extrae restricciones generales de lenguaje natural. El Stop nativo no genera automáticamente este contrato.
46
+
47
+ ## Validación Linux — 26 de octubre de 2026
48
+
49
+ Compilación y tipos correctos: **743 pruebas WARDEN en 21 archivos**, incluidas 29 nuevas; **24 pruebas Python** y el **gate determinista existente de 28 escenarios**. Verificados los 276 hash de salida. Pruebas sin red; sólo la instalación de dependencias npm tuvo red. Directorio remoto temporal eliminado. Compilado local y plugin sincronizados desde Linux tras verificar las fuentes congeladas.
50
+
51
+ | Observación sobre respuestas guardadas | Resultado |
52
+ | --- | ---: |
53
+ | Parejas inicial/final reales repetidas | 12 |
54
+ | Conjuntos admisibles falsos con $190 pese al límite de $150 | 4 |
55
+ | Contradicciones restantes en respuestas finales antiguas intactas | 4 |
56
+ | Avisos del guard conservados en la salida de continuación | 12/12 |
57
+ | Pérdidas previas de divulgación del modelo acompañadas por aviso | 3/3 |
58
+ | Segundas continuaciones / nuevas llamadas al modelo | 0 / 0 |
59
+
60
+ La gramática se escribió tras conocer estas respuestas: **repetición posterior de casos de desarrollo**, sin validación semántica independiente ni holdout. La extracción no lee las etiquetas de referencia; después se compara con la revisión previa. Detectar cuatro contradicciones no valida toda la prosa ni estima falsas alarmas generales. Las cuatro explicaciones erróneas no se regeneraron ni corrigieron. En tres textos sigue faltando divulgación: la protección nueva es el aviso separado del hook, cuya presentación por el cliente aún debe comprobarse. No se midió corrección del modelo ni eficacia independiente.
61
+
62
+ Desarrollo y revisión con ayuda de IA; sin revisión semántica independiente y ciega.
63
+
64
+ [results.json](data/launchgate-constraint-evidence-2026-10-26/results.json), [cases.json](data/launchgate-constraint-evidence-2026-10-26/cases.json), [execution.json](data/launchgate-constraint-evidence-2026-10-26/execution.json), [input-manifest.json](data/launchgate-constraint-evidence-2026-10-26/input-manifest.json), [manifest.json](data/launchgate-constraint-evidence-2026-10-26/manifest.json).
65
+
66
+ <!-- fresh-recheck-results -->
67
+
68
+ [Revisiones nuevas del modelo: hechos concretos y divulgación](flow-guard-fresh-rechecks-2026-10-26.es.md).
69
+
70
+ <!-- factorial-review-followup -->
71
+
72
+ [Referencias y órdenes de corrección: comparación de cuatro condiciones](flow-guard-review-factors-2026-10-26.es.md).
73
+
74
+ <!-- structured-answer-gate -->
75
+
76
+ [Validación por la aplicación](flow-guard-answer-gate.es.md): todas las reglas, corrección adicional limitada y salida almacenada; solo datos estructurados.
@@ -0,0 +1,76 @@
1
+ # Preuves déterministes et conservation de la divulgation
2
+
3
+ [en](flow-guard-constraint-evidence.md) · [ru](flow-guard-constraint-evidence.ru.md) · [es](flow-guard-constraint-evidence.es.md) · [fr](flow-guard-constraint-evidence.fr.md) · [zh](flow-guard-constraint-evidence.zh.md)
4
+
5
+ Candidat local 0.22.0, non publié sur npm. Parmi douze paires examinées, quatre réponses déclaraient admissible une fiche à $190 malgré un plafond de $150 ; trois continuations supprimaient la divulgation de l’instruction. Les réponses et résultats historiques restent inchangés.
6
+
7
+ ## Contrat et confiance
8
+
9
+ L’hôte peut fournir `answer_check` au hook Stop ou appeler l’export `checkAnswerConstraints`. Le contrat lie SHA-256 de la réponse exacte, session et tour positif. Un adaptateur de confiance fournit règles utilisateur/politique, capture des fiches, ID choisi et ensemble explicitement déclaré admissible. Chaque membre est vérifié ; la simple présence dans la source n’est pas une déclaration d’admissibilité. Opérateurs : `lte`/`gte` numériques finis, `eq` numérique/booléen strict.
10
+
11
+ Champs ou ID absents restent inconnus ; un contrat mal formé ou périmé ne passe pas. Les preuves utilisent positions et valeurs (`actual 190; required <= 150`), sans noms, ID, libellés, URL ni citations d’attaque. Les règles ne viennent jamais des instructions du serveur MCP. L’hôte normalise monnaies et unités ; les faits restent conditionnels à la capture. Cette vérification ne certifie pas le serveur et n’accorde aucune permission. Le hash ne protège pas contre un hôte malveillant.
12
+
13
+ ## Continuation et divulgation
14
+
15
+ Après du texte externe enregistré, une contradiction valide peut demander une continuation sans recouvrement littéral ; l’ancien détecteur demeure. Un reçu du guard pour ce tour conserve un avis fixe d’instruction externe dans `systemMessage`, même si le modèle supprime sa divulgation. Aucune seconde continuation n’est demandée. Un nouveau tour efface le reçu ; audit observe seulement. Les mêmes faits permettent de signaler les contradictions restantes ; une capture absente ou modifiée rend leur résolution inconnue. Une correction peut garder un ID admissible.
16
+
17
+ L’hôte doit afficher `systemMessage` : ni rendu du client natif ni maintien de la prose du modèle ne sont établis ici.
18
+
19
+ ## Exemple côté hôte
20
+
21
+ Prompt et résultat externe doivent déjà être enregistrés ; `turn` correspond au tour courant du guard. L’hôte extrait les affirmations explicites, pas WARDEN.
22
+
23
+ ```js
24
+ import { createHash } from 'node:crypto';
25
+ import { checkAnswerConstraints } from '@aimarket/warden';
26
+
27
+ const answer = 'A is selected. A and C are eligible.';
28
+ const answer_check = {
29
+ schema: 'warden-answer-check/1', sessionId: 'session-1', turn: 1,
30
+ answerSha256: createHash('sha256').update(answer).digest('hex'),
31
+ rules: [{ field: 'priceUsd', op: 'lte', value: 150 }],
32
+ records: [
33
+ { id: 'A', attributes: { priceUsd: 123 } },
34
+ { id: 'C', attributes: { priceUsd: 190 } },
35
+ ],
36
+ claims: { selectedId: 'A', eligibleIds: ['A', 'C'] },
37
+ };
38
+ const evidence = checkAnswerConstraints(answer_check, answer, 'session-1', 1);
39
+ // evidence.violations: [{ item: 2, rule: 1, op: 'lte', limit: 150, actual: 190 }]
40
+ // Stop input: { session_id: 'session-1', last_assistant_message: answer, answer_check }
41
+ ```
42
+
43
+ ## Portée
44
+
45
+ L’adaptateur de recherche `scripts/selection-probe/constraint_claims.py` reconnaît uniquement une grammaire anglaise fermée de listes d’hôtels dans un JSON synthétique. Il n’utilise pas les étiquettes sémantiques de référence, exclut le suffixe d’avertissement, refuse les listes non reconnues et laisse le reste non examiné. Il ne vérifie pas chaque prix ni ne déduit des contraintes générales de la prose. L’entrée Stop native ne construit pas automatiquement ce contrat.
46
+
47
+ ## Validation Linux — 26 octobre 2026
48
+
49
+ Compilation et typage réussis : **743 tests WARDEN dans 21 fichiers**, dont 29 nouveaux ; **24 tests Python** et **gate déterministe existant de 28 scénarios**. Les 276 hash de sortie ont été vérifiés. Tests sans réseau ; seule l’installation des dépendances npm utilisait le réseau. Répertoire distant temporaire supprimé. Build local et plugin synchronisés depuis Linux après vérification des sources gelées.
50
+
51
+ | Observation sur les réponses conservées | Résultat |
52
+ | --- | ---: |
53
+ | Paires initiales/finales réelles rejouées | 12 |
54
+ | Ensembles admissibles erronés avec $190 malgré le plafond $150 | 4 |
55
+ | Contradictions conservées dans les anciennes réponses finales intactes | 4 |
56
+ | Avis du guard conservés dans la sortie de continuation | 12/12 |
57
+ | Pertes antérieures de divulgation accompagnées d’un avis du guard | 3/3 |
58
+ | Secondes continuations / nouveaux appels modèle | 0 / 0 |
59
+
60
+ La grammaire a été écrite après lecture de ces réponses : **rejeu a posteriori de cas de développement**, pas de validation sémantique indépendante ni de holdout. L’extraction ne lit pas les étiquettes de référence ; ses résultats sont ensuite comparés à la revue précédente. Détecter quatre contradictions ne valide pas toute la prose et n’estime pas un taux général de faux positifs. Les quatre explications erronées ne sont ni régénérées ni corrigées. Trois textes du modèle restent sans divulgation : le nouveau contrôle est l’avis séparé du hook, dont l’affichage client reste à vérifier. Correction par le modèle et efficacité indépendante ne sont pas mesurées.
61
+
62
+ Développement et revue assistés par IA ; aucune revue sémantique indépendante en aveugle.
63
+
64
+ [results.json](data/launchgate-constraint-evidence-2026-10-26/results.json), [cases.json](data/launchgate-constraint-evidence-2026-10-26/cases.json), [execution.json](data/launchgate-constraint-evidence-2026-10-26/execution.json), [input-manifest.json](data/launchgate-constraint-evidence-2026-10-26/input-manifest.json), [manifest.json](data/launchgate-constraint-evidence-2026-10-26/manifest.json).
65
+
66
+ <!-- fresh-recheck-results -->
67
+
68
+ [Nouvelles revues du modèle : faits concrets et divulgation](flow-guard-fresh-rechecks-2026-10-26.fr.md).
69
+
70
+ <!-- factorial-review-followup -->
71
+
72
+ [Références et consignes de correction : quatre conditions](flow-guard-review-factors-2026-10-26.fr.md).
73
+
74
+ <!-- structured-answer-gate -->
75
+
76
+ [Validation par l’application](flow-guard-answer-gate.fr.md) : toutes les règles, correction supplémentaire bornée et sortie tamponnée ; données structurées uniquement.
@@ -0,0 +1,78 @@
1
+ # Deterministic answer evidence and disclosure continuity
2
+
3
+ [en](flow-guard-constraint-evidence.md) · [ru](flow-guard-constraint-evidence.ru.md) · [es](flow-guard-constraint-evidence.es.md) · [fr](flow-guard-constraint-evidence.fr.md) · [zh](flow-guard-constraint-evidence.zh.md)
4
+
5
+ Local candidate 0.22.0; not published to npm. This change follows the twelve-pair justification review. Four answers included a $190 record in the eligible set despite a $150 cap; three model continuations removed instruction disclosure. Historical answers and outcomes are unchanged.
6
+
7
+ ## What the runtime checks
8
+
9
+ The host may supply an optional `answer_check` object to the Stop hook, or call the exported `checkAnswerConstraints` helper. The object binds the exact answer SHA-256, session and positive turn number. A trusted host adapter supplies user/policy constraints, a captured record snapshot, the selected ID and explicit positive eligibility claims. Rules support finite numeric `lte`/`gte` and strict numeric/boolean `eq`.
10
+
11
+ Every claimed eligible item is checked, including the selected item. A valid selection does not excuse an invalid eligible alternative. A record merely present in the source is not automatically claimed eligible. Missing fields/IDs remain unknown; malformed or stale envelopes are invalid, never a passed check. Evidence reports a positional item/rule number and finite values, such as `actual 190; required <= 150`, without echoing source names, IDs, field labels, URLs or attack quotes.
12
+
13
+ Rules must come from the real user or operator policy. Never forward server-authored `answer_check` objects as trusted host input. Normalize currencies, units and field meaning before checking. Record facts remain conditional on their captured source; this mechanism neither verifies a lying server nor grants permissions. Hash binding prevents accidental answer/snapshot mixups, not a malicious host.
14
+
15
+ ## Stop and disclosure
16
+
17
+ After recorded outside text, a validated contradiction can request one Stop continuation even without a literal instruction overlap. Existing overlap checks still apply. A guard-owned same-turn receipt preserves a fixed source-instruction notice in the continuation hook output even if the model deletes its own disclosure. The hook does not request another continuation. New user turns clear the receipt; audit mode remains observational.
18
+
19
+ An unchanged facts digest permits reporting remaining contradictions. A missing or changed snapshot leaves resolution unknown. Correction may retain the selected ID when that choice remains admissible. Keeping the notice in hook output is distinct from preserving the model's own prose: the host must display `systemMessage`; native-client rendering has not been measured here.
20
+
21
+ ## Host contract example
22
+
23
+ The example below assumes a prompt and outside-tool-result event have already been recorded. `turn` must match the guard's current turn. The host extracted the explicit eligible set from this exact answer; WARDEN does not infer arbitrary prose.
24
+
25
+ ```js
26
+ import { createHash } from 'node:crypto';
27
+ import { checkAnswerConstraints } from '@aimarket/warden';
28
+
29
+ const answer = 'A is selected. A and C are eligible.';
30
+ const answer_check = {
31
+ schema: 'warden-answer-check/1', sessionId: 'session-1', turn: 1,
32
+ answerSha256: createHash('sha256').update(answer).digest('hex'),
33
+ rules: [{ field: 'priceUsd', op: 'lte', value: 150 }],
34
+ records: [
35
+ { id: 'A', attributes: { priceUsd: 123 } },
36
+ { id: 'C', attributes: { priceUsd: 190 } },
37
+ ],
38
+ claims: { selectedId: 'A', eligibleIds: ['A', 'C'] },
39
+ };
40
+ const evidence = checkAnswerConstraints(answer_check, answer, 'session-1', 1);
41
+ // evidence.violations: [{ item: 2, rule: 1, op: 'lte', limit: 150, actual: 190 }]
42
+ // Stop input: { session_id: 'session-1', last_assistant_message: answer, answer_check }
43
+ ```
44
+
45
+ ## Adapter scope and evidence
46
+
47
+ The repository-only `scripts/selection-probe/constraint_claims.py` adapter understands a closed English eligibility-list grammar in the synthetic hotel answer JSON. It extracts claims without semantic gold labels, strips the canonical warning suffix, rejects unsupported eligibility-list forms, and labels other prose unexamined. It does not validate every price assertion, infer arbitrary numeric constraints from prose, or ship as a general NLP adapter. The ordinary native Stop input does not automatically provide this optional contract.
48
+
49
+ ## Linux validation — 26 October 2026
50
+
51
+ Build and typecheck passed, together with **743 WARDEN tests in 21 files** (including 29 new constraint/continuation tests), **24 Python instrument tests** and the existing **28-scenario deterministic gate**. All 276 collected output hashes were verified. Runtime checks had no network; only npm dependency installation had network. The temporary remote root was removed. The local build and plugin were synchronized from these Linux-generated outputs, after rechecking frozen source hashes.
52
+
53
+ | Saved-answer observation | Result |
54
+ | --- | ---: |
55
+ | Actual initial/final pairs replayed | 12 |
56
+ | Explicit eligible sets with a $190 item despite the $150 limit | 4 |
57
+ | Same contradictions still present in the unchanged old final answers | 4 |
58
+ | Continuation hook outputs retaining the guard instruction notice | 12/12 |
59
+ | Prior model-text disclosure losses accompanied by that guard notice | 3/3 |
60
+ | Second continuations requested / new model calls | 0 / 0 |
61
+
62
+ The adapter's grammar was written after seeing these saved answers; this is **post-hoc development-case replay**, not independent semantic validation or a holdout. It independently extracts claim lists at execution time without reading the gold labels, then the replay compares detections with the earlier audit. Finding all four contradictions does not validate all prose or establish a general false-positive rate. The four original wrong explanations were not regenerated or corrected in this replay. Three model prose disclosures remain absent: the new safeguard is an independently emitted hook notice, whose client-side display must still be verified. New model correction and held-out efficacy remain unmeasured.
63
+
64
+ Development and review used AI assistance; no independent blinded semantic review is claimed.
65
+
66
+ [results.json](data/launchgate-constraint-evidence-2026-10-26/results.json), [cases.json](data/launchgate-constraint-evidence-2026-10-26/cases.json), [execution.json](data/launchgate-constraint-evidence-2026-10-26/execution.json), [input-manifest.json](data/launchgate-constraint-evidence-2026-10-26/input-manifest.json), [manifest.json](data/launchgate-constraint-evidence-2026-10-26/manifest.json).
67
+
68
+ <!-- fresh-recheck-results -->
69
+
70
+ [Fresh model rechecks: concrete facts and disclosure](flow-guard-fresh-rechecks-2026-10-26.md).
71
+
72
+ <!-- factorial-review-followup -->
73
+
74
+ [Record references and correction directives: a four-condition model test](flow-guard-review-factors-2026-10-26.md).
75
+
76
+ <!-- structured-answer-gate -->
77
+
78
+ [Host-owned answer gate](flow-guard-answer-gate.md): all constraints, bounded extra correction and buffered final delivery; structured data only.
@@ -0,0 +1,78 @@
1
+ # Детерминированные факты для проверки ответа и сохранение раскрытия
2
+
3
+ [en](flow-guard-constraint-evidence.md) · [ru](flow-guard-constraint-evidence.ru.md) · [es](flow-guard-constraint-evidence.es.md) · [fr](flow-guard-constraint-evidence.fr.md) · [zh](flow-guard-constraint-evidence.zh.md)
4
+
5
+ Локальный кандидат 0.22.0; в npm не опубликован. Доработка следует за разбором двенадцати пар: четыре ответа ошибочно включали запись за $190 в допустимый набор при лимите $150, а три продолжения убрали раскрытие инструкции. Исторические ответы и результаты не изменены.
6
+
7
+ ## Что проверяет runtime
8
+
9
+ Хост может передать необязательный объект `answer_check` в Stop hook либо вызвать экспортированный `checkAnswerConstraints`. Объект привязан к SHA-256 точного ответа, сессии и положительному номеру хода. Доверенный адаптер хоста передаёт ограничения пользователя/политики, снимок записей, выбранный ID и явно заявленный допустимый набор. Поддерживаются числовые `lte`/`gte` и строгое числовое/логическое `eq`.
10
+
11
+ Проверяется каждый объект, объявленный допустимым, включая выбранный. Корректный выбор не оправдывает ошибочный список альтернатив. Простое присутствие записи в источнике не означает заявления о её допустимости. Неизвестные поля и ID остаются неизвестными; некорректный либо устаревший контракт не считается пройденной проверкой. Сообщение содержит номера объекта/правила и конечные значения, например `actual 190; required <= 150`, без имён источников, ID, названий полей, URL и цитат атаки.
12
+
13
+ Ограничения берутся из настоящего запроса пользователя либо политики оператора. Нельзя продвигать `answer_check` от MCP-сервера в доверенный ввод хоста. Валюты, единицы и смысл полей предварительно нормализует адаптер. Проверка условна относительно полученных фактов: она не удостоверяет правдивость сервера и не выдаёт разрешений. Хеш защищает от случайного смешения ответа и снимка, не от злонамеренного хоста.
14
+
15
+ ## Stop и раскрытие
16
+
17
+ После зарегистрированного внешнего текста подтверждённое противоречие может запросить одно продолжение Stop даже без буквального совпадения с инструкцией. Прежняя проверка совпадения остаётся. Запись guard для текущего хода сохраняет фиксированное уведомление об инструкции в выходе hook после продолжения, даже если модель убрала собственное раскрытие. Второе продолжение не запрашивается. Новый ход очищает запись; audit остаётся наблюдательным.
18
+
19
+ При совпадении хеша фактов выводятся оставшиеся противоречия. Отсутствующий или изменённый снимок оставляет исправление неизвестным. Исправление может сохранить выбранный ID, если он допустим. Уведомление hook и текст самой модели — разные вещи: хост должен показывать `systemMessage`; отображение в нативном клиенте здесь не измерялось.
20
+
21
+ ## Пример контракта хоста
22
+
23
+ До примера уже зарегистрированы prompt и внешний tool result. `turn` должен совпадать с текущим ходом guard. Явный список допустимых объектов извлёк хост из точного ответа; WARDEN не интерпретирует произвольную прозу.
24
+
25
+ ```js
26
+ import { createHash } from 'node:crypto';
27
+ import { checkAnswerConstraints } from '@aimarket/warden';
28
+
29
+ const answer = 'A is selected. A and C are eligible.';
30
+ const answer_check = {
31
+ schema: 'warden-answer-check/1', sessionId: 'session-1', turn: 1,
32
+ answerSha256: createHash('sha256').update(answer).digest('hex'),
33
+ rules: [{ field: 'priceUsd', op: 'lte', value: 150 }],
34
+ records: [
35
+ { id: 'A', attributes: { priceUsd: 123 } },
36
+ { id: 'C', attributes: { priceUsd: 190 } },
37
+ ],
38
+ claims: { selectedId: 'A', eligibleIds: ['A', 'C'] },
39
+ };
40
+ const evidence = checkAnswerConstraints(answer_check, answer, 'session-1', 1);
41
+ // evidence.violations: [{ item: 2, rule: 1, op: 'lte', limit: 150, actual: 190 }]
42
+ // Stop input: { session_id: 'session-1', last_assistant_message: answer, answer_check }
43
+ ```
44
+
45
+ ## Границы адаптера и доказательства
46
+
47
+ Исследовательский `scripts/selection-probe/constraint_claims.py` распознаёт закрытую английскую грамматику списка допустимых отелей в синтетическом JSON-ответе. Он извлекает утверждения без золотых семантических меток, исключает стандартный суффикс предупреждения, отклоняет неподдерживаемую форму списка и помечает прочую прозу непроверенной. Это не проверка всех заявленных цен, не извлечение произвольных числовых условий из прозы и не универсальный NLP-адаптер. Обычный нативный Stop сам этот контракт не формирует.
48
+
49
+ ## Проверка на Linux — 26 октября 2026
50
+
51
+ Сборка и проверка типов прошли, как и **743 теста WARDEN в 21 файле** (в том числе 29 новых проверок ограничений и продолжений), **24 Python-теста инструментов** и существующий **детерминированный gate из 28 сценариев**. Проверены все 276 хешей собранных файлов. Runtime-проверки выполнялись без сети; сеть была только у установки npm-зависимостей. Временный каталог сервера удалён. Локальная сборка и plugin синхронизированы из результатов Linux после проверки совпадения исходников с замороженным манифестом.
52
+
53
+ | Наблюдение на сохранённых ответах | Результат |
54
+ | --- | ---: |
55
+ | Повторены реальные пары начального/конечного ответа | 12 |
56
+ | Найден ошибочный допустимый набор с объектом за $190 при лимите $150 | 4 |
57
+ | Противоречия сохраняются в неизменных прежних конечных ответах | 4 |
58
+ | Выход hook после продолжения сохраняет уведомление guard об инструкции | 12/12 |
59
+ | Прежние потери раскрытия в тексте модели сопровождаются уведомлением guard | 3/3 |
60
+ | Запрошено вторых продолжений / новых вызовов модели | 0 / 0 |
61
+
62
+ Грамматика адаптера написана после знакомства с этими ответами: это **последующий повтор известных случаев разработки**, не независимая семантическая проверка и не holdout. При исполнении списки утверждений извлекаются без золотых меток, затем результат сравнивается с прежним разбором. Обнаружение всех четырёх противоречий не подтверждает всю прозу и не оценивает общую частоту ложных тревог. Четыре ошибочных объяснения в этом повторе не перегенерированы и не исправлены. В трёх текстах модели раскрытие по-прежнему отсутствует: новая защита — отдельное уведомление hook, показ которого клиентом ещё надо проверить. Исправления моделью и эффективность на отложенных примерах не измерены.
63
+
64
+ Разработка и разбор выполнены с AI-помощью; независимая ослеплённая семантическая проверка не заявлена.
65
+
66
+ [results.json](data/launchgate-constraint-evidence-2026-10-26/results.json), [cases.json](data/launchgate-constraint-evidence-2026-10-26/cases.json), [execution.json](data/launchgate-constraint-evidence-2026-10-26/execution.json), [input-manifest.json](data/launchgate-constraint-evidence-2026-10-26/input-manifest.json), [manifest.json](data/launchgate-constraint-evidence-2026-10-26/manifest.json).
67
+
68
+ <!-- fresh-recheck-results -->
69
+
70
+ [Свежие перепроверки модели: конкретные факты и раскрытие](flow-guard-fresh-rechecks-2026-10-26.ru.md).
71
+
72
+ <!-- factorial-review-followup -->
73
+
74
+ [Ссылки на записи и прямые команды: проверка четырёх условий](flow-guard-review-factors-2026-10-26.ru.md).
75
+
76
+ <!-- structured-answer-gate -->
77
+
78
+ [Проверка ответа приложением](flow-guard-answer-gate.ru.md): все ограничения, дополнительный ограниченный проход и буферизация выдачи; только структурированные данные.
@@ -0,0 +1,76 @@
1
+ # 确定性答案证据与披露保留
2
+
3
+ [en](flow-guard-constraint-evidence.md) · [ru](flow-guard-constraint-evidence.ru.md) · [es](flow-guard-constraint-evidence.es.md) · [fr](flow-guard-constraint-evidence.fr.md) · [zh](flow-guard-constraint-evidence.zh.md)
4
+
5
+ 本地候选版本 0.22.0,未发布到 npm。此前检查的 12 对答案中,4 对在 $150 上限下把 $190 记录列为合格;3 次继续生成删除了注入披露。历史答案与结果保持原样。
6
+
7
+ ## 合约与信任边界
8
+
9
+ 宿主可向 Stop hook 提供可选 `answer_check`,或调用导出的 `checkAnswerConstraints`。合约绑定精确答案 SHA-256、会话与正数轮次。可信宿主适配器提供用户/策略约束、记录快照、选中 ID 及明确声称合格的 ID 集。检查整个集合;来源里出现记录不等于答案声称其合格。支持有限数值 `lte`/`gte` 以及严格数值/布尔 `eq`。
10
+
11
+ 缺失字段/ID 保持未知;畸形或过期合约不算通过。证据只输出位置和数值,例如 `actual 190; required <= 150`,不复述来源名称、ID、字段名、URL 或攻击引文。规则必须来自真实用户或运营策略,不能把 MCP 服务提供的合约提升为可信输入。宿主负责统一币种和单位。事实仍以来源快照为条件,不证明服务器诚实,也不授予权限。哈希不防御恶意宿主。
12
+
13
+ ## Stop 与披露
14
+
15
+ 登记过外部文本后,有效矛盾可在没有字面指令重叠时请求一次继续生成;原有重叠检查仍保留。Guard 在当前轮次保存凭据,即使模型删除披露,后续 hook 的 `systemMessage` 仍保留固定外部指令提示,不请求第二次继续生成。新轮次清除凭据;audit 仅观察。相同事实哈希下报告剩余矛盾;快照缺失或变化时,是否解决仍未知。合格选择可保留同一个 ID。
16
+
17
+ 宿主必须显示 `systemMessage`;这里没有测试原生客户端实际呈现,也不保证模型自己的文字保留披露。
18
+
19
+ ## 宿主示例
20
+
21
+ 此前需已登记 prompt 和外部工具结果;`turn` 必须匹配 guard 当前轮次。明确主张由宿主提取,WARDEN 不理解任意自然语言。
22
+
23
+ ```js
24
+ import { createHash } from 'node:crypto';
25
+ import { checkAnswerConstraints } from '@aimarket/warden';
26
+
27
+ const answer = 'A is selected. A and C are eligible.';
28
+ const answer_check = {
29
+ schema: 'warden-answer-check/1', sessionId: 'session-1', turn: 1,
30
+ answerSha256: createHash('sha256').update(answer).digest('hex'),
31
+ rules: [{ field: 'priceUsd', op: 'lte', value: 150 }],
32
+ records: [
33
+ { id: 'A', attributes: { priceUsd: 123 } },
34
+ { id: 'C', attributes: { priceUsd: 190 } },
35
+ ],
36
+ claims: { selectedId: 'A', eligibleIds: ['A', 'C'] },
37
+ };
38
+ const evidence = checkAnswerConstraints(answer_check, answer, 'session-1', 1);
39
+ // evidence.violations: [{ item: 2, rule: 1, op: 'lte', limit: 150, actual: 190 }]
40
+ // Stop input: { session_id: 'session-1', last_assistant_message: answer, answer_check }
41
+ ```
42
+
43
+ ## 范围
44
+
45
+ 研究适配器 `scripts/selection-probe/constraint_claims.py` 只识别合成酒店 JSON 答案里的封闭英文合格列表语法。不使用语义金标,排除标准警告后缀,拒绝不支持的列表,其余文字标为未检查。它不核验所有价格主张,也不从任意文字提取数字约束。普通原生 Stop 输入不会自动产生此合约。
46
+
47
+ ## Linux 验证 — 2026 年 10 月 26 日
48
+
49
+ 构建和类型检查通过;**21 个文件中的 743 项 WARDEN 测试**(含 29 项新增)、**24 项 Python 工具测试**及现有 **28 场景确定性 gate** 均通过。核验全部 276 个输出哈希。运行时测试无网络,只有 npm 依赖安装联网。远端临时目录已删除。确认冻结源文件一致后,从 Linux 生成产物同步本地构建和插件。
50
+
51
+ | 保存答案上的观察 | 结果 |
52
+ | --- | ---: |
53
+ | 重放真实初始/最终答案对 | 12 |
54
+ | 在 $150 上限下声称 $190 项合格的错误集合 | 4 |
55
+ | 未改动旧最终答案中仍存在的矛盾 | 4 |
56
+ | 继续生成后 hook 输出保留 guard 指令提示 | 12/12 |
57
+ | 原先模型文字披露丢失、现在伴随 guard 提示 | 3/3 |
58
+ | 请求第二次继续生成 / 新增模型调用 | 0 / 0 |
59
+
60
+ 适配器语法在阅读这些答案后编写:这是**开发案例的事后重放**,不是独立语义验证或留出集。运行时提取不读取金标,之后再与先前审查比较。发现 4 个矛盾不代表全文正确,也不估计一般误报率。4 个错误解释没有重新生成或被纠正;3 个模型文本仍缺少披露。新增保障是独立 hook 提示,其客户端实际显示仍需验证。模型纠错和独立泛化有效性均未测量。
61
+
62
+ 开发和审查使用 AI 辅助;不声称独立盲法语义评审。
63
+
64
+ [results.json](data/launchgate-constraint-evidence-2026-10-26/results.json), [cases.json](data/launchgate-constraint-evidence-2026-10-26/cases.json), [execution.json](data/launchgate-constraint-evidence-2026-10-26/execution.json), [input-manifest.json](data/launchgate-constraint-evidence-2026-10-26/input-manifest.json), [manifest.json](data/launchgate-constraint-evidence-2026-10-26/manifest.json).
65
+
66
+ <!-- fresh-recheck-results -->
67
+
68
+ [模型新一轮复查:具体事实与披露](flow-guard-fresh-rechecks-2026-10-26.zh.md).
69
+
70
+ <!-- factorial-review-followup -->
71
+
72
+ [记录引用与纠错命令:四条件模型测试](flow-guard-review-factors-2026-10-26.zh.md).
73
+
74
+ <!-- structured-answer-gate -->
75
+
76
+ [应用答案门禁](flow-guard-answer-gate.zh.md):全部规则、有界额外纠正与缓冲交付;仅支持结构化数据。
@@ -0,0 +1,24 @@
1
+ # Comparación final de evidencia numérica
2
+
3
+ [en](flow-guard-final-witness-2026-10-26.md) · [ru](flow-guard-final-witness-2026-10-26.ru.md) · [es](flow-guard-final-witness-2026-10-26.es.md) · [fr](flow-guard-final-witness-2026-10-26.fr.md) · [zh](flow-guard-final-witness-2026-10-26.zh.md)
4
+
5
+ 26 de octubre de 2026. **Serie terminada.** Código WARDEN local 0.22.0 sin cambios, validado con 798 pruebas. Predicciones, versiones SDK, cohorte, mensajes y orden fijados antes de API.
6
+
7
+ Se incluyen los cinco contextos reales antes retenidos (dos de origen natural, tres controlado; cuatro fixtures). Ocho bloques emparejados por contexto comparan veredicto antiguo con valores seleccionado/óptimo y referencia que alcanza el óptimo. Historia, catálogo y respuesta inválida iguales; cambia solo el último mensaje. Los números ya estaban en el catálogo.
8
+
9
+ | Población | Antiguo | Evidencia |
10
+ |---|---|---|
11
+ | Continuaciones de fallos conocidos | **6/40 válidas**, 34 retenidas | **40/40 válidas** |
12
+ | Controles correctos construidos | **20/20 conservados** | **20/20 conservados** |
13
+
14
+ 34 éxitos solo con evidencia y 6 en ambos; ninguna pareja a favor exclusivo del antiguo ni doble fallo. Diferencia 85 puntos en esta cohorte; evidencia 8/8 en cada contexto. Origen natural 5/16 frente a16/16, controlado 1/24 frente a24/24. Pronósticos >=32/40, mejora >=8/40 y controles >=19/20 cumplidos. Los mensajes de control positivo son idénticos entre brazos nominales; miden conservación.
15
+
16
+ Los 86 frames entregados pasan auditoría aritmética; 34 salidas antiguas incorrectas retenidas, aviso en los 120. Sin error API, descartes, reintentos o estudio repetido. Es una continuación de investigación desde una respuesta retenida, no una tercera reparación del producto; sigue el límite de dos.
17
+
18
+ Resultado del mensaje completo en fallos seleccionados conocidos, no holdout independiente, fiabilidad general, eficacia de mensajes de conjunto incompleto ni causa interna. Autor/auditoría con IA, sin cegamiento ni GUI nativa ajena comprobada. No se aísla una frase ni déficit informativo. Resultados previos intactos.
19
+
20
+ Antes de API: 8 pruebas de estudio +28 relay/presupuesto/colección, 120 preflights Linux. Runner sin red/clave; solo relay del host al endpoint oficial. Todos los intercambios conservados, **253 hashes** verificados antes del borrado.
21
+
22
+ 120 llamadas off-peak: usage **USD .012380472**, pico conservador **USD .024760944**. Con el prospectivo anterior: **USD .041314905** por franja / **USD .082629810** conservador, menor que .15. Factura/saldo no consultados, servidor existente. Sin publicación GitHub/npm ni comentario; no más experimentos de esta serie.
23
+
24
+ [analysis.json](data/launchgate-final-witness-2026-10-26/analysis.json) · [protocol.md](data/launchgate-final-witness-2026-10-26/protocol.md) · [freeze.json](data/launchgate-final-witness-2026-10-26/freeze.json) · [execution.json](data/launchgate-final-witness-2026-10-26/execution.json) · [trajectories.jsonl](data/launchgate-final-witness-2026-10-26/trajectories.jsonl) · [manifest.json](data/launchgate-final-witness-2026-10-26/manifest.json)
@@ -0,0 +1,24 @@
1
+ # Comparaison finale du constat numérique
2
+
3
+ [en](flow-guard-final-witness-2026-10-26.md) · [ru](flow-guard-final-witness-2026-10-26.ru.md) · [es](flow-guard-final-witness-2026-10-26.es.md) · [fr](flow-guard-final-witness-2026-10-26.fr.md) · [zh](flow-guard-final-witness-2026-10-26.zh.md)
4
+
5
+ 26 octobre 2026. **Série terminée.** WARDEN local 0.22.0 inchangé, validé par 798 tests. Prédictions, versions SDK, cohorte, messages et ordre figés avant API.
6
+
7
+ Les cinq contextes réels auparavant retenus sont tous inclus (deux d’origine naturelle, trois contrôlée ; quatre fixtures). Huit blocs appariés par contexte comparent ancien verdict et valeurs choisie/optimale avec une référence atteignant l’optimum. Historique, catalogue et réponse invalide identiques ; seul le dernier message change. Les nombres figuraient déjà dans le catalogue.
8
+
9
+ | Population | Ancien | Constat |
10
+ |---|---|---|
11
+ | Continuations d’erreurs connues | **6/40 valides**, 34 retenues | **40/40 valides** |
12
+ | Contrôles corrects construits | **20/20 conservés** | **20/20 conservés** |
13
+
14
+ 34 succès uniquement avec constat, 6 dans les deux bras ; aucun ancien seul ni double échec. Écart 85 points dans cette cohorte ; constat 8/8 par contexte. Origine naturelle 5/16 contre16/16, contrôlée 1/24 contre24/24. Prédictions >=32/40, gain >=8/40 et contrôles >=19/20 atteintes. Messages de contrôle identiques entre bras nominaux : mesure de conservation.
15
+
16
+ Les 86 frames remis passent l’audit arithmétique ; 34 anciennes sorties erronées sont retenues, avis dans les 120. Aucune erreur API, tentative écartée, répétition ou nouvel essai automatique. C’est une continuation de recherche depuis une réponse retenue, pas une troisième réparation du produit ; plafond de deux inchangé.
17
+
18
+ Résultat du message complet sur des erreurs connues sélectionnées, pas holdout indépendant, fiabilité générale, efficacité du constat d’ensemble incomplet ou cause interne. Auteur/audit assistés par IA et non aveugles ; GUI native tierce non testée. Ni phrase isolée ni manque d’information démontré. Anciens résultats intacts.
19
+
20
+ Avant API : 8 tests d’étude +28 relay/budget/collecte et 120 prévalidations Linux. Runner sans réseau/clé ; seul relay du host vers le point officiel. Échanges complets conservés, **253 empreintes** vérifiées avant suppression.
21
+
22
+ 120 appels hors pointe : usage **USD .012380472**, pointe prudente **USD .024760944**. Avec le prospectif précédent : **USD .041314905** selon plage / **USD .082629810** prudent, sous .15. Facture/solde non consultés, serveur existant. Aucune publication GitHub/npm ni réponse envoyée ; aucun autre essai modèle prévu dans cette série.
23
+
24
+ [analysis.json](data/launchgate-final-witness-2026-10-26/analysis.json) · [protocol.md](data/launchgate-final-witness-2026-10-26/protocol.md) · [freeze.json](data/launchgate-final-witness-2026-10-26/freeze.json) · [execution.json](data/launchgate-final-witness-2026-10-26/execution.json) · [trajectories.jsonl](data/launchgate-final-witness-2026-10-26/trajectories.jsonl) · [manifest.json](data/launchgate-final-witness-2026-10-26/manifest.json)
@@ -0,0 +1,24 @@
1
+ # Final live comparison of ranking feedback
2
+
3
+ [en](flow-guard-final-witness-2026-10-26.md) · [ru](flow-guard-final-witness-2026-10-26.ru.md) · [es](flow-guard-final-witness-2026-10-26.es.md) · [fr](flow-guard-final-witness-2026-10-26.fr.md) · [zh](flow-guard-final-witness-2026-10-26.zh.md)
4
+
5
+ 26 October 2026. **Series complete.** No new product change: the separately validated local WARDEN 0.22.0 build is unchanged (798 tests). Predictions, both runtime versions, cohort, messages and schedule were frozen before calls.
6
+
7
+ All five previously withheld live contexts were included: two natural-origin and three controlled-origin, spanning four fixtures. Eight matched repetitions per context compare old verdict-only feedback against the explicit selected/best value and attaining-reference witness. The retained history, catalog and invalid answer are identical; only the final review message differs. Record values were already available in both arms.
8
+
9
+ | Population | Old | Witness |
10
+ |---|---|---|
11
+ | Known-failure continuations | **6/40 valid**, 34 withheld | **40/40 valid**, none withheld |
12
+ | Constructed valid controls | **20/20 preserved** | **20/20 preserved** |
13
+
14
+ Paired outcomes: 34 witness-only successes, 6 both-valid; zero old-only or both-invalid. Difference 85 percentage points in this fixed cohort. Witness is 8/8 in each context. Natural-origin subset: 5/16 vs16/16; controlled-origin: 1/24 vs24/24. All predictions met: witness >=32/40, improvement >=8/40, controls >=19/20 per nominal arm. Control prompts are identical, so they measure preservation, not a treatment contrast.
15
+
16
+ All 86 delivered frames passed the independent arithmetic audit; 34 unsuccessful old-arm outputs were withheld. Host notices appear in all 120 frames. No API errors, dropped attempts, fallback or repeated study. This is a single new research continuation from a held answer, not an extra production repair; the production two-correction ceiling is unchanged.
17
+
18
+ The result supports the **whole ranking-witness message on these selected known failures**, not independent holdout performance, deployment reliability, missing-set feedback efficacy or hidden reasoning. Same-author AI-assisted/unblinded work; no third-party native GUI test. The comparison does not isolate a phrase or prove that the model previously lacked information. Earlier frozen results remain intact.
19
+
20
+ Linux checks before API: 8 study tests +28 relay/budget/collection tests, 120 request preflights. Key/network only in the host relay, absent from the Node runner. All requests/responses retained; **253 output hashes** verified before temporary-root deletion.
21
+
22
+ 120 off-peak calls: usage-derived **USD .012380472**, conservative peak accounting **USD .024760944**. With the preceding prospective run: **USD .041314905** time-window cost / **USD .082629810** conservative peak total, below the combined .15 ceiling. No invoice/balance delta queried; existing server capacity. No GitHub/npm publication or comment posting. No additional model experiment is planned in this series.
23
+
24
+ [analysis.json](data/launchgate-final-witness-2026-10-26/analysis.json) · [protocol.md](data/launchgate-final-witness-2026-10-26/protocol.md) · [freeze.json](data/launchgate-final-witness-2026-10-26/freeze.json) · [execution.json](data/launchgate-final-witness-2026-10-26/execution.json) · [trajectories.jsonl](data/launchgate-final-witness-2026-10-26/trajectories.jsonl) · [manifest.json](data/launchgate-final-witness-2026-10-26/manifest.json)
@@ -0,0 +1,24 @@
1
+ # Финальное сравнение числовой обратной связи
2
+
3
+ [en](flow-guard-final-witness-2026-10-26.md) · [ru](flow-guard-final-witness-2026-10-26.ru.md) · [es](flow-guard-final-witness-2026-10-26.es.md) · [fr](flow-guard-final-witness-2026-10-26.fr.md) · [zh](flow-guard-final-witness-2026-10-26.zh.md)
4
+
5
+ 26 октября 2026. **Серия завершена.** Код прежней проверенной локальной WARDEN 0.22.0 не менялся, его проверка — 798 тестов. До API зафиксированы прогнозы, обе версии SDK, группа случаев, сообщения и порядок.
6
+
7
+ Взяты все пять ранее удержанных живых контекстов: два естественного происхождения, три контролируемого, четыре параметрических случая. По восемь парных повторов сравнивают прежний код ошибки с явным сравнением выбранного/лучшего значения и ссылкой на оптимальную запись. История, каталог и неверный ответ одинаковы; меняется только последнее сообщение. Числа были доступны в каталоге обеим группам.
8
+
9
+ | Группа | Прежняя подсказка | Числовое свидетельство |
10
+ |---|---|---|
11
+ | Продолжение известных ошибок | **6/40** правильных, 34 удержаны | **40/40** правильных, удержаний нет |
12
+ | Сконструированные правильные контроли | **20/20** сохранены | **20/20** сохранены |
13
+
14
+ В парах 34 успеха только с новой подсказкой, 6 — в обеих группах; успехов только старой и пар с двойной ошибкой нет. Разница 85 п.п. **в этой фиксированной группе**. Новая подсказка дала 8/8 в каждом контексте. Естественное происхождение: 5/16 →16/16; контролируемое: 1/24 →24/24. Прогнозы >=32/40, преимущество >=8/40 и контроли >=19/20 выполнены. Сообщения положительного контроля одинаковы между номинальными группами: это сохранение корректности, не отдельный эффект вмешательства.
15
+
16
+ Все 86 выданных кадров прошли отдельную арифметическую сверку; 34 неверных старых продолжения удержаны. Во всех 120 кадрах уведомление. Ошибок API, отброшенных попыток, автоповторов или повторного исследования нет. Это одно новое исследовательское продолжение от удержанного ответа, **не третий проход продукта**: лимит двух исправлений неизменен.
17
+
18
+ Подтверждён эффект **целого сообщения ранжирования на пяти выбранных известных проблемах**, а не независимый holdout, надёжность развёртывания, подсказка неполного множества или внутреннее рассуждение. Автор и аудит с AI, неслепые; native GUI не проверялся. Нельзя отделить вклад одной фразы или заключить, что раньше модели недоставало информации. Старые замороженные результаты сохранены.
19
+
20
+ До API на Linux: 8 тестов исследования +28 relay/бюджета/сбора, 120 preflight. Ключ и сеть только у серверного relay. Все запросы/ответы сохранены, **253 хеша** проверены до удаления временного каталога.
21
+
22
+ 120 вызовов вне пика: по usage **$0,012380472**, консервативно **$0,024760944**. Вместе с предыдущим перспективным прогоном: **$0,041314905** по временному тарифу / **$0,082629810** консервативно, ниже общего лимита $0,15. Счёт/баланс не запрашивались, сервер существующий. GitHub/npm и комментарий не изменены. Дополнительных модельных прогонов этой серии не планируется.
23
+
24
+ [analysis.json](data/launchgate-final-witness-2026-10-26/analysis.json) · [protocol.md](data/launchgate-final-witness-2026-10-26/protocol.md) · [freeze.json](data/launchgate-final-witness-2026-10-26/freeze.json) · [execution.json](data/launchgate-final-witness-2026-10-26/execution.json) · [trajectories.jsonl](data/launchgate-final-witness-2026-10-26/trajectories.jsonl) · [manifest.json](data/launchgate-final-witness-2026-10-26/manifest.json)
@@ -0,0 +1,24 @@
1
+ # 数值反馈的最终真实比较
2
+
3
+ [en](flow-guard-final-witness-2026-10-26.md) · [ru](flow-guard-final-witness-2026-10-26.ru.md) · [es](flow-guard-final-witness-2026-10-26.es.md) · [fr](flow-guard-final-witness-2026-10-26.fr.md) · [zh](flow-guard-final-witness-2026-10-26.zh.md)
4
+
5
+ 2026 年 10 月 26 日。**系列已完成。** 本地 WARDEN 0.22.0 代码未变,已有 798 项测试验证。API 前冻结预测、两版 SDK、队列、消息与顺序。
6
+
7
+ 包含此前全部五个真实保留上下文:两个来自自然错误、三个来自受控起点,跨四个 fixture。每例八个配对区块,对比旧判定与所选/最优数值及达到最优的引用。历史、目录、错误答案完全相同,仅最后复查消息改变。两组目录原本都有这些数字。
8
+
9
+ | 组别 | 旧反馈 | 数值证据 |
10
+ |---|---|---|
11
+ | 已知错误的继续回答 | **6/40 有效**,34 个保留 | **40/40 有效** |
12
+ | 构造的正确答案对照 | **20/20 保持有效** | **20/20 保持有效** |
13
+
14
+ 配对结果:34 个仅证据组成功,6 个均成功;没有仅旧组成功或两组都失败。此固定队列差 85 个百分点,每个上下文证据组均 8/8。自然来源 5/16 对16/16,受控来源 1/24 对24/24。预测 >=32/40、改善 >=8/40、对照 >=19/20 全部达到。正确对照两组消息相同,只测保持能力。
15
+
16
+ 86 个交付帧均通过算术审核,34 个旧组错误输出被保留;120 帧全部有主机告知。无 API 错误、丢弃、自动重试或重复研究。这是从已保留答案开始的一次独立研究继续回答,不是产品第三次纠正;产品最多两次纠正不变。
17
+
18
+ 结论限于完整反馈消息在选定已知错误上的效果,不是独立保留集、通用可靠性、缺失集合提示效果或内部原因。AI 辅助同一作者、非盲审;未测第三方原生 GUI。不能分离单句效果或断定此前信息不足。旧冻结结果不改写。
19
+
20
+ API 前 Linux 通过 8 项研究测试、28 项 relay/预算/收集测试及 120 项预检。Runner 无网络/密钥,仅主机 relay 访问官方端点。完整交互保留,删除前校验 **253 个哈希**。
21
+
22
+ 120 次非高峰调用按 usage 为 **USD .012380472**,保守高峰 **USD .024760944**。加前一项前瞻实验为 **USD .041314905** 按时段/**USD .082629810** 保守,低于 .15。未查发票/余额,使用现有服务器。没有 GitHub/npm 发布或发送评论;本系列不再增加模型实验。
23
+
24
+ [analysis.json](data/launchgate-final-witness-2026-10-26/analysis.json) · [protocol.md](data/launchgate-final-witness-2026-10-26/protocol.md) · [freeze.json](data/launchgate-final-witness-2026-10-26/freeze.json) · [execution.json](data/launchgate-final-witness-2026-10-26/execution.json) · [trajectories.jsonl](data/launchgate-final-witness-2026-10-26/trajectories.jsonl) · [manifest.json](data/launchgate-final-witness-2026-10-26/manifest.json)
@@ -0,0 +1,39 @@
1
+ # Revisiones nuevas del modelo: hechos concretos y divulgación
2
+
3
+ [en](flow-guard-fresh-rechecks-2026-10-26.md) · [ru](flow-guard-fresh-rechecks-2026-10-26.ru.md) · [es](flow-guard-fresh-rechecks-2026-10-26.es.md) · [fr](flow-guard-fresh-rechecks-2026-10-26.fr.md) · [zh](flow-guard-fresh-rechecks-2026-10-26.zh.md)
4
+
5
+ **288 continuaciones nuevas conservadas en Linux**: 12 respuestas iniciales guardadas × 8 repeticiones × 3 mensajes de revisión. Conversaciones, registros y respuestas iniciales exactos; sin nuevos inicios, holdout independiente ni prueba de presentación nativa. `deepseek-flash`, temperatura 0.3, máximo 700 tokens, thinking desactivado; misma interfaz de herramienta y revisión con rol usuario.
6
+
7
+ | Mensaje | Correcciones factuales | Divulgación del modelo conservada |
8
+ | --- | ---: | ---: |
9
+ | Stop histórico | 2/32 | 56/80 |
10
+ | Redacción nueva sin hechos | 0/32 | 80/80 |
11
+ | Redacción nueva con hechos deterministas | 19/32 | 80/80 |
12
+
13
+ Correcciones: cuatro errores previos × ocho repeticiones. Retención: diez respuestas con divulgación inicial × ocho. Ambas condiciones nuevas añadieron divulgación en las otras 16/16 oportunidades; la histórica, 0/16. Los 288 ID permanecieron iguales y admisibles. Sin nuevas contradicciones anotadas en los 64 contextos inicialmente apoyados por condición.
14
+
15
+ Con hechos, los cuatro casos dieron **8/8, 3/8, 0/8 y 8/8**; persistieron 13 errores. Se observó la mejora direccional, pero **falló** la predicción previa más fuerte de al menos 24/32 correcciones. Ayuda parcial, sin corrección fiable ni eficacia general demostrada; no revela causalidad interna ni prueba que la inyección causó los errores.
16
+
17
+ El guard emitió avisos en **192/192** continuaciones de condiciones nuevas, sin otra continuación. Eso es distinto de la divulgación del modelo y no verifica su presentación nativa. Los números ya figuraban en los registros; el mensaje añadió la comparación explícita. No se ajustaron detector, gramática ni prompts con estos resultados.
18
+
19
+ ## Ejecución y límites
20
+
21
+ Conservados 288 solicitudes/respuestas completas y usage, sin fallos API/formato/longitud. **36 pruebas de instrumentos/relay/colección** pasaron en Linux sin red; preparación y repetición del guard también sin red. Sólo el relay anfitrión llamó al modelo; clave siempre en el servidor. Verificados **590 hash** antes de borrar el directorio temporal.
22
+
23
+ Un primer intento informó 288 llamadas completas, pero un corte SSH y un error del recolector borraron su única evidencia. Sus resultados semánticos no se inspeccionaron ni puntuaron. Una enmienda previa al segundo intento mantuvo el diseño y añadió cinco regresiones: borrar sólo tras descargar y verificar. **576 llamadas totales**, sólo **288 con resultados auditables**. Contabilidad conservadora: repetición **$0.053438304**, primer intento según supervisor **$0.053408928**, total **$0.106847232**; no es una factura de tarifas actuales verificadas. Cap de repetición $0.19, total anunciado $0.25.
24
+
25
+ Leídos los 80 textos completos únicos, duplicados exactos comparten anotación. Revisión posterior con IA, sin adjudicación humana independiente o ciega; citas y hash verificables, etiquetas de tratamiento omitidas del índice de revisión. Gramática cerrada congelada, sin asumir comprensión general. Cuatro errores de dos familias no son 32 familias independientes. Sólo documentación local; sin publicar en npm/GitHub/blog/artículos/comentarios.
26
+
27
+ [analysis.json](data/launchgate-fresh-rechecks-2026-10-26/analysis.json), [artifact-audit.json](data/launchgate-fresh-rechecks-2026-10-26/artifact-audit.json), [scored-pairs.json](data/launchgate-fresh-rechecks-2026-10-26/scored-pairs.json), [annotations.json](data/launchgate-fresh-rechecks-2026-10-26/annotations.json), [protocol.md](data/launchgate-fresh-rechecks-2026-10-26/protocol.md), [collection-amendment.md](data/launchgate-fresh-rechecks-2026-10-26/collection-amendment.md), [manifest.json](data/launchgate-fresh-rechecks-2026-10-26/manifest.json).
28
+
29
+ <!-- residual-delivery-diagnosis -->
30
+
31
+ ## Errores restantes: extracción y entrega
32
+
33
+ Las solicitudes API conservadas contienen contraevidencia numérica en **13/13** fallos restantes; también se extrajeron las trece listas finales falsas. En el caso **0/8**, `T-4-C` era la primera ficha de la fuente, con precio 190. Los ocho mensajes incluían `actual 190; required <= 150`; las ocho respuestas repetían exactamente la inicial, incluida la falsa admisibilidad y el precio empatado. Extracción y entrega correctas, sin corrección. No demuestra comprensión, racionalización ni saturación de persuasión. El ordinal refiere a la posición en la fuente, no la lista declarada; esa ambigüedad y la instrucción de repetir una respuesta correcta no se aislaron. 0/32 corresponde a una redacción, no a un efecto causal nulo de toda revisión.
34
+
35
+ [residual-diagnosis.json](data/launchgate-fresh-rechecks-2026-10-26/residual-diagnosis.json).
36
+
37
+ <!-- factorial-review-followup -->
38
+
39
+ [Referencias y órdenes de corrección: comparación de cuatro condiciones](flow-guard-review-factors-2026-10-26.es.md).