trunkit 0.2.2__tar.gz → 0.2.4__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 (203) hide show
  1. {trunkit-0.2.2 → trunkit-0.2.4}/PKG-INFO +1 -1
  2. {trunkit-0.2.2 → trunkit-0.2.4}/pyproject.toml +1 -1
  3. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/40_cert.sql +3 -3
  4. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/79_cert_kan_engines.sql +29 -12
  5. trunkit-0.2.4/src/calx/sql/90_cert_equip_probes.sql +87 -0
  6. {trunkit-0.2.2 → trunkit-0.2.4}/.dockerignore +0 -0
  7. {trunkit-0.2.2 → trunkit-0.2.4}/.gitattributes +0 -0
  8. {trunkit-0.2.2 → trunkit-0.2.4}/.github/workflows/python-package-conda.yml +0 -0
  9. {trunkit-0.2.2 → trunkit-0.2.4}/.gitignore +0 -0
  10. {trunkit-0.2.2 → trunkit-0.2.4}/Dockerfile +0 -0
  11. {trunkit-0.2.2 → trunkit-0.2.4}/LICENSE +0 -0
  12. {trunkit-0.2.2 → trunkit-0.2.4}/Makefile +0 -0
  13. {trunkit-0.2.2 → trunkit-0.2.4}/README.md +0 -0
  14. {trunkit-0.2.2 → trunkit-0.2.4}/SKILL.md +0 -0
  15. {trunkit-0.2.2 → trunkit-0.2.4}/assets/logo.png +0 -0
  16. {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/_notify_demo.py +0 -0
  17. {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/bench.py +0 -0
  18. {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/bench_chomsky.py +0 -0
  19. {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/llm_eval.py +0 -0
  20. {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/llm_eval_classify_retry.log +0 -0
  21. {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/llm_eval_run.log +0 -0
  22. {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/sequence_bench.py +0 -0
  23. {trunkit-0.2.2 → trunkit-0.2.4}/docker-compose.yml +0 -0
  24. {trunkit-0.2.2 → trunkit-0.2.4}/proofs/combined_signature.py +0 -0
  25. {trunkit-0.2.2 → trunkit-0.2.4}/proofs/equipment.py +0 -0
  26. {trunkit-0.2.2 → trunkit-0.2.4}/proofs/gap_homology_primes.py +0 -0
  27. {trunkit-0.2.2 → trunkit-0.2.4}/proofs/perfect_28.py +0 -0
  28. {trunkit-0.2.2 → trunkit-0.2.4}/scripts/morning_brief_demo.py +0 -0
  29. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/__init__.py +0 -0
  30. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/cli.py +0 -0
  31. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/curry_adapter.py +0 -0
  32. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/db.py +0 -0
  33. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/generate.py +0 -0
  34. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/primesieve.py +0 -0
  35. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/00_rehome_to_calx.sql +0 -0
  36. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/01_schema.sql +0 -0
  37. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/02_views.sql +0 -0
  38. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/03_generate.sql +0 -0
  39. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/04_crt.sql +0 -0
  40. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/05_dynamics.sql +0 -0
  41. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/06_oeis_match.sql +0 -0
  42. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/07_compositions.sql +0 -0
  43. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/10_curry.sql +0 -0
  44. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/20_kan.sql +0 -0
  45. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/21_kan_functors.sql +0 -0
  46. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/22_kan_elements.sql +0 -0
  47. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/23_kan_monoidal.sql +0 -0
  48. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/24_kan_natural_transformations.sql +0 -0
  49. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/25_kan_extensions.sql +0 -0
  50. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/26_kan_enrichment.sql +0 -0
  51. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/27_kan_profunctors.sql +0 -0
  52. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/28_kan_adjunctions.sql +0 -0
  53. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/30_kan_corpus.sql +0 -0
  54. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/41_cert_formal.sql +0 -0
  55. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/42_cert_gap_homology.sql +0 -0
  56. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/43_kan_sequence_homology.sql +0 -0
  57. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/44_cert_seq_homology.sql +0 -0
  58. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/45_kan_factorial_homology.sql +0 -0
  59. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/46_cert_factorial_homology.sql +0 -0
  60. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/47_kan_combined_signature.sql +0 -0
  61. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/48_cert_combined.sql +0 -0
  62. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/49_kan_shared_prime_betti.sql +0 -0
  63. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/50_cert_combined_scale.sql +0 -0
  64. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/51_cert_shared_prime_h2.sql +0 -0
  65. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/52_cert_developed_sequence.sql +0 -0
  66. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/53_cert_omega_family.sql +0 -0
  67. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/54_cert_omega_family_succ.sql +0 -0
  68. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/55_kan_prime_members.sql +0 -0
  69. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/56_cert_prime_members_functor.sql +0 -0
  70. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/57_kan_strata_tower.sql +0 -0
  71. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/58_cert_strata_tower.sql +0 -0
  72. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/59_kan_grading.sql +0 -0
  73. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/60_cert_grading.sql +0 -0
  74. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/61_kan_identity_decomposition.sql +0 -0
  75. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/62_cert_identity_decomposition.sql +0 -0
  76. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/63_kan_bigrading.sql +0 -0
  77. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/64_cert_bigrading.sql +0 -0
  78. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/65_kan_chromatic.sql +0 -0
  79. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/66_cert_chromatic.sql +0 -0
  80. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/67_kan_lithon.sql +0 -0
  81. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/68_cert_lithon.sql +0 -0
  82. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/69_kan_shadow.sql +0 -0
  83. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/70_cert_shadow.sql +0 -0
  84. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/71_kan_self_syzygy.sql +0 -0
  85. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/72_cert_self_syzygy.sql +0 -0
  86. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/73_kan_self_shadow.sql +0 -0
  87. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/74_cert_self_shadow.sql +0 -0
  88. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/75_kan_f1_radix.sql +0 -0
  89. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/76_cert_f1_radix.sql +0 -0
  90. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/77_kan_moonshine.sql +0 -0
  91. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/78_cert_moonshine.sql +0 -0
  92. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/80_kan_colimit_closure.sql +0 -0
  93. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/81_cert_colimit_closure.sql +0 -0
  94. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/82_kan_equipment.sql +0 -0
  95. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/83_cert_equipment.sql +0 -0
  96. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/84_cert_witness.sql +0 -0
  97. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/85_cert_derivation.sql +0 -0
  98. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/86_cert_verify.sql +0 -0
  99. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/87_cert_export_bundle.sql +0 -0
  100. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/88_cert_witness_carry.sql +0 -0
  101. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/89_nerode_bridge.sql +0 -0
  102. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/examples/crt_examples.sql +0 -0
  103. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/examples/dynamics_examples.sql +0 -0
  104. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/examples/queries.sql +0 -0
  105. {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/validate.py +0 -0
  106. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/__init__.py +0 -0
  107. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/adapters.py +0 -0
  108. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/automata.py +0 -0
  109. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/cli.py +0 -0
  110. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/db.py +0 -0
  111. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/precache.py +0 -0
  112. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sources.py +0 -0
  113. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/00_bootstrap.sql +0 -0
  114. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/01_schema.sql +0 -0
  115. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/02_run.sql +0 -0
  116. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/03_minimize.sql +0 -0
  117. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/04_product.sql +0 -0
  118. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/05_from_regex.sql +0 -0
  119. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/10_cert.sql +0 -0
  120. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/11_chomsky.sql +0 -0
  121. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/20_calx_bridge.sql +0 -0
  122. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/30_protocol.sql +0 -0
  123. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/40_eigenform.sql +0 -0
  124. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/50_corpus.sql +0 -0
  125. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/60_product_corpus.sql +0 -0
  126. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/70_morphism.sql +0 -0
  127. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/80_categorical.sql +0 -0
  128. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/90_sequence.sql +0 -0
  129. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/91_sequence_cache.sql +0 -0
  130. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/92_session_automata.sql +0 -0
  131. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/93_handoff.sql +0 -0
  132. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/94_open_session.sql +0 -0
  133. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/95_cybernetic_automata.sql +0 -0
  134. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/96_dead_time_factory.sql +0 -0
  135. {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/97_composite_dfa.sql +0 -0
  136. {trunkit-0.2.2 → trunkit-0.2.4}/tests/__init__.py +0 -0
  137. {trunkit-0.2.2 → trunkit-0.2.4}/tests/conftest.py +0 -0
  138. {trunkit-0.2.2 → trunkit-0.2.4}/tests/fixtures/oeis/.gitkeep +0 -0
  139. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_aliquot.py +0 -0
  140. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_build.py +0 -0
  141. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_categorical.py +0 -0
  142. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_chomsky.py +0 -0
  143. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_compose_match.py +0 -0
  144. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_composite_dfa.py +0 -0
  145. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_crt.py +0 -0
  146. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_cybernetic.py +0 -0
  147. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_dead_time_factory.py +0 -0
  148. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_dynamics.py +0 -0
  149. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_equivalent.py +0 -0
  150. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_factorizations.py +0 -0
  151. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_minimize.py +0 -0
  152. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_morphisms.py +0 -0
  153. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_oeis_match.py +0 -0
  154. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_phase1a.py +0 -0
  155. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_phase1b.py +0 -0
  156. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_phase1c.py +0 -0
  157. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_phase2.py +0 -0
  158. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_product.py +0 -0
  159. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_run.py +0 -0
  160. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_schema.py +0 -0
  161. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_sequence.py +0 -0
  162. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_sieve.py +0 -0
  163. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_sources.py +0 -0
  164. {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_stream_interceptor.py +0 -0
  165. {trunkit-0.2.2 → trunkit-0.2.4}/tools/agent_demo.py +0 -0
  166. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_bigrading.py +0 -0
  167. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_chromatic.py +0 -0
  168. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_colimit_closure.py +0 -0
  169. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_equipment.py +0 -0
  170. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_f1_radix.py +0 -0
  171. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_grading.py +0 -0
  172. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_identity_decomposition.py +0 -0
  173. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_lithon.py +0 -0
  174. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_moonshine.py +0 -0
  175. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_self_shadow.py +0 -0
  176. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_self_syzygy.py +0 -0
  177. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_shadow.py +0 -0
  178. {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_strata_tower.py +0 -0
  179. {trunkit-0.2.2 → trunkit-0.2.4}/tools/cert_formal.py +0 -0
  180. {trunkit-0.2.2 → trunkit-0.2.4}/tools/compose_match.py +0 -0
  181. {trunkit-0.2.2 → trunkit-0.2.4}/tools/cryptanalysis.py +0 -0
  182. {trunkit-0.2.2 → trunkit-0.2.4}/tools/develop_omega_family.py +0 -0
  183. {trunkit-0.2.2 → trunkit-0.2.4}/tools/develop_sequence.py +0 -0
  184. {trunkit-0.2.2 → trunkit-0.2.4}/tools/diagnostic_tests.py +0 -0
  185. {trunkit-0.2.2 → trunkit-0.2.4}/tools/factorial_homology.py +0 -0
  186. {trunkit-0.2.2 → trunkit-0.2.4}/tools/kan_in_kan.py +0 -0
  187. {trunkit-0.2.2 → trunkit-0.2.4}/tools/load_kan_corpus.py +0 -0
  188. {trunkit-0.2.2 → trunkit-0.2.4}/tools/oeis_loader.py +0 -0
  189. {trunkit-0.2.2 → trunkit-0.2.4}/tools/oeis_match.py +0 -0
  190. {trunkit-0.2.2 → trunkit-0.2.4}/tools/omega_equal_control.py +0 -0
  191. {trunkit-0.2.2 → trunkit-0.2.4}/tools/port_curry_sqlite_to_pg.py +0 -0
  192. {trunkit-0.2.2 → trunkit-0.2.4}/tools/prime_members_functor.py +0 -0
  193. {trunkit-0.2.2 → trunkit-0.2.4}/tools/register_calx_fn_deps.py +0 -0
  194. {trunkit-0.2.2 → trunkit-0.2.4}/tools/register_calx_in_curry.py +0 -0
  195. {trunkit-0.2.2 → trunkit-0.2.4}/tools/relationship_report.py +0 -0
  196. {trunkit-0.2.2 → trunkit-0.2.4}/tools/run_compose_discovery.py +0 -0
  197. {trunkit-0.2.2 → trunkit-0.2.4}/tools/run_discovery.py +0 -0
  198. {trunkit-0.2.2 → trunkit-0.2.4}/tools/seed_oeis_classics.py +0 -0
  199. {trunkit-0.2.2 → trunkit-0.2.4}/tools/seed_sequences.py +0 -0
  200. {trunkit-0.2.2 → trunkit-0.2.4}/tools/seq_homology.py +0 -0
  201. {trunkit-0.2.2 → trunkit-0.2.4}/tools/shared_prime_betti.py +0 -0
  202. {trunkit-0.2.2 → trunkit-0.2.4}/tools/smoke_curry_calx.py +0 -0
  203. {trunkit-0.2.2 → trunkit-0.2.4}/tools/stream_interceptor.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trunkit
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Trunkit — proof-carrying code and deterministic automata middleware on PostgreSQL, with Porter agent context handoff
5
5
  Project-URL: Homepage, https://github.com/Athena-Pro/Trunkit
6
6
  Project-URL: Repository, https://github.com/Athena-Pro/Trunkit
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "trunkit"
7
- version = "0.2.2"
7
+ version = "0.2.4"
8
8
  description = "Trunkit — proof-carrying code and deterministic automata middleware on PostgreSQL, with Porter agent context handoff"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -154,13 +154,13 @@ SELECT DISTINCT ON (cl.id)
154
154
  cl.claim_kind,
155
155
  cl.method,
156
156
  ce.seq,
157
- ce.status,
157
+ COALESCE(ce.status, 'unchecked') AS status,
158
158
  ce.checked_at,
159
159
  ce.evidence,
160
160
  ce.valid_under
161
161
  FROM cert.claim cl
162
- JOIN cert.certificate ce ON ce.claim_id = cl.id
163
- ORDER BY cl.id, ce.seq DESC;
162
+ LEFT JOIN cert.certificate ce ON ce.claim_id = cl.id
163
+ ORDER BY cl.id, ce.seq DESC NULLS LAST;
164
164
 
165
165
  -- ---- Seed the four method tiers --------------------------------------------
166
166
  INSERT INTO cert.method (name, claim_kind, checker_kind, description) VALUES
@@ -31,8 +31,9 @@ DECLARE
31
31
  v_andcols TEXT;
32
32
  v_rowok BOOLEAN;
33
33
  v_engines JSONB := '{}'::jsonb;
34
- v_allok BOOLEAN := TRUE;
35
- v_n INTEGER := 0;
34
+ v_n INTEGER := 0; -- engines with law data (non-empty)
35
+ v_empty INTEGER := 0; -- engines whose laws view has no witnesses
36
+ v_violated INTEGER := 0; -- engines with a genuinely-false law
36
37
  BEGIN
37
38
  FOR v IN
38
39
  SELECT table_name
@@ -57,19 +58,35 @@ BEGIN
57
58
  EXECUTE format(
58
59
  'SELECT bool_and(%s) FROM kan.%I', v_andcols, v.table_name
59
60
  ) INTO v_rowok;
60
- v_rowok := COALESCE(v_rowok, FALSE);
61
- v_engines := v_engines
62
- || jsonb_build_object(v.table_name, v_rowok);
63
- v_n := v_n + 1;
64
- IF NOT v_rowok THEN
65
- v_allok := FALSE;
61
+ -- NULL bool_and == no witnesses / all-null row == laws UNKNOWN (empty
62
+ -- engine), NOT violated. Conflating the two manufactures false
63
+ -- contradictions and masks genuine ones; keep the three-valued signal.
64
+ IF v_rowok IS NULL THEN
65
+ v_engines := v_engines
66
+ || jsonb_build_object(v.table_name, 'empty');
67
+ v_empty := v_empty + 1;
68
+ ELSE
69
+ v_engines := v_engines
70
+ || jsonb_build_object(v.table_name, v_rowok);
71
+ v_n := v_n + 1;
72
+ IF NOT v_rowok THEN
73
+ v_violated := v_violated + 1;
74
+ END IF;
66
75
  END IF;
67
76
  END LOOP;
68
77
 
69
- RETURN QUERY SELECT (v_allok AND v_n > 0),
70
- jsonb_build_object('engines_checked', v_n,
71
- 'all_true', v_allok,
72
- 'engines', v_engines);
78
+ -- refuted only on a genuine violation; unverified when populated engines
79
+ -- hold but some are empty (or nothing populated); valid when every
80
+ -- populated engine holds and none are empty.
81
+ RETURN QUERY SELECT
82
+ CASE WHEN v_violated > 0 THEN FALSE
83
+ WHEN v_empty > 0 OR v_n = 0 THEN NULL
84
+ ELSE TRUE END,
85
+ jsonb_build_object('engines_checked', v_n,
86
+ 'engines_empty', v_empty,
87
+ 'violations', v_violated,
88
+ 'all_true', (v_violated = 0 AND v_empty = 0 AND v_n > 0),
89
+ 'engines', v_engines);
73
90
  END
74
91
  $$;
75
92
 
@@ -0,0 +1,87 @@
1
+ -- Unified model, step 90: equip dangling claims for verification.
2
+ --
3
+ -- The validation pass (2026-05-29) found ~24 claims with probe_sql IS NULL:
4
+ -- asserted but with no in-DB checker, so cert.standing can only ever call them
5
+ -- 'unverified'. "Unverified" should mean "checkable but data insufficient",
6
+ -- not "no way to check". This file qualifies the checkable ones by attaching
7
+ -- probes, using the same three-valued honesty as 79 (empty -> unverified,
8
+ -- violation -> refuted, holds -> valid). Idempotent.
9
+
10
+ -- ---- reusable verifiers -----------------------------------------------------
11
+
12
+ -- Single kan law-view checker (the per-engine analogue of kan_engines_all_true).
13
+ -- bool_and already separates empty (NULL) from violated (FALSE); we preserve it.
14
+ CREATE OR REPLACE FUNCTION cert.law_view_holds(p_view TEXT)
15
+ RETURNS TABLE (ok BOOLEAN, evidence JSONB)
16
+ LANGUAGE plpgsql AS $$
17
+ DECLARE
18
+ v_cols TEXT;
19
+ v_rowok BOOLEAN;
20
+ v_witnesses BIGINT;
21
+ BEGIN
22
+ IF NOT EXISTS (SELECT 1 FROM information_schema.views
23
+ WHERE table_schema='kan' AND table_name=p_view) THEN
24
+ RETURN QUERY SELECT NULL::boolean,
25
+ jsonb_build_object('error','no such kan law view','view',p_view);
26
+ RETURN;
27
+ END IF;
28
+ SELECT string_agg(quote_ident(column_name), ' AND ') INTO v_cols
29
+ FROM information_schema.columns
30
+ WHERE table_schema='kan' AND table_name=p_view AND data_type='boolean';
31
+ IF v_cols IS NULL THEN
32
+ RETURN QUERY SELECT NULL::boolean,
33
+ jsonb_build_object('note','no boolean law columns','view','kan.'||p_view);
34
+ RETURN;
35
+ END IF;
36
+ EXECUTE format('SELECT bool_and(%s), count(*) FROM kan.%I', v_cols, p_view)
37
+ INTO v_rowok, v_witnesses;
38
+ RETURN QUERY SELECT v_rowok, -- NULL (empty/all-null) -> unverified
39
+ jsonb_build_object('view','kan.'||p_view, 'witnesses', v_witnesses,
40
+ 'laws_hold', v_rowok);
41
+ END $$;
42
+
43
+ -- Perfect-number verifier (a concrete arithmetic checker; aliquot sum = n).
44
+ CREATE OR REPLACE FUNCTION cert.is_perfect(n BIGINT)
45
+ RETURNS TABLE (ok BOOLEAN, evidence JSONB)
46
+ LANGUAGE sql AS $$
47
+ SELECT (s = n) AS ok,
48
+ jsonb_build_object('n', n, 'aliquot_sum', s, 'perfect', (s = n))
49
+ FROM (SELECT COALESCE(sum(d),0) AS s
50
+ FROM generate_series(1, n-1) d WHERE n % d = 0) t;
51
+ $$;
52
+
53
+ -- ---- equip pass -------------------------------------------------------------
54
+
55
+ -- (1) every NULL-probe claim whose subject_kind has a matching kan law-view
56
+ UPDATE cert.claim cl
57
+ SET probe_sql = format('SELECT ok, evidence FROM cert.law_view_holds(%L)',
58
+ cl.subject_kind || '_laws')
59
+ WHERE cl.probe_sql IS NULL
60
+ AND EXISTS (SELECT 1 FROM information_schema.views v
61
+ WHERE v.table_schema='kan'
62
+ AND v.table_name = cl.subject_kind || '_laws');
63
+
64
+ -- (2) prime_members_functor -> prime_members_laws (name differs from subject_kind)
65
+ UPDATE cert.claim
66
+ SET probe_sql = 'SELECT ok, evidence FROM cert.law_view_holds(''prime_members_laws'')'
67
+ WHERE probe_sql IS NULL AND subject_kind = 'prime_members_functor';
68
+
69
+ -- (3) perfect-number facts -> arithmetic verifier (directly checkable now)
70
+ UPDATE cert.claim
71
+ SET probe_sql = format('SELECT ok, evidence FROM cert.is_perfect(%s)',
72
+ (subject_ref->>'n')::bigint)
73
+ WHERE probe_sql IS NULL AND subject_kind = 'number_fact'
74
+ AND subject_ref->>'property' = 'perfect'
75
+ AND subject_ref ? 'n';
76
+
77
+ -- Re-attest everything that just gained a probe.
78
+ DO $$
79
+ DECLARE c RECORD; n int := 0;
80
+ BEGIN
81
+ FOR c IN SELECT s.claim_id FROM cert.standing s
82
+ WHERE s.status='unverified' LOOP
83
+ PERFORM cert.check(c.claim_id);
84
+ n := n + 1;
85
+ END LOOP;
86
+ RAISE NOTICE 're-checked % claims after equip', n;
87
+ END $$;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes