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.
- {trunkit-0.2.2 → trunkit-0.2.4}/PKG-INFO +1 -1
- {trunkit-0.2.2 → trunkit-0.2.4}/pyproject.toml +1 -1
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/40_cert.sql +3 -3
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/79_cert_kan_engines.sql +29 -12
- trunkit-0.2.4/src/calx/sql/90_cert_equip_probes.sql +87 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/.dockerignore +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/.gitattributes +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/.github/workflows/python-package-conda.yml +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/.gitignore +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/Dockerfile +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/LICENSE +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/Makefile +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/README.md +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/SKILL.md +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/assets/logo.png +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/_notify_demo.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/bench.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/bench_chomsky.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/llm_eval.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/llm_eval_classify_retry.log +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/llm_eval_run.log +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/benchmarks/sequence_bench.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/docker-compose.yml +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/proofs/combined_signature.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/proofs/equipment.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/proofs/gap_homology_primes.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/proofs/perfect_28.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/scripts/morning_brief_demo.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/__init__.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/cli.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/curry_adapter.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/db.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/generate.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/primesieve.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/00_rehome_to_calx.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/01_schema.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/02_views.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/03_generate.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/04_crt.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/05_dynamics.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/06_oeis_match.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/07_compositions.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/10_curry.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/20_kan.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/21_kan_functors.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/22_kan_elements.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/23_kan_monoidal.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/24_kan_natural_transformations.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/25_kan_extensions.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/26_kan_enrichment.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/27_kan_profunctors.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/28_kan_adjunctions.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/30_kan_corpus.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/41_cert_formal.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/42_cert_gap_homology.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/43_kan_sequence_homology.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/44_cert_seq_homology.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/45_kan_factorial_homology.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/46_cert_factorial_homology.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/47_kan_combined_signature.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/48_cert_combined.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/49_kan_shared_prime_betti.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/50_cert_combined_scale.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/51_cert_shared_prime_h2.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/52_cert_developed_sequence.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/53_cert_omega_family.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/54_cert_omega_family_succ.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/55_kan_prime_members.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/56_cert_prime_members_functor.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/57_kan_strata_tower.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/58_cert_strata_tower.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/59_kan_grading.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/60_cert_grading.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/61_kan_identity_decomposition.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/62_cert_identity_decomposition.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/63_kan_bigrading.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/64_cert_bigrading.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/65_kan_chromatic.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/66_cert_chromatic.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/67_kan_lithon.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/68_cert_lithon.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/69_kan_shadow.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/70_cert_shadow.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/71_kan_self_syzygy.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/72_cert_self_syzygy.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/73_kan_self_shadow.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/74_cert_self_shadow.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/75_kan_f1_radix.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/76_cert_f1_radix.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/77_kan_moonshine.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/78_cert_moonshine.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/80_kan_colimit_closure.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/81_cert_colimit_closure.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/82_kan_equipment.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/83_cert_equipment.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/84_cert_witness.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/85_cert_derivation.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/86_cert_verify.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/87_cert_export_bundle.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/88_cert_witness_carry.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/89_nerode_bridge.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/examples/crt_examples.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/examples/dynamics_examples.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/sql/examples/queries.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/calx/validate.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/__init__.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/adapters.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/automata.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/cli.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/db.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/precache.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sources.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/00_bootstrap.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/01_schema.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/02_run.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/03_minimize.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/04_product.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/05_from_regex.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/10_cert.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/11_chomsky.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/20_calx_bridge.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/30_protocol.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/40_eigenform.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/50_corpus.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/60_product_corpus.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/70_morphism.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/80_categorical.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/90_sequence.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/91_sequence_cache.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/92_session_automata.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/93_handoff.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/94_open_session.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/95_cybernetic_automata.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/96_dead_time_factory.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/src/nerode/sql/97_composite_dfa.sql +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/__init__.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/conftest.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/fixtures/oeis/.gitkeep +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_aliquot.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_build.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_categorical.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_chomsky.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_compose_match.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_composite_dfa.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_crt.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_cybernetic.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_dead_time_factory.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_dynamics.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_equivalent.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_factorizations.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_minimize.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_morphisms.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_oeis_match.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_phase1a.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_phase1b.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_phase1c.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_phase2.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_product.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_run.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_schema.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_sequence.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_sieve.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_sources.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tests/test_stream_interceptor.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/agent_demo.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_bigrading.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_chromatic.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_colimit_closure.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_equipment.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_f1_radix.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_grading.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_identity_decomposition.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_lithon.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_moonshine.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_self_shadow.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_self_syzygy.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_shadow.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/build_strata_tower.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/cert_formal.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/compose_match.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/cryptanalysis.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/develop_omega_family.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/develop_sequence.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/diagnostic_tests.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/factorial_homology.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/kan_in_kan.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/load_kan_corpus.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/oeis_loader.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/oeis_match.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/omega_equal_control.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/port_curry_sqlite_to_pg.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/prime_members_functor.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/register_calx_fn_deps.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/register_calx_in_curry.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/relationship_report.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/run_compose_discovery.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/run_discovery.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/seed_oeis_classics.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/seed_sequences.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/seq_homology.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/shared_prime_betti.py +0 -0
- {trunkit-0.2.2 → trunkit-0.2.4}/tools/smoke_curry_calx.py +0 -0
- {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.
|
|
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.
|
|
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
|
-
|
|
35
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|