Skip to content

refactor(checkers): let declarations own provider runtimes - #1299

Merged
morluto merged 13 commits into
mainfrom
agent/domain-owned-checker-runtimes
Aug 13, 2026
Merged

refactor(checkers): let declarations own provider runtimes#1299
morluto merged 13 commits into
mainfrom
agent/domain-owned-checker-runtimes

Conversation

@morluto

@morluto morluto commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Summary

Remove the central checker-runtime registry as a requirement for new exact replay operations while preserving it for existing families.

  • let ExactReplayCheckerDeclaration carry an optional complete CapabilityProviderRuntime;
  • reject declaration runtimes that pre-authorize checker IDs;
  • resolve direct runtimes beside the existing legacy runtime factories;
  • add operator-authorized checker IDs only after installation;
  • keep all existing declarations and provider behavior unchanged;
  • compose this seam with the batched checker-identity measurement introduced by Batch checker identity work and narrow lifecycle fixtures #1357.

Why

Recent semantic ports otherwise had to add a central string mapping and factory for every domain-owned checker module. That duplicates provider ownership in exact_domain_checkers.py and makes unrelated mathematical PRs conflict on one shared hub. The declaration already owns the entrypoint, replay method, reason, and verifier contract; owning its clean-process runtime completes that boundary.

Architecture boundary

This is a compatibility-preserving migration seam, not another framework. Existing checker families continue to use the legacy registry. New declarations may provide one immutable runtime directly. The installer remains the only authority that grants checker IDs.

Checker identity is still measured in a batch across the complete declaration set: the composition root opens the batch and the exact-domain installer safely nests within it. Declaration-owned runtimes do not bypass manifest measurement or authorization.

Refresh and validation

The branch is one focused commit directly on current main at 1c926ffa7bdb69ced3ae78112ffd2d21a03a8458. Unit coverage accepts an unassigned declaration runtime and rejects pre-authorized runtime identities. Hosted CI is authoritative for the complete checker installation, batched identity, and verification matrix.

morluto added a commit that referenced this pull request Aug 13, 2026
Refresh #1299 while preserving declaration-owned provider-runtime compatibility.
morluto added a commit that referenced this pull request Aug 13, 2026
Advance #1301 onto the current #1299 stack base without changing its mathematical scope.
@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Coverage Report

