clm-kernel 0.0.0__py3-none-any.whl

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 (333) hide show
  1. clm/__init__.py +230 -0
  2. clm/__main__.py +25 -0
  3. clm/cross_cutting/__init__.py +50 -0
  4. clm/cross_cutting/_test_runner.py +36 -0
  5. clm/cross_cutting/async_utils.py +25 -0
  6. clm/cross_cutting/cel_builder.py +123 -0
  7. clm/cross_cutting/cel_converter.py +697 -0
  8. clm/cross_cutting/cel_engine.py +252 -0
  9. clm/cross_cutting/cel_ops.py +72 -0
  10. clm/cross_cutting/cel_ops_db.py +157 -0
  11. clm/cross_cutting/cel_ops_files.py +99 -0
  12. clm/cross_cutting/cel_ops_state.py +71 -0
  13. clm/cross_cutting/cel_ops_strings.py +64 -0
  14. clm/cross_cutting/cel_resolver.py +63 -0
  15. clm/cross_cutting/cel_slices.py +56 -0
  16. clm/cross_cutting/cel_store.py +330 -0
  17. clm/cross_cutting/clm_logger.py +140 -0
  18. clm/cross_cutting/config/__init__.py +155 -0
  19. clm/cross_cutting/config/config_constants.py +392 -0
  20. clm/cross_cutting/config/env_parameters.py +90 -0
  21. clm/cross_cutting/config/logging.py +378 -0
  22. clm/cross_cutting/config/settings.py +504 -0
  23. clm/cross_cutting/context.py +5 -0
  24. clm/cross_cutting/domain_models.py +55 -0
  25. clm/cross_cutting/domain_types.py +61 -0
  26. clm/cross_cutting/effects.py +67 -0
  27. clm/cross_cutting/errors.py +153 -0
  28. clm/cross_cutting/governance.py +331 -0
  29. clm/cross_cutting/guards.py +41 -0
  30. clm/cross_cutting/mcard.py +321 -0
  31. clm/cross_cutting/native.py +185 -0
  32. clm/cross_cutting/observability.py +289 -0
  33. clm/cross_cutting/pcard.py +434 -0
  34. clm/cross_cutting/registry.py +71 -0
  35. clm/cross_cutting/resources.py +84 -0
  36. clm/cross_cutting/secrets.py +44 -0
  37. clm/cross_cutting/subprocess_utils.py +118 -0
  38. clm/cross_cutting/telemetry.py +164 -0
  39. clm/cross_cutting/testing/__init__.py +8 -0
  40. clm/cross_cutting/testing/comparator.py +187 -0
  41. clm/cross_cutting/testing/datasets.py +87 -0
  42. clm/cross_cutting/timeutil.py +20 -0
  43. clm/cross_cutting/types/new_type_check.py +0 -0
  44. clm/cross_cutting/utils/__init__.py +1 -0
  45. clm/cross_cutting/utils/url_safety.py +50 -0
  46. clm/cross_cutting/vcard.py +560 -0
  47. clm/cross_cutting/writer.py +118 -0
  48. clm/layer0/README.md +50 -0
  49. clm/layer0/__init__.py +223 -0
  50. clm/layer0/algebra.py +60 -0
  51. clm/layer0/algebra_baldwin.py +133 -0
  52. clm/layer0/algebra_baldwin_generators.py +36 -0
  53. clm/layer0/algebra_equivalence.py +262 -0
  54. clm/layer0/algebra_ingest.py +306 -0
  55. clm/layer0/algebra_manifest_io.py +156 -0
  56. clm/layer0/assembler.py +481 -0
  57. clm/layer0/cel/__init__.py +23 -0
  58. clm/layer0/cel_eval.py +491 -0
  59. clm/layer0/codec.py +106 -0
  60. clm/layer0/context.py +122 -0
  61. clm/layer0/db.py +160 -0
  62. clm/layer0/exceptions.py +73 -0
  63. clm/layer0/fibration.py +106 -0
  64. clm/layer0/gates.py +50 -0
  65. clm/layer0/hash.py +80 -0
  66. clm/layer0/loader.py +826 -0
  67. clm/layer0/math_utils.py +163 -0
  68. clm/layer0/mcard.py +96 -0
  69. clm/layer0/model/__init__.py +0 -0
  70. clm/layer0/model/action.py +223 -0
  71. clm/layer0/model/card.py +280 -0
  72. clm/layer0/model/card_triad.py +427 -0
  73. clm/layer0/model/compatibility.py +60 -0
  74. clm/layer0/model/dictionary.py +46 -0
  75. clm/layer0/model/dots.py +331 -0
  76. clm/layer0/model/event_producer.py +88 -0
  77. clm/layer0/model/g_time.py +89 -0
  78. clm/layer0/model/handle.py +163 -0
  79. clm/layer0/model/hash/__init__.py +6 -0
  80. clm/layer0/model/hash/algorithms/__init__.py +3 -0
  81. clm/layer0/model/hash/algorithms/custom_hash.py +7 -0
  82. clm/layer0/model/hash/algorithms/local_sha256.py +178 -0
  83. clm/layer0/model/hash/constants.py +53 -0
  84. clm/layer0/model/hash/enums.py +60 -0
  85. clm/layer0/model/hash/validator.py +307 -0
  86. clm/layer0/model/interpreter.py +275 -0
  87. clm/layer0/model/pagination.py +45 -0
  88. clm/layer0/model/pcard.py +716 -0
  89. clm/layer0/model/schema.py +44 -0
  90. clm/layer0/model/utils/__init__.py +1 -0
  91. clm/layer0/model/utils/content_analyzer.py +152 -0
  92. clm/layer0/model/validators/__init__.py +1 -0
  93. clm/layer0/model/validators/base_validator.py +44 -0
  94. clm/layer0/model/validators/binary_validator.py +66 -0
  95. clm/layer0/model/validators/text_validator.py +82 -0
  96. clm/layer0/model/validators/validation_registry.py +49 -0
  97. clm/layer0/model/vcard.py +823 -0
  98. clm/layer0/model/vcard_ext/__init__.py +39 -0
  99. clm/layer0/model/vcard_ext/core.py +60 -0
  100. clm/layer0/model/vcard_ext/network.py +23 -0
  101. clm/layer0/model/vcard_ext/observability.py +63 -0
  102. clm/layer0/model/vcard_ext/storage.py +60 -0
  103. clm/layer0/model/vcard_ext/vendors.py +211 -0
  104. clm/layer0/model/vcard_sandwich.py +119 -0
  105. clm/layer0/model/vcard_vocabulary.py +463 -0
  106. clm/layer0/model/workflow.py +274 -0
  107. clm/layer0/narrative.py +431 -0
  108. clm/layer0/ontology/collection.py +125 -0
  109. clm/layer0/parser.py +429 -0
  110. clm/layer0/relations.py +73 -0
  111. clm/layer0/rule_evaluator.py +251 -0
  112. clm/layer0/schema/__init__.py +38 -0
  113. clm/layer0/schema/ddl.py +97 -0
  114. clm/layer0/templates/abstract.yaml +99 -0
  115. clm/layer0/templates/balanced.yaml +253 -0
  116. clm/layer0/templates/concrete.yaml +172 -0
  117. clm/layer0/type_registry.py +223 -0
  118. clm/layer0/types.py +204 -0
  119. clm/layer0/utils.py +886 -0
  120. clm/layer0/verifier_core.py +262 -0
  121. clm/layer1/__init__.py +31 -0
  122. clm/layer1/action_dispatcher.py +275 -0
  123. clm/layer1/adapter_registry.py +233 -0
  124. clm/layer1/algebra_baldwin_generators.py +192 -0
  125. clm/layer1/arrow_compiler.py +525 -0
  126. clm/layer1/batch_processor.py +152 -0
  127. clm/layer1/cel/__init__.py +27 -0
  128. clm/layer1/cel/builder.py +173 -0
  129. clm/layer1/engine.py +759 -0
  130. clm/layer1/engine_async.py +89 -0
  131. clm/layer1/eval_callback.py +49 -0
  132. clm/layer1/gate_composer.py +229 -0
  133. clm/layer1/hoare_sandwich.py +298 -0
  134. clm/layer1/identity_guard.py +348 -0
  135. clm/layer1/matrix.py +138 -0
  136. clm/layer1/neural_runtime.py +221 -0
  137. clm/layer1/operations/__init__.py +123 -0
  138. clm/layer1/operations/augment.py +156 -0
  139. clm/layer1/operations/base.py +109 -0
  140. clm/layer1/operations/builtins.py +338 -0
  141. clm/layer1/operations/dispatch.py +144 -0
  142. clm/layer1/operations/exclude.py +107 -0
  143. clm/layer1/operations/handle.py +197 -0
  144. clm/layer1/operations/identity.py +139 -0
  145. clm/layer1/operations/invert.py +66 -0
  146. clm/layer1/operations/loader.py +116 -0
  147. clm/layer1/operations/manipulators/__init__.py +23 -0
  148. clm/layer1/operations/manipulators/document.py +211 -0
  149. clm/layer1/operations/manipulators/media.py +134 -0
  150. clm/layer1/operations/manipulators/structured.py +159 -0
  151. clm/layer1/operations/manipulators/tabular.py +334 -0
  152. clm/layer1/operations/port.py +65 -0
  153. clm/layer1/operations/services.py +529 -0
  154. clm/layer1/operations/split.py +117 -0
  155. clm/layer1/operations/substitute.py +75 -0
  156. clm/layer1/petri.py +1052 -0
  157. clm/layer1/pocketflow_orchestrator.py +408 -0
  158. clm/layer1/pocketflow_scheduler.py +519 -0
  159. clm/layer1/protocols.py +197 -0
  160. clm/layer1/runtime_adapter.py +718 -0
  161. clm/layer1/runtimes/__init__.py +71 -0
  162. clm/layer1/runtimes/_generated_assertions.py +125 -0
  163. clm/layer1/runtimes/_generated_types.py +42 -0
  164. clm/layer1/runtimes/base.py +265 -0
  165. clm/layer1/runtimes/binary.py +101 -0
  166. clm/layer1/runtimes/factory.py +203 -0
  167. clm/layer1/runtimes/javascript.py +321 -0
  168. clm/layer1/runtimes/javascript_runtime.js +33 -0
  169. clm/layer1/runtimes/js_scripts/isomorphism.mjs +22 -0
  170. clm/layer1/runtimes/js_scripts/loader.mjs +52 -0
  171. clm/layer1/runtimes/lambda_calc.py +126 -0
  172. clm/layer1/runtimes/python.py +288 -0
  173. clm/layer1/runtimes/python_runtime.py +41 -0
  174. clm/layer1/runtimes/script.py +114 -0
  175. clm/layer1/sandbox.py +334 -0
  176. clm/layer1/savepoint_guard.py +136 -0
  177. clm/layer1/sparse_net.py +122 -0
  178. clm/layer1/spec_tester.py +165 -0
  179. clm/layer1/store.py +295 -0
  180. clm/layer1/test_runner.py +498 -0
  181. clm/layer1/type_inspector.py +166 -0
  182. clm/layer1/verifier.py +772 -0
  183. clm/layer1/vm.py +91 -0
  184. clm/layer2/__init__.py +78 -0
  185. clm/layer2/card_collection.py +678 -0
  186. clm/layer2/classifier.py +479 -0
  187. clm/layer2/engine/__init__.py +1 -0
  188. clm/layer2/engine/abstract_sql_engine.py +320 -0
  189. clm/layer2/engine/base.py +193 -0
  190. clm/layer2/engine/duckdb_engine.py +576 -0
  191. clm/layer2/engine/sqlite_engine.py +518 -0
  192. clm/layer2/fiber/__init__.py +31 -0
  193. clm/layer2/fiber/context.py +89 -0
  194. clm/layer2/fiber/disposable.py +163 -0
  195. clm/layer2/fiber/fiber.py +125 -0
  196. clm/layer2/fiber/hoare.py +191 -0
  197. clm/layer2/file_io.py +376 -0
  198. clm/layer2/file_registrar.py +77 -0
  199. clm/layer2/ingest.py +202 -0
  200. clm/layer2/lineage.py +322 -0
  201. clm/layer2/mcard_fs.py +262 -0
  202. clm/layer2/merkle.py +11 -0
  203. clm/layer2/mime.py +244 -0
  204. clm/layer2/mime_detector.py +245 -0
  205. clm/layer2/private_collection.py +118 -0
  206. clm/layer2/shared_store.py +11 -0
  207. clm/layer2/storage/__init__.py +190 -0
  208. clm/layer2/storage/db_bitemporal.py +141 -0
  209. clm/layer2/storage/db_driver.py +331 -0
  210. clm/layer2/storage/db_hyperlinks.py +214 -0
  211. clm/layer2/storage/db_pool.py +139 -0
  212. clm/layer2/storage/db_repository.py +229 -0
  213. clm/layer2/storage/savepoint.py +78 -0
  214. clm/layer2/storage/sqlite_wal.py +74 -0
  215. clm/layer2/tridb.py +245 -0
  216. clm/layer2/vcard_receipt.py +71 -0
  217. clm/layer2/vfs.py +17 -0
  218. clm/layer3/__init__.py +141 -0
  219. clm/layer3/agency/__init__.py +19 -0
  220. clm/layer3/agency/config.py +220 -0
  221. clm/layer3/agency/providers/__init__.py +15 -0
  222. clm/layer3/agency/providers/base.py +91 -0
  223. clm/layer3/agency/providers/mlc_llm.py +169 -0
  224. clm/layer3/agency/providers/ollama.py +203 -0
  225. clm/layer3/agency/router.py +71 -0
  226. clm/layer3/agency/runtime.py +524 -0
  227. clm/layer3/gateway.py +353 -0
  228. clm/layer3/open_interpreter_adapter.py +159 -0
  229. clm/layer3/rag/__init__.py +70 -0
  230. clm/layer3/rag/cli.py +228 -0
  231. clm/layer3/rag/config.py +153 -0
  232. clm/layer3/rag/embeddings/__init__.py +16 -0
  233. clm/layer3/rag/embeddings/base.py +79 -0
  234. clm/layer3/rag/embeddings/ollama.py +211 -0
  235. clm/layer3/rag/embeddings/vision.py +290 -0
  236. clm/layer3/rag/engine.py +276 -0
  237. clm/layer3/rag/graph/__init__.py +22 -0
  238. clm/layer3/rag/graph/community.py +198 -0
  239. clm/layer3/rag/graph/engine.py +433 -0
  240. clm/layer3/rag/graph/extractor.py +255 -0
  241. clm/layer3/rag/graph/schema.py +115 -0
  242. clm/layer3/rag/graph/store.py +641 -0
  243. clm/layer3/rag/indexer.py +333 -0
  244. clm/layer3/rag/llm_providers.json +52 -0
  245. clm/layer3/rag/semantic_versioning.py +313 -0
  246. clm/layer3/rag/vector/__init__.py +28 -0
  247. clm/layer3/rag/vector/handle_vector_store.py +749 -0
  248. clm/layer3/rag/vector/schema.py +151 -0
  249. clm/layer3/rag/vector/store.py +632 -0
  250. clm/layer3/reticulum/__init__.py +55 -0
  251. clm/layer3/reticulum/bridge.py +74 -0
  252. clm/layer3/reticulum/daemon.py +88 -0
  253. clm/layer3/reticulum/discovery.py +164 -0
  254. clm/layer3/reticulum/identity.py +107 -0
  255. clm/layer3/reticulum/media.py +148 -0
  256. clm/layer3/reticulum/transport.py +133 -0
  257. clm/layer3/satori/__init__.py +209 -0
  258. clm/layer3/satori/alpha_conversion.py +168 -0
  259. clm/layer3/satori/beta_reduction.py +359 -0
  260. clm/layer3/satori/continuation.py +38 -0
  261. clm/layer3/satori/eta_conversion.py +205 -0
  262. clm/layer3/satori/free_variables.py +163 -0
  263. clm/layer3/satori/io_effects.py +370 -0
  264. clm/layer3/satori/lambda_runtime.py +726 -0
  265. clm/layer3/satori/lambda_term.py +230 -0
  266. clm/layer3/satori/sheaf_audit.py +261 -0
  267. clm/layer3/satori/speech_act.py +279 -0
  268. clm/layer4/README.md +9 -0
  269. clm/layer4/__init__.py +67 -0
  270. clm/layer4/_sovereign_executor.py +580 -0
  271. clm/layer4/action_commands.py +719 -0
  272. clm/layer4/api.py +236 -0
  273. clm/layer4/bootstrap/__init__.py +13 -0
  274. clm/layer4/bootstrap/bootstrapper.py +118 -0
  275. clm/layer4/bootstrap/cleanup.py +44 -0
  276. clm/layer4/bootstrap/clm_hooks.py +49 -0
  277. clm/layer4/bootstrap/genesis.py +77 -0
  278. clm/layer4/bootstrap/injection.py +125 -0
  279. clm/layer4/cli.py +549 -0
  280. clm/layer4/collection_manager.py +553 -0
  281. clm/layer4/commands/__init__.py +81 -0
  282. clm/layer4/commands/action_cmd.py +42 -0
  283. clm/layer4/commands/check_cmd.py +82 -0
  284. clm/layer4/commands/envelope.py +73 -0
  285. clm/layer4/commands/evaluate_cmd.py +224 -0
  286. clm/layer4/commands/mcard_cmd.py +24 -0
  287. clm/layer4/commands/petri_cmd.py +92 -0
  288. clm/layer4/commands/tridb_cmd.py +319 -0
  289. clm/layer4/commands/version_cmd.py +27 -0
  290. clm/layer4/diff_commands.py +167 -0
  291. clm/layer4/eoa_sponsor.py +232 -0
  292. clm/layer4/events.py +69 -0
  293. clm/layer4/flux_gateway.py +133 -0
  294. clm/layer4/gateway.py +91 -0
  295. clm/layer4/loader.py +307 -0
  296. clm/layer4/mcard_commands.py +166 -0
  297. clm/layer4/membrane.py +273 -0
  298. clm/layer4/navigation.py +50 -0
  299. clm/layer4/protocol/protocol_entry_python.py +108 -0
  300. clm/layer4/protocol/python_sync.py +126 -0
  301. clm/layer4/runner.py +150 -0
  302. clm/layer4/satori.py +262 -0
  303. clm/layer4/server/python_sync_client.py +150 -0
  304. clm/layer4/server/python_sync_server.py +139 -0
  305. clm/layer4/server/service_api.py +315 -0
  306. clm/layer4/server/start_servers.py +107 -0
  307. clm/layer4/server/stop_servers.py +24 -0
  308. clm/layer4/simulated_optimization_fix.py +0 -0
  309. clm/layer4/storage.py +463 -0
  310. clm/layer4/tridb_admin.py +268 -0
  311. clm/layer4/websocket/test_ws_client.py +104 -0
  312. clm/layer4/websocket/test_ws_server.py +138 -0
  313. clm/layer4/websocket/ws_server_local.py +160 -0
  314. clm/layer5/__init__.py +51 -0
  315. clm/layer5/async_batch_writer.py +133 -0
  316. clm/layer5/learning.py +276 -0
  317. clm/layer5/telemetry_hook.py +107 -0
  318. clm/layer5/type_lattice.py +238 -0
  319. clm/py.typed +0 -0
  320. clm/schemas/__init__.py +652 -0
  321. clm/schemas/abstract_face_schema.yaml +77 -0
  322. clm/schemas/cel_schema.yaml +416 -0
  323. clm/schemas/lifecycle/__init__.py +45 -0
  324. clm/schemas/lifecycle/models.py +123 -0
  325. clm/schemas/lifecycle/service.py +364 -0
  326. clm/schemas/mcard_schema.sql +192 -0
  327. clm/schemas/mcard_vector_schema.sql +283 -0
  328. clm/schemas/mlp-context-v1.json +91 -0
  329. clm_kernel-0.0.0.dist-info/METADATA +121 -0
  330. clm_kernel-0.0.0.dist-info/RECORD +333 -0
  331. clm_kernel-0.0.0.dist-info/WHEEL +4 -0
  332. clm_kernel-0.0.0.dist-info/entry_points.txt +3 -0
  333. clm_kernel-0.0.0.dist-info/licenses/LICENSE +21 -0
