.sssss.........ssss..................................................... [  4%]
........................................................................ [  8%]
........................................................................ [ 12%]
........................................................................ [ 16%]
........................................................................ [ 20%]
........................................................................ [ 24%]
........................................................................ [ 28%]
........................................................................ [ 32%]
........................................................................ [ 37%]
........................................................................ [ 41%]
........................................................................ [ 45%]
........................................................................ [ 49%]
........................................................................ [ 53%]
........................................................................ [ 57%]
........................................................................ [ 61%]
........................................................................ [ 65%]
........................................................................ [ 69%]
........................................................................ [ 74%]
........................................................................ [ 78%]
........................................................................ [ 82%]
........................................................................ [ 86%]
........................................................................ [ 90%]
........................................................................ [ 94%]
........................................................................ [ 98%]
......................                                                   [100%]
================================ tests coverage ================================
______________ coverage: platform darwin, python 3.12.14-final-0 _______________

Name                                             Stmts   Miss  Cover   Missing
------------------------------------------------------------------------------
src/magicite/__init__.py                             0      0   100%
src/magicite/__main__.py                           385    100    74%   80-83, 100-104, 119, 123, 127-130, 166-169, 190-195, 214, 221-226, 244-258, 276-290, 308-322, 330-335, 353-354, 404-415, 439-440, 452-453, 491-492, 526-527, 550, 584, 592, 605-616, 625-630, 640-641, 647-652, 667-672, 686-698, 705-710, 719
src/magicite/config.py                             203     12    94%   419-420, 485, 493, 495-497, 506, 508, 510, 512, 514
src/magicite/core/__init__.py                        0      0   100%
src/magicite/core/activation.py                    121      3    98%   110, 184, 251
src/magicite/core/approvals.py                     215     18    92%   170, 316-322, 324, 335-336, 340, 343, 353, 355, 374, 378, 438, 588, 660, 665-666
src/magicite/core/audit.py                          64      2    97%   119, 124
src/magicite/core/backup.py                        886    122    86%   182-183, 194-195, 220, 223, 228, 237, 244-245, 254, 269, 290, 326-330, 335, 439, 442, 453, 466, 469, 474, 479, 488, 521-522, 530-531, 575, 662, 665-666, 702, 710, 717-719, 757, 813-814, 822-823, 851, 867-869, 941, 944, 966, 976, 1005, 1012, 1014, 1037, 1051, 1061-1062, 1064, 1066, 1080-1090, 1133, 1141, 1152-1153, 1158, 1160, 1164, 1178, 1181, 1189, 1191, 1194, 1199, 1204, 1207, 1239, 1246, 1260, 1336, 1350, 1371, 1385, 1394, 1425, 1431, 1454, 1591, 1615, 1655, 1675, 1679-1687, 1700, 1705, 1716, 1738-1763
src/magicite/core/bundles.py                       297     20    93%   91, 95, 100, 102, 124-125, 127, 170, 218, 222, 325-326, 339, 359, 365, 368, 386, 415, 463, 493
src/magicite/core/calibration.py                   206     50    76%   89, 172, 175, 186-187, 250, 264, 282-294, 312-313, 316-317, 319-320, 329, 345-346, 359, 386-389, 393-395, 398-400, 402-404, 410-414, 432-434
src/magicite/core/candidates.py                    282     36    87%   112, 123-124, 145, 195, 197, 204, 213, 239, 242, 268, 271, 300, 323, 331, 361, 368, 371, 374-375, 404, 413-418, 426, 475-479, 489, 491, 549-551
src/magicite/core/communities.py                    89      4    96%   58, 116, 144-145
src/magicite/core/composition.py                   526     60    89%   236, 316, 375, 476, 488-495, 524-531, 538, 577-585, 595-602, 605, 631-638, 651-659, 663-671, 682, 700-706, 734-741, 812-813, 856, 860, 869, 871, 873, 882, 884, 904, 909, 918, 920, 934, 936, 1018-1029, 1043, 1048-1062, 1064-1069, 1090, 1092, 1126, 1128, 1145-1146, 1215-1216
src/magicite/core/context.py                        81      2    98%   113, 123
src/magicite/core/custody_admin.py                 180     13    93%   144-158, 234
src/magicite/core/decay.py                         132      5    96%   122-127, 197, 363-365
src/magicite/core/decay_math.py                     10      0   100%
src/magicite/core/distill.py                        98      2    98%   111, 121
src/magicite/core/dream.py                         440     31    93%   218-219, 240-241, 271-272, 329-330, 387, 393-400, 446-453, 577, 589, 747, 814, 816, 841, 1052, 1064-1067, 1154-1157, 1165
src/magicite/core/edge_weight.py                    10      0   100%
src/magicite/core/eligibility.py                   414     67    84%   270, 301, 311, 455-467, 488, 519, 552-553, 562, 603-604, 612, 614, 616, 618, 626-627, 642, 674, 679-680, 682, 723-724, 728-729, 746, 748, 750-751, 754-755, 766, 770, 772, 799, 806-807, 811-815, 822-823, 826-829, 835-842, 846-847, 849, 853, 855, 857
src/magicite/core/evidence.py                     1598    285    82%   180, 188, 198-199, 222, 243, 355, 369, 380, 397, 410, 427, 429, 431, 433, 435, 458-463, 528, 530-533, 537-538, 542-543, 547, 590, 651-652, 661, 678, 714-716, 774, 778-782, 816, 824, 841, 843, 854, 860-861, 869, 881, 897, 1037, 1226, 1234, 1301-1308, 1382, 1385, 1408, 1411-1412, 1438-1439, 1455-1456, 1459, 1535, 1587, 1593-1594, 1605-1606, 1637-1638, 1647, 1655-1658, 1687, 1692-1696, 1725, 1730, 1733-1735, 1760-1763, 1788, 1795-1796, 1831-1832, 1834, 1839, 1846, 1850, 1871-1872, 1923-1924, 1931, 1944-1945, 1948, 1964, 1970, 1981, 1989-1994, 2000, 2072, 2075-2076, 2089-2091, 2093, 2103-2104, 2118-2120, 2133-2135, 2165, 2170, 2190-2191, 2215-2217, 2228, 2242-2246, 2255-2261, 2265, 2267, 2272-2276, 2300-2301, 2304-2305, 2309-2314, 2326, 2332-2338, 2340-2342, 2344-2346, 2372-2375, 2377-2386, 2389-2393, 2398-2401, 2407, 2410, 2414-2416, 2418-2419, 2421, 2427-2428, 2430-2431, 2450, 2460-2461, 2463, 2483, 2493, 2499, 2519, 2561, 2571, 2621, 2628, 2637, 2646, 2688, 2699-2701, 2830, 2833, 2913, 2918-2921, 2941-2951, 2972, 2974, 2979, 3001-3016, 3040-3041, 3071, 3092-3093, 3122-3123, 3150-3167
src/magicite/core/fingerprint_key.py                72      8    89%   60, 72-73, 80-81, 112-113, 144
src/magicite/core/fitness.py                        72      0   100%
src/magicite/core/index_generation.py              397     34    91%   163-164, 194-201, 210-211, 227, 258, 284-285, 513, 515, 580, 630, 638, 646, 654, 665, 683-688, 711, 716-722, 727, 733, 740, 826, 831
src/magicite/core/lifecycle.py                     181     14    92%   87, 140, 159, 176, 306, 324, 340-342, 410, 426-428, 455-456
src/magicite/core/migration.py                     664    248    63%   136, 140, 144, 148, 152, 168-172, 191, 205-214, 219-243, 249-250, 256, 278-286, 313, 316-318, 374-376, 393-396, 415-425, 430-431, 444, 448, 470, 485-486, 512, 565, 576-577, 605, 648, 661, 685-712, 722-738, 748-792, 796, 806-826, 830-858, 862, 866-896, 909-936, 940-953, 957-986, 1032, 1078-1079, 1094, 1100, 1117-1131, 1138, 1141-1145, 1148, 1151, 1159, 1170-1208, 1237, 1246, 1260, 1273, 1277
src/magicite/core/plasticity.py                     32      2    94%   123, 130
src/magicite/core/policy_store.py                  321     19    94%   274-275, 277, 279, 303, 356, 376, 400, 402, 407, 467, 474, 476, 479, 544, 558, 560, 565, 627
src/magicite/core/recovery_gate.py                 145     13    91%   87-88, 101, 110, 132, 152-153, 175, 183, 197, 204, 213, 316
src/magicite/core/registry.py                      919    115    87%   133, 334, 336, 343-344, 363, 374-375, 383-387, 395, 411, 415, 422, 425, 478, 531, 555-556, 605, 664, 666, 696-697, 715, 739, 794, 837-839, 860, 878, 1131, 1136, 1139, 1167-1168, 1185-1186, 1198, 1226, 1244, 1259, 1261, 1274, 1326, 1347-1349, 1358-1359, 1375, 1380-1381, 1404-1405, 1412-1413, 1417-1418, 1420, 1422, 1428-1429, 1433-1437, 1465-1467, 1471, 1483, 1485, 1488, 1495-1496, 1506, 1510-1512, 1514-1515, 1526, 1548, 1563-1564, 1617, 1626, 1663-1664, 1671, 1716-1717, 1726-1732, 1755-1759, 1774, 1913-1933, 1986, 1998
src/magicite/core/router.py                        790    104    87%   231-233, 276, 427-428, 442, 453-462, 488, 502, 505-506, 550-562, 638, 694-695, 730-743, 759-768, 819-820, 869-871, 875-876, 881-887, 924, 954, 977-997, 1108, 1220, 1237, 1249-1257, 1324-1325, 1335, 1380-1381, 1499-1501, 1507-1511, 1709-1718, 1723-1725, 1950, 2021, 2241-2246
src/magicite/core/routing_policy.py                 50      4    92%   36, 47, 51, 138
src/magicite/core/session.py                        63      1    98%   101
src/magicite/core/signals.py                       121      1    99%   273
src/magicite/core/trust.py                         369     40    89%   121-125, 177, 181, 218-219, 264, 266, 321, 377, 381-398, 452-454, 484, 503, 515, 526, 542-544, 644, 655, 661, 684, 724, 787, 916, 918
src/magicite/core/trust_artifacts.py               218     33    85%   53, 61, 65, 69, 83, 135, 143, 146, 157, 169, 177, 188, 193, 201, 214, 218, 223, 227, 236, 238, 241, 286-287, 289, 330, 365, 391, 401, 403, 406, 419-420, 430
src/magicite/core/trust_custodian.py               448     29    94%   165, 212, 237, 326-327, 354, 361, 411, 478, 502, 519, 522, 576, 580-585, 592, 605, 671, 678, 789, 793, 812, 814-816
src/magicite/core/trust_custodian_transport.py     359     49    86%   77, 84, 102, 108-111, 135, 138-139, 156, 177, 205, 230, 232, 241, 271, 299, 303-304, 333, 339, 398, 423, 444, 449, 451-453, 476, 510, 530-548
src/magicite/core/trust_journal.py                 370     27    93%   107, 115, 118-126, 144, 198, 233, 306, 314, 338, 343, 346, 348, 358, 362, 432, 486, 491, 493-494, 520, 526, 562, 570
src/magicite/core/trust_legacy.py                  365     42    88%   66, 73, 92, 105, 108, 112-113, 125, 128, 136, 144, 187, 234, 249, 252, 260, 274, 276, 288, 300, 333, 336, 340, 342, 359, 385, 391, 394, 396, 399, 408, 416, 457, 506, 513, 515, 529, 536, 563, 565, 608, 618
src/magicite/core/trust_reconciliation.py           74     10    86%   39, 52, 67, 84, 92, 95, 100, 104, 116, 166
src/magicite/core/trust_rotation.py                 32      2    94%   23, 58
src/magicite/core/trust_rotation_client.py          63      7    89%   24, 39, 56, 63, 66, 73, 93
src/magicite/core/trust_rotation_service.py         81      8    90%   29, 34, 41, 44, 50, 90, 95, 115
src/magicite/core/writer_guard.py                   96     10    90%   32, 42, 55, 61, 83, 121, 124, 146, 152, 170
src/magicite/embeddings/__init__.py                 22      0   100%
src/magicite/embeddings/base.py                     12      0   100%
src/magicite/embeddings/cache.py                    35      0   100%
src/magicite/embeddings/fastembed_provider.py       60      8    87%   98-100, 172-173, 190, 203-206
src/magicite/embeddings/hashing_provider.py         39      1    97%   70
src/magicite/embeddings/ollama_provider.py          45      2    96%   43, 98
src/magicite/embeddings/reranker.py                 20      3    85%   49-50, 56
src/magicite/engram/__init__.py                     10      0   100%
src/magicite/engram/assets.py                      114     14    88%   36, 43, 48, 51, 54, 79-80, 90-92, 147-148, 173-174
src/magicite/engram/digests.py                      28      3    89%   73, 84-88
src/magicite/engram/ids.py                          30      0   100%
src/magicite/engram/lint.py                         79      4    95%   61, 97, 103, 107
src/magicite/engram/model.py                       148      0   100%
src/magicite/engram/model_v1.py                    149      2    99%   64, 228
src/magicite/engram/parser.py                      131      2    98%   78, 286
src/magicite/engram/schema_validate.py             121     19    84%   80-86, 139-148, 166-167, 174, 188, 190, 193, 198-199, 248-249
src/magicite/engram/skillmd.py                     187     23    88%   115-117, 122, 141, 229, 320-338, 383
src/magicite/engram/transform.py                    90     12    87%   72, 98, 106, 212-219, 236, 242, 244, 248, 252, 254, 256
src/magicite/engram/version_constraints.py          45     12    73%   39, 45, 52, 56, 60, 70, 74-80
src/magicite/engram/writer.py                      373     37    90%   60, 147, 164-168, 193, 195, 199, 287, 359, 386, 477, 479, 487-496, 531, 533, 537, 569-579, 591
src/magicite/errors.py                              52      0   100%
src/magicite/eval/__init__.py                        5      0   100%
src/magicite/eval/__main__.py                      230     66    71%   64, 67, 72, 76, 78, 86-87, 90, 92, 102-103, 109-110, 112, 114-115, 117-118, 125, 131-133, 135-136, 138-139, 141-142, 144, 148, 154, 156, 169, 176, 179, 181, 186-190, 194-197, 293-298, 301-321, 372
src/magicite/eval/ablations.py                      55      0   100%
src/magicite/eval/bench.py                         179      7    96%   115, 187, 345-347, 395, 503
src/magicite/eval/composition_eval.py               75     12    84%   59, 66, 84, 95, 97, 103-104, 106-107, 114, 134-144
src/magicite/eval/digests.py                        26      3    88%   46-48
src/magicite/eval/envelopes.py                     208     29    86%   32, 60-61, 64, 67, 81, 84, 101, 113, 172, 200-201, 204, 213, 220, 232, 252, 254, 272, 389-390, 394-395, 401-402, 414-415, 417-418
src/magicite/eval/external.py                       58      8    86%   60, 79, 99-109, 155, 158
src/magicite/eval/gold.py                          116     58    50%   39-46, 54-55, 57, 59, 72, 75, 80, 82, 86, 92-93, 98-99, 101-102, 108-109, 114-115, 130, 146-175
src/magicite/eval/host_tasks.py                     78      7    91%   51, 83, 103, 109, 111, 116, 121
src/magicite/eval/manifests.py                     146      9    94%   140, 245, 320, 335, 349-355
src/magicite/eval/metrics.py                       152      8    95%   227, 261, 265, 320, 349-350, 356-357
src/magicite/eval/operator_cli.py                  266     27    90%   85, 92, 111, 115, 125-126, 130, 149, 165, 171, 176, 186, 195, 203, 205, 247, 253, 296, 351, 353, 386, 437, 439, 444, 502, 508, 522
src/magicite/eval/profiles.py                       89     11    88%   220-222, 230, 305, 307, 311, 317, 321, 329, 333
src/magicite/eval/query_context.py                  15      0   100%
src/magicite/eval/runner.py                         49      3    94%   70, 88-89
src/magicite/eval/scale.py                          31     20    35%   13-22, 27, 39-50
src/magicite/eval/unevaluated.py                    21      1    95%   189
src/magicite/eval/validate.py                      336     85    75%   66, 72, 74, 91, 103, 105, 107, 110, 112, 125, 157, 169, 184, 186, 189, 193, 197-198, 202-203, 206, 211, 222-223, 226-227, 235-236, 246-247, 250-251, 259, 261, 265, 274, 294, 296, 298, 300, 302, 304, 308, 310, 317, 319, 322, 327, 332, 357, 359, 372, 375, 377, 385, 420, 424, 430, 451, 454-459, 470, 477, 520, 539-542, 546-549, 553-556, 560-563, 567-570
src/magicite/eval/verdicts.py                      116     10    91%   162, 184, 189, 200, 223, 252, 365, 378-385
src/magicite/mcp/__init__.py                         0      0   100%
src/magicite/mcp/app.py                            181     40    78%   141, 149, 159-172, 217, 250, 256, 258, 270, 272-284, 301, 354, 358-359, 449, 470, 500, 507, 530, 542, 561-573, 578-579
src/magicite/mcp/bind_dream.py                      13      0   100%
src/magicite/mcp/bind_inspect.py                    31      4    87%   70, 105-112
src/magicite/mcp/bind_lifecycle.py                 101     21    79%   77-117, 295, 329-333
src/magicite/mcp/bind_ops.py                       225     89    60%   41-42, 44-45, 96-112, 124-140, 152-168, 177-188, 198-199, 261-270, 286-300, 310-317, 331-337, 349-354, 364-381, 392-397, 480-481, 552
src/magicite/mcp/bind_registry.py                   23      2    91%   108-109
src/magicite/mcp/bind_retrieval.py                 221     33    85%   81, 83, 99, 157, 160-169, 207, 209, 211, 326-327, 416-419, 427, 431, 493-496, 499, 545, 554, 573, 587-588, 617-619
src/magicite/mcp/bind_signals.py                    17      0   100%
src/magicite/mcp/redact.py                          35      2    94%   72-73
src/magicite/mcp/registry.py                        46      0   100%
src/magicite/mcp/schemas.py                        372      0   100%
src/magicite/obs/__init__.py                         0      0   100%
src/magicite/obs/doctor.py                         288     67    77%   102-128, 176-207, 225-226, 239, 261, 270, 277-281, 304-305, 370-377, 389-396, 406-412, 477-478, 528, 558, 693, 701
src/magicite/obs/events.py                          30      1    97%   73
src/magicite/obs/kpi.py                             41      0   100%
src/magicite/obs/logging.py                         20      2    90%   25, 53
src/magicite/storage/__init__.py                     0      0   100%
src/magicite/storage/authorizer.py                  28      1    96%   94
src/magicite/storage/db.py                          76      0   100%
src/magicite/storage/durable.py                    130      7    95%   179-188, 371
src/magicite/storage/ephemeral.py                   94      1    99%   140
src/magicite/storage/lease.py                      253     12    95%   107, 425, 443, 472, 493-497, 504, 524, 566
src/magicite/storage/migration_ops.py               95     28    71%   41-48, 85-89, 93-97, 108-109, 143-144, 199, 206-207, 225, 262-265, 281, 292, 318-321, 341
src/magicite/storage/migrations/registry.py         23      5    78%   98-101, 109
src/magicite/storage/queries.py                     74      1    99%   171
------------------------------------------------------------------------------
TOTAL                                            18997   2474    87%
Required test coverage of 70% reached. Total coverage: 86.98%
=========================== short test summary info ============================
SKIPPED [1] tests/acceptance/test_docker_smoke.py:242: 'magicite:verify' image not built -- run `docker build -t magicite:verify .` first (spec §7.2 VG-9)
SKIPPED [1] tests/acceptance/test_docker_smoke.py:258: 'magicite:verify' image not built -- run `docker build -t magicite:verify .` first (spec §7.2 VG-9)
SKIPPED [1] tests/acceptance/test_docker_smoke.py:282: 'magicite:verify' image not built -- run `docker build -t magicite:verify .` first (spec §7.2 VG-9)
SKIPPED [1] tests/acceptance/test_docker_smoke.py:317: 'magicite:verify' image not built -- run `docker build -t magicite:verify .` first (spec §7.2 VG-9)
SKIPPED [1] tests/acceptance/test_docker_smoke.py:347: 'magicite:verify' image not built -- run `docker build -t magicite:verify .` first (spec §7.2 VG-9)
SKIPPED [1] tests/acceptance/test_install_channels.py:274: channel pip-pypi (pypi) reserved/unevaluated until S13-published-channels (after S11/S15); version/digest unset
SKIPPED [1] tests/acceptance/test_install_channels.py:274: channel pipx (pipx) reserved/unevaluated until S13-published-channels (after S11/S15); version/digest unset
SKIPPED [1] tests/acceptance/test_install_channels.py:274: channel uvx (uvx) reserved/unevaluated until S13-published-channels (after S11/S15); version/digest unset
SKIPPED [1] tests/acceptance/test_install_channels.py:274: channel oci-digest (oci) reserved/unevaluated until S13-published-channels (after S11/S15); version/digest unset
1741 passed, 9 skipped, 1 deselected in 290.82s (0:04:50)
