@furongjun1999/dsh-memory 0.4.7 → 0.4.9

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 (325) hide show
  1. package/README.md +130 -47
  2. package/codebuddy/CODEBUDDY.md +21 -10
  3. package/codebuddy/README.md +13 -1
  4. package/codebuddy/mcp.json +9 -0
  5. package/docs/GBrain/345/217/257/345/200/237/351/211/264/347/202/271_/347/201/265/346/236/242/350/220/275/347/202/271/344/272/244/346/216/245_20260919.md +169 -0
  6. package/docs/Pi/345/217/257/345/255/246/344/271/240/344/274/230/347/202/271_/347/201/265/346/236/242/345/244/247/350/204/221/346/224/271/350/277/233/344/272/244/346/216/245_20260915.md +144 -0
  7. package/docs/README.md +111 -0
  8. package/docs/discipline/harnesses.yaml +226 -152
  9. package/docs/discipline/templates/full.md.tmpl +61 -58
  10. package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_LoCoMo_/347/201/265/346/236/242_.md +127 -0
  11. package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_LoCoMo_/347/201/265/346/236/242_.png +0 -0
  12. package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_/347/201/265/346/236/242_vs_dejavu_/347/273/237/344/270/200/350/257/204/345/210/206_v7.md +202 -0
  13. package/docs/experiments/linkref_backfill/candidates_20260917.json +726 -0
  14. package/docs/experiments/linkref_backfill/candidates_internal_20260917.json +602 -0
  15. package/docs/experiments/linkref_backfill/candidates_internal_v2.json +603 -0
  16. package/docs/experiments/linkref_backfill/candidates_secret_20260917.json +884 -0
  17. package/docs/experiments/linkref_backfill/candidates_secret_v2.json +789 -0
  18. package/docs/experiments/m4-role-probe/census.py +86 -0
  19. package/docs/experiments/m4-role-probe/probe.py +89 -0
  20. package/docs/experiments/mapped_confidence/bench_mapped_conf.py +216 -0
  21. package/docs/experiments/mapped_confidence/post_check.py +75 -0
  22. package/docs/experiments/mapped_confidence/repro_thirdparty_tol.py +83 -0
  23. package/docs/experiments/mapped_confidence/result_mapped_conf.json +215 -0
  24. package/docs/hive//345/244/232/347/253/257harness/351/200/232/344/277/241/345/245/221/347/272/246_v0.1.md +42 -0
  25. package/docs/hive//346/243/200/347/264/242/346/224/266/346/225/233/345/256/236/346/265/213/344/270/216S1b/350/256/276/350/256/241_v0.1.md +43 -0
  26. package/docs/hive//346/243/200/347/264/242/350/267/257/345/276/204/344/270/216/350/256/244/347/237/245/347/273/223/346/236/204/345/245/221/347/272/246_v0.1.md +102 -0
  27. package/docs/hive//347/234/237/345/256/236/345/272/223/347/253/257/345/210/260/347/253/257/345/256/236/346/265/213_S1b/344/270/216/345/217/254/345/233/236/346/235/203/350/241/241_v0.1.md +57 -0
  28. package/docs/hive//347/234/237/345/256/236/345/272/223/347/253/257/345/210/260/347/253/257/345/256/236/346/265/213_S7/345/200/222/346/216/222/345/200/231/351/200/211/345/261/202_v0.1.md +126 -0
  29. package/docs/hive//350/234/202/345/267/242/345/217/214/345/256/236/344/276/213/344/272/222/351/252/214_/350/256/276/350/256/241/345/256/232/347/250/277.md +503 -0
  30. package/docs/{ → hive/}/350/234/202/345/267/242/345/267/245/344/275/234/350/256/260/345/277/206_/351/241/271/347/233/256/350/256/241/345/210/222.md +14 -2
  31. package/docs/mdcg/D_meta_/345/267/245/347/250/213/345/214/226/346/226/271/346/241/210_v0.2.md +216 -0
  32. package/docs/{README → mdcg/README}/350/257/246/347/273/206/347/211/210_v0.4.5.md +631 -625
  33. package/docs/{ → mdcg/}/344/270/273/344/273/243/347/220/206/345/255/220/344/273/243/347/220/206/350/256/260/345/277/206/346/236/266/346/236/204/350/256/276/350/256/241.md +1 -1
  34. package/docs/mdcg//344/273/243/347/240/201/350/257/204/345/256/241/344/270/216/346/235/241/344/273/266/345/214/226/346/263/250/351/207/212_/345/245/221/347/272/246_v0.1.md +82 -0
  35. package/docs/mdcg//345/205/250/345/272/223/344/273/243/347/240/201/350/257/204/345/256/241/344/270/216/346/235/241/344/273/266/345/214/226/346/263/250/351/207/212_/350/256/241/345/210/222_v0.1.md +600 -0
  36. package/docs/mdcg//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +263 -0
  37. package/docs/{ → mdcg/}/345/215/225/345/205/203/350/207/252/346/210/221/351/224/232/347/202/271_/347/263/273/347/273/237/346/217/220/347/244/272/350/257/215/346/240/207/345/207/206_v0.3.md +1 -1
  38. package/docs/mdcg//345/255/220/344/273/243/347/220/206/351/205/215/347/275/256/346/240/207/345/207/206_v0.5.md +236 -0
  39. package/docs/{ → mdcg/}/346/272/220/347/240/201/347/272/247/346/236/266/346/236/204/345/256/241/350/256/241_GPT/346/211/271/350/257/204/345/257/271/347/205/247_v1.0.md +2 -2
  40. package/docs/{ → mdcg/}/347/201/265/346/236/242/344/270/211/345/261/202/346/213/206/345/210/206/350/247/204/345/210/222_v0.1.md +181 -181
  41. package/docs/mdcg//347/201/265/346/236/242/350/256/260/345/277/206/345/212/250/350/257/215/345/215/217/350/256/256_v1.0-draft.md +172 -0
  42. package/docs/mdcg//347/216/257/344/272/214_/347/231/275/347/256/261/345/241/253/345/205/205/346/265/201/346/260/264/347/272/277_v0.1.md +31 -0
  43. package/docs/{ → mdcg/}/347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +2 -2
  44. package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_G4-G8/347/274/272/345/217/243/350/243/201/345/256/232/345/215/225_v0.1.md +1 -1
  45. package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_/347/264/242/345/274/225/344/270/216/345/267/245/347/250/213/350/247/204/350/214/203/345/214/226_/350/256/241/345/210/222_v0.1.md +4 -4
  46. package/docs/{ → mdcg/}/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_MdCGOS/344/270/216MCP/346/216/245/345/205/245_v0.1.md +2 -2
  47. package/docs/mdcg//350/267/250/347/253/257/351/252/214/350/257/201/344/270/216/345/220/214/346/255/245/345/215/217/350/256/256_v0.1.md +93 -0
  48. package/docs/plans/GridWorld/346/234/200/345/260/217/351/227/255/347/216/257/350/247/204/346/240/274_v0.1.md +176 -0
  49. package/docs/{ → swarm/}/350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +3 -3
  50. package/docs/swarm//350/234/202/347/276/244/345/220/214/351/224/231/346/243/200/346/265/213/345/256/236/351/252/214/345/215/217/350/256/256_v0.1.md +242 -0
  51. package/docs/theory//345/215/225/347/272/277/347/250/213/344/270/216/346/263/250/346/204/217/345/212/233/351/233/206/344/270/255_/346/227/240/344/272/211/350/256/256/347/220/206/350/256/272/346/226/207/346/241/243_v1.0.md +129 -0
  52. package/docs/theory//345/271/266/345/217/221/345/277/205/347/204/266/346/200/247/347/220/206/350/256/272_v0.2.md +134 -0
  53. package/docs/theory//346/246/202/345/277/265/345/210/206/345/261/202/345/257/271/351/275/220/350/241/250_v0.1.md +145 -0
  54. package/docs/{ → theory/}/347/220/206/350/256/272_/346/234/272/345/210/266_/344/273/243/347/240/201_/345/256/236/351/252/214_/347/274/272/345/217/243/347/237/251/351/230/265_v0.1.md +6 -6
  55. package/docs/{ → theory/}/347/220/206/350/256/272/344/273/223/346/213/206/345/210/206/344/270/216/347/231/275/347/256/261/347/237/245/350/257/206/345/272/223/345/206/205/350/277/201_v0.1.md +1 -1
  56. package/docs/theory//350/256/244/347/237/245/344/273/243/347/220/206/344/270/216/346/224/266/346/225/233/347/273/223/346/236/204_/346/235/241/344/273/266/350/256/272/351/207/215/346/236/204_v0.1.md +221 -0
  57. package/docs/world_model//344/270/226/347/225/214/346/250/241/345/236/213_/347/245/236/347/273/217/347/275/221/347/273/234/345/272/225/345/261/202/346/236/266/346/236/204_v1.0.md +237 -0
  58. package/docs//345/255/230/347/256/227/344/270/200/344/275/223/346/236/266/346/236/204/345/255/246/344/271/240_/345/244/226/351/203/250/347/220/206/350/256/272/345/257/271/347/205/247/344/270/216/350/267/257/347/272/277/344/272/244/346/216/245_20260916.md +98 -0
  59. package/docs//345/255/230/347/256/227/344/270/200/344/275/223/347/245/236/347/273/217/347/275/221/347/273/234/346/236/266/346/236/204_/346/200/273/347/272/262/344/270/216/344/272/244/346/216/245_20260916.md +109 -0
  60. package/docs//345/267/245/344/275/234/347/272/252/345/276/213_/350/256/244/347/237/245/345/233/276/346/235/241/347/233/256_v1.1.json +434 -405
  61. package/docs//347/201/265/346/236/242/350/207/252/346/210/221/346/224/271/350/277/233/345/267/245/344/275/234/350/256/241/345/210/222_/345/244/226/351/203/250/347/240/224/347/251/266/347/263/273/345/210/227/345/220/270/346/224/266_v1_20260919.md +286 -0
  62. package/docs//347/231/275/347/256/261/345/214/226/347/272/262/351/242/206_/344/270/211/351/241/271/347/233/256/345/255/246/344/271/240/346/200/273/346/236/266/346/236/204/344/270/216Ghidra/344/272/244/346/216/245_20260916.md +104 -0
  63. package/docs//350/256/260/345/277/206/350/257/204/345/256/241/347/263/273/347/273/237_/347/253/213/351/241/271/350/256/276/350/256/241/344/270/216/346/226/275/345/267/245/344/272/244/346/216/245_20260915.md +183 -0
  64. package/dsh/README.md +34 -1
  65. package/dsh/cordis.yml.example +13 -7
  66. package/dsh/hive-mcp-probe.mjs +94 -0
  67. package/dsh/hive-mcp.example.yml +62 -0
  68. package/dsh/update-lingshu.bat +11 -0
  69. package/dsh/update-lingshu.ps1 +337 -0
  70. package/lib/hooks.d.ts +8 -0
  71. package/lib/hooks.js +27 -24
  72. package/lib/index.d.ts +4 -2
  73. package/lib/index.js +29 -6
  74. package/lib/lib/datapath.d.ts +76 -1
  75. package/lib/lib/datapath.js +199 -13
  76. package/lib/lib/mdcg_client.d.ts +6 -3
  77. package/lib/lib/mdcg_client.js +6 -5
  78. package/lib/lib/mutual.js +4 -4
  79. package/lib/lib/prompt_safety.d.ts +48 -0
  80. package/lib/lib/prompt_safety.js +62 -0
  81. package/lib/lib/token_store.js +4 -5
  82. package/md_cg/audit.py +91 -2
  83. package/md_cg/autonomy.py +86 -15
  84. package/md_cg/backfill.py +36 -1
  85. package/md_cg/backfill_bigdomain.py +34 -0
  86. package/md_cg/bench6_arms.py +28 -1
  87. package/md_cg/bench6_common.py +10 -1
  88. package/md_cg/bench6_competitors.py +6 -1
  89. package/md_cg/bench_axis_domain.py +9 -1
  90. package/md_cg/bench_blind_comp.py +7 -1
  91. package/md_cg/bench_en_atoms_public.py +9 -0
  92. package/md_cg/bench_governance.py +348 -0
  93. package/md_cg/bench_lme_zh.py +16 -1
  94. package/md_cg/bench_locomo.py +2 -1
  95. package/md_cg/bench_locomo_zh.py +16 -1
  96. package/md_cg/bench_locomo_zh_public.py +4 -1
  97. package/md_cg/bench_longmem.py +2 -1
  98. package/md_cg/bench_membench.py +37 -6
  99. package/md_cg/bench_p0.py +4 -1
  100. package/md_cg/bench_progressive.py +61 -10
  101. package/md_cg/bench_role_views.py +238 -0
  102. package/md_cg/bench_task_ab.py +8 -1
  103. package/md_cg/bench_task_ab_llm.py +13 -1
  104. package/md_cg/bench_unified_en.py +6 -1
  105. package/md_cg/bench_zh_mad.py +20 -1
  106. package/md_cg/blindspot_tickets.py +123 -0
  107. package/md_cg/branches.py +286 -0
  108. package/md_cg/build_postings.py +73 -0
  109. package/md_cg/ccgc.py +949 -0
  110. package/md_cg/census.py +5 -1
  111. package/md_cg/chain.py +24 -3
  112. package/md_cg/codeindex.py +134 -17
  113. package/md_cg/coldverify.py +265 -0
  114. package/md_cg/comment_gate.py +338 -0
  115. package/md_cg/cond_compose.py +190 -0
  116. package/md_cg/cond_facts.py +155 -0
  117. package/md_cg/cond_template.json +107 -0
  118. package/md_cg/condition_anchor.py +143 -0
  119. package/md_cg/conformance.py +727 -0
  120. package/md_cg/consistency.py +25 -2
  121. package/md_cg/consolidate.py +53 -2
  122. package/md_cg/corpus.py +5 -1
  123. package/md_cg/crosscheck.py +42 -2
  124. package/md_cg/crypto.py +35 -1
  125. package/md_cg/d_meta.py +310 -0
  126. package/md_cg/datapath.py +201 -26
  127. package/md_cg/docindex.py +122 -1
  128. package/md_cg/eval_common.py +35 -6
  129. package/md_cg/evidence.py +27 -1
  130. package/md_cg/evolution.py +21 -1
  131. package/md_cg/export.py +11 -1
  132. package/md_cg/forgetting.py +34 -4
  133. package/md_cg/fsutil.py +81 -2
  134. package/md_cg/hotcache.py +214 -0
  135. package/md_cg/hyperedge.py +251 -0
  136. package/md_cg/identity.py +20 -3
  137. package/md_cg/insight.py +19 -3
  138. package/md_cg/lexicon/build_cedict_en_zh.py +9 -0
  139. package/md_cg/lexicon/build_standard_en.py +171 -168
  140. package/md_cg/lexicon/expand_en_zh.py +6 -0
  141. package/md_cg/lifecycle.py +273 -0
  142. package/md_cg/linkref.py +281 -0
  143. package/md_cg/links.py +29 -1
  144. package/md_cg/mcp_server.py +894 -168
  145. package/md_cg/md_whitebox.py +53 -1
  146. package/md_cg/mdcg.py +1205 -41
  147. package/md_cg/mdcos.py +1060 -76
  148. package/md_cg/metacognition.py +39 -4
  149. package/md_cg/migrate.py +4 -0
  150. package/md_cg/migrate_aeis.py +221 -213
  151. package/md_cg/migrate_roleplay.py +8 -0
  152. package/md_cg/migrate_wisdom_graph.py +14 -1
  153. package/md_cg/mreview/__init__.py +25 -0
  154. package/md_cg/mreview/__main__.py +110 -0
  155. package/md_cg/mreview/bundle.py +178 -0
  156. package/md_cg/mreview/candidates.py +262 -0
  157. package/md_cg/mreview/govern.py +694 -0
  158. package/md_cg/mreview/locate.py +939 -0
  159. package/md_cg/mreview/pipeline.py +729 -0
  160. package/md_cg/mreview/rules/duplication.json +21 -0
  161. package/md_cg/mreview/rules/field_coverage.json +54 -0
  162. package/md_cg/mreview/rules/source_license.json +21 -0
  163. package/md_cg/mreview/rules/template_flow.json +21 -0
  164. package/md_cg/mreview/ruleset.py +253 -0
  165. package/md_cg/nodefile.py +269 -1
  166. package/md_cg/pooling.py +23 -1
  167. package/md_cg/postings.py +298 -0
  168. package/md_cg/predict.py +113 -15
  169. package/md_cg/progressive.py +3 -0
  170. package/md_cg/protect.py +18 -5
  171. package/md_cg/protocol.py +372 -0
  172. package/md_cg/provenance.py +262 -0
  173. package/md_cg/reach.py +453 -0
  174. package/md_cg/refindex.py +88 -4
  175. package/md_cg/refine.py +20 -1
  176. package/md_cg/roleviews.py +89 -0
  177. package/md_cg/routing.py +76 -0
  178. package/md_cg/scrub.py +68 -3
  179. package/md_cg/security.py +26 -1
  180. package/md_cg/self_state.py +65 -2
  181. package/md_cg/selfreport.py +151 -0
  182. package/md_cg/semantic/canonical.py +5 -0
  183. package/md_cg/semantic/en_normalizer.py +364 -295
  184. package/md_cg/semantic/zh_en_atoms.py +139 -136
  185. package/md_cg/signer.py +41 -1
  186. package/md_cg/sources.py +583 -547
  187. package/md_cg/statushdr.py +179 -0
  188. package/md_cg/stg.py +59 -18
  189. package/md_cg/subgraph.py +23 -0
  190. package/md_cg/sustain.py +74 -1
  191. package/md_cg/tasks.py +471 -0
  192. package/md_cg/test_action_derive.py +203 -0
  193. package/md_cg/test_audit_rotate.py +270 -0
  194. package/md_cg/test_autonomy.py +26 -0
  195. package/md_cg/test_bench_governance.py +102 -0
  196. package/md_cg/test_blindspot_tickets.py +166 -0
  197. package/md_cg/test_branches.py +249 -0
  198. package/md_cg/test_ccg_perturb.py +1 -1
  199. package/md_cg/test_ccgc.py +433 -0
  200. package/md_cg/test_codeindex.py +338 -0
  201. package/md_cg/test_comment_gate.py +187 -0
  202. package/md_cg/test_cond_compose_anchors.py +76 -0
  203. package/md_cg/test_condition_anchor.py +82 -0
  204. package/md_cg/test_conformance.py +343 -0
  205. package/md_cg/test_d_meta.py +412 -0
  206. package/md_cg/test_datapath_root.py +188 -0
  207. package/md_cg/test_en_pipeline.py +24 -0
  208. package/md_cg/test_gain_gate.py +47 -1
  209. package/md_cg/test_health_scale.py +173 -0
  210. package/md_cg/test_hot_cold.py +187 -0
  211. package/md_cg/test_hyperedge.py +245 -0
  212. package/md_cg/test_identity_attribution.py +6 -0
  213. package/md_cg/test_index_durability.py +224 -0
  214. package/md_cg/test_lifecycle.py +309 -0
  215. package/md_cg/test_linkref.py +306 -0
  216. package/md_cg/test_md_access_parity.py +15 -3
  217. package/md_cg/test_mr_m1.py +769 -0
  218. package/md_cg/test_mr_m2.py +587 -0
  219. package/md_cg/test_mr_m3.py +710 -0
  220. package/md_cg/test_mr_m4.py +485 -0
  221. package/md_cg/test_p1.py +1 -1
  222. package/md_cg/test_p11_consistency.py +1 -1
  223. package/md_cg/test_p12_metacognition.py +2 -2
  224. package/md_cg/test_p16_self_state.py +1 -1
  225. package/md_cg/test_p26_refindex.py +50 -21
  226. package/md_cg/test_p27_docindex.py +258 -4
  227. package/md_cg/test_p28_refcheck.py +1 -1
  228. package/md_cg/test_p29_session_ingest_export.py +1 -1
  229. package/md_cg/test_p2_mcp.py +7 -1
  230. package/md_cg/test_p31_insight.py +24 -0
  231. package/md_cg/test_p38_contextualize.py +1 -1
  232. package/md_cg/test_p39_vision_evidence.py +1 -1
  233. package/md_cg/test_p40_refine_worklist.py +1 -1
  234. package/md_cg/test_p41_evolve_patrol.py +1 -1
  235. package/md_cg/test_p42_provenance.py +1 -1
  236. package/md_cg/test_p43_pooling.py +41 -13
  237. package/md_cg/test_p44_md_whitebox.py +14 -1
  238. package/md_cg/test_protocol.py +243 -0
  239. package/md_cg/test_reach.py +378 -0
  240. package/md_cg/test_reach_keys.py +201 -0
  241. package/md_cg/test_reach_meta_exits.py +145 -0
  242. package/md_cg/test_read_clip.py +141 -0
  243. package/md_cg/test_retr_s1.py +340 -0
  244. package/md_cg/test_retr_s1b.py +209 -0
  245. package/md_cg/test_retr_s3.py +194 -0
  246. package/md_cg/test_retr_s4.py +163 -0
  247. package/md_cg/test_retr_s5.py +200 -0
  248. package/md_cg/test_retr_s6.py +157 -0
  249. package/md_cg/test_retr_s7.py +385 -0
  250. package/md_cg/test_retr_s8_time.py +316 -0
  251. package/md_cg/test_retr_s9_edges.py +286 -0
  252. package/md_cg/test_retr_s9_entity_ctx.py +175 -0
  253. package/md_cg/test_review_conformance.py +367 -0
  254. package/md_cg/test_role_views.py +354 -0
  255. package/md_cg/test_tasks.py +409 -0
  256. package/md_cg/test_tool_face.py +189 -0
  257. package/md_cg/test_trust.py +361 -0
  258. package/md_cg/test_twophase.py +286 -0
  259. package/md_cg/test_units_poll.py +71 -0
  260. package/md_cg/test_v14_fixes.py +397 -0
  261. package/md_cg/test_validity_filter.py +280 -0
  262. package/md_cg/test_wisdom_md_store.py +7 -3
  263. package/md_cg/test_writepipe.py +214 -0
  264. package/md_cg/theory.py +17 -2
  265. package/md_cg/tokens.py +134 -12
  266. package/md_cg/tool_face.py +261 -0
  267. package/md_cg/trust.py +943 -0
  268. package/md_cg/twophase.py +232 -0
  269. package/md_cg/units.py +665 -0
  270. package/md_cg/vision_evidence.py +25 -2
  271. package/md_cg/weights.py +25 -2
  272. package/md_cg/whitebox.py +33 -2
  273. package/md_cg/whitebox_kb/data/verify_cache.json +21233 -360
  274. package/md_cg/whitebox_kb/data/verify_savings.jsonl +5124 -0
  275. package/md_cg/whitebox_kb/wisdom/audit_log/chain_heat.json +10 -10
  276. package/md_cg/whitebox_kb/wisdom/code_compose.py +113 -6
  277. package/md_cg/whitebox_kb/wisdom/code_solidified.json +1 -1
  278. package/md_cg/whitebox_kb/wisdom/verifier.py +340 -55
  279. package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db +0 -0
  280. package/md_cg/writelimit.py +37 -7
  281. package/md_cg/writepipe.py +543 -0
  282. package/package.json +2 -2
  283. package/skills/skills/designer-perspective/scripts/__pycache__/designer.cpython-310.pyc +0 -0
  284. package/skills/skills/designer-perspective/scripts/designer.py +17 -1
  285. package/skills/skills/designer-perspective/tests/selftest.py +3 -1
  286. package/src/hooks.ts +27 -22
  287. package/src/index.ts +33 -6
  288. package/src/lib/datapath.ts +211 -13
  289. package/src/lib/mdcg_client.ts +12 -8
  290. package/src/lib/mutual.ts +411 -411
  291. package/src/lib/prompt_safety.ts +62 -0
  292. package/src/lib/token_store.ts +4 -5
  293. package/zcode/AGENTS.md +21 -10
  294. package/zcode/README.md +4 -0
  295. package/docs//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +0 -221
  296. /package/docs/{AGI → eval/AGI}/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v1.0.md" +0 -0
  297. /package/docs/{AGI → eval/AGI}/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v2.0.md" +0 -0
  298. /package/docs/{ → eval/}/345/256/236/351/252/214/346/226/271/346/241/210_/345/255/246/344/271/240/351/227/255/347/216/257AB/344/270/216/346/250/252/350/257/204_v1.0.md" +0 -0
  299. /package/docs/{ → eval/}/346/250/252/350/257/204_/345/205/255/345/256/266100/351/242/230/344/270/255/350/213/261/345/217/214/346/237/245_v1.0.md" +0 -0
  300. /package/docs/{guardrail-charter.md → mdcg/guardrail-charter.md} +0 -0
  301. /package/docs/{lingshu_tutorial.html → mdcg/lingshu_tutorial.html} +0 -0
  302. /package/docs/{memory-assessment.html → mdcg/memory-assessment.html} +0 -0
  303. /package/docs/{memory_score.html → mdcg/memory_score.html} +0 -0
  304. /package/docs/{memory_score.png → mdcg/memory_score.png} +0 -0
  305. /package/docs/{release_v0.3.0.md → mdcg/release_v0.3.0.md} +0 -0
  306. /package/docs/{release_v0.4.5.md → mdcg/release_v0.4.5.md} +0 -0
  307. /package/docs/{tool_table_v0.3.0.md → mdcg/tool_table_v0.3.0.md} +0 -0
  308. /package/docs/{ → mdcg/}/344/273/244/347/211/214/344/270/216/350/247/222/350/211/262/346/235/203/350/201/214/345/210/206/347/246/273_v0.1.md" +0 -0
  309. /package/docs/{ → mdcg/}/347/201/265/346/236/24282/345/267/245/345/205/267_/345/212/237/350/203/275/346/225/264/347/220/206/344/270/216/350/277/201/347/247/273/346/230/240/345/260/204_v0.1.md" +0 -0
  310. /package/docs/{ → mdcg/}/347/201/265/346/236/242MCP/345/267/245/345/205/267/346/200/273/350/241/250_v3.4.md" +0 -0
  311. /package/docs/{ → mdcg/}/347/201/265/346/236/242_/350/207/252/346/210/221/345/261/202/345/256/232/344/271/211.md" +0 -0
  312. /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_MD/347/233/256/345/275/225/346/226/271/346/241/210_v0.1.md" +0 -0
  313. /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_/346/235/241/344/273/266/347/251/272/351/227/264/345/220/210/346/210/220/344/270/216/347/224/237/346/225/210/346/235/241/344/273/266/345/217/243/345/276/204_v0.1.md" +0 -0
  314. /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276/344/275/234/344/270/272/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_/350/257/204/344/274/260/344/270/216/350/267/257/347/272/277_v0.1.md" +0 -0
  315. /package/docs/{ → plans/}/345/221/275/345/220/215/346/262/273/347/220/206_/351/241/271/347/233/256/350/256/241/345/210/222.md" +0 -0
  316. /package/docs/{ → plans/}/347/237/245/350/257/206/345/233/276/350/260/261/351/241/271/347/233/256_/344/272/244/346/216/245/346/226/207/346/241/243_20260914.md" +0 -0
  317. /package/docs/{ → swarm/}/350/234/202/347/276/244/345/244/232/346/231/272/350/203/275/344/275/223_/344/275/277/347/224/250/346/212/245/345/221/212_20260913.md" +0 -0
  318. /package/docs/{ → swarm/}/350/234/202/347/276/244/345/244/232/346/231/272/350/203/275/344/275/223_/345/212/237/350/203/275/350/257/264/346/230/216_v0.6.md" +0 -0
  319. /package/docs/{ → swarm/}/350/234/202/347/276/244/347/233/262/345/214/272/346/240/207/350/256/260_v1.0.md" +0 -0
  320. /package/docs/{ → theory/}/344/277/241/346/201/257/345/267/256/344/270/272/344/273/200/344/271/210/345/277/205/347/204/266/345/255/230/345/234/250/344/270/224/350/207/252/347/204/266/346/211/251/345/244/247.md" +0 -0
  321. /package/docs/{ → theory/}/346/231/272/350/203/275/347/232/204/345/205/254/347/220/206/345/214/226/345/237/272/347/237/263.md" +0 -0
  322. /package/docs/{ → theory/}/346/231/272/350/203/275/347/232/204/350/256/244/347/237/245/350/277/207/347/250/213.md" +0 -0
  323. /package/docs/{ → theory/}/346/231/272/350/203/275/350/256/2723.4.md" +0 -0
  324. /package/docs/{ → theory/}/347/231/275/347/256/261/346/231/272/350/203/275/346/230/257/344/273/200/344/271/210/357/274/237.md" +0 -0
  325. /package/docs/{ → theory/}/347/231/275/347/256/261/346/231/272/350/203/275/347/263/273/345/210/227/302/267/347/254/254/344/272/224/347/257/207/357/274/232/350/256/251AI/347/234/237/346/255/243/350/243/205/344/270/212/350/256/260/345/277/206.md" +0 -0
