@furongjun1999/dsh-memory 0.4.3 → 0.4.5

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 (1471) hide show
  1. package/README.md +104 -483
  2. package/cordis.patch.yml +1 -1
  3. package/cordis.yml.example +78 -9
  4. package/docs/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v1.0.md +170 -0
  5. package/docs/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v2.0.md +239 -0
  6. package/docs/README/350/257/246/347/273/206/347/211/210_v0.4.5.md +625 -0
  7. package/docs/cordis-patch-profile-web.example.yml +50 -6
  8. package/docs/release_v0.3.0.md +36 -0
  9. package/docs/release_v0.4.5.md +55 -0
  10. package/docs/tool_table_v0.3.0.md +117 -0
  11. package/docs//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 +160 -0
  12. 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 +221 -0
  13. 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 +192 -2
  14. package/docs//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 +278 -0
  15. package/docs//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 -0
  16. package/docs//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 +198 -0
  17. package/docs//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 +49 -1
  18. package/docs//347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +270 -0
  19. package/docs//350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +704 -0
  20. package/docs//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 +491 -0
  21. package/docs//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 +368 -34
  22. package/docs//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 +340 -0
  23. package/docs//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 +496 -0
  24. package/docs//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 +94 -0
  25. package/docs//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 +281 -0
  26. package/lib/bridge.d.ts +4 -4
  27. package/lib/bridge.js +4 -4
  28. package/lib/hooks.d.ts +23 -8
  29. package/lib/hooks.js +75 -26
  30. package/lib/index.d.ts +53 -8
  31. package/lib/index.js +216 -63
  32. package/lib/lib/datapath.d.ts +16 -0
  33. package/lib/lib/datapath.js +114 -0
  34. package/lib/lib/mdcg_client.d.ts +152 -0
  35. package/lib/lib/mdcg_client.js +266 -0
  36. package/lib/lib/mutual.d.ts +121 -0
  37. package/lib/lib/mutual.js +348 -0
  38. package/lib/lib/roleplay_web.d.ts +6 -0
  39. package/{src/roleplay_web.ts → lib/lib/roleplay_web.js} +503 -450
  40. package/lib/lib/whitebox_llm.d.ts +129 -0
  41. package/lib/lib/whitebox_llm.js +249 -0
  42. package/lib/tools.d.ts +13 -6
  43. package/lib/tools.js +41 -55
  44. package/md_cg/__init__.py +7 -0
  45. package/md_cg/__pycache__/__init__.cpython-310.pyc +0 -0
  46. package/md_cg/__pycache__/_dbg_p30.cpython-310.pyc +0 -0
  47. package/md_cg/__pycache__/_diag_p19.cpython-310.pyc +0 -0
  48. package/md_cg/__pycache__/_tmp_dbg.cpython-310.pyc +0 -0
  49. package/md_cg/__pycache__/audit.cpython-310.pyc +0 -0
  50. package/md_cg/__pycache__/backfill.cpython-310.pyc +0 -0
  51. package/md_cg/__pycache__/bench_membench.cpython-310.pyc +0 -0
  52. package/md_cg/__pycache__/bench_p0.cpython-310.pyc +0 -0
  53. package/md_cg/__pycache__/census.cpython-310.pyc +0 -0
  54. package/md_cg/__pycache__/chain.cpython-310.pyc +0 -0
  55. package/md_cg/__pycache__/codeindex.cpython-310.pyc +0 -0
  56. package/md_cg/__pycache__/consistency.cpython-310.pyc +0 -0
  57. package/md_cg/__pycache__/consolidate.cpython-310.pyc +0 -0
  58. package/md_cg/__pycache__/corpus.cpython-310.pyc +0 -0
  59. package/md_cg/__pycache__/crosscheck.cpython-310.pyc +0 -0
  60. package/md_cg/__pycache__/crypto.cpython-310.pyc +0 -0
  61. package/md_cg/__pycache__/datapath.cpython-310.pyc +0 -0
  62. package/md_cg/__pycache__/docindex.cpython-310.pyc +0 -0
  63. package/md_cg/__pycache__/evidence.cpython-310.pyc +0 -0
  64. package/md_cg/__pycache__/evolution.cpython-310.pyc +0 -0
  65. package/md_cg/__pycache__/export.cpython-310.pyc +0 -0
  66. package/md_cg/__pycache__/forgetting.cpython-310.pyc +0 -0
  67. package/md_cg/__pycache__/fsutil.cpython-310.pyc +0 -0
  68. package/md_cg/__pycache__/identity.cpython-310.pyc +0 -0
  69. package/md_cg/__pycache__/insight.cpython-310.pyc +0 -0
  70. package/md_cg/__pycache__/links.cpython-310.pyc +0 -0
  71. package/md_cg/__pycache__/mcp_server.cpython-310.pyc +0 -0
  72. package/md_cg/__pycache__/md_whitebox.cpython-310.pyc +0 -0
  73. package/md_cg/__pycache__/mdcg.cpython-310.pyc +0 -0
  74. package/md_cg/__pycache__/mdcos.cpython-310.pyc +0 -0
  75. package/md_cg/__pycache__/metacognition.cpython-310.pyc +0 -0
  76. package/md_cg/__pycache__/migrate.cpython-310.pyc +0 -0
  77. package/md_cg/__pycache__/migrate_aeis.cpython-310.pyc +0 -0
  78. package/md_cg/__pycache__/migrate_roleplay.cpython-310.pyc +0 -0
  79. package/md_cg/__pycache__/migrate_wisdom_graph.cpython-310.pyc +0 -0
  80. package/md_cg/__pycache__/nodefile.cpython-310.pyc +0 -0
  81. package/md_cg/__pycache__/pooling.cpython-310.pyc +0 -0
  82. package/md_cg/__pycache__/predict.cpython-310.pyc +0 -0
  83. package/md_cg/__pycache__/protect.cpython-310.pyc +0 -0
  84. package/md_cg/__pycache__/provenance.cpython-310.pyc +0 -0
  85. package/md_cg/__pycache__/refindex.cpython-310.pyc +0 -0
  86. package/md_cg/__pycache__/refine.cpython-310.pyc +0 -0
  87. package/md_cg/__pycache__/routing.cpython-310.pyc +0 -0
  88. package/md_cg/__pycache__/scrub.cpython-310.pyc +0 -0
  89. package/md_cg/__pycache__/security.cpython-310.pyc +0 -0
  90. package/md_cg/__pycache__/self_state.cpython-310.pyc +0 -0
  91. package/md_cg/__pycache__/signer.cpython-310.pyc +0 -0
  92. package/md_cg/__pycache__/sources.cpython-310.pyc +0 -0
  93. package/md_cg/__pycache__/stg.cpython-310.pyc +0 -0
  94. package/md_cg/__pycache__/subgraph.cpython-310.pyc +0 -0
  95. package/md_cg/__pycache__/sustain.cpython-310.pyc +0 -0
  96. package/md_cg/__pycache__/test_lock.cpython-310-pytest-9.1.1.pyc +0 -0
  97. package/md_cg/__pycache__/test_lock.cpython-310.pyc +0 -0
  98. package/md_cg/__pycache__/test_p0.cpython-310-pytest-9.1.1.pyc +0 -0
  99. package/md_cg/__pycache__/test_p0.cpython-310.pyc +0 -0
  100. package/md_cg/__pycache__/test_p1.cpython-310-pytest-9.1.1.pyc +0 -0
  101. package/md_cg/__pycache__/test_p1.cpython-310.pyc +0 -0
  102. package/md_cg/__pycache__/test_p10_identity.cpython-310-pytest-9.1.1.pyc +0 -0
  103. package/md_cg/__pycache__/test_p10_identity.cpython-310.pyc +0 -0
  104. package/md_cg/__pycache__/test_p11_consistency.cpython-310-pytest-9.1.1.pyc +0 -0
  105. package/md_cg/__pycache__/test_p11_consistency.cpython-310.pyc +0 -0
  106. package/md_cg/__pycache__/test_p12_metacognition.cpython-310-pytest-9.1.1.pyc +0 -0
  107. package/md_cg/__pycache__/test_p12_metacognition.cpython-310.pyc +0 -0
  108. package/md_cg/__pycache__/test_p13_encryption.cpython-310-pytest-9.1.1.pyc +0 -0
  109. package/md_cg/__pycache__/test_p13_encryption.cpython-310.pyc +0 -0
  110. package/md_cg/__pycache__/test_p14_sustain.cpython-310-pytest-9.1.1.pyc +0 -0
  111. package/md_cg/__pycache__/test_p14_sustain.cpython-310.pyc +0 -0
  112. package/md_cg/__pycache__/test_p15_scrub.cpython-310-pytest-9.1.1.pyc +0 -0
  113. package/md_cg/__pycache__/test_p15_scrub.cpython-310.pyc +0 -0
  114. package/md_cg/__pycache__/test_p16_self_state.cpython-310.pyc +0 -0
  115. package/md_cg/__pycache__/test_p17_predict.cpython-310.pyc +0 -0
  116. package/md_cg/__pycache__/test_p18_whitebox.cpython-310.pyc +0 -0
  117. package/md_cg/__pycache__/test_p19_migrate_roleplay.cpython-310.pyc +0 -0
  118. package/md_cg/__pycache__/test_p2.cpython-310-pytest-9.1.1.pyc +0 -0
  119. package/md_cg/__pycache__/test_p2.cpython-310.pyc +0 -0
  120. package/md_cg/__pycache__/test_p20_evolution.cpython-310.pyc +0 -0
  121. package/md_cg/__pycache__/test_p21_tokens.cpython-310.pyc +0 -0
  122. package/md_cg/__pycache__/test_p22_theory.cpython-310.pyc +0 -0
  123. package/md_cg/__pycache__/test_p23_links.cpython-310.pyc +0 -0
  124. package/md_cg/__pycache__/test_p24_evidence.cpython-310.pyc +0 -0
  125. package/md_cg/__pycache__/test_p25_weights.cpython-310.pyc +0 -0
  126. package/md_cg/__pycache__/test_p26_refindex.cpython-310.pyc +0 -0
  127. package/md_cg/__pycache__/test_p27_docindex.cpython-310.pyc +0 -0
  128. package/md_cg/__pycache__/test_p28_refcheck.cpython-310.pyc +0 -0
  129. package/md_cg/__pycache__/test_p29_session_ingest_export.cpython-310.pyc +0 -0
  130. package/md_cg/__pycache__/test_p2_mcp.cpython-310-pytest-9.1.1.pyc +0 -0
  131. package/md_cg/__pycache__/test_p2_mcp.cpython-310.pyc +0 -0
  132. package/md_cg/__pycache__/test_p3.cpython-310-pytest-9.1.1.pyc +0 -0
  133. package/md_cg/__pycache__/test_p3.cpython-310.pyc +0 -0
  134. package/md_cg/__pycache__/test_p30_maintain.cpython-310.pyc +0 -0
  135. package/md_cg/__pycache__/test_p31_insight.cpython-310.pyc +0 -0
  136. package/md_cg/__pycache__/test_p32_backfill.cpython-310.pyc +0 -0
  137. package/md_cg/__pycache__/test_p33_ccg_wiring.cpython-310.pyc +0 -0
  138. package/md_cg/__pycache__/test_p34_crosscheck.cpython-310.pyc +0 -0
  139. package/md_cg/__pycache__/test_p35_conditioned_claim.cpython-310.pyc +0 -0
  140. package/md_cg/__pycache__/test_p36_kp_align.cpython-310.pyc +0 -0
  141. package/md_cg/__pycache__/test_p37_condition_space.cpython-310.pyc +0 -0
  142. package/md_cg/__pycache__/test_p38_contextualize.cpython-310.pyc +0 -0
  143. package/md_cg/__pycache__/test_p39_vision_evidence.cpython-310.pyc +0 -0
  144. package/md_cg/__pycache__/test_p40_refine_worklist.cpython-310.pyc +0 -0
  145. package/md_cg/__pycache__/test_p41_evolve_patrol.cpython-310.pyc +0 -0
  146. package/md_cg/__pycache__/test_p42_provenance.cpython-310.pyc +0 -0
  147. package/md_cg/__pycache__/test_p43_pooling.cpython-310.pyc +0 -0
  148. package/md_cg/__pycache__/test_p44_md_whitebox.cpython-310.pyc +0 -0
  149. package/md_cg/__pycache__/test_p4_fuzzy.cpython-310-pytest-9.1.1.pyc +0 -0
  150. package/md_cg/__pycache__/test_p4_fuzzy.cpython-310.pyc +0 -0
  151. package/md_cg/__pycache__/test_p5_semantic.cpython-310-pytest-9.1.1.pyc +0 -0
  152. package/md_cg/__pycache__/test_p5_semantic.cpython-310.pyc +0 -0
  153. package/md_cg/__pycache__/test_p6_consolidate.cpython-310-pytest-9.1.1.pyc +0 -0
  154. package/md_cg/__pycache__/test_p6_consolidate.cpython-310.pyc +0 -0
  155. package/md_cg/__pycache__/test_p7_goals_recent.cpython-310-pytest-9.1.1.pyc +0 -0
  156. package/md_cg/__pycache__/test_p7_goals_recent.cpython-310.pyc +0 -0
  157. package/md_cg/__pycache__/test_p8_subgraph_chain.cpython-310-pytest-9.1.1.pyc +0 -0
  158. package/md_cg/__pycache__/test_p8_subgraph_chain.cpython-310.pyc +0 -0
  159. package/md_cg/__pycache__/test_p9_forget_protect.cpython-310-pytest-9.1.1.pyc +0 -0
  160. package/md_cg/__pycache__/test_p9_forget_protect.cpython-310.pyc +0 -0
  161. package/md_cg/__pycache__/theory.cpython-310.pyc +0 -0
  162. package/md_cg/__pycache__/tokens.cpython-310.pyc +0 -0
  163. package/md_cg/__pycache__/vision_evidence.cpython-310.pyc +0 -0
  164. package/md_cg/__pycache__/weights.cpython-310.pyc +0 -0
  165. package/md_cg/__pycache__/whitebox.cpython-310.pyc +0 -0
  166. package/md_cg/audit.py +223 -0
  167. package/md_cg/backfill.py +1272 -0
  168. package/md_cg/bench_membench.py +602 -0
  169. package/md_cg/bench_p0.py +147 -0
  170. package/md_cg/bench_task_ab.py +237 -0
  171. package/md_cg/bench_task_ab_llm.py +397 -0
  172. package/md_cg/census.py +117 -0
  173. package/md_cg/chain.py +280 -0
  174. package/md_cg/codeindex.py +359 -0
  175. package/md_cg/consistency.py +593 -0
  176. package/md_cg/consolidate.py +1389 -0
  177. package/md_cg/corpus.py +106 -0
  178. package/md_cg/crosscheck.py +1058 -0
  179. package/md_cg/crypto.py +404 -0
  180. package/md_cg/datapath.py +160 -0
  181. package/md_cg/docindex.py +333 -0
  182. package/md_cg/evidence.py +555 -0
  183. package/md_cg/evolution.py +458 -0
  184. package/md_cg/export.py +210 -0
  185. package/md_cg/forgetting.py +552 -0
  186. package/md_cg/fsutil.py +251 -0
  187. package/md_cg/identity.py +374 -0
  188. package/md_cg/insight.py +485 -0
  189. package/md_cg/links.py +595 -0
  190. package/md_cg/mcp_server.py +2445 -0
  191. package/md_cg/md_whitebox.py +271 -0
  192. package/md_cg/mdcg.py +1210 -0
  193. package/md_cg/mdcos.py +2505 -0
  194. package/md_cg/metacognition.py +557 -0
  195. package/md_cg/migrate.py +115 -0
  196. package/md_cg/migrate_aeis.py +213 -0
  197. package/md_cg/migrate_roleplay.py +285 -0
  198. package/md_cg/migrate_wisdom_graph.py +348 -0
  199. package/md_cg/nodefile.py +308 -0
  200. package/md_cg/pooling.py +451 -0
  201. package/md_cg/predict.py +918 -0
  202. package/md_cg/protect.py +260 -0
  203. package/md_cg/provenance.py +321 -0
  204. package/md_cg/refindex.py +585 -0
  205. package/md_cg/refine.py +586 -0
  206. package/md_cg/routing.py +290 -0
  207. package/md_cg/scrub.py +788 -0
  208. package/md_cg/security.py +235 -0
  209. package/md_cg/self_state.py +843 -0
  210. package/md_cg/signer.py +523 -0
  211. package/md_cg/sources.py +547 -0
  212. package/md_cg/stg.py +250 -0
  213. package/md_cg/subgraph.py +706 -0
  214. package/md_cg/sustain.py +874 -0
  215. package/md_cg/test_lock.py +43 -0
  216. package/md_cg/test_p0.py +250 -0
  217. package/md_cg/test_p1.py +317 -0
  218. package/md_cg/test_p10_identity.py +173 -0
  219. package/md_cg/test_p11_consistency.py +233 -0
  220. package/md_cg/test_p12_metacognition.py +212 -0
  221. package/md_cg/test_p13_encryption.py +241 -0
  222. package/md_cg/test_p14_sustain.py +249 -0
  223. package/md_cg/test_p15_scrub.py +280 -0
  224. package/md_cg/test_p16_self_state.py +275 -0
  225. package/md_cg/test_p17_predict.py +341 -0
  226. package/md_cg/test_p18_whitebox.py +171 -0
  227. package/md_cg/test_p19_migrate_roleplay.py +149 -0
  228. package/md_cg/test_p2.py +205 -0
  229. package/md_cg/test_p20_evolution.py +315 -0
  230. package/md_cg/test_p21_tokens.py +270 -0
  231. package/md_cg/test_p22_theory.py +175 -0
  232. package/md_cg/test_p23_links.py +311 -0
  233. package/md_cg/test_p24_evidence.py +227 -0
  234. package/md_cg/test_p25_weights.py +156 -0
  235. package/md_cg/test_p26_refindex.py +387 -0
  236. package/md_cg/test_p27_docindex.py +377 -0
  237. package/md_cg/test_p28_refcheck.py +305 -0
  238. package/md_cg/test_p29_session_ingest_export.py +333 -0
  239. package/md_cg/test_p2_mcp.py +425 -0
  240. package/md_cg/test_p3.py +252 -0
  241. package/md_cg/test_p30_maintain.py +330 -0
  242. package/md_cg/test_p31_insight.py +510 -0
  243. package/md_cg/test_p32_backfill.py +298 -0
  244. package/md_cg/test_p33_ccg_wiring.py +293 -0
  245. package/md_cg/test_p34_crosscheck.py +331 -0
  246. package/md_cg/test_p35_conditioned_claim.py +252 -0
  247. package/md_cg/test_p36_kp_align.py +225 -0
  248. package/md_cg/test_p37_condition_space.py +248 -0
  249. package/md_cg/test_p38_contextualize.py +273 -0
  250. package/md_cg/test_p39_vision_evidence.py +369 -0
  251. package/md_cg/test_p40_refine_worklist.py +241 -0
  252. package/md_cg/test_p41_evolve_patrol.py +224 -0
  253. package/md_cg/test_p42_provenance.py +269 -0
  254. package/md_cg/test_p43_pooling.py +360 -0
  255. package/md_cg/test_p44_md_whitebox.py +218 -0
  256. package/md_cg/test_p4_fuzzy.py +223 -0
  257. package/md_cg/test_p5_semantic.py +226 -0
  258. package/md_cg/test_p6_consolidate.py +387 -0
  259. package/md_cg/test_p7_goals_recent.py +202 -0
  260. package/md_cg/test_p8_subgraph_chain.py +200 -0
  261. package/md_cg/test_p9_forget_protect.py +231 -0
  262. package/md_cg/theory.py +259 -0
  263. package/md_cg/tokens.py +506 -0
  264. package/md_cg/vision_evidence.py +644 -0
  265. package/md_cg/weights.py +602 -0
  266. package/md_cg/whitebox.py +497 -0
  267. package/md_cg/whitebox_kb/__init__.py +37 -0
  268. package/md_cg/whitebox_kb/__pycache__/__init__.cpython-310.pyc +0 -0
  269. package/md_cg/whitebox_kb/__pycache__/engine.cpython-310.pyc +0 -0
  270. package/md_cg/whitebox_kb/aeis_core/__init__.py +42 -0
  271. package/md_cg/whitebox_kb/aeis_core/__pycache__/__init__.cpython-310.pyc +0 -0
  272. package/md_cg/whitebox_kb/aeis_core/__pycache__/core.cpython-310.pyc +0 -0
  273. package/md_cg/whitebox_kb/aeis_core/__pycache__/semantic.cpython-310.pyc +0 -0
  274. package/md_cg/whitebox_kb/aeis_core/__pycache__/time_core.cpython-310.pyc +0 -0
  275. package/md_cg/whitebox_kb/aeis_core/api.py +1042 -0
  276. package/md_cg/whitebox_kb/aeis_core/core.py +5014 -0
  277. package/md_cg/whitebox_kb/aeis_core/semantic.py +280 -0
  278. package/md_cg/whitebox_kb/aeis_core/textutil.py +13 -0
  279. package/md_cg/whitebox_kb/aeis_core/time_core.py +43 -0
  280. package/md_cg/whitebox_kb/data/verify_cache.json +1873 -0
  281. package/md_cg/whitebox_kb/data/verify_savings.jsonl +1330 -0
  282. package/md_cg/whitebox_kb/engine.py +310 -0
  283. package/md_cg/whitebox_kb/knowledge/_ccg_dump.json +1 -0
  284. package/md_cg/whitebox_kb/knowledge/_index.json +15300 -0
  285. package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/345/234/260/346/240/207.md +22 -0
  286. package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/346/226/207/345/214/226.md +15 -0
  287. package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/350/207/252/347/204/266/345/245/207/350/247/202.md +29 -0
  288. package/md_cg/whitebox_kb/knowledge//344/270/226/347/225/214/351/201/227/344/272/247.md +15 -0
  289. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/345/217/244/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  290. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/345/220/215/350/203/234.md +15 -0
  291. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/345/257/223/350/250/200.md +15 -0
  292. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/347/216/260/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  293. package/md_cg/whitebox_kb/knowledge//344/270/255/345/233/275/347/245/236/350/257/235.md +22 -0
  294. package/md_cg/whitebox_kb/knowledge//344/271/246/346/263/225/346/226/207/345/214/226.md +22 -0
  295. package/md_cg/whitebox_kb/knowledge//344/272/244/351/200/232/345/256/211/345/205/250.md +15 -0
  296. package/md_cg/whitebox_kb/knowledge//344/272/244/351/200/232/351/200/232/350/257/206.md +15 -0
  297. package/md_cg/whitebox_kb/knowledge//344/272/272/344/275/223/347/224/237/347/220/206.md +22 -0
  298. package/md_cg/whitebox_kb/knowledge//344/272/272/345/267/245/346/231/272/350/203/275/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +307 -0
  299. package/md_cg/whitebox_kb/knowledge//344/272/272/346/226/207/351/200/232/350/257/206.md +1296 -0
  300. package/md_cg/whitebox_kb/knowledge//344/272/272/347/211/251/345/216/206/345/217/262.md +15 -0
  301. package/md_cg/whitebox_kb/knowledge//344/272/272/347/261/273/350/247/202/345/257/237/350/200/205/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +265 -0
  302. package/md_cg/whitebox_kb/knowledge//344/272/272/351/231/205/346/262/237/351/200/232.md +22 -0
  303. package/md_cg/whitebox_kb/knowledge//344/274/232/350/256/241/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +131 -0
  304. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/344/271/220/345/231/250.md +15 -0
  305. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/205/273/347/224/237.md +15 -0
  306. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/216/206/346/263/225.md +15 -0
  307. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/267/245/350/211/272.md +148 -0
  308. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/345/273/272/347/255/221.md +29 -0
  309. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/346/226/207/345/214/226.md +92 -0
  310. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/346/243/213/347/261/273.md +15 -0
  311. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/346/255/246/346/234/257.md +15 -0
  312. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/347/276/216/345/276/267.md +29 -0
  313. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/347/276/216/351/243/237.md +36 -0
  314. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/350/211/272/346/234/257.md +71 -0
  315. package/md_cg/whitebox_kb/knowledge//344/274/240/347/273/237/350/212/202/346/227/245.md +22 -0
  316. package/md_cg/whitebox_kb/knowledge//344/275/223/350/202/262.md +15 -0
  317. package/md_cg/whitebox_kb/knowledge//344/275/223/350/202/262/350/277/220/345/212/250.md +15 -0
  318. package/md_cg/whitebox_kb/knowledge//344/277/241/346/201/257/345/256/211/345/205/250.md +15 -0
  319. package/md_cg/whitebox_kb/knowledge//344/277/241/346/201/257/346/212/200/346/234/257.md +22 -0
  320. package/md_cg/whitebox_kb/knowledge//344/277/241/346/201/257/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +90 -0
  321. package/md_cg/whitebox_kb/knowledge//345/201/245/345/272/267/344/271/240/346/203/257.md +15 -0
  322. package/md_cg/whitebox_kb/knowledge//345/201/245/345/272/267/345/270/270/350/257/206.md +50 -0
  323. package/md_cg/whitebox_kb/knowledge//345/205/211/345/255/246/351/200/232/350/257/206.md +15 -0
  324. package/md_cg/whitebox_kb/knowledge//345/205/273/347/224/237/346/226/271/346/263/225.md +15 -0
  325. package/md_cg/whitebox_kb/knowledge//345/206/233/344/272/213/345/217/262.md +15 -0
  326. package/md_cg/whitebox_kb/knowledge//345/206/234/344/270/232/345/270/270/350/257/206.md +15 -0
  327. package/md_cg/whitebox_kb/knowledge//345/210/206/345/255/220/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  328. package/md_cg/whitebox_kb/knowledge//345/210/206/346/236/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  329. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +391 -0
  330. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +279 -0
  331. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  332. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +391 -0
  333. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +545 -0
  334. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +426 -0
  335. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  336. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  337. package/md_cg/whitebox_kb/knowledge//345/210/235/344/270/255/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  338. package/md_cg/whitebox_kb/knowledge//345/210/266/345/272/246/345/217/262.md +64 -0
  339. package/md_cg/whitebox_kb/knowledge//345/211/215/346/262/277/347/247/221/346/212/200.md +36 -0
  340. package/md_cg/whitebox_kb/knowledge//345/212/250/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  341. package/md_cg/whitebox_kb/knowledge//345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +2081 -0
  342. package/md_cg/whitebox_kb/knowledge//345/214/226/345/267/245/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  343. package/md_cg/whitebox_kb/knowledge//345/214/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  344. package/md_cg/whitebox_kb/knowledge//345/216/206/345/217/262/345/234/260/347/220/206.md +29 -0
  345. package/md_cg/whitebox_kb/knowledge//345/216/206/345/217/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +464 -0
  346. package/md_cg/whitebox_kb/knowledge//345/216/237/345/255/220/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  347. package/md_cg/whitebox_kb/knowledge//345/217/244/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  348. package/md_cg/whitebox_kb/knowledge//345/217/244/347/224/237/347/211/251.md +22 -0
  349. package/md_cg/whitebox_kb/knowledge//345/223/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +118 -0
  350. package/md_cg/whitebox_kb/knowledge//345/225/206/344/270/232/345/217/262.md +15 -0
  351. package/md_cg/whitebox_kb/knowledge//345/231/250/347/211/251/345/267/245/350/211/272.md +15 -0
  352. package/md_cg/whitebox_kb/knowledge//345/233/255/346/236/227/345/273/272/347/255/221.md +15 -0
  353. package/md_cg/whitebox_kb/knowledge//345/233/272/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +202 -0
  354. package/md_cg/whitebox_kb/knowledge//345/233/276/345/203/217/347/224/237/346/210/220.md +99 -0
  355. package/md_cg/whitebox_kb/knowledge//345/234/237/346/234/250/345/267/245/347/250/213/345/237/272/347/241/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  356. package/md_cg/whitebox_kb/knowledge//345/234/260/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +303 -0
  357. package/md_cg/whitebox_kb/knowledge//345/244/215/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
  358. package/md_cg/whitebox_kb/knowledge//345/244/226/345/233/275/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +118 -0
  359. package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +265 -0
  360. package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/346/200/235/346/224/277/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  361. package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +321 -0
  362. package/md_cg/whitebox_kb/knowledge//345/244/247/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
  363. package/md_cg/whitebox_kb/knowledge//345/244/251/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  364. package/md_cg/whitebox_kb/knowledge//345/244/251/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +173 -0
  365. package/md_cg/whitebox_kb/knowledge//345/255/230/345/234/250/350/256/272.md +43 -0
  366. package/md_cg/whitebox_kb/knowledge//345/255/246/344/271/240/346/226/271/346/263/225.md +57 -0
  367. package/md_cg/whitebox_kb/knowledge//345/256/211/345/205/250/345/270/270/350/257/206.md +22 -0
  368. package/md_cg/whitebox_kb/knowledge//345/256/217/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  369. package/md_cg/whitebox_kb/knowledge//345/256/236/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
  370. package/md_cg/whitebox_kb/knowledge//345/256/240/347/211/251.md +29 -0
  371. package/md_cg/whitebox_kb/knowledge//345/256/266/345/272/255/345/205/263/347/263/273.md +29 -0
  372. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +566 -0
  373. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1274 -0
  374. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  375. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  376. package/md_cg/whitebox_kb/knowledge//345/260/217/345/255/246/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  377. package/md_cg/whitebox_kb/knowledge//345/267/245/347/250/213/345/210/266/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +118 -0
  378. package/md_cg/whitebox_kb/knowledge//345/267/245/347/250/213/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +611 -0
  379. package/md_cg/whitebox_kb/knowledge//345/267/245/347/250/213/347/247/221/345/255/246.md +22 -0
  380. package/md_cg/whitebox_kb/knowledge//345/267/245/350/211/272/351/200/232/350/257/206.md +15 -0
  381. package/md_cg/whitebox_kb/knowledge//345/270/202/345/234/272/350/220/245/351/224/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
  382. package/md_cg/whitebox_kb/knowledge//345/270/270/345/276/256/345/210/206/346/226/271/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +237 -0
  383. package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/344/272/272/346/226/207.md +15 -0
  384. package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/345/216/206/345/217/262.md +43 -0
  385. package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/350/211/272/346/234/257.md +15 -0
  386. package/md_cg/whitebox_kb/knowledge//345/273/272/347/255/221/351/200/232/350/257/206.md +15 -0
  387. package/md_cg/whitebox_kb/knowledge//345/275/261/350/247/206/345/270/270/350/257/206.md +29 -0
  388. package/md_cg/whitebox_kb/knowledge//345/276/256/345/210/206/345/207/240/344/275/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  389. package/md_cg/whitebox_kb/knowledge//345/276/256/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  390. package/md_cg/whitebox_kb/knowledge//345/276/256/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  391. package/md_cg/whitebox_kb/knowledge//345/277/203/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
  392. package/md_cg/whitebox_kb/knowledge//346/200/235/347/273/264/345/256/232/345/276/213.md +29 -0
  393. package/md_cg/whitebox_kb/knowledge//346/203/205/346/204/237/346/203/205/347/273/252/344/273/277/347/234/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +186 -0
  394. package/md_cg/whitebox_kb/knowledge//346/210/217/346/233/262/350/211/272/346/234/257.md +22 -0
  395. package/md_cg/whitebox_kb/knowledge//346/210/220/350/257/255/345/205/270/346/225/205.md +15 -0
  396. package/md_cg/whitebox_kb/knowledge//346/211/213/345/267/245/345/270/270/350/257/206.md +15 -0
  397. package/md_cg/whitebox_kb/knowledge//346/212/275/350/261/241/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  398. package/md_cg/whitebox_kb/knowledge//346/213/223/346/211/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  399. package/md_cg/whitebox_kb/knowledge//346/223/215/344/275/234/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  400. package/md_cg/whitebox_kb/knowledge//346/224/266/350/227/217/351/233/206/350/227/217.md +92 -0
  401. package/md_cg/whitebox_kb/knowledge//346/224/277/346/262/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +387 -0
  402. package/md_cg/whitebox_kb/knowledge//346/225/210/347/216/207/346/226/271/346/263/225.md +15 -0
  403. package/md_cg/whitebox_kb/knowledge//346/225/260/345/200/274/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +202 -0
  404. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/227/347/224/265/350/267/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  405. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/227/347/264/240/345/205/273.md +22 -0
  406. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +2074 -0
  407. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/246/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +349 -0
  408. package/md_cg/whitebox_kb/knowledge//346/225/260/345/255/246/347/211/251/347/220/206/346/226/271/346/263/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  409. package/md_cg/whitebox_kb/knowledge//346/225/260/346/215/256/345/272/223/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  410. package/md_cg/whitebox_kb/knowledge//346/225/260/346/215/256/347/273/223/346/236/204/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  411. package/md_cg/whitebox_kb/knowledge//346/226/207/345/205/267/345/270/270/350/257/206.md +15 -0
  412. package/md_cg/whitebox_kb/knowledge//346/226/207/345/214/226.md +36 -0
  413. package/md_cg/whitebox_kb/knowledge//346/226/207/345/214/226/351/200/232/350/257/206.md +15 -0
  414. package/md_cg/whitebox_kb/knowledge//346/226/207/345/255/227/345/255/246.md +15 -0
  415. package/md_cg/whitebox_kb/knowledge//346/226/207/345/255/227/350/265/267/346/272/220.md +15 -0
  416. package/md_cg/whitebox_kb/knowledge//346/226/207/345/255/246/347/220/206/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +328 -0
  417. package/md_cg/whitebox_kb/knowledge//346/226/207/346/225/231/345/216/206/345/217/262.md +15 -0
  418. package/md_cg/whitebox_kb/knowledge//346/226/207/347/211/251/351/200/232/350/257/206.md +22 -0
  419. package/md_cg/whitebox_kb/knowledge//346/226/207/347/214/256/345/255/246.md +22 -0
  420. package/md_cg/whitebox_kb/knowledge//346/227/240/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +216 -0
  421. package/md_cg/whitebox_kb/knowledge//346/227/266/347/251/272/350/256/260/345/277/206/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +214 -0
  422. package/md_cg/whitebox_kb/knowledge//346/230/206/350/231/253/345/270/270/350/257/206.md +29 -0
  423. package/md_cg/whitebox_kb/knowledge//346/231/272/350/203/275/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +441 -0
  424. package/md_cg/whitebox_kb/knowledge//346/233/262/350/211/272/345/270/270/350/257/206.md +15 -0
  425. package/md_cg/whitebox_kb/knowledge//346/234/211/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
  426. package/md_cg/whitebox_kb/knowledge//346/234/215/351/245/260/346/226/207/345/214/226.md +22 -0
  427. package/md_cg/whitebox_kb/knowledge//346/234/252/345/210/206/347/261/273.md +52 -0
  428. package/md_cg/whitebox_kb/knowledge//346/234/272/346/242/260/351/200/232/350/257/206.md +15 -0
  429. package/md_cg/whitebox_kb/knowledge//346/235/220/346/226/231/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  430. package/md_cg/whitebox_kb/knowledge//346/235/241/344/273/266/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +350 -0
  431. package/md_cg/whitebox_kb/knowledge//346/243/213/347/211/214/350/247/204/345/210/231.md +15 -0
  432. package/md_cg/whitebox_kb/knowledge//346/243/213/347/261/273/350/247/204/345/210/231.md +36 -0
  433. package/md_cg/whitebox_kb/knowledge//346/244/215/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
  434. package/md_cg/whitebox_kb/knowledge//346/246/202/347/216/207/350/256/272/344/270/216/346/225/260/347/220/206/347/273/237/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +230 -0
  435. package/md_cg/whitebox_kb/knowledge//346/250/241/346/213/237/347/224/265/345/255/220/346/212/200/346/234/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  436. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227.md +64 -0
  437. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/344/277/241/344/273/260.md +36 -0
  438. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/345/205/273/347/224/237.md +15 -0
  439. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/345/216/206/346/263/225.md +15 -0
  440. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/345/231/250/347/211/251.md +15 -0
  441. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/346/226/207/345/214/226.md +22 -0
  442. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/350/257/255/350/250/200.md +15 -0
  443. package/md_cg/whitebox_kb/knowledge//346/260/221/344/277/227/351/233/205/347/216/251.md +50 -0
  444. package/md_cg/whitebox_kb/knowledge//346/260/224/350/261/241/345/270/270/350/257/206.md +15 -0
  445. package/md_cg/whitebox_kb/knowledge//346/260/224/350/261/241/351/200/232/350/257/206.md +15 -0
  446. package/md_cg/whitebox_kb/knowledge//346/261/202/350/201/214/346/212/200/350/203/275.md +29 -0
  447. package/md_cg/whitebox_kb/knowledge//346/262/237/351/200/232.md +29 -0
  448. package/md_cg/whitebox_kb/knowledge//346/263/225/345/276/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +14 -0
  449. package/md_cg/whitebox_kb/knowledge//346/263/233/345/207/275/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +188 -0
  450. package/md_cg/whitebox_kb/knowledge//346/265/267/346/264/213/347/224/237/347/211/251.md +15 -0
  451. package/md_cg/whitebox_kb/knowledge//347/203/255/345/212/233/345/255/246/344/270/216/347/273/237/350/256/241/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +188 -0
  452. package/md_cg/whitebox_kb/knowledge//347/203/271/351/245/252/346/212/200/346/263/225.md +15 -0
  453. package/md_cg/whitebox_kb/knowledge//347/211/251/347/220/206/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +195 -0
  454. package/md_cg/whitebox_kb/knowledge//347/211/251/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +2256 -0
  455. package/md_cg/whitebox_kb/knowledge//347/216/260/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  456. package/md_cg/whitebox_kb/knowledge//347/220/206/350/256/272/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +209 -0
  457. package/md_cg/whitebox_kb/knowledge//347/224/237/346/200/201/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
  458. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/345/215/253/347/224/237.md +15 -0
  459. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/345/270/270/350/257/206.md +1296 -0
  460. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/346/212/200/350/203/275.md +43 -0
  461. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/347/247/221/346/212/200.md +22 -0
  462. package/md_cg/whitebox_kb/knowledge//347/224/237/346/264/273/351/200/232/350/257/206.md +15 -0
  463. package/md_cg/whitebox_kb/knowledge//347/224/237/347/211/251/344/277/235/346/212/244.md +36 -0
  464. package/md_cg/whitebox_kb/knowledge//347/224/237/347/211/251/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +209 -0
  465. package/md_cg/whitebox_kb/knowledge//347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1759 -0
  466. package/md_cg/whitebox_kb/knowledge//347/224/237/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +132 -0
  467. package/md_cg/whitebox_kb/knowledge//347/224/265/345/212/250/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +188 -0
  468. package/md_cg/whitebox_kb/knowledge//347/224/265/350/267/257/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  469. package/md_cg/whitebox_kb/knowledge//347/231/275/347/256/261/345/215/217/350/256/256.md +22 -0
  470. package/md_cg/whitebox_kb/knowledge//347/233/212/346/231/272/346/270/270/346/210/217.md +15 -0
  471. package/md_cg/whitebox_kb/knowledge//347/233/212/346/231/272/351/200/232/350/257/206.md +15 -0
  472. package/md_cg/whitebox_kb/knowledge//347/244/276/344/272/244/346/212/200/345/267/247.md +15 -0
  473. package/md_cg/whitebox_kb/knowledge//347/244/276/344/274/232/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  474. package/md_cg/whitebox_kb/knowledge//347/244/276/344/274/232/347/247/221/345/255/246.md +43 -0
  475. package/md_cg/whitebox_kb/knowledge//347/245/236/350/257/235/344/274/240/350/257/264.md +15 -0
  476. package/md_cg/whitebox_kb/knowledge//347/247/221/345/255/246/345/217/262.md +22 -0
  477. package/md_cg/whitebox_kb/knowledge//347/247/221/346/212/200/351/200/232/350/257/206.md +78 -0
  478. package/md_cg/whitebox_kb/knowledge//347/250/213/345/272/217/350/256/276/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  479. package/md_cg/whitebox_kb/knowledge//347/256/227/346/263/225/350/256/276/350/256/241/344/270/216/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  480. package/md_cg/whitebox_kb/knowledge//347/256/241/347/220/206/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  481. package/md_cg/whitebox_kb/knowledge//347/272/277/346/200/247/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +202 -0
  482. package/md_cg/whitebox_kb/knowledge//347/273/206/350/203/236/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +181 -0
  483. package/md_cg/whitebox_kb/knowledge//347/273/217/346/265/216/345/217/262.md +43 -0
  484. package/md_cg/whitebox_kb/knowledge//347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +204 -0
  485. package/md_cg/whitebox_kb/knowledge//347/273/223/346/236/204/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  486. package/md_cg/whitebox_kb/knowledge//347/273/274/345/220/210/302/267/347/273/264/345/237/272/347/273/274/350/277/260.md +184 -0
  487. package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213-Git.md +15 -0
  488. package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213-JS.md +15 -0
  489. package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213/346/246/202/345/277/265.md +15 -0
  490. package/md_cg/whitebox_kb/knowledge//347/274/226/347/250/213/350/257/255/350/250/200.md +120 -0
  491. package/md_cg/whitebox_kb/knowledge//347/274/226/350/257/221/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  492. package/md_cg/whitebox_kb/knowledge//347/275/221/347/273/234/345/256/211/345/205/250.md +34 -0
  493. package/md_cg/whitebox_kb/knowledge//350/200/203/345/217/244/345/270/270/350/257/206.md +64 -0
  494. package/md_cg/whitebox_kb/knowledge//350/207/252/346/210/221/346/204/217/350/257/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +270 -0
  495. package/md_cg/whitebox_kb/knowledge//350/211/272/346/234/257/345/220/215/345/256/266.md +15 -0
  496. package/md_cg/whitebox_kb/knowledge//350/211/272/346/234/257/346/265/201/346/264/276.md +15 -0
  497. package/md_cg/whitebox_kb/knowledge//350/214/266/346/226/207/345/214/226.md +15 -0
  498. package/md_cg/whitebox_kb/knowledge//350/256/241/347/256/227/346/234/272/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +4265 -0
  499. package/md_cg/whitebox_kb/knowledge//350/256/241/347/256/227/346/234/272/347/273/204/346/210/220/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  500. package/md_cg/whitebox_kb/knowledge//350/256/241/347/256/227/346/234/272/347/275/221/347/273/234/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  501. package/md_cg/whitebox_kb/knowledge//350/257/255/350/250/200/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +373 -0
  502. package/md_cg/whitebox_kb/knowledge//350/264/247/345/270/201/345/217/262.md +15 -0
  503. package/md_cg/whitebox_kb/knowledge//350/264/247/345/270/201/345/270/270/350/257/206.md +15 -0
  504. package/md_cg/whitebox_kb/knowledge//350/275/257/344/273/266/345/267/245/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +160 -0
  505. package/md_cg/whitebox_kb/knowledge//350/277/220/345/212/250/345/201/245/345/272/267.md +15 -0
  506. package/md_cg/whitebox_kb/knowledge//350/277/220/345/212/250/345/270/270/350/257/206.md +15 -0
  507. package/md_cg/whitebox_kb/knowledge//350/277/220/345/212/250/347/247/221/345/255/246.md +22 -0
  508. package/md_cg/whitebox_kb/knowledge//350/277/221/344/270/226/346/234/215/351/245/260.md +15 -0
  509. package/md_cg/whitebox_kb/knowledge//351/200/273/350/276/221/345/255/246.md +14 -0
  510. package/md_cg/whitebox_kb/knowledge//351/201/227/344/274/240/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  511. package/md_cg/whitebox_kb/knowledge//351/207/217/345/255/220/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +209 -0
  512. package/md_cg/whitebox_kb/knowledge//351/207/221/350/236/215/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  513. package/md_cg/whitebox_kb/knowledge//351/235/236/351/201/227/350/211/272/346/234/257.md +43 -0
  514. package/md_cg/whitebox_kb/knowledge//351/237/263/344/271/220.md +15 -0
  515. package/md_cg/whitebox_kb/knowledge//351/237/263/344/271/220/345/220/215/345/256/266.md +22 -0
  516. package/md_cg/whitebox_kb/knowledge//351/237/263/344/271/220/345/270/270/350/257/206.md +29 -0
  517. package/md_cg/whitebox_kb/knowledge//351/243/237/345/223/201/347/247/221/345/255/246.md +57 -0
  518. package/md_cg/whitebox_kb/knowledge//351/245/256/351/243/237/345/270/270/350/257/206.md +29 -0
  519. package/md_cg/whitebox_kb/knowledge//351/245/256/351/243/237/346/226/207/345/214/226.md +29 -0
  520. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +566 -0
  521. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  522. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +139 -0
  523. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/346/200/235/346/203/263/346/224/277/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +174 -0
  524. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +566 -0
  525. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +692 -0
  526. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +440 -0
  527. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +167 -0
  528. package/md_cg/whitebox_kb/knowledge//351/253/230/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  529. package/md_cg/whitebox_kb/knowledge//351/253/230/345/210/206/345/255/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +146 -0
  530. package/md_cg/whitebox_kb/knowledge//351/253/230/347/255/211/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +244 -0
  531. package/md_cg/whitebox_kb/knowledge//351/253/230/347/255/211/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +384 -0
  532. package/md_cg/whitebox_kb/seed_knowledge/__init__.py +2 -0
  533. package/md_cg/whitebox_kb/seed_knowledge/guardrail-charter.md +164 -0
  534. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/270/255/345/233/275/345/217/244/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  535. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/270/255/345/233/275/347/216/260/344/273/243/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  536. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/272/272/345/267/245/346/231/272/350/203/275/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +121 -0
  537. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/272/272/347/261/273/350/247/202/345/257/237/350/200/205/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +161 -0
  538. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/274/232/350/256/241/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  539. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//344/277/241/346/201/257/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +90 -0
  540. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/206/345/255/220/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  541. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/206/346/236/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  542. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +241 -0
  543. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  544. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  545. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +241 -0
  546. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +317 -0
  547. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +261 -0
  548. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  549. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  550. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/210/235/344/270/255/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  551. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/212/250/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  552. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1194 -0
  553. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/214/226/345/267/245/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  554. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/214/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
  555. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/216/206/345/217/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +278 -0
  556. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/216/237/345/255/220/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  557. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/217/244/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  558. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/223/262/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
  559. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/233/272/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
  560. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/234/237/346/234/250/345/267/245/347/250/213/345/237/272/347/241/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  561. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/234/260/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +154 -0
  562. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/215/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
  563. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/226/345/233/275/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +85 -0
  564. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +169 -0
  565. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/346/200/235/346/224/277/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  566. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +201 -0
  567. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/247/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +93 -0
  568. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/251/344/275/223/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  569. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/244/251/346/226/207/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +131 -0
  570. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/256/217/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  571. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/256/236/345/217/230/345/207/275/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
  572. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +333 -0
  573. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1124 -0
  574. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  575. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  576. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/260/217/345/255/246/351/201/223/345/276/267/344/270/216/346/263/225/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  577. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/267/245/347/250/213/345/210/266/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +85 -0
  578. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/267/245/347/250/213/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +362 -0
  579. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/270/202/345/234/272/350/220/245/351/224/200/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +81 -0
  580. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/270/270/345/276/256/345/210/206/346/226/271/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +153 -0
  581. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/276/256/345/210/206/345/207/240/344/275/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  582. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/276/256/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  583. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/276/256/350/247/202/347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  584. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//345/277/203/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +119 -0
  585. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/203/205/346/204/237/346/203/205/347/273/252/344/273/277/347/234/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +186 -0
  586. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/212/275/350/261/241/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  587. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/213/223/346/211/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  588. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/223/215/344/275/234/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  589. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/224/277/346/262/273/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +234 -0
  590. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/200/274/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
  591. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/227/347/224/265/350/267/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  592. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1166 -0
  593. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/246/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +217 -0
  594. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/345/255/246/347/211/251/347/220/206/346/226/271/346/263/225/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  595. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/346/215/256/345/272/223/347/263/273/347/273/237/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  596. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/225/260/346/215/256/347/273/223/346/236/204/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  597. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/226/207/345/255/246/347/220/206/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  598. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/227/240/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +141 -0
  599. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/227/266/347/251/272/350/256/260/345/277/206/345/233/276/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +214 -0
  600. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/231/272/350/203/275/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +350 -0
  601. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/234/211/346/234/272/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
  602. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/235/220/346/226/231/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  603. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/235/241/344/273/266/350/256/272/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +350 -0
  604. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/244/215/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  605. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/246/202/347/216/207/350/256/272/344/270/216/346/225/260/347/220/206/347/273/237/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +149 -0
  606. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/250/241/346/213/237/347/224/265/345/255/220/346/212/200/346/234/257/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  607. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//346/263/233/345/207/275/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  608. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/203/255/345/212/233/345/255/246/344/270/216/347/273/237/350/256/241/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  609. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/211/251/347/220/206/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +129 -0
  610. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/211/251/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1302 -0
  611. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/216/260/344/273/243/346/261/211/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  612. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/220/206/350/256/272/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +137 -0
  613. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/346/200/201/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +93 -0
  614. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/347/211/251/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +137 -0
  615. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +1018 -0
  616. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/237/347/220/206/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +93 -0
  617. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/265/345/212/250/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +125 -0
  618. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/224/265/350/267/257/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  619. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/244/276/344/274/232/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +111 -0
  620. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/250/213/345/272/217/350/256/276/350/256/241/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  621. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/256/227/346/263/225/350/256/276/350/256/241/344/270/216/345/210/206/346/236/220/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  622. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/256/241/347/220/206/345/255/246/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  623. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/272/277/346/200/247/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +133 -0
  624. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/206/350/203/236/347/224/237/347/211/251/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +121 -0
  625. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/217/346/265/216/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +169 -0
  626. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/223/346/236/204/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  627. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/273/274/345/220/210/302/267/347/273/264/345/237/272/347/273/274/350/277/260.md +184 -0
  628. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//347/274/226/350/257/221/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  629. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/207/252/346/210/221/346/204/217/350/257/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +270 -0
  630. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/256/241/347/256/227/346/234/272/347/247/221/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +698 -0
  631. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/256/241/347/256/227/346/234/272/347/273/204/346/210/220/345/216/237/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  632. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/256/241/347/256/227/346/234/272/347/275/221/347/273/234/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +109 -0
  633. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/257/255/350/250/200/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +226 -0
  634. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//350/275/257/344/273/266/345/267/245/347/250/213/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  635. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/201/227/344/274/240/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  636. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/207/217/345/255/220/345/212/233/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +137 -0
  637. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/207/221/350/236/215/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +89 -0
  638. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +341 -0
  639. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/345/216/206/345/217/262/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  640. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/345/234/260/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +97 -0
  641. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/346/200/235/346/203/263/346/224/277/346/262/273/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +117 -0
  642. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +341 -0
  643. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/347/211/251/347/220/206/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +365 -0
  644. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/347/224/237/347/211/251/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +269 -0
  645. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/350/213/261/350/257/255/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +113 -0
  646. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/344/270/255/350/257/255/346/226/207/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +105 -0
  647. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/345/210/206/345/255/220/345/214/226/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +101 -0
  648. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/347/255/211/344/273/243/346/225/260/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +157 -0
  649. package/md_cg/whitebox_kb/seed_knowledge/wisdom_cards//351/253/230/347/255/211/346/225/260/345/255/246/302/267/347/237/245/350/257/206/347/273/274/350/277/260.md +237 -0
  650. package/md_cg/whitebox_kb/seed_knowledge//346/231/272/350/203/275/350/256/2723.3.md +4620 -0
  651. package/md_cg/whitebox_kb/wisdom/__init__.py +6 -0
  652. package/md_cg/whitebox_kb/wisdom/__pycache__/browser_units.cpython-310.pyc +0 -0
  653. package/md_cg/whitebox_kb/wisdom/__pycache__/chat_engine.cpython-310.pyc +0 -0
  654. package/md_cg/whitebox_kb/wisdom/__pycache__/code_compose.cpython-310.pyc +0 -0
  655. package/md_cg/whitebox_kb/wisdom/__pycache__/compiler_code_units.cpython-310.pyc +0 -0
  656. package/md_cg/whitebox_kb/wisdom/__pycache__/condition_frame.cpython-310.pyc +0 -0
  657. package/md_cg/whitebox_kb/wisdom/__pycache__/condition_kb.cpython-310.pyc +0 -0
  658. package/md_cg/whitebox_kb/wisdom/__pycache__/danmaku_audit.cpython-310.pyc +0 -0
  659. package/md_cg/whitebox_kb/wisdom/__pycache__/graph_db_units.cpython-310.pyc +0 -0
  660. package/md_cg/whitebox_kb/wisdom/__pycache__/net_units.cpython-310.pyc +0 -0
  661. package/md_cg/whitebox_kb/wisdom/__pycache__/neural_retrieve.cpython-310.pyc +0 -0
  662. package/md_cg/whitebox_kb/wisdom/__pycache__/os_units.cpython-310.pyc +0 -0
  663. package/md_cg/whitebox_kb/wisdom/__pycache__/python_code_units.cpython-310.pyc +0 -0
  664. package/md_cg/whitebox_kb/wisdom/__pycache__/route_memory.cpython-310.pyc +0 -0
  665. package/md_cg/whitebox_kb/wisdom/__pycache__/semantic_translate.cpython-310.pyc +0 -0
  666. package/md_cg/whitebox_kb/wisdom/__pycache__/verifier.cpython-310.pyc +0 -0
  667. package/md_cg/whitebox_kb/wisdom/__pycache__/verify_answer.cpython-310.pyc +0 -0
  668. package/md_cg/whitebox_kb/wisdom/__pycache__/wisdom_book.cpython-310.pyc +0 -0
  669. package/md_cg/whitebox_kb/wisdom/__pycache__/wisdom_cloud.cpython-310.pyc +0 -0
  670. package/md_cg/whitebox_kb/wisdom/answer_spec_anchor.py +87 -0
  671. package/md_cg/whitebox_kb/wisdom/audit_log/chain_heat.json +26 -0
  672. package/md_cg/whitebox_kb/wisdom/browser_units.py +2631 -0
  673. package/md_cg/whitebox_kb/wisdom/card_validator.py +223 -0
  674. package/md_cg/whitebox_kb/wisdom/causal_discover.py +313 -0
  675. package/md_cg/whitebox_kb/wisdom/chat.html +185 -0
  676. package/md_cg/whitebox_kb/wisdom/chat_engine.py +1506 -0
  677. package/md_cg/whitebox_kb/wisdom/code_compose.py +730 -0
  678. package/md_cg/whitebox_kb/wisdom/code_qa.py +119 -0
  679. package/md_cg/whitebox_kb/wisdom/code_route_bridge.py +90 -0
  680. package/md_cg/whitebox_kb/wisdom/code_solidified.json +6196 -0
  681. package/md_cg/whitebox_kb/wisdom/code_test_runner.py +217 -0
  682. package/md_cg/whitebox_kb/wisdom/codegraph_white.py +312 -0
  683. package/md_cg/whitebox_kb/wisdom/compiler_code_units.py +3033 -0
  684. package/md_cg/whitebox_kb/wisdom/compiler_compose.py +160 -0
  685. package/md_cg/whitebox_kb/wisdom/compose_engine.py +1633 -0
  686. package/md_cg/whitebox_kb/wisdom/condition_algebra.py +112 -0
  687. package/md_cg/whitebox_kb/wisdom/condition_frame.py +315 -0
  688. package/md_cg/whitebox_kb/wisdom/condition_kb.py +108 -0
  689. package/md_cg/whitebox_kb/wisdom/condition_vm.py +264 -0
  690. package/md_cg/whitebox_kb/wisdom/conflict_map.json +4446 -0
  691. package/md_cg/whitebox_kb/wisdom/core/compiler.py +301 -0
  692. package/md_cg/whitebox_kb/wisdom/core/condition_vm.py +298 -0
  693. package/md_cg/whitebox_kb/wisdom/core/lexer.py +512 -0
  694. package/md_cg/whitebox_kb/wisdom/core/name_checker.py +1023 -0
  695. package/md_cg/whitebox_kb/wisdom/core/parser.py +1065 -0
  696. package/md_cg/whitebox_kb/wisdom/cspmn.py +258 -0
  697. package/md_cg/whitebox_kb/wisdom/csre.py +256 -0
  698. package/md_cg/whitebox_kb/wisdom/csre_lexicon_index.npz +0 -0
  699. package/md_cg/whitebox_kb/wisdom/danmaku_audit.py +252 -0
  700. package/md_cg/whitebox_kb/wisdom/danmaku_bridge.py +141 -0
  701. package/md_cg/whitebox_kb/wisdom/distilled_condition_units.json +6418 -0
  702. package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902b.json +1951 -0
  703. package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902c.json +1297 -0
  704. package/md_cg/whitebox_kb/wisdom/docs/codegraph_ref_rating.md +52 -0
  705. package/md_cg/whitebox_kb/wisdom/docs/daoti_absorb_analysis.md +54 -0
  706. package/md_cg/whitebox_kb/wisdom/docs/dsh_memory_v030_stable.md +34 -0
  707. package/md_cg/whitebox_kb/wisdom/docs/github_absorb_analysis.md +71 -0
  708. package/md_cg/whitebox_kb/wisdom/docs/gliding_horse_absorb_analysis.md +47 -0
  709. package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph.md +61 -0
  710. package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph_demo.json +60 -0
  711. package/md_cg/whitebox_kb/wisdom/docs/whitebox_code_rating_202609.md +43 -0
  712. package/md_cg/whitebox_kb/wisdom/docs//344/273/243/347/240/201/346/235/241/344/273/266/350/267/257/347/224/261/345/233/276_CCG/350/256/276/350/256/241.md +150 -0
  713. package/md_cg/whitebox_kb/wisdom/docs//344/273/243/347/240/201/350/257/255/344/271/211/346/235/241/344/273/266/345/215/217/350/256/256.md +650 -0
  714. package/md_cg/whitebox_kb/wisdom/docs//345/261/200/351/203/250/346/234/200/344/274/230/344/270/216/346/203/205/347/273/252/345/201/217/345/245/275_/347/220/206/350/256/272/345/267/245/347/250/213.md +97 -0
  715. package/md_cg/whitebox_kb/wisdom/docs//346/226/271/345/220/221/346/200/247/346/212/211/346/213/251_/350/207/252/344/270/276vs/350/207/252/350/277/255/344/273/243.md +81 -0
  716. package/md_cg/whitebox_kb/wisdom/docs//347/201/265/346/236/242AGI/346/236/266/346/236/204/346/216/242/347/264/242_/346/226/207/346/241/243/350/247/204/345/210/222.md +51 -0
  717. package/md_cg/whitebox_kb/wisdom/docs//347/201/265/346/236/242/346/217/222/344/273/266/345/210/206/347/261/273/345/210/206/346/236/220.md +67 -0
  718. package/md_cg/whitebox_kb/wisdom/docs//347/231/275/347/256/261/346/234/254/345/234/260/346/240/241/351/252/214/345/231/250_ZeroLLM_Verifier.md +276 -0
  719. package/md_cg/whitebox_kb/wisdom/docs//347/231/275/347/256/261/350/207/252/344/270/276/347/254/254/345/205/255/351/230/266/346/256/265_/346/224/266/345/256/230/346/200/273/347/273/223.md +1207 -0
  720. package/md_cg/whitebox_kb/wisdom/ds_compose.py +177 -0
  721. package/md_cg/whitebox_kb/wisdom/graph_db_units.py +3089 -0
  722. package/md_cg/whitebox_kb/wisdom/graph_qa.py +123 -0
  723. package/md_cg/whitebox_kb/wisdom/human_observer_knowledge.json +43 -0
  724. package/md_cg/whitebox_kb/wisdom/knowledge_points.py +234 -0
  725. package/md_cg/whitebox_kb/wisdom/merge_subgraph.py +178 -0
  726. package/md_cg/whitebox_kb/wisdom/migrate_wisdom.py +475 -0
  727. package/md_cg/whitebox_kb/wisdom/mini_python.py +958 -0
  728. package/md_cg/whitebox_kb/wisdom/multilang_ir.py +124 -0
  729. package/md_cg/whitebox_kb/wisdom/navigate.py +248 -0
  730. package/md_cg/whitebox_kb/wisdom/net_units.py +2895 -0
  731. package/md_cg/whitebox_kb/wisdom/neural_index.json +3032 -0
  732. package/md_cg/whitebox_kb/wisdom/neural_index.npz +0 -0
  733. package/md_cg/whitebox_kb/wisdom/neural_retrieve.py +224 -0
  734. package/md_cg/whitebox_kb/wisdom/os_units.py +2735 -0
  735. package/md_cg/whitebox_kb/wisdom/pattern_separation.py +223 -0
  736. package/md_cg/whitebox_kb/wisdom/prereq_map.json +365 -0
  737. package/md_cg/whitebox_kb/wisdom/python_code_units.py +2766 -0
  738. package/md_cg/whitebox_kb/wisdom/role_compose.py +268 -0
  739. package/md_cg/whitebox_kb/wisdom/role_solidified.json +8 -0
  740. package/md_cg/whitebox_kb/wisdom/route_memory.py +244 -0
  741. package/md_cg/whitebox_kb/wisdom/scene_reconstruction.py +148 -0
  742. package/md_cg/whitebox_kb/wisdom/se_compose.py +137 -0
  743. package/md_cg/whitebox_kb/wisdom/semantic_translate.py +4050 -0
  744. package/md_cg/whitebox_kb/wisdom/snr_dashboard.py +219 -0
  745. package/md_cg/whitebox_kb/wisdom/snr_report.json +41 -0
  746. package/md_cg/whitebox_kb/wisdom/spatial_closure.py +96 -0
  747. package/md_cg/whitebox_kb/wisdom/spatial_qa.py +182 -0
  748. package/md_cg/whitebox_kb/wisdom/status_terms.json +21 -0
  749. package/md_cg/whitebox_kb/wisdom/task_discipline.json +43 -0
  750. package/md_cg/whitebox_kb/wisdom/test_code_compose_domains.py +7541 -0
  751. package/md_cg/whitebox_kb/wisdom/test_compiler_self_bootstrap.py +354 -0
  752. package/md_cg/whitebox_kb/wisdom/test_ecosystem_assembly.py +158 -0
  753. package/md_cg/whitebox_kb/wisdom/test_ecosystem_demos.py +193 -0
  754. package/md_cg/whitebox_kb/wisdom/test_graph_db.py +292 -0
  755. package/md_cg/whitebox_kb/wisdom/test_navigate_self_bootstrap.py +69 -0
  756. package/md_cg/whitebox_kb/wisdom/test_python_self_bootstrap.py +160 -0
  757. package/md_cg/whitebox_kb/wisdom/trigger_words_index.json +4367 -0
  758. package/md_cg/whitebox_kb/wisdom/verifier.py +1012 -0
  759. package/md_cg/whitebox_kb/wisdom/verify_answer.py +116 -0
  760. package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db +0 -0
  761. package/md_cg/whitebox_kb/wisdom/wisdom_book.py +2582 -0
  762. package/md_cg/whitebox_kb/wisdom/wisdom_cloud.py +479 -0
  763. package/md_cg/whitebox_kb/wisdom/wisdom_ui.html +863 -0
  764. package/package.json +28 -10
  765. package/skills/README.md +108 -0
  766. package/skills/plugin.json +52 -0
  767. package/skills/skills/analyze-type-infer/SKILL.md +45 -0
  768. package/skills/skills/browser-02898b15/SKILL.md +45 -0
  769. package/skills/skills/browser-03b04f98/SKILL.md +45 -0
  770. package/skills/skills/browser-0754386d/SKILL.md +45 -0
  771. package/skills/skills/browser-093c03ab/SKILL.md +45 -0
  772. package/skills/skills/browser-09e60b35/SKILL.md +45 -0
  773. package/skills/skills/browser-0ab4f2db/SKILL.md +45 -0
  774. package/skills/skills/browser-0c7f88d6/SKILL.md +45 -0
  775. package/skills/skills/browser-0f598430/SKILL.md +45 -0
  776. package/skills/skills/browser-0fd64fa5/SKILL.md +45 -0
  777. package/skills/skills/browser-17906c62/SKILL.md +45 -0
  778. package/skills/skills/browser-18f823e2/SKILL.md +45 -0
  779. package/skills/skills/browser-1bafe81c/SKILL.md +45 -0
  780. package/skills/skills/browser-1f9ab1f0/SKILL.md +45 -0
  781. package/skills/skills/browser-1fdb5852/SKILL.md +45 -0
  782. package/skills/skills/browser-21b0359c/SKILL.md +45 -0
  783. package/skills/skills/browser-22e8de36/SKILL.md +45 -0
  784. package/skills/skills/browser-24163519/SKILL.md +45 -0
  785. package/skills/skills/browser-2471a991/SKILL.md +45 -0
  786. package/skills/skills/browser-25afee4d/SKILL.md +45 -0
  787. package/skills/skills/browser-283a91bd/SKILL.md +45 -0
  788. package/skills/skills/browser-2895ff52/SKILL.md +45 -0
  789. package/skills/skills/browser-2cc1da58/SKILL.md +45 -0
  790. package/skills/skills/browser-3189fe6f/SKILL.md +45 -0
  791. package/skills/skills/browser-31f2b08f/SKILL.md +45 -0
  792. package/skills/skills/browser-37b8339e/SKILL.md +45 -0
  793. package/skills/skills/browser-396ec3a6/SKILL.md +45 -0
  794. package/skills/skills/browser-3df2f904/SKILL.md +45 -0
  795. package/skills/skills/browser-43154cec/SKILL.md +45 -0
  796. package/skills/skills/browser-434b74b8/SKILL.md +45 -0
  797. package/skills/skills/browser-440d4398/SKILL.md +45 -0
  798. package/skills/skills/browser-44d7f183/SKILL.md +45 -0
  799. package/skills/skills/browser-4d6c0788/SKILL.md +45 -0
  800. package/skills/skills/browser-50fecd89/SKILL.md +45 -0
  801. package/skills/skills/browser-555c0626/SKILL.md +45 -0
  802. package/skills/skills/browser-57312d24/SKILL.md +45 -0
  803. package/skills/skills/browser-59a0ada4/SKILL.md +45 -0
  804. package/skills/skills/browser-5a455aeb/SKILL.md +45 -0
  805. package/skills/skills/browser-5ae7623a/SKILL.md +45 -0
  806. package/skills/skills/browser-5dac60b6/SKILL.md +45 -0
  807. package/skills/skills/browser-5e5f1396/SKILL.md +45 -0
  808. package/skills/skills/browser-5ebb01dd/SKILL.md +45 -0
  809. package/skills/skills/browser-5f5453f9/SKILL.md +45 -0
  810. package/skills/skills/browser-5f90f58c/SKILL.md +45 -0
  811. package/skills/skills/browser-609362ee/SKILL.md +45 -0
  812. package/skills/skills/browser-60aefeeb/SKILL.md +45 -0
  813. package/skills/skills/browser-6636d49c/SKILL.md +45 -0
  814. package/skills/skills/browser-6cfcb6db/SKILL.md +45 -0
  815. package/skills/skills/browser-6e1c1158/SKILL.md +45 -0
  816. package/skills/skills/browser-7008e942/SKILL.md +45 -0
  817. package/skills/skills/browser-716cd26c/SKILL.md +45 -0
  818. package/skills/skills/browser-720ce1a1/SKILL.md +45 -0
  819. package/skills/skills/browser-77a97b43/SKILL.md +45 -0
  820. package/skills/skills/browser-7bb4871d/SKILL.md +45 -0
  821. package/skills/skills/browser-7be57bbe/SKILL.md +45 -0
  822. package/skills/skills/browser-7da433f3/SKILL.md +45 -0
  823. package/skills/skills/browser-7e96fe1d/SKILL.md +45 -0
  824. package/skills/skills/browser-7f9cefec/SKILL.md +45 -0
  825. package/skills/skills/browser-80224e71/SKILL.md +45 -0
  826. package/skills/skills/browser-81345ecd/SKILL.md +45 -0
  827. package/skills/skills/browser-822cfa44/SKILL.md +45 -0
  828. package/skills/skills/browser-853690c0/SKILL.md +45 -0
  829. package/skills/skills/browser-85553126/SKILL.md +45 -0
  830. package/skills/skills/browser-87b0ce80/SKILL.md +45 -0
  831. package/skills/skills/browser-900c4484/SKILL.md +45 -0
  832. package/skills/skills/browser-910405c4/SKILL.md +45 -0
  833. package/skills/skills/browser-95fd3c86/SKILL.md +45 -0
  834. package/skills/skills/browser-97a14ca3/SKILL.md +45 -0
  835. package/skills/skills/browser-9de10895/SKILL.md +45 -0
  836. package/skills/skills/browser-9e4914a7/SKILL.md +45 -0
  837. package/skills/skills/browser-a280ec64/SKILL.md +45 -0
  838. package/skills/skills/browser-a2d9b0b0/SKILL.md +45 -0
  839. package/skills/skills/browser-a372edeb/SKILL.md +45 -0
  840. package/skills/skills/browser-a4c793a4/SKILL.md +45 -0
  841. package/skills/skills/browser-a681d0c2/SKILL.md +45 -0
  842. package/skills/skills/browser-a7a2b0c1/SKILL.md +45 -0
  843. package/skills/skills/browser-a990e68e/SKILL.md +45 -0
  844. package/skills/skills/browser-aaac4eec/SKILL.md +45 -0
  845. package/skills/skills/browser-ae6586bb/SKILL.md +45 -0
  846. package/skills/skills/browser-afa4091f/SKILL.md +45 -0
  847. package/skills/skills/browser-b4c8cf65/SKILL.md +45 -0
  848. package/skills/skills/browser-b501767c/SKILL.md +45 -0
  849. package/skills/skills/browser-bcd4288d/SKILL.md +45 -0
  850. package/skills/skills/browser-bfad66a5/SKILL.md +45 -0
  851. package/skills/skills/browser-c45cbfe9/SKILL.md +45 -0
  852. package/skills/skills/browser-c4dd6078/SKILL.md +45 -0
  853. package/skills/skills/browser-c879eb0b/SKILL.md +45 -0
  854. package/skills/skills/browser-c92ac01b/SKILL.md +45 -0
  855. package/skills/skills/browser-cb179242/SKILL.md +45 -0
  856. package/skills/skills/browser-cc7d3d6d/SKILL.md +45 -0
  857. package/skills/skills/browser-cf3c47f0/SKILL.md +45 -0
  858. package/skills/skills/browser-cf9f812e/SKILL.md +45 -0
  859. package/skills/skills/browser-d462581c/SKILL.md +45 -0
  860. package/skills/skills/browser-d5fa0b7f/SKILL.md +45 -0
  861. package/skills/skills/browser-d72e225b/SKILL.md +45 -0
  862. package/skills/skills/browser-df1a919e/SKILL.md +45 -0
  863. package/skills/skills/browser-e84565c1/SKILL.md +45 -0
  864. package/skills/skills/browser-e947a564/SKILL.md +45 -0
  865. package/skills/skills/browser-ea9b2b8e/SKILL.md +45 -0
  866. package/skills/skills/browser-f5ffc6d9/SKILL.md +45 -0
  867. package/skills/skills/browser-f75a4418/SKILL.md +45 -0
  868. package/skills/skills/browser-f8f2966e/SKILL.md +45 -0
  869. package/skills/skills/browser-fa65fa2d/SKILL.md +45 -0
  870. package/skills/skills/browser-faac8812/SKILL.md +45 -0
  871. package/skills/skills/browser-ff94a671/SKILL.md +45 -0
  872. package/skills/skills/check-name-real/SKILL.md +45 -0
  873. package/skills/skills/compile-assign/SKILL.md +45 -0
  874. package/skills/skills/compile-expr-tree/SKILL.md +45 -0
  875. package/skills/skills/compile-full-pipeline/SKILL.md +45 -0
  876. package/skills/skills/compile-func-def/SKILL.md +45 -0
  877. package/skills/skills/compile-if-then/SKILL.md +45 -0
  878. package/skills/skills/compile-logic-expr/SKILL.md +45 -0
  879. package/skills/skills/compile-recursive/SKILL.md +45 -0
  880. package/skills/skills/compile-scope/SKILL.md +45 -0
  881. package/skills/skills/compile-type-check/SKILL.md +45 -0
  882. package/skills/skills/compile-while/SKILL.md +45 -0
  883. package/skills/skills/compiler-0010c4bf/SKILL.md +45 -0
  884. package/skills/skills/compiler-0355bffb/SKILL.md +45 -0
  885. package/skills/skills/compiler-0361708a/SKILL.md +45 -0
  886. package/skills/skills/compiler-054a0414/SKILL.md +45 -0
  887. package/skills/skills/compiler-05a1691a/SKILL.md +45 -0
  888. package/skills/skills/compiler-05eeed1e/SKILL.md +45 -0
  889. package/skills/skills/compiler-0622a1f6/SKILL.md +45 -0
  890. package/skills/skills/compiler-08b54217/SKILL.md +45 -0
  891. package/skills/skills/compiler-0a62b70c/SKILL.md +45 -0
  892. package/skills/skills/compiler-0ab24d00/SKILL.md +45 -0
  893. package/skills/skills/compiler-0e093688/SKILL.md +45 -0
  894. package/skills/skills/compiler-0e82b966/SKILL.md +45 -0
  895. package/skills/skills/compiler-0ee9b9b9/SKILL.md +45 -0
  896. package/skills/skills/compiler-0f3787e6/SKILL.md +45 -0
  897. package/skills/skills/compiler-1028685f/SKILL.md +45 -0
  898. package/skills/skills/compiler-11897630/SKILL.md +45 -0
  899. package/skills/skills/compiler-16661b9b/SKILL.md +45 -0
  900. package/skills/skills/compiler-1f722303/SKILL.md +45 -0
  901. package/skills/skills/compiler-25be1262/SKILL.md +45 -0
  902. package/skills/skills/compiler-2a76ba07/SKILL.md +45 -0
  903. package/skills/skills/compiler-2dbea54a/SKILL.md +45 -0
  904. package/skills/skills/compiler-2df52f16/SKILL.md +45 -0
  905. package/skills/skills/compiler-2ec2c9d2/SKILL.md +45 -0
  906. package/skills/skills/compiler-2f8c8f39/SKILL.md +45 -0
  907. package/skills/skills/compiler-38378ac7/SKILL.md +45 -0
  908. package/skills/skills/compiler-39457d2e/SKILL.md +45 -0
  909. package/skills/skills/compiler-39fb5926/SKILL.md +45 -0
  910. package/skills/skills/compiler-47f4fbfa/SKILL.md +45 -0
  911. package/skills/skills/compiler-4a8cd1f1/SKILL.md +45 -0
  912. package/skills/skills/compiler-4b230b6b/SKILL.md +45 -0
  913. package/skills/skills/compiler-4cbbda95/SKILL.md +45 -0
  914. package/skills/skills/compiler-4d5a68ff/SKILL.md +45 -0
  915. package/skills/skills/compiler-56dc9bdd/SKILL.md +45 -0
  916. package/skills/skills/compiler-57e76ebe/SKILL.md +45 -0
  917. package/skills/skills/compiler-61ff016b/SKILL.md +45 -0
  918. package/skills/skills/compiler-63eae588/SKILL.md +45 -0
  919. package/skills/skills/compiler-64c4224b/SKILL.md +45 -0
  920. package/skills/skills/compiler-66377955/SKILL.md +45 -0
  921. package/skills/skills/compiler-674ab4f6/SKILL.md +45 -0
  922. package/skills/skills/compiler-6af76fd6/SKILL.md +45 -0
  923. package/skills/skills/compiler-6d979db2/SKILL.md +45 -0
  924. package/skills/skills/compiler-6de326c0/SKILL.md +45 -0
  925. package/skills/skills/compiler-6f1c0eea/SKILL.md +45 -0
  926. package/skills/skills/compiler-724d6c9b/SKILL.md +45 -0
  927. package/skills/skills/compiler-7690177f/SKILL.md +45 -0
  928. package/skills/skills/compiler-7b229a7d/SKILL.md +45 -0
  929. package/skills/skills/compiler-7f471b3a/SKILL.md +45 -0
  930. package/skills/skills/compiler-815cad08/SKILL.md +45 -0
  931. package/skills/skills/compiler-83c61634/SKILL.md +45 -0
  932. package/skills/skills/compiler-8c798c81/SKILL.md +45 -0
  933. package/skills/skills/compiler-8dd747ac/SKILL.md +45 -0
  934. package/skills/skills/compiler-90324d0a/SKILL.md +45 -0
  935. package/skills/skills/compiler-94b8d72d/SKILL.md +45 -0
  936. package/skills/skills/compiler-94f12231/SKILL.md +45 -0
  937. package/skills/skills/compiler-95937c16/SKILL.md +45 -0
  938. package/skills/skills/compiler-98a5625b/SKILL.md +45 -0
  939. package/skills/skills/compiler-98b4c42f/SKILL.md +45 -0
  940. package/skills/skills/compiler-98e3894a/SKILL.md +45 -0
  941. package/skills/skills/compiler-9bdfe4b8/SKILL.md +45 -0
  942. package/skills/skills/compiler-9d9b4e83/SKILL.md +45 -0
  943. package/skills/skills/compiler-9f7be5ad/SKILL.md +45 -0
  944. package/skills/skills/compiler-a6daf076/SKILL.md +45 -0
  945. package/skills/skills/compiler-a7995a0c/SKILL.md +45 -0
  946. package/skills/skills/compiler-a8399248/SKILL.md +45 -0
  947. package/skills/skills/compiler-aabbd099/SKILL.md +45 -0
  948. package/skills/skills/compiler-afe169d8/SKILL.md +45 -0
  949. package/skills/skills/compiler-b0678bda/SKILL.md +45 -0
  950. package/skills/skills/compiler-b09bd196/SKILL.md +45 -0
  951. package/skills/skills/compiler-b1396e23/SKILL.md +45 -0
  952. package/skills/skills/compiler-b9b31ce0/SKILL.md +45 -0
  953. package/skills/skills/compiler-c10264a7/SKILL.md +45 -0
  954. package/skills/skills/compiler-cb1e8e4b/SKILL.md +45 -0
  955. package/skills/skills/compiler-ccafd438/SKILL.md +45 -0
  956. package/skills/skills/compiler-cda9c262/SKILL.md +45 -0
  957. package/skills/skills/compiler-ce648068/SKILL.md +45 -0
  958. package/skills/skills/compiler-cf5776a4/SKILL.md +45 -0
  959. package/skills/skills/compiler-d974e5d3/SKILL.md +45 -0
  960. package/skills/skills/compiler-e3979fd3/SKILL.md +45 -0
  961. package/skills/skills/compiler-eb1cf2b5/SKILL.md +45 -0
  962. package/skills/skills/compiler-ecb30d5b/SKILL.md +45 -0
  963. package/skills/skills/compiler-f8c8b24b/SKILL.md +45 -0
  964. package/skills/skills/compiler-f99fedbe/SKILL.md +45 -0
  965. package/skills/skills/compiler-fa8ff5f7/SKILL.md +45 -0
  966. package/skills/skills/compiler-fe1b058d/SKILL.md +45 -0
  967. package/skills/skills/designer-perspective/SKILL.md +157 -0
  968. package/skills/skills/designer-perspective/references/01-observation-position.md +66 -0
  969. package/skills/skills/designer-perspective/references/02-structure-recognition.md +62 -0
  970. package/skills/skills/designer-perspective/references/03-direction-judgment.md +55 -0
  971. package/skills/skills/designer-perspective/references/04-qualification-verdict.md +72 -0
  972. package/skills/skills/designer-perspective/references/05-condition-attribution.md +74 -0
  973. package/skills/skills/designer-perspective/scripts/__pycache__/designer.cpython-310.pyc +0 -0
  974. package/skills/skills/designer-perspective/scripts/designer.py +527 -0
  975. package/skills/skills/designer-perspective/tests/cases.jsonl +17 -0
  976. package/skills/skills/designer-perspective/tests/selftest.py +60 -0
  977. package/skills/skills/graph-04cd431b/SKILL.md +45 -0
  978. package/skills/skills/graph-06e2b1f2/SKILL.md +45 -0
  979. package/skills/skills/graph-0de12477/SKILL.md +45 -0
  980. package/skills/skills/graph-0e564e68/SKILL.md +45 -0
  981. package/skills/skills/graph-10d58a7b/SKILL.md +45 -0
  982. package/skills/skills/graph-12cd830a/SKILL.md +45 -0
  983. package/skills/skills/graph-185f2cd2/SKILL.md +45 -0
  984. package/skills/skills/graph-19a6a301/SKILL.md +45 -0
  985. package/skills/skills/graph-1b266557/SKILL.md +45 -0
  986. package/skills/skills/graph-1b707621/SKILL.md +45 -0
  987. package/skills/skills/graph-1d73b597/SKILL.md +45 -0
  988. package/skills/skills/graph-2041fa98/SKILL.md +45 -0
  989. package/skills/skills/graph-2461bc41/SKILL.md +45 -0
  990. package/skills/skills/graph-2465dff8/SKILL.md +45 -0
  991. package/skills/skills/graph-2508389f/SKILL.md +45 -0
  992. package/skills/skills/graph-276d554d/SKILL.md +45 -0
  993. package/skills/skills/graph-299f4a32/SKILL.md +45 -0
  994. package/skills/skills/graph-2d455cd8/SKILL.md +45 -0
  995. package/skills/skills/graph-2fddf701/SKILL.md +45 -0
  996. package/skills/skills/graph-33385442/SKILL.md +45 -0
  997. package/skills/skills/graph-34a1dba7/SKILL.md +45 -0
  998. package/skills/skills/graph-3721be1c/SKILL.md +45 -0
  999. package/skills/skills/graph-3755dbc9/SKILL.md +45 -0
  1000. package/skills/skills/graph-37a45d4b/SKILL.md +45 -0
  1001. package/skills/skills/graph-3a4a984c/SKILL.md +45 -0
  1002. package/skills/skills/graph-3aa4c941/SKILL.md +45 -0
  1003. package/skills/skills/graph-3b69a528/SKILL.md +45 -0
  1004. package/skills/skills/graph-3bc2eb69/SKILL.md +45 -0
  1005. package/skills/skills/graph-3d255ed4/SKILL.md +45 -0
  1006. package/skills/skills/graph-3d34961d/SKILL.md +45 -0
  1007. package/skills/skills/graph-3e18a380/SKILL.md +45 -0
  1008. package/skills/skills/graph-3f920bf3/SKILL.md +45 -0
  1009. package/skills/skills/graph-40b7bf61/SKILL.md +45 -0
  1010. package/skills/skills/graph-42187d5d/SKILL.md +45 -0
  1011. package/skills/skills/graph-4361c60e/SKILL.md +45 -0
  1012. package/skills/skills/graph-44e56113/SKILL.md +45 -0
  1013. package/skills/skills/graph-4b363727/SKILL.md +45 -0
  1014. package/skills/skills/graph-52e6e216/SKILL.md +45 -0
  1015. package/skills/skills/graph-53fbfef5/SKILL.md +45 -0
  1016. package/skills/skills/graph-54ac2988/SKILL.md +45 -0
  1017. package/skills/skills/graph-580dadcd/SKILL.md +45 -0
  1018. package/skills/skills/graph-5ca34baa/SKILL.md +45 -0
  1019. package/skills/skills/graph-5cb7fbdf/SKILL.md +45 -0
  1020. package/skills/skills/graph-5f894c05/SKILL.md +45 -0
  1021. package/skills/skills/graph-656e7bd4/SKILL.md +45 -0
  1022. package/skills/skills/graph-6dc48231/SKILL.md +45 -0
  1023. package/skills/skills/graph-7186924a/SKILL.md +45 -0
  1024. package/skills/skills/graph-72ce5342/SKILL.md +45 -0
  1025. package/skills/skills/graph-7376a24e/SKILL.md +45 -0
  1026. package/skills/skills/graph-7412a7cb/SKILL.md +45 -0
  1027. package/skills/skills/graph-7becedf0/SKILL.md +45 -0
  1028. package/skills/skills/graph-7c38fbf3/SKILL.md +45 -0
  1029. package/skills/skills/graph-7dc36de7/SKILL.md +45 -0
  1030. package/skills/skills/graph-7fe49de7/SKILL.md +45 -0
  1031. package/skills/skills/graph-80d82194/SKILL.md +45 -0
  1032. package/skills/skills/graph-85bf101e/SKILL.md +45 -0
  1033. package/skills/skills/graph-8650548b/SKILL.md +45 -0
  1034. package/skills/skills/graph-86583b09/SKILL.md +45 -0
  1035. package/skills/skills/graph-8727827c/SKILL.md +45 -0
  1036. package/skills/skills/graph-873fb505/SKILL.md +45 -0
  1037. package/skills/skills/graph-89b11de0/SKILL.md +45 -0
  1038. package/skills/skills/graph-8d7b569b/SKILL.md +45 -0
  1039. package/skills/skills/graph-8e920d5d/SKILL.md +45 -0
  1040. package/skills/skills/graph-8eb38e3d/SKILL.md +45 -0
  1041. package/skills/skills/graph-94582f69/SKILL.md +45 -0
  1042. package/skills/skills/graph-947355f7/SKILL.md +45 -0
  1043. package/skills/skills/graph-9507aff7/SKILL.md +45 -0
  1044. package/skills/skills/graph-95b86a8b/SKILL.md +45 -0
  1045. package/skills/skills/graph-96b85e1f/SKILL.md +45 -0
  1046. package/skills/skills/graph-97b22f09/SKILL.md +45 -0
  1047. package/skills/skills/graph-9833cfda/SKILL.md +45 -0
  1048. package/skills/skills/graph-9aa8a3f4/SKILL.md +45 -0
  1049. package/skills/skills/graph-9f6665c0/SKILL.md +45 -0
  1050. package/skills/skills/graph-a125d282/SKILL.md +45 -0
  1051. package/skills/skills/graph-a49ef4f0/SKILL.md +45 -0
  1052. package/skills/skills/graph-a5cd04ae/SKILL.md +45 -0
  1053. package/skills/skills/graph-add9a63b/SKILL.md +45 -0
  1054. package/skills/skills/graph-b00e3dc7/SKILL.md +45 -0
  1055. package/skills/skills/graph-b33a7662/SKILL.md +45 -0
  1056. package/skills/skills/graph-b76d15ee/SKILL.md +45 -0
  1057. package/skills/skills/graph-b77fa05a/SKILL.md +45 -0
  1058. package/skills/skills/graph-b912fc3b/SKILL.md +45 -0
  1059. package/skills/skills/graph-baf61b7c/SKILL.md +45 -0
  1060. package/skills/skills/graph-c1d5687b/SKILL.md +45 -0
  1061. package/skills/skills/graph-c407bbed/SKILL.md +45 -0
  1062. package/skills/skills/graph-c4676460/SKILL.md +45 -0
  1063. package/skills/skills/graph-c4a59d80/SKILL.md +45 -0
  1064. package/skills/skills/graph-c5815621/SKILL.md +45 -0
  1065. package/skills/skills/graph-ccad55f1/SKILL.md +45 -0
  1066. package/skills/skills/graph-d0677ce1/SKILL.md +45 -0
  1067. package/skills/skills/graph-d1289b39/SKILL.md +45 -0
  1068. package/skills/skills/graph-d15f39b1/SKILL.md +45 -0
  1069. package/skills/skills/graph-d40691ca/SKILL.md +45 -0
  1070. package/skills/skills/graph-d43b387a/SKILL.md +45 -0
  1071. package/skills/skills/graph-d4dd02f4/SKILL.md +45 -0
  1072. package/skills/skills/graph-d724ea18/SKILL.md +45 -0
  1073. package/skills/skills/graph-d74d36fd/SKILL.md +45 -0
  1074. package/skills/skills/graph-d9d3934c/SKILL.md +45 -0
  1075. package/skills/skills/graph-ddf563ff/SKILL.md +45 -0
  1076. package/skills/skills/graph-de00894f/SKILL.md +45 -0
  1077. package/skills/skills/graph-df1ebb63/SKILL.md +45 -0
  1078. package/skills/skills/graph-e2905c20/SKILL.md +45 -0
  1079. package/skills/skills/graph-e4f8cefd/SKILL.md +45 -0
  1080. package/skills/skills/graph-ea3150e7/SKILL.md +45 -0
  1081. package/skills/skills/graph-eb4ac7dd/SKILL.md +45 -0
  1082. package/skills/skills/graph-ee9f6dfa/SKILL.md +45 -0
  1083. package/skills/skills/graph-f055b2ea/SKILL.md +45 -0
  1084. package/skills/skills/graph-f1891287/SKILL.md +45 -0
  1085. package/skills/skills/graph-f1bb5aa1/SKILL.md +45 -0
  1086. package/skills/skills/graph-f56fa220/SKILL.md +45 -0
  1087. package/skills/skills/graph-f729034f/SKILL.md +45 -0
  1088. package/skills/skills/graph-f748a63f/SKILL.md +45 -0
  1089. package/skills/skills/graph-f8c4a59e/SKILL.md +45 -0
  1090. package/skills/skills/graph-fca3d129/SKILL.md +45 -0
  1091. package/skills/skills/graph-fd02d934/SKILL.md +45 -0
  1092. package/skills/skills/graph-fd51ece9/SKILL.md +45 -0
  1093. package/skills/skills/graph-fd6a81ab/SKILL.md +45 -0
  1094. package/skills/skills/lex-chinese-program/SKILL.md +45 -0
  1095. package/skills/skills/lex-dao-de-jing/SKILL.md +45 -0
  1096. package/skills/skills/lex-nine-chapters/SKILL.md +45 -0
  1097. package/skills/skills/net-02090d29/SKILL.md +45 -0
  1098. package/skills/skills/net-05937712/SKILL.md +45 -0
  1099. package/skills/skills/net-059d072f/SKILL.md +45 -0
  1100. package/skills/skills/net-080f6012/SKILL.md +45 -0
  1101. package/skills/skills/net-08a2fc88/SKILL.md +45 -0
  1102. package/skills/skills/net-0935edf1/SKILL.md +45 -0
  1103. package/skills/skills/net-0e7f91e4/SKILL.md +45 -0
  1104. package/skills/skills/net-0f2850e0/SKILL.md +45 -0
  1105. package/skills/skills/net-107ab486/SKILL.md +45 -0
  1106. package/skills/skills/net-111e79b0/SKILL.md +45 -0
  1107. package/skills/skills/net-126876c1/SKILL.md +45 -0
  1108. package/skills/skills/net-13eeb575/SKILL.md +45 -0
  1109. package/skills/skills/net-14102d54/SKILL.md +45 -0
  1110. package/skills/skills/net-14e9ad0d/SKILL.md +45 -0
  1111. package/skills/skills/net-184175d3/SKILL.md +45 -0
  1112. package/skills/skills/net-1da1c695/SKILL.md +45 -0
  1113. package/skills/skills/net-240a14ec/SKILL.md +45 -0
  1114. package/skills/skills/net-2784f98b/SKILL.md +45 -0
  1115. package/skills/skills/net-292ef917/SKILL.md +45 -0
  1116. package/skills/skills/net-3434e92f/SKILL.md +45 -0
  1117. package/skills/skills/net-35019e6b/SKILL.md +45 -0
  1118. package/skills/skills/net-3bbc6afb/SKILL.md +45 -0
  1119. package/skills/skills/net-3bdf9d9d/SKILL.md +45 -0
  1120. package/skills/skills/net-3dcb84d3/SKILL.md +45 -0
  1121. package/skills/skills/net-431cccf9/SKILL.md +45 -0
  1122. package/skills/skills/net-435a9f7f/SKILL.md +45 -0
  1123. package/skills/skills/net-4508101f/SKILL.md +45 -0
  1124. package/skills/skills/net-4585c9e7/SKILL.md +45 -0
  1125. package/skills/skills/net-479612a0/SKILL.md +45 -0
  1126. package/skills/skills/net-47a19838/SKILL.md +45 -0
  1127. package/skills/skills/net-4e36e1e3/SKILL.md +45 -0
  1128. package/skills/skills/net-509b8001/SKILL.md +45 -0
  1129. package/skills/skills/net-51930c5e/SKILL.md +45 -0
  1130. package/skills/skills/net-56dbd63f/SKILL.md +45 -0
  1131. package/skills/skills/net-57387462/SKILL.md +45 -0
  1132. package/skills/skills/net-5c115606/SKILL.md +45 -0
  1133. package/skills/skills/net-5d27f392/SKILL.md +45 -0
  1134. package/skills/skills/net-5f69c938/SKILL.md +45 -0
  1135. package/skills/skills/net-5fa6c13b/SKILL.md +45 -0
  1136. package/skills/skills/net-61580202/SKILL.md +45 -0
  1137. package/skills/skills/net-61926703/SKILL.md +45 -0
  1138. package/skills/skills/net-61f64fbc/SKILL.md +45 -0
  1139. package/skills/skills/net-6200f3b2/SKILL.md +45 -0
  1140. package/skills/skills/net-63c3eda3/SKILL.md +45 -0
  1141. package/skills/skills/net-66e6119b/SKILL.md +45 -0
  1142. package/skills/skills/net-68643014/SKILL.md +45 -0
  1143. package/skills/skills/net-686632aa/SKILL.md +45 -0
  1144. package/skills/skills/net-6967ff14/SKILL.md +45 -0
  1145. package/skills/skills/net-6996f499/SKILL.md +45 -0
  1146. package/skills/skills/net-6c3b02c2/SKILL.md +45 -0
  1147. package/skills/skills/net-6eb37f63/SKILL.md +45 -0
  1148. package/skills/skills/net-6f96c190/SKILL.md +45 -0
  1149. package/skills/skills/net-6fb27488/SKILL.md +45 -0
  1150. package/skills/skills/net-703559d0/SKILL.md +45 -0
  1151. package/skills/skills/net-706d2692/SKILL.md +45 -0
  1152. package/skills/skills/net-70a20e04/SKILL.md +45 -0
  1153. package/skills/skills/net-7376158c/SKILL.md +45 -0
  1154. package/skills/skills/net-74d647cb/SKILL.md +45 -0
  1155. package/skills/skills/net-74e8a576/SKILL.md +45 -0
  1156. package/skills/skills/net-7801c2c0/SKILL.md +45 -0
  1157. package/skills/skills/net-78cae54d/SKILL.md +45 -0
  1158. package/skills/skills/net-78ec0324/SKILL.md +45 -0
  1159. package/skills/skills/net-7998097c/SKILL.md +45 -0
  1160. package/skills/skills/net-7d81ae06/SKILL.md +45 -0
  1161. package/skills/skills/net-7eabbbc8/SKILL.md +45 -0
  1162. package/skills/skills/net-7ed4f2c5/SKILL.md +45 -0
  1163. package/skills/skills/net-80b56cd6/SKILL.md +45 -0
  1164. package/skills/skills/net-83447546/SKILL.md +45 -0
  1165. package/skills/skills/net-8361fe5b/SKILL.md +45 -0
  1166. package/skills/skills/net-85e3996c/SKILL.md +45 -0
  1167. package/skills/skills/net-8897d5cc/SKILL.md +45 -0
  1168. package/skills/skills/net-88ad93a6/SKILL.md +45 -0
  1169. package/skills/skills/net-8e6f359e/SKILL.md +45 -0
  1170. package/skills/skills/net-8edc4cdb/SKILL.md +45 -0
  1171. package/skills/skills/net-8f6169e9/SKILL.md +45 -0
  1172. package/skills/skills/net-91e00638/SKILL.md +45 -0
  1173. package/skills/skills/net-96c61a3c/SKILL.md +45 -0
  1174. package/skills/skills/net-99076a29/SKILL.md +45 -0
  1175. package/skills/skills/net-998f3641/SKILL.md +45 -0
  1176. package/skills/skills/net-a1d7228a/SKILL.md +45 -0
  1177. package/skills/skills/net-a74da501/SKILL.md +45 -0
  1178. package/skills/skills/net-ac57deb7/SKILL.md +45 -0
  1179. package/skills/skills/net-b22d2f2b/SKILL.md +45 -0
  1180. package/skills/skills/net-b2b29d8d/SKILL.md +45 -0
  1181. package/skills/skills/net-b2ddce5d/SKILL.md +45 -0
  1182. package/skills/skills/net-b4151e9a/SKILL.md +45 -0
  1183. package/skills/skills/net-b873d6f7/SKILL.md +45 -0
  1184. package/skills/skills/net-bd3d2d55/SKILL.md +45 -0
  1185. package/skills/skills/net-c2a3f019/SKILL.md +45 -0
  1186. package/skills/skills/net-c685b788/SKILL.md +45 -0
  1187. package/skills/skills/net-c6c1fd79/SKILL.md +45 -0
  1188. package/skills/skills/net-c74a1b5d/SKILL.md +45 -0
  1189. package/skills/skills/net-cdac702d/SKILL.md +45 -0
  1190. package/skills/skills/net-d12dff5c/SKILL.md +45 -0
  1191. package/skills/skills/net-d3747882/SKILL.md +45 -0
  1192. package/skills/skills/net-d5fefa59/SKILL.md +45 -0
  1193. package/skills/skills/net-d67ec725/SKILL.md +45 -0
  1194. package/skills/skills/net-d80c1c4c/SKILL.md +45 -0
  1195. package/skills/skills/net-d9cb43b0/SKILL.md +45 -0
  1196. package/skills/skills/net-da559517/SKILL.md +45 -0
  1197. package/skills/skills/net-db4f414e/SKILL.md +45 -0
  1198. package/skills/skills/net-dc09d67c/SKILL.md +45 -0
  1199. package/skills/skills/net-e2d185de/SKILL.md +45 -0
  1200. package/skills/skills/net-e2fc73f8/SKILL.md +45 -0
  1201. package/skills/skills/net-e33ef0c2/SKILL.md +45 -0
  1202. package/skills/skills/net-e346863c/SKILL.md +45 -0
  1203. package/skills/skills/net-e6b3389a/SKILL.md +45 -0
  1204. package/skills/skills/net-e9758fc0/SKILL.md +45 -0
  1205. package/skills/skills/net-e9a9747a/SKILL.md +45 -0
  1206. package/skills/skills/net-ea14aab8/SKILL.md +45 -0
  1207. package/skills/skills/net-eba92ac1/SKILL.md +45 -0
  1208. package/skills/skills/net-f29d91d2/SKILL.md +45 -0
  1209. package/skills/skills/net-f314dd0d/SKILL.md +45 -0
  1210. package/skills/skills/net-f332b629/SKILL.md +45 -0
  1211. package/skills/skills/net-f7df127c/SKILL.md +45 -0
  1212. package/skills/skills/net-fb9d8f5d/SKILL.md +45 -0
  1213. package/skills/skills/net-fdec2c86/SKILL.md +45 -0
  1214. package/skills/skills/os-0205cf9b/SKILL.md +45 -0
  1215. package/skills/skills/os-027dc9be/SKILL.md +45 -0
  1216. package/skills/skills/os-03c0d7d6/SKILL.md +45 -0
  1217. package/skills/skills/os-040b5505/SKILL.md +45 -0
  1218. package/skills/skills/os-06fa98ed/SKILL.md +45 -0
  1219. package/skills/skills/os-0854291c/SKILL.md +45 -0
  1220. package/skills/skills/os-0c7f14cb/SKILL.md +45 -0
  1221. package/skills/skills/os-0d855af2/SKILL.md +45 -0
  1222. package/skills/skills/os-0e87e997/SKILL.md +45 -0
  1223. package/skills/skills/os-0f8ed882/SKILL.md +45 -0
  1224. package/skills/skills/os-111ce1de/SKILL.md +45 -0
  1225. package/skills/skills/os-1234eb00/SKILL.md +45 -0
  1226. package/skills/skills/os-128f3820/SKILL.md +45 -0
  1227. package/skills/skills/os-15796db5/SKILL.md +45 -0
  1228. package/skills/skills/os-1898928a/SKILL.md +45 -0
  1229. package/skills/skills/os-192b8ca9/SKILL.md +45 -0
  1230. package/skills/skills/os-1d3bcf28/SKILL.md +45 -0
  1231. package/skills/skills/os-1f224514/SKILL.md +45 -0
  1232. package/skills/skills/os-26a4f86a/SKILL.md +45 -0
  1233. package/skills/skills/os-29c96147/SKILL.md +45 -0
  1234. package/skills/skills/os-2ea9a5ff/SKILL.md +45 -0
  1235. package/skills/skills/os-300ef22c/SKILL.md +45 -0
  1236. package/skills/skills/os-310dda5b/SKILL.md +45 -0
  1237. package/skills/skills/os-313ef4ed/SKILL.md +45 -0
  1238. package/skills/skills/os-329a2147/SKILL.md +45 -0
  1239. package/skills/skills/os-34ad4b62/SKILL.md +45 -0
  1240. package/skills/skills/os-350bc623/SKILL.md +45 -0
  1241. package/skills/skills/os-35ee1a30/SKILL.md +45 -0
  1242. package/skills/skills/os-3cd28220/SKILL.md +45 -0
  1243. package/skills/skills/os-3d84e0c9/SKILL.md +45 -0
  1244. package/skills/skills/os-3db42aac/SKILL.md +45 -0
  1245. package/skills/skills/os-3e0aff42/SKILL.md +45 -0
  1246. package/skills/skills/os-3e9405d2/SKILL.md +45 -0
  1247. package/skills/skills/os-41d14544/SKILL.md +45 -0
  1248. package/skills/skills/os-462f3ed4/SKILL.md +45 -0
  1249. package/skills/skills/os-485833fa/SKILL.md +45 -0
  1250. package/skills/skills/os-4a1cf781/SKILL.md +45 -0
  1251. package/skills/skills/os-4bf77933/SKILL.md +45 -0
  1252. package/skills/skills/os-4c14cec2/SKILL.md +45 -0
  1253. package/skills/skills/os-4f05d577/SKILL.md +45 -0
  1254. package/skills/skills/os-4f50ad0b/SKILL.md +45 -0
  1255. package/skills/skills/os-509a4596/SKILL.md +45 -0
  1256. package/skills/skills/os-512b1b6c/SKILL.md +45 -0
  1257. package/skills/skills/os-5192621b/SKILL.md +45 -0
  1258. package/skills/skills/os-55672763/SKILL.md +45 -0
  1259. package/skills/skills/os-5582bce6/SKILL.md +45 -0
  1260. package/skills/skills/os-5a096a1f/SKILL.md +45 -0
  1261. package/skills/skills/os-5ca15108/SKILL.md +45 -0
  1262. package/skills/skills/os-601663e1/SKILL.md +45 -0
  1263. package/skills/skills/os-607f1963/SKILL.md +45 -0
  1264. package/skills/skills/os-6158581b/SKILL.md +45 -0
  1265. package/skills/skills/os-62f9278b/SKILL.md +45 -0
  1266. package/skills/skills/os-63797b86/SKILL.md +45 -0
  1267. package/skills/skills/os-6a1fe224/SKILL.md +45 -0
  1268. package/skills/skills/os-6b0a68bf/SKILL.md +45 -0
  1269. package/skills/skills/os-6e5cee67/SKILL.md +45 -0
  1270. package/skills/skills/os-6fb1ff58/SKILL.md +45 -0
  1271. package/skills/skills/os-71389592/SKILL.md +45 -0
  1272. package/skills/skills/os-72e879a3/SKILL.md +45 -0
  1273. package/skills/skills/os-7598748a/SKILL.md +45 -0
  1274. package/skills/skills/os-80cc3283/SKILL.md +45 -0
  1275. package/skills/skills/os-819f3093/SKILL.md +45 -0
  1276. package/skills/skills/os-83670c2b/SKILL.md +45 -0
  1277. package/skills/skills/os-878c18b3/SKILL.md +45 -0
  1278. package/skills/skills/os-89ed7af1/SKILL.md +45 -0
  1279. package/skills/skills/os-8cb7279d/SKILL.md +45 -0
  1280. package/skills/skills/os-92276145/SKILL.md +45 -0
  1281. package/skills/skills/os-955c4d66/SKILL.md +45 -0
  1282. package/skills/skills/os-97aacf40/SKILL.md +45 -0
  1283. package/skills/skills/os-9b6ed02c/SKILL.md +45 -0
  1284. package/skills/skills/os-9c86a7a2/SKILL.md +45 -0
  1285. package/skills/skills/os-a13ce4aa/SKILL.md +45 -0
  1286. package/skills/skills/os-a568affe/SKILL.md +45 -0
  1287. package/skills/skills/os-abd48f17/SKILL.md +45 -0
  1288. package/skills/skills/os-b0416edc/SKILL.md +45 -0
  1289. package/skills/skills/os-b6509cac/SKILL.md +45 -0
  1290. package/skills/skills/os-b718657b/SKILL.md +45 -0
  1291. package/skills/skills/os-b776ade1/SKILL.md +45 -0
  1292. package/skills/skills/os-ba24fa08/SKILL.md +45 -0
  1293. package/skills/skills/os-bd1fc177/SKILL.md +45 -0
  1294. package/skills/skills/os-bda92711/SKILL.md +45 -0
  1295. package/skills/skills/os-c0fa71bd/SKILL.md +45 -0
  1296. package/skills/skills/os-c3d5cd44/SKILL.md +45 -0
  1297. package/skills/skills/os-c6b6a763/SKILL.md +45 -0
  1298. package/skills/skills/os-c7661eb1/SKILL.md +45 -0
  1299. package/skills/skills/os-c76b5a43/SKILL.md +45 -0
  1300. package/skills/skills/os-c7d35a30/SKILL.md +45 -0
  1301. package/skills/skills/os-c980a25d/SKILL.md +45 -0
  1302. package/skills/skills/os-c9f8df6e/SKILL.md +45 -0
  1303. package/skills/skills/os-cc49ef2f/SKILL.md +45 -0
  1304. package/skills/skills/os-cd9e686a/SKILL.md +45 -0
  1305. package/skills/skills/os-cfa66a1b/SKILL.md +45 -0
  1306. package/skills/skills/os-d237e500/SKILL.md +45 -0
  1307. package/skills/skills/os-d39ef086/SKILL.md +45 -0
  1308. package/skills/skills/os-d4f9e813/SKILL.md +45 -0
  1309. package/skills/skills/os-d97915c0/SKILL.md +45 -0
  1310. package/skills/skills/os-da0aadde/SKILL.md +45 -0
  1311. package/skills/skills/os-da482caf/SKILL.md +45 -0
  1312. package/skills/skills/os-dd4ff45e/SKILL.md +45 -0
  1313. package/skills/skills/os-de0556c5/SKILL.md +45 -0
  1314. package/skills/skills/os-e0ad3364/SKILL.md +45 -0
  1315. package/skills/skills/os-e7612c68/SKILL.md +45 -0
  1316. package/skills/skills/os-ea444e45/SKILL.md +45 -0
  1317. package/skills/skills/os-ea6e7e0b/SKILL.md +45 -0
  1318. package/skills/skills/os-ebc34d83/SKILL.md +45 -0
  1319. package/skills/skills/os-ecbebbe3/SKILL.md +45 -0
  1320. package/skills/skills/os-ecfceae7/SKILL.md +45 -0
  1321. package/skills/skills/os-ed8de3a3/SKILL.md +45 -0
  1322. package/skills/skills/os-f69c0b08/SKILL.md +45 -0
  1323. package/skills/skills/os-f6ae6205/SKILL.md +45 -0
  1324. package/skills/skills/os-f9bf8dd4/SKILL.md +45 -0
  1325. package/skills/skills/os-fcdd828d/SKILL.md +45 -0
  1326. package/skills/skills/pylang-01b23f80/SKILL.md +45 -0
  1327. package/skills/skills/pylang-074fd698/SKILL.md +45 -0
  1328. package/skills/skills/pylang-0b490bb2/SKILL.md +45 -0
  1329. package/skills/skills/pylang-0ca7f08b/SKILL.md +45 -0
  1330. package/skills/skills/pylang-10ce3e91/SKILL.md +45 -0
  1331. package/skills/skills/pylang-15f76c64/SKILL.md +45 -0
  1332. package/skills/skills/pylang-1703046f/SKILL.md +45 -0
  1333. package/skills/skills/pylang-1aa3e939/SKILL.md +45 -0
  1334. package/skills/skills/pylang-1bed54cf/SKILL.md +45 -0
  1335. package/skills/skills/pylang-1dd35612/SKILL.md +45 -0
  1336. package/skills/skills/pylang-24273d7b/SKILL.md +45 -0
  1337. package/skills/skills/pylang-2853f59f/SKILL.md +45 -0
  1338. package/skills/skills/pylang-2a6bc16e/SKILL.md +45 -0
  1339. package/skills/skills/pylang-2ae78997/SKILL.md +45 -0
  1340. package/skills/skills/pylang-2bc88f4c/SKILL.md +45 -0
  1341. package/skills/skills/pylang-31f5b8db/SKILL.md +45 -0
  1342. package/skills/skills/pylang-36d178bc/SKILL.md +45 -0
  1343. package/skills/skills/pylang-38600583/SKILL.md +45 -0
  1344. package/skills/skills/pylang-38e8f9ff/SKILL.md +45 -0
  1345. package/skills/skills/pylang-395085ca/SKILL.md +45 -0
  1346. package/skills/skills/pylang-399b317e/SKILL.md +45 -0
  1347. package/skills/skills/pylang-39c72c78/SKILL.md +45 -0
  1348. package/skills/skills/pylang-3a659480/SKILL.md +45 -0
  1349. package/skills/skills/pylang-482be62b/SKILL.md +45 -0
  1350. package/skills/skills/pylang-486a1e94/SKILL.md +45 -0
  1351. package/skills/skills/pylang-49026041/SKILL.md +45 -0
  1352. package/skills/skills/pylang-4963b28a/SKILL.md +45 -0
  1353. package/skills/skills/pylang-4af9140e/SKILL.md +45 -0
  1354. package/skills/skills/pylang-4ca283f2/SKILL.md +45 -0
  1355. package/skills/skills/pylang-4ddf31f3/SKILL.md +45 -0
  1356. package/skills/skills/pylang-50614726/SKILL.md +45 -0
  1357. package/skills/skills/pylang-5102c069/SKILL.md +45 -0
  1358. package/skills/skills/pylang-521b1bf8/SKILL.md +45 -0
  1359. package/skills/skills/pylang-5880b7a1/SKILL.md +45 -0
  1360. package/skills/skills/pylang-61a9102d/SKILL.md +45 -0
  1361. package/skills/skills/pylang-621123dd/SKILL.md +45 -0
  1362. package/skills/skills/pylang-642cd625/SKILL.md +45 -0
  1363. package/skills/skills/pylang-65ca79b7/SKILL.md +45 -0
  1364. package/skills/skills/pylang-672df225/SKILL.md +45 -0
  1365. package/skills/skills/pylang-67d3368e/SKILL.md +45 -0
  1366. package/skills/skills/pylang-6be54340/SKILL.md +45 -0
  1367. package/skills/skills/pylang-70b2006f/SKILL.md +45 -0
  1368. package/skills/skills/pylang-70b215f1/SKILL.md +45 -0
  1369. package/skills/skills/pylang-730c3fe4/SKILL.md +45 -0
  1370. package/skills/skills/pylang-733c1286/SKILL.md +45 -0
  1371. package/skills/skills/pylang-79845f4d/SKILL.md +45 -0
  1372. package/skills/skills/pylang-7c4cc6f8/SKILL.md +45 -0
  1373. package/skills/skills/pylang-7c7193ad/SKILL.md +45 -0
  1374. package/skills/skills/pylang-7d86ab5d/SKILL.md +45 -0
  1375. package/skills/skills/pylang-7df8ca78/SKILL.md +45 -0
  1376. package/skills/skills/pylang-8182681d/SKILL.md +45 -0
  1377. package/skills/skills/pylang-81ad40ee/SKILL.md +45 -0
  1378. package/skills/skills/pylang-8283d7c0/SKILL.md +45 -0
  1379. package/skills/skills/pylang-82b73f3d/SKILL.md +45 -0
  1380. package/skills/skills/pylang-8404bbde/SKILL.md +45 -0
  1381. package/skills/skills/pylang-8584040d/SKILL.md +45 -0
  1382. package/skills/skills/pylang-85d8617b/SKILL.md +45 -0
  1383. package/skills/skills/pylang-886935a3/SKILL.md +45 -0
  1384. package/skills/skills/pylang-88ab2f96/SKILL.md +45 -0
  1385. package/skills/skills/pylang-8b6f071e/SKILL.md +45 -0
  1386. package/skills/skills/pylang-8d6ec58a/SKILL.md +45 -0
  1387. package/skills/skills/pylang-8fe98252/SKILL.md +45 -0
  1388. package/skills/skills/pylang-9018c39a/SKILL.md +45 -0
  1389. package/skills/skills/pylang-91277748/SKILL.md +45 -0
  1390. package/skills/skills/pylang-943b9dcb/SKILL.md +45 -0
  1391. package/skills/skills/pylang-961e9e43/SKILL.md +45 -0
  1392. package/skills/skills/pylang-962954d9/SKILL.md +45 -0
  1393. package/skills/skills/pylang-9dbd8e2b/SKILL.md +45 -0
  1394. package/skills/skills/pylang-a02eac31/SKILL.md +45 -0
  1395. package/skills/skills/pylang-a4d3d7b1/SKILL.md +45 -0
  1396. package/skills/skills/pylang-a7c3d0e2/SKILL.md +45 -0
  1397. package/skills/skills/pylang-a88db70d/SKILL.md +45 -0
  1398. package/skills/skills/pylang-ab7dddc2/SKILL.md +45 -0
  1399. package/skills/skills/pylang-ac2a4b38/SKILL.md +45 -0
  1400. package/skills/skills/pylang-afaf67c0/SKILL.md +45 -0
  1401. package/skills/skills/pylang-b00660e6/SKILL.md +45 -0
  1402. package/skills/skills/pylang-b4d7616d/SKILL.md +45 -0
  1403. package/skills/skills/pylang-b67b1878/SKILL.md +45 -0
  1404. package/skills/skills/pylang-b8040e1c/SKILL.md +45 -0
  1405. package/skills/skills/pylang-b880c6c6/SKILL.md +45 -0
  1406. package/skills/skills/pylang-b8d45f76/SKILL.md +45 -0
  1407. package/skills/skills/pylang-ba956e52/SKILL.md +45 -0
  1408. package/skills/skills/pylang-bb18b1f9/SKILL.md +45 -0
  1409. package/skills/skills/pylang-bb46f3f2/SKILL.md +45 -0
  1410. package/skills/skills/pylang-be55a094/SKILL.md +45 -0
  1411. package/skills/skills/pylang-beb47b63/SKILL.md +45 -0
  1412. package/skills/skills/pylang-c017681a/SKILL.md +45 -0
  1413. package/skills/skills/pylang-c1317cd9/SKILL.md +45 -0
  1414. package/skills/skills/pylang-c36fabf7/SKILL.md +45 -0
  1415. package/skills/skills/pylang-c42465ec/SKILL.md +45 -0
  1416. package/skills/skills/pylang-c5c76a12/SKILL.md +45 -0
  1417. package/skills/skills/pylang-c910ad31/SKILL.md +45 -0
  1418. package/skills/skills/pylang-ca9332cf/SKILL.md +45 -0
  1419. package/skills/skills/pylang-cce90fa0/SKILL.md +45 -0
  1420. package/skills/skills/pylang-cd4234a5/SKILL.md +45 -0
  1421. package/skills/skills/pylang-cf0fca1c/SKILL.md +45 -0
  1422. package/skills/skills/pylang-d2001e1f/SKILL.md +45 -0
  1423. package/skills/skills/pylang-d616eb28/SKILL.md +45 -0
  1424. package/skills/skills/pylang-d8962e66/SKILL.md +45 -0
  1425. package/skills/skills/pylang-db6214cd/SKILL.md +45 -0
  1426. package/skills/skills/pylang-dcde3040/SKILL.md +45 -0
  1427. package/skills/skills/pylang-dfad3dba/SKILL.md +45 -0
  1428. package/skills/skills/pylang-dfd5aac2/SKILL.md +45 -0
  1429. package/skills/skills/pylang-e1aa3818/SKILL.md +45 -0
  1430. package/skills/skills/pylang-e476915b/SKILL.md +45 -0
  1431. package/skills/skills/pylang-e88e31fd/SKILL.md +45 -0
  1432. package/skills/skills/pylang-ecd569d2/SKILL.md +45 -0
  1433. package/skills/skills/pylang-ecf27e0c/SKILL.md +45 -0
  1434. package/skills/skills/pylang-f124f0e6/SKILL.md +45 -0
  1435. package/skills/skills/pylang-f127a8d1/SKILL.md +45 -0
  1436. package/skills/skills/pylang-f2d6ec27/SKILL.md +45 -0
  1437. package/skills/skills/pylang-f2f40090/SKILL.md +45 -0
  1438. package/skills/skills/pylang-f4aa9e65/SKILL.md +45 -0
  1439. package/skills/skills/pylang-f4f820d4/SKILL.md +45 -0
  1440. package/skills/skills/pylang-f5b34833/SKILL.md +45 -0
  1441. package/skills/skills/pylang-f6ebb66e/SKILL.md +45 -0
  1442. package/skills/skills/pylang-f78bdcd7/SKILL.md +45 -0
  1443. package/skills/skills/pylang-f92bc49b/SKILL.md +45 -0
  1444. package/skills/skills/pylang-fd7595f0/SKILL.md +45 -0
  1445. package/skills/skills/pylang-fda87aa1/SKILL.md +45 -0
  1446. package/skills/skills/vm-arithmetic/SKILL.md +45 -0
  1447. package/skills/skills/vm-array-ops/SKILL.md +45 -0
  1448. package/skills/skills/vm-closure-call/SKILL.md +45 -0
  1449. package/skills/skills/vm-closure-create/SKILL.md +45 -0
  1450. package/skills/skills/vm-compare/SKILL.md +45 -0
  1451. package/skills/skills/vm-cond-jump/SKILL.md +45 -0
  1452. package/skills/skills/vm-cond-space/SKILL.md +45 -0
  1453. package/skills/skills/vm-exception/SKILL.md +45 -0
  1454. package/skills/skills/vm-func-call/SKILL.md +45 -0
  1455. package/skills/skills/vm-loop-run/SKILL.md +45 -0
  1456. package/skills/skills/vm-profiling/SKILL.md +45 -0
  1457. package/skills/skills/vm-refcount/SKILL.md +45 -0
  1458. package/skills/skills/vm-run-loop/SKILL.md +45 -0
  1459. package/skills/skills/vm-short-circuit/SKILL.md +45 -0
  1460. package/skills/skills/vm-stack-guard/SKILL.md +45 -0
  1461. package/skills/skills/vm-stack-ops/SKILL.md +45 -0
  1462. package/skills/skills/vm-trust-accum/SKILL.md +45 -0
  1463. package/src/bridge.ts +7 -7
  1464. package/src/hooks.ts +78 -27
  1465. package/src/index.ts +246 -66
  1466. package/src/lib/datapath.ts +112 -0
  1467. package/src/lib/mdcg_client.ts +329 -0
  1468. package/src/lib/roleplay_web.ts +932 -0
  1469. package/src/{llm_adapter.ts → lib/whitebox_llm.ts} +13 -7
  1470. package/src/tools.ts +41 -55
  1471. /package/src/{mutual.ts → lib/mutual.ts} +0 -0
