@dzhechkov/harness-core 0.7.11 → 0.7.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dz-manifest.json +93 -33
- package/README.md +26 -0
- package/dist/amendment-trace.d.ts +12 -1
- package/dist/amendment-trace.d.ts.map +1 -1
- package/dist/amendment-trace.js +22 -4
- package/dist/amendment-trace.js.map +1 -1
- package/dist/feature-adr-routing.d.ts +69 -12
- package/dist/feature-adr-routing.d.ts.map +1 -1
- package/dist/feature-adr-routing.js +117 -7
- package/dist/feature-adr-routing.js.map +1 -1
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/learning-backend.d.ts +39 -0
- package/dist/learning-backend.d.ts.map +1 -1
- package/dist/learning-backend.js +31 -11
- package/dist/learning-backend.js.map +1 -1
- package/dist/lesson-bandit.d.ts +116 -0
- package/dist/lesson-bandit.d.ts.map +1 -0
- package/dist/lesson-bandit.js +235 -0
- package/dist/lesson-bandit.js.map +1 -0
- package/dist/lesson-payoff.d.ts +260 -0
- package/dist/lesson-payoff.d.ts.map +1 -0
- package/dist/lesson-payoff.js +597 -0
- package/dist/lesson-payoff.js.map +1 -0
- package/dist/patterns.d.ts +21 -0
- package/dist/patterns.d.ts.map +1 -1
- package/dist/patterns.js +42 -3
- package/dist/patterns.js.map +1 -1
- package/dist/project-skills-root.d.ts +44 -0
- package/dist/project-skills-root.d.ts.map +1 -0
- package/dist/project-skills-root.js +62 -0
- package/dist/project-skills-root.js.map +1 -0
- package/dist/vector-tier.d.ts +30 -0
- package/dist/vector-tier.d.ts.map +1 -1
- package/dist/vector-tier.js +130 -15
- package/dist/vector-tier.js.map +1 -1
- package/package.json +4 -4
- package/sbom.json +182 -32
- package/src/amendment-trace.ts +34 -4
- package/src/feature-adr-routing.ts +146 -7
- package/src/index.ts +16 -2
- package/src/learning-backend.ts +62 -11
- package/src/lesson-bandit.ts +279 -0
- package/src/lesson-payoff.ts +728 -0
- package/src/patterns.ts +66 -5
- package/src/project-skills-root.ts +63 -0
- package/src/vector-tier.ts +182 -16
package/sbom.json
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"hashes": [
|
|
26
26
|
{
|
|
27
27
|
"alg": "SHA-256",
|
|
28
|
-
"content": "
|
|
28
|
+
"content": "6d91220bbf12e856c67a88b5a00f03e5585a116346f32576366192bb65816f52"
|
|
29
29
|
}
|
|
30
30
|
]
|
|
31
31
|
},
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
"hashes": [
|
|
156
156
|
{
|
|
157
157
|
"alg": "SHA-256",
|
|
158
|
-
"content": "
|
|
158
|
+
"content": "0cd1c17e84518dde7b0d1ca9558866d96902e611f9a5f579828d89315a390bcb"
|
|
159
159
|
}
|
|
160
160
|
]
|
|
161
161
|
},
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
"hashes": [
|
|
166
166
|
{
|
|
167
167
|
"alg": "SHA-256",
|
|
168
|
-
"content": "
|
|
168
|
+
"content": "6e9e2402008672ac2581c97db920eaac9a4b3900ab8885aa049b465ead146ac9"
|
|
169
169
|
}
|
|
170
170
|
]
|
|
171
171
|
},
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
"hashes": [
|
|
176
176
|
{
|
|
177
177
|
"alg": "SHA-256",
|
|
178
|
-
"content": "
|
|
178
|
+
"content": "5bdc777e7d265e84431fae39f7331f814ef52a75b09f1482dd7ea26d3f3ccda3"
|
|
179
179
|
}
|
|
180
180
|
]
|
|
181
181
|
},
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
"hashes": [
|
|
186
186
|
{
|
|
187
187
|
"alg": "SHA-256",
|
|
188
|
-
"content": "
|
|
188
|
+
"content": "6a6ad6be2419f9ae6ee10a3d59a272c325a316becfd69d57f5b40b1ef7534130"
|
|
189
189
|
}
|
|
190
190
|
]
|
|
191
191
|
},
|
|
@@ -1475,7 +1475,7 @@
|
|
|
1475
1475
|
"hashes": [
|
|
1476
1476
|
{
|
|
1477
1477
|
"alg": "SHA-256",
|
|
1478
|
-
"content": "
|
|
1478
|
+
"content": "a1af0f230be9ee3eaccdf24ada9364bc2169905b68efaec35cb6f6844284677c"
|
|
1479
1479
|
}
|
|
1480
1480
|
]
|
|
1481
1481
|
},
|
|
@@ -1485,7 +1485,7 @@
|
|
|
1485
1485
|
"hashes": [
|
|
1486
1486
|
{
|
|
1487
1487
|
"alg": "SHA-256",
|
|
1488
|
-
"content": "
|
|
1488
|
+
"content": "0e74beee5ab13a4762e2219f8f77f65c2403636268682ba6828fd0bbc6fdef99"
|
|
1489
1489
|
}
|
|
1490
1490
|
]
|
|
1491
1491
|
},
|
|
@@ -1495,7 +1495,7 @@
|
|
|
1495
1495
|
"hashes": [
|
|
1496
1496
|
{
|
|
1497
1497
|
"alg": "SHA-256",
|
|
1498
|
-
"content": "
|
|
1498
|
+
"content": "a213058784464f7ba21be0178324d68fb417da00f3b416726f6acdf9de944b36"
|
|
1499
1499
|
}
|
|
1500
1500
|
]
|
|
1501
1501
|
},
|
|
@@ -1505,7 +1505,7 @@
|
|
|
1505
1505
|
"hashes": [
|
|
1506
1506
|
{
|
|
1507
1507
|
"alg": "SHA-256",
|
|
1508
|
-
"content": "
|
|
1508
|
+
"content": "2c1520e30dba9fad19981c7533edb57ef8be7f4dcf444463f4c00e33826b8663"
|
|
1509
1509
|
}
|
|
1510
1510
|
]
|
|
1511
1511
|
},
|
|
@@ -1675,7 +1675,7 @@
|
|
|
1675
1675
|
"hashes": [
|
|
1676
1676
|
{
|
|
1677
1677
|
"alg": "SHA-256",
|
|
1678
|
-
"content": "
|
|
1678
|
+
"content": "60629799e03201468849e368388b517acf33a809256cdd090ab3b47f6c8722b7"
|
|
1679
1679
|
}
|
|
1680
1680
|
]
|
|
1681
1681
|
},
|
|
@@ -1685,7 +1685,7 @@
|
|
|
1685
1685
|
"hashes": [
|
|
1686
1686
|
{
|
|
1687
1687
|
"alg": "SHA-256",
|
|
1688
|
-
"content": "
|
|
1688
|
+
"content": "780d4ace92fa01342a373e380b89f322cb7f6fa3fcc06779e2cae28c0a618170"
|
|
1689
1689
|
}
|
|
1690
1690
|
]
|
|
1691
1691
|
},
|
|
@@ -1695,7 +1695,7 @@
|
|
|
1695
1695
|
"hashes": [
|
|
1696
1696
|
{
|
|
1697
1697
|
"alg": "SHA-256",
|
|
1698
|
-
"content": "
|
|
1698
|
+
"content": "3b1b2bfa5a343fd07b79715845ca3ce887ec614868ba37ae05114444142d1fb9"
|
|
1699
1699
|
}
|
|
1700
1700
|
]
|
|
1701
1701
|
},
|
|
@@ -1705,7 +1705,7 @@
|
|
|
1705
1705
|
"hashes": [
|
|
1706
1706
|
{
|
|
1707
1707
|
"alg": "SHA-256",
|
|
1708
|
-
"content": "
|
|
1708
|
+
"content": "b60a401a6b62e2725c3b9419da607ad7d9fcea61de2b94d1b9afe8b3678ea07a"
|
|
1709
1709
|
}
|
|
1710
1710
|
]
|
|
1711
1711
|
},
|
|
@@ -1715,7 +1715,7 @@
|
|
|
1715
1715
|
"hashes": [
|
|
1716
1716
|
{
|
|
1717
1717
|
"alg": "SHA-256",
|
|
1718
|
-
"content": "
|
|
1718
|
+
"content": "2cb404295e5307cc20e92d6298f7b4184465ccfe4ebec30271720e5896852f10"
|
|
1719
1719
|
}
|
|
1720
1720
|
]
|
|
1721
1721
|
},
|
|
@@ -1725,7 +1725,7 @@
|
|
|
1725
1725
|
"hashes": [
|
|
1726
1726
|
{
|
|
1727
1727
|
"alg": "SHA-256",
|
|
1728
|
-
"content": "
|
|
1728
|
+
"content": "7cac1ab14956ad9b03902135f855d6636f97098d1654121dea5cb10eee3428e1"
|
|
1729
1729
|
}
|
|
1730
1730
|
]
|
|
1731
1731
|
},
|
|
@@ -1735,7 +1735,7 @@
|
|
|
1735
1735
|
"hashes": [
|
|
1736
1736
|
{
|
|
1737
1737
|
"alg": "SHA-256",
|
|
1738
|
-
"content": "
|
|
1738
|
+
"content": "832e0a36bffa7e426c045b6ce6c70df972288127259e4adbf4abb840bccf5eab"
|
|
1739
1739
|
}
|
|
1740
1740
|
]
|
|
1741
1741
|
},
|
|
@@ -1745,7 +1745,7 @@
|
|
|
1745
1745
|
"hashes": [
|
|
1746
1746
|
{
|
|
1747
1747
|
"alg": "SHA-256",
|
|
1748
|
-
"content": "
|
|
1748
|
+
"content": "12a2e54dacb1f856196cd2d012228fc29ee4c90414e8255fc5ada25e750e4555"
|
|
1749
1749
|
}
|
|
1750
1750
|
]
|
|
1751
1751
|
},
|
|
@@ -1789,6 +1789,86 @@
|
|
|
1789
1789
|
}
|
|
1790
1790
|
]
|
|
1791
1791
|
},
|
|
1792
|
+
{
|
|
1793
|
+
"type": "file",
|
|
1794
|
+
"name": "dist/lesson-bandit.d.ts",
|
|
1795
|
+
"hashes": [
|
|
1796
|
+
{
|
|
1797
|
+
"alg": "SHA-256",
|
|
1798
|
+
"content": "18050085b5a86c89b8c73445e215d2bc974a42b0fe6d25fcaadfff4edfc84ade"
|
|
1799
|
+
}
|
|
1800
|
+
]
|
|
1801
|
+
},
|
|
1802
|
+
{
|
|
1803
|
+
"type": "file",
|
|
1804
|
+
"name": "dist/lesson-bandit.d.ts.map",
|
|
1805
|
+
"hashes": [
|
|
1806
|
+
{
|
|
1807
|
+
"alg": "SHA-256",
|
|
1808
|
+
"content": "d78f25bccf8b1ccb5fe76e6f9684519e8e8b5f312ae3e51bba27dc8d806bf904"
|
|
1809
|
+
}
|
|
1810
|
+
]
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
"type": "file",
|
|
1814
|
+
"name": "dist/lesson-bandit.js",
|
|
1815
|
+
"hashes": [
|
|
1816
|
+
{
|
|
1817
|
+
"alg": "SHA-256",
|
|
1818
|
+
"content": "430a62096515a00fa9821312f3826b60b678aabc8fcf8790ed4465a536313e35"
|
|
1819
|
+
}
|
|
1820
|
+
]
|
|
1821
|
+
},
|
|
1822
|
+
{
|
|
1823
|
+
"type": "file",
|
|
1824
|
+
"name": "dist/lesson-bandit.js.map",
|
|
1825
|
+
"hashes": [
|
|
1826
|
+
{
|
|
1827
|
+
"alg": "SHA-256",
|
|
1828
|
+
"content": "d7bda1293981673a916e9bf1fdda1c45e88407d6a72572f77bdaddac73ed5f67"
|
|
1829
|
+
}
|
|
1830
|
+
]
|
|
1831
|
+
},
|
|
1832
|
+
{
|
|
1833
|
+
"type": "file",
|
|
1834
|
+
"name": "dist/lesson-payoff.d.ts",
|
|
1835
|
+
"hashes": [
|
|
1836
|
+
{
|
|
1837
|
+
"alg": "SHA-256",
|
|
1838
|
+
"content": "a73c7aa9d3aeea7bcc0ce5f32df392a3d4d1f43df2a41e89359d659ba73fc838"
|
|
1839
|
+
}
|
|
1840
|
+
]
|
|
1841
|
+
},
|
|
1842
|
+
{
|
|
1843
|
+
"type": "file",
|
|
1844
|
+
"name": "dist/lesson-payoff.d.ts.map",
|
|
1845
|
+
"hashes": [
|
|
1846
|
+
{
|
|
1847
|
+
"alg": "SHA-256",
|
|
1848
|
+
"content": "b4a01fd697d785c473d9b66689c8d140211fc09f8379ca7fa32e41fbd36ca940"
|
|
1849
|
+
}
|
|
1850
|
+
]
|
|
1851
|
+
},
|
|
1852
|
+
{
|
|
1853
|
+
"type": "file",
|
|
1854
|
+
"name": "dist/lesson-payoff.js",
|
|
1855
|
+
"hashes": [
|
|
1856
|
+
{
|
|
1857
|
+
"alg": "SHA-256",
|
|
1858
|
+
"content": "d08d6563fa6f1996701cccaad51896a752cc7a0dea8754fc941be1bc935da22b"
|
|
1859
|
+
}
|
|
1860
|
+
]
|
|
1861
|
+
},
|
|
1862
|
+
{
|
|
1863
|
+
"type": "file",
|
|
1864
|
+
"name": "dist/lesson-payoff.js.map",
|
|
1865
|
+
"hashes": [
|
|
1866
|
+
{
|
|
1867
|
+
"alg": "SHA-256",
|
|
1868
|
+
"content": "3cd74a4dbf1dd020e207b4cc5eb00db776c0656177a3d907b150eb536136f1a6"
|
|
1869
|
+
}
|
|
1870
|
+
]
|
|
1871
|
+
},
|
|
1792
1872
|
{
|
|
1793
1873
|
"type": "file",
|
|
1794
1874
|
"name": "dist/loop-blobs.generated.d.ts",
|
|
@@ -2475,7 +2555,7 @@
|
|
|
2475
2555
|
"hashes": [
|
|
2476
2556
|
{
|
|
2477
2557
|
"alg": "SHA-256",
|
|
2478
|
-
"content": "
|
|
2558
|
+
"content": "4f5b24a475a90fb4cf07d0af965300ce5c187206f68c0d497956b7538ee4f494"
|
|
2479
2559
|
}
|
|
2480
2560
|
]
|
|
2481
2561
|
},
|
|
@@ -2485,7 +2565,7 @@
|
|
|
2485
2565
|
"hashes": [
|
|
2486
2566
|
{
|
|
2487
2567
|
"alg": "SHA-256",
|
|
2488
|
-
"content": "
|
|
2568
|
+
"content": "4bad5098f61eef6a0f06600cccb1d57e8b137d4eadbf39278664c09bc5e1ba59"
|
|
2489
2569
|
}
|
|
2490
2570
|
]
|
|
2491
2571
|
},
|
|
@@ -2495,7 +2575,7 @@
|
|
|
2495
2575
|
"hashes": [
|
|
2496
2576
|
{
|
|
2497
2577
|
"alg": "SHA-256",
|
|
2498
|
-
"content": "
|
|
2578
|
+
"content": "edf5a1d5d1618789174d81b101164e161bde1f4441211bcdcb6b32bf5aaaa671"
|
|
2499
2579
|
}
|
|
2500
2580
|
]
|
|
2501
2581
|
},
|
|
@@ -2505,7 +2585,7 @@
|
|
|
2505
2585
|
"hashes": [
|
|
2506
2586
|
{
|
|
2507
2587
|
"alg": "SHA-256",
|
|
2508
|
-
"content": "
|
|
2588
|
+
"content": "a4a57cf5feaf09a9f24ec98ef469d9de1e7dee7aa98db39de7696a9c67e953c7"
|
|
2509
2589
|
}
|
|
2510
2590
|
]
|
|
2511
2591
|
},
|
|
@@ -2589,6 +2669,46 @@
|
|
|
2589
2669
|
}
|
|
2590
2670
|
]
|
|
2591
2671
|
},
|
|
2672
|
+
{
|
|
2673
|
+
"type": "file",
|
|
2674
|
+
"name": "dist/project-skills-root.d.ts",
|
|
2675
|
+
"hashes": [
|
|
2676
|
+
{
|
|
2677
|
+
"alg": "SHA-256",
|
|
2678
|
+
"content": "b813eeb038668ee94f10be30eae66cf22c9ac6372873586f74a308d0160c6dde"
|
|
2679
|
+
}
|
|
2680
|
+
]
|
|
2681
|
+
},
|
|
2682
|
+
{
|
|
2683
|
+
"type": "file",
|
|
2684
|
+
"name": "dist/project-skills-root.d.ts.map",
|
|
2685
|
+
"hashes": [
|
|
2686
|
+
{
|
|
2687
|
+
"alg": "SHA-256",
|
|
2688
|
+
"content": "5bcd786bb55c494c7a3f845dfa397565bc634ae938100b5e61773fb480b36ba0"
|
|
2689
|
+
}
|
|
2690
|
+
]
|
|
2691
|
+
},
|
|
2692
|
+
{
|
|
2693
|
+
"type": "file",
|
|
2694
|
+
"name": "dist/project-skills-root.js",
|
|
2695
|
+
"hashes": [
|
|
2696
|
+
{
|
|
2697
|
+
"alg": "SHA-256",
|
|
2698
|
+
"content": "041fb3db8b4b499e81cae600dac88a7b8f6d9a55b91bb6b0727c91493071c524"
|
|
2699
|
+
}
|
|
2700
|
+
]
|
|
2701
|
+
},
|
|
2702
|
+
{
|
|
2703
|
+
"type": "file",
|
|
2704
|
+
"name": "dist/project-skills-root.js.map",
|
|
2705
|
+
"hashes": [
|
|
2706
|
+
{
|
|
2707
|
+
"alg": "SHA-256",
|
|
2708
|
+
"content": "5c375be964336c926c53298f1230bd1a65c4bd02228b9d7d44bd1d12a0d57827"
|
|
2709
|
+
}
|
|
2710
|
+
]
|
|
2711
|
+
},
|
|
2592
2712
|
{
|
|
2593
2713
|
"type": "file",
|
|
2594
2714
|
"name": "dist/project-skills.d.ts",
|
|
@@ -4235,7 +4355,7 @@
|
|
|
4235
4355
|
"hashes": [
|
|
4236
4356
|
{
|
|
4237
4357
|
"alg": "SHA-256",
|
|
4238
|
-
"content": "
|
|
4358
|
+
"content": "97bea125865758822edd100aac5bcee5a82b8ab8a6a872ff891fc5897685e9d4"
|
|
4239
4359
|
}
|
|
4240
4360
|
]
|
|
4241
4361
|
},
|
|
@@ -4245,7 +4365,7 @@
|
|
|
4245
4365
|
"hashes": [
|
|
4246
4366
|
{
|
|
4247
4367
|
"alg": "SHA-256",
|
|
4248
|
-
"content": "
|
|
4368
|
+
"content": "711d7708988abc2c9cf3fb4c29d0b22717d839630a6fc90862d1f12d9c36b090"
|
|
4249
4369
|
}
|
|
4250
4370
|
]
|
|
4251
4371
|
},
|
|
@@ -4255,7 +4375,7 @@
|
|
|
4255
4375
|
"hashes": [
|
|
4256
4376
|
{
|
|
4257
4377
|
"alg": "SHA-256",
|
|
4258
|
-
"content": "
|
|
4378
|
+
"content": "9fdd461b079011b92606be5f7007dd188a1942d07d3bf3e3e1ea624006036a13"
|
|
4259
4379
|
}
|
|
4260
4380
|
]
|
|
4261
4381
|
},
|
|
@@ -4265,7 +4385,7 @@
|
|
|
4265
4385
|
"hashes": [
|
|
4266
4386
|
{
|
|
4267
4387
|
"alg": "SHA-256",
|
|
4268
|
-
"content": "
|
|
4388
|
+
"content": "06a6f1bea3207ee78f79d8198c90145f1049bba13306bc76515731757645f53f"
|
|
4269
4389
|
}
|
|
4270
4390
|
]
|
|
4271
4391
|
},
|
|
@@ -4435,7 +4555,7 @@
|
|
|
4435
4555
|
"hashes": [
|
|
4436
4556
|
{
|
|
4437
4557
|
"alg": "SHA-256",
|
|
4438
|
-
"content": "
|
|
4558
|
+
"content": "fcb5e9df9919234bb7645c10611cf925eef9901559a9e716a51f5cba2350f80a"
|
|
4439
4559
|
}
|
|
4440
4560
|
]
|
|
4441
4561
|
},
|
|
@@ -4475,7 +4595,7 @@
|
|
|
4475
4595
|
"hashes": [
|
|
4476
4596
|
{
|
|
4477
4597
|
"alg": "SHA-256",
|
|
4478
|
-
"content": "
|
|
4598
|
+
"content": "f7a778034f98933d2b423d251ccb945b34b984328f1b19017503a670c6ce4e7a"
|
|
4479
4599
|
}
|
|
4480
4600
|
]
|
|
4481
4601
|
},
|
|
@@ -4805,7 +4925,7 @@
|
|
|
4805
4925
|
"hashes": [
|
|
4806
4926
|
{
|
|
4807
4927
|
"alg": "SHA-256",
|
|
4808
|
-
"content": "
|
|
4928
|
+
"content": "d7dcf5340f1a08744ccf362605d4ea6d019e911bc7b436cde236221adfb3ed35"
|
|
4809
4929
|
}
|
|
4810
4930
|
]
|
|
4811
4931
|
},
|
|
@@ -4855,7 +4975,7 @@
|
|
|
4855
4975
|
"hashes": [
|
|
4856
4976
|
{
|
|
4857
4977
|
"alg": "SHA-256",
|
|
4858
|
-
"content": "
|
|
4978
|
+
"content": "90152128cdfc920f0546819c0986ce4c4423252ee241d51297cfd5f942508e81"
|
|
4859
4979
|
}
|
|
4860
4980
|
]
|
|
4861
4981
|
},
|
|
@@ -4865,7 +4985,7 @@
|
|
|
4865
4985
|
"hashes": [
|
|
4866
4986
|
{
|
|
4867
4987
|
"alg": "SHA-256",
|
|
4868
|
-
"content": "
|
|
4988
|
+
"content": "5548fba2761d7172437dc5ffdacf25ec58009afd98e32c04df396245363e65f4"
|
|
4869
4989
|
}
|
|
4870
4990
|
]
|
|
4871
4991
|
},
|
|
@@ -4879,6 +4999,26 @@
|
|
|
4879
4999
|
}
|
|
4880
5000
|
]
|
|
4881
5001
|
},
|
|
5002
|
+
{
|
|
5003
|
+
"type": "file",
|
|
5004
|
+
"name": "src/lesson-bandit.ts",
|
|
5005
|
+
"hashes": [
|
|
5006
|
+
{
|
|
5007
|
+
"alg": "SHA-256",
|
|
5008
|
+
"content": "115b8af8d91fbaaec5ba10f9f28a05db01682e1a81b2af64f6d6004723f1b5ea"
|
|
5009
|
+
}
|
|
5010
|
+
]
|
|
5011
|
+
},
|
|
5012
|
+
{
|
|
5013
|
+
"type": "file",
|
|
5014
|
+
"name": "src/lesson-payoff.ts",
|
|
5015
|
+
"hashes": [
|
|
5016
|
+
{
|
|
5017
|
+
"alg": "SHA-256",
|
|
5018
|
+
"content": "5d0fff0bcc03b0bc52460bf4a2d1d247607c35650582693344c8b3168188ed75"
|
|
5019
|
+
}
|
|
5020
|
+
]
|
|
5021
|
+
},
|
|
4882
5022
|
{
|
|
4883
5023
|
"type": "file",
|
|
4884
5024
|
"name": "src/loop-blobs.generated.ts",
|
|
@@ -5055,7 +5195,7 @@
|
|
|
5055
5195
|
"hashes": [
|
|
5056
5196
|
{
|
|
5057
5197
|
"alg": "SHA-256",
|
|
5058
|
-
"content": "
|
|
5198
|
+
"content": "947a7504ce220bbdcf19972c4dca63840435dcddcb3185c553fbc39a686f9b81"
|
|
5059
5199
|
}
|
|
5060
5200
|
]
|
|
5061
5201
|
},
|
|
@@ -5079,6 +5219,16 @@
|
|
|
5079
5219
|
}
|
|
5080
5220
|
]
|
|
5081
5221
|
},
|
|
5222
|
+
{
|
|
5223
|
+
"type": "file",
|
|
5224
|
+
"name": "src/project-skills-root.ts",
|
|
5225
|
+
"hashes": [
|
|
5226
|
+
{
|
|
5227
|
+
"alg": "SHA-256",
|
|
5228
|
+
"content": "608b7ce670ce9fa02b115ded4652337ae4b7db6972ede743b7b25e0c18b07cd0"
|
|
5229
|
+
}
|
|
5230
|
+
]
|
|
5231
|
+
},
|
|
5082
5232
|
{
|
|
5083
5233
|
"type": "file",
|
|
5084
5234
|
"name": "src/project-skills.ts",
|
|
@@ -5485,7 +5635,7 @@
|
|
|
5485
5635
|
"hashes": [
|
|
5486
5636
|
{
|
|
5487
5637
|
"alg": "SHA-256",
|
|
5488
|
-
"content": "
|
|
5638
|
+
"content": "b1d89b496596be3d788fcb12e84a92716af4b2ee8199e6cc7bebee35e7f66b18"
|
|
5489
5639
|
}
|
|
5490
5640
|
]
|
|
5491
5641
|
},
|
package/src/amendment-trace.ts
CHANGED
|
@@ -26,6 +26,17 @@ export interface AmendmentRow {
|
|
|
26
26
|
export type AmendmentVerdict =
|
|
27
27
|
| 'resolved'
|
|
28
28
|
| 'placeholder'
|
|
29
|
+
/**
|
|
30
|
+
* The plan RETRACTED this amendment and named its successor. A first-class outcome, never a
|
|
31
|
+
* failure: a plan is allowed to change its mind, and until 2026-08-25 this checker had no concept
|
|
32
|
+
* of it at all (`grep superseded` over this file returned nothing), so a legitimately retracted
|
|
33
|
+
* amendment read as `unnamed` and failed the run. C6 has accepted the form since it was written —
|
|
34
|
+
* this is the half of the contract that was missing here.
|
|
35
|
+
*
|
|
36
|
+
* Honest limit, stated in ADR-001: nothing verifies that the named successor EXISTS, or that the
|
|
37
|
+
* retraction was justified. Refusing retraction outright is what produced the false failures.
|
|
38
|
+
*/
|
|
39
|
+
| 'superseded'
|
|
29
40
|
| 'unnamed'
|
|
30
41
|
| 'no-file-named'
|
|
31
42
|
| 'file-missing'
|
|
@@ -94,7 +105,11 @@ export function normalizeTestId(s: string): string {
|
|
|
94
105
|
* `features/ha-consilium/03.5_ideation_report.md` — is deliberately NOT a row: counting a legend as
|
|
95
106
|
* an amendment would open this feature by falsely accusing a feature that did nothing wrong.
|
|
96
107
|
*/
|
|
97
|
-
|
|
108
|
+
// The bullet is OPTIONAL, and `AM-CP-N` is a row like any other. MEASURED 2026-08-25: requiring a
|
|
109
|
+
// bullet drops 104 of the corpus's 347 real amendment rows out of the check entirely, and a
|
|
110
|
+
// bullet-less row made this tool return `not-established` — which the pipeline's own gate text calls
|
|
111
|
+
// "NEVER a pass". C6 has always treated the bullet as optional; this is that half of the contract.
|
|
112
|
+
const ROW_START = /^(?:[-*|]\s*)?\*{0,2}AM-(?:CP-)?(\d+)/gm;
|
|
98
113
|
|
|
99
114
|
/** The `## Amendments` section body, or null when the document has none (acid case A5). */
|
|
100
115
|
export function amendmentSection(md: string): string | null {
|
|
@@ -131,10 +146,15 @@ export function parseAmendments(md: string): AmendmentRow[] {
|
|
|
131
146
|
return rows;
|
|
132
147
|
}
|
|
133
148
|
|
|
149
|
+
/** `superseded by AM-N` / `AM-CP-N` — the retraction form C6 has always accepted. */
|
|
150
|
+
const SUPERSEDED = /superseded by AM-(?:CP-)?\d+/i;
|
|
151
|
+
|
|
134
152
|
/** `→ test \`a\`` and the two-id shape `→ tests \`a\` and \`b\`` — both are in the corpus. */
|
|
135
153
|
function extractTestIds(raw: string): string[] {
|
|
136
154
|
const out: string[] = [];
|
|
137
|
-
|
|
155
|
+
// Both arrows. C6 accepted `->` from the start and this file only accepted `→`, so an ASCII row
|
|
156
|
+
// read as `unnamed` here while passing there — an accident of two authors, not a decision.
|
|
157
|
+
const re = /(?:\u2192|->)\s*tests?\s+`([^`]+)`(?:\s*(?:and|и)\s*`([^`]+)`)?/g;
|
|
138
158
|
for (let m = re.exec(raw); m !== null; m = re.exec(raw)) {
|
|
139
159
|
if (m[1]) out.push(m[1].trim());
|
|
140
160
|
if (m[2]) out.push(m[2].trim());
|
|
@@ -148,7 +168,7 @@ function extractTestIds(raw: string): string[] {
|
|
|
148
168
|
* successive shell-written extractors returned 108, 111 and 13 rows over the identical corpus.
|
|
149
169
|
*/
|
|
150
170
|
function extractFile(raw: string): string | null {
|
|
151
|
-
const m =
|
|
171
|
+
const m = /(?:\u2192|->)\s*tests?\s+`[^`]+`(?:\s*(?:and|и)\s*`[^`]+`)?[\s\S]{0,40}?\bin\s+`([^`]+)`/.exec(raw);
|
|
152
172
|
return m && m[1] ? m[1].trim() : null;
|
|
153
173
|
}
|
|
154
174
|
|
|
@@ -158,6 +178,12 @@ export function resolveAmendments(
|
|
|
158
178
|
): AmendmentResolution[] {
|
|
159
179
|
const out: AmendmentResolution[] = [];
|
|
160
180
|
for (const row of rows) {
|
|
181
|
+
// A retraction is checked BEFORE the missing-pointer branch: a row that says it was superseded
|
|
182
|
+
// is not a row that forgot its test.
|
|
183
|
+
if (SUPERSEDED.test(row.raw)) {
|
|
184
|
+
out.push({ id: row.id, testId: null, file: row.file, verdict: 'superseded', detail: 'the plan retracted this amendment and named its successor' });
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
161
187
|
if (row.testIds.length === 0) {
|
|
162
188
|
out.push({
|
|
163
189
|
id: row.id,
|
|
@@ -219,6 +245,7 @@ function resolveOne(
|
|
|
219
245
|
const ZERO_COUNTS: Record<AmendmentVerdict, number> = {
|
|
220
246
|
resolved: 0,
|
|
221
247
|
placeholder: 0,
|
|
248
|
+
superseded: 0,
|
|
222
249
|
unnamed: 0,
|
|
223
250
|
'no-file-named': 0,
|
|
224
251
|
'file-missing': 0,
|
|
@@ -282,7 +309,10 @@ export function decideAmendmentOutcome(input: {
|
|
|
282
309
|
);
|
|
283
310
|
}
|
|
284
311
|
for (const r of input.resolutions) {
|
|
285
|
-
|
|
312
|
+
// `superseded` is an OUTCOME, not a defect: the plan retracted the amendment and said so. It is
|
|
313
|
+
// reported in the counts and never becomes a reason, which is the whole point — refusing
|
|
314
|
+
// retraction is what produced the false failures this change removes.
|
|
315
|
+
if (r.verdict !== 'resolved' && r.verdict !== 'superseded') reasons.push(`${r.id} → ${r.verdict}: ${r.detail}`);
|
|
286
316
|
}
|
|
287
317
|
return { outcome: reasons.length > 0 ? 'fail' : 'pass', exit: reasons.length > 0 ? 1 : 0, reasons, counts };
|
|
288
318
|
}
|