@@ -35,10 +35,10 @@ P8 34 · P9 37 · P10 24 · P11 27 · P12 32 · P13 42 · P14 44 · P15 53 · P1
35
35
  | 3 | **RRF 并行多路召回** | `search_rrf(...)` | 词法 / 条件桶 / 实体 / 图扩展 四路并行 → Reciprocal Rank Fusion;结果带 **provenance**(可审计)|
36
36
  | 4 | **审核队列 edit/merge** | `propose` · `review_list` · `review_decide` | 海马体式 `hippocampus/inbox.jsonl` → `decisions.jsonl`;裁决 **accept / reject / edit / merge** |
37
37
  | 5 | **tombstone + 恢复检查** | `forget` · `restore` · `is_tombstoned` | 软删除入 `trash/` + `_deletions.jsonl` 删除清单;恢复时校验,须 `force` 才可强恢复 |
38
- | 6 | **payload-free 审计** | `_audit` · `audit_records` | 每次变更只记 `{t,op,id,actor,payload_hash}`,**绝不记内容** |
38
+ | 6 | **payload-free 审计 + 分片轮转** | `_audit` · `audit_records` · `rotate_audit` · `audit_scale` | 每次变更只记 `{t,op,id,actor,payload_hash}`,**绝不记内容**;活动日志超 `AUDIT_ROTATE_BYTES` 即 `os.replace` 原子切分(分片数 ≤ `AUDIT_KEEP_SHARDS`)⇒ **单文件与总量都有上界**;读数走 O(1) 元数据口径(超大历史分片只给量级并标 `exact=False`)|
39
39
  | 7 | **budget-driven pack** | `recall(query, budget_tokens)` | 装到预算花完;**超大条目跳过而非停下**(继续尝试更小的)|
