trunkit 0.2.6__tar.gz → 0.4.0__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 (363) hide show
  1. {trunkit-0.2.6 → trunkit-0.4.0}/.dockerignore +18 -18
  2. {trunkit-0.2.6 → trunkit-0.4.0}/.gitattributes +2 -0
  3. {trunkit-0.2.6 → trunkit-0.4.0}/.github/workflows/python-package-conda.yml +36 -1
  4. {trunkit-0.2.6 → trunkit-0.4.0}/.gitignore +69 -52
  5. {trunkit-0.2.6 → trunkit-0.4.0}/Dockerfile +18 -18
  6. trunkit-0.4.0/METHODS.md +25 -0
  7. {trunkit-0.2.6 → trunkit-0.4.0}/Makefile +83 -82
  8. {trunkit-0.2.6 → trunkit-0.4.0}/PKG-INFO +73 -17
  9. {trunkit-0.2.6 → trunkit-0.4.0}/README.md +360 -310
  10. {trunkit-0.2.6 → trunkit-0.4.0}/SKILL.md +2 -2
  11. trunkit-0.4.0/STATUS.md +39 -0
  12. trunkit-0.4.0/TRUNKIT_CAPABILITY_FOOTPRINT.md +78 -0
  13. trunkit-0.4.0/Trunkit_Erdos_AI_Capability_Fit.md +120 -0
  14. trunkit-0.4.0/Trunkit_arXiv_Expansion_Review.md +89 -0
  15. trunkit-0.4.0/corpus/2311.18781.pdf +0 -0
  16. trunkit-0.4.0/docs/LEAN_BRIDGE_SPEC.md +164 -0
  17. trunkit-0.4.0/docs/NEXT_EXPANSIONS.md +55 -0
  18. trunkit-0.4.0/docs/PORTER_POLICY_GATE.md +159 -0
  19. trunkit-0.4.0/docs/QUANT_EHA_WFFA_DESIGN.md +189 -0
  20. trunkit-0.4.0/docs/RELEASE_0_4_0_ARXIV_SCAN.md +101 -0
  21. trunkit-0.4.0/docs/TOOL_IN_TOOL_EHA_WFFA.md +92 -0
  22. trunkit-0.4.0/docs/VISION_ARXIV_SCAN.md +29 -0
  23. trunkit-0.4.0/docs/VISION_LAYER.md +44 -0
  24. trunkit-0.4.0/docs/methods/arith_check_spec.md +73 -0
  25. trunkit-0.4.0/docs/methods/csp_carry_spec.md +41 -0
  26. trunkit-0.4.0/docs/methods/parity_results.md +49 -0
  27. trunkit-0.4.0/docs/methods/quote_carry_spec.md +40 -0
  28. trunkit-0.4.0/local/README.md +52 -0
  29. trunkit-0.4.0/local/STATUS_BOARD.html +284 -0
  30. trunkit-0.4.0/local/attestations/tel_cleanup_attestation.sql +48 -0
  31. trunkit-0.4.0/local/attestations/tel_federation_registry.sql +54 -0
  32. trunkit-0.4.0/local/attestations/tel_federation_validation_attestation.sql +56 -0
  33. trunkit-0.4.0/local/benchmarks/llm_eval.py +838 -0
  34. trunkit-0.4.0/local/benchmarks/llm_eval_classify_retry.log +54 -0
  35. trunkit-0.4.0/local/benchmarks/llm_eval_run.log +59 -0
  36. trunkit-0.4.0/local/docs/AUDIT_WORKSHEET.md +167 -0
  37. trunkit-0.4.0/local/docs/NEXT_SESSION.md +65 -0
  38. trunkit-0.4.0/local/docs/STATUS.md +33 -0
  39. trunkit-0.4.0/local/docs/STATUS_BOARD.html +277 -0
  40. trunkit-0.4.0/local/morning_brief_demo.py +338 -0
  41. trunkit-0.4.0/local/sql/22_curry_calx_functor_seed.sql +35 -0
  42. trunkit-0.4.0/local/sql/31_kan_corpus_seed.sql +20 -0
  43. trunkit-0.4.0/local/sql/32_kan_sequence_terms.sql +42 -0
  44. trunkit-0.4.0/local/sql/33_kan_sequence_terms_bridge.sql +24 -0
  45. trunkit-0.4.0/local/sql/50_curry_lib.sql +336 -0
  46. trunkit-0.4.0/local/sql/51_curry_lib_claims.sql +57 -0
  47. trunkit-0.4.0/local/sql/81_cert_kan_engines.sql +36 -0
  48. trunkit-0.4.0/local/sql/82_cert_curry_calx_invariant.sql +38 -0
  49. trunkit-0.4.0/local/sql/83_cert_tier1_proofs.sql +52 -0
  50. trunkit-0.4.0/local/sql/84_cert_outrun_detector.sql +94 -0
  51. trunkit-0.4.0/local/sql/85_cert_diffeology.sql +58 -0
  52. trunkit-0.4.0/local/sql/86_cert_kan_self_report.sql +44 -0
  53. trunkit-0.4.0/local/sql/87_cert_lattice_gauge.sql +79 -0
  54. trunkit-0.4.0/local/sql/88_cert_hyperdual.sql +53 -0
  55. trunkit-0.4.0/local/sql/89_cert_yang_mills.sql +85 -0
  56. trunkit-0.4.0/local/sql/90_cert_equip_probes.sql +87 -0
  57. trunkit-0.4.0/local/sql/91_cert_feigenbaum.sql +79 -0
  58. trunkit-0.4.0/local/sql/92_strat.sql +334 -0
  59. trunkit-0.4.0/local/sql/93_cert_observability.sql +95 -0
  60. trunkit-0.4.0/local/sql/94_cert_kernel.sql +1029 -0
  61. trunkit-0.4.0/local/sql/95_cert_ledger.sql +400 -0
  62. trunkit-0.4.0/local/sql/96_cert_probe_sandbox.sql +180 -0
  63. trunkit-0.4.0/local/tests/kernel_vectors.py +115 -0
  64. trunkit-0.4.0/local/tests/test_cert_kernel.py +209 -0
  65. trunkit-0.4.0/local/tests/test_cert_ledger.py +94 -0
  66. trunkit-0.4.0/local/tests/test_kernel_parity.py +88 -0
  67. trunkit-0.4.0/local/tools/agent_demo.py +346 -0
  68. trunkit-0.4.0/local/tools/build_bigrading.py +178 -0
  69. trunkit-0.4.0/local/tools/build_chromatic.py +195 -0
  70. trunkit-0.4.0/local/tools/build_colimit_closure.py +194 -0
  71. trunkit-0.4.0/local/tools/build_equipment.py +204 -0
  72. trunkit-0.4.0/local/tools/build_f1_radix.py +148 -0
  73. trunkit-0.4.0/local/tools/build_grading.py +182 -0
  74. trunkit-0.4.0/local/tools/build_identity_decomposition.py +178 -0
  75. trunkit-0.4.0/local/tools/build_lithon.py +224 -0
  76. trunkit-0.4.0/local/tools/build_moonshine.py +222 -0
  77. trunkit-0.4.0/local/tools/build_scott.py +321 -0
  78. trunkit-0.4.0/local/tools/build_self_shadow.py +144 -0
  79. trunkit-0.4.0/local/tools/build_self_syzygy.py +124 -0
  80. trunkit-0.4.0/local/tools/build_shadow.py +170 -0
  81. trunkit-0.4.0/local/tools/build_strata_tower.py +163 -0
  82. trunkit-0.4.0/local/tools/cert_kernel.py +61 -0
  83. trunkit-0.4.0/local/tools/cryptanalysis.py +341 -0
  84. trunkit-0.4.0/local/tools/develop_omega_family.py +255 -0
  85. trunkit-0.4.0/local/tools/develop_sequence.py +191 -0
  86. trunkit-0.4.0/local/tools/diagnostic_tests.py +353 -0
  87. trunkit-0.4.0/local/tools/gen_board.py +271 -0
  88. trunkit-0.4.0/local/tools/gen_status.py +41 -0
  89. trunkit-0.4.0/local/tools/kan_in_kan.py +300 -0
  90. trunkit-0.4.0/local/tools/lithon_core.py +176 -0
  91. trunkit-0.4.0/local/tools/load_kan_corpus.py +153 -0
  92. trunkit-0.4.0/local/tools/omega_equal_control.py +155 -0
  93. trunkit-0.4.0/local/tools/port_curry_sqlite_to_pg.py +152 -0
  94. trunkit-0.4.0/local/tools/register_calx_fn_deps.py +116 -0
  95. trunkit-0.4.0/local/tools/register_calx_in_curry.py +424 -0
  96. trunkit-0.4.0/local/tools/relationship_report.py +372 -0
  97. trunkit-0.4.0/local/tools/run_compose_discovery.py +102 -0
  98. trunkit-0.4.0/local/tools/run_discovery.py +115 -0
  99. trunkit-0.4.0/local/tools/seed_oeis_classics.py +239 -0
  100. trunkit-0.4.0/local/tools/seed_sequences.py +321 -0
  101. trunkit-0.4.0/local/tools/shared_prime_betti.py +226 -0
  102. trunkit-0.4.0/local/tools/sitecustomize.py +9 -0
  103. trunkit-0.4.0/local/tools/smoke_curry_calx.py +114 -0
  104. trunkit-0.4.0/local/tools/stream_interceptor.py +237 -0
  105. trunkit-0.4.0/local/tools/tel_behavior_check.py +91 -0
  106. trunkit-0.4.0/local/tools/tel_behavior_claims.sql +47 -0
  107. trunkit-0.4.0/local/tools/tel_build_check.py +67 -0
  108. trunkit-0.4.0/local/tools/tel_calx_frames.py +106 -0
  109. trunkit-0.4.0/local/tools/tel_calx_live_check.py +132 -0
  110. trunkit-0.4.0/local/tools/tel_calx_live_claim.sql +55 -0
  111. trunkit-0.4.0/local/tools/tel_calx_render.py +101 -0
  112. trunkit-0.4.0/local/tools/tel_capability_sweep.py +209 -0
  113. trunkit-0.4.0/local/tools/tel_constants_check.py +176 -0
  114. trunkit-0.4.0/local/tools/tel_constants_claims.sql +33 -0
  115. trunkit-0.4.0/local/tools/tel_constants_manifest.json +30 -0
  116. trunkit-0.4.0/local/tools/tel_constants_seed.py +81 -0
  117. trunkit-0.4.0/local/tools/tel_graphics_calx_claim.sql +28 -0
  118. trunkit-0.4.0/local/tools/tel_graphics_claims.sql +30 -0
  119. trunkit-0.4.0/local/tools/tel_mosaic_render.py +132 -0
  120. trunkit-0.4.0/local/tools/tel_subject_guard.py +57 -0
  121. trunkit-0.4.0/local/tools/tel_ulam_render.py +165 -0
  122. trunkit-0.4.0/local/tools/tel_visuals_live_check.py +131 -0
  123. trunkit-0.4.0/local/tools/tel_visuals_live_claim.sql +66 -0
  124. {trunkit-0.2.6 → trunkit-0.4.0}/pyproject.toml +19 -16
  125. trunkit-0.4.0/src/calx/arith.py +418 -0
  126. trunkit-0.4.0/src/calx/bundle.py +185 -0
  127. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/cli.py +223 -11
  128. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/db.py +165 -140
  129. trunkit-0.4.0/src/calx/holographic.py +73 -0
  130. trunkit-0.4.0/src/calx/imagefeatures.py +154 -0
  131. trunkit-0.4.0/src/calx/kernel.py +504 -0
  132. trunkit-0.4.0/src/calx/leanbridge.py +106 -0
  133. trunkit-0.4.0/src/calx/methods/__init__.py +23 -0
  134. trunkit-0.4.0/src/calx/methods/arith_check.py +296 -0
  135. trunkit-0.4.0/src/calx/methods/csp_carry.py +100 -0
  136. trunkit-0.4.0/src/calx/methods/parity_puzzle.py +159 -0
  137. trunkit-0.4.0/src/calx/methods/quote_carry.py +113 -0
  138. trunkit-0.4.0/src/calx/morphism.py +85 -0
  139. trunkit-0.4.0/src/calx/quickstart.py +164 -0
  140. trunkit-0.4.0/src/calx/recurrence.py +62 -0
  141. trunkit-0.4.0/src/calx/sql/41a_cert_formal_lean.sql +80 -0
  142. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/55_kan_prime_members.sql +18 -9
  143. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/57_kan_strata_tower.sql +11 -3
  144. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/63_kan_bigrading.sql +9 -2
  145. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/65_kan_chromatic.sql +15 -4
  146. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/67_kan_lithon.sql +3 -1
  147. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/69_kan_shadow.sql +17 -2
  148. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/84_cert_witness.sql +30 -1
  149. trunkit-0.4.0/src/calx/sql/90_cert_agentic.sql +222 -0
  150. trunkit-0.4.0/src/calx/sql/91_cert_image.sql +147 -0
  151. trunkit-0.4.0/src/calx/sql/92_oeis_cosine.sql +138 -0
  152. trunkit-0.4.0/src/calx/sql/93_cert_recurrence.sql +168 -0
  153. trunkit-0.4.0/src/calx/sql/94_cert_exactness.sql +56 -0
  154. trunkit-0.4.0/src/calx/sql/95_cert_morphism.sql +121 -0
  155. trunkit-0.4.0/src/calx/sql/96_cert_holographic.sql +66 -0
  156. trunkit-0.4.0/src/calx/sql/97_cert_crypto.sql +191 -0
  157. trunkit-0.4.0/src/calx/sql/98_kan_scott.sql +72 -0
  158. trunkit-0.4.0/src/calx/sql/99_cert_vacuity.sql +191 -0
  159. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/cli.py +58 -6
  160. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/db.py +23 -1
  161. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/00_bootstrap.sql +15 -13
  162. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/70_morphism.sql +3 -22
  163. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/98_topological_signature.sql +3 -22
  164. trunkit-0.4.0/src/nerode/sql/99_precacher_roundtrip_cert.sql +187 -0
  165. trunkit-0.4.0/src/nerode/sql/A0_interval.sql +180 -0
  166. trunkit-0.4.0/src/nerode/sql/A1_eha.sql +296 -0
  167. trunkit-0.4.0/src/nerode/sql/A2_wffa.sql +269 -0
  168. trunkit-0.4.0/src/nerode/sql/A3_wffa_product.sql +216 -0
  169. trunkit-0.4.0/src/nerode/sql/A4_extremal.sql +257 -0
  170. trunkit-0.4.0/src/nerode/sql/A5_extremal_cert.sql +155 -0
  171. trunkit-0.4.0/src/nerode/sql/A6_monotonicity.sql +224 -0
  172. trunkit-0.4.0/src/nerode/sql/B0_ledger.sql +92 -0
  173. trunkit-0.4.0/src/nerode/sql/B1_policy.sql +123 -0
  174. trunkit-0.4.0/src/nerode/sql/B2_gate.sql +101 -0
  175. trunkit-0.4.0/src/nerode/sql/B3_gate_cert.sql +160 -0
  176. trunkit-0.4.0/src/nerode/sql/B4_carry.sql +240 -0
  177. trunkit-0.4.0/src/nerode/sql/C0_verify.sql +124 -0
  178. trunkit-0.4.0/src/nerode/warden.py +280 -0
  179. trunkit-0.4.0/src/trunkit_mcp/__init__.py +1 -0
  180. trunkit-0.4.0/src/trunkit_mcp/server.py +736 -0
  181. {trunkit-0.2.6 → trunkit-0.4.0}/tests/conftest.py +150 -147
  182. {trunkit-0.2.6 → trunkit-0.4.0}/tests/dbskip.py +11 -11
  183. trunkit-0.4.0/tests/test_bundle_verify.py +242 -0
  184. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_categorical.py +434 -432
  185. trunkit-0.4.0/tests/test_cert_crypto.py +175 -0
  186. trunkit-0.4.0/tests/test_cert_formal_lean.py +184 -0
  187. trunkit-0.4.0/tests/test_cert_image.py +91 -0
  188. trunkit-0.4.0/tests/test_close_resolution.py +23 -0
  189. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_composite_dfa.py +283 -283
  190. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_cybernetic.py +544 -544
  191. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_dead_time_factory.py +287 -287
  192. trunkit-0.4.0/tests/test_exactness.py +66 -0
  193. trunkit-0.4.0/tests/test_holographic.py +81 -0
  194. trunkit-0.4.0/tests/test_imagefeatures.py +63 -0
  195. trunkit-0.4.0/tests/test_imagefeatures_fourier.py +129 -0
  196. trunkit-0.4.0/tests/test_leanbridge.py +75 -0
  197. trunkit-0.4.0/tests/test_mcp_cert_tools.py +226 -0
  198. trunkit-0.4.0/tests/test_methods.py +272 -0
  199. trunkit-0.4.0/tests/test_morphism.py +75 -0
  200. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_morphisms.py +533 -533
  201. trunkit-0.4.0/tests/test_oeis_cosine.py +133 -0
  202. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_packaging_surface.py +31 -31
  203. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_phase1b.py +373 -373
  204. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_phase1c.py +294 -294
  205. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_phase2.py +456 -456
  206. trunkit-0.4.0/tests/test_recurrence.py +124 -0
  207. trunkit-0.4.0/tests/test_schema_numbering.py +57 -0
  208. trunkit-0.4.0/tests/test_scott.py +127 -0
  209. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_sequence.py +336 -336
  210. trunkit-0.4.0/tests/test_stack_coherence.py +88 -0
  211. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_stream_interceptor.py +337 -334
  212. trunkit-0.4.0/tests/test_vacuity.py +103 -0
  213. trunkit-0.4.0/tests/test_witness_kinds.py +69 -0
  214. trunkit-0.4.0/tools/AxiomAudit.lean +80 -0
  215. trunkit-0.4.0/tools/cert_crypto.py +172 -0
  216. {trunkit-0.2.6 → trunkit-0.4.0}/tools/cert_formal.py +130 -32
  217. trunkit-0.4.0/tools/erdos_straus.py +118 -0
  218. {trunkit-0.2.6 → trunkit-0.4.0}/tools/factorial_homology.py +22 -5
  219. trunkit-0.4.0/tools/figure_extract.py +99 -0
  220. trunkit-0.4.0/tools/fraction_families.py +481 -0
  221. trunkit-0.4.0/tools/general_fraction_families.py +429 -0
  222. trunkit-0.4.0/tools/image_features.py +103 -0
  223. trunkit-0.4.0/tools/lean_check.sh +47 -0
  224. {trunkit-0.2.6 → trunkit-0.4.0}/tools/verify_bundle.py +55 -55
  225. trunkit-0.2.6/src/calx/sql/93_cert_observability.sql +0 -113
  226. trunkit-0.2.6/src/calx/sql/97_cert_self_topology.sql +0 -187
  227. {trunkit-0.2.6 → trunkit-0.4.0}/AUDIT.md +0 -0
  228. {trunkit-0.2.6 → trunkit-0.4.0}/LICENSE +0 -0
  229. {trunkit-0.2.6 → trunkit-0.4.0}/SECURITY.md +0 -0
  230. {trunkit-0.2.6 → trunkit-0.4.0}/assets/logo.png +0 -0
  231. {trunkit-0.2.6 → trunkit-0.4.0}/benchmarks/_notify_demo.py +0 -0
  232. {trunkit-0.2.6 → trunkit-0.4.0}/benchmarks/bench.py +0 -0
  233. {trunkit-0.2.6 → trunkit-0.4.0}/benchmarks/bench_chomsky.py +0 -0
  234. {trunkit-0.2.6 → trunkit-0.4.0}/benchmarks/sequence_bench.py +0 -0
  235. {trunkit-0.2.6 → trunkit-0.4.0}/docker-compose.yml +0 -0
  236. {trunkit-0.2.6 → trunkit-0.4.0}/docs/CERT_SQL_GENERATION_GUARDRAILS.md +0 -0
  237. {trunkit-0.2.6 → trunkit-0.4.0}/docs/CROSS_LAB_SHARED_SCHEMA.md +0 -0
  238. {trunkit-0.2.6 → trunkit-0.4.0}/docs/DEMO_CORPUS.md +0 -0
  239. {trunkit-0.2.6 → trunkit-0.4.0}/docs/TOOL_ON_TOOL_TOPOLOGY.md +0 -0
  240. {trunkit-0.2.6 → trunkit-0.4.0}/proofs/combined_signature.py +0 -0
  241. {trunkit-0.2.6 → trunkit-0.4.0}/proofs/equipment.py +0 -0
  242. {trunkit-0.2.6 → trunkit-0.4.0}/proofs/gap_homology_primes.py +0 -0
  243. {trunkit-0.2.6 → trunkit-0.4.0}/proofs/perfect_28.py +0 -0
  244. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/__init__.py +0 -0
  245. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/curry_adapter.py +0 -0
  246. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/generate.py +0 -0
  247. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/ledger.py +0 -0
  248. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/primesieve.py +0 -0
  249. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/00_rehome_to_calx.sql +0 -0
  250. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/01_schema.sql +0 -0
  251. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/02_views.sql +0 -0
  252. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/03_generate.sql +0 -0
  253. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/04_crt.sql +0 -0
  254. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/05_dynamics.sql +0 -0
  255. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/06_oeis_match.sql +0 -0
  256. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/07_compositions.sql +0 -0
  257. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/10_curry.sql +0 -0
  258. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/20_kan.sql +0 -0
  259. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/21_kan_functors.sql +0 -0
  260. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/22_kan_elements.sql +0 -0
  261. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/23_kan_monoidal.sql +0 -0
  262. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/24_kan_natural_transformations.sql +0 -0
  263. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/25_kan_extensions.sql +0 -0
  264. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/26_kan_enrichment.sql +0 -0
  265. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/27_kan_profunctors.sql +0 -0
  266. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/28_kan_adjunctions.sql +0 -0
  267. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/30_kan_corpus.sql +0 -0
  268. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/40_cert.sql +0 -0
  269. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/41_cert_formal.sql +0 -0
  270. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/42_cert_gap_homology.sql +0 -0
  271. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/43_kan_sequence_homology.sql +0 -0
  272. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/44_cert_seq_homology.sql +0 -0
  273. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/45_kan_factorial_homology.sql +0 -0
  274. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/46_cert_factorial_homology.sql +0 -0
  275. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/47_kan_combined_signature.sql +0 -0
  276. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/48_cert_combined.sql +0 -0
  277. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/49_kan_shared_prime_betti.sql +0 -0
  278. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/50_cert_combined_scale.sql +0 -0
  279. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/51_cert_shared_prime_h2.sql +0 -0
  280. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/52_cert_developed_sequence.sql +0 -0
  281. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/53_cert_omega_family.sql +0 -0
  282. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/54_cert_omega_family_succ.sql +0 -0
  283. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/56_cert_prime_members_functor.sql +0 -0
  284. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/58_cert_strata_tower.sql +0 -0
  285. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/59_kan_grading.sql +0 -0
  286. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/60_cert_grading.sql +0 -0
  287. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/61_kan_identity_decomposition.sql +0 -0
  288. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/62_cert_identity_decomposition.sql +0 -0
  289. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/64_cert_bigrading.sql +0 -0
  290. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/66_cert_chromatic.sql +0 -0
  291. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/68_cert_lithon.sql +0 -0
  292. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/70_cert_shadow.sql +0 -0
  293. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/71_kan_self_syzygy.sql +0 -0
  294. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/72_cert_self_syzygy.sql +0 -0
  295. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/73_kan_self_shadow.sql +0 -0
  296. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/74_cert_self_shadow.sql +0 -0
  297. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/75_kan_f1_radix.sql +0 -0
  298. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/76_cert_f1_radix.sql +0 -0
  299. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/77_kan_moonshine.sql +0 -0
  300. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/78_cert_moonshine.sql +0 -0
  301. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/79_cert_kan_engines.sql +0 -0
  302. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/80_kan_colimit_closure.sql +0 -0
  303. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/81_cert_colimit_closure.sql +0 -0
  304. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/82_kan_equipment.sql +0 -0
  305. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/83_cert_equipment.sql +0 -0
  306. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/85_cert_derivation.sql +0 -0
  307. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/86_cert_verify.sql +0 -0
  308. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/87_cert_export_bundle.sql +0 -0
  309. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/88_cert_witness_carry.sql +0 -0
  310. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/89_nerode_bridge.sql +0 -0
  311. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/examples/crt_examples.sql +0 -0
  312. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/examples/dynamics_examples.sql +0 -0
  313. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/sql/examples/queries.sql +0 -0
  314. {trunkit-0.2.6 → trunkit-0.4.0}/src/calx/validate.py +0 -0
  315. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/__init__.py +0 -0
  316. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/adapters.py +0 -0
  317. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/automata.py +0 -0
  318. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/precache.py +0 -0
  319. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sources.py +0 -0
  320. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/01_schema.sql +0 -0
  321. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/02_run.sql +0 -0
  322. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/03_minimize.sql +0 -0
  323. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/04_product.sql +0 -0
  324. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/05_from_regex.sql +0 -0
  325. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/10_cert.sql +0 -0
  326. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/11_chomsky.sql +0 -0
  327. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/20_calx_bridge.sql +0 -0
  328. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/30_protocol.sql +0 -0
  329. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/40_eigenform.sql +0 -0
  330. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/50_corpus.sql +0 -0
  331. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/60_product_corpus.sql +0 -0
  332. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/80_categorical.sql +0 -0
  333. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/90_sequence.sql +0 -0
  334. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/91_sequence_cache.sql +0 -0
  335. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/92_session_automata.sql +0 -0
  336. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/93_handoff.sql +0 -0
  337. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/94_open_session.sql +0 -0
  338. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/95_cybernetic_automata.sql +0 -0
  339. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/96_dead_time_factory.sql +0 -0
  340. {trunkit-0.2.6 → trunkit-0.4.0}/src/nerode/sql/97_composite_dfa.sql +0 -0
  341. {trunkit-0.2.6 → trunkit-0.4.0}/tests/__init__.py +0 -0
  342. {trunkit-0.2.6 → trunkit-0.4.0}/tests/fixtures/oeis/.gitkeep +0 -0
  343. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_aliquot.py +0 -0
  344. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_build.py +0 -0
  345. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_chomsky.py +0 -0
  346. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_compose_match.py +0 -0
  347. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_crt.py +0 -0
  348. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_dynamics.py +0 -0
  349. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_equivalent.py +0 -0
  350. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_factorizations.py +0 -0
  351. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_minimize.py +0 -0
  352. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_oeis_match.py +0 -0
  353. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_phase1a.py +0 -0
  354. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_product.py +0 -0
  355. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_run.py +0 -0
  356. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_schema.py +0 -0
  357. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_sieve.py +0 -0
  358. {trunkit-0.2.6 → trunkit-0.4.0}/tests/test_sources.py +0 -0
  359. {trunkit-0.2.6 → trunkit-0.4.0}/tools/compose_match.py +0 -0
  360. {trunkit-0.2.6 → trunkit-0.4.0}/tools/oeis_loader.py +0 -0
  361. {trunkit-0.2.6 → trunkit-0.4.0}/tools/oeis_match.py +0 -0
  362. {trunkit-0.2.6 → trunkit-0.4.0}/tools/prime_members_functor.py +0 -0
  363. {trunkit-0.2.6 → trunkit-0.4.0}/tools/seq_homology.py +0 -0