Name                                                               Stmts   Miss Branch BrPart  Cover   Missing
--------------------------------------------------------------------------------------------------------------
src/jacobian/adapters/mcp/cli.py                                      15     15      2      0     0%   3-38
src/jacobian/adapters/mcp/context.py                                  96     14     32     12    80%   71, 98, 114-115, 129, 140, 150, 156, 162, 168, 174, 186, 223-225
src/jacobian/adapters/mcp/core.py                                     83      2     10      2    96%   163, 180
src/jacobian/adapters/mcp/deployment_identity.py                      48      8     10      2    83%   44, 49-50, 63-64, 73-74, 79
src/jacobian/adapters/mcp/projections.py                              53     14     14      1    63%   136-149
src/jacobian/adapters/mcp/remote.py                                  303     18     88     12    92%   75, 78, 82, 107, 115, 117, 119, 155, 157, 217-221, 290, 324, 396->398, 413, 416
src/jacobian/adapters/mcp/remote_cli.py                               53     53     18      0     0%   3-159
src/jacobian/adapters/mcp/server.py                                   34      2      2      1    92%   110-112
src/jacobian/adapters/mcp/tooling.py                                 220     49     48     15    75%   65, 77, 98-99, 104, 113-114, 122, 135, 212->228, 215, 222-227, 234-241, 265-267, 299-300, 314, 319-320, 323-324, 326, 335, 338-339, 341, 349-358, 381-384, 439-474
src/jacobian/artifacts.py                                             43     14     10      4    66%   48, 64, 70-71, 81, 99-112
src/jacobian/bounded_process.py                                      530    153    190     43    68%   85-86, 90-91, 103-114, 128-129, 151, 154, 168, 171, 218, 220, 222, 261-283, 300, 325, 359-362, 379-384, 404->406, 462, 508-516, 623, 625, 629, 634, 636, 644, 646, 648, 685, 691, 697-698, 704-705, 712, 714, 734-735, 756-763, 785, 787, 807, 812-814, 821-822, 827-829, 836-847, 850-873, 880-881, 887-888, 904-907, 911-922, 924, 928-929, 934, 945, 949, 951->940, 954-955, 962-963, 972, 974->976, 985, 988-994, 998->997, 1014->1016
src/jacobian/builtin_capabilities.py                                  28     15      2      0    43%   29-30, 85, 88-132
src/jacobian/canonical.py                                            130      9     52      6    92%   35, 72, 100, 139, 159, 181, 184, 211-212
src/jacobian/capability_discovery.py                                  70      1     20      1    98%   144
src/jacobian/capability_dispatch.py                                  106     10     20      5    88%   49-50, 91-92, 163-186, 282, 347, 391-392
src/jacobian/capability_errors.py                                     27      1      2      1    93%   56
src/jacobian/capability_registry.py                                   33      3      8      3    85%   33, 37, 44
src/jacobian/capability_service.py                                    71     10     26     10    79%   46, 56, 69, 95, 110, 112, 116, 118, 123, 125
src/jacobian/capability_validation.py                                 82     11     38      8    84%   27-28, 42-43, 50, 70, 72, 78, 80, 83, 97, 126->152
src/jacobian/capability_verification.py                               67     13     36     11    77%   40-41, 49, 56, 71, 75, 79, 95, 103, 115, 127, 132, 140
src/jacobian/checker_authorization.py                                 63      1      8      1    97%   225
src/jacobian/checker_identity.py                                     391     38    152     32    87%   102, 130-138, 145, 252, 258, 359, 387, 391, 401, 418-419, 428->423, 468, 537-538, 543, 585, 588, 595, 601-602, 617->619, 623, 638, 660-661, 687, 690, 702, 705, 707->709, 718, 736, 739, 742->744, 750, 755, 775, 780, 792
src/jacobian/checker_operations.py                                   119      9     42      9    89%   44, 52, 136, 157, 179, 185, 190, 246, 250
src/jacobian/checker_worker.py                                       135     63     42      9    46%   56, 60, 73-97, 101-115, 127-139, 151-152, 154, 157, 165, 168, 177-178, 189-193, 201-202, 205->exit
src/jacobian/cli.py                                                  102     11     20      4    86%   32, 57, 122, 149, 166-179, 232
src/jacobian/composition.py                                           35      7      6      2    73%   33->38, 36-37, 40-41, 43, 51-52
src/jacobian/contracts/_verification_rules.py                         22      2     16      2    89%   25, 34
src/jacobian/contracts/capabilities.py                               240     19     74     19    88%   38, 40, 42, 90, 92, 141, 143, 184, 188, 196, 207, 225, 242, 248, 260, 351, 358, 362, 400
src/jacobian/contracts/certified_snf.py                               76      5     16      5    89%   42, 48, 76, 132, 144
src/jacobian/contracts/checkers.py                                   167     14     50     14    87%   99, 130, 134, 143, 168, 170, 183, 193, 195, 269, 277, 294, 319, 326
src/jacobian/contracts/combinatorics.py                              494     64    192     56    82%   93, 119-120, 170, 266, 349, 438, 458, 471, 473, 505, 546, 548, 550, 552, 555, 566, 571, 584, 587, 591, 593, 610, 612, 614, 617, 632, 634, 636, 640, 642, 672, 713, 723, 735, 780, 782, 784, 786, 788, 793, 840, 843, 850, 904, 915, 917, 919, 923, 959, 965, 977, 980-991, 1028, 1035, 1054, 1124, 1138
src/jacobian/contracts/evidence.py                                    47      1      4      1    96%   52
src/jacobian/contracts/exact_domain_verification.py                   65      2     10      2    95%   100, 147
src/jacobian/contracts/finite_coverage.py                            152     14     30     14    85%   53, 57, 76, 84, 104, 106, 108, 125, 132, 165, 169, 185, 233, 235
src/jacobian/contracts/finite_sets.py                                 31      3      6      3    84%   24, 46, 48
src/jacobian/contracts/formal_datasets.py                            226     13     74     13    91%   44, 183, 268, 270, 272, 278, 280, 284, 294, 296, 300, 307, 314
src/jacobian/contracts/geometry.py                                   243     33     80     26    80%   42, 55, 61, 78-86, 109, 195, 203, 212, 214, 226, 228, 241, 244, 247, 256, 281, 286, 312-314, 324, 327, 330, 339, 356, 358, 373, 382, 391, 394
src/jacobian/contracts/graph_coloring.py                              59     10     24     10    76%   28, 31, 36, 81, 83, 85, 87, 91, 100, 102
src/jacobian/contracts/graph_composition.py                           92      2     18      2    96%   182, 184
src/jacobian/contracts/graph_degree_sequence.py                       76      8     18      8    83%   19, 56, 62, 69, 76, 102, 104, 106
src/jacobian/contracts/graph_invariant_operations.py                 136     17     38     16    80%   40, 60, 69, 104, 116, 118, 125, 144, 146, 166, 175, 196, 198, 200, 207-209
src/jacobian/contracts/graph_invariants.py                           192     23     52     23    81%   91, 93, 95, 106, 122, 124, 127, 131, 135, 155, 172, 174, 178, 189, 213, 215, 217, 219, 237, 239, 244, 275, 280
src/jacobian/contracts/graph_isomorphism.py                          109      8     32      8    89%   25, 27, 107, 109, 111, 113, 118, 124
src/jacobian/contracts/graph_optimization.py                         266     38     82     28    79%   34, 54, 82, 110, 118, 159, 190, 192, 199, 205, 210, 219, 225, 244, 302, 305, 307, 333, 341, 343, 353, 355, 357, 369, 384, 386, 392, 400, 433-441, 520-528
src/jacobian/contracts/graph_symmetry.py                             123     14     38     14    83%   44, 56, 60, 67, 70, 74, 101, 109, 181, 201, 242, 248, 254, 284
src/jacobian/contracts/jacobian_syzygy.py                            161     32     72     31    72%   26, 29, 32, 43, 72, 76, 83, 86, 89, 93, 100, 113, 125, 130, 132, 153, 155, 157, 163, 165, 167-168, 177, 183, 202, 233, 238, 244, 248, 252, 266, 272
src/jacobian/contracts/lean.py                                       258     19     60     20    88%   160, 219->221, 226, 242, 244, 257, 260, 314, 318, 353, 380, 382, 384, 389, 399, 401, 409, 411, 415, 424
src/jacobian/contracts/lean_exploration.py                           146     22     32      6    75%   22, 94, 137-139, 152, 182, 185-201
src/jacobian/contracts/lean_metavariable_fields.py                    62      3      2      0    92%   93-97
src/jacobian/contracts/lean_proof_axioms.py                           58      4     18      4    89%   34, 66, 68, 72
src/jacobian/contracts/lean_proof_edit.py                             53      5     14      5    85%   23, 26, 53, 58, 67
src/jacobian/contracts/lean_proof_state_inspect.py                    37      5      6      1    77%   51-55
src/jacobian/contracts/lean_statement.py                             116      8     40      9    89%   42, 88, 96, 98, 99->103, 104, 106, 108, 152
src/jacobian/contracts/lean_term_apply.py                             31      9      8      0    56%   35-49
src/jacobian/contracts/linear.py                                      61      2     12      2    95%   53, 124
src/jacobian/contracts/matrices.py                                    39      4     14      4    85%   51, 53, 76, 78
src/jacobian/contracts/matrix_lattice.py                              34      3      6      3    85%   30, 32, 37
src/jacobian/contracts/matrix_operations.py                          189     12     38     12    89%   94, 98, 151, 169, 237, 239, 241, 258, 260, 294, 327, 329
src/jacobian/contracts/nullstellensatz.py                            165     19     40     19    81%   33, 41, 47, 63, 65, 91, 97, 101, 121, 128, 130, 189, 199, 202, 205, 207, 232, 241, 279
src/jacobian/contracts/number_theory.py                              315     30     94     30    85%   175, 225, 227, 246, 269, 275, 287, 349, 388, 390, 392, 419, 441, 448, 566, 568, 574, 584, 587, 592, 613, 617, 630, 637, 649, 669, 685, 688, 690, 692
src/jacobian/contracts/polynomial_expressions.py                     238     18     66     15    89%   160, 204, 216, 265-266, 268-269, 306-307, 344, 352, 361, 426, 437, 463, 469, 497, 501
src/jacobian/contracts/polynomial_intervals.py                       123     11     26     11    85%   58, 68, 73, 79, 105, 110, 114, 157, 162, 166, 209
src/jacobian/contracts/polynomial_operations.py                      292     27     68     27    85%   58, 85, 97, 108, 116, 176, 178, 183, 195, 224, 249, 275, 277, 287, 304, 306, 322, 327, 335, 340, 401, 435, 448, 450, 491, 493, 495
src/jacobian/contracts/polynomial_positivity.py                       92      4      8      4    92%   57, 66, 70, 143
src/jacobian/contracts/polynomial_systems.py                          87      6     16      6    88%   35, 42, 95, 97, 139, 143
src/jacobian/contracts/polynomials.py                                752     72    238     72    85%   81, 127, 145, 163, 167, 186, 192, 261, 288, 295, 320, 333, 389, 391, 393, 395, 397, 399, 401, 423, 495, 497, 499, 501, 510, 512, 515, 517, 519, 545, 548, 550, 560, 613, 615, 617, 619, 622, 624, 699, 701, 733, 735, 771, 778, 883, 982, 986, 996, 1014, 1018, 1043, 1047, 1054, 1083, 1087, 1119, 1121, 1156, 1158, 1160, 1164, 1168, 1171-1175, 1199, 1206, 1231, 1235, 1267, 1271, 1280
src/jacobian/contracts/polytope.py                                    74      8     22      8    83%   34, 67, 69, 71, 92, 95, 97, 106
src/jacobian/contracts/posets.py                                     307     31    104     32    85%   51, 67, 132, 143, 147, 149, 163, 165, 170, 171->173, 185, 266, 270, 287, 314, 329, 332, 335, 337, 340, 381, 415, 480, 539, 541, 543, 545, 566, 569, 578, 627, 630
src/jacobian/contracts/probability.py                                413     41    138     41    85%   46, 56, 104, 108, 134, 200, 206, 211, 218, 241, 244, 248, 256, 267, 274, 289, 294, 307, 393, 395, 399, 413, 415, 436, 459, 470, 472, 522, 556, 581, 597, 609, 613, 619, 694, 722, 736, 787, 808, 814, 823
src/jacobian/contracts/projective_geometry.py                        140     22     48     20    78%   36, 39, 72, 92-93, 98, 103, 105, 126, 128, 130, 155, 159, 165, 172, 174, 207, 210, 213, 219, 224, 233
src/jacobian/contracts/provider_measurements.py                       48      1     12      1    97%   82
src/jacobian/contracts/results.py                                     80      3     16      3    94%   74, 76, 121
src/jacobian/contracts/sat.py                                        353     25     92     23    89%   65, 76, 78, 80, 161, 296, 300, 328, 332, 351, 373, 433, 437, 468, 470, 472, 507, 509, 511, 560, 564, 566, 585, 679-680
src/jacobian/contracts/sequences.py                                   24      1      0      0    96%   52
src/jacobian/contracts/smt.py                                        259     24     90     19    88%   60-61, 74-75, 80, 91, 96, 108, 111, 150, 160, 164, 183, 188, 195-196, 200, 203, 211, 270, 323, 398, 400, 402
src/jacobian/contracts/topology.py                                   372     41    124     41    83%   66, 95, 100, 102, 119, 142, 164, 166, 249, 273, 279, 286, 293, 319, 369, 374, 392, 395, 405, 407, 436, 440, 443, 449, 504, 506, 513, 520, 541, 544, 546, 557, 585, 603, 624, 676, 684, 697, 718, 747, 751
src/jacobian/contracts/universal_algebra.py                          230     35     74     23    76%   32, 34, 36, 43, 50, 56, 59, 76, 89, 92, 105, 110, 136, 162, 187, 207, 209, 232, 237, 302-330, 332, 348-349, 353
src/jacobian/contracts/urls.py                                        12      2      4      2    75%   14, 16
src/jacobian/contracts/validated_analysis.py                         160     21     52     16    80%   62, 64, 89, 91, 96, 98, 138, 141, 144, 162, 170, 173, 175, 218, 222-230, 274-286
src/jacobian/domains/_certified_snf.py                               110     21     38     10    76%   39, 43-46, 50, 64, 76, 84, 100-111, 146, 159, 193, 225, 230, 234
src/jacobian/domains/analysis/operations.py                           42      6      8      3    82%   64, 69, 113, 123-128
src/jacobian/domains/analysis/protocol.py                             35      2      4      2    90%   43, 45
src/jacobian/domains/analysis/worker.py                               30     30      4      0     0%   3-74
src/jacobian/domains/arithmetic/operations.py                         96      8     14      2    89%   60-63, 115, 139-140, 179-180
src/jacobian/domains/combinatorics/difference_sets.py                 77      2     28      2    96%   130, 157
src/jacobian/domains/combinatorics/operations.py                      98      3     10      3    94%   72, 192, 195
src/jacobian/domains/finite_fields/bundle.py                         103      3     12      3    95%   142, 157, 240
src/jacobian/domains/geometry/operations.py                          176     39     44      5    75%   81, 115-117, 144-147, 162, 197, 212-215, 225-228, 242-243, 251-263, 267-273, 323-327, 407
src/jacobian/domains/graph_optimization/chromatic_number.py           19      2      4      0    91%   30-31
src/jacobian/domains/graph_optimization/distance_matrix.py            22      2      0      0    91%   63-64
src/jacobian/domains/graph_optimization/exact_search.py              143      1     38      1    99%   85
src/jacobian/domains/graph_optimization/finite_optimization.py        55      1     20      1    97%   74
src/jacobian/domains/graph_optimization/graph6.py                     22      2      0      0    91%   40-41
src/jacobian/domains/graph_optimization/hamiltonian_path.py           49      3     12      1    93%   30, 87-94
src/jacobian/domains/graph_optimization/independence.py               14      2      0      0    86%   28-29
src/jacobian/domains/graph_optimization/invariants.py                164     24     34      7    84%   84-85, 163, 173, 245-246, 292-293, 318, 339-340, 345-346, 362-370, 381-399, 430
src/jacobian/domains/graph_optimization/minimum_spanning_tree.py      53      3      8      1    93%   128, 164-171
src/jacobian/domains/graph_optimization/operations.py                 69      3     26      3    94%   99, 138, 208
src/jacobian/domains/matrix_lattice/conversions.py                    39      4     10      4    84%   29, 71, 89, 97
src/jacobian/domains/matrix_lattice/hnf.py                            45      8     10      5    76%   42, 71, 98, 104, 114, 120, 130-131
src/jacobian/domains/matrix_lattice/hnf_protocol.py                   32      2      4      1    92%   38, 60
src/jacobian/domains/matrix_lattice/hnf_worker.py                     33     33      6      0     0%   3-94
src/jacobian/domains/matrix_lattice/lattice.py                        42      7     12      5    78%   66, 97, 109, 115, 123-124, 130
src/jacobian/domains/matrix_lattice/lll_protocol.py                   41      3      6      2    89%   45, 67, 69
src/jacobian/domains/matrix_lattice/lll_worker.py                     59     59     12      0     0%   3-123
src/jacobian/domains/matrix_lattice/operations.py                     60      1      6      1    97%   152
src/jacobian/domains/number_theory/discrete_logarithm.py              36      5      8      3    82%   78, 90, 96, 105-106
src/jacobian/domains/number_theory/discrete_logarithm_worker.py       23     23      4      0     0%   3-61
src/jacobian/domains/number_theory/divisibility_operations.py         49      2      4      2    92%   49, 78
src/jacobian/domains/number_theory/factorization.py                   73      6     14      5    87%   76, 92, 100->102, 103, 111, 188-189
src/jacobian/domains/number_theory/factorization_kernels.py           33     33      8      0     0%   3-83
src/jacobian/domains/number_theory/factorization_worker.py            30     30     14      0     0%   3-91
src/jacobian/domains/number_theory/modular_operations.py              52      1     12      1    97%   46
src/jacobian/domains/optimization/operations.py                       36      8      4      2    75%   59, 64, 74-92
src/jacobian/domains/optimization/worker.py                           57     57      8      0     0%   3-165
src/jacobian/domains/polynomial/_support.py                           30      6      2      0    75%   40-42, 143-148
src/jacobian/domains/polynomial/checkers.py                           76     12     34     12    78%   22, 31, 68, 72, 75, 113, 117, 125, 135, 143, 151, 153
src/jacobian/domains/polynomial/conversions.py                        26      1      8      1    94%   37
src/jacobian/domains/polynomial/elementary_operations.py              95      1      8      1    98%   201
src/jacobian/domains/polynomial/groebner.py                           40      4     10      3    86%   79, 91, 97, 112
src/jacobian/domains/polynomial/groebner_protocol.py                  37      6     10      2    74%   44-49
src/jacobian/domains/polynomial/groebner_worker.py                    20     20      2      0     0%   3-56
src/jacobian/domains/polynomial/jacobian_syzygy.py                   101      4     24      3    94%   79-80, 157, 224->236, 230
src/jacobian/domains/polynomial/operations.py                         60      9      8      2    78%   53, 63, 190-213
src/jacobian/domains/polynomial_nullstellensatz/core.py              128      9     20      4    90%   100-102, 137-138, 222-223, 238, 252
src/jacobian/domains/polynomial_nullstellensatz/singular.py          200     43     72     14    73%   122, 147, 151, 159, 162, 170, 176, 186, 194, 246-265, 287, 292, 305-319, 398, 403, 405-411, 449, 464, 479-492
src/jacobian/domains/posets/operations.py                            127      2     28      2    97%   65-66, 162->157
src/jacobian/domains/probability/gaussian_inputs.py                   50      4     14      4    88%   39, 43, 68, 85
src/jacobian/domains/probability/operations.py                       162      1     48      1    99%   70, 328->325
src/jacobian/domains/projective_geometry/arrangements.py              47      5      6      1    89%   40-41, 112, 153-154
src/jacobian/domains/rational_linear/operations.py                    67     23     22     10    63%   52, 75, 94, 99, 101, 125, 131, 133, 135-148, 166, 172, 174, 179-192
src/jacobian/domains/rational_linear/protocol.py                      56      4      4      1    92%   95, 122-123, 128
src/jacobian/domains/rational_linear/worker.py                        57     57     16      0     0%   3-145
src/jacobian/domains/sequences/operations.py                         124      3     20      3    96%   85, 201, 209
src/jacobian/domains/topology/operations.py                          159      8     52      8    92%   113, 168, 180, 217, 220, 294, 417, 456
src/jacobian/eval/graph_oracle.py                                    111    111     76      0     0%   3-192
src/jacobian/eval/telemetry.py                                       355     21    134     10    93%   74-75, 76->69, 115->113, 117->113, 119-120, 159-161, 188, 208-209, 256-257, 487-497, 521, 646, 680, 753-754, 756
src/jacobian/exact_domain_checkers.py                                267     18     78     14    90%   107, 116, 181, 186, 331, 377, 390, 397-403, 417, 482, 579, 802, 857, 863, 869-870
src/jacobian/finite_coverage.py                                      135      5     20      3    95%   205, 261-262, 447, 463
src/jacobian/graphs/artifacts.py                                      53      1      2      1    96%   114
src/jacobian/graphs/atlas.py                                          20      1      4      1    92%   49
src/jacobian/graphs/atlas_search.py                                   88      4     26      4    93%   211, 239, 255, 260
src/jacobian/graphs/composition.py                                   138     21     26      2    80%   235, 339-340, 431, 438-447, 455-467, 477
src/jacobian/graphs/construction.py                                   44      1      2      1    96%   129
src/jacobian/graphs/degree_sequence.py                                83      5     16      3    92%   99-100, 243, 251, 267
src/jacobian/graphs/invariants.py                                    163     11     64      7    91%   110-111, 213-215, 228, 259, 298, 323, 332, 336
src/jacobian/graphs/isomorphism.py                                   134      8     26      5    92%   163, 203, 378-379, 414-415, 454, 474->470, 482
src/jacobian/graphs/neighborhood_independence.py                      66      4      6      2    92%   96-97, 109, 120
src/jacobian/implementation.py                                       187     68     80     11    59%   29, 32, 35-37, 52-65, 97-98, 117, 123, 126, 129-138, 145, 154, 158, 171, 208-234, 240-245, 254-255, 266, 274-277
src/jacobian/lean_frontend/_state_validation.py                       26     11      4      0    50%   50-90
src/jacobian/lean_frontend/artifacts.py                               30      8      0      0    73%   45, 71, 95-111, 118
src/jacobian/lean_frontend/declaration_operations.py                  27      4      0      0    85%   55-56, 71-72
src/jacobian/lean_frontend/declaration_protocol.py                    98      3     14      3    95%   38, 44, 50
src/jacobian/lean_frontend/declarations.py                           716    245    224     55    62%   141, 145, 152-153, 207->209, 218, 255-256, 258, 266, 268, 270, 272-278, 289, 298-299, 301, 317-318, 323, 356-359, 365, 382-384, 412-437, 445-499, 502-509, 512-530, 533-537, 540-578, 581-585, 619, 631, 653, 656, 661, 675-676, 694-696, 698-699, 724-731, 734, 759-760, 805, 812, 816->818, 833-863, 880, 898, 916-926, 942-957, 968, 983, 997, 1017-1022, 1026-1032, 1055-1057, 1081, 1094-1095, 1112, 1123-1124, 1143, 1155-1156, 1166-1169, 1186-1187, 1192, 1212, 1215-1216, 1218, 1233-1238, 1245, 1259-1264, 1271, 1275-1276, 1278, 1284, 1298, 1305, 1312, 1319, 1354, 1355->1379, 1360, 1367, 1368->1355, 1376-1378, 1413, 1429, 1448, 1458, 1464, 1467-1468, 1476, 1482
src/jacobian/lean_frontend/diagnostics.py                            127     36     52     10    69%   142-154, 188, 218-232, 266, 301, 339, 342, 362, 376, 400-436, 446
src/jacobian/lean_frontend/exploration.py                            179     90     36      7    47%   85-86, 154-217, 240, 242, 245, 267->269, 277, 298, 302-303, 314, 331, 349, 355, 404-437, 446-479, 496-538, 546-548, 552
src/jacobian/lean_frontend/metavariable_fields.py                     65     42      8      0    32%   58-60, 84, 87-255, 271
src/jacobian/lean_frontend/premise_retrieval.py                       52     13      4      0    70%   129-201
src/jacobian/lean_frontend/proof_axioms.py                           222     48     64     14    75%   169-170, 182, 192-195, 210, 278, 280, 284, 298-299, 301-302, 320, 326-327, 331-342, 361, 417-418, 447, 456-457, 488, 492-500, 507-514, 538, 548-550
src/jacobian/lean_frontend/proof_edit.py                              58     29      2      0    48%   53-75, 94-97, 126, 129-246, 261
src/jacobian/lean_frontend/proof_state.py                            127     58     28      6    48%   132, 138-139, 161, 163-197, 220, 239, 247, 273, 277, 308-310, 337-470
src/jacobian/lean_frontend/proof_state_inspect.py                     54     11      0      0    80%   89-133, 152
src/jacobian/lean_frontend/repl.py                                   271    207     96      5    19%   49-54, 67-72, 86-94, 105-132, 143-178, 183-184, 187-224, 227-233, 239, 245, 251, 254-270, 273-277, 284, 293-294, 307-314, 326-333, 349-365, 383-390, 399-427, 430-457, 477-478, 484-492, 496-504, 508-516, 521, 530
src/jacobian/lean_frontend/service.py                                123     93     28      1    21%   48-59, 75-179, 191-202, 207-224, 227-234, 242-274
src/jacobian/lean_frontend/statement.py                              268    170     46      1    32%   94-95, 150-178, 193-196, 213-248, 270-274, 289-300, 315-351, 359-368, 374-391, 397-407, 411-426, 432-440, 444-452, 465-474, 478-481, 489-490, 499-504, 508-511, 552, 653, 656-745, 796, 799-873, 890
src/jacobian/lean_frontend/term_apply.py                              36     16      2      0    53%   47-48, 102, 105-166, 185
src/jacobian/math/combinatorics/recurrence_tables.py                  68      6     22      6    87%   45, 53, 55, 93, 98, 100
src/jacobian/math/finite_fields/_flint.py                             41      7     12      6    75%   23, 26, 37, 50, 53, 77, 84
src/jacobian/math/finite_fields/_sympy.py                             30      1      4      1    94%   89
src/jacobian/math/finite_fields/operations.py                         94      9     30      5    87%   58, 60, 84, 219, 244, 276-280
src/jacobian/math/finite_fields/values.py                            366     56    128     43    80%   38, 48, 55, 57, 81, 134, 139, 170, 172, 176, 201, 203, 214, 238, 240, 248, 285, 305, 310, 316, 346, 348, 353, 355, 360, 380, 387, 414, 419, 438, 441, 450, 452, 454, 456, 461, 479, 488, 507, 509, 511, 516, 518, 525, 554, 575, 578, 580, 586, 591, 621, 632, 655, 666, 701, 720
src/jacobian/math/graphs/_independence_z3.py                          41      5     12      4    83%   31, 49, 101-108
src/jacobian/math/graphs/_networkx.py                                 52      5     22      5    86%   18, 20, 47, 51, 57
src/jacobian/math/graphs/graph6.py                                    62      9     22      9    79%   22, 38, 41, 43, 49, 56, 59, 63, 66
src/jacobian/math/graphs/independence.py                              54      8     18      7    76%   51, 77, 79, 81, 83, 92-94
src/jacobian/math/graphs/values.py                                    34      6     14      6    75%   32, 34, 39, 41, 56, 58
src/jacobian/math/matrices/_sympy.py                                  57      5     20      4    88%   20, 32, 54, 61, 94
src/jacobian/math/matrices/values.py                                  41      6     18      6    80%   38, 40, 45, 47, 52, 65
src/jacobian/math/modular_polynomials.py                              79      8     22      8    84%   36, 42, 57, 62, 93, 97, 103, 108
src/jacobian/math/polynomials/_sympy.py                               44      1      6      1    96%   46
src/jacobian/math/polynomials/operations.py                           44      1      4      1    96%   29
src/jacobian/math/prime_field_linear_algebra.py                       99      3     44      3    96%   31, 33, 118
src/jacobian/math/real_quadratic.py                                   84      9     20      9    83%   34, 36, 38, 42, 63, 74, 107, 127, 137
src/jacobian/operation_bindings.py                                    65      5      8      3    89%   47, 65, 67, 226-227
src/jacobian/operation_installation.py                               134      4     18      2    96%   163, 266, 321-322
src/jacobian/operation_ports.py                                       50      5     24      5    86%   23, 53, 57, 79, 99
src/jacobian/operation_projection.py                                  41      2     12      2    92%   28, 76
src/jacobian/operation_publication.py                                 51      4     10      2    90%   69, 82-83, 104
src/jacobian/operations.py                                            88      4     10      4    92%   27, 81, 85, 152
src/jacobian/persistence/database.py                                 217     24     58     12    86%   91-94, 109-111, 135, 168, 226, 262, 282, 298, 312, 323->327, 329, 341-345, 347->353, 350-352, 361-362, 366
src/jacobian/persistence/decoding.py                                  35      2      2      0    95%   80-81
src/jacobian/persistence/migrations.py                                65      3     22      3    93%   358, 472, 488
src/jacobian/persistence/state_health.py                              74     13     20      7    79%   35, 66, 101, 112-113, 123, 136, 171, 184, 219, 237, 254-255
src/jacobian/polynomial_expression_capabilities.py                    84      8     20      4    87%   123, 178-179, 199, 259-262, 267
src/jacobian/polynomial_expressions.py                                81     12      8      4    82%   91-92, 99, 112-113, 163-164, 171, 182-183, 190, 194
src/jacobian/polynomial_interval_capabilities.py                     155      4     14      3    96%   319-325, 431, 547->549, 595
src/jacobian/polynomial_positivity_capabilities.py                   174     11     20      3    93%   335-341, 456, 472-478, 595->597, 637-641, 705
src/jacobian/polynomial_system_capabilities.py                        99      2     12      2    96%   157, 208
src/jacobian/polynomial_system_search.py                              45      2      4      0    96%   88-89
src/jacobian/polynomials/_support.py                                 243     26     56      7    89%   117, 243-244, 259, 271-272, 283, 302-303, 318, 330-331, 351-371, 381, 551->554, 557-558, 560, 730-736
src/jacobian/polynomials/collision.py                                185      8     40      8    93%   65, 67, 84, 86, 483, 573, 620, 654
src/jacobian/polynomials/evaluation.py                               106      4      6      3    94%   226-231, 322, 384, 476->478
src/jacobian/polynomials/identity.py                                  54      2      6      3    92%   120, 240->237, 249
src/jacobian/polynomials/inverse.py                                  165     12     38      9    90%   198-199, 273, 301, 315, 330, 376-377, 386-387, 412, 683
src/jacobian/polynomials/rational_identity.py                         42      1      2      1    95%   136
src/jacobian/polytope.py                                             188     20     38     13    85%   67->69, 85, 90-96, 168, 171, 199, 211-216, 247, 253-254, 272, 274, 280, 282, 377, 421, 434->439, 678
src/jacobian/polytope_capabilities.py                                 29      1      4      1    94%   92
src/jacobian/portfolio/assembler.py                                   30      3      2      1    88%   32, 58-59
src/jacobian/portfolio/checker_installation.py                        64     25     14      1    54%   114-160, 167-174
src/jacobian/portfolio/core_installation.py                           79      3     22      1    94%   96-98
src/jacobian/portfolio/foundation_installation.py                     50      6     14      1    86%   122-131
src/jacobian/portfolio/model.py                                       29      1     14      1    95%   66
src/jacobian/portfolio/resource_installation.py                       32      2     14      1    89%   76-77
src/jacobian/portfolio/result.py                                      45      4      8      4    85%   35, 51, 53, 71
src/jacobian/process_policy.py                                        93      2     32      3    96%   70->76, 130, 148
src/jacobian/provider_measurements.py                                115     50     30      5    54%   173, 188-189, 205-227, 236, 240, 261-274, 291-294, 307-356, 371-372
src/jacobian/provider_runtime.py                                     225     34     70     14    84%   98, 123-124, 152, 158-164, 212, 215, 270-271, 309-310, 359-360, 394-395, 404, 416, 425, 431-432, 437, 447, 457-458, 474, 483-484, 506, 549, 567, 585
src/jacobian/providers/external_solver_runtime.py                     82      3     24      3    94%   71, 214, 344
src/jacobian/providers/flint_runtime.py                              122     31     22      6    74%   127-128, 171, 211, 228-229, 271-272, 314-315, 357-364, 419-420, 463-464, 504-505, 546-547, 590-591, 663, 675-676, 683, 722, 734-735, 744
src/jacobian/providers/lean_runtime.py                               139     21     40     15    80%   55, 60, 68, 71, 74, 96, 116, 121-123, 157, 160-161, 178-180, 188, 190-191, 223, 229, 234->exit, 249->253
src/jacobian/providers/loader.py                                      99      2     24      3    96%   139, 148, 196->exit
src/jacobian/providers/metadata.py                                    37      1      6      1    95%   39
src/jacobian/registry.py                                             197     17     56     12    89%   107-113, 202, 300, 305, 343, 354-355, 375, 457, 467, 482, 502, 566, 571, 627
src/jacobian/runtime/bootstrap.py                                     35      6      0      0    83%   58-63
src/jacobian/runtime/model.py                                         38     10     12      4    68%   26, 36, 42, 51-52, 54-61, 66
src/jacobian/runtime/portfolio.py                                     29      1     10      1    95%   41
src/jacobian/sat_smt/cadical.py                                      302     36    104     25    85%   92, 96, 102, 170, 191, 201, 279, 284, 331-332, 387, 391, 514, 518, 522, 565-566, 609, 629, 682, 725, 732-733, 735, 745-746, 754, 759, 761, 771, 773, 778, 790, 797, 799, 816
src/jacobian/sat_smt/cvc5.py                                         153     18     44     14    84%   83, 132-133, 145-146, 173, 284, 299, 304, 313, 370, 390, 397, 409, 451, 458, 460, 464
src/jacobian/sat_smt/cvc5_worker.py                                  124    102     32      1    15%   43-44, 48-54, 58-62, 72-89, 98-108, 118-140, 150-188, 197-227, 231
src/jacobian/sat_smt/sat.py                                          107     15     14      5    83%   104-105, 119-120, 182, 189-190, 199, 235-236, 243, 250-251, 254, 258
src/jacobian/sat_smt/sat_capabilities.py                             186     11     44      9    91%   176, 360, 431, 471, 478, 531, 579-580, 602, 655, 662
src/jacobian/sat_smt/sat_lrat.py                                     130     10     30      7    89%   127, 169-170, 195, 277, 377, 389, 392-393, 395, 400->407
src/jacobian/sat_smt/smt.py                                           77      8      8      2    88%   85-86, 100-101, 169-170, 173, 177
src/jacobian/sat_smt/smt_capabilities.py                              93      4     22      4    93%   129, 196, 249, 256
src/jacobian/schema_registry.py                                      187      4     54      5    96%   276->278, 287, 291->293, 301-302, 357
src/jacobian/storage/blobs.py                                        164     18     58     15    84%   52, 60, 63->62, 83, 87, 155, 157, 179, 191, 221, 247-248, 278-279, 293-294, 297->299, 323, 340, 342
src/jacobian/storage/errors.py                                        19      2      0      0    89%   16-17
src/jacobian/storage/identity.py                                      48      2      6      2    93%   45, 51
src/jacobian/storage/metadata.py                                     123     10     38      8    89%   133, 170, 173, 238, 242, 247, 390-391, 396, 429
src/jacobian/storage/repository.py                                   138     17     28      6    85%   60, 97-99, 218, 246-247, 270-271, 284, 292-293, 295-297, 305, 313
src/jacobian/storage/transactions.py                                 180     28     38      6    84%   68-69, 123-124, 139-141, 154-155, 164-166, 175, 177-183, 185-191, 205, 209, 218-220, 250->exit
src/jacobian/sympy_polynomial_normalization.py                       115      8     34      9    89%   84, 104, 130, 397, 415, 421, 445, 446->452, 463
src/jacobian/sympy_polynomial_protocol.py                             27      2      2      1    90%   39, 52
src/jacobian/sympy_polynomial_worker.py                               48     48     16      0     0%   3-122
src/jacobian/universal_algebra_capabilities.py                       198     10     40      3    95%   192->196, 509-510, 581-582, 690, 705-715
src/jacobian/value_references.py                                      64      3      8      2    93%   55, 101-102, 112->110
src/jacobian/verification/_helpers.py                                 47      2     14      3    92%   81, 84->exit, 114
src/jacobian/verification/checker_protocol.py                         36     10     12      2    62%   39-44, 71-74
src/jacobian/verification/executor.py                                 60      9     16      3    84%   134-137, 151, 153-157, 162-166
src/jacobian/verification/plan_builder.py                            133      6     38      6    93%   136, 208, 251, 261, 299, 450
src/jacobian/verification/service.py                                 109      1     16      1    98%   523
src/jacobian/verification_capabilities.py                             82      2      8      0    98%   181-182
src/jacobian_checkers/additive_combinatorics.py                      156     50     66     19    63%   59, 62, 74, 77, 100, 108, 138, 141, 162, 175, 202, 208, 211, 215, 218, 239, 250-263, 269, 274, 294-295, 299-308, 312-334, 369-370
src/jacobian_checkers/bound_artifacts.py                              77      7     38      7    88%   58, 69, 109, 114, 140, 163, 175
src/jacobian_checkers/certified_snf.py                               129     37     54     17    65%   39, 50, 62, 72, 78, 92, 94, 103, 116, 135, 151, 153-154, 163, 184, 191, 203, 211, 236, 248, 260-299
src/jacobian_checkers/erdos_straus.py                                 84     15     44     13    78%   29, 47, 58, 69, 71, 73, 85, 88, 90, 104, 109, 114, 121, 141-142
src/jacobian_checkers/exact_domain_operations.py                     498     86    234     86    77%   81, 88, 92, 95, 106, 112, 129, 132, 135, 138, 142, 151, 154, 164, 172, 189, 191, 202, 212, 214, 225, 236, 247, 250, 256, 289, 297, 309, 316, 340, 364, 392, 405, 421, 427, 441, 446, 448, 458, 462, 475, 478, 482, 509, 542, 548, 554, 563, 567, 575, 584, 600, 660, 688, 690, 696, 728, 730, 735, 738, 741, 743, 760, 762, 771, 773, 793, 795, 800, 804, 846, 851, 856, 860, 890, 906, 944, 986, 988, 998, 1028, 1030, 1037, 1058, 1095, 1127
src/jacobian_checkers/exact_geometry.py                              389    166    204     38    53%   48-69, 76-104, 114-143, 150-166, 170-175, 191-239, 254, 258, 268-271, 301, 307, 311, 314, 320, 326, 332, 342, 345, 348, 359, 370, 419-430, 444, 471-493, 506, 532, 576, 579, 603, 624, 629, 661, 669, 672, 689, 694, 712, 718, 739, 741, 743, 746, 756, 762, 779, 784-796, 806-812, 822-835, 841-844, 851, 877-884, 892-900, 908, 921
src/jacobian_checkers/exact_probability_operations.py                378     59    192     57    80%   66, 69, 75, 79, 82, 88, 113, 116, 122, 126, 128, 130, 136, 148, 152, 157, 177-178, 189, 192, 201, 211, 236, 239, 242, 251, 257, 275, 279, 285, 293, 304, 327, 353, 358, 377, 387, 392, 402, 405, 409, 478, 508, 531, 546, 548, 559, 567, 574, 577, 605, 631, 640, 644, 646, 649, 705, 729, 732
src/jacobian_checkers/finite_coverage.py                             153    153     70      0     0%   3-440
src/jacobian_checkers/finite_field_polynomial.py                     120     19     50     20    77%   35, 48, 53, 67, 79, 87, 109, 112, 119, 129, 140, 188, 190, 196, 207, 237, 253->264, 265, 281, 288
src/jacobian_checkers/finite_field_rank.py                           132     24     60     24    75%   29, 40, 51, 65, 70, 81, 93, 101, 109, 117, 123, 126, 146, 154, 164, 222, 230, 279, 324, 331, 348, 354, 356, 371
src/jacobian_checkers/finite_posets.py                               333     54    146     49    78%   56, 67, 98, 133, 137, 141, 148, 151, 161, 165, 168, 181, 184, 186, 197, 199, 264, 269, 274, 276, 280, 301, 305, 314, 320, 342, 344, 377, 379, 381, 411, 414, 417, 421, 451, 455, 458, 469, 498, 508, 554, 590, 644, 649, 651, 654-656, 658, 662, 671-679
src/jacobian_checkers/graph6.py                                       42     42     14      0     0%   3-88
src/jacobian_checkers/graph_degree_sequence.py                       152     28     74     28    75%   41, 51, 62, 74, 77, 90, 101, 113, 134, 137, 150, 158, 171, 183, 197, 209, 211, 216, 232, 247, 263, 281, 286, 294, 305, 310, 314, 318
src/jacobian_checkers/graph_exact_operations.py                      512     95    256     49    78%   85, 111, 114, 124, 138, 147, 157, 171, 178, 192, 196, 233, 271, 279, 287, 292, 298, 335, 420, 424, 440, 569, 571-580, 592, 594-603, 624, 638, 642, 649, 668, 681, 685, 689, 693, 709, 714, 799, 927, 950, 952, 980, 1037-1038, 1040, 1043->1050, 1067-1127, 1131-1152, 1161, 1178, 1193, 1228-1231, 1249, 1277
src/jacobian_checkers/graph_invariants.py                            130     23     62     23    76%   33, 44, 56, 59, 68, 77, 80, 90, 97, 124, 135, 144, 151, 159, 167, 207, 221, 239, 245, 268, 281, 287, 290
src/jacobian_checkers/graph_isomorphism.py                            52      9     20      7    78%   27, 38, 49, 52, 61, 73, 85, 172-173
src/jacobian_checkers/graph_paths.py                                 354    187    194     45    43%   24-82, 93, 96, 100, 103, 109, 112, 130, 133, 143-144, 152, 157, 175, 186, 197-209, 217, 222, 248-266, 274-317, 321, 335-337, 347-368, 375-393, 418, 421, 427, 429, 432, 434, 438, 447, 472->471, 496, 509, 511, 513, 521, 523, 530-566, 577-590, 598, 600, 602, 608, 611, 614, 627, 637, 640, 648-654, 662, 671, 685, 695
src/jacobian_checkers/graph_shrinking.py                              64     64     36      0     0%   3-102
src/jacobian_checkers/integer_lcm.py                                  40     40     10      0     0%   3-81
src/jacobian_checkers/jacobian_syzygy.py                             263    219    116      3    12%   20, 31, 43, 47, 54, 68-111, 118, 142-149, 156-204, 208, 228-242, 248-283, 287-307, 311-329, 337-347, 353, 395-413, 419-438, 446-460, 475-492, 500-586, 592-608, 612, 621
src/jacobian_checkers/lean4.py                                       358     91    136     40    69%   95, 106, 108, 116, 118, 161, 164, 178, 210, 234-235, 246, 259, 269->271, 298-299, 318, 348, 353, 355-356, 358, 362, 386, 389, 414, 417, 421-477, 492->494, 511-512, 519, 524, 529, 533->544, 541, 551-561, 576, 581-582, 609, 651, 710-713, 721-723, 731, 750, 755, 770, 772, 779, 787, 809, 812, 830, 836-837
src/jacobian_checkers/linear.py                                       83     20     40     20    67%   34, 45, 48, 63, 69, 80, 87, 89, 101, 120, 122, 124, 127, 139, 167, 169, 171, 175, 184, 192
src/jacobian_checkers/matrices.py                                    308    114    166     50    58%   39, 41, 43, 45, 55, 70, 72, 83, 92, 99, 103, 116-117, 124-132, 140-195, 209, 211, 225, 235, 271, 278, 290, 301, 309, 312, 333-334, 345, 347, 349, 360, 363, 365, 375, 384, 391, 399, 405, 409, 415, 423, 425, 437-438, 447-495, 505-507, 516, 521, 526, 535, 538, 544, 558, 562, 569, 583, 586, 595, 597
src/jacobian_checkers/matrix_normal_forms.py                         101     13     52     12    84%   37, 47, 49, 60, 83, 85, 95, 97-98, 108, 151, 175, 184
src/jacobian_checkers/modular_polynomial_identity.py                  50     50     16      0     0%   3-126
src/jacobian_checkers/nullstellensatz.py                             194     32     96     32    78%   61, 72, 75, 81, 84, 89, 104, 107, 132, 140, 184, 188, 191, 194, 209, 214, 216, 222, 227, 233, 246, 269, 274, 291, 320, 327, 329, 343, 345, 363, 375, 420
src/jacobian_checkers/polynomial_expressions.py                      329     76    160     48    73%   121, 134, 152, 155, 161, 165, 181, 194, 206, 208-218, 227, 230, 247, 266-297, 308, 311, 330-331, 355, 366, 376, 378, 380, 382, 390, 399, 410, 412, 418, 431, 440, 445-448, 453, 456, 461, 473, 476, 501, 507, 510, 549, 573, 575, 588, 593, 621, 633, 641, 659, 671, 683, 707
src/jacobian_checkers/polynomial_intervals.py                        185     29     84     29    78%   42, 51, 64, 66, 81, 83, 86, 95, 106, 109, 119, 123, 126, 133, 175, 204, 219, 234, 244, 254, 269, 283, 288, 302, 324, 333, 339, 344, 352
src/jacobian_checkers/polynomial_maps.py                             363     58    164     50    80%   36, 45, 54, 62, 78, 99, 102, 111, 125, 128, 166, 189, 199, 212, 235, 248, 259, 261, 269, 274, 282, 294-295, 303, 331, 345, 399-400, 408, 424, 431, 440, 452, 542, 590, 601, 610, 617, 624, 632, 648, 662-663, 671, 682, 698, 710, 719, 735, 765-766, 785, 798, 842, 857, 859, 872, 874
src/jacobian_checkers/polynomial_positivity.py                       250     41    114     41    77%   43, 52, 55, 65, 67, 71, 82, 84, 87, 95, 106, 109, 117, 121, 124, 131, 150, 165->162, 168, 176, 179, 183->189, 190, 263, 278, 293, 303, 313, 328, 339, 341, 346, 369, 386, 426, 435, 444, 450, 455, 463, 468, 515-516
src/jacobian_checkers/polynomial_systems.py                           87     12     34     12    80%   30, 39, 50, 53, 58, 72, 75, 109, 132, 152, 160, 176
src/jacobian_checkers/polytope.py                                    176    176     96      0     0%   3-326
src/jacobian_checkers/projective_arrangements.py                      77     77     32      0     0%   3-212
src/jacobian_checkers/rational_determinants.py                       219     91    110     25    53%   59, 72, 89, 95, 102, 112, 114, 123, 166, 168-169, 200, 202, 213, 215, 220, 235, 257, 265, 278, 283, 295, 305, 312, 315, 328, 349-353, 362-382, 388-404, 412-433, 442-455, 459-477, 483-519
src/jacobian_checkers/rational_functions.py                           87      4     38      4    94%   35, 60, 63, 68
src/jacobian_checkers/rational_lp.py                                  72     72     26      0     0%   3-182
src/jacobian_checkers/real_quadratic.py                               65     65     26      0     0%   3-136
src/jacobian_checkers/recurrence_series.py                           229     69    106     32    63%   58, 60, 65, 71, 78, 82, 85, 97, 123-124, 134, 136-144, 164, 198, 204, 218, 221, 224, 248, 285, 326, 338, 342, 358, 377, 385, 388, 391, 403, 406, 410, 422-496, 528, 540, 544, 611
src/jacobian_checkers/reject.py                                        4      4      0      0     0%   3-9
src/jacobian_checkers/sat.py                                         300     46    148     42    80%   91, 104, 119, 131, 134, 143, 153, 159, 165, 169, 183, 189, 200, 207, 235, 249, 320, 334, 340-341, 346, 361, 381, 394, 406, 431, 446, 489, 491, 501-502, 535, 537, 542, 545, 630, 632, 643, 645, 650, 665, 674, 696, 701, 723, 748
src/jacobian_checkers/sat_lrat.py                                    189     38     82     26    76%   42-43, 75, 78, 82, 85, 87, 95-96, 105-108, 119->138, 122, 130, 132, 151, 153, 156, 161, 165, 167, 171, 180-181, 189, 192, 224, 226, 255, 269, 313, 322, 352, 359, 364, 366, 368
src/jacobian_checkers/simplicial_topology.py                         430     71    202     62    78%   76, 87, 93, 96, 128, 137, 140, 144, 146, 148, 153, 158, 184, 198, 206, 220, 226, 229-231, 303, 307, 318, 321, 324, 340, 348->350, 351, 363, 366, 368, 384, 399, 472, 508, 512, 515, 518, 529, 535, 538, 546, 552, 564, 621, 659, 691, 736, 742, 786, 827, 840, 860-890, 904, 907-908, 924, 951, 959, 984, 994, 1013, 1028, 1031, 1074
src/jacobian_checkers/smt.py                                         236     60    106     28    71%   80, 93, 106-117, 121-130, 137, 140, 153-155, 161-163, 165-167, 181, 191, 194, 213, 218, 232, 248-249, 256, 259, 268, 274, 344, 363, 366-367, 391, 411, 424, 435, 438, 500, 502, 507, 510
src/jacobian_checkers/universal_algebra.py                           147     22     62     22    79%   32, 46, 57, 64, 71, 80, 117, 132, 145, 150, 152, 163, 177, 182, 192, 202, 206, 214, 216, 307, 331, 341
--------------------------------------------------------------------------------------------------------------
TOTAL                                                              38925   7068  11654   2782    77%