40
40
 
41
- 另:`health_os()` 在原有健康度上并入 OS 指标(role 分布 / 待审数 / 墓碑数 / 审计事件数 / 反思数)。
41
+ 另:`health_os()` 在原有健康度上并入 OS 指标(role 分布 / 待审数 / 墓碑数 / 审计事件数 / 反思数);审计面另透出**轮转证据**:`audit_shards` / `audit_total_bytes` / `audit_total_events` / `audit_total_exact` / `audit_oversized`。
42
42
 
43
43
  ---
44
44
 
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: 跨端验证与同步协议_v0.1
3
+ overview: 主代理(designer/DSH)与验证端(zcode,在 4_ai 隔离副本)之间「请求验证 → 出回执 → 台账闭合」的机械协议;载体=蜂巢任务(spec/result 留痕)+ 本地 git 传输 + 灵枢任务实体台账。
4
+ 状态: 生效(v0.1 · 2026-09-17)
5
+ 关联: docs/mdcg/全库代码评审与条件化注释_计划_v0.1.md
6
+ ---
7
+
8
+ # 跨端验证与同步协议 v0.1
9
+
10
+ ## 一、角色与职责(使用者裁决 2026-09-17)
11
+
12
+ | 角色 | 实体 | 职责 | 权限 |
13
+ |---|---|---|---|
14
+ | **主代理** | DSH 端 designer(actor=dsh-memory) | 编排、改码、**持有任务台账**、判定验证是否闭合 | 须含 `task` op |
15
+ | **验证端** | zcode(在 **4_ai 验证面** `<verify-face>/dsh-memory`) | 独立复算与反证,产出**回执** | **无权设 task**;只出回执,不改台账 |
16
+
17
+ > 台账归属是硬边界:`task` 由主代理写。验证端若要表达结论,走**回执**(第三节),不写任务实体。
18
+
19
+ ## 二、同步通道(不经网络,不触第 14 条)
20
+
21
+ 1. 主代理在 2_ai/dsh-memory 提交(pathspec 部分提交)。
22
+ 2. 验证端从主代理仓**直接 fetch**(本地路径即远端):
23
+ `git -C "<verify-face>/dsh-memory" fetch "<main-repo>/dsh-memory" main`
24
+ (**占位符**:本机真实路径不入公开文档——第 14 条;执行时按本机部署替换)
25
+ 然后 `git checkout -B verify/<verify_id> FETCH_HEAD`(或 merge)到隔离分支。
26
+ 3. **验证面 = 已提交状态**:工作区未提交的在途改动**一律不进入验证面**——这是把「我的脏工作区」与「被验证的产物」分开的关键。
27
+ 4. 4_ai 的独立性即互斥保证:验证端不写 2_ai,主代理不写 4_ai;两侧测试副产物(如 _md_cg_p27/、verify_cache.json)互不干扰。
28
+ 5. 需要对公众发布时,主代理才 `push origin main`,且**推送前必须过第 14 条双清单**。
29
+
30
+ ## 三、握手格式(蜂巢任务即信道)
31
+
32
+ **请求(主代理 → 验证端)**:一条 task 台账卡 + 交给验证端的 spec 模板。
33
+
34
+ ```
35
+ [VERIFY-REQ] verify_id=<verify_id> commit=<sha> repo=<verify-face>/dsh-memory
36
+ acceptance=<逐条可判的验收判据>
37
+ commands=<验证端将执行的确定性命令(argv 形式,零 LLM)>
38
+ ```
39
+
40
+ **回执(验证端 → 主代理)**:验证端用蜂巢 `submit --spec` 派发确定性任务,spec 的 `user_prompt` 以如下行**开头**,结论落在该任务 `result.json`:
41
+
42
+ ```
43
+ [VERIFY-RESULT] verify_id=<verify_id> commit=<sha> verdict=PASS|FAIL|PARTIAL
44
+ evidence=<命令输出摘要 / 失败项清单 / 与基线的差异>
45
+ ```
46
+
47
+ > 为什么用蜂巢:第 17 条已强制「执行性任务经蜂巢派发」,spec/status/result 三件套天然留痕——于是**回执不需要额外机制**,它就是一条已留痕的任务。
48
+
49
+ ## 四、机械判定:怎么知道「验证完了」
50
+
51
+ 主代理侧一条**只读巡检**(L1 可直跑,须输出一行留痕):
52
+
53
+ 1. 记水位 w:发起请求时刻 `hive/jobs` 的最大 `created_ts`。
54
+ 2. 枚举 `created_ts > w` 的任务,筛出 `spec.json` 的 `user_prompt` 以 `[VERIFY-RESULT]` 开头者。
55
+ **防自证**:本端(actor=dsh-memory)派发的任务一律不算,只认非本端派发的回执。
56
+ 3. **判定为「验证已回」的充要条件**:存在 `[VERIFY-RESULT]` 任务,其 `verify_id` 与 `commit` 与请求**逐字一致**,且 `result.json` 已落盘。
57
+ 4. 命中 → 主代理据此写台账:`task action=status`(通过迁 `done` 且 result 必填;不通过迁 `blocked` 并记缺失维度)。
58
+ 5. 未命中 → 状态是「**未收到回执**」;措辞不得是不可判定的「等验证中」。
59
+ 6. **基线采集位置(迭代二修补 · 经编外复核两轮修正)**:在**同一验证面**上取两个期望——**基线 commit 的期望 vs 候选 commit 的实测**;禁止从发起端工作区取任何期望值(发起端工作区结果只用于「发起端是否引入回归」的自测,不得写入验收判据)。
60
+ > 复核指出的原文缺陷:「期望值与实测值同源采集」表述含糊、有**同义反复风险**,故改为按两个 commit 显式命名。
61
+ > 引用回归结果时必须逐字附 **SUMMARY 原文 + 失败清单原文**,不得只报「全绿/几红」这类概括。
62
+ > **计数口径(经验证端纠正)**:分母 = **通过数 + 失败数**,跳过**单列**——实证「84/85 通过,3 跳过」= 84 通过 + 1 失败 + 3 跳过;「86/90 通过」= 86 + 4。故「84+3」不构成矛盾。
63
+ > 更正记录:本协议迭代一曾据误读断言「SUMMARY 计数不自洽」,该断言**错误**,已由验证端指出并在此更正——**引用回归结果前先核口径,不确定就只附原文**。
64
+ > 归因(智能论三问协议 · `CommonTrustProtocol/docs/条件论失败分析协议.md`):首轮判据写死「期望 3 红」= 在**发起端工作区**观测、却声明适用于**验证面** → 失配维度 = **观测位置 + 条件边界**;机制缺的条件声明 = 「基线采集位置 = 验证面」。
65
+ > 证据:回执 job `h1789634407680_445c` 在 4_ai 纯净树得 **85/85 零红**,而发起端脏树有 3 红(源于 20+ 项未提交在途改动,与提交产物无关)。
66
+ > 附:本节判定已机械化实现于**主代理侧仓外运维件** `<main-ops-dir>/poll_verify_receipt.py`(**刻意不入公开仓**:内含本机绝对路径,触第 14 条)。
67
+
68
+ 7. **判据面同一性(迭代四~七 → 收口后回填 · 主体侧独立复算确认)**:把「判据是否被改动」变成一件可机械比对的事——
69
+ - **集合**:`md_cg/**/test_*.py` + `scripts/run_tests.py`(收口后 98 文件)
70
+ - **算法**:`sha256(按仓库相对路径升序拼接各文件字节)`,取前 16 个十六进制字符
71
+ - **取数**:`python -X utf8 scripts/criteria_fingerprint.py --commit <rev>`(git archive 抽树,只读**已提交状态**,不触碰工作区)
72
+ - **实证**:`5a2778a` → `c5a3280201a4499f`(97 文件),与验证端回执**逐字一致**(算法由此反解确认);收口后 `main` → `217a3a1b7c5db309`(98 文件),与验证端冻结值一致。
73
+ - **权限边界**:判据的冻结与推进由验证端持有;主体只做**复算与比对**,不得自行改判据或自认通过。
74
+ 8. **收口后置断言(本轮缺陷修补 · 强制)**:以 plumbing(临时索引 + `commit-tree` + `update-ref`)合并后,必须 `git read-tree <新提交>` 同步真实索引,并断言 `git diff <合并提交> <新提交> -- <代码面>` 为空;收口后附 `criteria_fingerprint --commit main` 与验证端冻结值的比对。
75
+ > 缺陷实证:未同步索引时,紧随其后的普通 `git commit` 以**合并前树**落盘,把合并内容**静默还原**(历史里 merge 提交仍在,故两端都易漏看)。本轮由第 7 项的指纹比对发现:`main` 曾为 96 文件 / `be5bfbb5d03b4d3d` ≠ 冻结 97 文件 / `c5a3280201a4499f`,修正提交 `a0dad20`。
76
+ > 同批证据:冻结后 `main`(隔离抽树)全组回归 = **SUMMARY 116/116 通过、3 跳过**,`criteria_fingerprint = 217a3a1b7c5db309`。
77
+ ## 五、TTL 与措辞纪律
78
+
79
+ - 每条请求带 deadline(建议 24h)。
80
+ - 到期未回:主代理在会话中**明确报告「未收到验证回执」**并给出水位与检索证据;不得暗示已通过。
81
+ - 严禁把「我自己的自测通过」表述为「已验证」——自测是主代理自身的验证门禁,不是第三方验证。
82
+
83
+ ## 六、不适用条件
84
+
85
+ - 不适用于纯查询/无仓库改动的任务(无产物则无需交叉验证)。
86
+ - 不替代第 5 条(主代理自身须先过断言/回归)与第 14 条(推送前双清单)。
87
+ - 不授权验证端写台账、改 2_ai 工作区、或代主代理提交。
88
+ - 4_ai 的 .venv 与依赖环境由验证端自持;主代理不假定两侧环境一致,差异须在回执 evidence 中显式声明。
89
+
90
+ ## 七、待定项
91
+
92
+ 1. 验证端两个令牌当前 ops_allow=[*](含 task),与「验证端无权设 task」冲突 → 是否收窄为「全 op 减 task」待使用者确认。
93
+ 2. 主代理令牌放行 task 后,mdcg MCP 常驻进程需重启才生效;期间的直调兜底口径待固化。
@@ -0,0 +1,176 @@
1
+ # GridWorld 最小闭环规格 v0.1
2
+
3
+ > 目的:回应外部评审两轮共识——系统最大缺口是「行动/环境落地」:预测→行动→世界变化→预测误差→模型更新的闭环不存在。缺口矩阵 `docs/theory/理论_机制_代码_实验_缺口矩阵_v0.1.md:51`(#25 三端口架构)已文档声明输出端口,但**专属具身场景测试**仍留白。本文件设计一个最小 Grid World 闭环实验,把「预测→行动→观测→误差→回灌→模型更新」焊成一条可跑通、可度量、可审计的链。
4
+ >
5
+ > **本文件是规格**:启动实现须使用者批准;本文不改任何代码。
6
+ >
7
+ > 诚实边界先行:自建玩具环境(确定性/全观测/可枚举/单目标)证据强度受限(GPT 评审已声明)——本实验证明的是**闭环机制存在且收敛**,不是「世界模型能力证明」(§8)。
8
+
9
+ ---
10
+
11
+ ## 1. 可复用资产清单(调研结论)
12
+
13
+ 闭环所需零件仓内**全部已存在**,缺口只在「动作/环境」一段(§6)。逐条核对过的接口:
14
+
15
+ | 资产 | 位置 | 签名(核对过) | 闭环角色 |
16
+ |---|---|---|---|
17
+ | 每动作候选枚举 | `md_cg/predict.py:226` | `branch_candidates(cg, node_id, semantic=True) -> [{node_id, confidence, source, relation_type, condition}]` | **动作选择器**:当前状态节点出边枚举,`condition` 字段承载动作 |
18
+ | 多步路线预测 | `md_cg/predict.py:541` | `routes(cg, start_id=None, blindspot_id=None, horizon=3, max_branches=5, sort="composite", limit=0, semantic=True)` | 多步预测面(M3 规划评测);route 含 `path/confidence/uncertainty_bound/score` |
19
+ | 预测反馈回灌 | `md_cg/predict.py:678` | `feedback(cg, predicted_node_id, actual_node_id=None, hit=None, note="", actor="predict", sync_self=True, channel=None)` | **模型更新落点**:hit→指向边置信度 +0.05(`_boost_incoming` `:599`);miss→`add_rejected` 负记忆;`sync_self=True` 自动刷自我状态卡 |
20
+ | 命中率动态死区 | `md_cg/predict.py:655` | `dynamic_hit_threshold(cg, limit=200)`;常量 `MIN_SAMPLES=50`(`:40`)、`BASE_HIT_RATE=0.40`(`:41`)、`EDGE_BOOST=0.05`(`:43`)、`PRIOR_STRENGTH=20`(`:48`) | 自我校准:样本<50 不触发反思;threshold=max(BASE, mean−2σ) |
21
+ | 通道贝叶斯 | `md_cg/predict.py:319` / `:364` | `beta_posterior(hits, prior_k=20, base=0.40)`;`channel_posterior(cg, channel=None, limit=200)` | 可信度后验(置信度≠可信度);`channel="gridworld"` 通道分离 |
22
+ | 预测统计 | `md_cg/predict.py:888` | `stats(cg, limit=20)` → `{calls, routes_generated, feedback_samples, hit_rate, beta, dynamic, recent}` | 指标读数口 |
23
+ | 盲区五态闭环 | `md_cg/predict.py:790` | `learn_blindspots(cg, blindspot_id=None, limit=8, horizon=3, max_branches=5, apply=False, actor="insight")`;五态 `unknowable/no_anchor/unresolved/carried/resolved`(`:797-801`);`apply=True` 落 `gap_hint`(幂等,`:765`) | 元认知闭环:失败区域→待补线索;`_learn.jsonl` 留痕 |
24
+ | 因果可达验证 | `md_cg/predict.py:922` | `causal_path(cg, a_id, b_id, max_depth=5)` | M1 冒烟:验证播种图因果连通性 |
25
+ | 探索提案 | `md_cg/autonomy.py:95` | `proposals(cg, window=200, limit=3, enforce_gain=True)`;评分 `=W_D2·Σ\|d2\|+W_BLINDSPOT·BLINDSPOT+W_DEFER·DEFER`(权重 `:34`),score≤0 不提案 | 探索信号源;**只读 `_reflection.jsonl`**(缺口 G4) |
26
+ | 探索闭环 | `md_cg/autonomy.py:158` | `explore(cg, apply=False, limit=3, window=200, actor="autonomy", bypass_gain=False)`;P-T-40 四保护(`gain_gate` `:51`) | 元认知面:提案→五态验证→回写;`_explore.jsonl` 留痕 |
27
+ | 反思留痕 | `md_cg/mdcg.py:1472` | `MdCG.reflect(query, results, user_feedback=None)` → 记录 `{t, query, d_prev, d_curr, d_delta, d2, states, n_results, feedback}`(`:1487-1497`) | d2/BLINDSPOT 信号产生点,proposals 唯一输入 |
28
+ | 检索(带资格态) | `md_cg/mdcg.py:1247` | `MdCG.search(query, layer=None, k=20, context=None, min_results=1, record=True, include_neg=True, judge=True, pools=None, session=None)` | reflect 的 results 来源;`judge=True` 产出 qualification |
29
+ | 认知图构造 | `md_cg/mdcg.py:477` | `MdCG(root, autoflush=64)` | 实验用独立临时 root,不碰生产库 |
30
+ | 自我状态刷新 | `md_cg/self_state.py:438` | `refresh(cg, subject="self:lingshu", window=20, ..., actor="self_state", force=False, strict=False, session=None)`(幂等 fingerprint `:208`,版本链 `_self_state.jsonl`) | 指标④读数源;`snapshot` `:184` |
31
+ | 自我预测面 | `md_cg/self_state.py:235` | `_prediction_face(cg)` → `{hit_rate, beta_mean, beta_ci95, threshold, reflect, ece}` | 自我可靠性指标直读 |
32
+ | 元认知观测面 | `md_cg/metacognition.py:123` / `:248` / `:167` | `trace(cg, window=50)`、`blindspots(cg, limit=20, window=200)`、`calibration(cg, max_scan=2000)` | 情绪面/ECE 旁证 |
33
+ | mdcos 面板 | `md_cg/mdcos.py:2282` / `:2292` / `:2303` / `:1912-1924` | `predict_routes(...)`、`predict_feedback(predicted_node_id, actual_node_id=None, hit=None, note="", actor="predict", sync_self=True)`、`predict_stats(...)`、`insight(action="explore"/"learn")` | 高层入口;predict_feedback **无 channel 参数**(缺口 G5) |
34
+ | 输出端口对照 | `md_cg/sustain.py:230` / `:297` | `mutual_watch(cg, peer, *, restart_cmd=None, d=None, interval, restart_cooldown, fresh_timeout, poll=0.5, spawner=None)` | #25 既有最小具身形态;本实验是其**环境侧**补充,不替换 |
35
+
36
+ **账本同构约定**:既有 append-only jsonl——`_prediction.jsonl`(`md_cg/predict.py:62`)、`_learn.jsonl`(`:724`)、`_explore.jsonl`(`md_cg/autonomy.py:36`)、`_reflection.jsonl`(`md_cg/metacognition.py:105`)、`_self_state.jsonl`(`md_cg/self_state.py:74`)。统一形态:`type`/`t`/`actor` 前置字段 + `append_jsonl` 失败不阻塞(如 `md_cg/predict.py:86-90`)。本实验新增 **`_gridworld.jsonl`** 同构留痕(§5)。
37
+
38
+ ---
39
+
40
+ ## 2. 环境接口(零依赖,纯 python stdlib)
41
+
42
+ 对齐零依赖纪律(`md_cg/predict.py:23` 同款声明)。建议形态 `md_cg/gridworld.py`(另案,本文只定接口):
43
+
44
+ ```python
45
+ class GridWorldEnv:
46
+ """最小确定性网格世界:W×H(默认 5×5),单 agent 单目标,静态障碍。"""
47
+
48
+ def __init__(self, width=5, height=5, start, goal,
49
+ obstacles=frozenset(), seed=None): ...
50
+ def reset(self) -> str:
51
+ """回起点,episode+1,返回初始 state_id("gw_s_x_y")。"""
52
+ def actions(self, state_id) -> tuple:
53
+ """合法动作:("up","down","left","right") 剔除出界项。"""
54
+ def transition(self, state_id, action) -> str:
55
+ """纯函数:确定性转移,可离线全量枚举。"""
56
+ def step(self, state_id, action) -> tuple:
57
+ """执行 → (next_state_id, reward, done)。"""
58
+ ```
59
+
60
+ 确定性规则(全部可机器断言,M1 验收项):
61
+
62
+ | 规则 | 定义 |
63
+ |---|---|
64
+ | 确定性转移 | 同一 `(s, a)` 永远映射同一 `s'`(`transition` 纯函数,无随机项) |
65
+ | 碰撞 | 目标格是墙(出界)或障碍 → **原地不动**(可学的条件规则,非非法动作) |
66
+ | 奖励 | 到达 goal +1,其余 0;无折扣、无中间奖励 |
67
+ | 终止 | `done = (next_state_id == goal_id)` |
68
+ | 观测 | **全观测**:观测=状态本身,不做部分可观测(诚实边界内,§8) |
69
+
70
+ ---
71
+
72
+ ## 3. 状态 ↔ 认知图编码
73
+
74
+ 世界模型落在认知图的「状态节点 + 动作条件边」,是 `branch_candidates` 的原生数据形态,**零改动**对接:
75
+
76
+ | 编码项 | 规格 | 依据 |
77
+ |---|---|---|
78
+ | 状态节点 id | `gw_s_<x>_<y>` | `_slug` 惯例(`md_cg/self_state.py:95`) |
79
+ | 层 | **必须 `knowledge`** | `_SAFE_LAYERS=("knowledge","contextual","structural")`(`md_cg/predict.py:592`)——hit 分支 `_boost_incoming`(`:615`)只改这三层,其他层**静默不改边**,模型更新闭环失效(缺口 G2) |
80
+ | 正文 | CCG 五行齐全:`# 功能名:格(x,y)` / `# 生效条件:…` / `# 执行:…` / `# 子功能:…` / `# 不适用条件:…` | `_is_settled`(`md_cg/predict.py:739-757`)判「知识层+五要素」为 resolved——五态闭环才能出 `resolved` 终态 |
81
+ | 边 | `edges=[{"target": s_next, "relation_type": "causal", "condition": "动作:上", "confidence": 0.5}]` | `CAUSAL_BRANCH_TYPES=("causal","sequential")`(`:50`);`condition` 经 `chain.edge_condition` 透传进候选(`:239`)——**动作信息沿既有通道流动,无需新字段** |
82
+ | 初始置信度 | 0.5(无先验声明;上限 1.0 封顶,`:623`) | 诚实:播种即「未经验证」 |
83
+ | 标签 | `tags=["gridworld", "gw_pos:<x>_<y>"]` | 检索/审计隔离面 |
84
+ | 频道约定 | `feedback(..., channel="gridworld")` | `channel_posterior` 按面分层(`:364-375`),与既有通道零混淆 |
85
+
86
+ ---
87
+
88
+ ## 4. 闭环管线(observe→predict→execute→error→feedback→learn)
89
+
90
+ | # | 步骤 | 对接(签名见 §1) | 说明 |
91
+ |---|---|---|---|
92
+ | 1 | observe | `env.reset()` / `env.step()` → `state_id` | 全观测 |
93
+ | 2 | 候选动作 | `predict.branch_candidates(cg, state_id, semantic=False)` | **`semantic=False`**:玩具环境边即全集,关闭语义诱导防伪因果门噪声(D-002 门 `:169` 无增益) |
94
+ | 3 | 预测 | 首候选=预测终态 `predicted_node_id`;多步面(M3):`predict_routes(start_id=state_id, horizon=3)` | 候选的 `condition` 即动作 |
95
+ | 4 | 决策+执行 | 解码 `condition`→`a`;`next_state, reward, done = env.step(state_id, a)` | 无候选(未播种邻域)→ ε-greedy uniform 探索(M2 固定 ε=0.2 占位;与 `gain_gate` 的探索资格协同属 M3 可选) |
96
+ | 5 | 误差计算 | `hit = (predicted_node_id == actual_next_node_id)` | **显式传 hit**,不依赖 feedback 内部 `pred==act` 字符串判定(`:693-694`;缺口 G3) |
97
+ | 6 | 误差回灌 | `predict.feedback(cg, predicted_node_id, actual_next_node_id, hit=hit, note=f"ep{e}/s{t}", actor="gridworld", channel="gridworld")` | hit→边置信度+0.05(**模型更新**);miss→`add_rejected`(负证据);`sync_self=True` 刷自我卡 |
98
+ | 7 | 反思留痕(必选步) | `results, _ = cg.search(状态描述, k=4)`;`cg.reflect(f"gw:ep{e}:{state_id}", results)` | 产 d2/states 信号——proposals 唯一输入(缺口 G4) |
99
+ | 8 | 元认知闭环(每 episode 末) | `predict.learn_blindspots(cg, apply=True)`;或 `autonomy.explore(cg, apply=True, limit=3)` | 失败区域→五态终判→`gap_hint`;`_explore.jsonl` outcomes 供下轮 `gain_gate` |
100
+ | 9 | 自我面(每 episode 末) | `self_state.refresh(cg, actor="gridworld")` | 幂等(fingerprint 不变跳过);版本链留痕 |
101
+ | 10 | 留痕 | `_gridworld.jsonl`(§5) | 实验主账本 |
102
+
103
+ 语义对应评审闭环:**observe(1)→predict(2-3)→execute(4)→世界变化→prediction error(5)→feedback(6)→模型更新(边置信度/负记忆)→下轮预测改变**。元认知支线(7-8)与自我支线(9)复用既有链路。
104
+
105
+ ---
106
+
107
+ ## 5. 审计留痕(`_gridworld.jsonl`)
108
+
109
+ ```jsonc
110
+ // step(每步一条)
111
+ {"type": "step", "t": 0.0, "actor": "gridworld",
112
+ "episode": 3, "step": 7, "state": "gw_s_1_2", "action": "up",
113
+ "predicted": "gw_s_1_3", "actual": "gw_s_1_3", "hit": true,
114
+ "reward": 0, "done": false, "n_candidates": 4, "channel": "gridworld"}
115
+ // episode_end(每 episode 一条)
116
+ {"type": "episode_end", "t": 0.0, "episode": 3, "steps": 18, "hits": 14,
117
+ "reached_goal": true, "hit_rate": 0.7778, "n_rejected_new": 2,
118
+ "edge_conf_sum": 41.35, "actor": "gridworld"}
119
+ ```
120
+
121
+ 同构纪律:`type`/`t`/`actor` 前置(对齐 `_explore.jsonl` 形态 `md_cg/autonomy.py:199-205`);append 失败不阻塞;指标全部可从 `_gridworld.jsonl` + `predict.stats` + `self_state.snapshot` 重算(白箱可审计)。
122
+
123
+ ---
124
+
125
+ ## 6. 识别出的对接缺口
126
+
127
+ 调研发现的真缺口(规格层裁定,均**不改既有代码**):
128
+
129
+ | # | 缺口 | 取证 | 规格裁定 |
130
+ |---|---|---|---|
131
+ | G1 | **动作概念缺位**:predict 全链只认「节点+边」,无动作空间抽象;`routes` 是图内路径生成器不是动作选择器 | `md_cg/predict.py:477-520`(DFS 无动作参数) | 以「边 `condition` 字段承载动作」编码(§3);选择器=branch_candidates 首候选解码。动作沿既有 `condition` 通道流动,零改动 |
132
+ | G2 | **层硬约束**:hit 分支 `_boost_incoming` 只改 `_SAFE_LAYERS` 三层,其余层静默不改边 | `md_cg/predict.py:592`、`:615` | 状态节点强制落 `knowledge` 层(§3);M1 冒烟加断言:feedback 后边置信度确有上升 |
133
+ | G3 | hit 隐式判定是 `pred==act` 字符串相等 | `md_cg/predict.py:693-694` | 实验显式传 `hit=True/False`,不依赖字符串约定 |
134
+ | G4 | **盲区信号依赖 reflect**:`autonomy.proposals` 只读 `_reflection.jsonl`,闭环不调 `reflect()` 则零信号、五态闭环空转(「信号在记录、无人在听」防复发) | `md_cg/autonomy.py:107` | 管线第 7 步为**必选步**(§4),每步 search(record=True, judge=True)+reflect |
135
+ | G5 | **mdcos.predict_feedback 不透传 channel**(库层有,封装层无) | `md_cg/mdcos.py:2292-2293` vs `md_cg/predict.py:679` | 驱动器**直调库层** `predict.feedback(..., channel="gridworld")`;既有封装不动(面选择,非缺陷) |
136
+ | G6 | `dynamic_hit_threshold` 样本<50 不触发反思(MIN_SAMPLES=50) | `md_cg/predict.py:40`、`:662-665` | 不构成障碍:主判据读 `beta_posterior`(无门槛);反思触发是滞后旁证非主判据 |
137
+
138
+ ---
139
+
140
+ ## 7. 验证指标与分阶段里程碑
141
+
142
+ ### 7.1 验证指标(四类,全部可机器断言)
143
+
144
+ | 指标 | 定义 | 读数口 | 判据(M3) |
145
+ |---|---|---|---|
146
+ | ①预测误差随轮次下降 | 逐步误差=1−hit;episode 级=1−hit_rate;后验均值=β 后验 mean | `_gridworld.jsonl`、`predict.stats()["beta"]["all"]`(`md_cg/predict.py:888-901`) | 后 20% episodes 的后验均值 > 前 20% + 0.2;逐 episode 命中率回归斜率>0(误差单调下降,允许噪声) |
147
+ | ②策略稳定性 | 重复同状态同动作率;每 episode 步数(steps-to-goal) | `_gridworld.jsonl` step 聚合 | 确定性环境下最后 3 episodes 同状态动作一致率 ≥0.95;steps-to-goal 后段 < 前段 |
148
+ | ③条件模型变化 | 边置信度漂移 Σ\|Δconf\|;rejected 新增数;命中边集合收敛 | cg edges 直读 + `n_rejected_new` | EDGE_BOOST 累积集中在通往 goal 的边上;最后 N episodes rejected 新增=0、无新增命中边(模型停止变化=收敛) |
149
+ | ④自我可靠性 | hit_rate / beta_mean / beta_ci95 / reflect(脱离死区)随 episode 演化 | `self_state.snapshot()["prediction"]`(`md_cg/self_state.py:235`) | beta_ci95 收窄;reflect 由 True→False(≥50 样本且过动态阈值);`refresh` 版本链可回放 |
150
+
151
+ 对照组(M3 必配):**未学习基线**——同环境同 episode 数,但不跑 feedback(边置信度恒 0.5);两臂 hit rate 必须显著分离,否则①不成立。
152
+
153
+ ### 7.2 里程碑(每阶段独立验收)
154
+
155
+ | 阶段 | 内容 | 验收判据(可独立断言) |
156
+ |---|---|---|
157
+ | **M1 环境冒烟** | GridWorldEnv 确定性断言(同一 `(s,a)` 复跑 100 次同 `s'`);9~25 格状态节点+动作条件边播种到临时 root;`branch_candidates` 枚举无异常;`routes()` 返回 `status=ok` 且路径连续;`causal_path(start, goal)` 连通;G2 断言(feedback 后边置信度上升) | 环境与播种层全绿;**不涉及预测质量** |
158
+ | **M2 闭环跑通** | ≥10 episodes 端到端无异常;六账本(`_gridworld`/`_prediction`/`_reflection`/`_learn`/`_explore`/`_self_state`)均非空;至少一次到达 goal;`reflect` 留痕含 d2 | 闭环不死、账本可审计、管线第 7 步有产出 |
159
+ | **M3 指标显著** | 四类指标判据全过 + 对照组分离 | 数字入实验结论文档,判定「闭环机制验证通过」(非「世界模型能力证明」,§8) |
160
+
161
+ ---
162
+
163
+ ## 8. 诚实边界
164
+
165
+ - **玩具环境证据强度受限**(GPT 评审已声明,本规格如实继承):确定性/全观测/可枚举/单目标——结论只支持「预测→行动→误差→更新→行为改善」的**闭环机制存在且收敛**;不支持「世界模型能力」主张(泛化、部分可观测、非平稳、组合泛化)。对外表述必须用前一句口径。
166
+ - **模型更新是确定性账本式更新**:EDGE_BOOST=0.05 线性增量(`md_cg/predict.py:43`),非参数梯度学习;D-006 口径=工程初值非协议承诺。
167
+ - **ε-greedy 是占位策略**:M2 固定 ε=0.2;探索的「资格裁决」(σ(Gain) 增益门槛)与本环 ε 的协同只列 M3 可选项,不作为 M2 验收面。
168
+ - **单目标奖励无折扣**:不引入 RL 复杂度;本实验不与任何 RL 基线比名次,只做自我前后对照。
169
+
170
+ ---
171
+
172
+ ## 9. 边界与实现前置
173
+
174
+ - 本文件是**规格**;启动实现须使用者批准。实现建议形态:`md_cg/gridworld.py`(env+runner)+ `md_cg/test_gridworld.py`(确定性断言+闭环端到端+指标断言),临时 root(`MdCG(root=<tempdir>)`,`md_cg/mdcg.py:477`),不碰生产库。
175
+ - 实现后归档按第 16 条纪律:只记核心修改(内容/原因/位置/验证结论),账本与断言数字入结论。
176
+
@@ -2,8 +2,8 @@
2
2
 
3
3
  > 把「同源智能体」连接成蜂群:**版本层管公理、连接层管信任、单元层管职责**。
4
4
  > 本文档是**设计定稿**;层0(版本层)已实现并回归通过,见 §10 与 §12 迭代记录。
5
- > 相关:`docs/guardrail-charter.md`(宪章 v2.0)、`md_cg/tokens.py`(令牌)、
6
- > `md_cg/identity.py`(五单元与位置推断)、`docs/智能的公理化基石.md`(§2.9 信任)。
5
+ > 相关:`docs/mdcg/guardrail-charter.md`(宪章 v2.0)、`md_cg/tokens.py`(令牌)、
6
+ > `md_cg/identity.py`(五单元与位置推断)、`docs/theory/智能的公理化基石.md`(§2.9 信任)。
7
7
 
8
8
  ---
9
9
 
@@ -13,7 +13,7 @@
13
13
  |---|---|
14
14
  | 定位 | 蜂群互联的**信任层设计**;不改变单节点认知机制 |
15
15
  | 上位规范 | 智能论协议(内部宪法)> 护栏宪章(对外刑法),依据宪章元规则 |
16
- | 前置成果 | 令牌与角色权职分离 v0.1(`docs/令牌与角色权职分离_v0.1.md`) |
16
+ | 前置成果 | 令牌与角色权职分离 v0.1(`docs/mdcg/令牌与角色权职分离_v0.1.md`) |
17
17
  | 状态 | v0.1 设计稿 · 层0 已实现(`md_cg/theory.py`,P22 43/43 通过) |
18
18
  | 观测位置 | 设计者视角(奠基声明五):从整体查看认知图、识别未知、决定方向;**观测不干预** |
19
19
 
@@ -0,0 +1,242 @@
1
+ # 蜂群同错检测实验协议 v0.1(CTP 核心命题「多数≠真」验证设计)
2
+
3
+ > **性质**:实验协议设计文档,非实现。启动任何实现(注入器代码、聚合补丁、测试脚本)须使用者批准。
4
+ > **任务来源**:外部评审要求验证 CTP(共同信任协议)核心命题——3 个 agent 同时犯同一种错误(系统性误观测)时,系统能否识别「共识不等于真相」。
5
+ > **对象**:`swarm/`(蜂群多智能体,第五件套)信任聚合与证据面现状;理论参照 `CommonTrustProtocol/docs/`(仓外理论仓,只读引用)。
6
+ > **取证基线**:本仓 main 分支当前工作区(2026-09-15)。行号以当日文件为准。
7
+
8
+ ---
9
+
10
+ ## 一、目的与理论命题
11
+
12
+ CTP 理论主张:**共识 ≠ 真相**。多个协作者给出一致结论,不构成该结论正确的证据——只有外部可观测的验证基底(编译/测试/测量/形式化证明等独立裁决来源)才能约束输出(`CommonTrustProtocol/docs/theory/智能的认知过程.md` L233-263:「系统不能自己编故事说"我觉得对了",它需要一个外部可观测的验证基底」;`智能的公理化基石.md` L408:「信任可以度量、可以更新、可以被否决(验证基底裁决后失效)」)。
13
+
14
+ 本协议设计一个最小故障注入实验:让 N 个实例**同时观测到同一份伪证据**(系统性误观测),检验蜂群现有信任聚合面在 3/3 同错输入下的行为,并给出「真伪判据=证据基底分离」的退化判准与机制缺口清单。
15
+
16
+ **平台形态诚实边界**:蜂群实例是确定性 VM 子进程(术数程序,非 LLM agent)。「误观测」在本平台形态下 = 污染的输入(初始符号)或污染的程序逻辑,而非模型幻觉。注入器据此设计(§三)。
17
+
18
+ ---
19
+
20
+ ## 二、现状调研:蜂群信任与证据面
21
+
22
+ ### 2.1 信任的产生——自报制(核心事实)
23
+
24
+ | 机制 | 位置 | 当前语义 |
25
+ |---|---|---|
26
+ | 信任值寄存器 | `swarm/rust_runtime/src/vm.rs` L21 | `信任值` 是 VM 内建符号(BUILTIN_TRUST_VALUE),程序内可读写 |
27
+ | 程序内修改 | `vm.rs` L408-415 | `德(DE)` 指令直接修改 trust_value(加 delta)——信任升降由**实例自身程序逻辑**决定 |
28
+ | 信任阈值路由 | `vm.rs` L24, L430 | 内建 `信任阈值` 缺省 0.7,程序可据 trust 值分支(仅实例内部决策用) |
29
+ | 终态输出 | `vm.rs` L595-596 | 实例终态 JSON 携带 trust 字段(千分位舍入) |
30
+ | 协调器信任提交 | `swarm/rust_runtime/src/swarm.rs` L929-940 | 实例终态 trust 字段**直接采信**为该实例信任值;仅做 0-1 夹取;error 终态无 trust 字段时沿用上一轮值(L930 注释:实例故障不推平信任曲线) |
31
+
32
+ **关键结论**:信任是**自报值**。协调器不验证实例为何自报该值,不存在「证据→信任」的裁决链。实例程序写「德 +0.5」信任即升,写「德 -0.3」信任即降——升降的全部依据在实例自身代码里,协调器零否决权。
33
+
34
+ ### 2.2 信任聚合
35
+
36
+ | 机制 | 位置 | 当前语义 |
37
+ |---|---|---|
38
+ | 聚合公式 | `swarm.rs` L1247-1271 | 从各实例最后终态收集 trust(夹取 0-1),计算 T_avg / T_min / T_variance / T_alignment |
39
+ | T_alignment 定义 | `swarm.rs` L1267-1271 | T_alignment = 1 - T_variance / T_avg(avg>0 时);Python 参照 `swarm/rust_swarm.py` L129-139(对齐 aeis.swarm.trust_aggregator.snapshot 操作化定义) |
40
+ | 报告透出 | `swarm.rs` L1313-1318(report_json) | trust 四元组以 6 位小数进报告;`swarm/swarm_cli.py` L99 摘要透出 |
41
+
42
+ **语义要点**:T_alignment 度量的是「实例间信任值的离散程度」,**不是**结论正确性。全部实例信任值一致(无论对错)时 T_variance=0 → T_alignment=1.0(理论最大值)。
43
+
44
+ ### 2.3 健康分(health)
45
+
46
+ | 机制 | 位置 | 当前语义 |
47
+ |---|---|---|
48
+ | 四因子公式 | `swarm/rust_runtime/src/health.rs` L5-7, L51-84 | score = 0.4×成功率 + 0.2×在线率 + 0.2×(1-威胁率) + 0.2×integrity;integrity = 验签通过事件占比 × gossip 覆盖率 |
49
+ | error 判定 | `swarm.rs` L879-884 | 终态含 error 键 = 该轮失败(威胁事件);`serve.rs` L278-283 VM 执行异常产出 error 终态 |
50
+ | integrity 数据通路 | `swarm.rs` L1203-1207 | 单机在线自签自验恒过、重放事件已过坏尾守卫 → verify_fail 恒 0(代码注释原文);区分度在跨机场景启用 |
51
+ | 与信任的关系 | 全文检索确认 | **无**。health 只进报告(`swarm.rs` L1322-1340),不回馈 trust 计算,不参与任何路由/晋升/降级决策 |
52
+
53
+ ### 2.4 反例 / 修正通道
54
+
55
+ | 机制 | 位置 | 当前语义 |
56
+ |---|---|---|
57
+ | G-R3 复算修正信号 | `swarm.rs` L893-927 | protocol 拓扑下 verifier 子进程重放 primary 完整输入逐位复算;不一致时产出「修正信号」事件(level=1,P1),终态仍以 primary 为准(verifier 仅复核) |
58
+ | G-R1 反思触发器 | `swarm.rs` L1024-1063 | 四触发:每 100 轮(L1027-1029);error 终态连续 2 轮(L1030-1041);T_avg 连续 3 轮下降(L1048-1057);实例退场(L1059-1063)。命中产出「修正信号」事件(level=2,P2) |
59
+ | 维生边界 | `swarm.rs` L693-695 | 修正信号**仅记录+透出(P2 观察级),不自动改路由**;P0/P1 介入留待真实重大分歧场景(盲区登记 BS-6,`docs/swarm/蜂群盲区标记_v1.0.md` L47-52) |
60
+
61
+ **关键结论**:修正信号是当前唯一的反例通道,但它(a)由「复算不一致」或「信任值下降趋势」触发,而非由「证据被否决」触发;(b)触发后无任何信任/路由后果(纯观察级)。
62
+
63
+ ### 2.5 证据存储(WAL)
64
+
65
+ | 机制 | 位置 | 当前语义 |
66
+ |---|---|---|
67
+ | WAL 事件行 | `swarm.rs` L1005-1023 | append-only events.jsonl,每行 HMAC-SHA256 签名(签名串 v0.7.1:seq/type/from/to/round/ts/payload,L373-382) |
68
+ | 轮末快照 | `swarm.rs` L1100-1165 | 快照行存 trusts+states(条件空间 space_id 随快照持久,L1126-1130);sync_all 提交点,恢复语义见 L436-528 |
69
+ | 独立验签 | `swarm/rust_swarm.py` L88-126 | Python hashlib/hmac 交叉复核 Rust 手写 SHA256;快照行验签但不计入事件口径 |
70
+
71
+ **语义要点**:WAL 存的是**事件流**(谁在何时给谁发了什么),不是**证据**。事件 payload 无来源标注、无验证基底字段、无真伪属性——WAL 能证明「某实例在某轮说了某话」(不可篡改),不能证明「某话为真」。
72
+
73
+ ### 2.6 promote/degrade 判据
74
+
75
+ **不存在**。全仓检索确认:信任无分级体系(无晋升/降级阈值)、健康分不影响信任(§2.3)、修正信号不改信任(§2.4)。信任值的全部变化来源 = 实例程序自身的德指令 + 实例故障时沿用上轮。跨实例信任传播仅有一种形式:路由 payload 的 `@trust` 占位符(`swarm.rs` L964;`swarm/rust_swarm.py` L32)把源实例终态信任值作为消息内容发给目标实例——目标实例如何使用完全由其程序决定,协调器不做任何交叉校验。
76
+
77
+ ### 2.7 实例间对账面(现有的「一致」语义)
78
+
79
+ | 机制 | 位置 | 当前语义 |
80
+ |---|---|---|
81
+ | gossip 对账 | `swarm.rs` L1272-1278 | 全部 gossip 目标实收水位相等 = gossip_consistent——**投递一致性**,非内容一致性 |
82
+ | 复算对账 | `swarm.rs` L893-927 | verifier 与 primary **同输入同程序**(确定性 VM)→ 复算一致是结构性必然 |
83
+ | 消息内容对账 | — | **无**。没有任何机制比较不同实例对同一观测的结论是否一致(更无真伪裁决) |
84
+
85
+ ---
86
+
87
+ ## 三、故障注入形态:最小可行注入器
88
+
89
+ ### 3.1 伪证据三属性(设计约束)
90
+
91
+ | 属性 | 含义 | 本协议的实现判据 |
92
+ |---|---|---|
93
+ | 可构造 | 注入路径确定、零代码改动可达 | 经 swarm.json 初始符号注入(§3.2),一行配置完成 |
94
+ | 可重复 | 确定性 VM 下同输入必同终态,N 轮可复现 | 同 config+同 WAL 重入逐位一致(既有 B1 幂等语义,`swarm.rs` L710-727) |
95
+ | 可检测基底缺失 | 伪证据**在结构上**缺失可验证基底,而非靠真值对照才能识别 | 伪证据不携带 verification_basis 字段(对照:大脑端 `md_cg/nodefile.py` L58-64 已有八档枚举——蜂群端无对应物,这正是被测缺口) |
96
+
97
+ ### 3.2 注入点选择
98
+
99
+ | 候选注入点 | 判定 | 理由 |
100
+ |---|---|---|
101
+ | **A. 初始符号注入(选定)** | 可行,零代码改动 | `make_swarm_config` 接受每实例 symbols(`swarm/rust_swarm.py` L27-47);每轮完整环境注入实例(`swarm.rs` L584-603)——向全部实例 symbols 写入同一伪观测值即构成「系统性误观测」。这是平台形态下「所有 agent 观测到同一伪证据」的忠实映射:共享同一(被污染的)观测通道 |
102
+ | B. WAL 直接注入 | 不可行(守卫正常拒绝) | 事件行须过 HMAC 验签(`swarm.rs` L468, L490),外部注入必被坏尾守卫截断——恰证明完整性面无缺口,不构成「系统性误观测」注入面 |
103
+ | C. 路由 payload 注入 | 备选(第二轮变体) | 经 routes payload 携带伪观测跨实例传播(`swarm.rs` L962-1003),可模拟「污染经 gossip 扩散」——留作扩展臂 E3(§六) |
104
+ | D. 术数程序注入 | 备选(对照解释用) | 污染程序逻辑(如把判定阈值写错)同样产生 3/3 同错,但它测的是「程序缺陷」而非「观测缺陷」,只作对照解释,不作主实验 |
105
+
106
+ ### 3.3 注入器规格(最小实现)
107
+
108
+ ```text
109
+ 输入:swarm.json(既有格式,swarm_cli.py L13-16)
110
+ 注入器 = 配置预处理脚本(协议层,不改 swarm/ 源码):
111
+ 1) 读基础 config(实例表/术数源码/路由表)
112
+ 2) 对实验组:向全部实例 symbols 追加伪观测键值对
113
+ 如 {"传感器X读数": 99, "观测轮次": R}(真值 50;伪证据无 basis 字段)
114
+ 3) 对照组:symbols 注入真观测 {"传感器X读数": 50, ...} 或不注入
115
+ 4) 输出 inject_swarm.json → 交既有 python -m swarm.swarm_cli run 执行
116
+ 伪证据形态:与实例术数程序判定条件严格对齐(程序「若 传感器X读数 大于 80
117
+ 则 德 0.5」——伪值 99 必触发信任上升,真值 50 不触发)
118
+ ```
119
+
120
+ **示例术数程序**(全部实例共用同一 pbc——BS-4 异构程序未实现,`docs/swarm/蜂群盲区标记_v1.0.md` L33-38,单字节码恰是「同构观测」的现成条件):
121
+
122
+ ```text
123
+ 问曰:如何处理观测?
124
+ 答曰:读数超阈值则采信并提升信任。
125
+ 术曰:
126
+ 1。若 传感器X读数 大于 80,则 德 0.5;
127
+ 2。止。
128
+ ```
129
+
130
+ ---
131
+
132
+ ## 四、共识判据:3/3 同错输入下的推演(基于代码现状)
133
+
134
+ 设 3 实例(初始 trust=0.1)共用上例程序,实验组注入伪读数 99、对照组真读数 50,运行 1 轮:
135
+
136
+ ### 4.1 逐字段推演
137
+
138
+ | 报告字段 | 实验组(3/3 同错) | 对照组(3/3 正确) | 行号依据 |
139
+ |---|---|---|---|
140
+ | 各实例终态 trust | 0.6(0.1+0.5,德指令触发) | 0.1(不触发) | `vm.rs` L408-415, L929-940 |
141
+ | T_avg | 0.6 | 0.1 | `swarm.rs` L1256 |
142
+ | T_variance | 0(三值相等) | 0 | `swarm.rs` L1262-1266 |
143
+ | **T_alignment** | **1.0(理论满分)** | **1.0(理论满分)** | `swarm.rs` L1267-1271 |
144
+ | health.score | 1.0 满分(无 error 轮、在线满、integrity 恒 1) | 1.0 满分 | `health.rs` L51-84 + `swarm.rs` L1203-1207 |
145
+ | recalc_mismatches | 0(verifier 同输入重放,确定性 VM 同终态) | 0 | `swarm.rs` L893-927 |
146
+ | 修正信号 | 无(无 error、T_avg 上升不触发任何触发器) | 无 | `swarm.rs` L1024-1063 |
147
+ | gossip_consistent | true(投递对账与内容无关) | true | `swarm.rs` L1272-1278 |
148
+
149
+ ### 4.2 推演结论(核心)
150
+
151
+ 1. **3/3 同错在现有聚合面上与 3/3 全对不可区分**:两组 T_alignment 均为 1.0、health 均满分、零修正信号。同错场景下系统输出的是「最高对齐+最健康」读数——T_alignment 把系统性误观测**奖励**为完美一致。
152
+ 2. **伪证据晋升结果**:当前系统无信任分级,晋升即「信任值本身上升」——伪证据使全群信任从 0.1 升至 0.6,且该上升在报告面呈现为健康状态。若存在下游消费方按 T_avg/T_alignment 做决策(如 `@trust` 路由传播),伪信任将带着 1.0 的对齐背书向外扩散(`swarm.rs` L964)。
153
+ 3. **多轮无自愈**:T_avg 连续 3 轮下降触发器(L1048-1057)只对「信任下降」敏感;同错升信任永不触发。error 触发器(L1030-1041)对「终态含 error 键」敏感;同错是成功终态,不触发。**全部四个反思触发器对系统性误观测均盲**。
154
+ 4. **唯一可能检出异见的机制也不在本平台**:N=4(3 同错+1 异见者)时,异见者终态 trust=0.1、同错者 0.6 → T_avg≈0.475、T_alignment≈0.901——异见者在现有语义下的效果是**拉低对齐度**:「说真话的少数派」表现为对齐破坏者,而非伪共识的暴露者。该反直觉读数本身就是实验的重要产出。
155
+
156
+ ---
157
+
158
+ ## 五、退化判准:证据基底分离(CTP)与机制缺失清单
159
+
160
+ ### 5.1 应有行为(理论判准)
161
+
162
+ CTP 判据:伪证据缺失可验证基底时,**不因多数派采信而晋升**。对应到灵枢四态语义(大脑端 judge 既有语义),蜂群层应有:
163
+
164
+ | 检测结果 | 应触发行为 |
165
+ |---|---|
166
+ | 证据无 basis 字段 / basis 不可追溯 | 该断言**不参与信任晋升**(最多维持现值,只降不升)——对齐大脑端「拿不出证据的节点绝不写 verification_basis」(`md_cg/crosscheck.py` L11-14)纪律 |
167
+ | 实例间结论一致但全体无 basis | 群级 **BLINDSPOT**:透出「共识无基底」修正信号,T_alignment 另行标注「无基底对齐」,不作为健康证据 |
168
+ | 有 basis 且基底独立可验证(互验证) | 才允许晋升——对齐 T12 互验证语义:「VERDICT 由接收方用己方验证基底裁决(自验证不采信)」(`CommonTrustProtocol/docs/T12_M1两节点互联详细设计_v0.1.md` L26-33) |
169
+ | 伪证据被基底否决 | 实例信任**降级**(反例击穿通路,`智能的公理化基石.md` L408),修正信号升级 P1(限制敏感操作)/P0(隔离退场,BS-6 预留面) |
170
+
171
+ ### 5.2 机制缺失清单(如实标注)
172
+
173
+ | # | 缺失机制 | 现状证据 | 对应 §5.1 行为 |
174
+ |---|---|---|---|
175
+ | M1 | 证据基底字段:WAL 事件与实例终态无 basis 概念 | `swarm.rs` L1005-1023 行格式、终态仅 halt/stack/symbols/trust/condition_space(`vm.rs` L568-608) | 判准 1 |
176
+ | M2 | 互验证裁决:verifier 是「同输入逐位复算」非「独立基底裁决」 | `swarm.rs` L809-815(replay envelope:verifier 用 primary 完整输入)、L893-927;同错必复算一致 | 判准 3 |
177
+ | M3 | 反例→降级通路:修正信号无任何信任/路由后果 | `swarm.rs` L693-695 维生边界 + BS-6(盲区清单 L47-52) | 判准 4 |
178
+ | M4 | 健康→信任回馈:health 单向透出,不参与聚合 | §2.3 末行 | 判准 1/4 的输入面 |
179
+ | M5 | 同错检测统计量:T_alignment 对同错完全盲且为正奖励 | §4.2 结论 1 | 判准 2 |
180
+
181
+ ### 5.3 最小补丁面建议(本协议只建议,不改代码)
182
+
183
+ | # | 补丁面 | 内容 | 侵入度 |
184
+ |---|---|---|---|
185
+ | P1 | 事件 schema 扩展 | WAL 事件行/终态增加可选 basis 字段(枚举复用大脑端 `nodefile.py` L58-64 八档);缺省缺省不破坏既有验签(basis 不入签名串或版本化入签,需二选一裁决) | 低(增量字段) |
186
+ | P2 | 聚合层基底覆盖门 | aggregate_report 新增无基底断言计数:无 basis 的信任上升不计入 T_avg 晋升(只降不升门);报告透出 basis_coverage | 中(聚合逻辑) |
187
+ | P3 | 互验证升级 | protocol 拓扑 verifier 改持独立观测通道(per-instance symbols 差异化,依赖 BS-4 异构程序/异构输入先行)→ 复算不一致才获得真实检出力 | 高(依赖 BS-4) |
188
+ | P4 | 对齐度语义分离 | 报告区分「有基底对齐」与「无基底对齐」两个 T_alignment;新增异见存活率指标(少数派终态未被多数派吞没的比例) | 中(报告层) |
189
+ | P5 | 修正信号分级 | 「共识无基底」触发 P2 信号;「基底否决的多数派断言」触发 P1(信任降级)——沿 BS-6 预留的 §3.16 介入面 | 中(沿既有信号通道) |
190
+
191
+ **建议实施序**:P1→P2→P4 可独立落地且零破坏(缺省行为不变);P3 依赖 BS-4;P5 留真实场景。实验协议(§六)在 P1/P2 落地前后各跑一轮,即可量化「基底覆盖门」的净效应。
192
+
193
+ ---
194
+
195
+ ## 六、实验步骤(双组设计)
196
+
197
+ ### 6.1 构型矩阵
198
+
199
+ | 臂 | N | 注入 | 目的 |
200
+ |---|---|---|---|
201
+ | C0 对照 | 3 | 真观测(读数 50) | 基线:全对场景全字段读数 |
202
+ | E1 主实验 | 3 | 伪观测 99(3/3 同错) | 检验 §四推演:T_alignment=1.0 与 C0 不可区分 |
203
+ | E2 异见 | 4 | 3 实例伪观测 99 + 1 实例真观测 50 | 检验异见者被现有语义标记为「对齐破坏者」(§4.2 结论 4) |
204
+ | E3 扩散(可选) | 3 | 第 1 轮仅实例甲收伪观测,经路由/gossip 传播 | 测伪证据跨实例扩散后的对账面表现 |
205
+ | V1 验证(补丁后复跑) | 3 | 同 E1 | P2 基底覆盖门生效后:无 basis 信任上升不被晋升 |
206
+
207
+ ### 6.2 轮次与执行
208
+
209
+ - M=5 轮(足以观察多轮趋势触发器均不触发,§4.2 结论 3);每臂独立 WAL/project 目录;确定性 VM 下每臂重复 3 次校验逐位一致(可重复性属性验证)。
210
+ - 执行入口:`python -m swarm.swarm_cli run --config <臂配置> --out report.json`(`swarm_cli.py` L113);配置经 §3.3 注入器预处理生成。
211
+ - 双实现交叉核对:Rust 聚合报告 vs `aggregate_trust_python`/`aggregate_health_python`(`rust_swarm.py` L129-178),1e-6 容差(`rust_swarm.py` L62-63 口径契约)。
212
+
213
+ ### 6.3 指标表
214
+
215
+ | 指标 | 来源字段 | C0 预期 | E1 预期(§四推演) | 判定意义 |
216
+ |---|---|---|---|---|
217
+ | T_alignment | report.trust | 1.0 | 1.0 | 两臂相等 = 同错不可区分(命题「系统无法识别共识≠真相」在现状下成立) |
218
+ | T_avg | report.trust | 0.1 | 0.6 | 伪证据推动信任晋升的幅度 |
219
+ | health.score(逐实例) | report.health | 1.0 | 1.0 | 同错实例满健康 = 健康面无检出力 |
220
+ | recalc_mismatches | report.recalc | 0 | 0 | 复算通道对同构同错盲(M2 实证) |
221
+ | 修正信号计数 | WAL type=修正信号 行数 | 0 | 0 | 反例通道未触发(M3 实证) |
222
+ | 伪信任外溢 | 路由 @trust 载荷值 | 0.1 | 0.6 | 伪信任向外扩散量 |
223
+ | E2 专属:异见者读数 | T_alignment / roles | — | ≈0.901(下降) | 少数派真话拉低对齐度的反直觉量化 |
224
+ | V1 专属:晋升拦截 | T_avg | — | 0.1(不再升至 0.6) | 基底覆盖门净效应 |
225
+
226
+ ### 6.4 验收断言(协议级,可执行判定)
227
+
228
+ 1. E1 与 C0 的 trust 四元组中 T_alignment 逐位相等(<1e-6)→ 证实「现状不可区分」。
229
+ 2. E1 全部修正信号计数=0 且 health=1.0 → 证实「反例通道与健康面对同错盲」。
230
+ 3. E2 的 T_alignment < E1 的 T_alignment → 证实「异见者表现为对齐破坏者」。
231
+ 4. (V1,补丁批准后)E1 构型在 V1 下 T_avg 不高于 C0 → 证实「基底覆盖门拦截伪晋升」。
232
+ 5. 全臂 WAL 验签 all_valid=true(`rust_swarm.py` L88-126)→ 注入未破坏完整性面。
233
+
234
+ ---
235
+
236
+ ## 七、边界声明
237
+
238
+ 1. **本文件是实验协议**:不含任何实现。注入器脚本、聚合补丁(P1-P5)、测试用例的编写均须使用者批准后另立任务。
239
+ 2. **平台形态边界**:实验结论的适用域是「确定性 VM 实例 + 自报信任 + 聚合透出」的蜂群形态;LLM agent 形态下的同错(模型共因幻觉)需经 harness 层接入(`swarm_cli.py` 统一入口),结论外推须另行论证。
240
+ 3. **理论引用边界**:CTP 文档行号引自仓外 `CommonTrustProtocol/docs/`(理论仓),其版本演进不受本仓控制;本仓内可信的理论落点为大脑端 `md_cg/nodefile.py` L58-64(verification_basis 八档)与 `md_cg/crosscheck.py` L11-14(无证据不写基底纪律)。
241
+ 4. **不做 git 操作、不改源文件**:本任务全部产出即本文件。
242
+ 5. **诚实预期**:§四推演若被实验证实(E1 与 C0 不可区分),结论是「现状不能识别同错」——这是机制缺口的实证而非系统缺陷的遮掩;修复面已在 §5.3 如实列出,是否实施由使用者裁决。