clm-kernel 0.0.2__tar.gz → 0.0.3__tar.gz

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 (403) hide show
  1. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/PKG-INFO +1 -1
  2. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/handle_kind.py +9 -2
  3. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/pcard.py +4 -1
  4. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/telemetry.py +13 -12
  5. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/algebra_equivalence.py +1 -1
  6. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/algebra_ingest.py +2 -2
  7. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/action.py +7 -7
  8. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/workflow.py +5 -5
  9. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/schema/ddl.py +3 -6
  10. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/petri.py +29 -23
  11. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/test_runner.py +1 -1
  12. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/engine/abstract_sql_engine.py +78 -18
  13. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/engine/duckdb_engine.py +146 -72
  14. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/engine/sqlite_engine.py +55 -60
  15. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/mcard_fs.py +8 -10
  16. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/storage/db_bitemporal.py +5 -6
  17. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/storage/db_repository.py +4 -4
  18. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/action_commands.py +1 -2
  19. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/commands/check_cmd.py +3 -17
  20. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/commands/evaluate_cmd.py +10 -0
  21. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/commands/mcard_cmd.py +14 -2
  22. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/commands/petri_cmd.py +0 -2
  23. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/eoa_sponsor.py +2 -2
  24. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/schemas/__init__.py +0 -4
  25. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/pyproject.toml +1 -1
  26. clm_kernel-0.0.3/types/schemas/mcard_schema.sql +1 -0
  27. clm_kernel-0.0.2/kernel/clm_py_core/clm/schemas/mcard_schema.sql +0 -192
  28. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/.gitignore +0 -0
  29. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/LICENSE +0 -0
  30. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/README.md +0 -0
  31. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/assets/README.md +0 -0
  32. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/assets/clm/README.md +0 -0
  33. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/assets/personal/README.md +0 -0
  34. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/assets/webapps/README.md +0 -0
  35. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/computable_knowledge/Concrete/layer5_system/bootstrap/layer4_interface/README.md +0 -0
  36. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/computable_knowledge/README.md +0 -0
  37. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/README.md +0 -0
  38. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/architecture/README.md +0 -0
  39. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/architecture/archive/README.md +0 -0
  40. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/bmad/README.md +0 -0
  41. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/changelog/README.md +0 -0
  42. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/guides/README.md +0 -0
  43. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/spec/README.md +0 -0
  44. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/spec/archive/README.md +0 -0
  45. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/spec/reports/README.md +0 -0
  46. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/01_foundation/README.md +0 -0
  47. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/02_petri-net/README.md +0 -0
  48. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/03_sovereign-identity/README.md +0 -0
  49. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/04_storage-network/README.md +0 -0
  50. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/05_runtime-interfaces/README.md +0 -0
  51. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/06_kernel-reorganization/README.md +0 -0
  52. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/07_test-infrastructure/README.md +0 -0
  53. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/08_rust-native/README.md +0 -0
  54. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/09_executable-evaluator/README.md +0 -0
  55. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/10_knowledge-facets/README.md +0 -0
  56. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/11_cel-monadic-architecture/README.md +0 -0
  57. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/12_language-specifications/README.md +0 -0
  58. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/_active/README.md +0 -0
  59. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/sprints/_index/README.md +0 -0
  60. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/docs/theory/README.md +0 -0
  61. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/README.md +0 -0
  62. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_js_core/README.md +0 -0
  63. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/README.md +0 -0
  64. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/__init__.py +0 -0
  65. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/__main__.py +0 -0
  66. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/__init__.py +0 -0
  67. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/_test_runner.py +0 -0
  68. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/async_utils.py +0 -0
  69. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_builder.py +0 -0
  70. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_converter.py +0 -0
  71. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_engine.py +0 -0
  72. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_ops.py +0 -0
  73. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_ops_db.py +0 -0
  74. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_ops_files.py +0 -0
  75. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_ops_state.py +0 -0
  76. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_ops_strings.py +0 -0
  77. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_resolver.py +0 -0
  78. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_slices.py +0 -0
  79. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/cel_store.py +0 -0
  80. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/clm_logger.py +0 -0
  81. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/config/__init__.py +0 -0
  82. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/config/config_constants.py +0 -0
  83. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/config/env_parameters.py +0 -0
  84. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/config/logging.py +0 -0
  85. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/config/settings.py +0 -0
  86. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/context.py +0 -0
  87. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/domain_models.py +0 -0
  88. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/domain_types.py +0 -0
  89. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/effects.py +0 -0
  90. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/errors.py +0 -0
  91. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/governance.py +0 -0
  92. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/guards.py +0 -0
  93. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/mcard.py +0 -0
  94. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/native.py +0 -0
  95. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/observability.py +0 -0
  96. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/registry.py +0 -0
  97. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/resources.py +0 -0
  98. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/secrets.py +0 -0
  99. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/subprocess_utils.py +0 -0
  100. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/testing/__init__.py +0 -0
  101. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/testing/comparator.py +0 -0
  102. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/testing/datasets.py +0 -0
  103. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/timeutil.py +0 -0
  104. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/types/new_type_check.py +0 -0
  105. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/utils/__init__.py +0 -0
  106. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/utils/url_safety.py +0 -0
  107. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/vcard.py +0 -0
  108. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/cross_cutting/writer.py +0 -0
  109. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/README.md +0 -0
  110. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/__init__.py +0 -0
  111. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/algebra.py +0 -0
  112. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/algebra_baldwin.py +0 -0
  113. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/algebra_baldwin_generators.py +0 -0
  114. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/algebra_manifest_io.py +0 -0
  115. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/assembler.py +0 -0
  116. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/cel/__init__.py +0 -0
  117. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/cel_eval.py +0 -0
  118. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/codec.py +0 -0
  119. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/context.py +0 -0
  120. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/db.py +0 -0
  121. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/exceptions.py +0 -0
  122. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/fibration.py +0 -0
  123. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/gates.py +0 -0
  124. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/hash.py +0 -0
  125. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/loader.py +0 -0
  126. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/math_utils.py +0 -0
  127. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/mcard.py +0 -0
  128. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/__init__.py +0 -0
  129. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/card.py +0 -0
  130. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/card_triad.py +0 -0
  131. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/compatibility.py +0 -0
  132. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/dictionary.py +0 -0
  133. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/dots.py +0 -0
  134. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/event_producer.py +0 -0
  135. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/g_time.py +0 -0
  136. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/handle.py +0 -0
  137. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/hash/__init__.py +0 -0
  138. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/hash/algorithms/__init__.py +0 -0
  139. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/hash/algorithms/custom_hash.py +0 -0
  140. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/hash/algorithms/local_sha256.py +0 -0
  141. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/hash/constants.py +0 -0
  142. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/hash/enums.py +0 -0
  143. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/hash/validator.py +0 -0
  144. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/interpreter.py +0 -0
  145. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/pagination.py +0 -0
  146. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/pcard.py +0 -0
  147. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/schema.py +0 -0
  148. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/utils/__init__.py +0 -0
  149. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/utils/content_analyzer.py +0 -0
  150. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/validators/__init__.py +0 -0
  151. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/validators/base_validator.py +0 -0
  152. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/validators/binary_validator.py +0 -0
  153. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/validators/text_validator.py +0 -0
  154. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/validators/validation_registry.py +0 -0
  155. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/vcard.py +0 -0
  156. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/vcard_ext/__init__.py +0 -0
  157. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/vcard_ext/core.py +0 -0
  158. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/vcard_ext/network.py +0 -0
  159. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/vcard_ext/observability.py +0 -0
  160. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/vcard_ext/storage.py +0 -0
  161. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/vcard_ext/vendors.py +0 -0
  162. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/vcard_sandwich.py +0 -0
  163. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/model/vcard_vocabulary.py +0 -0
  164. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/narrative.py +0 -0
  165. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/ontology/collection.py +0 -0
  166. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/parser.py +0 -0
  167. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/relations.py +0 -0
  168. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/rule_evaluator.py +0 -0
  169. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/schema/__init__.py +0 -0
  170. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/schema/type_dictionary.json +0 -0
  171. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/storage/__init__.py +0 -0
  172. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/storage/tape.py +0 -0
  173. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/templates/abstract.yaml +0 -0
  174. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/templates/balanced.yaml +0 -0
  175. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/templates/concrete.yaml +0 -0
  176. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/type_interpreter.py +0 -0
  177. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/type_registry.py +0 -0
  178. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/typed_value.py +0 -0
  179. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/types.py +0 -0
  180. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/utils.py +0 -0
  181. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer0/verifier_core.py +0 -0
  182. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/__init__.py +0 -0
  183. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/action_dispatcher.py +0 -0
  184. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/adapter_registry.py +0 -0
  185. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/algebra_baldwin_generators.py +0 -0
  186. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/arrow_compiler.py +0 -0
  187. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/batch_processor.py +0 -0
  188. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/cel/__init__.py +0 -0
  189. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/cel/builder.py +0 -0
  190. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/engine.py +0 -0
  191. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/engine_async.py +0 -0
  192. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/eval_callback.py +0 -0
  193. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/gate_composer.py +0 -0
  194. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/hoare_sandwich.py +0 -0
  195. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/identity_guard.py +0 -0
  196. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/matrix.py +0 -0
  197. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/neural_runtime.py +0 -0
  198. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/__init__.py +0 -0
  199. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/augment.py +0 -0
  200. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/base.py +0 -0
  201. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/builtins.py +0 -0
  202. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/dispatch.py +0 -0
  203. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/exclude.py +0 -0
  204. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/handle.py +0 -0
  205. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/identity.py +0 -0
  206. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/invert.py +0 -0
  207. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/loader.py +0 -0
  208. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/manipulators/__init__.py +0 -0
  209. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/manipulators/document.py +0 -0
  210. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/manipulators/media.py +0 -0
  211. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/manipulators/structured.py +0 -0
  212. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/manipulators/tabular.py +0 -0
  213. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/port.py +0 -0
  214. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/services.py +0 -0
  215. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/split.py +0 -0
  216. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/operations/substitute.py +0 -0
  217. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/pocketflow_orchestrator.py +0 -0
  218. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/pocketflow_scheduler.py +0 -0
  219. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/protocols.py +0 -0
  220. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtime_adapter.py +0 -0
  221. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/__init__.py +0 -0
  222. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/_generated_assertions.py +0 -0
  223. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/_generated_types.py +0 -0
  224. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/base.py +0 -0
  225. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/binary.py +0 -0
  226. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/factory.py +0 -0
  227. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/javascript.py +0 -0
  228. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/javascript_runtime.js +0 -0
  229. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/js_scripts/isomorphism.mjs +0 -0
  230. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/js_scripts/loader.mjs +0 -0
  231. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/lambda_calc.py +0 -0
  232. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/python.py +0 -0
  233. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/python_runtime.py +0 -0
  234. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/runtimes/script.py +0 -0
  235. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/sandbox.py +0 -0
  236. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/savepoint_guard.py +0 -0
  237. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/sparse_net.py +0 -0
  238. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/spec_tester.py +0 -0
  239. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/store.py +0 -0
  240. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/type_inspector.py +0 -0
  241. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/verifier.py +0 -0
  242. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer1/vm.py +0 -0
  243. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/__init__.py +0 -0
  244. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/card_collection.py +0 -0
  245. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/classifier.py +0 -0
  246. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/engine/__init__.py +0 -0
  247. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/engine/base.py +0 -0
  248. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/fiber/__init__.py +0 -0
  249. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/fiber/context.py +0 -0
  250. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/fiber/disposable.py +0 -0
  251. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/fiber/fiber.py +0 -0
  252. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/fiber/hoare.py +0 -0
  253. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/fiber_context.py +0 -0
  254. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/file_io.py +0 -0
  255. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/file_registrar.py +0 -0
  256. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/ingest.py +0 -0
  257. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/lineage.py +0 -0
  258. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/merkle.py +0 -0
  259. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/mime.py +0 -0
  260. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/mime_detector.py +0 -0
  261. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/private_collection.py +0 -0
  262. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/shared_store.py +0 -0
  263. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/storage/__init__.py +0 -0
  264. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/storage/db_driver.py +0 -0
  265. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/storage/db_hyperlinks.py +0 -0
  266. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/storage/db_pool.py +0 -0
  267. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/storage/savepoint.py +0 -0
  268. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/storage/sqlite_wal.py +0 -0
  269. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/tridb.py +0 -0
  270. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/typed_channel.py +0 -0
  271. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/vcard_receipt.py +0 -0
  272. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer2/vfs.py +0 -0
  273. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/__init__.py +0 -0
  274. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/agency/__init__.py +0 -0
  275. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/agency/config.py +0 -0
  276. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/agency/providers/__init__.py +0 -0
  277. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/agency/providers/base.py +0 -0
  278. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/agency/providers/mlc_llm.py +0 -0
  279. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/agency/providers/ollama.py +0 -0
  280. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/agency/router.py +0 -0
  281. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/agency/runtime.py +0 -0
  282. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/gateway.py +0 -0
  283. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/open_interpreter_adapter.py +0 -0
  284. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/__init__.py +0 -0
  285. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/cli.py +0 -0
  286. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/config.py +0 -0
  287. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/embeddings/__init__.py +0 -0
  288. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/embeddings/base.py +0 -0
  289. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/embeddings/ollama.py +0 -0
  290. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/embeddings/vision.py +0 -0
  291. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/engine.py +0 -0
  292. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/graph/__init__.py +0 -0
  293. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/graph/community.py +0 -0
  294. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/graph/engine.py +0 -0
  295. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/graph/extractor.py +0 -0
  296. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/graph/schema.py +0 -0
  297. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/graph/store.py +0 -0
  298. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/indexer.py +0 -0
  299. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/llm_providers.json +0 -0
  300. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/semantic_versioning.py +0 -0
  301. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/vector/__init__.py +0 -0
  302. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/vector/handle_vector_store.py +0 -0
  303. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/vector/schema.py +0 -0
  304. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/rag/vector/store.py +0 -0
  305. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/reticulum/__init__.py +0 -0
  306. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/reticulum/bridge.py +0 -0
  307. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/reticulum/daemon.py +0 -0
  308. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/reticulum/discovery.py +0 -0
  309. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/reticulum/identity.py +0 -0
  310. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/reticulum/media.py +0 -0
  311. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/reticulum/transport.py +0 -0
  312. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/__init__.py +0 -0
  313. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/alpha_conversion.py +0 -0
  314. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/beta_reduction.py +0 -0
  315. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/continuation.py +0 -0
  316. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/eta_conversion.py +0 -0
  317. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/free_variables.py +0 -0
  318. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/io_effects.py +0 -0
  319. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/lambda_runtime.py +0 -0
  320. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/lambda_term.py +0 -0
  321. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/sheaf_audit.py +0 -0
  322. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer3/satori/speech_act.py +0 -0
  323. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/README.md +0 -0
  324. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/__init__.py +0 -0
  325. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/_sovereign_executor.py +0 -0
  326. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/api.py +0 -0
  327. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/bootstrap/__init__.py +0 -0
  328. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/bootstrap/bootstrapper.py +0 -0
  329. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/bootstrap/cleanup.py +0 -0
  330. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/bootstrap/clm_hooks.py +0 -0
  331. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/bootstrap/genesis.py +0 -0
  332. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/bootstrap/injection.py +0 -0
  333. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/cli.py +0 -0
  334. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/collection_manager.py +0 -0
  335. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/commands/__init__.py +0 -0
  336. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/commands/action_cmd.py +0 -0
  337. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/commands/envelope.py +0 -0
  338. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/commands/tridb_cmd.py +0 -0
  339. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/commands/version_cmd.py +0 -0
  340. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/diff_commands.py +0 -0
  341. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/events.py +0 -0
  342. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/flux_gateway.py +0 -0
  343. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/gateway.py +0 -0
  344. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/loader.py +0 -0
  345. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/mcard_commands.py +0 -0
  346. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/membrane.py +0 -0
  347. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/navigation.py +0 -0
  348. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/protocol/protocol_entry_python.py +0 -0
  349. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/protocol/python_sync.py +0 -0
  350. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/runner.py +0 -0
  351. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/satori.py +0 -0
  352. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/server/python_sync_client.py +0 -0
  353. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/server/python_sync_server.py +0 -0
  354. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/server/service_api.py +0 -0
  355. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/server/start_servers.py +0 -0
  356. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/server/stop_servers.py +0 -0
  357. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/simulated_optimization_fix.py +0 -0
  358. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/storage.py +0 -0
  359. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/tridb_admin.py +0 -0
  360. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/websocket/test_ws_client.py +0 -0
  361. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/websocket/test_ws_server.py +0 -0
  362. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer4/websocket/ws_server_local.py +0 -0
  363. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer5/__init__.py +0 -0
  364. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer5/async_batch_writer.py +0 -0
  365. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer5/learning.py +0 -0
  366. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer5/telemetry_hook.py +0 -0
  367. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/layer5/type_lattice.py +0 -0
  368. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/py.typed +0 -0
  369. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/schemas/abstract_face_schema.yaml +0 -0
  370. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/schemas/cel_schema.yaml +0 -0
  371. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/schemas/lifecycle/__init__.py +0 -0
  372. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/schemas/lifecycle/models.py +0 -0
  373. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/schemas/lifecycle/service.py +0 -0
  374. {clm_kernel-0.0.2/types → clm_kernel-0.0.3/kernel/clm_py_core/clm}/schemas/mcard_schema.sql +0 -0
  375. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/schemas/mcard_vector_schema.sql +0 -0
  376. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_py_core/clm/schemas/mlp-context-v1.json +0 -0
  377. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_rust_core/README.md +0 -0
  378. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_rust_core/pkg/README.md +0 -0
  379. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/kernel/clm_rust_core/types/README.md +0 -0
  380. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/sample_pcards/actions/README.md +0 -0
  381. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/schema/README.md +0 -0
  382. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/04_interface/README.md +0 -0
  383. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/chapters/README.md +0 -0
  384. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/chapters/chapter_00_prologue/README.md +0 -0
  385. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/chapters/chapter_01_arithmetic/README.md +0 -0
  386. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/chapters/chapter_01_arithmetic/sine/README.md +0 -0
  387. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/chapters/chapter_03_llm/README.md +0 -0
  388. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/chapters/chapter_07_network/README.md +0 -0
  389. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/chapters/chapter_09_DSL/README.md +0 -0
  390. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/chapters/chapter_10_service/README.md +0 -0
  391. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tests/corpus/canonical/README.md +0 -0
  392. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/tools/README.md +0 -0
  393. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/README.md +0 -0
  394. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/abstract_face_schema.yaml +0 -0
  395. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/action_schema.json +0 -0
  396. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/cel_schema.yaml +0 -0
  397. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/lifecycle_mcard.schema.json +0 -0
  398. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/mlp-context-v1.json +0 -0
  399. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/turn.exemplar.yaml +0 -0
  400. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/turn.schema.json +0 -0
  401. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/turn_binding.yaml +0 -0
  402. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/turn_ledger_entry.schema.json +0 -0
  403. {clm_kernel-0.0.2 → clm_kernel-0.0.3}/types/schemas/workflow_schema.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: clm-kernel
