Skip to content

feat(graphs): add canonical graph6 decoding and verification - #1284

Merged
morluto merged 9 commits into
mainfrom
agent/port-graph6-decoder-v2
Aug 13, 2026
Merged

feat(graphs): add canonical graph6 decoding and verification#1284
morluto merged 9 commits into
mainfrom
agent/port-graph6-decoder-v2

Conversation

@morluto

@morluto morluto commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Summary

Supersedes #983 with a clean post-#1276 semantic port.

  • add provider-independent small-order graph6 decoding under jacobian.math.graphs;
  • support orders 0–62 and the optional >>graph6<< header;
  • enforce the standard column-major upper-triangle bit order, exact length, valid characters, and zero padding;
  • return canonical sorted edges, degree sequence, and a digest of the exact decoded graph;
  • install a separate operator-authorized standard-library checker operation.

Ownership

jacobian.math.graphs.graph6 owns the value and decoding semantics. The graph domain exposes one thin OperationSpec. A dedicated clean-process checker independently replays the graph6 bitstream without importing the producer.

No invariant mini-framework, reciprocal relationship graph, workflow helper, generic assurance field, or all-catalog tool expansion is introduced.

Validation

The branch is based directly on 195c4c1ddcb836206fcc759d602d3cf77eb2d7cf after #1276. Its port workflow compiled every changed source/test file and removed itself before committing. Focused tests cover the 24-vertex H24 reproduction and a forged edge result.

Credit

This is a clean post-#1276 port of the original graph6 decoder/verifier work in #983 by @yuelgrace1810-ops. Their investigation, reproduction, and implementation work are the basis for this replacement.

@morluto
morluto force-pushed the agent/port-graph6-decoder-v2 branch from 1c32e44 to 0cd137e Compare August 12, 2026 18:57
Refresh #1284 while preserving its typed graph6 operation and checker.
Refresh #1284 after #1316 while preserving its typed decoder and dedicated checker.

morluto commented Aug 13, 2026

Copy link
Copy Markdown
Owner Author

Attribution

The canonical graph6 decoding and independent verification work originated in #983, authored by @yuelgrace1810-ops. This PR is the current-architecture port of that contribution.

@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     40    152     33    86%   78-79, 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                                    95      9     30      9    86%   41, 49, 123, 137, 159, 165, 170, 204, 208
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                          222     17     54     17    88%   96, 100, 153, 171, 239, 241, 243, 260, 262, 280, 284, 289, 291, 296, 343, 376, 378
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                    24      2      4      2    86%   27, 69
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                     69      2     10      2    95%   124, 172
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/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                                261     18     76     14    90%   96, 125, 197, 203, 208, 330, 372, 385, 392-398, 412, 465, 550, 809, 815, 821-822
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/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/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%   330-336, 445, 461-467, 584->586, 626-630, 694
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                           77      3     22      1    94%   95-97
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/validation_diagnostics.py                                35      1     10      1    96%   77
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                             255    255    114      0     0%   7-591
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/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/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                                                              38503   6961  11516   2750    78%

176 files skipped due to complete coverage.

Total coverage: 78% (threshold: 50%)

@morluto
morluto marked this pull request as ready for review August 13, 2026 18:29
@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.

@morluto
morluto merged commit d178bd4 into main Aug 13, 2026
15 checks passed
@morluto
morluto deleted the agent/port-graph6-decoder-v2 branch August 13, 2026 18:29

@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: f00f4b4d69

ℹ️ 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".

backend_version=f"networkx-{NETWORKX_VERSION};sympy-{SYMPY_VERSION}",
capabilities=(DISTANCE_MATRIX_OPERATION, *EXACT_GRAPH_INVARIANT_CAPABILITIES),
capabilities=(
*GRAPH6_CAPABILITIES,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Bind graph6 to semantics that cover order 62

Adding this operation to build_graph_invariant_bundle() binds every decode and verification record to the bundle's existing semantics, which still declares maximum_order: 32, while the new request and decoder accept orders through 62. Consequently, a valid 33–62-vertex result can be returned as VERIFIED under a semantics artifact whose advertised scope excludes its graph; declare a graph6-specific bound in these semantics or move the operation to appropriately scoped semantics.

AGENTS.md reference: AGENTS.md:L188-L189

Useful? React with 👍 / 👎.



GRAPH6_CAPABILITIES = (
inline_operation(

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 Bind the decoder to its actual source provider

Because this inline_operation supplies no operation-specific runtime, operation_runtime() falls back to the enclosing bundle's NetworkX/SymPy composite. The catalog and invocation provenance therefore attribute this pure Jacobian decoder to unrelated backend digests, and the operation is unavailable whenever that composite is unavailable even though decoding uses neither backend; bind it to a Jacobian source runtime instead.

Useful? React with 👍 / 👎.

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