@@ -0,0 +1,3033 @@
1
+ # -*- coding: utf-8 -*-
2
+ """compiler_code_units.py · 编译器代码条件单元库(第六阶段·白箱自举写编译器)
3
+ 中文编译器 C 线 = 白箱代码条件单元({任务 → 代码模式模板 + 验证样例})——
4
+ 白箱 code_compose 机制生成代码,三层自校验(语法/样例/边界),外部校准语义。
5
+ 单元设计对齐智能论语义:若则=条件跳转、德=信任累积、道/自然=条件空间、赋值=名实写入。
6
+ """
7
+ import sys
8
+ sys.stdout.reconfigure(encoding='utf-8')
9
+
10
+ # 任务 → 代码模式 + 验证样例(白箱生成的自校验基准)
11
+ COMPILER_UNITS = {
12
+ "VM-条件跳转": {
13
+ "task": "条件跳转",
14
+ "pattern": (
15
+ "def exec_jump_if_false(stack, ip, target):\n"
16
+ " # 生效条件:参数 stack/ip/target 合法\n"
17
+ " # 子功能:① 条件判定 ② 结果处理\n"
18
+ " # 执行:顺序执行\n"
19
+ " # 不适用条件:stack 为空/非法时(隐式盲区:返回默认值 1 = 未知行为——不适用)\n"
20
+ " # 若…则…否则:栈顶为假则跳转(智能论条件语句的 VM 语义)\n"
21
+ " if not stack:\n"
22
+ " return ip + 1\n"
23
+ " v = stack.pop()\n"
24
+ " return target if (v is False or v is None or v == 0) else ip + 1\n"),
25
+ "cases": [(([False], 3, 9), 9), (([0], 3, 9), 9), (([True], 3, 9), 4),
26
+ (([1], 3, 9), 4), (([], 3, 9), 4)],
27
+ "params": [],
28
+ "calibration": "对照:若条件为假则跳过 then 执行 else(JUMP_IF_FALSE)",
29
+ },
30
+ "VM-信任累积": {
31
+ "task": "信任累积",
32
+ "pattern": (
33
+ "def accumulate_trust(trust, amount):\n"
34
+ " # 信任累积(德):德——信任值累积(信任引擎内建语义)\n"
35
+ " # 生效条件:trust/amount 为数值(信任值 0-1 区间)\n"
36
+ " # 子功能:① 信任值相加 ② 三位小数归整\n"
37
+ " # 执行:round(trust + amount, 3)\n"
38
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
39
+ " return round(trust + amount, 3)\n"),
40
+ "cases": [((0.0, 0.5), 0.5), ((0.3, 0.5), 0.8), ((0.7, 0.0), 0.7)],
41
+ "params": [],
42
+ "calibration": "对照:德指令 → accumulate_trust(v0.2 INSTRUCTION_MAP 同语义)",
43
+ },
44
+ "VM-条件空间": {
45
+ "task": "条件空间",
46
+ "pattern": (
47
+ "def condition_space_op(space_stack, op, name):\n"
48
+ " # 生效条件:op ∈ {自然, 道}\n"
49
+ " # 子功能:① op 分支处理\n"
50
+ " # 执行:按 op 分派;循环迭代;顺序调用\n"
51
+ " # 不适用条件:op 非 {自然, 道} 时(隐式盲区:返回默认值 [] = 未知行为——不适用)\n"
52
+ " # 道:创建协议路径(条件空间栈压入);自然:恢复默认(弹栈到根)\n"
53
+ " if op == '道':\n"
54
+ " space_stack.append({'name': name})\n"
55
+ " elif op == '自然':\n"
56
+ " while len(space_stack) > 1:\n"
57
+ " space_stack.pop()\n"
58
+ " return space_stack\n"),
59
+ "cases": [(([], "道", "路径甲"), [{"name": "路径甲"}]),
60
+ (([{"name": "根"}, {"name": "子"}], "自然", ""), [{"name": "根"}])],
61
+ "params": [],
62
+ "calibration": "对照:道=create_path(条件空间注册)、自然=restore_default",
63
+ },
64
+ "编译-若则": {
65
+ "task": "编译条件",
66
+ "pattern": (
67
+ "def compile_condition(cond_instrs, then_instrs, else_instrs):\n"
68
+ " # 条件跳转编译(若则编译·条件语句编译):若…则…否则 → JUMP_IF_FALSE + JUMP(跳转指令,AST→字节码)\n"
69
+ " # 生效条件:cond_instrs/then_instrs/else_instrs 为指令列表(条件/真分支/假分支字节码)\n"
70
+ " # 子功能:① 拼接条件指令 ② 假跳转至 else ③ 真分支尾跳至结束\n"
71
+ " # 执行:JUMP_IF_FALSE(条件假跳)+ JUMP(跳过 else)\n"
72
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
73
+ " code = []\n"
74
+ " code.extend(cond_instrs)\n"
75
+ " else_lbl = len(code) + 1 + len(then_instrs) + 1\n"
76
+ " code.append(('JUMP_IF_FALSE', else_lbl))\n"
77
+ " code.extend(then_instrs)\n"
78
+ " end_lbl = len(code) + 1 + len(else_instrs)\n"
79
+ " code.append(('JUMP', end_lbl))\n"
80
+ " code.extend(else_instrs)\n"
81
+ " return code\n"),
82
+ "cases": [(([("LOAD", "x")], [("DE", 0.5)], [("DE", 0.1)]),
83
+ # 外部校准(2026-03):JIF→4=假跳 else 起点;JUMP→5=then 结束越界
84
+ [("LOAD", "x"), ("JUMP_IF_FALSE", 4), ("DE", 0.5),
85
+ ("JUMP", 5), ("DE", 0.1)])],
86
+ "params": [],
87
+ "calibration": "对照:若则=条件语句(v0.2 codegen if/else 的字节码形态)",
88
+ },
89
+ "编译-循环": {
90
+ "task": "循环编译",
91
+ "pattern": (
92
+ "def compile_loop(cond_instrs, body_instrs):\n"
93
+ " # 循环编译(while 编译):当…执行 → 条件 + JUMP_IF_FALSE 跳出 + 循环体 + JUMP 回条件\n"
94
+ " # 生效条件:cond_instrs/body_instrs 为指令列表(条件字节码/循环体字节码)\n"
95
+ " # 子功能:① 拼接条件指令 ② 假跳转至循环后 ③ 体尾回跳条件\n"
96
+ " # 执行:JUMP_IF_FALSE 跳出 + JUMP 回跳形成循环(while 语义)\n"
97
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
98
+ " # (while 语义:条件为假即退出,回跳形成循环)\n"
99
+ " code = []\n"
100
+ " code.extend(cond_instrs)\n"
101
+ " end_lbl = len(code) + 1 + len(body_instrs) + 1\n"
102
+ " code.append(('JUMP_IF_FALSE', end_lbl))\n"
103
+ " code.extend(body_instrs)\n"
104
+ " code.append(('JUMP', 0))\n"
105
+ " return code\n"),
106
+ "cases": [(([("LOAD", "i"), ("PUSH", 3), ("CMP_LT", None)],
107
+ [("DE", 0.1)]),
108
+ [("LOAD", "i"), ("PUSH", 3), ("CMP_LT", None),
109
+ ("JUMP_IF_FALSE", 6), ("DE", 0.1), ("JUMP", 0)]),
110
+ (([("PUSH", False)], [("DE", 0.5), ("DE", 0.2)]),
111
+ [("PUSH", False), ("JUMP_IF_FALSE", 5),
112
+ ("DE", 0.5), ("DE", 0.2), ("JUMP", 0)])],
113
+ "params": [],
114
+ "calibration": "对照:当…执行=while 语句(条件先判→体→回跳;假则跳出到循环后)",
115
+ },
116
+ "VM-循环执行": {
117
+ "task": "循环执行",
118
+ "pattern": (
119
+ "def vm_run_loop(code, symbols=None, max_steps=1000):\n"
120
+ " # 生效条件:op ∈ {ADD, CMP_LT, JUMP, JUMP_IF_FALSE, LOAD, PUSH, STORE, SUB}\n"
121
+ " # 子功能:① op 分支处理\n"
122
+ " # 执行:按 op 分派;循环迭代;顺序调用\n"
123
+ " # 不适用条件:op 非 {ADD, CMP_LT, JUMP, JUMP_IF_FALSE, LOAD, PUSH, STORE, SUB} 时\n"
124
+ " # 智能论 VM 循环执行:算术(ADD/SUB)+比较+回跳;步数上限防死循环\n"
125
+ " ip, stack = 0, []\n"
126
+ " symbols = dict(symbols or {})\n"
127
+ " steps = 0\n"
128
+ " while ip < len(code):\n"
129
+ " steps += 1\n"
130
+ " if steps > max_steps:\n"
131
+ " return {'error': '循环未终止(超出步数上限)',\n"
132
+ " 'symbols': symbols, 'stack': stack}\n"
133
+ " op, arg = code[ip]\n"
134
+ " ip += 1\n"
135
+ " if op == 'PUSH':\n"
136
+ " stack.append(arg)\n"
137
+ " elif op == 'STORE':\n"
138
+ " symbols[arg] = stack.pop()\n"
139
+ " elif op == 'LOAD':\n"
140
+ " if arg not in symbols:\n"
141
+ " return {'error': '名实不符:' + arg,\n"
142
+ " 'symbols': symbols, 'stack': stack}\n"
143
+ " stack.append(symbols[arg])\n"
144
+ " elif op == 'JUMP_IF_FALSE':\n"
145
+ " v = stack.pop() if stack else False\n"
146
+ " if v is False or v is None or v == 0:\n"
147
+ " ip = arg\n"
148
+ " elif op == 'JUMP':\n"
149
+ " ip = arg\n"
150
+ " elif op == 'CMP_LT':\n"
151
+ " b, a = stack.pop(), stack.pop()\n"
152
+ " stack.append(a < b)\n"
153
+ " elif op == 'ADD':\n"
154
+ " b, a = stack.pop(), stack.pop()\n"
155
+ " stack.append(a + b)\n"
156
+ " elif op == 'SUB':\n"
157
+ " b, a = stack.pop(), stack.pop()\n"
158
+ " stack.append(a - b)\n"
159
+ " return {'error': None, 'symbols': symbols, 'stack': stack}\n"),
160
+ "cases": [(([("LOAD", "i"), ("PUSH", 3), ("CMP_LT", None),
161
+ ("JUMP_IF_FALSE", 13),
162
+ ("LOAD", "s"), ("LOAD", "i"), ("ADD", None), ("STORE", "s"),
163
+ ("LOAD", "i"), ("PUSH", 1), ("ADD", None), ("STORE", "i"),
164
+ ("JUMP", 0)],
165
+ {"i": 1, "s": 0}),
166
+ {'error': None, 'symbols': {'i': 3, 's': 3},
167
+ 'stack': []}),
168
+ (([("LOAD", "i"), ("PUSH", 3), ("CMP_LT", None),
169
+ ("JUMP_IF_FALSE", 13),
170
+ ("LOAD", "s"), ("LOAD", "i"), ("ADD", None), ("STORE", "s"),
171
+ ("LOAD", "i"), ("PUSH", 1), ("ADD", None), ("STORE", "i"),
172
+ ("JUMP", 0)],
173
+ {"i": 5, "s": 0}),
174
+ {'error': None, 'symbols': {'i': 5, 's': 0},
175
+ 'stack': []}),
176
+ (([("JUMP", 0)], {}),
177
+ {'error': '循环未终止(超出步数上限)',
178
+ 'symbols': {}, 'stack': []})],
179
+ "params": [],
180
+ "calibration": "对照:while 循环 VM 运行(i=1→3 累积 1+2=3 于 s;死循环被步数上限拦截)",
181
+ },
182
+ "编译-函数定义": {
183
+ "task": "函数定义",
184
+ "pattern": (
185
+ "def compile_func_def(name, params, body_instrs):\n"
186
+ " # 生效条件:参数 name/params/body_instrs 合法\n"
187
+ " # 子功能:① 调用 list\n"
188
+ " # 执行:顺序调用\n"
189
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
190
+ " # 定义 名(参数):语句 → 函数体后置 + RETURN(入口=函数体起点)\n"
191
+ " # 返回 (skip_jump, entry_ip, body):调用方拼接 JUMP 跳过 + 函数体\n"
192
+ " body = list(body_instrs)\n"
193
+ " body.append(('RETURN', None))\n"
194
+ " return {'name': name, 'params': params,\n"
195
+ " 'skip': ('JUMP', None), # 占位,拼接后回填\n"
196
+ " 'entry_ip': 0, 'body': body}\n"),
197
+ "cases": [(("阶乘", ["n"], [("LOAD", "n")]),
198
+ {'name': '阶乘', 'params': ['n'],
199
+ 'skip': ('JUMP', None), 'entry_ip': 0,
200
+ 'body': [('LOAD', 'n'), ('RETURN', None)]})], "params": [],
201
+ "calibration": "对照:protocol-compiler 函数定义(入口=函数体起点,体末 RETURN)",
202
+ },
203
+ "VM-函数调用": {
204
+ "task": "函数调用",
205
+ "pattern": (
206
+ "def call_func(call_stack, symbols, params, args, entry_ip, ret_ip):\n"
207
+ " # 生效条件:参数 call_stack/symbols/params/args/entry_ip/ret_ip 合法\n"
208
+ " # 子功能:① 调用 zip;② 调用 dict\n"
209
+ " # 执行:循环迭代;顺序调用\n"
210
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
211
+ " # CALL 语义:保存调用帧(返回地址+符号表) → 参数绑定(遮蔽全局) → 跳入口\n"
212
+ " call_stack.append((ret_ip, dict(symbols)))\n"
213
+ " for pname, pval in zip(params, args):\n"
214
+ " symbols[pname] = pval\n"
215
+ " return entry_ip\n"),
216
+ "cases": [(([], {'甲': 1}, ['x'], [5], 10, 3), 10)],
217
+ "params": [],
218
+ "calibration": "对照:protocol-compiler CALL(帧保存+参数绑定遮蔽全局,对齐 da997ef VM)",
219
+ },
220
+ "编译-递归": {
221
+ "task": "递归调用",
222
+ "pattern": (
223
+ "def compile_recursive(name, params, cond_instrs, then_ret, else_expr_instrs):\n"
224
+ " # 生效条件:参数 name/params/cond_instrs/then_ret/else_expr_instrs 合法\n"
225
+ " # 子功能:① 主体逻辑执行\n"
226
+ " # 执行:顺序执行\n"
227
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
228
+ " # 递归函数:若 基条件 则 返回 基值,否则 返回 表达式(含自身调用)\n"
229
+ " # 组装为函数体字节码(CALL 自身由调用方回填入口)\n"
230
+ " body = []\n"
231
+ " body.extend(cond_instrs)\n"
232
+ " body.append(('JUMP_IF_FALSE', 0)) # 占位\n"
233
+ " body.extend(then_ret)\n"
234
+ " body.append(('RETURN', None))\n"
235
+ " body.append(('JUMP', 0)) # 占位\n"
236
+ " body.extend(else_expr_instrs)\n"
237
+ " body.append(('RETURN', None))\n"
238
+ " return {'name': name, 'params': params, 'body': body}\n"),
239
+ "cases": [((("阶乘", ["n"], [("LOAD", "n"), ("PUSH", 2), ("CMP_LT", None)],
240
+ [("PUSH", 1)], [("LOAD", "n")])),
241
+ {'name': '阶乘', 'params': ['n'],
242
+ 'body': [('LOAD', 'n'), ('PUSH', 2), ('CMP_LT', None),
243
+ ('JUMP_IF_FALSE', 0), ('PUSH', 1), ('RETURN', None),
244
+ ('JUMP', 0), ('LOAD', 'n'), ('RETURN', None)]})],
245
+ "params": [],
246
+ "calibration": "对照:protocol-compiler 递归函数(若则体内 RETURN,对齐阶乘 da997ef 语义)",
247
+ },
248
+ "编译-赋值": {
249
+ "task": "编译赋值",
250
+ "pattern": (
251
+ "def compile_assign(value_instrs, name):\n"
252
+ " # 赋值编译(名实写入):赋值 → 值指令 + STORE_NAME(以名举实:名实写入)\n"
253
+ " # 生效条件:value_instrs 为计算值的指令列表;name 为赋值目标名\n"
254
+ " # 子功能:① 拼接值指令 ② 追加名写入指令\n"
255
+ " # 执行:值指令 + STORE_NAME(名实绑定语义)\n"
256
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
257
+ " code = list(value_instrs)\n"
258
+ " code.append(('STORE_NAME', name))\n"
259
+ " return code\n"),
260
+ "cases": [(([("PUSH", 1)], "甲"), [("PUSH", 1), ("STORE_NAME", "甲")])],
261
+ "params": [],
262
+ "calibration": "对照:赋值 = target = expr(名实对应)",
263
+ },
264
+ "词法-道德经": {
265
+ "task": "道德经词法",
266
+ "pattern": (
267
+ "def instr_token(word):\n"
268
+ " # 道德经助记符(词法):道德经助记符 → 指令 Token(剥离尾部标点;未接入 VM 的指令诚实返回 None)\n"
269
+ " # 生效条件:word 为道德经助记符文本(道/德/自然/无为/止/知足)\n"
270
+ " # 子功能:① 剥离尾部标点 ② 助记符查映射表 ③ 未收录返回 None\n"
271
+ " # 执行:rstrip 标点 + dict.get,命中返指令码\n"
272
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
273
+ " m = {'道': 'DAO', '德': 'DE', '自然': 'ZIRAN', '无为': 'WUWEI',\n"
274
+ " '止': 'ZHI', '知足': 'ZHIZU'}\n"
275
+ " return m.get((word or '').rstrip('。;;,,'))\n"),
276
+ "cases": [("道", "DAO"), ("德", "DE"), ("止", "ZHI"), ("知足", "ZHIZU"),
277
+ ("谷", None), ("随便", None)],
278
+ "params": [],
279
+ "calibration": "对照:TokenType 道德经助记符(道/德/自然/无为/谷/牝/柔/朴/止/知足)",
280
+ },
281
+ "词法-九章算术": {
282
+ "task": "九章算术",
283
+ "pattern": (
284
+ "def structure_token(text):\n"
285
+ " # 九章算术结构(词法):问曰/答曰/术曰 → (TokenType, 原文)\n"
286
+ " # 生效条件:text 以九章算术结构词(问曰/答曰/术曰)开头\n"
287
+ " # 子功能:① 结构词前缀匹配 ② 命中返回类型标记 ③ 未命中返 None\n"
288
+ " # 执行:顺序匹配三个结构词,命中即返 (词_STRUCT, 词)\n"
289
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
290
+ " for kw in ('问曰', '答曰', '术曰'):\n"
291
+ " if text.startswith(kw):\n"
292
+ " return (kw + '_STRUCT', kw)\n"
293
+ " return None\n"),
294
+ "cases": [("问曰:如何验证", ("问曰_STRUCT", "问曰")),
295
+ ("术曰:", ("术曰_STRUCT", "术曰")),
296
+ ("答曰:信任值", ("答曰_STRUCT", "答曰")),
297
+ ("随便文本", None)],
298
+ "params": [],
299
+ "calibration": "对照:TokenType WENYUE/DAYUE/SHUYUE(九章算术结构)",
300
+ },
301
+ "校验-名实": {
302
+ "task": "名实校验",
303
+ "pattern": (
304
+ "def check_names(required, declared):\n"
305
+ " # 生效条件:参数 required/declared 合法\n"
306
+ " # 子功能:① 主体逻辑执行\n"
307
+ " # 执行:顺序执行\n"
308
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
309
+ " # 以名举实:要求的符号必须已声明(墨辩静态检查)\n"
310
+ " return [s for s in required if s not in declared]\n"),
311
+ "cases": [((["a"], {"a": 1, "b": 2}), []),
312
+ ((["a", "b"], {"a": 1}), ["b"]),
313
+ (([], {}), [])],
314
+ "params": [],
315
+ "calibration": "对照:name_checker 以名举实(符号表→协议实体)",
316
+ },
317
+ "VM-执行循环": {
318
+ "task": "执行循环",
319
+ "pattern": (
320
+ "def vm_run(code, symbols=None, trust=0.0, cond_stack=None):\n"
321
+ " # 虚拟机(VM·智能论)执行循环:字节码指令 ip 顺序执行;止/无为 = 控制流信号;名实不符报错\n"
322
+ " # 生效条件:code 为指令列表;symbols 为符号表;trust 为初始信任值\n"
323
+ " # 子功能:① 按 ip 取指执行 ② 控制流信号处理 ③ 名实校验拦截\n"
324
+ " # 执行:循环取指分派,止/无为跳转,名实不符报错\n"
325
+ " # 不适用条件:op 非 {DAO, DE, JUMP, JUMP_IF_FALSE, LOAD, PUSH, STORE, WUWEI, ZHI, ZHIZU, ZIRAN} 时\n"
326
+ " ip, stack = 0, []\n"
327
+ " symbols = dict(symbols or {})\n"
328
+ " cond_stack = list(cond_stack or [])\n"
329
+ " result = {'trust': trust, 'symbols': symbols, 'cond': cond_stack,\n"
330
+ " 'stack': [], 'halt': None, 'error': None}\n"
331
+ " while ip < len(code):\n"
332
+ " op, arg = code[ip]\n"
333
+ " ip += 1\n"
334
+ " if op == 'PUSH':\n"
335
+ " stack.append(arg)\n"
336
+ " elif op == 'STORE':\n"
337
+ " symbols[arg] = stack.pop()\n"
338
+ " elif op == 'LOAD':\n"
339
+ " if arg not in symbols:\n"
340
+ " result['error'] = '名实不符:' + arg\n"
341
+ " break\n"
342
+ " stack.append(symbols[arg])\n"
343
+ " elif op == 'JUMP_IF_FALSE':\n"
344
+ " v = stack.pop() if stack else False\n"
345
+ " if v is False or v is None or v == 0:\n"
346
+ " ip = arg\n"
347
+ " elif op == 'JUMP':\n"
348
+ " ip = arg\n"
349
+ " elif op in ('CMP_GT', 'CMP_LT', 'CMP_EQ', 'CMP_NE', 'CMP_LE', 'CMP_GE'):\n"
350
+ " b, a = stack.pop(), stack.pop()\n"
351
+ " stack.append({'CMP_GT': a > b, 'CMP_LT': a < b, 'CMP_EQ': a == b,\n"
352
+ " 'CMP_NE': a != b, 'CMP_LE': a <= b,\n"
353
+ " 'CMP_GE': a >= b}[op])\n"
354
+ " elif op == 'DE':\n"
355
+ " trust = round(trust + arg, 3)\n"
356
+ " elif op == 'DAO':\n"
357
+ " cond_stack.append({'name': arg})\n"
358
+ " elif op == 'ZIRAN':\n"
359
+ " while len(cond_stack) > 1:\n"
360
+ " cond_stack.pop()\n"
361
+ " elif op == 'ZHIZU':\n"
362
+ " if trust >= arg[0]:\n"
363
+ " ip = arg[1]\n"
364
+ " elif op == 'ZHI':\n"
365
+ " result['halt'] = 'halt'\n"
366
+ " break\n"
367
+ " elif op == 'WUWEI':\n"
368
+ " result['halt'] = 'yield'\n"
369
+ " break\n"
370
+ " result['stack'] = list(stack)\n"
371
+ " result['trust'] = trust\n"
372
+ " return result\n"),
373
+ "cases": [(([("DE", 0.3), ("DE", 0.5)],), {"trust": 0.8}),
374
+ (([("PUSH", False), ("JUMP_IF_FALSE", 3), ("DE", 0.5),
375
+ ("DE", 0.2)],), {"trust": 0.2}),
376
+ (([("DAO", "路径甲"), ("ZIRAN", None)],), {"cond": [{"name": "路径甲"}]}),
377
+ (([("ZHI", None)],), {"halt": "halt"}),
378
+ (([("WUWEI", None)],), {"halt": "yield"}),
379
+ (([("LOAD", "未声明")],), {"error": "名实不符:未声明"}),
380
+ (([("PUSH", 0.5), ("PUSH", 0.3), ("CMP_GT", None),
381
+ ("DE", 0.2), ("ZHI", None)],), {"trust": 0.2}),
382
+ (([("PUSH", 0.1), ("PUSH", 0.3), ("CMP_GT", None),
383
+ ("JUMP_IF_FALSE", 5), ("DE", 0.2), ("ZHI", None)],),
384
+ {"trust": 0.0})],
385
+ "params": [],
386
+ "calibration": "对照:condition_vm 执行循环(止=halt/无为=yield/名实不符=错误)",
387
+ },
388
+ "编译-指令": {
389
+ "task": "编译指令",
390
+ "pattern": (
391
+ "def compile_instr(kind, operand=None):\n"
392
+ " # 生效条件:kind ∈ {DAO, DE}\n"
393
+ " # 子功能:1 kind 分支处理\n"
394
+ " # 执行:按 op 分派;顺序调用\n"
395
+ " # 不适用条件:kind 非 {DAO, DE} 时\n"
396
+ " # 道德经指令 AST → VM 指令(未接入 VM 的指令诚实返回 None)\n"
397
+ " if kind == 'DAO':\n"
398
+ " return ('DAO', operand or '无名路径')\n"
399
+ " if kind == 'DE':\n"
400
+ " return ('DE', float(operand or 0))\n"
401
+ " if kind in ('ZIRAN', 'WUWEI', 'ZHI'):\n"
402
+ " return (kind, None)\n"
403
+ " return None\n"),
404
+ "cases": [(("DAO", "路径甲"), ("DAO", "路径甲")), (("DE", "0.5"), ("DE", 0.5)),
405
+ (("ZHI", None), ("ZHI", None)), (("谷", "x"), None)],
406
+ "params": [],
407
+ "calibration": "对照:INSTRUCTION_MAP(道→create_path 等;未接入指令诚实边界)",
408
+ },
409
+ "校验-条件空间符号类型": {
410
+ "task": "条件空间符号类型",
411
+ "pattern": (
412
+ "def check_condition_types(conditions, symbol_types):\n"
413
+ " # 生效条件:参数 conditions/symbol_types 合法\n"
414
+ " # 子功能:① 主体逻辑执行\n"
415
+ " # 执行:顺序执行\n"
416
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
417
+ " # 条件空间=类型系统:条件声明中的符号必须已定义类型(编译期静态检查)\n"
418
+ " # conditions: [{'space': '伴侣', 'symbol': '情感权重', 'type': '数值'}]\n"
419
+ " return [c for c in conditions\n"
420
+ " if c['symbol'] not in symbol_types]\n"),
421
+ "cases": [(([{"space": "伴侣", "symbol": "情感权重", "type": "数值"}],
422
+ {"情感权重": "数值", "信任值": "数值"}), []),
423
+ (([{"space": "伴侣", "symbol": "未定义量", "type": "数值"}],
424
+ {"情感权重": "数值"}), [{"space": "伴侣", "symbol": "未定义量",
425
+ "type": "数值"}]),
426
+ (([], {}), [])],
427
+ "params": [],
428
+ "calibration": "对照:C2 语义——条件空间=类型系统(若条件空间X则符号Y类型Z 编译期校验)",
429
+ },
430
+ "词法-中文程序": {
431
+ "task": "中文程序词法",
432
+ "pattern": (
433
+ "def lex_line(line):\n"
434
+ " # 中文程序词法(词法分析):中文程序行 → (kind, payload);九章算术结构/条件/指令/步骤识别\n"
435
+ " # 生效条件:line 为中文程序源码行\n"
436
+ " # 子功能:① 九章算术结构识别 ② 条件/指令/步骤分类 ③ 提取载荷\n"
437
+ " # 执行:前缀匹配 + 分类返回 (kind, payload)\n"
438
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
439
+ " line = line.strip()\n"
440
+ " if not line or line.startswith('#'):\n"
441
+ " return None\n"
442
+ " for kw in ('问曰', '答曰', '术曰'):\n"
443
+ " if line.startswith(kw):\n"
444
+ " return (kw + '_STRUCT', line[len(kw):].lstrip('::'))\n"
445
+ " m = None\n"
446
+ " import re as _re\n"
447
+ " m = _re.match(r'^(\\d+)。\\s*(.+?)[;;]?$', line)\n"
448
+ " if m:\n"
449
+ " num, content = int(m.group(1)), m.group(2)\n"
450
+ " if content.startswith('若'):\n"
451
+ " cm = _re.match(r'^若\\s*(.+?)\\s*[,,]?\\s*则\\s*(.+?)\\s*[。;;]?(?:否则\\s*(.+?))?[。;]?$', content)\n"
452
+ " if cm:\n"
453
+ " return ('COND', (cm.group(1), cm.group(2), cm.group(3)))\n"
454
+ " return ('STEP', (num, content))\n"
455
+ " m = _re.match(r'^若\\s*(.+?)\\s*[,,]?\\s*则\\s*(.+?)\\s*[。;;]?(?:否则\\s*(.+?))?[。;]?$', line)\n"
456
+ " if m:\n"
457
+ " return ('COND', (m.group(1), m.group(2), m.group(3)))\n"
458
+ " for kw in ('道', '德', '止', '知足', '自然', '无为'):\n"
459
+ " if line.startswith(kw):\n"
460
+ " rest = line[len(kw):].strip().rstrip('。;;')\n"
461
+ " return ('INSTR', (kw, rest or None))\n"
462
+ " return ('UNKNOWN', line)\n"),
463
+ "cases": [("术曰:", ("术曰_STRUCT", "")),
464
+ ("1。道 新信任路径;", ("STEP", (1, "道 新信任路径"))),
465
+ ("若 信任值 大于 0.3,则 德 0.5;", ("COND", ("信任值 大于 0.3",
466
+ "德 0.5", None))),
467
+ ("德 0.5。", ("INSTR", ("德", "0.5"))),
468
+ ("止。", ("INSTR", ("止", None))),
469
+ ("# 注释", None),
470
+ ("", None)],
471
+ "params": [],
472
+ "calibration": "对照:protocol-compiler lexer(九章算术结构/若则/道德经指令/步骤序号)",
473
+ },
474
+ "编译-程序": {
475
+ "task": "编译程序",
476
+ "pattern": (
477
+ "def compile_program(statements, compile_instr=None, compile_condition=None):\n"
478
+ " # 生效条件:kind ∈ {COND, INSTR, 术曰, 止};s.replace 可用\n"
479
+ " # 子功能:1 kind 分支处理\n"
480
+ " # 执行:按 op 分派;循环迭代;顺序调用\n"
481
+ " # 不适用条件:kind 非 {COND, INSTR, 术曰, 止} 时\n"
482
+ " # 程序语句列表 → 字节码(术曰=作用域;条件=跳转;指令=道德经;止=停止)\n"
483
+ " def _num(v):\n"
484
+ " if v is None:\n"
485
+ " return None\n"
486
+ " s = str(v)\n"
487
+ " return float(s) if s.replace('.', '', 1).isdigit() else v\n"
488
+ " ci = compile_instr or (lambda k, v=None: (k, _num(v)))\n"
489
+ " cc = compile_condition or (lambda c, t, e: c + [('JUMP_IF_FALSE', 0)] + t)\n"
490
+ " code = []\n"
491
+ " for stmt in statements:\n"
492
+ " kind = stmt[0]\n"
493
+ " if kind == '术曰':\n"
494
+ " code.append(('ENTER_SHUYUE', None))\n"
495
+ " elif kind == 'INSTR':\n"
496
+ " instr = ci(stmt[1], stmt[2])\n"
497
+ " if instr:\n"
498
+ " code.append(instr)\n"
499
+ " elif kind == 'COND':\n"
500
+ " cond, then_s, else_s = stmt[1], stmt[2], stmt[3]\n"
501
+ " then_i = [x for x in [ci(t[0], t[1]) for t in then_s] if x]\n"
502
+ " else_i = [x for x in [ci(t[0], t[1]) for t in else_s] if x]\n"
503
+ " base = len(code)\n"
504
+ " seg = cc([('PUSH', True)], then_i, else_i)\n"
505
+ " # 外部校准:段内相对跳转目标需加全局偏移(否则组合后跳到自己)\n"
506
+ " seg = [(op, arg + base) if op in ('JUMP', 'JUMP_IF_FALSE')\n"
507
+ " and isinstance(arg, int) else (op, arg) for op, arg in seg]\n"
508
+ " code.extend(seg)\n"
509
+ " elif kind == '止':\n"
510
+ " code.append(('ZHI', None))\n"
511
+ " return code\n"),
512
+ "cases": [(([("术曰", None), ("INSTR", "DAO", "路径甲"), ("止", None)],),
513
+ [("ENTER_SHUYUE", None), ("DAO", "路径甲"), ("ZHI", None)]),
514
+ (([("INSTR", "DE", "0.3"), ("止", None)],),
515
+ [("DE", 0.3), ("ZHI", None)])],
516
+ "params": [],
517
+ "calibration": "对照:C2 顶层编译——术曰作用域/道德经指令/止停止",
518
+ },
519
+ "校验-条件空间存在性": {
520
+ "task": "条件空间存在",
521
+ "pattern": (
522
+ "def check_condition_spaces(used_spaces, declared_spaces):\n"
523
+ " # 生效条件:参数 used_spaces/declared_spaces 合法\n"
524
+ " # 子功能:① 主体逻辑执行\n"
525
+ " # 执行:顺序执行\n"
526
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
527
+ " # 条件空间=类型系统:使用的条件空间必须已声明(编译期拦截未声明空间)\n"
528
+ " return [s for s in used_spaces if s not in declared_spaces]\n"),
529
+ "cases": [((["伴侣", "高原"], {"伴侣", "高原"}), []),
530
+ ((["伴侣"], {"伴侣"}), []),
531
+ ((["伴侣", "未知空间"], {"伴侣"}), ["未知空间"]),
532
+ (([], set()), [])],
533
+ "params": [],
534
+ "calibration": "对照:C2 语义——条件空间=类型系统(使用前必须声明,编译期拦截)",
535
+ },
536
+ "编译-管线静态检查": {
537
+ "task": "编译管线",
538
+ "pattern": (
539
+ "def compile_pipeline(statements, symbol_types, declared_spaces):\n"
540
+ " # 生效条件:kind ∈ {COND};_re.search 可用;m.group 可用\n"
541
+ " # 子功能:1 kind 分支处理\n"
542
+ " # 执行:按 op 分派;循环迭代;顺序调用\n"
543
+ " # 不适用条件:kind 非 {COND} 时\n"
544
+ " # 编译管线(C2 语义:静态检查→字节码)——名实 + 条件空间类型 + 存在性\n"
545
+ " errors = []\n"
546
+ " for st in statements:\n"
547
+ " kind = st[0]\n"
548
+ " if kind == 'INSTR' and st[1] == 'DE':\n"
549
+ " operand = st[2]\n"
550
+ " if operand is not None and not str(operand).replace('.', '', 1).isdigit():\n"
551
+ " errors.append('类型错误:德 操作数「' + str(operand) + '」非数值(条件空间类型)')\n"
552
+ " elif kind == 'COND':\n"
553
+ " import re as _re\n"
554
+ " m = _re.search(r'条件空间为(.+?)[,,。\\s]', st[1])\n"
555
+ " if m:\n"
556
+ " space = m.group(1).strip()\n"
557
+ " if space not in declared_spaces:\n"
558
+ " errors.append('条件空间未声明:「' + space + '」(编译期拦截)')\n"
559
+ " if errors:\n"
560
+ " return None, {'ok': False, 'errors': errors}\n"
561
+ " return [('COMPILED', len(statements))], {'ok': True}\n"),
562
+ "cases": [(([("INSTR", "DE", "0.5"), ("止", None)], {"信任值": "数值"},
563
+ {"伴侣"}), ([("COMPILED", 2)], {"ok": True})),
564
+ (([("INSTR", "DE", "高信任"), ("止", None)], {"信任值": "数值"},
565
+ {"伴侣"}), (None, {"ok": False,
566
+ "errors": ["类型错误:德 操作数「高信任」非数值(条件空间类型)"]})),
567
+ (([("COND", "条件空间为未知 则 德 0.5", [("DE", "0.5")], [])],
568
+ {"信任值": "数值"}, {"伴侣"}), (None, {"ok": False,
569
+ "errors": ["条件空间未声明:「未知」(编译期拦截)"]})),
570
+ (([("COND", "条件空间为伴侣 则 德 0.5", [("DE", "0.5")], [])],
571
+ {"信任值": "数值"}, {"伴侣"}), ([("COMPILED", 1)], {"ok": True}))],
572
+ "params": [],
573
+ "calibration": "对照:C2 语义——名实=静态检查、条件空间=类型系统(编译期拦截类型错误/未声明空间)",
574
+ },
575
+ "分析-类型推断": {
576
+ "task": "类型推断",
577
+ "pattern": (
578
+ "def infer_types(statements):\n"
579
+ " # 类型推断(编译期):从赋值推断符号类型,条件空间声明登记空间类型\n"
580
+ " # 生效条件:statements 为语句列表(assign/条件空间声明)\n"
581
+ " # 子功能:① 赋值推导类型 ② 条件空间登记 ③ 冲突标记混合类型\n"
582
+ " # 执行:逐语句分派,冲突赋值 → 类型标记'混合'(编译期拦截候选)\n"
583
+ " # 不适用条件:kind 非 {COND, assign} 时\n"
584
+ " # 冲突赋值 → 类型标记'混合'(编译期拦截候选)\n"
585
+ " import re as _re\n"
586
+ " types, spaces = {}, {}\n"
587
+ " for st in statements:\n"
588
+ " kind = st[0]\n"
589
+ " if kind == 'assign':\n"
590
+ " val = st[2]\n"
591
+ " if isinstance(val, bool):\n"
592
+ " t = '布尔'\n"
593
+ " elif isinstance(val, (int, float)):\n"
594
+ " t = '数值'\n"
595
+ " elif isinstance(val, str):\n"
596
+ " t = '文本'\n"
597
+ " else:\n"
598
+ " t = '未知'\n"
599
+ " if st[1] in types and types[st[1]] != t:\n"
600
+ " types[st[1]] = '混合'\n"
601
+ " else:\n"
602
+ " types.setdefault(st[1], t)\n"
603
+ " elif kind == 'COND':\n"
604
+ " m = _re.search(r'条件空间为(.+?)(?:[,,。\\s]|$)', st[1])\n"
605
+ " if m:\n"
606
+ " spaces[m.group(1).strip()] = '已声明'\n"
607
+ " return {'types': types, 'spaces': spaces}\n"),
608
+ "cases": [(([("assign", "甲", 3), ("assign", "乙", "x")],),
609
+ {"types": {"甲": "数值", "乙": "文本"}, "spaces": {}}),
610
+ (([("COND", "条件空间为伴侣 则 德 0.5", [], [])],),
611
+ {"types": {}, "spaces": {"伴侣": "已声明"}}),
612
+ (([("assign", "甲", 3), ("assign", "甲", "x")],),
613
+ {"types": {"甲": "混合"}, "spaces": {}}),
614
+ (([],), {"types": {}, "spaces": {}})],
615
+ "params": [],
616
+ "calibration": "对照:C2 语义深化——类型推断(赋值→数值/文本/布尔,冲突→混合)+ 条件空间声明登记(目标3 分析器完整化)",
617
+ },
618
+ "编译-类型检查": {
619
+ "task": "类型检查",
620
+ "pattern": (
621
+ "def compile_typed(statements, infer_fn=None):\n"
622
+ " # 生效条件:t ∈ {混合};_re.findall 可用\n"
623
+ " # 子功能:1 t 分支处理\n"
624
+ " # 执行:按 op 分派;循环迭代;顺序调用\n"
625
+ " # 不适用条件:t 非 {混合} 时\n"
626
+ " # 类型检查编译:先类型推断 → 未推断/混合类型符号使用 → 编译期拦截\n"
627
+ " # infer_fn 注入(组装白箱单元:分析-类型推断)\n"
628
+ " import re as _re\n"
629
+ " inf = infer_fn(statements) if infer_fn else {}\n"
630
+ " types = (inf or {}).get('types', {})\n"
631
+ " errors = []\n"
632
+ " skip = ('条件空间', '为', '则', '大于', '小于', '等于', '不等于',\n"
633
+ " '不小于', '不大于', '信任值', '德', '道', '止')\n"
634
+ " for st in statements:\n"
635
+ " if st[0] == 'COND':\n"
636
+ " for name in _re.findall(r'([\\u4e00-\\u9fffA-Za-z_]\\w*)', st[1]):\n"
637
+ " if name in skip:\n"
638
+ " continue\n"
639
+ " t = types.get(name)\n"
640
+ " if t is None:\n"
641
+ " errors.append('未推断类型:' + name)\n"
642
+ " elif t == '混合':\n"
643
+ " errors.append('类型冲突:' + name + '(混合类型)')\n"
644
+ " if errors:\n"
645
+ " return None, {'ok': False, 'errors': errors}\n"
646
+ " return [('TYPED_OK', len(statements))], {'ok': True}\n"),
647
+ "cases": [(([("assign", "甲", 3), ("COND", "甲 大于 2 则 德 0.5", [], [])],),
648
+ ([("TYPED_OK", 2)], {"ok": True})),
649
+ (([("COND", "未知量 大于 2 则 德 0.5", [], [])],),
650
+ (None, {"ok": False, "errors": ["未推断类型:未知量"]})),
651
+ (([("assign", "甲", 3), ("assign", "甲", "x"),
652
+ ("COND", "甲 大于 2 则 德 0.5", [], [])],),
653
+ (None, {"ok": False, "errors": ["类型冲突:甲(混合类型)"]}))],
654
+ "params": [],
655
+ "needs_inject": True,
656
+ "calibration": "对照:C2 语义深化——类型推断接入编译管线(未推断/混合类型符号使用→编译期拦截,目标3 分析器完整化)",
657
+ },
658
+ "编译-完整管线": {
659
+ "task": "完整编译",
660
+ "pattern": (
661
+ "def compile_full(source, declared_spaces=None):\n"
662
+ " # 生效条件:kw ∈ {知足};source.splitlines 可用;line.strip 可用\n"
663
+ " # 子功能:1 kw 分支处理\n"
664
+ " # 执行:按 op 分派;循环迭代;顺序调用\n"
665
+ " # 不适用条件:kw 非 {知足} 时\n"
666
+ " # 白箱版 pc compile 单入口:中文源码 → 字节码\n"
667
+ " # 流程:逐行词法 → 静态检查(条件空间存在性/类型)→ 编译指令\n"
668
+ " import re as _re\n"
669
+ " spaces = set(declared_spaces or [])\n"
670
+ " instr_map = {'道': 'DAO', '德': 'DE', '止': 'ZHI', '知足': 'ZHIZU',\n"
671
+ " '自然': 'ZIRAN', '无为': 'WUWEI'}\n"
672
+ " code, errors = [], []\n"
673
+ " pending_zhizu = []\n"
674
+ " for line in source.splitlines():\n"
675
+ " line = line.strip()\n"
676
+ " if not line or line.startswith('#'):\n"
677
+ " continue\n"
678
+ " m = _re.match(r'^(\\d+)。\\s*(.+?)[;;]?$', line)\n"
679
+ " if m:\n"
680
+ " line = m.group(2)\n"
681
+ " m = _re.match(r'^若\\s*(.+?)\\s*[,,]?\\s*则\\s*(.+?)\\s*[。;;]?$', line)\n"
682
+ " if m:\n"
683
+ " cond, then = m.group(1), m.group(2)\n"
684
+ " sm = _re.search(r'条件空间为(.+?)(?:[,,。\\s]|$)', cond)\n"
685
+ " if sm and sm.group(1).strip() not in spaces:\n"
686
+ " errors.append('条件空间未声明:' + sm.group(1).strip())\n"
687
+ " continue\n"
688
+ " t = then.split()\n"
689
+ " then_instr = (instr_map.get(t[0], t[0]),\n"
690
+ " float(t[1]) if len(t) > 1 and t[1].replace('.', '', 1).isdigit()\n"
691
+ " else (t[1] if len(t) > 1 else None))\n"
692
+ " # 条件真值编译:LOAD 左值 + PUSH 右值 + CMP + 假则跳过 then\n"
693
+ " cmp_map = {'大于': 'CMP_GT', '小于': 'CMP_LT', '等于': 'CMP_EQ',\n"
694
+ " '不等于': 'CMP_NE', '不小于': 'CMP_GE', '不大于': 'CMP_LE'}\n"
695
+ " cm = _re.search(r'(.+?)\\s*(大于|小于|等于|不等于|不小于|不大于)\\s*(.+?)\\s*$', cond)\n"
696
+ " if cm:\n"
697
+ " left, op, right = cm.group(1).strip(), cm.group(2), cm.group(3).strip()\n"
698
+ " code.append(('LOAD', left))\n"
699
+ " code.append(('PUSH', float(right) if right.replace('.', '', 1).isdigit() else right))\n"
700
+ " code.append((cmp_map[op], None))\n"
701
+ " jif = len(code)\n"
702
+ " code.append(('JUMP_IF_FALSE', 0))\n"
703
+ " code.append(then_instr)\n"
704
+ " code[jif] = ('JUMP_IF_FALSE', len(code))\n"
705
+ " else:\n"
706
+ " code.append(('PUSH', True))\n"
707
+ " code.append(('JUMP_IF_FALSE', 0))\n"
708
+ " code.append(then_instr)\n"
709
+ " continue\n"
710
+ " m = _re.match(r'^(.+?)\\s*[==]\\s*(.+?)\\s*[。;;]?$', line)\n"
711
+ " if m:\n"
712
+ " # 赋值:名 = 值 → PUSH/LOAD 值 + STORE_NAME(以名举实:名实动态绑定)\n"
713
+ " left = m.group(1).strip()\n"
714
+ " right = m.group(2).strip()\n"
715
+ " if right.replace('.', '', 1).isdigit():\n"
716
+ " code.append(('PUSH', float(right) if '.' in right else int(right)))\n"
717
+ " else:\n"
718
+ " code.append(('LOAD', right))\n"
719
+ " code.append(('STORE', left))\n"
720
+ " continue\n"
721
+ " for kw in ('道', '德', '止', '知足', '自然', '无为'):\n"
722
+ " if line.startswith(kw):\n"
723
+ " rest = line[len(kw):].strip().rstrip('。;;')\n"
724
+ " arg = None\n"
725
+ " if rest:\n"
726
+ " arg = float(rest) if rest.replace('.', '', 1).isdigit() else rest\n"
727
+ " if kw == '知足':\n"
728
+ " # 知足:信任达标跳转(达标→跳程序末尾=满足;目标末尾回填)\n"
729
+ " code.append(('ZHIZU', (float(rest), 0)))\n"
730
+ " pending_zhizu.append(len(code) - 1)\n"
731
+ " else:\n"
732
+ " code.append((instr_map[kw], arg))\n"
733
+ " break\n"
734
+ " else:\n"
735
+ " errors.append('无法识别:' + line)\n"
736
+ " for i in pending_zhizu:\n"
737
+ " code[i] = ('ZHIZU', (code[i][1][0], len(code)))\n"
738
+ " if errors:\n"
739
+ " return None, {'ok': False, 'errors': errors}\n"
740
+ " return code, {'ok': True}\n"),
741
+ "cases": [(("道 新信任路径\n德 0.3\n止。\n", {"伴侣"}),
742
+ ([("DAO", "新信任路径"), ("DE", 0.3), ("ZHI", None)], {"ok": True})),
743
+ (("若 条件空间为未知 则 德 0.5\n止。\n", {"伴侣"}),
744
+ (None, {"ok": False, "errors": ["条件空间未声明:未知"]})),
745
+ (("若 信任值 大于 0.3,则 德 0.5\n止。\n", {"伴侣"}),
746
+ ([("LOAD", "信任值"), ("PUSH", 0.3), ("CMP_GT", None),
747
+ ("JUMP_IF_FALSE", 5), ("DE", 0.5), ("ZHI", None)], {"ok": True})),
748
+ (("甲 = 3\n止。\n", set()),
749
+ ([("PUSH", 3), ("STORE", "甲"), ("ZHI", None)], {"ok": True})),
750
+ (("甲 = 3\n若 甲 大于 2,则 德 0.5\n止。\n", {"伴侣"}),
751
+ ([("PUSH", 3), ("STORE", "甲"), ("LOAD", "甲"), ("PUSH", 2.0),
752
+ ("CMP_GT", None), ("JUMP_IF_FALSE", 7), ("DE", 0.5),
753
+ ("ZHI", None)], {"ok": True})),
754
+ (("德 0.3\n知足 0.7\n德 0.5\n止。\n", set()),
755
+ ([("DE", 0.3), ("ZHIZU", (0.7, 4)), ("DE", 0.5),
756
+ ("ZHI", None)], {"ok": True})),
757
+ (("随便文本\n", set()), (None, {"ok": False,
758
+ "errors": ["无法识别:随便文本"]}))],
759
+ "params": [],
760
+ "calibration": "对照:白箱版 pc compile 单入口(词法→静态检查→编译);若则真值计算由编译-若则单元深化",
761
+ },
762
+ "求值-条件表达式": {
763
+ "task": "条件求值",
764
+ "pattern": (
765
+ "def eval_condition(cond_text, symbols):\n"
766
+ " # 生效条件:right_s.strip 可用;left_s.strip 可用\n"
767
+ " # 子功能:① 调用 float\n"
768
+ " # 执行:循环迭代;顺序调用\n"
769
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
770
+ " # 中文条件表达式求值:左值 比较词 右值(比较词:大于/小于/等于/不等于/不小于/不大于)\n"
771
+ " ops = {'不小于': '>=', '不大于': '<=', '大于': '>', '小于': '<',\n"
772
+ " '等于': '==', '不等于': '!='}\n"
773
+ " for kw, op in ops.items():\n"
774
+ " if kw in cond_text:\n"
775
+ " left_s, right_s = cond_text.split(kw)\n"
776
+ " left = symbols.get(left_s.strip())\n"
777
+ " right_s = right_s.strip()\n"
778
+ " right = (float(right_s) if right_s.replace('.', '', 1).isdigit()\n"
779
+ " else symbols.get(right_s))\n"
780
+ " if left is None or right is None:\n"
781
+ " return None # 诚实:符号未定义\n"
782
+ " return {'>': left > right, '<': left < right, '==': left == right,\n"
783
+ " '!=': left != right, '>=': left >= right,\n"
784
+ " '<=': left <= right}[op]\n"
785
+ " return None\n"),
786
+ "cases": [(("信任值 大于 0.3", {"信任值": 0.5}), True),
787
+ (("信任值 大于 0.3", {"信任值": 0.2}), False),
788
+ (("信任值 不小于 0.7", {"信任值": 0.7}), True),
789
+ (("信任值 等于 0.5", {"信任值": 0.5}), True),
790
+ (("未知量 大于 0.3", {"信任值": 0.5}), None)],
791
+ "params": [],
792
+ "calibration": "对照:中文比较词(CHINESE_COMP_MAP:等于/大于/小于/不等于/不小于/不大于);未定义符号诚实返回 None",
793
+ },
794
+ "对接-协议词法": {
795
+ "task": "协议词法对接",
796
+ "pattern": (
797
+ "def bridge_token(token_name):\n"
798
+ " # 生效条件:参数 token_name 合法\n"
799
+ " # 子功能:① 主体逻辑执行\n"
800
+ " # 执行:顺序执行\n"
801
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
802
+ " # protocol-compiler TokenType → 白箱指令名(真实词法对接校准基准)\n"
803
+ " m = {'DAO': 'DAO', 'DE': 'DE', 'ZIRAN': 'ZIRAN', 'WUWEI': 'WUWEI',\n"
804
+ " 'ZHI': 'ZHI', 'ZHIZU': 'ZHIZU', 'RUO': 'COND_START',\n"
805
+ " 'ZE': 'COND_THEN', 'FOUZE': 'COND_ELSE',\n"
806
+ " 'WENYUE': 'STRUCT_问曰', 'DAYUE': 'STRUCT_答曰',\n"
807
+ " 'SHUYUE': 'STRUCT_术曰'}\n"
808
+ " return m.get(token_name)\n"),
809
+ "cases": [("DAO", "DAO"), ("DE", "DE"), ("ZHI", "ZHI"),
810
+ ("RUO", "COND_START"), ("SHUYUE", "STRUCT_术曰"),
811
+ ("UNKNOWN", None)],
812
+ "params": [],
813
+ "calibration": "对照:protocol-compiler TokenType 枚举(道德经助记符/若则/九章算术)",
814
+ },
815
+ "字节码-序列化": {
816
+ "task": "字节码序列化",
817
+ "pattern": (
818
+ "def serialize(code):\n"
819
+ " # 字节码序列化(.pbc 编码):指令列表 → .pbc 字节串(原生编译产物:op字符串+arg编码)\n"
820
+ " # 生效条件:code 为 (op, arg) 指令列表;arg 为 int/str/None\n"
821
+ " # 子功能:① op 定长前缀编码 ② arg 类型分派编码 ③ 拼装字节串\n"
822
+ " # 执行:struct.pack 前缀长度 + utf-8 op + arg 按类型编码\n"
823
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
824
+ " import struct\n"
825
+ " out = bytearray()\n"
826
+ " for op, arg in code:\n"
827
+ " b = op.encode('utf-8')\n"
828
+ " out.extend(struct.pack('H', len(b))); out.extend(b)\n"
829
+ " if arg is None:\n"
830
+ " out.append(0)\n"
831
+ " elif isinstance(arg, bool):\n"
832
+ " out.append(1); out.append(1 if arg else 0)\n"
833
+ " elif isinstance(arg, int):\n"
834
+ " out.append(2); out.extend(struct.pack('q', arg))\n"
835
+ " elif isinstance(arg, float):\n"
836
+ " out.append(3); out.extend(struct.pack('d', arg))\n"
837
+ " elif isinstance(arg, str):\n"
838
+ " s = arg.encode('utf-8')\n"
839
+ " out.append(4); out.extend(struct.pack('H', len(s))); out.extend(s)\n"
840
+ " elif isinstance(arg, tuple):\n"
841
+ " out.append(5); out.extend(struct.pack('d', arg[0]))\n"
842
+ " out.extend(struct.pack('q', arg[1]))\n"
843
+ " else:\n"
844
+ " raise ValueError('无法序列化参数 ' + repr(arg))\n"
845
+ " return bytes(out)\n"),
846
+ "cases": [(([("DE", 0.3), ("ZHI", None)],),
847
+ b'\x02\x00DE\x03333333\xd3?\x03\x00ZHI\x00')],
848
+ "params": [],
849
+ "calibration": "对照:C3 原生编译——字节码文件格式(op字符串+arg类型标记编码)",
850
+ },
851
+ "字节码-反序列化": {
852
+ "task": "字节码反序列化",
853
+ "pattern": (
854
+ "def deserialize(data):\n"
855
+ " # 生效条件:struct.unpack_from 可用\n"
856
+ " # 子功能:① 调用 len;② 调用 ValueError;③ 调用 str\n"
857
+ " # 执行:循环迭代;顺序调用\n"
858
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
859
+ " # .pbc 字节串 → 指令列表(原生编译加载)\n"
860
+ " import struct\n"
861
+ " code, i = [], 0\n"
862
+ " while i < len(data):\n"
863
+ " n = struct.unpack_from('H', data, i)[0]; i += 2\n"
864
+ " op = data[i:i + n].decode('utf-8'); i += n\n"
865
+ " tag = data[i]; i += 1\n"
866
+ " if tag == 0:\n"
867
+ " arg = None\n"
868
+ " elif tag == 1:\n"
869
+ " arg = data[i] == 1; i += 1\n"
870
+ " elif tag == 2:\n"
871
+ " arg = struct.unpack_from('q', data, i)[0]; i += 8\n"
872
+ " elif tag == 3:\n"
873
+ " arg = struct.unpack_from('d', data, i)[0]; i += 8\n"
874
+ " elif tag == 4:\n"
875
+ " m = struct.unpack_from('H', data, i)[0]; i += 2\n"
876
+ " arg = data[i:i + m].decode('utf-8'); i += m\n"
877
+ " elif tag == 5:\n"
878
+ " t = struct.unpack_from('d', data, i)[0]\n"
879
+ " a = struct.unpack_from('q', data, i + 8)[0]\n"
880
+ " arg = (t, a); i += 16\n"
881
+ " else:\n"
882
+ " raise ValueError('未知标签 ' + str(tag))\n"
883
+ " code.append((op, arg))\n"
884
+ " return code\n"),
885
+ "cases": [((b"",), []),
886
+ ((bytes([0x03, 0x00]) + b"ZHI" + bytes([0x00])), [("ZHI", None)])],
887
+ "params": [],
888
+ "calibration": "对照:C3 原生编译——.pbc 加载(与序列化对称,往返一致性由校准⑫验证)",
889
+ },
890
+ "调试-单步": {
891
+ "task": "VM单步",
892
+ "pattern": (
893
+ "def step_exec(code, ip, stack=None, symbols=None, trust=0.0, cond=None):\n"
894
+ " # VM 单步(调试器单步):执行一条指令 → (next_ip, 新状态);止/无为返回 halt;越界返回 None\n"
895
+ " # 生效条件:code 为指令列表;ip 为当前指令指针\n"
896
+ " # 子功能:① 取当前指令 ② 分派执行 ③ 返回下一状态\n"
897
+ " # 执行:按 op 分派,止/无为→halt,越界→None\n"
898
+ " # 不适用条件:op 非 {DAO, DE, LOAD, PUSH, STORE, WUWEI, ZHI, ZHIZU, ZIRAN} 时\n"
899
+ " if ip >= len(code):\n"
900
+ " return None\n"
901
+ " op, arg = code[ip]\n"
902
+ " stack = list(stack or [])\n"
903
+ " symbols = dict(symbols or {})\n"
904
+ " cond = list(cond or [])\n"
905
+ " ip += 1\n"
906
+ " if op == 'PUSH':\n"
907
+ " stack.append(arg)\n"
908
+ " elif op == 'STORE':\n"
909
+ " symbols[arg] = stack.pop()\n"
910
+ " elif op == 'LOAD':\n"
911
+ " if arg not in symbols:\n"
912
+ " return None\n"
913
+ " stack.append(symbols[arg])\n"
914
+ " elif op == 'DE':\n"
915
+ " trust = round(trust + arg, 3)\n"
916
+ " elif op == 'DAO':\n"
917
+ " cond.append({'name': arg})\n"
918
+ " elif op == 'ZIRAN':\n"
919
+ " while len(cond) > 1:\n"
920
+ " cond.pop()\n"
921
+ " elif op == 'ZHIZU':\n"
922
+ " if trust >= arg[0]:\n"
923
+ " ip = arg[1]\n"
924
+ " elif op == 'ZHI':\n"
925
+ " return ('halt', {'trust': trust, 'symbols': symbols, 'cond': cond,\n"
926
+ " 'stack': stack})\n"
927
+ " elif op == 'WUWEI':\n"
928
+ " return ('yield', {'trust': trust, 'symbols': symbols, 'cond': cond,\n"
929
+ " 'stack': stack})\n"
930
+ " return (ip, {'trust': trust, 'symbols': symbols, 'cond': cond,\n"
931
+ " 'stack': stack})\n"),
932
+ "cases": [(([("DE", 0.3), ("DE", 0.5)], 0),
933
+ (1, {"trust": 0.3, "symbols": {}, "cond": [], "stack": []})),
934
+ (([("DAO", "路径甲")], 0),
935
+ (1, {"trust": 0.0, "symbols": {}, "cond": [{"name": "路径甲"}],
936
+ "stack": []})),
937
+ (([("ZHI", None)], 0),
938
+ ("halt", {"trust": 0.0, "symbols": {}, "cond": [], "stack": []}))],
939
+ "params": [],
940
+ "calibration": "对照:C4 调试器单步(一条指令 → 新状态;止/无为=控制流信号)",
941
+ },
942
+ "分析-字节码转储": {
943
+ "task": "字节码转储",
944
+ "pattern": (
945
+ "def dump_bytecode(code):\n"
946
+ " # 字节码转储(可读转储):字节码 → 可读指令列表(地址+指令+参数——分析器输出)\n"
947
+ " # 生效条件:code 为指令列表(op, arg)\n"
948
+ " # 子功能:① 逐指令编号 ② 格式化指令行\n"
949
+ " # 执行:enumerate 生成 (地址, op, arg) 行\n"
950
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
951
+ " return [f'{i:4d} {op:14s} {arg}' for i, (op, arg) in enumerate(code)]\n"),
952
+ "cases": [(([("DE", 0.3), ("ZHI", None)],),
953
+ [' 0 DE 0.3', ' 1 ZHI None'])],
954
+ "params": [],
955
+ "calibration": "对照:C4 分析器字节码转储(可读调试输出)",
956
+ },
957
+ "词法-注释剥离": {
958
+ "task": "注释剥离",
959
+ "pattern": (
960
+ "def strip_comments(src):\n"
961
+ " # 生效条件:src.splitlines 可用;line.find 可用\n"
962
+ " # 子功能:① 条件判定 ② 结果处理\n"
963
+ " # 执行:循环迭代\n"
964
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
965
+ " # 注释剥离:# 行注释 / 井号中文注释(词法预处理)\n"
966
+ " lines = []\n"
967
+ " for line in src.splitlines():\n"
968
+ " idx = line.find('#')\n"
969
+ " lines.append(line[:idx] if idx >= 0 else line)\n"
970
+ " return '\\n'.join(lines)\n"),
971
+ "cases": [("a = 1 # 赋值", 'a = 1 '),
972
+ ("# 注释\nb = 2", '\nb = 2'),
973
+ ("无注释", '无注释')],
974
+ "params": [],
975
+ "calibration": "对照:词法预处理——注释剥离(# 行注释,中文注释同语义)",
976
+ },
977
+ "编译-逻辑表达式": {
978
+ "task": "逻辑表达式",
979
+ "pattern": (
980
+ "def compile_logic(left_instrs, op, right_instrs):\n"
981
+ " # 逻辑表达式编译(短路编译):且/或 → 短路跳转字节码(AND/OR 语义)\n"
982
+ " # 生效条件:op ∈ {且, 或};left/right 为指令列表\n"
983
+ " # 子功能:① 拼接左指令 ② 短路跳转 ③ 拼接右指令\n"
984
+ " # 执行:且→JUMP_IF_FALSE、或→JUMP_IF_TRUE(左短路)\n"
985
+ " # 不适用条件:op 非 {且} 时\n"
986
+ " code = list(left_instrs)\n"
987
+ " if op == '且':\n"
988
+ " code.append(('JUMP_IF_FALSE', 0)) # 左假短路\n"
989
+ " code.extend(right_instrs)\n"
990
+ " else: # 或\n"
991
+ " code.append(('JUMP_IF_TRUE', 0)) # 左真短路\n"
992
+ " code.extend(right_instrs)\n"
993
+ " return code\n"),
994
+ "cases": [(([("LOAD", "a")], '且', [("LOAD", "b")]),
995
+ [("LOAD", "a"), ("JUMP_IF_FALSE", 0), ("LOAD", "b")]),
996
+ (([("LOAD", "a")], '或', [("LOAD", "b")]),
997
+ [("LOAD", "a"), ("JUMP_IF_TRUE", 0), ("LOAD", "b")])],
998
+ "params": [],
999
+ "calibration": "对照:编译逻辑——且/或短路(左操作数决定是否求右——短路求值语义)",
1000
+ },
1001
+ "编译-链式比较": {
1002
+ "task": "链式比较",
1003
+ "pattern": (
1004
+ "def compile_chain(cmp1, cmp2):\n"
1005
+ " # 生效条件:参数 cmp1/cmp2 合法\n"
1006
+ " # 子功能:① 调用 list\n"
1007
+ " # 执行:顺序调用\n"
1008
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1009
+ " # 链式比较:a < b < c → 比较1 且 比较2(AND 组合)\n"
1010
+ " code = list(cmp1)\n"
1011
+ " code.append(('JUMP_IF_FALSE', 0)) # 第一比较假 → 短路\n"
1012
+ " code.extend(cmp2)\n"
1013
+ " return code\n"),
1014
+ "cases": [(([("LOAD", "a"), ("LOAD", "b"), ("CMP_LT", None)],
1015
+ [("LOAD", "b"), ("LOAD", "c"), ("CMP_LT", None)]),
1016
+ [("LOAD", "a"), ("LOAD", "b"), ("CMP_LT", None),
1017
+ ("JUMP_IF_FALSE", 0),
1018
+ ("LOAD", "b"), ("LOAD", "c"), ("CMP_LT", None)])],
1019
+ "params": [],
1020
+ "calibration": "对照:编译链式比较——a<b<c = (a<b) 且 (b<c)(短路组合,Python 链式语义)",
1021
+ },
1022
+ "编译-常量折叠": {
1023
+ "task": "常量折叠",
1024
+ "pattern": (
1025
+ "def fold_constants(instrs):\n"
1026
+ " # 生效条件:参数 instrs 合法\n"
1027
+ " # 子功能:① 调用 len\n"
1028
+ " # 执行:循环迭代;顺序调用\n"
1029
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1030
+ " # 常量折叠:PUSH 常量 + 算术 → 立即结果(编译期求值优化)\n"
1031
+ " out, i = [], 0\n"
1032
+ " while i < len(instrs):\n"
1033
+ " if (i + 2 < len(instrs) and instrs[i][0] == 'PUSH'\n"
1034
+ " and instrs[i + 1][0] == 'PUSH'\n"
1035
+ " and instrs[i + 2][0] in ('ADD', 'SUB', 'MUL', 'DIV')):\n"
1036
+ " a, b = instrs[i][1], instrs[i + 1][1]\n"
1037
+ " op = instrs[i + 2][0]\n"
1038
+ " val = {'ADD': a + b, 'SUB': a - b, 'MUL': a * b,\n"
1039
+ " 'DIV': a / b}[op]\n"
1040
+ " out.append(('PUSH', val))\n"
1041
+ " i += 3\n"
1042
+ " else:\n"
1043
+ " out.append(instrs[i])\n"
1044
+ " i += 1\n"
1045
+ " return out\n"),
1046
+ "cases": [(([("PUSH", 1), ("PUSH", 2), ("ADD", None), ("LOAD", "x")],),
1047
+ [("PUSH", 3), ("LOAD", "x")]),
1048
+ (([("PUSH", 10), ("PUSH", 4), ("MUL", None)],),
1049
+ [("PUSH", 40)])],
1050
+ "params": [],
1051
+ "calibration": "对照:编译优化——常量折叠(PUSH+PUSH+算术 → PUSH 结果,编译期求值)",
1052
+ },
1053
+ "编译-死代码消除": {
1054
+ "task": "死代码消除",
1055
+ "pattern": (
1056
+ "def dead_code_elim(code):\n"
1057
+ " # 生效条件:op ∈ {JUMP}\n"
1058
+ " # 子功能:① op 分支处理\n"
1059
+ " # 执行:按 op 分派;循环迭代\n"
1060
+ " # 不适用条件:op 非 {JUMP} 时\n"
1061
+ " # 死代码消除:不可达指令(无条件 JUMP 之后)删除\n"
1062
+ " live = []\n"
1063
+ " reachable = True\n"
1064
+ " for op, arg in code:\n"
1065
+ " if op == 'JUMP':\n"
1066
+ " live.append((op, arg))\n"
1067
+ " reachable = False\n"
1068
+ " elif reachable:\n"
1069
+ " live.append((op, arg))\n"
1070
+ " return live\n"),
1071
+ "cases": [(([("DE", 0.5), ("JUMP", 5), ("DE", 0.9), ("ZHI", None)],),
1072
+ [("DE", 0.5), ("JUMP", 5)]),
1073
+ (([("DE", 0.1)],), [("DE", 0.1)])],
1074
+ "params": [],
1075
+ "calibration": "对照:编译优化——死代码消除(JUMP 后不可达指令删除)",
1076
+ },
1077
+ "编译-寄存器分配": {
1078
+ "task": "寄存器分配",
1079
+ "pattern": (
1080
+ "def reg_alloc(vars_used):\n"
1081
+ " # 生效条件:参数 vars_used 合法\n"
1082
+ " # 子功能:① 调用 len;② 调用 str\n"
1083
+ " # 执行:循环迭代;顺序调用\n"
1084
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1085
+ " # 寄存器分配:变量 → 寄存器(无冲突复用,溢出计数)\n"
1086
+ " regs = {}\n"
1087
+ " spills = 0\n"
1088
+ " for v in vars_used:\n"
1089
+ " if v not in regs:\n"
1090
+ " if len(regs) < 4:\n"
1091
+ " regs[v] = 'R' + str(len(regs))\n"
1092
+ " else:\n"
1093
+ " spills += 1\n"
1094
+ " regs[v] = 'mem'\n"
1095
+ " return regs, spills\n"),
1096
+ "cases": [((['a', 'b', 'c', 'd', 'e'],), ({'a': 'R0', 'b': 'R1',
1097
+ 'c': 'R2', 'd': 'R3',
1098
+ 'e': 'mem'}, 1)),
1099
+ (([],), ({}, 0))],
1100
+ "params": [],
1101
+ "calibration": "对照:编译优化——寄存器分配(4 寄存器,溢出到内存)",
1102
+ },
1103
+ "编译-闭包捕获分析": {
1104
+ "task": "闭包捕获分析",
1105
+ "pattern": (
1106
+ "def analyze_free_vars(func_refs, params, outer_vars):\n"
1107
+ " # 生效条件:参数 func_refs/params/outer_vars 合法\n"
1108
+ " # 子功能:① 主体逻辑执行\n"
1109
+ " # 执行:顺序执行\n"
1110
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1111
+ " # 闭包捕获分析:函数体引用 且 非参数 且 外层可见 = 自由变量\n"
1112
+ " # (词法作用域:内层函数用到的外层名字 → 需捕获为 cell;保持源码引用顺序)\n"
1113
+ " return [r for r in func_refs\n"
1114
+ " if r not in params and r in outer_vars]\n"),
1115
+ "cases": [((['甲', '乙', '丙'], ['甲'], ['甲', '乙']), ['乙']),
1116
+ ((['甲'], [], []), []),
1117
+ ((['甲', '乙'], ['丙'], ['甲', '乙']), ['甲', '乙'])],
1118
+ "params": [],
1119
+ "calibration": "对照:闭包自由变量分析——引用∩外层-参数(CPython cell 捕获语义·词法作用域)",
1120
+ },
1121
+ "VM-闭包创建": {
1122
+ "task": "闭包创建",
1123
+ "pattern": (
1124
+ "def make_closure(func_body, free_names, captured_values):\n"
1125
+ " # 生效条件:参数 func_body/free_names/captured_values 合法\n"
1126
+ " # 子功能:① 调用 list\n"
1127
+ " # 执行:顺序调用\n"
1128
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1129
+ " # 闭包创建:函数体 + 捕获映射(自由变量→当前值)→ 闭包对象\n"
1130
+ " # (知 + 所见环境;未捕获到的名字不入环境)\n"
1131
+ " return {'body': list(func_body),\n"
1132
+ " 'env': {n: captured_values[n] for n in free_names\n"
1133
+ " if n in captured_values}}\n"),
1134
+ "cases": [(([("LOAD", "甲"), ("DE", None)], ["甲"], {"甲": 3}),
1135
+ {"body": [("LOAD", "甲"), ("DE", None)], "env": {"甲": 3}}),
1136
+ (([], ["甲"], {}), {"body": [], "env": {}}),
1137
+ (([("DE", 0.5)], ["甲", "乙"], {"乙": 7}),
1138
+ {"body": [("DE", 0.5)], "env": {"乙": 7}})],
1139
+ "params": [],
1140
+ "calibration": "对照:闭包对象=函数体+捕获环境(MAKE_CLOSURE 指令语义;未捕获名字不入环境)",
1141
+ },
1142
+ "VM-闭包调用": {
1143
+ "task": "闭包调用",
1144
+ "pattern": (
1145
+ "def call_closure(closure, params, args):\n"
1146
+ " # 生效条件:参数 closure/params/args 合法\n"
1147
+ " # 子功能:① 调用 dict;② 调用 zip\n"
1148
+ " # 执行:循环迭代;顺序调用\n"
1149
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1150
+ " # 闭包调用:捕获环境 + 参数绑定 → 执行环境\n"
1151
+ " # (词法父作用域可见 + 当前参数;参数遮蔽捕获变量)\n"
1152
+ " env = dict(closure['env'])\n"
1153
+ " for p, a in zip(params, args):\n"
1154
+ " env[p] = a\n"
1155
+ " return env\n"),
1156
+ "cases": [(({"body": [("DE", 0.5)], "env": {"甲": 3}}, ["乙"], [7]),
1157
+ {"甲": 3, "乙": 7}),
1158
+ (({"body": [], "env": {}}, [], []), {}),
1159
+ (({"body": [], "env": {"甲": 3}}, ["甲"], [9]), {"甲": 9})],
1160
+ "params": [],
1161
+ "calibration": "对照:闭包调用——词法父环境 + 参数遮蔽(CPython 闭包调用语义)",
1162
+ },
1163
+ "调试-断点": {
1164
+ "task": "断点",
1165
+ "pattern": (
1166
+ "def breakpoint_hit(breaks, ip, enable=None):\n"
1167
+ " # 生效条件:breaks.discard 可用\n"
1168
+ " # 子功能:① 条件判定 ② 结果处理\n"
1169
+ " # 执行:顺序执行\n"
1170
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1171
+ " # 断点:enable=True 登记 / False 清除 / None 查询命中(调试器暂停点)\n"
1172
+ " if enable is True:\n"
1173
+ " breaks.add(ip)\n"
1174
+ " return 'set'\n"
1175
+ " if enable is False:\n"
1176
+ " breaks.discard(ip)\n"
1177
+ " return 'cleared'\n"
1178
+ " return ip in breaks\n"),
1179
+ "cases": [((set(), 5, True), 'set'),
1180
+ (({5}, 5, None), True),
1181
+ (({5}, 6, None), False),
1182
+ (({5}, 5, False), 'cleared'),
1183
+ ((set(), 5, None), False)],
1184
+ "params": [],
1185
+ "calibration": "对照:C4 调试器断点(登记/清除/命中判定——调试器暂停点)",
1186
+ },
1187
+ "调试-调用栈回溯": {
1188
+ "task": "调用栈回溯",
1189
+ "pattern": (
1190
+ "def traceback_chain(call_stack, error_frame):\n"
1191
+ " # 生效条件:参数 call_stack/error_frame 合法\n"
1192
+ " # 子功能:① 调用 reversed\n"
1193
+ " # 执行:顺序调用\n"
1194
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1195
+ " # 调用栈回溯:出错帧 + 调用链(最新→最旧)——调试器栈回溯语义\n"
1196
+ " chain = [error_frame]\n"
1197
+ " chain.extend(reversed(call_stack))\n"
1198
+ " return chain\n"),
1199
+ "cases": [(([], "f3"), ["f3"]),
1200
+ ((["main", "f1", "f2"], "f3"), ["f3", "f2", "f1", "main"]),
1201
+ ((["main"], "f1"), ["f1", "main"])],
1202
+ "params": [],
1203
+ "calibration": "对照:CPython traceback(异常处最内层,逐层向外到入口)",
1204
+ },
1205
+ "调试-变量监视": {
1206
+ "task": "变量监视",
1207
+ "pattern": (
1208
+ "def watch_eval(expr, symbols):\n"
1209
+ " # 生效条件:参数 expr/symbols 合法\n"
1210
+ " # 子功能:① 主体逻辑执行\n"
1211
+ " # 执行:顺序执行\n"
1212
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1213
+ " # 变量监视:监视名在符号表求值(未知名 → None)——调试器监视窗\n"
1214
+ " return symbols.get(expr)\n"),
1215
+ "cases": [((("甲", {"甲": 3}), 3)),
1216
+ ((("乙", {"甲": 3}), None)),
1217
+ ((("甲", {}), None))],
1218
+ "params": [],
1219
+ "calibration": "对照:C4 调试器变量监视(watch 名 → 当前值,未知为 None)",
1220
+ },
1221
+ "编译-内联展开": {
1222
+ "task": "内联展开",
1223
+ "pattern": (
1224
+ "def inline_small(funcs, name, call_site):\n"
1225
+ " # 生效条件:参数 funcs/name/call_site 合法\n"
1226
+ " # 子功能:① 调用 list;② 调用 len\n"
1227
+ " # 执行:顺序调用\n"
1228
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1229
+ " # 内联展开:小函数(指令数 ≤ 3)调用处直接展开(减少调用开销)\n"
1230
+ " body = funcs.get(name)\n"
1231
+ " if body is None or len(body) > 3:\n"
1232
+ " return call_site\n"
1233
+ " return list(body)\n"),
1234
+ "cases": [(({'f': [("DE", 0.1)]}, 'f', ('CALL', 'f')), [("DE", 0.1)]),
1235
+ (({'f': [("DE", 0.1), ("DE", 0.2), ("DE", 0.3),
1236
+ ("DE", 0.4)]}, 'f', ('CALL', 'f')), ('CALL', 'f')),
1237
+ (({}, 'f', ('CALL', 'f')), ('CALL', 'f'))],
1238
+ "params": [],
1239
+ "calibration": "对照:编译优化——内联展开(小函数体复制到调用处,减少调用开销)",
1240
+ },
1241
+ "编译-循环展开": {
1242
+ "task": "循环展开",
1243
+ "pattern": (
1244
+ "def loop_unroll(body, times, max_unroll=3):\n"
1245
+ " # 生效条件:参数 body/times/max_unroll 合法\n"
1246
+ " # 子功能:① 调用 list\n"
1247
+ " # 执行:顺序调用\n"
1248
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1249
+ " # 循环展开:循环体复制 times 次(减少回跳,阈值上限防代码膨胀)\n"
1250
+ " if times > max_unroll or times <= 0:\n"
1251
+ " return list(body)\n"
1252
+ " return list(body) * times\n"),
1253
+ "cases": [(([("DE", 0.1)], 3), [("DE", 0.1), ("DE", 0.1), ("DE", 0.1)]),
1254
+ (([("DE", 0.1)], 4), [("DE", 0.1)]),
1255
+ (([("DE", 0.1)], 0), [("DE", 0.1)]),
1256
+ (([], 2), [])],
1257
+ "params": [],
1258
+ "calibration": "对照:编译优化——循环展开(固定次数体复制,上限防膨胀)",
1259
+ },
1260
+ "编译-尾调用优化": {
1261
+ "task": "尾调用优化",
1262
+ "pattern": (
1263
+ "def tail_call_opt(body):\n"
1264
+ " # 生效条件:参数 body 合法\n"
1265
+ " # 子功能:① 调用 list\n"
1266
+ " # 执行:顺序调用\n"
1267
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1268
+ " # 尾调用优化:末尾调用指令 → 跳转指令(尾递归转循环,栈安全)\n"
1269
+ " if body and body[-1][0] == 'CALL':\n"
1270
+ " return list(body[:-1]) + [('JUMP', body[-1][1])]\n"
1271
+ " return list(body)\n"),
1272
+ "cases": [(([("DE", 0.1), ("CALL", 'f')],),
1273
+ [("DE", 0.1), ("JUMP", 'f')]),
1274
+ (([("DE", 0.1)],), [("DE", 0.1)]),
1275
+ (([],), [])],
1276
+ "params": [],
1277
+ "calibration": "对照:编译优化——尾调用优化(CALL→JUMP,尾递归不增栈帧)",
1278
+ },
1279
+ "字节码-文件头校验": {
1280
+ "task": "文件头校验",
1281
+ "pattern": (
1282
+ "def pbc_header_check(header, version):\n"
1283
+ " # 生效条件:参数 header/version 合法\n"
1284
+ " # 子功能:① 条件判定 ② 结果处理\n"
1285
+ " # 执行:顺序执行\n"
1286
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1287
+ " # .pbc 文件头:魔数 + 版本兼容(C3 原生编译文件格式)\n"
1288
+ " if header.get('magic') != 'PBC1':\n"
1289
+ " return 'bad_magic'\n"
1290
+ " if header.get('version') != version:\n"
1291
+ " return 'version_mismatch'\n"
1292
+ " return 'ok'\n"),
1293
+ "cases": [(({'magic': 'PBC1', 'version': 1}, 1), 'ok'),
1294
+ (({'magic': 'X', 'version': 1}, 1), 'bad_magic'),
1295
+ (({'magic': 'PBC1', 'version': 2}, 1), 'version_mismatch')],
1296
+ "params": [],
1297
+ "calibration": "对照:C3 .pbc 文件头——魔数+版本兼容(原生编译格式校验)",
1298
+ },
1299
+ "字节码-完整性校验": {
1300
+ "task": "完整性校验",
1301
+ "pattern": (
1302
+ "def pbc_checksum(data, expected):\n"
1303
+ " # 生效条件:参数 data/expected 合法\n"
1304
+ " # 子功能:① 条件判定 ② 结果处理\n"
1305
+ " # 执行:循环迭代\n"
1306
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1307
+ " # .pbc 完整性:异或校验和验证(检测字节损坏)\n"
1308
+ " calc = 0\n"
1309
+ " for b in data:\n"
1310
+ " calc ^= b\n"
1311
+ " return 'ok' if calc == expected else 'corrupted'\n"),
1312
+ "cases": [((b'\x01\x02\x03', 0), 'ok'),
1313
+ ((b'\x01\x02\x04', 0), 'corrupted'),
1314
+ ((b'', 0), 'ok')],
1315
+ "params": [],
1316
+ "calibration": "对照:C3 .pbc 完整性——异或校验和(损坏检测)",
1317
+ },
1318
+ "字节码-紧凑编码": {
1319
+ "task": "紧凑编码",
1320
+ "pattern": (
1321
+ "def varint_codec(n_or_bytes, mode):\n"
1322
+ " # 生效条件:mode ∈ {decode, encode}\n"
1323
+ " # 子功能:1 mode 分支处理\n"
1324
+ " # 执行:按 op 分派;循环迭代;顺序调用\n"
1325
+ " # 不适用条件:b 越界(Lt)时;mode 非 {decode, encode} 时\n"
1326
+ " # 紧凑编码:encode 变长整数 / decode 还原(7 位一组,小整数省字节)\n"
1327
+ " if mode == 'encode':\n"
1328
+ " out = []\n"
1329
+ " n = n_or_bytes\n"
1330
+ " while n >= 128:\n"
1331
+ " out.append((n & 127) | 128)\n"
1332
+ " n >>= 7\n"
1333
+ " out.append(n)\n"
1334
+ " return bytes(out)\n"
1335
+ " if mode == 'decode':\n"
1336
+ " n, shift = 0, 0\n"
1337
+ " for b in n_or_bytes:\n"
1338
+ " n |= (b & 127) << shift\n"
1339
+ " if b < 128:\n"
1340
+ " return n\n"
1341
+ " shift += 7\n"
1342
+ " return n\n"
1343
+ " return None\n"),
1344
+ "cases": [((5, 'encode'), b'\x05'),
1345
+ ((300, 'encode'), b'\xac\x02'),
1346
+ ((b'\xac\x02', 'decode'), 300),
1347
+ ((b'\x05', 'decode'), 5)],
1348
+ "params": [],
1349
+ "calibration": "对照:C3 .pbc 体积优化——varint 变长整数(小整数 1 字节)",
1350
+ },
1351
+ "分析-圈复杂度": {
1352
+ "task": "圈复杂度",
1353
+ "pattern": (
1354
+ "def cyclomatic_complexity(code):\n"
1355
+ " # 生效条件:参数 code 合法\n"
1356
+ " # 子功能:① 条件判定 ② 结果处理\n"
1357
+ " # 执行:循环迭代\n"
1358
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1359
+ " # 圈复杂度:判定节点数 + 1(if/while 分支——代码复杂度度量)\n"
1360
+ " decisions = 0\n"
1361
+ " for op, _ in code:\n"
1362
+ " if op in ('JUMP_IF_FALSE', 'JUMP_IF_TRUE', 'CMP_LT', 'CMP_GT'):\n"
1363
+ " decisions += 1\n"
1364
+ " return decisions + 1\n"),
1365
+ "cases": [(([("DE", 0.1)],), 1),
1366
+ (([("JUMP_IF_FALSE", 3), ("DE", 0.1)],), 2),
1367
+ (([],), 1),
1368
+ (([("JUMP_IF_FALSE", 1), ("JUMP_IF_FALSE", 2),
1369
+ ("DE", 0.1)],), 3)],
1370
+ "params": [],
1371
+ "calibration": "对照:圈复杂度——判定节点+1(代码复杂度度量,McCabe)",
1372
+ },
1373
+ "分析-活跃变量": {
1374
+ "task": "活跃变量",
1375
+ "pattern": (
1376
+ "def dead_var_detect(defs, uses):\n"
1377
+ " # 生效条件:参数 defs/uses 合法\n"
1378
+ " # 子功能:① 调用 any\n"
1379
+ " # 执行:循环迭代;顺序调用\n"
1380
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1381
+ " # 活跃变量:定义后未被使用 → 死变量(死代码消除依据)\n"
1382
+ " dead = []\n"
1383
+ " for var, def_line in defs:\n"
1384
+ " if not any(u == var and u_line > def_line for u, u_line in uses):\n"
1385
+ " dead.append(var)\n"
1386
+ " return dead\n"),
1387
+ "cases": [(([('a', 1), ('b', 2)], [('b', 5)]), ['a']),
1388
+ (([('a', 1)], [('a', 3)]), []),
1389
+ (([], []), [])],
1390
+ "params": [],
1391
+ "calibration": "对照:活跃变量分析——定义后无使用=死变量(liveness)",
1392
+ },
1393
+ "分析-调用图": {
1394
+ "task": "调用图",
1395
+ "pattern": (
1396
+ "def call_graph(funcs):\n"
1397
+ " # 生效条件:参数 funcs 合法\n"
1398
+ " # 子功能:① 调用 sorted;② 调用 set\n"
1399
+ " # 执行:循环迭代;顺序调用\n"
1400
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1401
+ " # 调用图:函数 → 被调函数集合(调用关系图构建)\n"
1402
+ " graph = {}\n"
1403
+ " for fn, calls in funcs:\n"
1404
+ " graph[fn] = sorted(set(calls))\n"
1405
+ " return graph\n"),
1406
+ "cases": [(([('main', ['f1', 'f2']), ('f1', ['f2'])],),
1407
+ {'main': ['f1', 'f2'], 'f1': ['f2']}),
1408
+ (([],), {}),
1409
+ (([('a', ['b', 'b'])],), {'a': ['b']})],
1410
+ "params": [],
1411
+ "calibration": "对照:调用图——函数调用关系(节点=函数,边=调用)",
1412
+ },
1413
+ "词法-字符串字面量": {
1414
+ "task": "字符串字面量",
1415
+ "pattern": (
1416
+ "def lex_string(src, i):\n"
1417
+ " # 生效条件:参数 src/i 合法\n"
1418
+ " # 子功能:① 调用 len\n"
1419
+ " # 执行:循环迭代;顺序调用\n"
1420
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1421
+ " # 字符串字面量:引号内解析(支持反斜杠转义)→ (token, 新位置)\n"
1422
+ " if src[i] != '\"':\n"
1423
+ " return None, i\n"
1424
+ " j = i + 1\n"
1425
+ " buf = []\n"
1426
+ " while j < len(src) and src[j] != '\"':\n"
1427
+ " if src[j] == '\\\\' and j + 1 < len(src):\n"
1428
+ " buf.append(src[j + 1])\n"
1429
+ " j += 2\n"
1430
+ " else:\n"
1431
+ " buf.append(src[j])\n"
1432
+ " j += 1\n"
1433
+ " if j >= len(src):\n"
1434
+ " return ('STRING', ''.join(buf), 'unterminated'), j\n"
1435
+ " return ('STRING', ''.join(buf)), j + 1\n"),
1436
+ "cases": [(('\"abc\"', 0), (('STRING', 'abc'), 5)),
1437
+ (('"a\\"b"', 0), (('STRING', 'a"b'), 6)),
1438
+ (('\"x', 0), (('STRING', 'x', 'unterminated'), 2))],
1439
+ "params": [],
1440
+ "calibration": "对照:词法——字符串字面量(引号+转义解析,未闭合标记)",
1441
+ },
1442
+ "词法-数字字面量": {
1443
+ "task": "数字字面量",
1444
+ "pattern": (
1445
+ "def lex_number(src, i):\n"
1446
+ " # 生效条件:参数 src/i 合法\n"
1447
+ " # 子功能:① 调用 len;② 调用 int;③ 调用 float\n"
1448
+ " # 执行:循环迭代;顺序调用\n"
1449
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1450
+ " # 数字字面量:整数/浮点/十六进制解析 → (token, 新位置)\n"
1451
+ " if src[i] == '0' and i + 1 < len(src) and src[i + 1] in 'xX':\n"
1452
+ " j = i + 2\n"
1453
+ " while j < len(src) and (src[j].isdigit() or src[j] in 'abcdefABCDEF'):\n"
1454
+ " j += 1\n"
1455
+ " return ('NUMBER', int(src[i + 2:j], 16)), j\n"
1456
+ " if src[i].isdigit():\n"
1457
+ " j = i\n"
1458
+ " while j < len(src) and (src[j].isdigit() or src[j] == '.'):\n"
1459
+ " j += 1\n"
1460
+ " text = src[i:j]\n"
1461
+ " return ('NUMBER', float(text) if '.' in text else int(text)), j\n"
1462
+ " return None, i\n"),
1463
+ "cases": [(('42', 0), (('NUMBER', 42), 2)),
1464
+ (('3.5', 0), (('NUMBER', 3.5), 3)),
1465
+ (('0xFF', 0), (('NUMBER', 255), 4))],
1466
+ "params": [],
1467
+ "calibration": "对照:词法——数字字面量(整数/浮点/十六进制)",
1468
+ },
1469
+ "语法-数组字面量": {
1470
+ "task": "数组字面量",
1471
+ "pattern": (
1472
+ "def parse_array(tokens, i):\n"
1473
+ " # 生效条件:参数 tokens/i 合法\n"
1474
+ " # 子功能:① 调用 len\n"
1475
+ " # 执行:循环迭代;顺序调用\n"
1476
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1477
+ " # 数组字面量:'[' 元素列表 ']' 解析(逗号分隔)→ (list, 新位置)\n"
1478
+ " if tokens[i] != '[':\n"
1479
+ " return None, i\n"
1480
+ " items = []\n"
1481
+ " i += 1\n"
1482
+ " while i < len(tokens) and tokens[i] != ']':\n"
1483
+ " if tokens[i] != ',':\n"
1484
+ " items.append(tokens[i])\n"
1485
+ " i += 1\n"
1486
+ " return items, i + 1\n"),
1487
+ "cases": [((['[', 1, ',', 2, ']'], 0), ([1, 2], 5)),
1488
+ ((['[', ']'], 0), ([], 2)),
1489
+ ((['x'], 0), (None, 0))],
1490
+ "params": [],
1491
+ "calibration": "对照:语法——数组字面量(中括号元素列表,逗号分隔)",
1492
+ },
1493
+ "编译-作用域分析": {
1494
+ "task": "作用域分析",
1495
+ "pattern": (
1496
+ "def scope_lookup(scopes, name):\n"
1497
+ " # 生效条件:参数 scopes/name 合法\n"
1498
+ " # 子功能:① 调用 reversed\n"
1499
+ " # 执行:循环迭代;顺序调用\n"
1500
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1501
+ " # 作用域分析:嵌套作用域由内向外查找(变量遮蔽语义)\n"
1502
+ " for scope in reversed(scopes):\n"
1503
+ " if name in scope:\n"
1504
+ " return scope[name]\n"
1505
+ " return None\n"),
1506
+ "cases": [(([{'甲': 1}, {'乙': 2}], '甲'), 1),
1507
+ (([{'甲': 1}, {'甲': 2}], '甲'), 2),
1508
+ (([{'甲': 1}], '乙'), None),
1509
+ (([], '甲'), None)],
1510
+ "params": [],
1511
+ "calibration": "对照:编译作用域——嵌套由内向外查找(内层遮蔽外层)",
1512
+ },
1513
+ "编译-常量传播": {
1514
+ "task": "常量传播",
1515
+ "pattern": (
1516
+ "def const_propagate(instrs, consts):\n"
1517
+ " # 生效条件:参数 instrs/consts 合法\n"
1518
+ " # 子功能:① 条件判定 ② 结果处理\n"
1519
+ " # 执行:循环迭代\n"
1520
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1521
+ " # 常量传播:常量变量替换为字面量(编译期代入)\n"
1522
+ " out = []\n"
1523
+ " for op, arg in instrs:\n"
1524
+ " if op == 'LOAD' and arg in consts:\n"
1525
+ " out.append(('PUSH', consts[arg]))\n"
1526
+ " else:\n"
1527
+ " out.append((op, arg))\n"
1528
+ " return out\n"),
1529
+ "cases": [(([("LOAD", "甲"), ("DE", None)], {'甲': 3}),
1530
+ [("PUSH", 3), ("DE", None)]),
1531
+ (([("LOAD", "乙")], {'甲': 3}), [("LOAD", "乙")]),
1532
+ (([], {'甲': 3}), [])],
1533
+ "params": [],
1534
+ "calibration": "对照:编译优化——常量传播(常量变量→字面量代入)",
1535
+ },
1536
+ "编译-指令重排": {
1537
+ "task": "指令重排",
1538
+ "pattern": (
1539
+ "def reorder_instrs(instrs):\n"
1540
+ " # 生效条件:参数 instrs 合法\n"
1541
+ " # 子功能:① 主体逻辑执行\n"
1542
+ " # 执行:顺序执行\n"
1543
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1544
+ " # 指令重排:PUSH 常量提前(无关指令乱序——减少停顿)\n"
1545
+ " pushes = [i for i in instrs if i[0] == 'PUSH']\n"
1546
+ " rest = [i for i in instrs if i[0] != 'PUSH']\n"
1547
+ " return pushes + rest\n"),
1548
+ "cases": [(([("DE", 0.1), ("PUSH", 3)],),
1549
+ [("PUSH", 3), ("DE", 0.1)]),
1550
+ (([("DE", 0.1)],), [("DE", 0.1)]),
1551
+ (([],), [])],
1552
+ "params": [],
1553
+ "calibration": "对照:编译优化——指令重排(无关指令乱序减少停顿)",
1554
+ },
1555
+ "VM-引用计数": {
1556
+ "task": "引用计数",
1557
+ "pattern": (
1558
+ "def refcount_ops(refs, op, obj=None):\n"
1559
+ " # 生效条件:op ∈ {dec, inc}\n"
1560
+ " # 子功能:① op 分支处理\n"
1561
+ " # 执行:按 op 分派\n"
1562
+ " # 不适用条件:op 非 {dec, inc} 时\n"
1563
+ " # 引用计数:inc/dec 增减引用,归零回收(GC 语义)\n"
1564
+ " if op == 'inc':\n"
1565
+ " refs[obj] = refs.get(obj, 0) + 1\n"
1566
+ " return refs[obj]\n"
1567
+ " if op == 'dec':\n"
1568
+ " refs[obj] = refs.get(obj, 0) - 1\n"
1569
+ " if refs[obj] <= 0:\n"
1570
+ " del refs[obj]\n"
1571
+ " return 'collected'\n"
1572
+ " return refs[obj]\n"
1573
+ " return None\n"),
1574
+ "cases": [(({}, 'inc', 'a'), 1),
1575
+ (({'a': 1}, 'inc', 'a'), 2),
1576
+ (({'a': 1}, 'dec', 'a'), 'collected'),
1577
+ (({'a': 2}, 'dec', 'a'), 1)],
1578
+ "params": [],
1579
+ "calibration": "对照:VM 垃圾回收——引用计数(归零回收)",
1580
+ },
1581
+ "VM-指令剖析": {
1582
+ "task": "指令剖析",
1583
+ "pattern": (
1584
+ "def instr_profile(code):\n"
1585
+ " # 生效条件:参数 code 合法\n"
1586
+ " # 子功能:① 主体逻辑执行\n"
1587
+ " # 执行:循环迭代\n"
1588
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1589
+ " # 指令剖析:指令类型频次统计(profiling——热点定位)\n"
1590
+ " freq = {}\n"
1591
+ " for op, _ in code:\n"
1592
+ " freq[op] = freq.get(op, 0) + 1\n"
1593
+ " return freq\n"),
1594
+ "cases": [(([("DE", 0.1), ("DE", 0.2), ("LOAD", "甲")],),
1595
+ {'DE': 2, 'LOAD': 1}),
1596
+ (([],), {}),
1597
+ (([("PUSH", 1), ("PUSH", 2)],), {'PUSH': 2})],
1598
+ "params": [],
1599
+ "calibration": "对照:VM profiling——指令类型频次(热点定位)",
1600
+ },
1601
+ "VM-栈保护": {
1602
+ "task": "栈保护",
1603
+ "pattern": (
1604
+ "def stack_push_guard(stack, limit, value):\n"
1605
+ " # 生效条件:参数 stack/limit/value 合法\n"
1606
+ " # 子功能:① 调用 len\n"
1607
+ " # 执行:顺序调用\n"
1608
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1609
+ " # 栈保护:压栈前检查深度(防栈溢出——递归深度控制)\n"
1610
+ " if len(stack) >= limit:\n"
1611
+ " return 'overflow'\n"
1612
+ " stack.append(value)\n"
1613
+ " return 'pushed'\n"),
1614
+ "cases": [(([], 2, 1), 'pushed'),
1615
+ (([1], 2, 2), 'pushed'),
1616
+ (([1, 2], 2, 3), 'overflow'),
1617
+ (([1, 2, 3], 2, 4), 'overflow')],
1618
+ "params": [],
1619
+ "calibration": "对照:VM 运行时——栈深度限制(防递归栈溢出)",
1620
+ },
1621
+ "校验-名实一致": {
1622
+ "task": "名实一致",
1623
+ "pattern": (
1624
+ "def ming_shi_check(refs, bindings):\n"
1625
+ " # 生效条件:参数 refs/bindings 合法\n"
1626
+ " # 子功能:① 主体逻辑执行\n"
1627
+ " # 执行:顺序执行\n"
1628
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1629
+ " # 名实校验:名称引用须有绑定实体(以名举实——墨辩语义)\n"
1630
+ " return [r for r in refs if r not in bindings]\n"),
1631
+ "cases": [((['甲', '乙'], {'甲': 1, '乙': 2}), []),
1632
+ ((['甲', '丙'], {'甲': 1}), ['丙']),
1633
+ ((['甲'], {}), ['甲'])],
1634
+ "params": [],
1635
+ "calibration": "对照:名实校验——引用须绑定实体(以名举实,未绑定拦截)",
1636
+ },
1637
+ "编译-类型转换": {
1638
+ "task": "类型转换",
1639
+ "pattern": (
1640
+ "def type_convert(value, from_type, to_type, rules):\n"
1641
+ " # 生效条件:参数 value/from_type/to_type/rules 合法\n"
1642
+ " # 子功能:① 条件判定 ② 结果处理\n"
1643
+ " # 执行:顺序执行\n"
1644
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1645
+ " # 类型转换:按规则隐式/显式转换(数值↔文本——转换规则表)\n"
1646
+ " if (from_type, to_type) in rules:\n"
1647
+ " return rules[(from_type, to_type)](value)\n"
1648
+ " return 'unsupported'\n"),
1649
+ "cases": [((5, '数值', '文本', {('数值', '文本'): str}), '5'),
1650
+ (('3', '文本', '数值', {('文本', '数值'): int}), 3),
1651
+ ((5, '数值', '布尔', {}), 'unsupported')],
1652
+ "params": [],
1653
+ "calibration": "对照:类型系统——转换规则表(隐式/显式,无规则拒绝)",
1654
+ },
1655
+ "分析-数据流分析": {
1656
+ "task": "数据流分析",
1657
+ "pattern": (
1658
+ "def def_use_chain(defs, uses):\n"
1659
+ " # 生效条件:参数 defs/uses 合法\n"
1660
+ " # 子功能:① 条件判定 ② 结果处理\n"
1661
+ " # 执行:循环迭代\n"
1662
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1663
+ " # 数据流分析:def-use 链(定义→使用点连接——数据流路径)\n"
1664
+ " chain = []\n"
1665
+ " for var, def_line in defs:\n"
1666
+ " for u, u_line in uses:\n"
1667
+ " if u == var and u_line > def_line:\n"
1668
+ " chain.append((var, def_line, u_line))\n"
1669
+ " return chain\n"),
1670
+ "cases": [(([('a', 1), ('b', 2)], [('a', 3), ('b', 4), ('a', 5)]),
1671
+ [('a', 1, 3), ('a', 1, 5), ('b', 2, 4)]),
1672
+ (([('a', 1)], []), []),
1673
+ (([], [('a', 3)]), [])],
1674
+ "params": [],
1675
+ "calibration": "对照:数据流分析——def-use 链(定义到使用的数据流)",
1676
+ },
1677
+ "语法-三元表达式": {
1678
+ "task": "三元表达式",
1679
+ "pattern": (
1680
+ "def ternary_compile(cond, then_expr, else_expr):\n"
1681
+ " # 生效条件:参数 cond/then_expr/else_expr 合法\n"
1682
+ " # 子功能:① 调用 list;② 调用 len\n"
1683
+ " # 执行:顺序调用\n"
1684
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1685
+ " # 三元表达式:条件 ? 真值 : 假值 → 条件跳转字节码\n"
1686
+ " code = list(cond)\n"
1687
+ " else_lbl = len(code) + 1 + len(then_expr) + 1\n"
1688
+ " code.append(('JUMP_IF_FALSE', else_lbl))\n"
1689
+ " code.extend(then_expr)\n"
1690
+ " end_lbl = len(code) + 1 + len(else_expr)\n"
1691
+ " code.append(('JUMP', end_lbl))\n"
1692
+ " code.extend(else_expr)\n"
1693
+ " return code\n"),
1694
+ "cases": [(([("LOAD", "x")], [("PUSH", 1)], [("PUSH", 0)]),
1695
+ [("LOAD", "x"), ("JUMP_IF_FALSE", 4), ("PUSH", 1),
1696
+ ("JUMP", 5), ("PUSH", 0)])],
1697
+ "params": [],
1698
+ "calibration": "对照:三元条件表达式——条件跳转选真/假分支",
1699
+ },
1700
+ "语法-复合赋值": {
1701
+ "task": "复合赋值",
1702
+ "pattern": (
1703
+ "def compound_assign(op, name, expr):\n"
1704
+ " # 生效条件:参数 op/name/expr 合法\n"
1705
+ " # 子功能:① 调用 list\n"
1706
+ " # 执行:顺序调用\n"
1707
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1708
+ " # 复合赋值:甲 += 表达式 → LOAD 甲 + 表达式 + 运算 + STORE 甲\n"
1709
+ " ops = {'+=': 'ADD', '-=': 'SUB', '*=': 'MUL'}\n"
1710
+ " return [('LOAD', name)] + list(expr) + \\\n"
1711
+ " [(ops[op], None), ('STORE', name)]\n"),
1712
+ "cases": [(('+=', '甲', [("PUSH", 2)]),
1713
+ [("LOAD", "甲"), ("PUSH", 2), ("ADD", None),
1714
+ ("STORE", "甲")]),
1715
+ (('*=', '乙', [("PUSH", 3)]),
1716
+ [("LOAD", "乙"), ("PUSH", 3), ("MUL", None),
1717
+ ("STORE", "乙")])],
1718
+ "params": [],
1719
+ "calibration": "对照:复合赋值——+= 展开为 LOAD+运算+STORE",
1720
+ },
1721
+ "语法-位运算": {
1722
+ "task": "位运算",
1723
+ "pattern": (
1724
+ "def bitwise_op(a, b, op):\n"
1725
+ " # 生效条件:op ∈ {and, not, or, xor}\n"
1726
+ " # 子功能:① op 分支处理\n"
1727
+ " # 执行:按 op 分派\n"
1728
+ " # 不适用条件:op 非 {and, not, or, xor} 时\n"
1729
+ " # 位运算:按位与/或/异或/取反(bitwise 操作符)\n"
1730
+ " if op == 'and':\n"
1731
+ " return a & b\n"
1732
+ " if op == 'or':\n"
1733
+ " return a | b\n"
1734
+ " if op == 'xor':\n"
1735
+ " return a ^ b\n"
1736
+ " if op == 'not':\n"
1737
+ " return ~a\n"
1738
+ " return None\n"),
1739
+ "cases": [((5, 3, 'and'), 1),
1740
+ ((5, 3, 'or'), 7),
1741
+ ((5, 3, 'xor'), 6),
1742
+ ((5, 0, 'not'), -6)],
1743
+ "params": [],
1744
+ "calibration": "对照:位运算——与/或/异或/取反(bitwise 语义)",
1745
+ },
1746
+ "词法-标识符解析": {
1747
+ "task": "标识符解析",
1748
+ "pattern": (
1749
+ "def lex_ident(src, i):\n"
1750
+ " # 生效条件:参数 src/i 合法\n"
1751
+ " # 子功能:① 调用 len\n"
1752
+ " # 执行:循环迭代;顺序调用\n"
1753
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1754
+ " # 标识符解析:CJK/字母/下划线开头,后接字母数字下划线\n"
1755
+ " if not (src[i].isalpha() or src[i] == '_'):\n"
1756
+ " return None, i\n"
1757
+ " j = i\n"
1758
+ " while j < len(src) and (src[j].isalpha() or src[j].isdigit()\n"
1759
+ " or src[j] == '_'):\n"
1760
+ " j += 1\n"
1761
+ " return ('IDENT', src[i:j]), j\n"),
1762
+ "cases": [(('甲变量', 0), (('IDENT', '甲变量'), 3)),
1763
+ (('abc_1', 0), (('IDENT', 'abc_1'), 5)),
1764
+ (('1x', 0), (None, 0))],
1765
+ "params": [],
1766
+ "calibration": "对照:词法——标识符(CJK/字母数字下划线连续串)",
1767
+ },
1768
+ "词法-操作符解析": {
1769
+ "task": "操作符解析",
1770
+ "pattern": (
1771
+ "def lex_op(src, i):\n"
1772
+ " # 生效条件:参数 src/i 合法\n"
1773
+ " # 子功能:① 条件判定 ② 结果处理\n"
1774
+ " # 执行:顺序执行\n"
1775
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1776
+ " # 操作符解析:多字符操作符优先(>= <= == != 先匹配双字符)\n"
1777
+ " two = src[i:i + 2]\n"
1778
+ " if two in ('>=', '<=', '==', '!='):\n"
1779
+ " return ('OP', two), i + 2\n"
1780
+ " if src[i] in '+-*/<>=':\n"
1781
+ " return ('OP', src[i]), i + 1\n"
1782
+ " return None, i\n"),
1783
+ "cases": [(('>=', 0), (('OP', '>='), 2)),
1784
+ (('!=', 0), (('OP', '!='), 2)),
1785
+ (('+', 0), (('OP', '+'), 1)),
1786
+ (('ab', 0), (None, 0))],
1787
+ "params": [],
1788
+ "calibration": "对照:词法——操作符(最长匹配:双字符优先)",
1789
+ },
1790
+ "语法-函数签名": {
1791
+ "task": "函数签名",
1792
+ "pattern": (
1793
+ "def parse_signature(params_str):\n"
1794
+ " # 生效条件:params_str.strip 可用\n"
1795
+ " # 子功能:① 条件判定 ② 结果处理\n"
1796
+ " # 执行:顺序执行\n"
1797
+ " # 不适用条件:params_str 为空/非法时\n"
1798
+ " # 函数签名解析:参数列表(逗号分隔,默认值剥离)→ 参数名列表\n"
1799
+ " params_str = params_str.strip()\n"
1800
+ " if not params_str:\n"
1801
+ " return []\n"
1802
+ " return [p.split('=')[0].strip() for p in params_str.split(',')]\n"),
1803
+ "cases": [(('甲, 乙',), ['甲', '乙']),
1804
+ (('甲=1, 乙',), ['甲', '乙']),
1805
+ (('',), [])],
1806
+ "params": [],
1807
+ "calibration": "对照:语法——函数签名参数列表(默认值剥离)",
1808
+ },
1809
+ "VM-栈操作": {
1810
+ "task": "栈操作",
1811
+ "pattern": (
1812
+ "def stack_ops(stack, op):\n"
1813
+ " # 生效条件:op ∈ {DUP, SWAP}\n"
1814
+ " # 子功能:① op 分支处理\n"
1815
+ " # 执行:按 op 分派;顺序调用\n"
1816
+ " # 不适用条件:stack 为空/非法时;op 非 {DUP, SWAP} 时\n"
1817
+ " # 栈操作:DUP 复制栈顶 / SWAP 交换栈顶两元素(栈指令)\n"
1818
+ " if op == 'DUP':\n"
1819
+ " if not stack:\n"
1820
+ " return None\n"
1821
+ " stack.append(stack[-1])\n"
1822
+ " return stack[-1]\n"
1823
+ " if op == 'SWAP':\n"
1824
+ " if len(stack) < 2:\n"
1825
+ " return None\n"
1826
+ " stack[-1], stack[-2] = stack[-2], stack[-1]\n"
1827
+ " return stack[-2]\n"
1828
+ " return None\n"),
1829
+ "cases": [(([1, 2], 'DUP'), 2),
1830
+ (([1], 'DUP'), 1),
1831
+ (([1, 2], 'SWAP'), 2),
1832
+ (([], 'DUP'), None)],
1833
+ "params": [],
1834
+ "calibration": "对照:VM 栈指令——DUP 复制/SWAP 交换(栈机操作)",
1835
+ },
1836
+ "VM-算术执行": {
1837
+ "task": "算术执行",
1838
+ "pattern": (
1839
+ "def arith_exec(stack, op):\n"
1840
+ " # 生效条件:op ∈ {ADD, DIV, MUL, SUB}\n"
1841
+ " # 子功能:① op 分支处理\n"
1842
+ " # 执行:按 op 分派;顺序调用\n"
1843
+ " # 不适用条件:op 非 {ADD, DIV, MUL, SUB} 时\n"
1844
+ " # 算术执行:弹出两操作数执行 ADD/SUB/MUL/DIV(栈机算术指令)\n"
1845
+ " if len(stack) < 2:\n"
1846
+ " return None\n"
1847
+ " b = stack.pop()\n"
1848
+ " a = stack.pop()\n"
1849
+ " if op == 'ADD':\n"
1850
+ " r = a + b\n"
1851
+ " elif op == 'SUB':\n"
1852
+ " r = a - b\n"
1853
+ " elif op == 'MUL':\n"
1854
+ " r = a * b\n"
1855
+ " elif op == 'DIV':\n"
1856
+ " r = a / b\n"
1857
+ " else:\n"
1858
+ " return None\n"
1859
+ " stack.append(r)\n"
1860
+ " return r\n"),
1861
+ "cases": [(([1, 2], 'ADD'), 3),
1862
+ (([5, 2], 'SUB'), 3),
1863
+ (([3, 4], 'MUL'), 12),
1864
+ (([8, 2], 'DIV'), 4.0)],
1865
+ "params": [],
1866
+ "calibration": "对照:VM 算术指令——ADD/SUB/MUL/DIV(栈机执行)",
1867
+ },
1868
+ "VM-比较执行": {
1869
+ "task": "比较执行",
1870
+ "pattern": (
1871
+ "def cmp_exec(stack, op):\n"
1872
+ " # 生效条件:op ∈ {EQ, GT, LT}\n"
1873
+ " # 子功能:① op 分支处理\n"
1874
+ " # 执行:按 op 分派;顺序调用\n"
1875
+ " # 不适用条件:op 非 {EQ, GT, LT} 时\n"
1876
+ " # 比较执行:弹出两操作数比较 LT/GT/EQ(栈机比较指令→布尔)\n"
1877
+ " if len(stack) < 2:\n"
1878
+ " return None\n"
1879
+ " b = stack.pop()\n"
1880
+ " a = stack.pop()\n"
1881
+ " if op == 'LT':\n"
1882
+ " r = a < b\n"
1883
+ " elif op == 'GT':\n"
1884
+ " r = a > b\n"
1885
+ " elif op == 'EQ':\n"
1886
+ " r = a == b\n"
1887
+ " else:\n"
1888
+ " return None\n"
1889
+ " stack.append(r)\n"
1890
+ " return r\n"),
1891
+ "cases": [(([1, 2], 'LT'), True),
1892
+ (([3, 2], 'GT'), True),
1893
+ (([2, 2], 'EQ'), True),
1894
+ (([3, 2], 'LT'), False)],
1895
+ "params": [],
1896
+ "calibration": "对照:VM 比较指令——LT/GT/EQ(栈机比较→布尔)",
1897
+ },
1898
+ "校验-信任检查": {
1899
+ "task": "信任检查",
1900
+ "pattern": (
1901
+ "def trust_check(trust, threshold):\n"
1902
+ " # 生效条件:参数 trust/threshold 合法\n"
1903
+ " # 子功能:① 条件判定 ② 结果处理\n"
1904
+ " # 执行:顺序执行\n"
1905
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1906
+ " # 信任检查:信任值 ≥ 门槛 放行(智能论信任作为运行时语义)\n"
1907
+ " return 'pass' if trust >= threshold else 'fail'\n"),
1908
+ "cases": [((0.8, 0.7), 'pass'),
1909
+ ((0.6, 0.7), 'fail'),
1910
+ ((0.7, 0.7), 'pass')],
1911
+ "params": [],
1912
+ "calibration": "对照:智能论——信任门槛(运行时信任检查放行/拒绝)",
1913
+ },
1914
+ "分析-信息差追踪": {
1915
+ "task": "信息差追踪",
1916
+ "pattern": (
1917
+ "def info_gap_track(events, op, gap=None, node=None):\n"
1918
+ " # 生效条件:op ∈ {latest, max, record}\n"
1919
+ " # 子功能:① op 分支处理\n"
1920
+ " # 执行:按 op 分派;顺序调用\n"
1921
+ " # 不适用条件:events 为空/非法时;op 非 {latest, max, record} 时\n"
1922
+ " # 信息差追踪:record 记录节点信息差 / max 最大 / latest 最新\n"
1923
+ " if op == 'record':\n"
1924
+ " events.append({'node': node, 'gap': gap})\n"
1925
+ " return len(events)\n"
1926
+ " if op == 'max':\n"
1927
+ " if not events:\n"
1928
+ " return None\n"
1929
+ " return max(e['gap'] for e in events)\n"
1930
+ " if op == 'latest':\n"
1931
+ " return events[-1]['gap'] if events else None\n"
1932
+ " return None\n"),
1933
+ "cases": [(([], 'record', 0.8, 'a'), 1),
1934
+ (([{'node': 'a', 'gap': 0.8},
1935
+ {'node': 'b', 'gap': 0.3}], 'max'), 0.8),
1936
+ (([], 'max'), None),
1937
+ (([{'node': 'a', 'gap': 0.8}], 'latest'), 0.8)],
1938
+ "params": [],
1939
+ "calibration": "对照:智能论——信息差追踪(编译期信息差分析记录)",
1940
+ },
1941
+ "校验-条件空间类型": {
1942
+ "task": "条件空间类型",
1943
+ "pattern": (
1944
+ "def space_type_check(declared, used):\n"
1945
+ " # 生效条件:参数 declared/used 合法\n"
1946
+ " # 子功能:① 调用 sorted;② 调用 set\n"
1947
+ " # 执行:顺序调用\n"
1948
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
1949
+ " # 条件空间类型:使用须在已声明空间内(条件空间=类型系统语义)\n"
1950
+ " return ([] if set(used) <= set(declared)\n"
1951
+ " else sorted(set(used) - set(declared)))\n"),
1952
+ "cases": [((['伴侣', '工作'], ['伴侣']), []),
1953
+ ((['伴侣'], ['伴侣', '未知']), ['未知']),
1954
+ ((['伴侣'], ['未知']), ['未知'])],
1955
+ "params": [],
1956
+ "calibration": "对照:智能论——条件空间=类型系统(未声明空间拦截)",
1957
+ },
1958
+ "调试-条件断点": {
1959
+ "task": "条件断点",
1960
+ "pattern": (
1961
+ "def cond_breakpoint(breaks, op, addr=None, cond=None, env=None):\n"
1962
+ " # 生效条件:op ∈ {hit, set}\n"
1963
+ " # 子功能:① op 分支处理\n"
1964
+ " # 执行:按 op 分派;顺序调用\n"
1965
+ " # 不适用条件:op 非 {hit, set} 时\n"
1966
+ " # 条件断点:set 设置条件 / hit 命中(条件满足才停)\n"
1967
+ " if op == 'set':\n"
1968
+ " breaks[addr] = cond\n"
1969
+ " return addr\n"
1970
+ " if op == 'hit':\n"
1971
+ " if addr in breaks:\n"
1972
+ " c = breaks[addr]\n"
1973
+ " return c(env) if c else True\n"
1974
+ " return False\n"
1975
+ " return None\n"),
1976
+ "cases": [(({}, 'set', 5, lambda e: e.get('x') > 3), 5),
1977
+ (({5: lambda e: e.get('x') > 3}, 'hit', 5, None, {'x': 5}),
1978
+ True),
1979
+ (({5: lambda e: e.get('x') > 3}, 'hit', 5, None, {'x': 1}),
1980
+ False),
1981
+ (({}, 'hit', 5, None, {'x': 5}), False)],
1982
+ "params": [],
1983
+ "calibration": "对照:C4 调试器——条件断点(条件满足才暂停)",
1984
+ },
1985
+ "调试-调用计数": {
1986
+ "task": "调用计数",
1987
+ "pattern": (
1988
+ "def call_counter(stats, op, func=None):\n"
1989
+ " # 生效条件:op ∈ {count, report}\n"
1990
+ " # 子功能:① op 分支处理\n"
1991
+ " # 执行:按 op 分派;顺序调用\n"
1992
+ " # 不适用条件:op 非 {count, report} 时\n"
1993
+ " # 调用计数:count 记录调用 / report 报告(profiler 调用次数)\n"
1994
+ " if op == 'count':\n"
1995
+ " stats[func] = stats.get(func, 0) + 1\n"
1996
+ " return stats[func]\n"
1997
+ " if op == 'report':\n"
1998
+ " return dict(stats)\n"
1999
+ " return None\n"),
2000
+ "cases": [(({}, 'count', 'f1'), 1),
2001
+ (({'f1': 2}, 'count', 'f1'), 3),
2002
+ (({'f1': 2}, 'report'), {'f1': 2})],
2003
+ "params": [],
2004
+ "calibration": "对照:C4 profiler——函数调用次数统计",
2005
+ },
2006
+ "调试-覆盖率": {
2007
+ "task": "覆盖率",
2008
+ "pattern": (
2009
+ "def coverage_track(covered, op, addr=None, total=None):\n"
2010
+ " # 生效条件:op ∈ {mark, report}\n"
2011
+ " # 子功能:① op 分支处理\n"
2012
+ " # 执行:按 op 分派;顺序调用\n"
2013
+ " # 不适用条件:total 为空/非法时;op 非 {mark, report} 时\n"
2014
+ " # 覆盖率:mark 标记执行 / report 报告(指令覆盖百分比)\n"
2015
+ " if op == 'mark':\n"
2016
+ " covered.add(addr)\n"
2017
+ " return len(covered)\n"
2018
+ " if op == 'report':\n"
2019
+ " if not total:\n"
2020
+ " return 0.0\n"
2021
+ " return round(len(covered) / total, 3)\n"
2022
+ " return None\n"),
2023
+ "cases": [((set(), 'mark', 1), 1),
2024
+ (({1, 2}, 'mark', 3), 3),
2025
+ (({1, 2}, 'report', None, 4), 0.5)],
2026
+ "params": [],
2027
+ "calibration": "对照:C4 覆盖率——指令覆盖百分比(测试充分性)",
2028
+ },
2029
+ "编译-窥孔优化": {
2030
+ "task": "窥孔优化",
2031
+ "pattern": (
2032
+ "def peephole_opt(instrs):\n"
2033
+ " # 生效条件:参数 instrs 合法\n"
2034
+ " # 子功能:① 调用 len\n"
2035
+ " # 执行:循环迭代;顺序调用\n"
2036
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2037
+ " # 窥孔优化:PUSH 0 + ADD → 弹出(冗余指令模式替换)\n"
2038
+ " out = []\n"
2039
+ " i = 0\n"
2040
+ " while i < len(instrs):\n"
2041
+ " if (i + 1 < len(instrs) and instrs[i] == ('PUSH', 0)\n"
2042
+ " and instrs[i + 1][0] == 'ADD'):\n"
2043
+ " i += 2\n"
2044
+ " continue\n"
2045
+ " out.append(instrs[i])\n"
2046
+ " i += 1\n"
2047
+ " return out\n"),
2048
+ "cases": [(([("PUSH", 0), ("ADD", None), ("DE", 0.1)],),
2049
+ [("DE", 0.1)]),
2050
+ (([("PUSH", 1), ("ADD", None)],),
2051
+ [("PUSH", 1), ("ADD", None)]),
2052
+ (([],), [])],
2053
+ "params": [],
2054
+ "calibration": "对照:编译优化——窥孔(PUSH 0+ADD 冗余消除)",
2055
+ },
2056
+ "编译-指令融合": {
2057
+ "task": "指令融合",
2058
+ "pattern": (
2059
+ "def fuse_load_store(instrs):\n"
2060
+ " # 生效条件:参数 instrs 合法\n"
2061
+ " # 子功能:① 调用 len\n"
2062
+ " # 执行:循环迭代;顺序调用\n"
2063
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2064
+ " # 指令融合:LOAD x + STORE x → MOV(复制指令融合)\n"
2065
+ " out = []\n"
2066
+ " i = 0\n"
2067
+ " while i < len(instrs):\n"
2068
+ " if (i + 1 < len(instrs) and instrs[i][0] == 'LOAD'\n"
2069
+ " and instrs[i + 1][0] == 'STORE'):\n"
2070
+ " out.append(('MOV', instrs[i][1], instrs[i + 1][1]))\n"
2071
+ " i += 2\n"
2072
+ " continue\n"
2073
+ " out.append(instrs[i])\n"
2074
+ " i += 1\n"
2075
+ " return out\n"),
2076
+ "cases": [(([("LOAD", "甲"), ("STORE", "乙"), ("DE", 0.1)],),
2077
+ [("MOV", "甲", "乙"), ("DE", 0.1)]),
2078
+ (([("LOAD", "甲"), ("DE", 0.1)],),
2079
+ [("LOAD", "甲"), ("DE", 0.1)]),
2080
+ (([],), [])],
2081
+ "params": [],
2082
+ "calibration": "对照:编译优化——指令融合(LOAD+STORE→MOV)",
2083
+ },
2084
+ "编译-循环不变式": {
2085
+ "task": "循环不变式",
2086
+ "pattern": (
2087
+ "def loop_invariant(body, invariant_ops):\n"
2088
+ " # 生效条件:参数 body/invariant_ops 合法\n"
2089
+ " # 子功能:① 条件判定 ② 结果处理\n"
2090
+ " # 执行:循环迭代\n"
2091
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2092
+ " # 循环不变式:不变指令外提(循环外计算一次)\n"
2093
+ " loop_part = []\n"
2094
+ " hoisted = []\n"
2095
+ " for ins in body:\n"
2096
+ " if ins[0] in invariant_ops and ins not in loop_part:\n"
2097
+ " hoisted.append(ins)\n"
2098
+ " else:\n"
2099
+ " loop_part.append(ins)\n"
2100
+ " return hoisted, loop_part\n"),
2101
+ "cases": [(([("PUSH", 3), ("DE", 0.1), ("LOAD", "i")], ('PUSH',)),
2102
+ ([("PUSH", 3)], [("DE", 0.1), ("LOAD", "i")])),
2103
+ (([("DE", 0.1)], ('DE',)), ([("DE", 0.1)], [])),
2104
+ (([], ('PUSH',)), ([], []))],
2105
+ "params": [],
2106
+ "calibration": "对照:编译优化——循环不变式外提(循环外计算)",
2107
+ },
2108
+ "语法-字典字面量": {
2109
+ "task": "字典字面量",
2110
+ "pattern": (
2111
+ "def parse_dict(tokens, i):\n"
2112
+ " # 生效条件:参数 tokens/i 合法\n"
2113
+ " # 子功能:① 调用 len\n"
2114
+ " # 执行:循环迭代;顺序调用\n"
2115
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2116
+ " # 字典字面量:'{' 键:值 '}' 解析(冒号分隔键值对)\n"
2117
+ " if tokens[i] != '{':\n"
2118
+ " return None, i\n"
2119
+ " d = {}\n"
2120
+ " i += 1\n"
2121
+ " while i < len(tokens) and tokens[i] != '}':\n"
2122
+ " k = tokens[i]\n"
2123
+ " i += 2\n"
2124
+ " v = tokens[i]\n"
2125
+ " d[k] = v\n"
2126
+ " i += 1\n"
2127
+ " if i < len(tokens) and tokens[i] == ',':\n"
2128
+ " i += 1\n"
2129
+ " return d, i + 1\n"),
2130
+ "cases": [((['{', '甲', ':', 1, '}'], 0), ({'甲': 1}, 5)),
2131
+ ((['{', '}'], 0), ({}, 2)),
2132
+ ((['x'], 0), (None, 0))],
2133
+ "params": [],
2134
+ "calibration": "对照:语法——字典字面量({键:值} 键值对解析)",
2135
+ },
2136
+ "语法-元组解析": {
2137
+ "task": "元组解析",
2138
+ "pattern": (
2139
+ "def parse_tuple(tokens, i):\n"
2140
+ " # 生效条件:参数 tokens/i 合法\n"
2141
+ " # 子功能:① 调用 tuple;② 调用 len\n"
2142
+ " # 执行:循环迭代;顺序调用\n"
2143
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2144
+ " # 元组解析:'(' 元素 ')' 解析(逗号分隔——元组字面量)\n"
2145
+ " if tokens[i] != '(':\n"
2146
+ " return None, i\n"
2147
+ " items = []\n"
2148
+ " i += 1\n"
2149
+ " while i < len(tokens) and tokens[i] != ')':\n"
2150
+ " if tokens[i] != ',':\n"
2151
+ " items.append(tokens[i])\n"
2152
+ " i += 1\n"
2153
+ " return tuple(items), i + 1\n"),
2154
+ "cases": [((['(', 1, ',', 2, ')'], 0), ((1, 2), 5)),
2155
+ ((['(', ')'], 0), ((), 2)),
2156
+ ((['x'], 0), (None, 0))],
2157
+ "params": [],
2158
+ "calibration": "对照:语法——元组字面量((元素,元素) 解析)",
2159
+ },
2160
+ "词法-转义序列": {
2161
+ "task": "转义序列",
2162
+ "pattern": (
2163
+ "def unescape(text):\n"
2164
+ " # 生效条件:nxt ∈ {n, t}\n"
2165
+ " # 子功能:1 nxt 分支处理\n"
2166
+ " # 执行:按 op 分派;循环迭代;顺序调用\n"
2167
+ " # 不适用条件:nxt 非 {n, t} 时\n"
2168
+ " # 转义序列:反斜杠n 反斜杠t 反斜杠引号 解码(字符串转义处理)\n"
2169
+ " out = []\n"
2170
+ " i = 0\n"
2171
+ " while i < len(text):\n"
2172
+ " if text[i] == '\\\\' and i + 1 < len(text):\n"
2173
+ " nxt = text[i + 1]\n"
2174
+ " if nxt == 'n':\n"
2175
+ " out.append(chr(10))\n"
2176
+ " elif nxt == 't':\n"
2177
+ " out.append(chr(9))\n"
2178
+ " elif nxt == chr(34):\n"
2179
+ " out.append(chr(34))\n"
2180
+ " else:\n"
2181
+ " out.append(nxt)\n"
2182
+ " i += 2\n"
2183
+ " else:\n"
2184
+ " out.append(text[i])\n"
2185
+ " i += 1\n"
2186
+ " return ''.join(out)\n"),
2187
+ "cases": [
2188
+ (('a\\nb',), 'a' + chr(10) + 'b'),
2189
+ (('a\\"b',), 'a' + chr(34) + 'b'),
2190
+ (('abc',), 'abc')],
2191
+ "params": [],
2192
+ "calibration": "对照:词法——转义序列(反斜杠n反斜杠t反斜杠引号 解码)",
2193
+ },
2194
+ "语法-布尔字面量": {
2195
+ "task": "布尔字面量",
2196
+ "pattern": (
2197
+ "def parse_bool(token):\n"
2198
+ " # 生效条件:token ∈ {假, 真}\n"
2199
+ " # 子功能:1 token 分支处理\n"
2200
+ " # 执行:按 op 分派\n"
2201
+ " # 不适用条件:token 非 {假, 真} 时\n"
2202
+ " # 布尔字面量:真/假 → True/False(布尔值解析)\n"
2203
+ " if token == '真':\n"
2204
+ " return (True, 1)\n"
2205
+ " if token == '假':\n"
2206
+ " return (False, 1)\n"
2207
+ " return (None, 0)\n"),
2208
+ "cases": [(('真',), (True, 1)),
2209
+ (('假',), (False, 1)),
2210
+ (('x',), (None, 0))],
2211
+ "params": [],
2212
+ "calibration": "对照:词法——布尔字面量(真/假→True/False)",
2213
+ },
2214
+ "语法-空值字面量": {
2215
+ "task": "空值字面量",
2216
+ "pattern": (
2217
+ "def parse_null(token):\n"
2218
+ " # 生效条件:参数 token 合法\n"
2219
+ " # 子功能:① 条件判定 ② 结果处理\n"
2220
+ " # 执行:顺序执行\n"
2221
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2222
+ " # 空值字面量:无/空 → None(空值解析)\n"
2223
+ " if token in ('无', '空'):\n"
2224
+ " return (None, 1)\n"
2225
+ " return (None, 0)\n"),
2226
+ "cases": [(('无',), (None, 1)),
2227
+ (('空',), (None, 1)),
2228
+ (('x',), (None, 0))],
2229
+ "params": [],
2230
+ "calibration": "对照:词法——空值字面量(无/空→None)",
2231
+ },
2232
+ "词法-行号跟踪": {
2233
+ "task": "行号跟踪",
2234
+ "pattern": (
2235
+ "def track_lines(src):\n"
2236
+ " # 生效条件:参数 src 合法\n"
2237
+ " # 子功能:① 调用 enumerate;② 调用 chr\n"
2238
+ " # 执行:循环迭代;顺序调用\n"
2239
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2240
+ " # 行号跟踪:源码按行拆 token 并附行号(定位调试用)\n"
2241
+ " out = []\n"
2242
+ " for i, line in enumerate(src.split(chr(10)), 1):\n"
2243
+ " for tok in line.split():\n"
2244
+ " out.append((tok, i))\n"
2245
+ " return out\n"),
2246
+ "cases": [
2247
+ (('甲 乙\n丙',), [('甲', 1), ('乙', 1), ('丙', 2)]),
2248
+ (('',), []),
2249
+ (('单行',), [('单行', 1)])],
2250
+ "params": [],
2251
+ "calibration": "对照:词法——行号跟踪(token 附行号,调试定位)",
2252
+ },
2253
+ "词法-关键字识别": {
2254
+ "task": "关键字识别",
2255
+ "pattern": (
2256
+ "def keyword_check(word, keywords):\n"
2257
+ " # 生效条件:参数 word/keywords 合法\n"
2258
+ " # 子功能:① 条件判定 ② 结果处理\n"
2259
+ " # 执行:顺序执行\n"
2260
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2261
+ " # 关键字识别:命中关键字表返回 (KW, 词) 否则 None(词法分类)\n"
2262
+ " if word in keywords:\n"
2263
+ " return ('KW', word)\n"
2264
+ " return None\n"),
2265
+ "cases": [
2266
+ (('若', ('若', '则', '否则')), ('KW', '若')),
2267
+ (('x', ('若', '则')), None),
2268
+ (('若', ()), None)],
2269
+ "params": [],
2270
+ "calibration": "对照:词法——关键字表命中分类(KW token)",
2271
+ },
2272
+ "编译-常量池": {
2273
+ "task": "常量池",
2274
+ "pattern": (
2275
+ "def literal_pool(pool, op, value=None):\n"
2276
+ " # 生效条件:op ∈ {add, get, size};pool.index 可用\n"
2277
+ " # 子功能:① op 分支处理\n"
2278
+ " # 执行:按 op 分派;顺序调用\n"
2279
+ " # 不适用条件:op 非 {add, get, size} 时\n"
2280
+ " # 常量池:add 去重登记 / get 取索引 / size 池大小(字面量去重)\n"
2281
+ " if op == 'add':\n"
2282
+ " if value not in pool:\n"
2283
+ " pool.append(value)\n"
2284
+ " return pool.index(value)\n"
2285
+ " if op == 'get':\n"
2286
+ " return pool[value] if 0 <= value < len(pool) else None\n"
2287
+ " if op == 'size':\n"
2288
+ " return len(pool)\n"
2289
+ " return None\n"),
2290
+ "cases": [
2291
+ (([], 'add', 42), 0),
2292
+ (([42], 'add', 42), 0),
2293
+ (([42, 7], 'get', 1), 7),
2294
+ (([42], 'size'), 1)],
2295
+ "params": [],
2296
+ "calibration": "对照:编译——常量池字面量去重(LDC 索引引用)",
2297
+ },
2298
+ "语法-语句分隔": {
2299
+ "task": "语句分隔",
2300
+ "pattern": (
2301
+ "def split_statements(src):\n"
2302
+ " # 生效条件:s.strip 可用\n"
2303
+ " # 子功能:① 主体逻辑执行\n"
2304
+ " # 执行:顺序执行\n"
2305
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2306
+ " # 语句分隔:按分号拆分多语句(语句序列解析)\n"
2307
+ " return [s.strip() for s in src.split(';') if s.strip()]\n"),
2308
+ "cases": [
2309
+ (('甲 = 1;乙 = 2',), ['甲 = 1', '乙 = 2']),
2310
+ (('单语句',), ['单语句']),
2311
+ (('',), []),
2312
+ (('甲=1;;乙=2',), ['甲=1', '乙=2'])],
2313
+ "params": [],
2314
+ "calibration": "对照:语法——分号语句分隔(多语句序列)",
2315
+ },
2316
+ "VM-异常处理": {
2317
+ "task": "异常处理",
2318
+ "pattern": (
2319
+ "def vm_exception(state, op, etype=None):\n"
2320
+ " # 生效条件:op ∈ {clear, handler, raise}\n"
2321
+ " # 子功能:① op 分支处理\n"
2322
+ " # 执行:按 op 分派\n"
2323
+ " # 不适用条件:op 非 {clear, handler, raise} 时\n"
2324
+ " # VM 异常处理:raise 抛异常 / handler 查处理表 / clear 清除(异常跳转)\n"
2325
+ " if op == 'raise':\n"
2326
+ " state['exc'] = etype\n"
2327
+ " return etype\n"
2328
+ " if op == 'handler':\n"
2329
+ " table = state.get('table', {})\n"
2330
+ " return table.get(state.get('exc'), None)\n"
2331
+ " if op == 'clear':\n"
2332
+ " state['exc'] = None\n"
2333
+ " return None\n"
2334
+ " return None\n"),
2335
+ "cases": [
2336
+ (({}, 'raise', '除零'), '除零'),
2337
+ (({'exc': '除零', 'table': {'除零': 10}}, 'handler'), 10),
2338
+ (({'exc': '未知', 'table': {'除零': 10}}, 'handler'), None),
2339
+ (({'exc': '除零'}, 'clear'), None)],
2340
+ "params": [],
2341
+ "calibration": "对照:VM 异常——异常类型抛出与处理表跳转(try/except 语义)",
2342
+ },
2343
+ "编译-表达式树": {
2344
+ "task": "表达式树",
2345
+ "pattern": (
2346
+ "def build_expr_tree(tokens, pos=0):\n"
2347
+ " # 生效条件:tok ∈ {(, )}\n"
2348
+ " # 子功能:1 tok 分支处理\n"
2349
+ " # 执行:按 op 分派;循环迭代\n"
2350
+ " # 不适用条件:tok 非 {(, )} 时\n"
2351
+ " # 表达式树:中缀 token → 嵌套树(AST 节点构建)\n"
2352
+ " stack = []\n"
2353
+ " for tok in tokens:\n"
2354
+ " if tok == '(':\n"
2355
+ " continue\n"
2356
+ " if tok == ')':\n"
2357
+ " right = stack.pop()\n"
2358
+ " op = stack.pop()\n"
2359
+ " left = stack.pop()\n"
2360
+ " stack.append((op, left, right))\n"
2361
+ " else:\n"
2362
+ " stack.append(tok)\n"
2363
+ " return stack[0] if stack else None\n"),
2364
+ "cases": [
2365
+ ((['(', 'a', '+', 'b', ')'],), ('+', 'a', 'b')),
2366
+ ((['(', 'a', '+', '(', 'b', '*', 'c', ')', ')'],),
2367
+ ('+', 'a', ('*', 'b', 'c'))),
2368
+ (([],), None)],
2369
+ "params": [],
2370
+ "calibration": "对照:语法——中缀表达式 → 嵌套树(AST 构建)",
2371
+ },
2372
+ "分析-栈深度分析": {
2373
+ "task": "栈深度分析",
2374
+ "pattern": (
2375
+ "def stack_depth(instrs):\n"
2376
+ " # 生效条件:参数 instrs 合法\n"
2377
+ " # 子功能:① 调用 max\n"
2378
+ " # 执行:循环迭代;顺序调用\n"
2379
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2380
+ " # 栈深度分析:模拟指令流求最大栈深(编译期栈大小)\n"
2381
+ " depth = 0\n"
2382
+ " mx = 0\n"
2383
+ " for ins in instrs:\n"
2384
+ " if ins[0] == 'PUSH':\n"
2385
+ " depth += 1\n"
2386
+ " elif ins[0] in ('POP', 'STORE'):\n"
2387
+ " depth = max(0, depth - 1)\n"
2388
+ " mx = max(mx, depth)\n"
2389
+ " return mx\n"),
2390
+ "cases": [
2391
+ (([('PUSH', 1), ('PUSH', 2), ('ADD', None)],), 2),
2392
+ (([('PUSH', 1), ('POP', None)],), 1),
2393
+ (([],), 0)],
2394
+ "params": [],
2395
+ "calibration": "对照:编译期分析——指令流最大栈深度(VM 栈帧大小)",
2396
+ },
2397
+ "分析-基本块": {
2398
+ "task": "基本块",
2399
+ "pattern": (
2400
+ "def basic_blocks(instrs):\n"
2401
+ " # 生效条件:参数 instrs 合法\n"
2402
+ " # 子功能:① 条件判定 ② 结果处理\n"
2403
+ " # 执行:循环迭代\n"
2404
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2405
+ " # 基本块:按跳转目标/跳转指令切分(控制流线性段)\n"
2406
+ " blocks = []\n"
2407
+ " cur = []\n"
2408
+ " for ins in instrs:\n"
2409
+ " cur.append(ins)\n"
2410
+ " if ins[0] in ('JUMP', 'JUMP_IF_FALSE', 'RETURN'):\n"
2411
+ " blocks.append(cur)\n"
2412
+ " cur = []\n"
2413
+ " if cur:\n"
2414
+ " blocks.append(cur)\n"
2415
+ " return blocks\n"),
2416
+ "cases": [
2417
+ (([('PUSH', 1), ('RETURN', None), ('PUSH', 2)],), [[('PUSH', 1), ('RETURN', None)], [('PUSH', 2)]]),
2418
+ (([('PUSH', 1)],), [[('PUSH', 1)]]),
2419
+ (([],), [])],
2420
+ "params": [],
2421
+ "calibration": "对照:CFG 分析——基本块划分(跳转为界)",
2422
+ },
2423
+ "编译-支配树": {
2424
+ "task": "支配树",
2425
+ "pattern": (
2426
+ "def dominator_tree(adj, entry):\n"
2427
+ " # 生效条件:set.intersection 可用\n"
2428
+ " # 子功能:① 调用 list;② 调用 set\n"
2429
+ " # 执行:循环迭代;顺序调用\n"
2430
+ " # 不适用条件:preds 为空/非法时\n"
2431
+ " # 支配树:入口可达必经节点(支配关系——必经点)\n"
2432
+ " nodes = list(adj)\n"
2433
+ " dom = {n: set(nodes) for n in nodes}\n"
2434
+ " dom[entry] = {entry}\n"
2435
+ " changed = True\n"
2436
+ " while changed:\n"
2437
+ " changed = False\n"
2438
+ " for n in nodes:\n"
2439
+ " if n == entry:\n"
2440
+ " continue\n"
2441
+ " preds = [p for p in nodes if n in adj.get(p, [])]\n"
2442
+ " if not preds:\n"
2443
+ " continue\n"
2444
+ " new = {n} | set.intersection(*(dom[p] for p in preds))\n"
2445
+ " if new != dom[n]:\n"
2446
+ " dom[n] = new\n"
2447
+ " changed = True\n"
2448
+ " return dom\n"),
2449
+ "cases": [
2450
+ (({0: [1, 2], 1: [3], 2: [3], 3: []}, 0),
2451
+ {0: {0}, 1: {0, 1}, 2: {0, 2}, 3: {0, 3}}),
2452
+ (({0: [1], 1: []}, 0), {0: {0}, 1: {0, 1}}),
2453
+ (({0: []}, 0), {0: {0}})],
2454
+ "params": [],
2455
+ "calibration": "对照:支配树——必经节点集合(迭代数据流)",
2456
+ },
2457
+ "编译-中间表示": {
2458
+ "task": "中间表示",
2459
+ "pattern": (
2460
+ "def to_ir(expr, op):\n"
2461
+ " # 生效条件:op ∈ {assign, binary}\n"
2462
+ " # 子功能:① op 分支处理\n"
2463
+ " # 执行:按 op 分派\n"
2464
+ " # 不适用条件:op 非 {assign, binary} 时\n"
2465
+ " # 中间表示:表达式 → 三地址码(IR 生成)\n"
2466
+ " if op == 'assign':\n"
2467
+ " return [('=', expr[0], expr[1], None)]\n"
2468
+ " if op == 'binary':\n"
2469
+ " a, b, o = expr\n"
2470
+ " return [('t1', '=', a, None), ('t2', '=', b, None),\n"
2471
+ " (o, 't1', 't2', 't3')]\n"
2472
+ " return None\n"),
2473
+ "cases": [
2474
+ ((('x', 1), 'assign'), [('=', 'x', 1, None)]),
2475
+ ((('a', 'b', '+'), 'binary'), [('t1', '=', 'a', None), ('t2', '=', 'b', None), ('+', 't1', 't2', 't3')]),
2476
+ ((('x', 0), 'assign'), [('=', 'x', 0, None)])],
2477
+ "params": [],
2478
+ "calibration": "对照:三地址码——IR 中间表示(赋值/二元运算)",
2479
+ },
2480
+ "分析-循环检测": {
2481
+ "task": "循环检测",
2482
+ "pattern": (
2483
+ "def cycle_detect(adj):\n"
2484
+ " # 生效条件:参数 adj 合法\n"
2485
+ " # 子功能:① 调用 dfs\n"
2486
+ " # 执行:循环迭代;顺序调用\n"
2487
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2488
+ " # 循环检测:DFS 三色标记(灰=在栈,回灰边即环)\n"
2489
+ " WHITE, GRAY, BLACK = 0, 1, 2\n"
2490
+ " color = {}\n"
2491
+ " def dfs(u):\n"
2492
+ " # 深度优先:标记灰后探邻接,遇灰回边判环\n"
2493
+ " color[u] = GRAY\n"
2494
+ " for v in adj.get(u, []):\n"
2495
+ " if color.get(v) == GRAY:\n"
2496
+ " return True\n"
2497
+ " if color.get(v, WHITE) == WHITE and dfs(v):\n"
2498
+ " return True\n"
2499
+ " color[u] = BLACK\n"
2500
+ " return False\n"
2501
+ " for u in adj:\n"
2502
+ " if color.get(u, WHITE) == WHITE and dfs(u):\n"
2503
+ " return True\n"
2504
+ " return False\n"),
2505
+ "cases": [
2506
+ (({0: [1], 1: [0]},), True),
2507
+ (({0: [1], 1: [2], 2: []},), False),
2508
+ (({0: [1], 1: [2], 2: [0]},), True)],
2509
+ "params": [],
2510
+ "calibration": "对照:图分析——DFS 三色循环检测(回灰边即环)",
2511
+ },
2512
+ "编译-指令调度": {
2513
+ "task": "指令调度",
2514
+ "pattern": (
2515
+ "def schedule_insn(instrs):\n"
2516
+ " # 生效条件:arg.startswith 可用\n"
2517
+ " # 子功能:① 调用 set;② 调用 isinstance;③ 调用 any\n"
2518
+ " # 执行:循环迭代;顺序调用\n"
2519
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2520
+ " # 指令调度:无依赖指令前移(乱序发射——减少停顿)\n"
2521
+ " deps = set()\n"
2522
+ " for ins in instrs:\n"
2523
+ " for arg in ins[1:]:\n"
2524
+ " if isinstance(arg, str) and arg.startswith('t'):\n"
2525
+ " deps.add(arg)\n"
2526
+ " early = [i for i in instrs if not any(a in deps for a in i[1:] if isinstance(a, str))]\n"
2527
+ " rest = [i for i in instrs if i not in early]\n"
2528
+ " return early + rest\n"),
2529
+ "cases": [
2530
+ (([('t1', '=', 'a'), ('t2', '=', 'b'), ('+', 't1', 't2')],),
2531
+ [('t1', '=', 'a'), ('t2', '=', 'b'), ('+', 't1', 't2')]),
2532
+ (([('+', 't1', 't2'), ('t1', '=', 'a')],),
2533
+ [('t1', '=', 'a'), ('+', 't1', 't2')]),
2534
+ (([('t1', '=', 'a')],), [('t1', '=', 'a')])],
2535
+ "params": [],
2536
+ "calibration": "对照:编译优化——指令调度(依赖无关前移)",
2537
+ },
2538
+ "编译-寄存器溢出": {
2539
+ "task": "寄存器溢出",
2540
+ "pattern": (
2541
+ "def spill_regs(active, regs):\n"
2542
+ " # 生效条件:参数 active/regs 合法\n"
2543
+ " # 子功能:① 调用 len\n"
2544
+ " # 执行:顺序调用\n"
2545
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2546
+ " # 寄存器溢出:活跃变量超寄存器数 → 溢出处(spill 内存)\n"
2547
+ " if len(active) <= regs:\n"
2548
+ " return []\n"
2549
+ " # 溢出最远使用(简化:溢出最后活跃者)\n"
2550
+ " return active[regs:]\n"),
2551
+ "cases": [
2552
+ ((['a', 'b'], 2), []),
2553
+ ((['a', 'b', 'c'], 2), ['c']),
2554
+ ((['a'], 0), ['a']),
2555
+ (([], 2), [])],
2556
+ "params": [],
2557
+ "calibration": "对照:寄存器分配——活跃超限溢出处(spill)",
2558
+ },
2559
+ "VM-数组操作": {
2560
+ "task": "数组操作",
2561
+ "pattern": (
2562
+ "def array_ops(arr, op, idx=None, val=None):\n"
2563
+ " # 生效条件:op ∈ {aget, aset, size}\n"
2564
+ " # 子功能:① op 分支处理\n"
2565
+ " # 执行:按 op 分派;顺序调用\n"
2566
+ " # 不适用条件:op 非 {aget, aset, size} 时\n"
2567
+ " # 数组操作:aget 索引读 / aset 索引写 / size 长度(数组 VM 指令)\n"
2568
+ " if op == 'aget':\n"
2569
+ " if 0 <= idx < len(arr):\n"
2570
+ " return arr[idx]\n"
2571
+ " return None\n"
2572
+ " if op == 'aset':\n"
2573
+ " if 0 <= idx < len(arr):\n"
2574
+ " arr[idx] = val\n"
2575
+ " return True\n"
2576
+ " return False\n"
2577
+ " if op == 'size':\n"
2578
+ " return len(arr)\n"
2579
+ " return None\n"),
2580
+ "cases": [
2581
+ (([10, 20], 'aget', 1), 20),
2582
+ (([10, 20], 'aget', 5), None),
2583
+ (([10, 20], 'aset', 0, 99), True),
2584
+ (([10, 20], 'size'), 2)],
2585
+ "params": [],
2586
+ "calibration": "对照:VM 数组——索引读写与越界保护(AGET/ASET 指令)",
2587
+ },
2588
+ "分析-污点分析": {
2589
+ "task": "污点分析",
2590
+ "pattern": (
2591
+ "def taint_prop(state, op, var=None, source=None):\n"
2592
+ " # 生效条件:op ∈ {check, mark, propagate}\n"
2593
+ " # 子功能:① op 分支处理\n"
2594
+ " # 执行:按 op 分派;顺序调用\n"
2595
+ " # 不适用条件:op 非 {check, mark, propagate} 时\n"
2596
+ " # 污点分析:mark 标记污点 / propagate 传播 / check 查询(安全数据流)\n"
2597
+ " if op == 'mark':\n"
2598
+ " state.setdefault('taint', set()).add(var)\n"
2599
+ " return 'marked'\n"
2600
+ " if op == 'propagate':\n"
2601
+ " if source in state.get('taint', set()):\n"
2602
+ " state.setdefault('taint', set()).add(var)\n"
2603
+ " return 'tainted'\n"
2604
+ " return 'clean'\n"
2605
+ " if op == 'check':\n"
2606
+ " return var in state.get('taint', set())\n"
2607
+ " return None\n"),
2608
+ "cases": [
2609
+ (({}, 'mark', 'x'), 'marked'),
2610
+ (({'taint': {'x'}}, 'propagate', 'y', 'x'), 'tainted'),
2611
+ (({}, 'propagate', 'y', 'x'), 'clean'),
2612
+ (({'taint': {'x'}}, 'check', 'x'), True)],
2613
+ "params": [],
2614
+ "calibration": "对照:静态分析——污点传播(标记/传播/查询)",
2615
+ },
2616
+ "编译-边界检查消除": {
2617
+ "task": "边界检查消除",
2618
+ "pattern": (
2619
+ "def bounds_elim(loops, op, info=None):\n"
2620
+ " # 生效条件:op ∈ {eliminate, prove}\n"
2621
+ " # 子功能:① op 分支处理\n"
2622
+ " # 执行:按 op 分派\n"
2623
+ " # 不适用条件:op 非 {eliminate, prove} 时\n"
2624
+ " # 边界检查消除:prove 证明范围 / eliminate 消除检查 / keep 保留(循环不变边界)\n"
2625
+ " if op == 'prove':\n"
2626
+ " lo, hi, idx = info\n"
2627
+ " return lo <= idx < hi\n"
2628
+ " if op == 'eliminate':\n"
2629
+ " if info in loops.get('safe', []):\n"
2630
+ " return 'eliminated'\n"
2631
+ " return 'kept'\n"
2632
+ " return None\n"),
2633
+ "cases": [
2634
+ (({}, 'prove', (0, 10, 5)), True),
2635
+ (({}, 'prove', (0, 10, 15)), False),
2636
+ (({'safe': [('i', 0, 10)]}, 'eliminate', ('i', 0, 10)), 'eliminated'),
2637
+ (({'safe': []}, 'eliminate', ('i', 0, 10)), 'kept')],
2638
+ "params": [],
2639
+ "calibration": "对照:编译优化——边界检查消除(可证范围免检)",
2640
+ },
2641
+ "词法-字符类别": {
2642
+ "task": "字符类别",
2643
+ "pattern": (
2644
+ "def char_class(ch):\n"
2645
+ " # 生效条件:ch.isalpha 可用;ch.isdigit 可用\n"
2646
+ " # 子功能:① 条件判定 ② 结果处理\n"
2647
+ " # 执行:顺序执行\n"
2648
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2649
+ " # 字符类别:字母/数字/空白/其他(词法分类基础)\n"
2650
+ " if ch.isalpha():\n"
2651
+ " return 'letter'\n"
2652
+ " if ch.isdigit():\n"
2653
+ " return 'digit'\n"
2654
+ " if ch.isspace():\n"
2655
+ " return 'space'\n"
2656
+ " return 'other'\n"),
2657
+ "cases": [
2658
+ ((chr(97),), 'letter'),
2659
+ ((chr(49),), 'digit'),
2660
+ ((chr(32),), 'space'),
2661
+ ((chr(43),), 'other')],
2662
+ "params": [],
2663
+ "calibration": "对照:词法——字符类别判定(字母/数字/空白/其他)",
2664
+ },
2665
+ "语法-括号匹配": {
2666
+ "task": "括号匹配",
2667
+ "pattern": (
2668
+ "def bracket_balance(text):\n"
2669
+ " # 生效条件:参数 text 合法\n"
2670
+ " # 子功能:① 调用 len\n"
2671
+ " # 执行:循环迭代;顺序调用\n"
2672
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2673
+ " # 括号匹配:栈配对校验(()[]{} 嵌套平衡)\n"
2674
+ " pairs = {')': '(', ']': '[', '}': '{'}\n"
2675
+ " stack = []\n"
2676
+ " for ch in text:\n"
2677
+ " if ch in '([{':\n"
2678
+ " stack.append(ch)\n"
2679
+ " elif ch in ')]}':\n"
2680
+ " if not stack or stack.pop() != pairs[ch]:\n"
2681
+ " return False\n"
2682
+ " return len(stack) == 0\n"),
2683
+ "cases": [
2684
+ ((chr(40) + chr(41),), True),
2685
+ ((chr(40) + chr(91) + chr(93) + chr(41),), True),
2686
+ ((chr(40) + chr(93),), False),
2687
+ ((chr(40),), False)],
2688
+ "params": [],
2689
+ "calibration": "对照:语法——括号配对平衡(嵌套校验)",
2690
+ },
2691
+ "编译-指令选择": {
2692
+ "task": "指令选择",
2693
+ "pattern": (
2694
+ "def insn_select(ir):\n"
2695
+ " # 生效条件:参数 ir 合法\n"
2696
+ " # 子功能:① 主体逻辑执行\n"
2697
+ " # 执行:顺序执行\n"
2698
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2699
+ " # 指令选择:IR 操作 → 目标指令(模式匹配翻译)\n"
2700
+ " table = {'+': 'ADD', '-': 'SUB', '*': 'MUL', '/': 'DIV', '=': 'MOV'}\n"
2701
+ " return [table.get(op, 'NOP') for op in ir]\n"),
2702
+ "cases": [
2703
+ ((chr(43) + chr(45) + chr(42),), ['ADD', 'SUB', 'MUL']),
2704
+ ((chr(61),), ['MOV']),
2705
+ ((chr(37),), ['NOP'])],
2706
+ "params": [],
2707
+ "calibration": "对照:编译后端——IR 操作到目标指令映射(指令选择)",
2708
+ },
2709
+ "分析-循环开销": {
2710
+ "task": "循环开销",
2711
+ "pattern": (
2712
+ "def loop_cost(body, trips):\n"
2713
+ " # 生效条件:参数 body/trips 合法\n"
2714
+ " # 子功能:① 调用 len\n"
2715
+ " # 执行:顺序调用\n"
2716
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2717
+ " # 循环开销:循环体指令数 × 迭代次数(热循环估算)\n"
2718
+ " return len(body) * trips\n"),
2719
+ "cases": [
2720
+ (([1, 2, 3], 10), 30),
2721
+ (([], 100), 0),
2722
+ (([1], 0), 0)],
2723
+ "params": [],
2724
+ "calibration": "对照:分析——循环代价估算(体长×趟数)",
2725
+ },
2726
+ "编译-字符串拼接": {
2727
+ "task": "字符串拼接",
2728
+ "pattern": (
2729
+ "def concat_fold(instrs):\n"
2730
+ " # 生效条件:参数 instrs 合法\n"
2731
+ " # 子功能:① 调用 len;② 调用 isinstance\n"
2732
+ " # 执行:循环迭代;顺序调用\n"
2733
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2734
+ " # 字符串拼接优化:相邻常量串拼接折叠(concat 合并)\n"
2735
+ " out = []\n"
2736
+ " i = 0\n"
2737
+ " while i < len(instrs):\n"
2738
+ " if (i + 1 < len(instrs) and instrs[i][0] == 'PUSH'\n"
2739
+ " and isinstance(instrs[i][1], str)\n"
2740
+ " and instrs[i + 1] == ('CONCAT', None)):\n"
2741
+ " nxt = instrs[i + 2] if i + 2 < len(instrs) else None\n"
2742
+ " if nxt and nxt[0] == 'PUSH' and isinstance(nxt[1], str):\n"
2743
+ " out.append(('PUSH', instrs[i][1] + nxt[1]))\n"
2744
+ " i += 3\n"
2745
+ " continue\n"
2746
+ " out.append(instrs[i])\n"
2747
+ " i += 1\n"
2748
+ " return out\n"),
2749
+ "cases": [
2750
+ (([('PUSH', '甲'), ('CONCAT', None), ('PUSH', '乙')],),
2751
+ [('PUSH', '甲乙')]),
2752
+ (([('PUSH', '甲')],), [('PUSH', '甲')]),
2753
+ (([('PUSH', 1), ('CONCAT', None), ('PUSH', '乙')],),
2754
+ [('PUSH', 1), ('CONCAT', None), ('PUSH', '乙')])],
2755
+ "params": [],
2756
+ "calibration": "对照:编译优化——相邻常量串 CONCAT 折叠(拼接合并)",
2757
+ },
2758
+ "字节码-指令大小": {
2759
+ "task": "指令大小",
2760
+ "pattern": (
2761
+ "def insn_size(instrs):\n"
2762
+ " # 生效条件:参数 instrs 合法\n"
2763
+ " # 子功能:① 调用 sum\n"
2764
+ " # 执行:顺序调用\n"
2765
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2766
+ " # 指令大小:每条指令编码字节数(紧凑字节码尺寸)\n"
2767
+ " sizes = {op: 1 for op in ('PUSH', 'STORE', 'LOAD', 'JUMP', 'ADD')}\n"
2768
+ " return sum(sizes.get(ins[0], 1) for ins in instrs)\n"),
2769
+ "cases": [
2770
+ (([('PUSH', 1), ('ADD', None)],), 2),
2771
+ (([],), 0),
2772
+ (([('NOP', None)],), 1)],
2773
+ "params": [],
2774
+ "calibration": "对照:字节码——指令编码尺寸(紧凑性度量)",
2775
+ },
2776
+ "分析-控制流图": {
2777
+ "task": "控制流图",
2778
+ "pattern": (
2779
+ "def build_cfg(blocks, jumps):\n"
2780
+ " # 生效条件:参数 blocks/jumps 合法\n"
2781
+ " # 子功能:① 主体逻辑执行\n"
2782
+ " # 执行:循环迭代\n"
2783
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2784
+ " # 控制流图:基本块间跳转关系(CFG 边构建)\n"
2785
+ " cfg = {b: [] for b in blocks}\n"
2786
+ " for src, dst in jumps:\n"
2787
+ " cfg.setdefault(src, []).append(dst)\n"
2788
+ " return cfg\n"),
2789
+ "cases": [
2790
+ ((['B0', 'B1'], [('B0', 'B1')]), {'B0': ['B1'], 'B1': []}),
2791
+ ((['B0'], []), {'B0': []}),
2792
+ (([], []), {})],
2793
+ "params": [],
2794
+ "calibration": "对照:CFG——基本块跳转边构建(控制流图)",
2795
+ },
2796
+ "编译-内联缓存": {
2797
+ "task": "内联缓存",
2798
+ "pattern": (
2799
+ "def inline_cache(state, op, cls=None, target=None):\n"
2800
+ " # 生效条件:op ∈ {learn, lookup, miss}\n"
2801
+ " # 子功能:① op 分支处理\n"
2802
+ " # 执行:按 op 分派\n"
2803
+ " # 不适用条件:op 非 {learn, lookup, miss} 时\n"
2804
+ " # 内联缓存:learn 学习 / lookup 命中 / miss 未命中(多态内联缓存)\n"
2805
+ " if op == 'learn':\n"
2806
+ " state.setdefault('cache', {})[cls] = target\n"
2807
+ " return 'learned'\n"
2808
+ " if op == 'lookup':\n"
2809
+ " return state.get('cache', {}).get(cls)\n"
2810
+ " if op == 'miss':\n"
2811
+ " state['misses'] = state.get('misses', 0) + 1\n"
2812
+ " return state['misses']\n"
2813
+ " return None\n"),
2814
+ "cases": [
2815
+ (({}, 'learn', '甲', 'f'), 'learned'),
2816
+ (({'cache': {'甲': 'f'}}, 'lookup', '甲'), 'f'),
2817
+ (({}, 'lookup', '乙'), None),
2818
+ (({}, 'miss'), 1)],
2819
+ "params": [],
2820
+ "calibration": "对照:多态内联缓存——类→方法学习/命中/未命中",
2821
+ },
2822
+ "编译-寄存器着色": {
2823
+ "task": "寄存器着色",
2824
+ "pattern": (
2825
+ "def reg_color(intervals, regs):\n"
2826
+ " # 生效条件:参数 intervals/regs 合法\n"
2827
+ " # 子功能:① 条件判定 ② 结果处理\n"
2828
+ " # 执行:循环迭代\n"
2829
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2830
+ " # 寄存器着色:活跃区间贪心分配(冲突图着色)\n"
2831
+ " assign = {}\n"
2832
+ " for var, (start, end) in intervals:\n"
2833
+ " used = {assign[v] for v, (s, e) in intervals\n"
2834
+ " if v in assign and not (e <= start or s >= end)}\n"
2835
+ " r = 0\n"
2836
+ " while r in used and r < regs:\n"
2837
+ " r += 1\n"
2838
+ " assign[var] = r if r < regs else None\n"
2839
+ " return assign\n"),
2840
+ "cases": [
2841
+ (((('a', (0, 2)), ('b', (1, 3))), 2), {'a': 0, 'b': 1}),
2842
+ (((('a', (0, 1)), ('b', (2, 3))), 2), {'a': 0, 'b': 0}),
2843
+ (((('a', (0, 2)), ('b', (1, 2))), 1), {'a': 0, 'b': None})],
2844
+ "params": [],
2845
+ "calibration": "对照:寄存器分配——活跃区间冲突着色(贪心)",
2846
+ },
2847
+ "词法-数字后缀": {
2848
+ "task": "数字后缀",
2849
+ "pattern": (
2850
+ "def num_suffix(text):\n"
2851
+ " # 生效条件:text.lower 可用;t.startswith 可用\n"
2852
+ " # 子功能:① 调用 int\n"
2853
+ " # 执行:顺序调用\n"
2854
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2855
+ " # 数字后缀:解析 0x 十六进制/0b 二进制/后缀 k/m(字面量变体)\n"
2856
+ " t = text.lower()\n"
2857
+ " if t.startswith('0x'):\n"
2858
+ " return int(t[2:], 16)\n"
2859
+ " if t.startswith('0b'):\n"
2860
+ " return int(t[2:], 2)\n"
2861
+ " if t.endswith('k'):\n"
2862
+ " return int(t[:-1]) * 1024\n"
2863
+ " if t.endswith('m'):\n"
2864
+ " return int(t[:-1]) * 1024 * 1024\n"
2865
+ " return int(t)\n"),
2866
+ "cases": [
2867
+ ((chr(48) + chr(120) + chr(102) + chr(102),), 255),
2868
+ ((chr(48) + chr(98) + chr(49) + chr(48) + chr(49),), 5),
2869
+ ((chr(50) + chr(107),), 2048),
2870
+ ((chr(49) + chr(48),), 10)],
2871
+ "params": [],
2872
+ "calibration": "对照:词法——数字字面量后缀(0x/0b/k/m)",
2873
+ },
2874
+ "分析-逃逸分析": {
2875
+ "task": "逃逸分析",
2876
+ "pattern": (
2877
+ "def escape_analysis(alloc, ops):\n"
2878
+ " # 生效条件:参数 alloc/ops 合法\n"
2879
+ " # 子功能:① 条件判定 ② 结果处理\n"
2880
+ " # 执行:顺序执行\n"
2881
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2882
+ " # 逃逸分析:对象是否逃逸函数(栈上分配可行性)\n"
2883
+ " if 'return' in ops or 'store' in ops:\n"
2884
+ " return 'escaped'\n"
2885
+ " return 'local'\n"),
2886
+ "cases": [
2887
+ ((chr(97), ['use', 'return']), 'escaped'),
2888
+ ((chr(97), ['use', 'store']), 'escaped'),
2889
+ ((chr(97), ['use', 'pass']), 'local'),
2890
+ ((chr(97), []), 'local')],
2891
+ "params": [],
2892
+ "calibration": "对照:逃逸分析——返回/存储即逃逸(栈分配优化)",
2893
+ },
2894
+ "编译-去虚拟化": {
2895
+ "task": "去虚拟化",
2896
+ "pattern": (
2897
+ "def devirt(dispatch, known):\n"
2898
+ " # 生效条件:参数 dispatch/known 合法\n"
2899
+ " # 子功能:① 调用 len\n"
2900
+ " # 执行:循环迭代;顺序调用\n"
2901
+ " # 不适用条件:输入不满足生效条件时返回 None/不执行\n"
2902
+ " # 去虚拟化:已知单实现调用替换为直接调用(内联化前提)\n"
2903
+ " out = []\n"
2904
+ " for cls, method in dispatch:\n"
2905
+ " if cls in known and len(known[cls]) == 1:\n"
2906
+ " out.append(('DIRECT', known[cls][0]))\n"
2907
+ " else:\n"
2908
+ " out.append(('VIRTUAL', method))\n"
2909
+ " return out\n"),
2910
+ "cases": [
2911
+ (((('甲', 'f'),), {'甲': ['fa']}), [('DIRECT', 'fa')]),
2912
+ (((('甲', 'f'), ('乙', 'g')), {'甲': ['fa', 'fb'], '乙': ['gb']}),
2913
+ [('VIRTUAL', 'f'), ('DIRECT', 'gb')]),
2914
+ (((('甲', 'f'),), {}), [('VIRTUAL', 'f')])],
2915
+ "params": [],
2916
+ "calibration": "对照:去虚拟化——单实现类调用改直接调用",
2917
+ },
2918
+ "编译-名实绑定": {
2919
+ "task": "名实绑定",
2920
+ "pattern": (
2921
+ "def resolve_binding(scope_stack, name):\n"
2922
+ " # 名实绑定(以名举实):从内层到外层查找名的绑定(名实校验编译期版)\n"
2923
+ " # 生效条件:scope_stack 为作用域栈(内层在前);name 为待查符号名\n"
2924
+ " # 子功能:① 逆序遍历作用域 ② 命中即返回绑定 ③ 全未命中返回未绑定\n"
2925
+ " # 执行:reversed 逐层 dict 查键,内层遮蔽外层\n"
2926
+ " # 不适用条件:name 为空串时直接未绑定;本函数不修改作用域栈内容\n"
2927
+ " for scope in reversed(scope_stack):\n"
2928
+ " if name in scope:\n"
2929
+ " return (True, scope[name])\n"
2930
+ " return (False, None)\n"),
2931
+ "cases": [
2932
+ (([{"x": 1}], "x"), (True, 1)),
2933
+ (([{"x": 1}, {"y": 2}], "y"), (True, 2)),
2934
+ (([{"x": 1}, {"x": 2}], "x"), (True, 2)),
2935
+ (([{"x": 1}], "z"), (False, None)),
2936
+ (([], "a"), (False, None))],
2937
+ "params": [],
2938
+ "calibration": "对照:以名举实(v0.2 名实校验)编译期绑定——作用域链逐层查找,内层遮蔽外层;未绑定→(False, None)",
2939
+ },
2940
+ "编译-信任流分析": {
2941
+ "task": "信任流分析",
2942
+ "pattern": (
2943
+ "def trust_flow(expr, env):\n"
2944
+ " # 信任流分析(信任传播):德——编译期信任传播(与=取min,或=取max,非=1-t,名=查env,字面量=1.0)\n"
2945
+ " # 生效条件:expr 为表达式树(tuple 操作节点/字符串名/字面量);env 为名→信任值映射\n"
2946
+ " # 子功能:① 操作节点递归传播 ② 名称查 env ③ 字面量视为完全可信\n"
2947
+ " # 执行:AND=min / OR=max / NOT=1-t 递归归约\n"
2948
+ " # 不适用条件:env 中未收录的名称按不可信(0.0)处理;不修改 env 内容\n"
2949
+ " if isinstance(expr, tuple):\n"
2950
+ " op = expr[0]\n"
2951
+ " if op == \"AND\":\n"
2952
+ " return min(trust_flow(expr[1], env), trust_flow(expr[2], env))\n"
2953
+ " if op == \"OR\":\n"
2954
+ " return max(trust_flow(expr[1], env), trust_flow(expr[2], env))\n"
2955
+ " if op == \"NOT\":\n"
2956
+ " return round(1.0 - trust_flow(expr[1], env), 3)\n"
2957
+ " if isinstance(expr, str):\n"
2958
+ " return env.get(expr, 0.0)\n"
2959
+ " return 1.0\n"),
2960
+ "cases": [
2961
+ ((("AND", "x", "y"), {"x": 0.8, "y": 0.6}), 0.6),
2962
+ ((("OR", "x", "y"), {"x": 0.8, "y": 0.6}), 0.8),
2963
+ ((("NOT", "x"), {"x": 0.8}), 0.2),
2964
+ (("z", {"z": 0.9}), 0.9),
2965
+ (("u", {"x": 0.8}), 0.0),
2966
+ ((42, {}), 1.0),
2967
+ ((("AND", ("NOT", "x"), "y"), {"x": 0.8, "y": 0.5}), 0.2)],
2968
+ "params": [],
2969
+ "calibration": "对照:德=信任累积(v0.2 信任语义)的编译期数据流——与取min、或取max、非取补;字面量完全可信、未收录名不可信",
2970
+ },
2971
+ "VM-短路求值": {
2972
+ "task": "短路求值",
2973
+ "pattern": (
2974
+ "def vm_short_circuit(left, op, right):\n"
2975
+ " # 短路求值(短路逻辑):与=左假不求右,或=左真不求右(VM 逻辑执行语义)\n"
2976
+ " # 生效条件:op ∈ {且, 或};left/right 为操作数值\n"
2977
+ " # 子功能:① 且/或短路判定 ② 需要时求右值 ③ 返回 (结果, 右是否求值)\n"
2978
+ " # 执行:且左假直返 False、或左真直返 True——右侧仅必要时求值\n"
2979
+ " # 不适用条件:left 为空/非法时;op 非 {且, 或} 时\n"
2980
+ " # 返回 (结果, 右操作数是否被求值)\n"
2981
+ " if op == '且':\n"
2982
+ " if not left:\n"
2983
+ " return (False, False)\n"
2984
+ " return (bool(right), True)\n"
2985
+ " if op == '或':\n"
2986
+ " if left:\n"
2987
+ " return (True, False)\n"
2988
+ " return (bool(right), True)\n"
2989
+ " return (None, False)\n"),
2990
+ "cases": [
2991
+ ((0, '且', 5), (False, False)),
2992
+ ((1, '且', 5), (True, True)),
2993
+ ((1, '且', 0), (False, True)),
2994
+ ((1, '或', 5), (True, False)),
2995
+ ((0, '或', 5), (True, True)),
2996
+ ((0, '或', 0), (False, True)),
2997
+ ((1, '异或', 5), (None, False))],
2998
+ "params": [],
2999
+ "calibration": "对照:逻辑表达式(v0.2 短路跳转字节码)的 VM 执行端——与/或短路,右侧仅必要时求值",
3000
+ },
3001
+ }
3002
+
3003
+
3004
+ def route_compiler_unit(question):
3005
+ """任务识别(问题 → 编译器单元,最长关键词优先)
3006
+ 检索面:task/uid + KCCS v0.2 触发词索引(trigger_words_index.json,白箱回写)
3007
+ ——触发词是条件路由图检索面的第一入口(对齐 lingshu-skills/Agent Skills description)。"""
3008
+ import os, json
3009
+ best, best_len = None, 0
3010
+ for uid, u in COMPILER_UNITS.items():
3011
+ for kw in (u["task"], uid):
3012
+ if kw in question and len(kw) > best_len:
3013
+ best, best_len = uid, len(kw)
3014
+ # 触发词索引扩展(存在则加载;缺失回退原逻辑不退化)
3015
+ try:
3016
+ _idx_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "trigger_words_index.json")
3017
+ _idx = json.load(open(_idx_path, encoding="utf-8")).get("compiler", {})
3018
+ for uid, trigs in _idx.items():
3019
+ for t in trigs:
3020
+ if t and t in question and len(t) > best_len:
3021
+ best, best_len = uid, len(t)
3022
+ except Exception:
3023
+ pass
3024
+ return best
3025
+
3026
+
3027
+ if __name__ == "__main__":
3028
+ print("=== 编译器代码条件单元库(白箱自举写编译器 · 校准参考)===\n")
3029
+ for uid, u in COMPILER_UNITS.items():
3030
+ print(f"[{uid}] 任务={u['task']} 样例数={len(u['cases'])}")
3031
+ print(f" 校准: {u['calibration']}")
3032
+ print(f"\n=== 判定 ===\n编译器单元库: "
3033
+ f"{'✔ 5 单元就绪(每单元含模式+样例+校准基准)' if len(COMPILER_UNITS) >= 4 else '✘'}")