178 files skipped due to complete coverage.

Total coverage: 77% (threshold: 50%)

morluto added a commit that referenced this pull request Aug 13, 2026
Refresh #1299 after the pytest-owned test-architecture cut without changing its declaration-owned runtime seam.
@morluto
morluto force-pushed the agent/domain-owned-checker-runtimes branch from 6a97690 to 2b4f61d Compare August 13, 2026 08:59
morluto added a commit that referenced this pull request Aug 13, 2026
Synchronize #1299 before fixing the remaining stacked probability review feedback.
@morluto
morluto marked this pull request as ready for review August 13, 2026 10:15
@cursor

cursor Bot commented Aug 13, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2d44778228

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/jacobian/exact_domain_checkers.py Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b33a9ff8e0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/jacobian/checker_operations.py Outdated
Comment thread src/jacobian/exact_domain_checkers.py Outdated
Compose declaration-owned clean-process runtimes with the latest batched checker-identity path. Existing checker families retain the legacy registry; new declarations may carry one unassigned provider runtime, and the composition root batches identity material across the full declaration set before authorization.
Store passive provider-runtime factories on exact replay declarations and realize each runtime once, at installation. Importing domain declarations no longer identifies or hashes checker source, while the existing installer and authorization boundary keep the same resolved runtime contract.
Retain the existing direct provider_runtime constructor as a temporary compatibility seam while making provider_runtime_factory lazy and cached. Reject dual ownership and preserve pre-authorization invariants for both forms.
@morluto
morluto force-pushed the agent/domain-owned-checker-runtimes branch from b33a9ff to 3d9e943 Compare August 13, 2026 10:40

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3d9e943739

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/jacobian/exact_domain_checkers.py Outdated
Declare the compatibility accessor's dynamic return as Any so mypy accepts the dataclass field interception while the public provider_runtime field retains its precise declared type.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1922bc3be3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tests/unit/test_checker_declaration_runtime.py

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1db4eb16ed

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/jacobian/checker_operations.py Outdated
Comment thread src/jacobian/checker_operations.py

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d9b7d6ef58

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/jacobian/exact_domain_checkers.py Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