clm/__init__.py ADDED
@@ -0,0 +1,230 @@
1
+ """CLM Python Engine Package (Sprint 384 / Layer-Stratified).
2
+
3
+ Exposes the clean public API of the CLM execution engine.
4
+ New code should import from specific layer packages:
5
+ from clm.layer0.db import CLMDB
6
+ from clm.layer1.petri import petri_run_net
7
+
8
+ The top-level re-exports below are maintained for backward compatibility,
9
+ with higher-strata symbols loaded lazily (PEP 562) to prevent upward import leakage.
10
+ """
11
+
12
+ from typing import Any
13
+
14
+ # -- Layer 0: Kenotic Core ---------------------------------------
15
+ from clm.cross_cutting.mcard import Card
16
+ from clm.cross_cutting.native import (
17
+ HAS_RUST_ACCELERATION,
18
+ clm_hash_file_fast,
19
+ compute_blake3,
20
+ crdt_merge_fast,
21
+ evaluate_manifest,
22
+ )
23
+ from clm.cross_cutting.pcard import BalancedRunner, OperationRegistry
24
+ from clm.cross_cutting.telemetry import jsonl_emit
25
+ from clm.cross_cutting.vcard import Marking, VCardSandwich, vcard_sandwich
26
+ from clm.layer0.context import CLMContext
27
+ from clm.layer0.exceptions import (
28
+ AlgebraError,
29
+ CLMError,
30
+ DatabaseError,
31
+ ExecutionError,
32
+ GatewayError,
33
+ TypeValidationError,
34
+ )
35
+ from clm.layer0.math_utils import math_gcd, math_lcm, solve_nullspace
36
+ from clm.layer0.type_registry import TypeRegistry
37
+ from clm.layer0.utils import (
38
+ clm_hash_file,
39
+ clm_hash_string,
40
+ detect_host_os,
41
+ extract_python_script_from_yaml,
42
+ get_bash_command,
43
+ is_docker_live,
44
+ normalize_line_endings_bytes,
45
+ normalize_line_endings_str,
46
+ resolve_clm_path,
47
+ verify_file_hash,
48
+ )
49
+
50
+ # -- Lazy Higher-Strata Symbols (PEP 562) -------------------------
51
+ _LAZY_HIGHER_STRATA = {
52
+ # Layer 1: CPN VM & Verifiers
53
+ "ColoredPetriVM": ("clm.layer1.petri", "ColoredPetriVM"),
54
+ "petri_run_net": ("clm.layer1.petri", "petri_run_net"),
55
+ "compose_conditions_cmd": ("clm.layer1.gate_composer", "compose_conditions_cmd"),
56
+ "run_nested_evaluate": ("clm.layer1.gate_composer", "run_nested_evaluate"),
57
+ "evaluate_compose": ("clm.layer1.runtime_adapter", "evaluate_compose"),
58
+ "evaluate_polyglot": ("clm.layer1.runtime_adapter", "evaluate_polyglot"),
59
+ "run_internal_reference_test": ("clm.layer1.runtime_adapter", "run_internal_reference_test"),
60
+ "run_algebra_op": ("clm.layer1.test_runner", "run_algebra_op"),
61
+ "test_baldwin_operators": ("clm.layer1.test_runner", "test_baldwin_operators"),
62
+ "check_precondition_py": ("clm.layer1.verifier", "check_precondition_py"),
63
+ "emit_exec_mcard_py": ("clm.layer1.verifier", "emit_exec_mcard_py"),
64
+ "get_load_manifest": ("clm.layer1.verifier", "get_load_manifest"),
65
+ "get_load_manifest_str": ("clm.layer1.verifier", "get_load_manifest_str"),
66
+ "normalize_output_py": ("clm.layer1.verifier", "normalize_output_py"),
67
+ "resolve_active_hashes_py": ("clm.layer1.verifier", "resolve_active_hashes_py"),
68
+ "validate_postcondition": ("clm.layer1.verifier", "validate_postcondition"),
69
+ "verify_precondition": ("clm.layer1.verifier", "verify_precondition"),
70
+ # Layer 0 & Storage Substrate: Kenotic Core & Persistence (Loaded lazily)
71
+ "assess_equivalence_py": ("clm.layer0.algebra", "assess_equivalence_py"),
72
+ "directory_fs_scan_py": ("clm.layer0.algebra", "directory_fs_scan_py"),
73
+ "directory_to_db_py": ("clm.layer0.algebra", "directory_to_db_py"),
74
+ "load_normalized_manifest": ("clm.layer0.algebra", "load_normalized_manifest"),
75
+ "CLMDB": ("clm.layer2.storage", "CLMDB"),
76
+ "CLMRepository": ("clm.layer2.storage", "CLMRepository"),
77
+ "init_tridb": ("clm.layer2.storage", "init_tridb"),
78
+ "memorize_mcard": ("clm.layer2.storage", "memorize_mcard"),
79
+ "register_handle": ("clm.layer2.storage", "register_handle"),
80
+ "resolve_handle_content": ("clm.layer2.storage", "resolve_handle_content"),
81
+ "resolve_handle_hash": ("clm.layer2.storage", "resolve_handle_hash"),
82
+ # Layer 2: Storage Adapters & Classifiers
83
+ "classify_clm": ("clm.layer2.classifier", "classify_clm"),
84
+ "detect_dialect": ("clm.layer2.classifier", "detect_dialect"),
85
+ "register_file_mcard_py": ("clm.layer2.file_registrar", "register_file_mcard_py"),
86
+ "detect_encoding": ("clm.layer2.mime", "detect_encoding"),
87
+ "detect_mime": ("clm.layer2.mime", "detect_mime"),
88
+ "get_magic_rules": ("clm.layer2.mime", "get_magic_rules"),
89
+ "is_binary": ("clm.layer2.mime", "is_binary"),
90
+ "is_text": ("clm.layer2.mime", "is_text"),
91
+ "validate": ("clm.layer2.mime", "validate"),
92
+ # Layer 3: Network Gateway
93
+ "remote_handle_resolver": ("clm.layer3.gateway", "remote_handle_resolver"),
94
+ "route_handle": ("clm.layer3.gateway", "route_handle"),
95
+ # Layer 4: CLI & Sovereign Execution
96
+ "evaluate_cmd": ("clm.layer4.cli", "evaluate_cmd"),
97
+ "main": ("clm.layer4._sovereign_executor", "main"),
98
+ # Layer 5: Continuous Learning Stratum (Sprint 386)
99
+ "ContinuousLearningEngine": ("clm.layer5.learning", "ContinuousLearningEngine"),
100
+ "evaluate_epistemic_fitness": ("clm.layer5.learning", "evaluate_epistemic_fitness"),
101
+ "compute_delta_e": ("clm.layer5.learning", "compute_delta_e"),
102
+ "seal_epoch": ("clm.layer5.learning", "seal_epoch"),
103
+ "advance_boundary": ("clm.layer5.learning", "advance_boundary"),
104
+ "close_gamma_loop": ("clm.layer5.learning", "close_gamma_loop"),
105
+ "extract_type_lattice": ("clm.layer5.type_lattice", "extract_type_lattice"),
106
+ "generate_lattice_html": ("clm.layer5.type_lattice", "generate_lattice_html"),
107
+ "verify_type_univalence": ("clm.layer5.type_lattice", "verify_type_univalence"),
108
+ }
109
+
110
+ # Wire cross-cutting dependency inversion resolvers lazily
111
+ from clm.cross_cutting.cel_builder import register_store_builder_resolver
112
+ from clm.cross_cutting.native import register_manifest_evaluator_resolver
113
+ from clm.cross_cutting.pcard import register_classifier_hook_resolver
114
+
115
+ register_store_builder_resolver(
116
+ lambda: getattr(__import__("clm.layer1.cel.builder", fromlist=["build_store"]), "build_store", None)
117
+ )
118
+ register_manifest_evaluator_resolver(
119
+ lambda: getattr(__import__("clm.layer1.verifier", fromlist=["run_nested_evaluate"]), "run_nested_evaluate", None)
120
+ )
121
+ register_classifier_hook_resolver(
122
+ lambda: (
123
+ getattr(__import__("clm.layer2.classifier", fromlist=["classify_clm"]), "classify_clm", None),
124
+ getattr(__import__("clm.layer2.classifier", fromlist=["detect_dialect"]), "detect_dialect", None),
125
+ )
126
+ )
127
+
128
+
129
+ def __getattr__(name: str) -> Any:
130
+ if name in _LAZY_HIGHER_STRATA:
131
+ module_path, attr_name = _LAZY_HIGHER_STRATA[name]
132
+ import importlib
133
+
134
+ try:
135
+ mod = importlib.import_module(module_path)
136
+ val = getattr(mod, attr_name)
137
+ except (ImportError, AttributeError):
138
+ val = None
139
+ globals()[name] = val
140
+ return val
141
+ raise AttributeError(f"module 'clm' has no attribute '{name}'")
142
+
143
+
144
+ __all__ = [
145
+ "CLMError",
146
+ "TypeValidationError",
147
+ "DatabaseError",
148
+ "ExecutionError",
149
+ "AlgebraError",
150
+ "GatewayError",
151
+ "resolve_clm_path",
152
+ "clm_hash_file",
153
+ "clm_hash_string",
154
+ "detect_host_os",
155
+ "is_docker_live",
156
+ "get_bash_command",
157
+ "normalize_line_endings_bytes",
158
+ "normalize_line_endings_str",
159
+ "verify_file_hash",
160
+ "extract_python_script_from_yaml",
161
+ "CLMDB",
162
+ "CLMRepository",
163
+ "init_tridb",
164
+ "memorize_mcard",
165
+ "resolve_handle_content",
166
+ "resolve_handle_hash",
167
+ "register_handle",
168
+ "math_gcd",
169
+ "math_lcm",
170
+ "solve_nullspace",
171
+ "TypeRegistry",
172
+ "CLMContext",
173
+ "load_normalized_manifest",
174
+ "assess_equivalence_py",
175
+ "directory_fs_scan_py",
176
+ "directory_to_db_py",
177
+ "petri_run_net",
178
+ "ColoredPetriVM",
179
+ "compose_conditions_cmd",
180
+ "run_nested_evaluate",
181
+ "run_internal_reference_test",
182
+ "evaluate_polyglot",
183
+ "evaluate_compose",
184
+ "get_load_manifest_str",
185
+ "get_load_manifest",
186
+ "verify_precondition",
187
+ "validate_postcondition",
188
+ "emit_exec_mcard_py",
189
+ "resolve_active_hashes_py",
190
+ "check_precondition_py",
191
+ "normalize_output_py",
192
+ "run_algebra_op",
193
+ "test_baldwin_operators",
194
+ "classify_clm",
195
+ "detect_dialect",
196
+ "register_file_mcard_py",
197
+ "detect_encoding",
198
+ "is_binary",
199
+ "is_text",
200
+ "get_magic_rules",
201
+ "detect_mime",
202
+ "validate",
203
+ "route_handle",
204
+ "remote_handle_resolver",
205
+ "evaluate_cmd",
206
+ "main",
207
+ "jsonl_emit",
208
+ "VCardSandwich",
209
+ "vcard_sandwich",
210
+ "Card",
211
+ "Marking",
212
+ "BalancedRunner",
213
+ "OperationRegistry",
214
+ "HAS_RUST_ACCELERATION",
215
+ "compute_blake3",
216
+ "clm_hash_file_fast",
217
+ "crdt_merge_fast",
218
+ "evaluate_manifest",
219
+ "ContinuousLearningEngine",
220
+ "evaluate_epistemic_fitness",
221
+ "compute_delta_e",
222
+ "seal_epoch",
223
+ "advance_boundary",
224
+ "close_gamma_loop",
225
+ "extract_type_lattice",
226
+ "generate_lattice_html",
227
+ "verify_type_univalence",
228
+ ]
229
+
230
+ __version__ = "0.2.0"
clm/__main__.py ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env python3
2
+ """CLM Runner entry-point — invoked via `python -m clm` or `clm_runner.py`."""
3
+
4
+ import os
5
+ import sys
6
+
7
+ if sys.platform == "win32":
8
+ try:
9
+ sys.stdout.reconfigure(encoding="utf-8")
10
+ sys.stderr.reconfigure(encoding="utf-8")
11
+ except AttributeError:
12
+ pass
13
+ git_bin = r"C:\Program Files\Git\bin"
14
+ if os.path.exists(git_bin) and git_bin not in os.environ.get("PATH", ""):
15
+ os.environ["PATH"] = git_bin + os.pathsep + os.environ.get("PATH", "")
16
+
17
+ # Ensure the scripts directory is in sys.path so `clm` package is importable
18
+ _scripts_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
19
+ if _scripts_dir not in sys.path:
20
+ sys.path.insert(0, _scripts_dir)
21
+
22
+ from clm.layer4._sovereign_executor import main # noqa: E402
23
+
24
+ if __name__ == "__main__":
25
+ main()
@@ -0,0 +1,50 @@
1
+ """CLM cross_cutting layer package (Sprint 384 / DEL-384-03).
2
+
3
+ MVP Cards triad modules:
4
+ * mcard — Data Plane (Σ-type / Carrier / Noun Phrase)
5
+ * pcard — Control Plane (Π-type / Lens / Verb Phrase)
6
+ * vcard — Application Plane (Id-type / Arena + Action / Sentence)
7
+
8
+ Contains horizontal, stateless utilities and Card Triad models. Zero upward imports
9
+ into layer1, layer2, layer3, or layer4.
10
+ """
11
+
12
+ from clm.cross_cutting.mcard import Card
13
+ from clm.cross_cutting.pcard import (
14
+ BalancedRunner,
15
+ OperationRegistry,
16
+ run_balanced_expectations,
17
+ )
18
+ from clm.cross_cutting.telemetry import jsonl_emit, jsonl_emit_typed, reset_telemetry_cache
19
+ from clm.cross_cutting.vcard import (
20
+ GateEvaluator,
21
+ Marking,
22
+ VCardSandwich,
23
+ vcard_post_gate,
24
+ vcard_pre_gate,
25
+ vcard_sandwich,
26
+ )
27
+ from clm.layer0.algebra_baldwin import exclude_clm_py # noqa: F401
28
+ from clm.layer0.model.card_triad import MCard, PCard, VCard
29
+ from clm.layer0.utils import clm_hash_file # noqa: F401
30
+
31
+ __all__ = [
32
+ "jsonl_emit",
33
+ "jsonl_emit_typed",
34
+ "reset_telemetry_cache",
35
+ "Card",
36
+ "MCard",
37
+ "PCard",
38
+ "VCard",
39
+ "Marking",
40
+ "VCardSandwich",
41
+ "vcard_sandwich",
42
+ "vcard_pre_gate",
43
+ "vcard_post_gate",
44
+ "GateEvaluator",
45
+ "OperationRegistry",
46
+ "BalancedRunner",
47
+ "run_balanced_expectations",
48
+ "clm_hash_file",
49
+ "exclude_clm_py",
50
+ ]
@@ -0,0 +1,36 @@
1
+ """Shared test-runner command builder (Sprint 132.3 DRY consolidation).
2
+
3
+ Extracted from the byte-identical duplicate in ``cel_ops.op_run_test_suite``
4
+ and ``effects.register_default_effects._run_test_suite_effect``.
5
+ Single source of truth for .py/.sh/.rs interpreter selection.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import os
11
+
12
+
13
+ def build_test_command(test_path: str, clm_root: str) -> list[str]:
14
+ """Build the interpreter command for a test file.
15
+
16
+ Args:
17
+ test_path: Path to the test file.
18
+ clm_root: CLM workspace root (for .venv lookup).
19
+
20
+ Returns:
21
+ The command list to pass to subprocess.run.
22
+
23
+ Raises:
24
+ ValueError: If the test file extension is not .py, .sh, or .rs.
25
+ """
26
+ ext = os.path.splitext(test_path)[1].lower()
27
+ if ext == ".py":
28
+ interpreter = os.path.join(clm_root, ".venv", "bin", "python3")
29
+ if not os.path.exists(interpreter):
30
+ interpreter = "python3"
31
+ return [interpreter, test_path]
32
+ if ext == ".sh":
33
+ return ["bash", test_path]
34
+ if ext == ".rs":
35
+ return ["cargo", "test", "--manifest-path", test_path]
36
+ raise ValueError(f"run_test_suite: unknown extension '{ext}' for {test_path}")
@@ -0,0 +1,25 @@
1
+ """Async Task Isolation and Event Loop Re-Entrancy Utilities (Sprint 178).
2
+
3
+ Prevents event loop deadlocks and RuntimeError when CLM is embedded inside
4
+ async servers (Satori WebSocket bridge, FastAPI, Jupyter).
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import asyncio
10
+ import concurrent.futures
11
+ from typing import Any, Coroutine
12
+
13
+
14
+ def run_async_safe(coro: Coroutine[Any, Any, Any]) -> Any:
15
+ """Run an async coroutine safely, supporting both standalone and embedded event loops."""
16
+ try:
17
+ loop = asyncio.get_running_loop()
18
+ except RuntimeError:
19
+ loop = None
20
+
21
+ if loop and loop.is_running():
22
+ with concurrent.futures.ThreadPoolExecutor(max_workers=1) as pool:
23
+ return pool.submit(asyncio.run, coro).result()
24
+ else:
25
+ return asyncio.run(coro)
@@ -0,0 +1,123 @@
1
+ """CelStore middleware factories and store builder facade (Sprint 133.2 / Sprint 384).
2
+
3
+ Extracted from ``cel_store.py``. Middleware factories for action logging
4
+ and VCard gate evaluation, plus backward-compatible facade for ``build_store()``
5
+ delegating to Stratum 1 ``clm.layer1.cel.builder`` (DEL-384-04).
6
+ """
7
+ from __future__ import annotations
8
+
9
+ from collections.abc import Callable
10
+ from typing import TYPE_CHECKING, Any
11
+
12
+ from clm.cross_cutting.cel_slices import EnvSlice, ServiceSlice, StateSlice # noqa: F401
13
+ from clm.cross_cutting.effects import EffectRegistry, register_default_effects # noqa: F401
14
+
15
+ if TYPE_CHECKING:
16
+ from clm.cross_cutting.cel_store import CelStore
17
+
18
+ PreMiddleware = Callable[["CelStore", dict], dict | None]
19
+ PostMiddleware = Callable[["CelStore", dict, Any], None]
20
+ Listener = Callable[["CelStore", dict, Any], None]
21
+
22
+
23
+ def action_log_middleware() -> PostMiddleware:
24
+ """Post-middleware that records every dispatched action with timestamp."""
25
+ def middleware(store: CelStore, action: dict, result: Any) -> None:
26
+ pass
27
+ return middleware
28
+
29
+
30
+ def vcard_pre_middleware(gate_items: list[dict], suite: Any) -> PreMiddleware:
31
+ """Create a pre-middleware that evaluates all vcard_pre gates."""
32
+ def middleware(store: CelStore, action: dict) -> dict | None:
33
+ from clm.cross_cutting.vcard import GateEvaluator
34
+
35
+ gates = GateEvaluator()
36
+ ctx = store.to_dict()
37
+ for item in gate_items:
38
+ if not gates.evaluate_pre(item, ctx, suite):
39
+ return None
40
+ return action
41
+ return middleware
42
+
43
+
44
+ def vcard_post_middleware(gate_items: list[dict], suite: Any) -> PostMiddleware:
45
+ """Create a post-middleware that evaluates all vcard_post gates."""
46
+ def middleware(store: CelStore, action: dict, result: Any) -> None:
47
+ from clm.cross_cutting.vcard import GateEvaluator
48
+
49
+ gates = GateEvaluator()
50
+ ctx = store.to_dict()
51
+ for item in gate_items:
52
+ gates.evaluate_post(item, ctx, suite)
53
+ return middleware
54
+
55
+
56
+ def _build_write_file_fn() -> Callable[[str, str], bool]:
57
+ """Build the write_file helper function for the store."""
58
+ import os
59
+
60
+ def write_file(filepath: str, content: str) -> bool:
61
+ try:
62
+ os.makedirs(os.path.dirname(filepath), exist_ok=True)
63
+ with open(filepath, "w", encoding="utf-8") as fw:
64
+ fw.write(content)
65
+ return True
66
+ except Exception:
67
+ return False
68
+ return write_file
69
+
70
+
71
+ _store_builder_fn: Callable | None = None
72
+ _store_builder_resolver: Callable[[], Callable | None] | None = None
73
+
74
+
75
+ def register_store_builder(fn: Callable) -> None:
76
+ """Register the canonical CelStore builder from Layer 1."""
77
+ global _store_builder_fn
78
+ _store_builder_fn = fn
79
+
80
+
81
+ def register_store_builder_resolver(resolver: Callable[[], Callable | None]) -> None:
82
+ """Register a lazy resolver for the CelStore builder."""
83
+ global _store_builder_resolver
84
+ _store_builder_resolver = resolver
85
+
86
+
87
+ def build_store(
88
+ inputs: dict,
89
+ outputs: dict,
90
+ rc: int,
91
+ tmp_dir: str,
92
+ db: Any,
93
+ ctx: Any,
94
+ repo: Any,
95
+ classify_clm: Callable,
96
+ detect_dialect: Callable,
97
+ clm_root: str = "",
98
+ register_file_mcard_py: Callable | None = None,
99
+ ) -> "CelStore":
100
+ """Build a CelStore for a test case delegating to Layer 1 builder."""
101
+ builder = _store_builder_fn
102
+ if builder is None and _store_builder_resolver is not None:
103
+ builder = _store_builder_resolver()
104
+
105
+ if builder is None:
106
+ raise RuntimeError(
107
+ "No CelStore builder registered with cross_cutting. "
108
+ "Initialize Layer 1 (clm.layer1.cel.builder) before building stores."
109
+ )
110
+
111
+ return builder(
112
+ inputs=inputs,
113
+ outputs=outputs,
114
+ rc=rc,
115
+ tmp_dir=tmp_dir,
116
+ db=db,
117
+ ctx=ctx,
118
+ repo=repo,
119
+ classify_clm=classify_clm,
120
+ detect_dialect=detect_dialect,
121
+ clm_root=clm_root,
122
+ register_file_mcard_py=register_file_mcard_py,
123
+ )