........................................................................ [  8%]
........................................................................ [ 16%]
........................................................................ [ 24%]
........................................................................ [ 33%]
........................................................................ [ 41%]
........................................................................ [ 49%]
........................................................................ [ 57%]
........................................................................ [ 66%]
........................................................................ [ 74%]
........................................................................ [ 82%]
........................................................................ [ 91%]
........................................................................ [ 99%]
......                                                                   [100%]
=============================== tests coverage ================================
_______________ coverage: platform win32, python 3.11.9-final-0 _______________

Name                                  Stmts   Miss Branch BrPart  Cover   Missing
---------------------------------------------------------------------------------
src\cairntir\__init__.py                  9      0      0      0   100%
src\cairntir\calibration.py              52      2      4      1    95%   82-83
src\cairntir\cli.py                     907    247    252     49    72%   81, 83->82, 167, 194-195, 232-234, 247-249, 255, 257-258, 317, 342-344, 349-351, 386-387, 403-409, 414-416, 422-423, 426-427, 431-433, 461-462, 466-468, 485-486, 489-491, 493-494, 503-505, 585-586, 590-592, 677-683, 737-739, 743-747, 752, 775-782, 828-830, 840-850, 862-864, 885-887, 902-912, 920-924, 933-947, 1004-1006, 1017-1019, 1064, 1066, 1087->1092, 1092->1097, 1171-1172, 1193, 1195, 1311-1316, 1339, 1351, 1353, 1355, 1362, 1366-1371, 1386-1388, 1428-1430, 1441->exit, 1457-1463, 1482-1483, 1510, 1564-1566, 1581, 1589-1597, 1601-1602, 1609-1617, 1663, 1667-1669, 1732, 1735, 1753, 1839-1840, 1849->1858, 1877-1886, 1900-1902, 1916-1918, 1931-1933, 1958-1973, 2027-2028, 2033-2037, 2042-2043, 2047-2051, 2064, 2066, 2068, 2070-2078, 2097-2099, 2121-2132, 2137
src\cairntir\codeglass.py               145     22     60     23    78%   65, 67, 69, 71, 73, 76, 82, 89, 91, 158, 160, 163, 165, 168, 170, 218->221, 301, 314, 342, 345, 348, 354, 357
src\cairntir\config.py                   21      0      4      1    96%   56->58
src\cairntir\context.py                 175     16     84     10    89%   26, 43-44, 104->102, 119, 121->123, 146, 148, 154, 187-189, 223, 252-253, 259-261
src\cairntir\contracts.py                24      9      0      0    62%   49, 53, 70, 82, 86, 90, 94, 104, 108
src\cairntir\cost.py                    147      4     20      3    96%   227->237, 270, 364, 409-410
src\cairntir\daemon\__init__.py           4      0      0      0   100%
src\cairntir\daemon\capture.py           67      7      6      1    89%   84-89, 114
src\cairntir\daemon\spool.py             53      1      4      1    96%   97
src\cairntir\durability.py               45      5      2      1    87%   49, 59, 70, 82-83
src\cairntir\errors.py                   20      0      0      0   100%
src\cairntir\finalization.py            166     15     50     15    86%   43, 46, 58, 106, 108, 110, 112, 155, 170, 175, 233, 259, 261, 280, 285
src\cairntir\handoff.py                 160      3     32      4    96%   261->260, 263, 557, 671
src\cairntir\health.py                   63      9     18      5    80%   48, 66, 83, 96, 122-130, 144
src\cairntir\hosts.py                   281     30    108     11    89%   233, 260-261, 275->277, 287, 326, 350, 365-366, 416-421, 426-427, 433, 445, 450-455, 530, 539-540, 554-555, 559, 601-603
src\cairntir\hotfix.py                  699     89    264     73    83%   114-115, 155, 164, 167, 207-208, 231, 242, 250, 260, 309, 326, 352, 358, 361, 368, 371, 431, 443, 448, 454, 521, 535, 539, 542, 550, 552, 588, 591, 596, 600, 604, 608, 611->615, 616, 619, 656, 665, 673, 676, 717, 725-726, 728, 731, 737, 777-778, 784, 790, 792, 795, 813, 854, 861, 869, 875, 880, 883, 901, 916, 953, 1016, 1023, 1040-1041, 1044, 1071, 1074, 1078, 1093, 1100-1108, 1125, 1132->1137, 1159, 1192-1193, 1205, 1232-1233, 1235, 1237, 1241, 1262, 1299, 1361
src\cairntir\impl\__init__.py             6      0      0      0   100%
src\cairntir\learning.py                220     30    100     30    81%   102, 104, 106, 108, 112, 116, 118, 120, 187, 191, 200-201, 240, 242, 264->263, 273, 289, 352, 354, 369, 432, 436, 438, 443, 447, 449, 497, 500, 509, 518, 527
src\cairntir\mcp\__init__.py              3      0      0      0   100%
src\cairntir\mcp\backend.py             411     45    152     16    89%   155-156, 158, 608, 617-618, 623, 633-634, 657, 685, 696-697, 713, 721-722, 737, 745-746, 775-776, 786-801, 812, 832, 874-875, 891, 902-903, 930-931, 953, 1000, 1003, 1117, 1179, 1231, 1234
src\cairntir\memory\__init__.py           9      0      0      0   100%
src\cairntir\memory\anchors.py          175      4     74      2    98%   301->303, 396, 400, 409-412, 417->413
src\cairntir\memory\belief.py            12      0      0      0   100%
src\cairntir\memory\consolidate.py       65      0     26      1    99%   177->175
src\cairntir\memory\embeddings.py       225    140     34      4    37%   44, 48, 198-239, 244-248, 252-265, 269-301, 324-326, 331, 334-352, 357-361, 365-382, 393-398, 402-427, 433, 435, 440, 457, 465, 478-498
src\cairntir\memory\retrieval.py         32      0      4      0   100%
src\cairntir\memory\store.py            931    162    240     48    81%   177, 184, 199, 210, 227, 235-236, 268, 273, 285, 293, 310, 330, 346-347, 353, 368, 371-372, 387, 389, 391, 401-402, 415-416, 418, 457-458, 487, 516-517, 525-526, 542-543, 666, 667->669, 692-693, 713-714, 791, 808-809, 879-880, 882, 904-905, 917-918, 929-932, 950-951, 972, 974, 977-978, 1013, 1028-1029, 1044-1045, 1052, 1071-1072, 1078-1079, 1099, 1105, 1121-1122, 1192-1193, 1202, 1208, 1214-1215, 1222, 1241, 1271, 1322-1323, 1336-1337, 1350-1352, 1354, 1357-1358, 1374-1375, 1402-1403, 1415, 1417, 1431, 1433-1434, 1436, 1451-1452, 1469, 1519-1521, 1568, 1597-1599, 1621-1622, 1666-1667, 1702, 1724-1725, 1728-1729, 1771-1772, 1789-1790, 1804->1807, 1811-1812, 1830->1833, 1840-1841, 1860-1861, 1889, 1895->1898, 1899-1900, 1922-1923, 1933->1932, 1948-1969, 1975-1976, 2009-2010, 2014, 2019-2020
src\cairntir\memory\taxonomy.py          46      0      4      0   100%
src\cairntir\memory\temporal.py          51      5     20      3    89%   76, 81, 104, 136-137
src\cairntir\obsidian.py                117     16     28      9    83%   45, 74, 116, 126, 129, 159, 172, 180-181, 191, 199-200, 203-206
src\cairntir\portable.py                139      8     42      5    93%   223, 234, 253-254, 269, 308->315, 311-312, 328
src\cairntir\production\__init__.py       4      0      0      0   100%
src\cairntir\production\adapters.py      68      3     12      3    92%   48, 54, 67
src\cairntir\production\llm.py           54      0     12      0   100%
src\cairntir\prompt_safety.py            24      0      0      0   100%
src\cairntir\provenance.py               95      8     18      6    88%   75, 77, 79, 85, 200-201, 220, 232
src\cairntir\reason\__init__.py           5      0      0      0   100%
src\cairntir\reason\loop.py              98      8     46      6    90%   176, 270, 272, 281, 301, 316, 336-337
src\cairntir\reason\model.py             24      0      0      0   100%
src\cairntir\reason\ports.py             39     10      0      0    74%   48, 57, 72, 76, 85, 96, 112, 121, 132, 141
src\cairntir\recipes\__init__.py          5      0      0      0   100%
src\cairntir\recipes\contract.py         74      7     34      6    88%   81, 95, 104, 115, 120, 129, 132
src\cairntir\recipes\discovery.py        34      2     16      2    92%   43, 78
src\cairntir\recipes\runner.py          107      6     28      4    93%   126, 324, 413-414, 419, 423
src\cairntir\register.py                 77      8     20      2    90%   63-70, 99, 116->111, 140-141, 203-204
src\cairntir\skills\__init__.py          15      2      2      0    88%   37-38
src\cairntir\skills\memory.py            32      0     12      0   100%
src\cairntir\transcript.py              342     53    116     30    81%   70-83, 156, 158, 160, 174, 218, 221, 286->288, 289, 323, 331, 333, 347, 350, 365-366, 373, 384-385, 397, 399-400, 402, 420-421, 425, 430-432, 436, 451, 462, 472, 482, 485, 513, 525-535, 612, 628, 642, 676, 684-686, 690-693
src\cairntir\update.py                  107     20     30      3    82%   115, 132-133, 140, 143-144, 146, 156-171, 193-194
src\cairntir\vault.py                   110      0     34      0   100%
---------------------------------------------------------------------------------
TOTAL                                  6794    996   2012    378    84%
Coverage HTML written to dir htmlcov
Required test coverage of 80% reached. Total coverage: 83.56%
870 passed, 7 deselected in 49.41s