"verification_tags",
derive_verification_tags(self.capability_id),
)
return

P2 Badge Scope the realized runtime cache to one installation

When runtime construction occurs more than once in the same process, the first access permanently writes the probe onto the declaration; built-in declarations are module-level tuple members reused by every bundle build. If an optional dependency was initially unavailable and is later restored, subsequent authorizations therefore keep omitting it, while a changed available dependency is compared against the stale probe and rejected until the process restarts. Keep this cache installation-local so each authorization measures the current provider identity.

AGENTS.md reference: AGENTS.md:L137-L140


hint="Install or repair the optional python-flint backend, then retry.",

P2 Badge Report the actual unavailable optional backend

When a declaration-owned optional runtime is anything other than Python-FLINT, this diagnostic tells operators to install or repair Python-FLINT even though provider_runtime.provider identifies a different missing backend. This new generic optional-runtime path therefore provides an incorrect recovery direction; derive the hint from the declaration/runtime diagnostic or use a backend-neutral instruction.

AGENTS.md reference: AGENTS.md:L211-L214

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 18dc43b88b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

factory = _declaration_factory(declaration)
probe = probes.setdefault(factory, factory())
factory = object.__getattribute__(declaration, "provider_runtime_factory")
probe = factory() if factory is not None else declaration.provider_runtime

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Validate factory runtimes through the declaration accessor