3
- Version: 0.0.2
3
+ Version: 0.0.3
4
4
  Summary: Card Lifecycle Manager (CLM) Kernel — Sovereign Functional Agentic Operating System
5
5
  Author: GovTech Digital Identity & Autonomous Systems
6
6
  License: MIT
@@ -32,10 +32,17 @@ HANDLE_GRAMMAR = re.compile(r"^urn:mcard:(?P<sector>[a-z_]+):(?P<kind>[a-z_]+)(?
32
32
  # Must equal the hub's registry/handle_taxonomy.yaml; the drift check enforces it.
33
33
  KIND_SECTORS: dict[str, tuple[str, ...]] = {
34
34
  # Content Memory (content_memory.db)
35
- "mcard": ("content", "knowledge", "schema", "contract", "registry", "record", "projection", "derived", "lifecycle"),
35
+ "mcard": (
36
+ "content", "knowledge", "schema", "contract", "registry", "record", "projection",
37
+ "derived", "lifecycle",
38
+ # ORC-24: the nine archetypes (`clm/schema/archetypes/`) as kinds — an
39
+ # archetype is `<kind>_<sector>`, so the kind is derived, not hand-mapped.
40
+ "artifact", "commit", "design_decision", "feedback", "specification",
41
+ "sprint_status", "telemetry", "test_result",
42
+ ),
36
43
  "doc": ("vault", "document"),
37
44
  "pcard": ("program", "sprint"),
38
- "vcard": ("seal", "execution"),
45
+ "vcard": ("seal", "execution", "contract"),
39
46
  # Agent Identities (agent_identities.db)
40
47
  "agent": ("root", "actor"),
41
48
  "node": ("did", "peer"),
@@ -93,7 +93,10 @@ def serialize_pcard(
93
93
 
94
94
  pcard_hash = hash_string(pcard_yaml)
95
95
 
96
- handle_name = f"pcard:{operation}:{pcard_hash}"
96
+ # ORC-24: the grammar names the KIND — `urn:mcard:pcard:program:<hash>`. This wrote
97
+ # `pcard:{operation}:{hash}`, the last legacy handle form in the kernel, and the reason the
98
+ # hub's declared consumption of `urn:mcard:pcard:*` had no tape to satisfy it.
99
+ handle_name = f"urn:mcard:pcard:program:{pcard_hash}"
97
100
  ctx.repo.save_card_and_handle(
98
101
  handle_name, pcard_hash, pcard_yaml, "execution_log",
99
102
  timestamp=timestamp, replace=False,
@@ -135,19 +135,20 @@ def jsonl_emit(event_type: str, data: dict[str, Any] | list[str], clm_root: str)
135
135
  _LAST_RUN_ID = run_id
136
136
 
137
137
  repo = _get_cached_repo(clm_root)
138
- handle_name = f"run:{run_id}:events"
138
+ # ONE EVENT, ONE CARD — the SEQUENCE lives in `handle_history`, which is what a
139
+ # revision record is for (ORC-29). The handle NAMES the kind (INV-TAPE-03): one
140
+ # handle per (run, event type), so the number of events of a type is the length of
141
+ # that handle's history.
142
+ #
143
+ # THIS PREVIOUSLY ACCUMULATED. It read the whole log back, concatenated one line, and
144
+ # registered the WHOLE THING as a new card. `card` is content-addressed, so every
145
+ # distinct accumulation became a NEW ROW — N events, N cards, averaging N/2 lines,
146
+ # i.e. O(n²) bytes. The Rust emitter carried the identical defect; together they cost
147
+ # 114 GB for the 20.9 MB of events in the append-only file beside them.
148
+ handle_name = f"run:{run_id}:event:{event_type}"
149
+ new_hash = clm_hash_string(json_line)
139
150
  try:
140
- current_content = repo.resolve_handle_content(handle_name, "execution_log")
141
- _logger.debug(f"jsonl_emit: current_content len={len(current_content) if current_content else 0}")
142
- except Exception as e:
143
- _logger.error(f"jsonl_emit: resolve failed: {e}")
144
- current_content = None
145
-
146
- new_content = f"{current_content}\n{json_line}" if current_content else json_line
147
-
148
- new_hash = clm_hash_string(new_content)
149
- try:
150
- repo.save_card_and_handle(handle_name, new_hash, new_content, "execution_log", replace=True)
151
+ repo.save_card_and_handle(handle_name, new_hash, json_line, "execution_log", replace=True)
151
152
  except Exception as e:
152
153
  _logger.error(f"jsonl_emit: DB registration failed: {e}")
153
154
 
@@ -243,7 +243,7 @@ def assess_equivalence_py(clm_root: str, clm_file: str) -> tuple[int, str]:
243
243
  try:
244
244
  db.execute("content_memory", "INSERT OR IGNORE INTO card (hash, content, g_time) VALUES (?, ?, ?);", [vcard_hash, vcard_yaml, timestamp])
245
245
  handle_name = f"vcard:equivalence:{vcard_hash}"
246
- db.execute("content_memory", "INSERT OR IGNORE INTO handle_registry (handle, current_hash, created_at, updated_at) VALUES (?, ?, ?, ?);", [handle_name, vcard_hash, timestamp, timestamp])
246
+ db.execute("content_memory", "INSERT OR IGNORE INTO handle_registry (handle, current_hash, updated_at) VALUES (?, ?, ?);", [handle_name, vcard_hash, timestamp])
247
247
  except Exception:
248
248
  pass
249
249
 
@@ -252,7 +252,7 @@ def directory_to_db_py(clm_root: str, spec_file: str) -> str:
252
252
  cursor.executescript(schema_content)
253
253
  except Exception:
254
254
  cursor.execute("CREATE TABLE IF NOT EXISTS card (hash TEXT PRIMARY KEY, content BLOB NOT NULL, g_time TEXT NOT NULL);")
255
- cursor.execute("CREATE TABLE IF NOT EXISTS handle_registry (handle TEXT PRIMARY KEY, current_hash TEXT NOT NULL, created_at TEXT NOT NULL, updated_at TEXT NOT NULL);")
255
+ cursor.execute("CREATE TABLE IF NOT EXISTS handle_registry (handle TEXT PRIMARY KEY, current_hash TEXT NOT NULL, updated_at TEXT NOT NULL);")
256
256
  cursor.execute("CREATE TABLE IF NOT EXISTS handle_history (handle TEXT NOT NULL, previous_hash TEXT NOT NULL, changed_at TEXT NOT NULL);")
257
257
  conn.commit()
258
258
 
@@ -281,7 +281,7 @@ def directory_to_db_py(clm_root: str, spec_file: str) -> str:
281
281
  handle = f"{storage_type}://{top_dir_name}/{rel_path}"
282
282
 
283
283
  cursor.execute("INSERT OR IGNORE INTO card (hash, content, g_time) VALUES (?, ?, ?);", [h, sqlite3.Binary(content_bytes), now])
284
- cursor.execute("INSERT OR IGNORE INTO handle_registry (handle, current_hash, created_at, updated_at) VALUES (?, ?, ?, ?);", [handle, h, now, now])
284
+ cursor.execute("INSERT OR IGNORE INTO handle_registry (handle, current_hash, updated_at) VALUES (?, ?, ?);", [handle, h, now])
285
285
 
286
286
  conn.commit()
287
287
 
@@ -51,7 +51,7 @@ ActionRuntime = Literal[
51
51
  class ActionMetadata(BaseModel):
52
52
  """Metadata block identifying the Action and its algebraic role in CLM."""
53
53
 
54
- model_config = ConfigDict(frozen=True, extra="forbid")
54
+ model_config = ConfigDict(frozen=True, extra="ignore")
55
55
 
56
56
  type: Literal["action", "pcard_action"] = "action"
57
57
  name: str = Field(..., pattern=r"^[a-z0-9_\-]+$")
@@ -64,7 +64,7 @@ class ActionMetadata(BaseModel):
64
64
  class ActionInput(BaseModel):
65
65
  """Specification of an input MCard bound to the Action."""
66
66
 
67
- model_config = ConfigDict(frozen=True, extra="forbid")
67
+ model_config = ConfigDict(frozen=True, extra="ignore")
68
68
 
69
69
  name: str
70
70
  uri: str | None = None
@@ -76,7 +76,7 @@ class ActionInput(BaseModel):
76
76
  class ActionPrecondition(BaseModel):
77
77
  """Precondition invariant rule (V_pre Gate) verified before Action execution."""
78
78
 
79
- model_config = ConfigDict(frozen=True, extra="forbid")
79
+ model_config = ConfigDict(frozen=True, extra="ignore")
80
80
 
81
81
  invariant: str
82
82
  rule: str
@@ -87,7 +87,7 @@ class ActionPrecondition(BaseModel):
87
87
  class ActionOperation(BaseModel):
88
88
  """Algebraic operation definition specifying the Baldwin operator and parameters."""
89
89
 
90
- model_config = ConfigDict(frozen=True, extra="forbid")
90
+ model_config = ConfigDict(frozen=True, extra="ignore")
91
91
 
92
92
  operator: BaldwinOperator
93
93
  strategy: str | None = None
@@ -98,7 +98,7 @@ class ActionOperation(BaseModel):
98
98
  class ActionPostcondition(BaseModel):
99
99
  """Postcondition invariant rule (V_post Witness) verified before committing output."""
100
100
 
101
- model_config = ConfigDict(frozen=True, extra="forbid")
101
+ model_config = ConfigDict(frozen=True, extra="ignore")
102
102
 
103
103
  invariant: str
104
104
  rule: str
@@ -109,7 +109,7 @@ class ActionPostcondition(BaseModel):
109
109
  class ActionOutput(BaseModel):
110
110
  """Specification of an output MCard emitted by the Action."""
111
111
 
112
- model_config = ConfigDict(frozen=True, extra="forbid")
112
+ model_config = ConfigDict(frozen=True, extra="ignore")
113
113
 
114
114
  name: str
115
115
  handle: str | None = None
@@ -124,7 +124,7 @@ class ActionManifest(BaseModel):
124
124
  Hoare postconditions (V_post), and outputs.
125
125
  """
126
126
 
127
- model_config = ConfigDict(frozen=True, extra="forbid")
127
+ model_config = ConfigDict(frozen=True, extra="ignore")
128
128
 
129
129
  version: Literal["1.0", "1.0.0"] = "1.0"
130
130
  clm: ActionMetadata
@@ -33,7 +33,7 @@ class WorkflowValidationError(CLMError):
33
33
  class WorkflowMetadata(BaseModel):
34
34
  """Metadata block identifying the workflow and its role in CLM."""
35
35
 
36
- model_config = ConfigDict(frozen=True, extra="forbid")
36
+ model_config = ConfigDict(frozen=True, extra="ignore")
37
37
 
38
38
  type: Literal["workflow", "pocketflow_dag"] = "workflow"
39
39
  name: str = Field(..., pattern=r"^[a-z0-9_\-]+$")
@@ -44,7 +44,7 @@ class WorkflowMetadata(BaseModel):
44
44
  class WorkflowInput(BaseModel):
45
45
  """Specification of an input parameter to the workflow."""
46
46
 
47
- model_config = ConfigDict(frozen=True, extra="forbid")
47
+ model_config = ConfigDict(frozen=True, extra="ignore")
48
48
 
49
49
  name: str
50
50
  format: str | None = None
@@ -54,7 +54,7 @@ class WorkflowInput(BaseModel):
54
54
  class WorkflowStep(BaseModel):
55
55
  """A discrete Action step in the workflow DAG."""
56
56
 
57
- model_config = ConfigDict(frozen=True, extra="forbid")
57
+ model_config = ConfigDict(frozen=True, extra="ignore")
58
58
 
59
59
  id: str = Field(..., pattern=r"^[a-z0-9_\-]+$")
60
60
  action: str
@@ -82,7 +82,7 @@ class WorkflowStep(BaseModel):
82
82
  class WorkflowOutput(BaseModel):
83
83
  """Specification of an output produced by the workflow."""
84
84
 
85
- model_config = ConfigDict(frozen=True, extra="forbid")
85
+ model_config = ConfigDict(frozen=True, extra="ignore")
86
86
 
87
87
  name: str
88
88
  source: str
@@ -98,7 +98,7 @@ class WorkflowManifest(BaseModel):
98
98
  and Merkle causal lineage.
99
99
  """
100
100
 
101
- model_config = ConfigDict(frozen=True, extra="forbid")
101
+ model_config = ConfigDict(frozen=True, extra="ignore")
102
102
 
103
103
  version: Literal["1.0", "1.0.0"] = "1.0"
104
104
  clm: WorkflowMetadata
@@ -35,15 +35,15 @@ CARD_TABLE_SPEC = TableSpec(
35
35
 
36
36
  HANDLE_REGISTRY_SPEC = TableSpec(
37
37
  name=TABLE_HANDLE_REGISTRY,
38
- columns=("handle", "current_hash", "created_at", "updated_at"),
38
+ columns=("handle", "current_hash", "updated_at"),
39
39
  primary_key=("handle",),
40
40
  description="Semantic handle mapping mutable names to immutable CAS hashes (Sum/Appetition).",
41
41
  )
42
42
 
43
43
  HANDLE_HISTORY_SPEC = TableSpec(
44
44
  name=TABLE_HANDLE_HISTORY,
45
- columns=("id", "handle", "previous_hash", "changed_at", "change_type"),
46
- primary_key=("id",),
45
+ columns=("handle", "previous_hash", "changed_at"),
46
+ primary_key=(),
47
47
  description="Append-only audit trail witnessing all handle transitions (η-conversion).",
48
48
  )
49
49
 
@@ -60,7 +60,6 @@ SQL_CREATE_HANDLE_REGISTRY: Final[str] = """\
60
60
  CREATE TABLE IF NOT EXISTS handle_registry (
61
61
  handle TEXT PRIMARY KEY,
62
62
  current_hash TEXT NOT NULL,
63
- created_at TEXT NOT NULL,
64
63
  updated_at TEXT NOT NULL,
65
64
  FOREIGN KEY (current_hash) REFERENCES card(hash)
66
65
  );
@@ -69,11 +68,9 @@ CREATE INDEX IF NOT EXISTS idx_handle_current_hash ON handle_registry(current_ha
69
68
 
70
69
  SQL_CREATE_HANDLE_HISTORY: Final[str] = """\
71
70
  CREATE TABLE IF NOT EXISTS handle_history (
72
- id INTEGER PRIMARY KEY AUTOINCREMENT,
73
71
  handle TEXT NOT NULL,
74
72
  previous_hash TEXT NOT NULL,
75
73
  changed_at TEXT NOT NULL,
76
- change_type TEXT DEFAULT 'UPDATE',
77
74
  FOREIGN KEY (handle) REFERENCES handle_registry(handle),
78
75
  FOREIGN KEY (previous_hash) REFERENCES card(hash)
79
76
  );
@@ -922,37 +922,43 @@ class ColoredPetriVM:
922
922
  else:
923
923
  out_buf.append(" ✅ Temporal idempotency proven (zero state drift)")
924
924
 
925
- events_handle = f"run:{run_id}:events"
926
- _logger.debug(f"--- PETRI DEBUG: events_handle={events_handle}, clm_root={clm_root} ---")
927
- try:
928
- h_res = ctx.repo.get_all_handles("execution_log")
929
- _logger.debug(f"--- PETRI DEBUG: handle registry={repr(h_res)} ---")
930
- except Exception as e:
931
- _logger.error(f"--- PETRI DEBUG: db query failed: {e} ---")
932
-
933
- events_content = ""
934
- try:
935
- events_content = resolve_handle_content(clm_root, events_handle, "execution_log") or ""
936
- except Exception as e:
937
- _logger.info(f"[PETRI] ERROR resolving events: {e}")
938
- _logger.error("Exception in Petri net execution", exc_info=True)
939
-
940
925
  assert_pass = 0
941
926
  assert_fail = 0
942
927
 
943
928
  if assertions:
944
929
  for key, expected in assertions.get("event_counts", {}).items():
930
+ # The count is the LENGTH OF THE HANDLE'S REVISION RECORD (`ORC-29`): the
931
+ # handle `run:<id>:event:<type>` carries one version per event. Nothing here
932
+ # reads a blob, because the emitter no longer writes one — counting lines in
933
+ # an accumulated snapshot is what made the emitter accumulate, and that is
934
+ # what cost 114 GB.
945
935
  actual = 0
946
- for line in events_content.splitlines():
947
- if not line.strip():
948
- continue
936
+ try:
937
+ actual = len(
938
+ ctx.repo.get_handle_versions(
939
+ f"run:{run_id}:event:{key}", "execution_log"
940
+ )
941
+ )
942
+ except Exception:
943
+ actual = 0
944
+ if actual == 0:
945
+ # LEGACY: a run recorded before the emitter stopped accumulating holds
946
+ # its events as one blob under `run:<id>:events`.
949
947
  try:
950
- evt_data = json.loads(line)
951
- if evt_data.get("event") == key:
952
- actual += 1
948
+ legacy = (
949
+ resolve_handle_content(
950
+ clm_root, f"run:{run_id}:events", "execution_log"
951
+ )
952
+ or ""
953
+ )
954
+ for line in legacy.splitlines():
955
+ if (
956
+ f"\"event\":\"{key}\"" in line
957
+ or f"\"event\": \"{key}\"" in line
958
+ ):
959
+ actual += 1
953
960
  except Exception:
954
- if f"\"event\":\"{key}\"" in line or f"\"event\": \"{key}\"" in line:
955
- actual += 1
961
+ pass
956
962
  if actual == expected:
957
963
  out_buf.append(f" ✅ {key}: {actual} (expected {expected})")
958
964
  assert_pass += 1
@@ -389,7 +389,7 @@ process:
389
389
  post_excl_history = int(res) if res else 0
390
390
  _assert("exclude creates handle_history entry for version tracking", post_excl_history > pre_excl_history)
391
391
 
392
- prev_hash = db.execute("content_memory", "SELECT previous_hash FROM handle_history WHERE handle = 'test:baldwin_exclude' ORDER BY id DESC LIMIT 1;")
392
+ prev_hash = db.execute("content_memory", "SELECT previous_hash FROM handle_history WHERE handle = 'test:baldwin_exclude' ORDER BY rowid DESC LIMIT 1;")
393
393
  prev_hash = prev_hash.strip() if prev_hash else None
394
394
  if prev_hash:
395
395
  prev_content = db.execute("content_memory", f"SELECT content FROM card WHERE hash = '{prev_hash}';")
@@ -83,20 +83,81 @@ class AbstractSqlEngine(StorageEngine):
83
83
  return MCardFromData(content_bytes, hash_value, g_time)
84
84
 
85
85
  # =====================================================================
86
- # Shared: get_all_cards, get_page delegate, clear
86
+ # Shared: _get_tombstoned_hashes, get_all_cards, get_page delegate, clear
87
87
  # =====================================================================
88
88
 
89
+ def _get_tombstoned_hashes(self) -> set[str]:
90
+ """Resolve tombstoned card hashes.
91
+
92
+ Follows INV-TAPE-04 (Lifecycle is External):
93
+ 1. If the tape has no lifecycle sidecar file, returns set() (the common case; no-op).
94
+ 2. If the sidecar exists, reads tombstoned hashes from it.
95
+ 3. During migration transition, also checks if a legacy `card_tombstone` table
96
+ exists on the connection and includes any hashes recorded there.
97
+ """
98
+ tombstoned: set[str] = set()
99
+
100
+ # 1. Check legacy card_tombstone table if it exists on connection (safe transition)
101
+ try:
102
+ rows = self._query_rows("SELECT hash FROM card_tombstone")
103
+ for r in rows:
104
+ if r.get("hash"):
105
+ tombstoned.add(str(r["hash"]))
106
+ except Exception:
107
+ pass
108
+
109
+ # 2. Check lifecycle sidecar tape if tape is file-backed
110
+ db_path = getattr(self.connection, "db_path", None)
111
+ if db_path and db_path != ":memory:":
112
+ try:
113
+ from pathlib import Path
114
+ p = Path(db_path)
115
+ candidates = [
116
+ p.parent / "lifecycle" / f"{p.stem}.lifecycle.db",
117
+ p.parent / f"{p.stem}.lifecycle.db",
118
+ ]
119
+ for sc_path in candidates:
120
+ if sc_path.exists():
121
+ import sqlite3
122
+ conn = sqlite3.connect(sc_path)
123
+ try:
124
+ c_rows = conn.execute(
125
+ "SELECT c.content FROM handle_registry r "
126
+ "JOIN card c ON c.hash = r.current_hash "
127
+ "WHERE r.handle LIKE 'urn:mcard:mcard:lifecycle:%'"
128
+ ).fetchall()
129
+ import json
130
+ for (content,) in c_rows:
131
+ try:
132
+ d = json.loads(content)
133
+ if d.get("kind") == "TOMBSTONE":
134
+ sh = d.get("subject_hash")
135
+ if sh:
136
+ tombstoned.add(str(sh))
137
+ handle_sub = d.get("subject_handle")
138
+ if handle_sub and not handle_sub.startswith("urn:"):
139
+ tombstoned.add(str(handle_sub))
140
+ except Exception:
141
+ pass
142
+ finally:
143
+ conn.close()
144
+ break
145
+ except Exception:
146
+ pass
147
+
148
+ return tombstoned
149
+
89
150
  def get_all_cards(self) -> Page:
90
151
  """Get all non-tombstoned cards in a single page."""
91
- self._ensure_tombstone_table()
92
- rows = self._query_rows(
93
- """
94
- SELECT c.content, c.hash, c.g_time
95
- FROM card c
96
- LEFT JOIN card_tombstone t ON c.hash = t.hash
97
- WHERE t.hash IS NULL
98
- """
99
- )
152
+ tombstoned = self._get_tombstoned_hashes()
153
+ if not tombstoned:
154
+ rows = self._query_rows("SELECT content, hash, g_time FROM card")
155
+ else:
156
+ placeholders = ", ".join("?" for _ in tombstoned)
157
+ rows = self._query_rows(
158
+ f"SELECT content, hash, g_time FROM card WHERE hash NOT IN ({placeholders})",
159
+ tuple(tombstoned),
160
+ )
100
161
  items = [self._row_to_card(r["content"], r["hash"], r["g_time"]) for r in rows]
101
162
  return Page.create(
102
163
  items=items,
@@ -154,9 +215,9 @@ class AbstractSqlEngine(StorageEngine):
154
215
  raise ValueError(f"Handle '{validated}' already exists.")
155
216
 
156
217
  self._exec_sql(
157
- "INSERT INTO handle_registry (handle, current_hash, created_at, updated_at) "
158
- "VALUES (?, ?, ?, ?)",
159
- (validated, hash_value, now, now),
218
+ "INSERT INTO handle_registry (handle, current_hash, updated_at) "
219
+ "VALUES (?, ?, ?)",
220
+ (validated, hash_value, now),
160
221
  )
161
222
  logger.info(f"Registered handle '{validated}' -> {hash_value[:8]}...")
162
223
  return True
@@ -223,7 +284,7 @@ class AbstractSqlEngine(StorageEngine):
223
284
  validated = validate_handle(handle)
224
285
  rows = self._query_rows(
225
286
  "SELECT previous_hash, changed_at FROM handle_history "
226
- "WHERE handle = ? ORDER BY id DESC",
287
+ "WHERE handle = ? ORDER BY rowid DESC",
227
288
  (validated,),
228
289
  )
229
290
  return [
@@ -280,7 +341,7 @@ class AbstractSqlEngine(StorageEngine):
280
341
 
281
342
  # Check old exists
282
343
  old_rows = self._query_rows(
283
- "SELECT handle, current_hash, created_at, updated_at "
344
+ "SELECT handle, current_hash, updated_at "
284
345
  "FROM handle_registry WHERE handle = ?",
285
346
  (old_validated,),
286
347
  )
@@ -300,12 +361,11 @@ class AbstractSqlEngine(StorageEngine):
300
361
  # cannot simply UPDATE either table first without violating the constraint.
301
362
  old_row = old_rows[0]
302
363
  self._exec_sql(
303
- "INSERT INTO handle_registry (handle, current_hash, created_at, updated_at) "
304
- "VALUES (?, ?, ?, ?)",
364
+ "INSERT INTO handle_registry (handle, current_hash, updated_at) "
365
+ "VALUES (?, ?, ?)",
305
366
  (
306
367
  new_validated,
307
368
  old_row["current_hash"],
308
- old_row["created_at"],
309
369
  old_row["updated_at"],
310
370
  ),
311
371
  )