@@ -1,18 +1,18 @@
1
- .git
2
- .github
3
- __pycache__
4
- *.pyc
5
- *.pyo
6
- *.py[cod]
7
- .pytest_cache
8
- .mypy_cache
9
- .ruff_cache
10
- .coverage
11
- htmlcov/
12
- .venv
13
- venv
14
- dist
15
- build
16
- *.egg-info
17
- tests/fixtures/oeis/b*.txt
18
- .claude/
1
+ .git
2
+ .github
3
+ __pycache__
4
+ *.pyc
5
+ *.pyo
6
+ *.py[cod]
7
+ .pytest_cache
8
+ .mypy_cache
9
+ .ruff_cache
10
+ .coverage
11
+ htmlcov/
12
+ .venv
13
+ venv
14
+ dist
15
+ build
16
+ *.egg-info
17
+ tests/fixtures/oeis/b*.txt
18
+ .claude/
@@ -4,3 +4,5 @@
4
4
  *.md text eol=lf
5
5
  *.toml text eol=lf
6
6
  *.yml text eol=lf
7
+ *.sh text eol=lf
8
+ *.lean text eol=lf
@@ -58,7 +58,8 @@ jobs:
58
58
  env:
59
59
  PGPASSWORD: trunk
60
60
  run: |
61
- for f in $(ls src/calx/sql/*.sql | sort); do
61
+ # LC_ALL=C sort -n: numeric prefix order (99_ < 100_), matching calx.db.schema_order
62
+ for f in $(ls src/calx/sql/*.sql | LC_ALL=C sort -n); do
62
63
  psql -h localhost -p 5434 -U trunk -d trunk -f "$f" -q
63
64
  done
64
65
 
@@ -79,6 +80,40 @@ jobs:
79
80
  NERODE_DSN: postgresql://nerode:nerode@localhost:5435/nerode
80
81
  run: pytest -m "not slow and not primesieve and not network"
81
82
 
83
+ windows-smoke:
84
+ # The CLIs ship Unicode marks (✓ ✗ →) that crash on legacy cp1252 consoles
85
+ # unless stdio is reconfigured; this leg pins that fix and basic CLI health
86
+ # on Windows, where no database is available.
87
+ runs-on: windows-latest
88
+
89
+ steps:
90
+ - uses: actions/checkout@v4
91
+
92
+ - uses: actions/setup-python@v5
93
+ with:
94
+ python-version: "3.11"
95
+ cache: pip
96
+
97
+ - name: Install dependencies
98
+ run: pip install -e ".[dev]"
99
+
100
+ - name: CLI smoke under cp1252
101
+ shell: pwsh
102
+ env:
103
+ PYTHONIOENCODING: cp1252
104
+ PYTHONUTF8: "0"
105
+ run: |
106
+ trunkit --help
107
+ nerode --help
108
+ python -c "from calx.cli import _utf8_stdio; _utf8_stdio(); print('✓ ✗ →')"
109
+ trunkit quickstart --compose-only --dir $env:RUNNER_TEMP\qs
110
+
111
+ - name: Unit tests (no database — DB-backed tests self-skip)
112
+ shell: pwsh
113
+ env:
114
+ PYTHONIOENCODING: cp1252
115
+ run: pytest -m "not slow and not primesieve and not network" -q
116
+
82
117
  build:
83
118
  runs-on: ubuntu-latest
84
119
  needs: ci
@@ -1,52 +1,69 @@
1
- __pycache__/
2
- *.py[cod]
3
- *.egg-info/
4
- .pytest_cache/
5
- .mypy_cache/
6
- .ruff_cache/
7
- .coverage
8
- htmlcov/
9
- dist/
10
- build/
11
- .venv/
12
- venv/
13
- .env
14
- .envrc
15
- *.whl
16
- *.tar.gz
17
-
18
- # OEIS validation fixtures are pulled on demand
19
- tests/fixtures/oeis/b*.txt
20
-
21
- # Local data dumps
22
- *.dump
23
- *.sql.bak
24
- *.sql.gz
25
-
26
- # Claude IDE settings
27
- .claude/
28
-
29
- # Jules tooling
30
- .curry/
31
-
32
- # Editor
33
- .vscode/
34
- .idea/
35
-
36
- # Local artifacts
37
- test_results.txt
38
- results.json
39
- tools/advanced_results.json
40
- tools/benchmark_advanced.py
41
- tools/benchmark_prime.py
42
- tools/_schema_check.py
43
-
44
- # Accidentally-named venv path fragments
45
- Users*/
46
- .curry/
47
-
48
- .pr_body.md
49
-
50
- # Local workspace extensions (not part of the public library)
51
- local/
52
- corpus/
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ .pytest_cache/
5
+ .mypy_cache/
6
+ .ruff_cache/
7
+ .coverage
8
+ htmlcov/
9
+ dist/
10
+ build/
11
+ .venv/
12
+ venv/
13
+ .env
14
+ .envrc
15
+ *.whl
16
+ *.tar.gz
17
+
18
+ # OEIS validation fixtures are pulled on demand
19
+ tests/fixtures/oeis/b*.txt
20
+
21
+ # Local data dumps
22
+ *.dump
23
+ *.sql.bak
24
+ *.sql.gz
25
+
26
+ # Claude IDE settings
27
+ .claude/
28
+
29
+ # Jules tooling
30
+ .curry/
31
+
32
+ # Editor
33
+ .vscode/
34
+ .idea/
35
+
36
+ # Local artifacts
37
+ test_results.txt
38
+ results.json
39
+ tools/advanced_results.json
40
+ tools/benchmark_advanced.py
41
+ tools/benchmark_prime.py
42
+ tools/_schema_check.py
43
+
44
+ # Accidentally-named venv path fragments
45
+ Users*/
46
+ .curry/
47
+
48
+ .pr_body.md
49
+
50
+ # p-adic tree (calx + lithon) -- local-only project, do not push
51
+ padic_tree/
52
+
53
+ # Local-only research scratch (kernels + specs/results, not part of the package)
54
+ chess-carry/
55
+ ladder-encoder/
56
+ rhyme-discovery/
57
+
58
+ # Loom layer (bespoke arithmetic of orthogonal F_1 axes) -- local, untracked
59
+ docs/LOOM_ORTHOGONAL_F1.md
60
+ local/sql/97_kan_loom.sql
61
+ local/sql/98_cert_loom.sql
62
+ local/sql/99_loom_lift.sql
63
+ local/tools/build_loom.py
64
+ local/tools/build_loom_lift.py
65
+ local/tests/test_loom.py
66
+ local/tests/test_loom_lift.py
67
+ local/backups/
68
+ proofs/loom.py
69
+ proofs/loom_lift.py
@@ -1,18 +1,18 @@
1
- FROM python:3.12-slim
2
-
3
- RUN apt-get update \
4
- && apt-get install -y --no-install-recommends \
5
- primesieve \
6
- libpq5 \
7
- && rm -rf /var/lib/apt/lists/*
8
-
9
- WORKDIR /app
10
-
11
- COPY pyproject.toml README.md ./
12
- COPY src ./src
13
-
14
- RUN pip install --no-cache-dir .
15
-
16
- # Default entrypoint for the nerode CLI; override to 'trunk' for Trunkit
17
- ENTRYPOINT ["nerode"]
18
- CMD ["--help"]
1
+ FROM python:3.12-slim
2
+
3
+ RUN apt-get update \
4
+ && apt-get install -y --no-install-recommends \
5
+ primesieve \
6
+ libpq5 \
7
+ && rm -rf /var/lib/apt/lists/*
8
+
9
+ WORKDIR /app
10
+
11
+ COPY pyproject.toml README.md ./
12
+ COPY src ./src
13
+
14
+ RUN pip install --no-cache-dir .
15
+
16
+ # Default entrypoint for the nerode CLI; override to 'trunk' for Trunkit
17
+ ENTRYPOINT ["nerode"]
18
+ CMD ["--help"]
@@ -0,0 +1,25 @@
1
+ # Trunkit verification methods
2
+
3
+ Universal, proof-carrying verification methods for the Trunkit ledger. Each is **verify-easy /
4
+ find-hard**: a tiny deterministic kernel re-checks a compact, portable witness and returns one of
5
+ three honest verdicts — `valid` / `refuted` / `unverified` (never a guess).
6
+
7
+ The kernels live in the package at [`src/calx/methods/`](src/calx/methods/) and are registered
8
+ with `calx.kernel.verify_witness`, so every dispatch surface picks them up automatically:
9
+ `trunkit verify --bundle`, the consumer bundle checker, and the trunkit-mcp `kernel_verify`
10
+ tool. Their verdict batteries run in the test suite (`tests/test_methods.py`).
11
+
12
+ | Method | Kernel schema | Verifies | Witness (kind) | Refutation certificate |
13
+ |--------|---------------|----------|----------------|------------------------|
14
+ | [arith_check](docs/methods/arith_check_spec.md) | `arith_check` | a numeric claim, by exact recomputation | typed expression AST (`term`) | exact mismatch / dimensional mismatch / interval separation |
15
+ | [quote_carry](docs/methods/quote_carry_spec.md) | `quote_carry` | a citation, by span + content hash | doc hash + span + quote hash (`quote_span`) | quote absent or at a different offset; version mismatch |
16
+ | [csp_carry](docs/methods/csp_carry_spec.md) | `csp_carry` | a solution to a constraint problem | the assignment map (`term`) | the specific violated constraint, named |
17
+ | [puzzle_parity](docs/methods/parity_results.md) | `puzzle_parity` | sliding-puzzle solvability | move sequence, or none (`trace`) | the parity invariant I = −1 |
18
+
19
+ `puzzle_parity` is the sequential special case of `csp_carry` (witness = move list). `quote_carry`
20
+ generalizes `empirical_corpus` and carries the new `quote_span` witness kind (registered in the
21
+ canonical vocabulary, `84_cert_witness.sql`). Together they cover the recompute / ground /
22
+ satisfy / invariant corners of one verify-easy pattern.
23
+
24
+ Every kernel is stdlib-only, keeping the `calx.kernel` charter: a consumer who receives an
25
+ exported bundle re-verifies these witnesses with nothing but a Python interpreter.
@@ -1,82 +1,83 @@
1
- TRUNK_DSN ?= postgresql://trunk:trunk@localhost:5434/trunk
2
- NERODE_DSN ?= postgresql://nerode:nerode@localhost:5435/nerode
3
-
4
- .PHONY: up down apply apply-trunkit apply-nerode check check-trunkit check-nerode \
5
- install dev-install test test-network lint build reset-trunkit reset-nerode
6
-
7
- ## Start both PostgreSQL instances via Docker Compose
8
- up:
9
- docker compose up -d db-trunkit db-nerode
10
-
11
- ## Stop and remove containers
12
- down:
13
- docker compose down
14
-
15
- ## Apply Trunkit (calx/kan/curry/cert) schemas — idempotent
16
- apply-trunkit:
17
- @for f in $$(ls src/calx/sql/*.sql | sort); do \
18
- echo " $$f"; \
19
- psql "$(TRUNK_DSN)" -f "$$f" -q; \
20
- done
21
- @echo "Trunkit schema applied."
22
-
23
- ## Apply Nerode (automata/session/porter) schemas — idempotent
24
- apply-nerode:
25
- @for f in $$(ls src/nerode/sql/*.sql | sort); do \
26
- echo " $$f"; \
27
- psql "$(NERODE_DSN)" -f "$$f" -q; \
28
- done
29
- @echo "Nerode schema applied."
30
-
31
- ## Apply all schemas for both databases
32
- apply: apply-trunkit apply-nerode
33
-
34
- ## Trunkit smoke check: populate integers and run reflexive closure
35
- check-trunkit:
36
- python tools/kan_in_kan.py
37
-
38
- ## Nerode smoke check: build a minimal DFA from a*b+ and run it
39
- check-nerode:
40
- nerode build --regex "a*b+" --dsn "$(NERODE_DSN)"
41
- nerode run --input "aaab" --dsn "$(NERODE_DSN)" --id 1
42
-
43
- ## Run all checks
44
- check: check-trunkit check-nerode
45
-
46
- ## Full local bootstrap: up -> apply -> check
47
- install: up
48
- @echo "Waiting for databases to be ready..."
49
- @sleep 3
50
- $(MAKE) apply
51
- $(MAKE) check
52
-
53
- ## Install Python packages in editable/dev mode
54
- dev-install:
55
- pip install -e ".[dev]"
56
-
57
- ## Run tests
58
- test:
59
- pytest -v
60
-
61
- ## Network tests (real HTTP — weather, tickers, HN)
62
- test-network:
63
- pytest tests/test_sources.py -m network -v
64
-
65
- ## Lint
66
- lint:
67
- ruff check src tests
68
-
69
- ## Build wheel
70
- build:
71
- python -m build
72
-
73
- ## Drop Trunkit schemas and start fresh (destructive)
74
- reset-trunkit:
75
- psql "$(TRUNK_DSN)" -c "DROP SCHEMA IF EXISTS cert, kan, curry, calx CASCADE;"
76
- $(MAKE) apply-trunkit
77
- $(MAKE) check-trunkit
78
-
79
- ## Drop Nerode schemas and start fresh (destructive)
80
- reset-nerode:
81
- psql "$(NERODE_DSN)" -c "DROP SCHEMA IF EXISTS nerode CASCADE;"
82
- $(MAKE) apply-nerode
1
+ TRUNK_DSN ?= postgresql://trunk:trunk@localhost:5434/trunk
2
+ NERODE_DSN ?= postgresql://nerode:nerode@localhost:5435/nerode
3
+
4
+ .PHONY: up down apply apply-trunkit apply-nerode check check-trunkit check-nerode \
5
+ install dev-install test test-network lint build reset-trunkit reset-nerode
6
+
7
+ ## Start both PostgreSQL instances via Docker Compose
8
+ up:
9
+ docker compose up -d db-trunkit db-nerode
10
+
11
+ ## Stop and remove containers
12
+ down:
13
+ docker compose down
14
+
15
+ ## Apply Trunkit (calx/kan/curry/cert) schemas — idempotent
16
+ ## LC_ALL=C sort -n: numeric prefix order (99_ < 100_), matching calx.db.schema_order
17
+ apply-trunkit:
18
+ @for f in $$(ls src/calx/sql/*.sql | LC_ALL=C sort -n); do \
19
+ echo " $$f"; \
20
+ psql "$(TRUNK_DSN)" -f "$$f" -q; \
21
+ done
22
+ @echo "Trunkit schema applied."
23
+
24
+ ## Apply Nerode (automata/session/porter) schemas — idempotent
25
+ apply-nerode:
26
+ @for f in $$(ls src/nerode/sql/*.sql | sort); do \
27
+ echo " $$f"; \
28
+ psql "$(NERODE_DSN)" -f "$$f" -q; \
29
+ done
30
+ @echo "Nerode schema applied."
31
+
32
+ ## Apply all schemas for both databases
33
+ apply: apply-trunkit apply-nerode
34
+
35
+ ## Trunkit smoke check: populate integers and run reflexive closure
36
+ check-trunkit:
37
+ python tools/kan_in_kan.py
38
+
39
+ ## Nerode smoke check: build a minimal DFA from a*b+ and run it
40
+ check-nerode:
41
+ nerode build --regex "a*b+" --dsn "$(NERODE_DSN)"
42
+ nerode run --input "aaab" --dsn "$(NERODE_DSN)" --id 1
43
+
44
+ ## Run all checks
45
+ check: check-trunkit check-nerode
46
+
47
+ ## Full local bootstrap: up -> apply -> check
48
+ install: up
49
+ @echo "Waiting for databases to be ready..."
50
+ @sleep 3
51
+ $(MAKE) apply
52
+ $(MAKE) check
53
+
54
+ ## Install Python packages in editable/dev mode
55
+ dev-install:
56
+ pip install -e ".[dev]"
57
+
58
+ ## Run tests
59
+ test:
60
+ pytest -v
61
+
62
+ ## Network tests (real HTTP — weather, tickers, HN)
63
+ test-network:
64
+ pytest tests/test_sources.py -m network -v
65
+
66
+ ## Lint
67
+ lint:
68
+ ruff check src tests
69
+
70
+ ## Build wheel
71
+ build:
72
+ python -m build
73
+
74
+ ## Drop Trunkit schemas and start fresh (destructive)
75
+ reset-trunkit:
76
+ psql "$(TRUNK_DSN)" -c "DROP SCHEMA IF EXISTS cert, kan, curry, calx CASCADE;"
77
+ $(MAKE) apply-trunkit
78
+ $(MAKE) check-trunkit
79
+
80
+ ## Drop Nerode schemas and start fresh (destructive)
81
+ reset-nerode:
82
+ psql "$(NERODE_DSN)" -c "DROP SCHEMA IF EXISTS nerode CASCADE;"
83
+ $(MAKE) apply-nerode
@@ -1,9 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trunkit
3
- Version: 0.2.6
3
+ Version: 0.4.0
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
7
+ Author-email: Athena Kaminsky <thegiantsnail@gmail.com>
7
8
  License: MIT
8
9
  License-File: LICENSE
9
10
  Keywords: agent,automata,category-theory,dfa,formal-verification,handoff,integer-sequences,llm,minimization,nerode-equivalence,postgresql,proof-carrying-code
@@ -23,11 +24,16 @@ Provides-Extra: binary
23
24
  Requires-Dist: psycopg[binary]<4,>=3.2; extra == 'binary'
24
25
  Provides-Extra: dev
25
26
  Requires-Dist: build>=1.0; extra == 'dev'
27
+ Requires-Dist: mcp>=1.0.0; extra == 'dev'
26
28
  Requires-Dist: psycopg[binary]<4,>=3.2; extra == 'dev'
27
29
  Requires-Dist: pytest-cov>=5; extra == 'dev'
28
30
  Requires-Dist: pytest>=8; extra == 'dev'
29
31
  Requires-Dist: ruff>=0.6; extra == 'dev'
30
32
  Requires-Dist: twine>=5.0; extra == 'dev'
33
+ Provides-Extra: image
34
+ Requires-Dist: pillow>=10; extra == 'image'
35
+ Provides-Extra: mcp
36
+ Requires-Dist: mcp>=1.0.0; extra == 'mcp'
31
37
  Description-Content-Type: text/markdown
32
38
 
33
39
  <p align="center">
@@ -74,10 +80,10 @@ Just PostgreSQL, Python, and ~1.5 MB of schemas.
74
80
 
75
81
  | Layer | Role |
76
82
  |-------|------|
77
- | **calx** | Dense prime factorisation of ℤ[1..N]; aliquot/derivative dynamics; CRT; OEIS sequence matching |
83
+ | **calx** | Dense prime factorisation of ℤ[1..N]; aliquot/derivative dynamics; CRT; OEIS exact + **cosine-candidate** matching; **C-finite/P-finite recurrence certificates** |
78
84
  | **curry** | Immutable versioned constants and functions; append-only computational provenance |
79
85
  | **kan** | Category-*structured* meta-layer: reflects Postgres FK graphs into objects/morphisms and checks **structural invariants** (triangle commutativity, product universal property, naturality, epi classification) as re-runnable probes — see the caveat below |
80
- | **cert** | Proof-carrying attestation: five method tiers, structured witness storage, proof composition DAG, portable bundle export, consumer re-verification |
86
+ | **cert** | Proof-carrying attestation: six method tiers, structured witness storage, proof composition DAG, portable bundle export, consumer re-verification; **exact-domain shield**, **recurrence/morphism certificates**, **holographic (Merkle) commitments**, **image anchoring**, **crypto-succinct (arithmetised) claims** |
81
87
  | **Nerode** | DFA/automata engine on PostgreSQL: construction, minimization, product, session DFAs, sequence cache, certified handoff envelopes |
82
88
  | **Porter** | Agent context handoff: pre-pack external data, certify session boundaries, hand verified context to a new model with zero tool calls |
83
89
 
@@ -113,6 +119,21 @@ compromised or wiped Nerode cannot corrupt or rewrite proof history.
113
119
 
114
120
  ## Quick start
115
121
 
122
+ From pip (requires Docker for the bundled databases):
123
+
124
+ ```bash
125
+ pip install trunkit # installs both the trunkit and nerode CLIs
126
+ trunkit quickstart # writes docker-compose.yml, starts both DBs, applies both schemas
127
+ trunkit generate --limit 10000
128
+ trunkit standing
129
+ ```
130
+
131
+ `trunkit quickstart --compose-only` just writes the compose file if you'd
132
+ rather start the databases yourself; already-running instances are picked up
133
+ via `$CALX_DSN` / `$NERODE_DSN`.
134
+
135
+ From a repo checkout:
136
+
116
137
  ```bash
117
138
  # 1. Start both PostgreSQL instances
118
139
  docker compose up -d db-trunkit db-nerode
@@ -128,11 +149,6 @@ trunkit close --write
128
149
  python scripts/morning_brief_demo.py
129
150
  ```
130
151
 
131
- ```bash
132
- # Install
133
- pip install trunkit # installs both the trunkit and nerode CLIs
134
- ```
135
-
136
152
  Environment variable: `CALX_DSN=postgresql://trunk:trunk@localhost:5434/trunk`
137
153
 
138
154
  ---
@@ -158,6 +174,13 @@ trunkit export <id> [<id> ...]
158
174
  # Emits a self-contained JSONB bundle to stdout:
159
175
  # claims + certificates + witnesses + derivations.
160
176
  # Portable — consumers can re-verify without a Trunkit install.
177
+
178
+ trunkit verify --bundle FILE [--offline]
179
+ # Consumer side of export: re-verifies a received bundle.
180
+ # Replays each embedded probe against YOUR database (rolled back after),
181
+ # checks witness presence, and verifies artifact sha256 hashes against
182
+ # local files. --offline skips probe replay (structural checks only).
183
+ # Three-valued per claim: VALID / REFUTED / UNVERIFIED. Exits 0 iff all valid.
161
184
  ```
162
185
 
163
186
  ```
@@ -199,7 +222,11 @@ trunkit close [--write]
199
222
 
200
223
  trunkit witness <claim_id> --kind KIND --body JSON [--write]
201
224
  # Attach a structured proof witness to a claim.
202
- # KIND: term | trace | counterexample | hash_chain | kan_diagram
225
+ # KIND: term | trace | counterexample | hash_chain | kan_diagram | quote_span
226
+
227
+ trunkit register-lean <claim_id> --root DIR --decl Module.thm [--write]
228
+ # Register a Lean (Lake) project + declaration as a formal_external artifact.
229
+ # Re-checked by tools/lean_check.sh: lake build + axiom / `sorry` audit.
203
230
  ```
204
231
 
205
232
  ### calx data
@@ -212,6 +239,7 @@ trunkit reset # drop all calx tables
212
239
  trunkit oeis-load [--family F] # fetch curated OEIS b-files
213
240
  trunkit oeis-match [--orbit-id ID | --all]
214
241
  trunkit compose-match
242
+ trunkit oeis-cosine --seq-id A000045 # scale-invariant growth-shape candidates, confirmed by exact prefix
215
243
  ```
216
244
 
217
245
  ---
@@ -276,6 +304,25 @@ conn.execute(
276
304
  | `formal_external` | SHA256-pinned external artifact | Python/Lean/Agda proof scripts |
277
305
  | `empirical_corpus` | Provenance only | Corpus document assertions |
278
306
  | `witness_carry` | In-DB witness term | Structured proof terms stored alongside certificates; consumer-replayable |
307
+ | `crypto_succinct` | Pinned verifying key + external verifier | Succinct (optionally zero-knowledge) proofs over arithmetised first-order claims (`calx.arith`); the prover stays outside the package |
308
+
309
+ > **Exactness shield.** Every claim also carries a `domain` tag (`exact_int` /
310
+ > `rational` / `algebraic` / `interval` / `float_heuristic`). A ledger trigger
311
+ > guarantees a `float_heuristic` claim can **never** record a `valid`
312
+ > certificate — only `unverified`. Heuristics (e.g. cosine similarity)
313
+ > *propose*; exact probes *decide*.
314
+
315
+ ---
316
+
317
+ ## Attestable structures (calx / cert)
318
+
319
+ Beyond integer-fact and categorical claims, cert ships re-checkable, **exact** certificate families:
320
+
321
+ - **Recurrence certificates** — a C-finite/P-finite recurrence (coefficients + initial terms) regenerates a sequence; `cert.recurrence_*` verifies it exactly and refuses non-exact division.
322
+ - **Sequence morphisms** — `cert.morphism_*` proves an exact map (scale / affine / index-shift) between two sequences — the structural relation a cosine candidate only hints at.
323
+ - **OEIS cosine candidates** — `calx.oeis_cosine_candidates` surfaces scale-invariant growth-shape neighbours, each confirmed by exact prefix agreement.
324
+ - **Image anchoring + similarity** — `cert.image_*` anchors a figure by sha256 and scores perceptual cosine similarity (pure-SQL; the `[image]` extra is only for decoding).
325
+ - **Holographic commitments** — `cert.merkle_root` / `cert.claim_commitment` commit an arbitrarily long trace to a 32-byte root (core `sha256`).
279
326
 
280
327
  ---
281
328
 
@@ -294,17 +341,19 @@ conn.execute(
294
341
 
295
342
  | Component | Files | Size |
296
343
  |-----------|-------|------|
297
- | SQL (00–96) | 99 | ~603 KB |
298
- | Python tools | 47 | ~393 KB |
299
- | Proof scripts | 4 | ~23 KB |
300
- | Src + tests + config | ~69 | ~558 KB |
301
- | **Total (no virtualenv)** | **~219** | **~1.5 MB** |
344
+ | SQL (calx 00–98 + nerode 00–C0) | ~117 | ~711 KB |
345
+ | Python packages (`src/`: calx + nerode + trunkit_mcp) | ~25 | ~183 KB |
346
+ | Python tools | ~17 | ~188 KB |
347
+ | Proof scripts | 6 | ~42 KB |
348
+ | Tests | ~45 | ~296 KB |
349
+ | **Total (no virtualenv)** | **~210** | **~1.4 MB** |
302
350
 
303
351
  For scale only (not a capability comparison): a Lean 4 toolchain is ≈ 2.9 GB
304
352
  per version and a compiled Mathlib ≈ 4–10 GB per project. **Trunkit is not a
305
353
  substitute for a proof assistant** — Lean/Mathlib verify arbitrary
306
354
  human-authored theorems, whereas Trunkit re-checks a fixed, small set of
307
- certificate schemas (factorization, CRT, Egyptian fractions, matrix words) plus
355
+ certificate schemas (factorization, CRT, Egyptian fractions, matrix words,
356
+ recurrence & morphism certificates, image / OEIS cosine candidates) plus
308
357
  re-runnable in-DB probes. The size figures say only that Trunkit fits in a
309
358
  database you already run; they do **not** imply equivalent verification power.
310
359
 
@@ -315,12 +364,16 @@ database you already run; they do **not** imply equivalent verification power.
315
364
  ```
316
365
  src/
317
366
  calx/ — Trunkit Python package (calx + kan + curry + cert)
367
+ + leanbridge.py · imagefeatures.py · recurrence.py
318
368
  nerode/ — Nerode/Porter Python package
319
- sql/ — 23 idempotent SQL schema files (00_bootstrap → 97_composite_dfa)
369
+ sql/ — 38 idempotent SQL schema files (00_bootstrap → C0_verify),
370
+ incl. quantitative EHA/WFFA (A0–A6) + Porter policy gate (B0–B4, C0)
320
371
  precache.py — Precacher context manager (Porter API)
321
372
  sources.py — WeatherSource, TickerSource, HNSource, TickerHistorySource
322
373
  adapters.py — HttpSource, CallableSource, resolve(), with_retry()
323
374
  db.py — connection utilities + SCHEMA_FILES list
375
+ trunkit_mcp/ — MCP server (`trunkit-mcp`): consumer verify/export tools always
376
+ on; prover tools gated behind TRUNKIT_ALLOW_WRITE=1
324
377
  scripts/
325
378
  morning_brief_demo.py — end-to-end Porter demo
326
379
  tests/
@@ -332,7 +385,10 @@ tests/
332
385
  proofs/
333
386
  *.py — Trunkit proof scripts
334
387
  tools/
335
- kan_in_kan.py — Trunkit reflexive closure tool
388
+ cert_formal.py — formal-tier harness (python + lean checkers)
389
+ lean_check.sh, AxiomAudit.lean — Lean bridge driver + axiom/`sorry` auditor
390
+ image_features.py, figure_extract.py — vision tools ([image] extra)
391
+ oeis_loader.py, oeis_match.py, compose_match.py — OEIS workflows
336
392
  ```
337
393
 
338
394
  ---