When a custom factory returns a CapabilityProviderRuntime with nonempty checker_ids, this direct factory call bypasses the explicit rejection in ExactReplayCheckerDeclaration.__getattribute__. Installation then registers checker manifests containing those pre-bound IDs, while _authorized_provider_runtimes() overwrites only the returned summary with the IDs actually authorized, leaving inconsistent runtime identities and violating the declaration's no-preauthorization invariant. Resolve the runtime through declaration.provider_runtime or repeat the empty-checker_ids validation here.

AGENTS.md reference: AGENTS.md:L155-L159

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 567236fc93

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

provider_runtime.provider in _OPTIONAL_EXACT_REPLAY_PROVIDERS
and source_available
)
can_omit = optional and source_available

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Report the actual optional provider recovery

When a declaration-owned optional runtime is not Python-FLINT, this generic omission branch still emits Install or repair the optional python-flint backend; for example, the newly supported direct-runtime path can identify any provider, and the component coverage itself uses jacobian.test-optional-declaration-checker. Operators therefore receive an irrelevant recovery direction. Derive the hint from the unavailable runtime or use provider-neutral remediation.

AGENTS.md reference: AGENTS.md:L211-L214

Useful? React with 👍 / 👎.

@morluto
morluto merged commit 9e1cd50 into main Aug 13, 2026
29 checks passed
@morluto
morluto deleted the agent/domain-owned-checker-runtimes branch August 13, 2026 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant