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.
- clm/__init__.py +230 -0
- clm/__main__.py +25 -0
- clm/cross_cutting/__init__.py +50 -0
- clm/cross_cutting/_test_runner.py +36 -0
- clm/cross_cutting/async_utils.py +25 -0
- clm/cross_cutting/cel_builder.py +123 -0
- clm/cross_cutting/cel_converter.py +697 -0
- clm/cross_cutting/cel_engine.py +252 -0
- clm/cross_cutting/cel_ops.py +72 -0
- clm/cross_cutting/cel_ops_db.py +157 -0
- clm/cross_cutting/cel_ops_files.py +99 -0
- clm/cross_cutting/cel_ops_state.py +71 -0
- clm/cross_cutting/cel_ops_strings.py +64 -0
- clm/cross_cutting/cel_resolver.py +63 -0
- clm/cross_cutting/cel_slices.py +56 -0
- clm/cross_cutting/cel_store.py +330 -0
- clm/cross_cutting/clm_logger.py +140 -0
- clm/cross_cutting/config/__init__.py +155 -0
- clm/cross_cutting/config/config_constants.py +392 -0
- clm/cross_cutting/config/env_parameters.py +90 -0
- clm/cross_cutting/config/logging.py +378 -0
- clm/cross_cutting/config/settings.py +504 -0
- clm/cross_cutting/context.py +5 -0
- clm/cross_cutting/domain_models.py +55 -0
- clm/cross_cutting/domain_types.py +61 -0
- clm/cross_cutting/effects.py +67 -0
- clm/cross_cutting/errors.py +153 -0
- clm/cross_cutting/governance.py +331 -0
- clm/cross_cutting/guards.py +41 -0
- clm/cross_cutting/mcard.py +321 -0
- clm/cross_cutting/native.py +185 -0
- clm/cross_cutting/observability.py +289 -0
- clm/cross_cutting/pcard.py +434 -0
- clm/cross_cutting/registry.py +71 -0
- clm/cross_cutting/resources.py +84 -0
- clm/cross_cutting/secrets.py +44 -0
- clm/cross_cutting/subprocess_utils.py +118 -0
- clm/cross_cutting/telemetry.py +164 -0
- clm/cross_cutting/testing/__init__.py +8 -0
- clm/cross_cutting/testing/comparator.py +187 -0
- clm/cross_cutting/testing/datasets.py +87 -0
- clm/cross_cutting/timeutil.py +20 -0
- clm/cross_cutting/types/new_type_check.py +0 -0
- clm/cross_cutting/utils/__init__.py +1 -0
- clm/cross_cutting/utils/url_safety.py +50 -0
- clm/cross_cutting/vcard.py +560 -0
- clm/cross_cutting/writer.py +118 -0
- clm/layer0/README.md +50 -0
- clm/layer0/__init__.py +223 -0
- clm/layer0/algebra.py +60 -0
- clm/layer0/algebra_baldwin.py +133 -0
- clm/layer0/algebra_baldwin_generators.py +36 -0
- clm/layer0/algebra_equivalence.py +262 -0
- clm/layer0/algebra_ingest.py +306 -0
- clm/layer0/algebra_manifest_io.py +156 -0
- clm/layer0/assembler.py +481 -0
- clm/layer0/cel/__init__.py +23 -0
- clm/layer0/cel_eval.py +491 -0
- clm/layer0/codec.py +106 -0
- clm/layer0/context.py +122 -0
- clm/layer0/db.py +160 -0
- clm/layer0/exceptions.py +73 -0
- clm/layer0/fibration.py +106 -0
- clm/layer0/gates.py +50 -0
- clm/layer0/hash.py +80 -0
- clm/layer0/loader.py +826 -0
- clm/layer0/math_utils.py +163 -0
- clm/layer0/mcard.py +96 -0
- clm/layer0/model/__init__.py +0 -0
- clm/layer0/model/action.py +223 -0
- clm/layer0/model/card.py +280 -0
- clm/layer0/model/card_triad.py +427 -0
- clm/layer0/model/compatibility.py +60 -0
- clm/layer0/model/dictionary.py +46 -0
- clm/layer0/model/dots.py +331 -0
- clm/layer0/model/event_producer.py +88 -0
- clm/layer0/model/g_time.py +89 -0
- clm/layer0/model/handle.py +163 -0
- clm/layer0/model/hash/__init__.py +6 -0
- clm/layer0/model/hash/algorithms/__init__.py +3 -0
- clm/layer0/model/hash/algorithms/custom_hash.py +7 -0
- clm/layer0/model/hash/algorithms/local_sha256.py +178 -0
- clm/layer0/model/hash/constants.py +53 -0
- clm/layer0/model/hash/enums.py +60 -0
- clm/layer0/model/hash/validator.py +307 -0
- clm/layer0/model/interpreter.py +275 -0
- clm/layer0/model/pagination.py +45 -0
- clm/layer0/model/pcard.py +716 -0
- clm/layer0/model/schema.py +44 -0
- clm/layer0/model/utils/__init__.py +1 -0
- clm/layer0/model/utils/content_analyzer.py +152 -0
- clm/layer0/model/validators/__init__.py +1 -0
- clm/layer0/model/validators/base_validator.py +44 -0
- clm/layer0/model/validators/binary_validator.py +66 -0
- clm/layer0/model/validators/text_validator.py +82 -0
- clm/layer0/model/validators/validation_registry.py +49 -0
- clm/layer0/model/vcard.py +823 -0
- clm/layer0/model/vcard_ext/__init__.py +39 -0
- clm/layer0/model/vcard_ext/core.py +60 -0
- clm/layer0/model/vcard_ext/network.py +23 -0
- clm/layer0/model/vcard_ext/observability.py +63 -0
- clm/layer0/model/vcard_ext/storage.py +60 -0
- clm/layer0/model/vcard_ext/vendors.py +211 -0
- clm/layer0/model/vcard_sandwich.py +119 -0
- clm/layer0/model/vcard_vocabulary.py +463 -0
- clm/layer0/model/workflow.py +274 -0
- clm/layer0/narrative.py +431 -0
- clm/layer0/ontology/collection.py +125 -0
- clm/layer0/parser.py +429 -0
- clm/layer0/relations.py +73 -0
- clm/layer0/rule_evaluator.py +251 -0
- clm/layer0/schema/__init__.py +38 -0
- clm/layer0/schema/ddl.py +97 -0
- clm/layer0/templates/abstract.yaml +99 -0
- clm/layer0/templates/balanced.yaml +253 -0
- clm/layer0/templates/concrete.yaml +172 -0
- clm/layer0/type_registry.py +223 -0
- clm/layer0/types.py +204 -0
- clm/layer0/utils.py +886 -0
- clm/layer0/verifier_core.py +262 -0
- clm/layer1/__init__.py +31 -0
- clm/layer1/action_dispatcher.py +275 -0
- clm/layer1/adapter_registry.py +233 -0
- clm/layer1/algebra_baldwin_generators.py +192 -0
- clm/layer1/arrow_compiler.py +525 -0
- clm/layer1/batch_processor.py +152 -0
- clm/layer1/cel/__init__.py +27 -0
- clm/layer1/cel/builder.py +173 -0
- clm/layer1/engine.py +759 -0
- clm/layer1/engine_async.py +89 -0
- clm/layer1/eval_callback.py +49 -0
- clm/layer1/gate_composer.py +229 -0
- clm/layer1/hoare_sandwich.py +298 -0
- clm/layer1/identity_guard.py +348 -0
- clm/layer1/matrix.py +138 -0
- clm/layer1/neural_runtime.py +221 -0
- clm/layer1/operations/__init__.py +123 -0
- clm/layer1/operations/augment.py +156 -0
- clm/layer1/operations/base.py +109 -0
- clm/layer1/operations/builtins.py +338 -0
- clm/layer1/operations/dispatch.py +144 -0
- clm/layer1/operations/exclude.py +107 -0
- clm/layer1/operations/handle.py +197 -0
- clm/layer1/operations/identity.py +139 -0
- clm/layer1/operations/invert.py +66 -0
- clm/layer1/operations/loader.py +116 -0
- clm/layer1/operations/manipulators/__init__.py +23 -0
- clm/layer1/operations/manipulators/document.py +211 -0
- clm/layer1/operations/manipulators/media.py +134 -0
- clm/layer1/operations/manipulators/structured.py +159 -0
- clm/layer1/operations/manipulators/tabular.py +334 -0
- clm/layer1/operations/port.py +65 -0
- clm/layer1/operations/services.py +529 -0
- clm/layer1/operations/split.py +117 -0
- clm/layer1/operations/substitute.py +75 -0
- clm/layer1/petri.py +1052 -0
- clm/layer1/pocketflow_orchestrator.py +408 -0
- clm/layer1/pocketflow_scheduler.py +519 -0
- clm/layer1/protocols.py +197 -0
- clm/layer1/runtime_adapter.py +718 -0
- clm/layer1/runtimes/__init__.py +71 -0
- clm/layer1/runtimes/_generated_assertions.py +125 -0
- clm/layer1/runtimes/_generated_types.py +42 -0
- clm/layer1/runtimes/base.py +265 -0
- clm/layer1/runtimes/binary.py +101 -0
- clm/layer1/runtimes/factory.py +203 -0
- clm/layer1/runtimes/javascript.py +321 -0
- clm/layer1/runtimes/javascript_runtime.js +33 -0
- clm/layer1/runtimes/js_scripts/isomorphism.mjs +22 -0
- clm/layer1/runtimes/js_scripts/loader.mjs +52 -0
- clm/layer1/runtimes/lambda_calc.py +126 -0
- clm/layer1/runtimes/python.py +288 -0
- clm/layer1/runtimes/python_runtime.py +41 -0
- clm/layer1/runtimes/script.py +114 -0
- clm/layer1/sandbox.py +334 -0
- clm/layer1/savepoint_guard.py +136 -0
- clm/layer1/sparse_net.py +122 -0
- clm/layer1/spec_tester.py +165 -0
- clm/layer1/store.py +295 -0
- clm/layer1/test_runner.py +498 -0
- clm/layer1/type_inspector.py +166 -0
- clm/layer1/verifier.py +772 -0
- clm/layer1/vm.py +91 -0
- clm/layer2/__init__.py +78 -0
- clm/layer2/card_collection.py +678 -0
- clm/layer2/classifier.py +479 -0
- clm/layer2/engine/__init__.py +1 -0
- clm/layer2/engine/abstract_sql_engine.py +320 -0
- clm/layer2/engine/base.py +193 -0
- clm/layer2/engine/duckdb_engine.py +576 -0
- clm/layer2/engine/sqlite_engine.py +518 -0
- clm/layer2/fiber/__init__.py +31 -0
- clm/layer2/fiber/context.py +89 -0
- clm/layer2/fiber/disposable.py +163 -0
- clm/layer2/fiber/fiber.py +125 -0
- clm/layer2/fiber/hoare.py +191 -0
- clm/layer2/file_io.py +376 -0
- clm/layer2/file_registrar.py +77 -0
- clm/layer2/ingest.py +202 -0
- clm/layer2/lineage.py +322 -0
- clm/layer2/mcard_fs.py +262 -0
- clm/layer2/merkle.py +11 -0
- clm/layer2/mime.py +244 -0
- clm/layer2/mime_detector.py +245 -0
- clm/layer2/private_collection.py +118 -0
- clm/layer2/shared_store.py +11 -0
- clm/layer2/storage/__init__.py +190 -0
- clm/layer2/storage/db_bitemporal.py +141 -0
- clm/layer2/storage/db_driver.py +331 -0
- clm/layer2/storage/db_hyperlinks.py +214 -0
- clm/layer2/storage/db_pool.py +139 -0
- clm/layer2/storage/db_repository.py +229 -0
- clm/layer2/storage/savepoint.py +78 -0
- clm/layer2/storage/sqlite_wal.py +74 -0
- clm/layer2/tridb.py +245 -0
- clm/layer2/vcard_receipt.py +71 -0
- clm/layer2/vfs.py +17 -0
- clm/layer3/__init__.py +141 -0
- clm/layer3/agency/__init__.py +19 -0
- clm/layer3/agency/config.py +220 -0
- clm/layer3/agency/providers/__init__.py +15 -0
- clm/layer3/agency/providers/base.py +91 -0
- clm/layer3/agency/providers/mlc_llm.py +169 -0
- clm/layer3/agency/providers/ollama.py +203 -0
- clm/layer3/agency/router.py +71 -0
- clm/layer3/agency/runtime.py +524 -0
- clm/layer3/gateway.py +353 -0
- clm/layer3/open_interpreter_adapter.py +159 -0
- clm/layer3/rag/__init__.py +70 -0
- clm/layer3/rag/cli.py +228 -0
- clm/layer3/rag/config.py +153 -0
- clm/layer3/rag/embeddings/__init__.py +16 -0
- clm/layer3/rag/embeddings/base.py +79 -0
- clm/layer3/rag/embeddings/ollama.py +211 -0
- clm/layer3/rag/embeddings/vision.py +290 -0
- clm/layer3/rag/engine.py +276 -0
- clm/layer3/rag/graph/__init__.py +22 -0
- clm/layer3/rag/graph/community.py +198 -0
- clm/layer3/rag/graph/engine.py +433 -0
- clm/layer3/rag/graph/extractor.py +255 -0
- clm/layer3/rag/graph/schema.py +115 -0
- clm/layer3/rag/graph/store.py +641 -0
- clm/layer3/rag/indexer.py +333 -0
- clm/layer3/rag/llm_providers.json +52 -0
- clm/layer3/rag/semantic_versioning.py +313 -0
- clm/layer3/rag/vector/__init__.py +28 -0
- clm/layer3/rag/vector/handle_vector_store.py +749 -0
- clm/layer3/rag/vector/schema.py +151 -0
- clm/layer3/rag/vector/store.py +632 -0
- clm/layer3/reticulum/__init__.py +55 -0
- clm/layer3/reticulum/bridge.py +74 -0
- clm/layer3/reticulum/daemon.py +88 -0
- clm/layer3/reticulum/discovery.py +164 -0
- clm/layer3/reticulum/identity.py +107 -0
- clm/layer3/reticulum/media.py +148 -0
- clm/layer3/reticulum/transport.py +133 -0
- clm/layer3/satori/__init__.py +209 -0
- clm/layer3/satori/alpha_conversion.py +168 -0
- clm/layer3/satori/beta_reduction.py +359 -0
- clm/layer3/satori/continuation.py +38 -0
- clm/layer3/satori/eta_conversion.py +205 -0
- clm/layer3/satori/free_variables.py +163 -0
- clm/layer3/satori/io_effects.py +370 -0
- clm/layer3/satori/lambda_runtime.py +726 -0
- clm/layer3/satori/lambda_term.py +230 -0
- clm/layer3/satori/sheaf_audit.py +261 -0
- clm/layer3/satori/speech_act.py +279 -0
- clm/layer4/README.md +9 -0
- clm/layer4/__init__.py +67 -0
- clm/layer4/_sovereign_executor.py +580 -0
- clm/layer4/action_commands.py +719 -0
- clm/layer4/api.py +236 -0
- clm/layer4/bootstrap/__init__.py +13 -0
- clm/layer4/bootstrap/bootstrapper.py +118 -0
- clm/layer4/bootstrap/cleanup.py +44 -0
- clm/layer4/bootstrap/clm_hooks.py +49 -0
- clm/layer4/bootstrap/genesis.py +77 -0
- clm/layer4/bootstrap/injection.py +125 -0
- clm/layer4/cli.py +549 -0
- clm/layer4/collection_manager.py +553 -0
- clm/layer4/commands/__init__.py +81 -0
- clm/layer4/commands/action_cmd.py +42 -0
- clm/layer4/commands/check_cmd.py +82 -0
- clm/layer4/commands/envelope.py +73 -0
- clm/layer4/commands/evaluate_cmd.py +224 -0
- clm/layer4/commands/mcard_cmd.py +24 -0
- clm/layer4/commands/petri_cmd.py +92 -0
- clm/layer4/commands/tridb_cmd.py +319 -0
- clm/layer4/commands/version_cmd.py +27 -0
- clm/layer4/diff_commands.py +167 -0
- clm/layer4/eoa_sponsor.py +232 -0
- clm/layer4/events.py +69 -0
- clm/layer4/flux_gateway.py +133 -0
- clm/layer4/gateway.py +91 -0
- clm/layer4/loader.py +307 -0
- clm/layer4/mcard_commands.py +166 -0
- clm/layer4/membrane.py +273 -0
- clm/layer4/navigation.py +50 -0
- clm/layer4/protocol/protocol_entry_python.py +108 -0
- clm/layer4/protocol/python_sync.py +126 -0
- clm/layer4/runner.py +150 -0
- clm/layer4/satori.py +262 -0
- clm/layer4/server/python_sync_client.py +150 -0
- clm/layer4/server/python_sync_server.py +139 -0
- clm/layer4/server/service_api.py +315 -0
- clm/layer4/server/start_servers.py +107 -0
- clm/layer4/server/stop_servers.py +24 -0
- clm/layer4/simulated_optimization_fix.py +0 -0
- clm/layer4/storage.py +463 -0
- clm/layer4/tridb_admin.py +268 -0
- clm/layer4/websocket/test_ws_client.py +104 -0
- clm/layer4/websocket/test_ws_server.py +138 -0
- clm/layer4/websocket/ws_server_local.py +160 -0
- clm/layer5/__init__.py +51 -0
- clm/layer5/async_batch_writer.py +133 -0
- clm/layer5/learning.py +276 -0
- clm/layer5/telemetry_hook.py +107 -0
- clm/layer5/type_lattice.py +238 -0
- clm/py.typed +0 -0
- clm/schemas/__init__.py +652 -0
- clm/schemas/abstract_face_schema.yaml +77 -0
- clm/schemas/cel_schema.yaml +416 -0
- clm/schemas/lifecycle/__init__.py +45 -0
- clm/schemas/lifecycle/models.py +123 -0
- clm/schemas/lifecycle/service.py +364 -0
- clm/schemas/mcard_schema.sql +192 -0
- clm/schemas/mcard_vector_schema.sql +283 -0
- clm/schemas/mlp-context-v1.json +91 -0
- clm_kernel-0.0.0.dist-info/METADATA +121 -0
- clm_kernel-0.0.0.dist-info/RECORD +333 -0
- clm_kernel-0.0.0.dist-info/WHEEL +4 -0
- clm_kernel-0.0.0.dist-info/entry_points.txt +3 -0
- 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
|
+
)
|