@mc-and-his-agents/loom-installer 0.1.27 → 0.1.28

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.
Files changed (42) hide show
  1. package/package.json +1 -1
  2. package/payload/manifest.json +112 -62
  3. package/payload/plugin/loom/skills/shared/references/adoption/deep-existing-repo-default.md +19 -4
  4. package/payload/plugin/loom/skills/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  5. package/payload/plugin/loom/skills/shared/references/harness/runtime-state.md +14 -0
  6. package/payload/plugin/loom/skills/shared/scripts/loom_check.py +50 -0
  7. package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +19 -4
  8. package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  9. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/runtime-state.md +14 -0
  10. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py +50 -0
  11. package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +19 -4
  12. package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  13. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/runtime-state.md +14 -0
  14. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py +50 -0
  15. package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +19 -4
  16. package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  17. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/runtime-state.md +14 -0
  18. package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_check.py +50 -0
  19. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +19 -4
  20. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  21. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/runtime-state.md +14 -0
  22. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py +50 -0
  23. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +19 -4
  24. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  25. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/runtime-state.md +14 -0
  26. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py +50 -0
  27. package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +19 -4
  28. package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  29. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/runtime-state.md +14 -0
  30. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py +50 -0
  31. package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +19 -4
  32. package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  33. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/runtime-state.md +14 -0
  34. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py +50 -0
  35. package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +19 -4
  36. package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  37. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/runtime-state.md +14 -0
  38. package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_check.py +50 -0
  39. package/payload/skills/loom-spec-review/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +19 -4
  40. package/payload/skills/loom-spec-review/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md +110 -0
  41. package/payload/skills/loom-spec-review/.loom-runtime/shared/references/harness/runtime-state.md +14 -0
  42. package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py +50 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mc-and-his-agents/loom-installer",
3
- "version": "0.1.27",
3
+ "version": "0.1.28",
4
4
  "description": "Node installer for Loom plugin and single-skill installation surfaces.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -2,9 +2,9 @@
2
2
  "schema_version": "loom-installer-payload/v1",
3
3
  "loom_version": "0.4.0",
4
4
  "source_repository": "https://github.com/MC-and-his-Agents/Loom",
5
- "source_commit": "72c484aa09e0c62361ba56aeeec319851468d5e8",
5
+ "source_commit": "da62e14fb59e95ab0c8b862d4d39f884d8c44ac7",
6
6
  "source_ref": "main",
7
- "built_at": "2026-04-27T00:39:19+08:00",
7
+ "built_at": "2026-04-27T00:52:37+08:00",
8
8
  "runtime": {
9
9
  "python_minimum": "3.10",
10
10
  "python_recommended": "3.11+"
@@ -408,8 +408,13 @@
408
408
  },
409
409
  {
410
410
  "path": "plugin/loom/skills/shared/references/adoption/deep-existing-repo-default.md",
411
- "bytes": 2450,
412
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
411
+ "bytes": 3365,
412
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
413
+ },
414
+ {
415
+ "path": "plugin/loom/skills/shared/references/adoption/external-runtime-companion-contract.md",
416
+ "bytes": 3860,
417
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
413
418
  },
414
419
  {
415
420
  "path": "plugin/loom/skills/shared/references/adoption/github-profile-upgrade.md",
@@ -563,8 +568,8 @@
563
568
  },
564
569
  {
565
570
  "path": "plugin/loom/skills/shared/references/harness/runtime-state.md",
566
- "bytes": 2508,
567
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
571
+ "bytes": 3416,
572
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
568
573
  },
569
574
  {
570
575
  "path": "plugin/loom/skills/shared/references/harness/status-surface-contract.md",
@@ -628,8 +633,8 @@
628
633
  },
629
634
  {
630
635
  "path": "plugin/loom/skills/shared/scripts/loom_check.py",
631
- "bytes": 296087,
632
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
636
+ "bytes": 297968,
637
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
633
638
  },
634
639
  {
635
640
  "path": "plugin/loom/skills/shared/scripts/loom_flow.py",
@@ -993,8 +998,13 @@
993
998
  },
994
999
  {
995
1000
  "path": "skills/loom-adopt/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md",
996
- "bytes": 2450,
997
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
1001
+ "bytes": 3365,
1002
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
1003
+ },
1004
+ {
1005
+ "path": "skills/loom-adopt/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md",
1006
+ "bytes": 3860,
1007
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
998
1008
  },
999
1009
  {
1000
1010
  "path": "skills/loom-adopt/.loom-runtime/shared/references/adoption/github-profile-upgrade.md",
@@ -1148,8 +1158,8 @@
1148
1158
  },
1149
1159
  {
1150
1160
  "path": "skills/loom-adopt/.loom-runtime/shared/references/harness/runtime-state.md",
1151
- "bytes": 2508,
1152
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
1161
+ "bytes": 3416,
1162
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
1153
1163
  },
1154
1164
  {
1155
1165
  "path": "skills/loom-adopt/.loom-runtime/shared/references/harness/status-surface-contract.md",
@@ -1213,8 +1223,8 @@
1213
1223
  },
1214
1224
  {
1215
1225
  "path": "skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py",
1216
- "bytes": 296087,
1217
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
1226
+ "bytes": 297968,
1227
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
1218
1228
  },
1219
1229
  {
1220
1230
  "path": "skills/loom-adopt/.loom-runtime/shared/scripts/loom_flow.py",
@@ -1608,8 +1618,13 @@
1608
1618
  },
1609
1619
  {
1610
1620
  "path": "skills/loom-handoff/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md",
1611
- "bytes": 2450,
1612
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
1621
+ "bytes": 3365,
1622
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
1623
+ },
1624
+ {
1625
+ "path": "skills/loom-handoff/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md",
1626
+ "bytes": 3860,
1627
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
1613
1628
  },
1614
1629
  {
1615
1630
  "path": "skills/loom-handoff/.loom-runtime/shared/references/adoption/github-profile-upgrade.md",
@@ -1763,8 +1778,8 @@
1763
1778
  },
1764
1779
  {
1765
1780
  "path": "skills/loom-handoff/.loom-runtime/shared/references/harness/runtime-state.md",
1766
- "bytes": 2508,
1767
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
1781
+ "bytes": 3416,
1782
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
1768
1783
  },
1769
1784
  {
1770
1785
  "path": "skills/loom-handoff/.loom-runtime/shared/references/harness/status-surface-contract.md",
@@ -1828,8 +1843,8 @@
1828
1843
  },
1829
1844
  {
1830
1845
  "path": "skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py",
1831
- "bytes": 296087,
1832
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
1846
+ "bytes": 297968,
1847
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
1833
1848
  },
1834
1849
  {
1835
1850
  "path": "skills/loom-handoff/.loom-runtime/shared/scripts/loom_flow.py",
@@ -2223,8 +2238,13 @@
2223
2238
  },
2224
2239
  {
2225
2240
  "path": "skills/loom-init/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md",
2226
- "bytes": 2450,
2227
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
2241
+ "bytes": 3365,
2242
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
2243
+ },
2244
+ {
2245
+ "path": "skills/loom-init/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md",
2246
+ "bytes": 3860,
2247
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
2228
2248
  },
2229
2249
  {
2230
2250
  "path": "skills/loom-init/.loom-runtime/shared/references/adoption/github-profile-upgrade.md",
@@ -2378,8 +2398,8 @@
2378
2398
  },
2379
2399
  {
2380
2400
  "path": "skills/loom-init/.loom-runtime/shared/references/harness/runtime-state.md",
2381
- "bytes": 2508,
2382
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
2401
+ "bytes": 3416,
2402
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
2383
2403
  },
2384
2404
  {
2385
2405
  "path": "skills/loom-init/.loom-runtime/shared/references/harness/status-surface-contract.md",
@@ -2443,8 +2463,8 @@
2443
2463
  },
2444
2464
  {
2445
2465
  "path": "skills/loom-init/.loom-runtime/shared/scripts/loom_check.py",
2446
- "bytes": 296087,
2447
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
2466
+ "bytes": 297968,
2467
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
2448
2468
  },
2449
2469
  {
2450
2470
  "path": "skills/loom-init/.loom-runtime/shared/scripts/loom_flow.py",
@@ -2843,8 +2863,13 @@
2843
2863
  },
2844
2864
  {
2845
2865
  "path": "skills/loom-merge-ready/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md",
2846
- "bytes": 2450,
2847
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
2866
+ "bytes": 3365,
2867
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
2868
+ },
2869
+ {
2870
+ "path": "skills/loom-merge-ready/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md",
2871
+ "bytes": 3860,
2872
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
2848
2873
  },
2849
2874
  {
2850
2875
  "path": "skills/loom-merge-ready/.loom-runtime/shared/references/adoption/github-profile-upgrade.md",
@@ -2998,8 +3023,8 @@
2998
3023
  },
2999
3024
  {
3000
3025
  "path": "skills/loom-merge-ready/.loom-runtime/shared/references/harness/runtime-state.md",
3001
- "bytes": 2508,
3002
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
3026
+ "bytes": 3416,
3027
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
3003
3028
  },
3004
3029
  {
3005
3030
  "path": "skills/loom-merge-ready/.loom-runtime/shared/references/harness/status-surface-contract.md",
@@ -3063,8 +3088,8 @@
3063
3088
  },
3064
3089
  {
3065
3090
  "path": "skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py",
3066
- "bytes": 296087,
3067
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
3091
+ "bytes": 297968,
3092
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
3068
3093
  },
3069
3094
  {
3070
3095
  "path": "skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_flow.py",
@@ -3458,8 +3483,13 @@
3458
3483
  },
3459
3484
  {
3460
3485
  "path": "skills/loom-pre-review/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md",
3461
- "bytes": 2450,
3462
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
3486
+ "bytes": 3365,
3487
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
3488
+ },
3489
+ {
3490
+ "path": "skills/loom-pre-review/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md",
3491
+ "bytes": 3860,
3492
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
3463
3493
  },
3464
3494
  {
3465
3495
  "path": "skills/loom-pre-review/.loom-runtime/shared/references/adoption/github-profile-upgrade.md",
@@ -3613,8 +3643,8 @@
3613
3643
  },
3614
3644
  {
3615
3645
  "path": "skills/loom-pre-review/.loom-runtime/shared/references/harness/runtime-state.md",
3616
- "bytes": 2508,
3617
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
3646
+ "bytes": 3416,
3647
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
3618
3648
  },
3619
3649
  {
3620
3650
  "path": "skills/loom-pre-review/.loom-runtime/shared/references/harness/status-surface-contract.md",
@@ -3678,8 +3708,8 @@
3678
3708
  },
3679
3709
  {
3680
3710
  "path": "skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py",
3681
- "bytes": 296087,
3682
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
3711
+ "bytes": 297968,
3712
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
3683
3713
  },
3684
3714
  {
3685
3715
  "path": "skills/loom-pre-review/.loom-runtime/shared/scripts/loom_flow.py",
@@ -4073,8 +4103,13 @@
4073
4103
  },
4074
4104
  {
4075
4105
  "path": "skills/loom-resume/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md",
4076
- "bytes": 2450,
4077
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
4106
+ "bytes": 3365,
4107
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
4108
+ },
4109
+ {
4110
+ "path": "skills/loom-resume/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md",
4111
+ "bytes": 3860,
4112
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
4078
4113
  },
4079
4114
  {
4080
4115
  "path": "skills/loom-resume/.loom-runtime/shared/references/adoption/github-profile-upgrade.md",
@@ -4228,8 +4263,8 @@
4228
4263
  },
4229
4264
  {
4230
4265
  "path": "skills/loom-resume/.loom-runtime/shared/references/harness/runtime-state.md",
4231
- "bytes": 2508,
4232
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
4266
+ "bytes": 3416,
4267
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
4233
4268
  },
4234
4269
  {
4235
4270
  "path": "skills/loom-resume/.loom-runtime/shared/references/harness/status-surface-contract.md",
@@ -4293,8 +4328,8 @@
4293
4328
  },
4294
4329
  {
4295
4330
  "path": "skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py",
4296
- "bytes": 296087,
4297
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
4331
+ "bytes": 297968,
4332
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
4298
4333
  },
4299
4334
  {
4300
4335
  "path": "skills/loom-resume/.loom-runtime/shared/scripts/loom_flow.py",
@@ -4688,8 +4723,13 @@
4688
4723
  },
4689
4724
  {
4690
4725
  "path": "skills/loom-retire/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md",
4691
- "bytes": 2450,
4692
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
4726
+ "bytes": 3365,
4727
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
4728
+ },
4729
+ {
4730
+ "path": "skills/loom-retire/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md",
4731
+ "bytes": 3860,
4732
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
4693
4733
  },
4694
4734
  {
4695
4735
  "path": "skills/loom-retire/.loom-runtime/shared/references/adoption/github-profile-upgrade.md",
@@ -4843,8 +4883,8 @@
4843
4883
  },
4844
4884
  {
4845
4885
  "path": "skills/loom-retire/.loom-runtime/shared/references/harness/runtime-state.md",
4846
- "bytes": 2508,
4847
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
4886
+ "bytes": 3416,
4887
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
4848
4888
  },
4849
4889
  {
4850
4890
  "path": "skills/loom-retire/.loom-runtime/shared/references/harness/status-surface-contract.md",
@@ -4908,8 +4948,8 @@
4908
4948
  },
4909
4949
  {
4910
4950
  "path": "skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py",
4911
- "bytes": 296087,
4912
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
4951
+ "bytes": 297968,
4952
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
4913
4953
  },
4914
4954
  {
4915
4955
  "path": "skills/loom-retire/.loom-runtime/shared/scripts/loom_flow.py",
@@ -5303,8 +5343,13 @@
5303
5343
  },
5304
5344
  {
5305
5345
  "path": "skills/loom-review/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md",
5306
- "bytes": 2450,
5307
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
5346
+ "bytes": 3365,
5347
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
5348
+ },
5349
+ {
5350
+ "path": "skills/loom-review/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md",
5351
+ "bytes": 3860,
5352
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
5308
5353
  },
5309
5354
  {
5310
5355
  "path": "skills/loom-review/.loom-runtime/shared/references/adoption/github-profile-upgrade.md",
@@ -5458,8 +5503,8 @@
5458
5503
  },
5459
5504
  {
5460
5505
  "path": "skills/loom-review/.loom-runtime/shared/references/harness/runtime-state.md",
5461
- "bytes": 2508,
5462
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
5506
+ "bytes": 3416,
5507
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
5463
5508
  },
5464
5509
  {
5465
5510
  "path": "skills/loom-review/.loom-runtime/shared/references/harness/status-surface-contract.md",
@@ -5523,8 +5568,8 @@
5523
5568
  },
5524
5569
  {
5525
5570
  "path": "skills/loom-review/.loom-runtime/shared/scripts/loom_check.py",
5526
- "bytes": 296087,
5527
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
5571
+ "bytes": 297968,
5572
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
5528
5573
  },
5529
5574
  {
5530
5575
  "path": "skills/loom-review/.loom-runtime/shared/scripts/loom_flow.py",
@@ -5918,8 +5963,13 @@
5918
5963
  },
5919
5964
  {
5920
5965
  "path": "skills/loom-spec-review/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md",
5921
- "bytes": 2450,
5922
- "sha256": "0dc20308064a08a96e4f51b028967b43d3fcf93232f10b0b2d486ff13edcaf35"
5966
+ "bytes": 3365,
5967
+ "sha256": "a1a9f4e9d97db6a0b0e0b6f8c097b64b6e5122e35a08b1759fa343ffca667a0c"
5968
+ },
5969
+ {
5970
+ "path": "skills/loom-spec-review/.loom-runtime/shared/references/adoption/external-runtime-companion-contract.md",
5971
+ "bytes": 3860,
5972
+ "sha256": "814773c73c875472b6c5dc5e078268f5266bec105e14ca4bb94da9a55db978ac"
5923
5973
  },
5924
5974
  {
5925
5975
  "path": "skills/loom-spec-review/.loom-runtime/shared/references/adoption/github-profile-upgrade.md",
@@ -6073,8 +6123,8 @@
6073
6123
  },
6074
6124
  {
6075
6125
  "path": "skills/loom-spec-review/.loom-runtime/shared/references/harness/runtime-state.md",
6076
- "bytes": 2508,
6077
- "sha256": "a28c960a9be6cbf77c6276204d96e83dff99b334dfcedbda31068ea8876fc3f3"
6126
+ "bytes": 3416,
6127
+ "sha256": "b53b5ce340f54dd25f15d68f5a637d8ea55ca8420d843031b3ed61cd1be43593"
6078
6128
  },
6079
6129
  {
6080
6130
  "path": "skills/loom-spec-review/.loom-runtime/shared/references/harness/status-surface-contract.md",
@@ -6138,8 +6188,8 @@
6138
6188
  },
6139
6189
  {
6140
6190
  "path": "skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py",
6141
- "bytes": 296087,
6142
- "sha256": "1acd2461b1150b9d4c328571c849556e1b3b36dd9595254643aa046367b66009"
6191
+ "bytes": 297968,
6192
+ "sha256": "8a5ee386532ac7772563ced89cb644ffb1eb00087d7c77ee1a661de88ce717b3"
6143
6193
  },
6144
6194
  {
6145
6195
  "path": "skills/loom-spec-review/.loom-runtime/shared/scripts/loom_flow.py",
@@ -2,14 +2,14 @@
2
2
 
3
3
  本文件定义 Loom 面向成熟既有治理重仓的默认接入策略。
4
4
 
5
- 它不替代 `lightweight-retrofit-default`,而是作为 `complex-existing` 下的保守 attach path,服务已经拥有稳定根规则、统一验证入口与沉重 repo-specific gates 的仓库。
5
+ 它不替代 [lightweight-retrofit-default.md](./lightweight-retrofit-default.md),而是作为 `complex-existing` 下的保守 attach path,服务已经拥有稳定根规则、统一验证入口与沉重 repo-specific gates 的仓库。
6
6
 
7
7
  ## 1. 适用场景
8
8
 
9
9
  当目标仓库同时满足以下条件时,默认采用本策略:
10
10
 
11
- - 属于既有仓库,且 `loom-init` 判断仍为 `复杂既有仓库`
12
- - 已有清晰的根级边界文档
11
+ - 属于既有仓库,且 `loom-init` 判断仍为 `complex-existing`
12
+ - 已有清晰的根级边界文档,例如 `AGENTS.md`、`WORKFLOW.md` 或等价根规则
13
13
  - 已有统一的仓库级验证入口
14
14
  - 已出现 `merge_review_semantic_overload`
15
15
  - 当前复杂度主要来自 review / guardian 负载、repo-specific gates、retained host actions 或 repo-native carriers,而不是 Loom 缺少 recovery/status carriers
@@ -44,6 +44,8 @@
44
44
  - 保留 repo-native carriers
45
45
  - 只追加 Loom-owned attach metadata 与 companion 入口
46
46
 
47
+ 换句话说,Loom 这一步接管的是入口与读面,不是宿主动作底层实现。
48
+
47
49
  ## 5. 默认不装配
48
50
 
49
51
  第一轮默认不装配:
@@ -60,5 +62,18 @@
60
62
 
61
63
  - 当前仓库需要 Loom-owned recovery carrier 承接多轮执行停点
62
64
  - repo-native carriers 无法稳定承接 recovery / review / closeout 真相
63
- - companion 之外还需要 Loom-owned `status control plane` 承接统一读面
65
+ - companion 之外还需要 Loom-owned status surface 承接统一读面
64
66
  - repo-local attach 入口已经稳定,但下一轮需要 typed machine contract、interop 或 shadow parity
67
+
68
+ ## 7. Attach-only 之后的 external runtime 路径
69
+
70
+ 成熟既有仓库第一轮可以继续提交 vendored `.loom/bin`,因为它提供可审计 runtime provenance。
71
+
72
+ 只有在以下条件满足后,才应考虑 de-vendor:
73
+
74
+ - `.loom/companion` 与 `interop.json` 已稳定
75
+ - `runtime-state`、`governance-profile status`、`runtime-parity validate`、`shadow-parity` 都能读取同一治理载体
76
+ - external runtime locator 已按 [external-runtime-companion-contract.md](./external-runtime-companion-contract.md) 版本化声明
77
+ - rollback 能回到 vendored `.loom/bin` 或重新 bootstrap
78
+
79
+ de-vendor 不得删除 repo-owned residue,也不得替代 guardian、integration contract、release / sprint 等仓库私有规则。
@@ -0,0 +1,110 @@
1
+ # External Runtime Companion Contract
2
+
3
+ 本文定义从 vendored `.loom/bin` runtime 迁移到 versioned external Loom runtime 的路径。
4
+
5
+ 本轮只冻结合同和迁移纪律,不要求任何 adopted repo 立即 de-vendor。
6
+
7
+ ## 1. 目标
8
+
9
+ external-runtime 的目标是让成熟 adopted repo 最终可以:
10
+
11
+ - 保留 `.loom/companion`、status、work item、review、shadow evidence 等仓内治理载体
12
+ - 停止长期提交 vendored `.loom/bin/*` runtime 文件
13
+ - 通过版本化 Loom runtime locator 执行同一组 Loom 命令
14
+ - 在迁移失败时可回滚到 vendored `.loom/bin` carrier
15
+
16
+ ## 2. 当前默认
17
+
18
+ 当前稳定默认仍是 vendored `.loom/bin` runtime。
19
+
20
+ 原因:
21
+
22
+ - `loom_init verify` 已经要求 `.loom/bin/*` 与 `.loom/bootstrap/manifest.json` 一致
23
+ - manifest 中的 runtime artifact `sha256` 是当前 fail-closed trust boundary
24
+ - Syvert-style strong adoption 仍需要本地可审计 runtime provenance
25
+
26
+ 因此,external-runtime 只是一条显式迁移路径,不是当前默认安装形态。
27
+
28
+ ## 3. Companion 保留面
29
+
30
+ 迁移到 external-runtime 时,以下仓内载体必须保持稳定,不得因为 runtime locator 改变而重写语义:
31
+
32
+ - `.loom/companion/manifest.json`
33
+ - `.loom/companion/repo-interface.json`
34
+ - `.loom/companion/interop.json`
35
+ - `.loom/status/current.md`
36
+ - `.loom/work-items/*`
37
+ - `.loom/progress/*`
38
+ - `.loom/reviews/*`
39
+ - `.loom/shadow/*`
40
+
41
+ 这些文件继续是 repo-local governance carrier。external runtime 只能替换执行入口,不能替代仓内治理真相。
42
+
43
+ ## 4. External runtime locator
44
+
45
+ external-runtime companion 必须显式声明 runtime locator,而不是依赖环境变量猜测。
46
+
47
+ 最小字段:
48
+
49
+ ```json
50
+ {
51
+ "schema_version": "loom-external-runtime/v1",
52
+ "runtime_locator": "loom://github/MC-and-his-Agents/Loom@v1.3",
53
+ "runtime_version": "v1.3",
54
+ "fallback_runtime": ".loom/bin",
55
+ "companion_manifest": ".loom/companion/manifest.json",
56
+ "interop_contract": ".loom/companion/interop.json",
57
+ "rollback_mode": "vendored-runtime"
58
+ }
59
+ ```
60
+
61
+ 稳定约束:
62
+
63
+ - `runtime_locator` 必须是版本化 locator,不能是浮动 `main`
64
+ - `fallback_runtime` 必须指向可恢复的 vendored `.loom/bin` 或明确声明需要 rebootstrap
65
+ - `companion_manifest` 与 `interop_contract` 必须继续指向仓内相对路径
66
+ - external-runtime 不得通过 `LOOM_SOURCE_REPO_ROOT` 覆盖 bootstrapped target runtime 的判定
67
+
68
+ ## 5. Migration sequence
69
+
70
+ 推荐迁移顺序:
71
+
72
+ 1. 保持 vendored `.loom/bin`,先确认 runtime provenance hash 全部通过
73
+ 2. 记录 external runtime locator 与版本
74
+ 3. 在 rehearsal 中运行:
75
+ - `runtime-state`
76
+ - `governance-profile status`
77
+ - `runtime-parity validate`
78
+ - `shadow-parity`
79
+ - `shadow-parity --blocking`,仅限显式 strong profile smoke
80
+ 4. 确认 `.loom/companion`、status、work item、review、shadow evidence 均未因 runtime locator 改变而漂移
81
+ 5. 只在以上检查通过后删除或停止提交 vendored `.loom/bin`
82
+
83
+ ## 6. Rollback
84
+
85
+ 任一条件失败时必须回滚到 vendored runtime 或 rebootstrap:
86
+
87
+ - external runtime locator 不可解析
88
+ - runtime version 与期望不一致
89
+ - `.loom/companion` 或 `interop.json` 不可读
90
+ - shadow evidence source hash 漂移
91
+ - active item、review head binding 或 metadata parsing 出现不一致
92
+
93
+ Rollback 操作必须:
94
+
95
+ - 保留 evidence
96
+ - 恢复 `.loom/bin` 或重新运行 `loom_init bootstrap --write --force --verify`
97
+ - 回到 `advisory` gate rollout mode
98
+ - 重新运行 adversarial adoption checks 后才允许恢复 blocking 消费
99
+
100
+ ## 7. 边界
101
+
102
+ external-runtime 迁移不改变:
103
+
104
+ - repo companion 的 repo-specific residue ownership
105
+ - repo interop 的只读 locator 语义
106
+ - host action ownership
107
+ - review / merge-ready / closeout 的 gate 语义
108
+ - shadow parity 默认 validation-only 的边界
109
+
110
+ 它只改变 Loom runtime 的执行来源。
@@ -101,3 +101,17 @@
101
101
  - 回答仓库 Loom 装配态与治理载体/宿主控制面的落位
102
102
 
103
103
  这三者不得互相伪装成别名。
104
+
105
+ ## 7. Carrier transition invariants
106
+
107
+ 从 vendored `.loom/bin` runtime 迁移到 external runtime 时,`runtime-state` 必须保持 fail-closed:
108
+
109
+ - bootstrapped target runtime 优先由当前入口路径和 `.loom/bootstrap/manifest.json` 判定
110
+ - 外部 `LOOM_SOURCE_REPO_ROOT` 不得抢先改判 bootstrapped target runtime
111
+ - `.loom/bootstrap/manifest.json` 中声明的 `.loom/bin/*` artifact 必须继续有 `sha256`
112
+ - 若 vendored runtime 被删除,external runtime 必须提供 versioned runtime locator 和 rollback path
113
+ - external runtime rehearsal 不得改写 `.loom/companion`、status、work item、review 或 shadow evidence 的 truth
114
+
115
+ 当前默认 carrier 仍是 vendored `.loom/bin`。external runtime 只能作为显式迁移目标,不能通过环境变量隐式启用。
116
+
117
+ 迁移合同见 [external-runtime-companion-contract.md](../adoption/external-runtime-companion-contract.md)。
@@ -98,6 +98,7 @@ CORE_DOCS = (
98
98
  "docs/evidence/validations/validation-adoption-maturity-required-fields.md",
99
99
  "docs/evidence/validations/validation-skills-consume-maturity-upgrade-path.md",
100
100
  "docs/evidence/validations/validation-adoption-gate-rollout.md",
101
+ "docs/evidence/validations/validation-external-runtime-devendor-migration.md",
101
102
  "docs/evidence/validations/validation-github-profile-binding-orchestration.md",
102
103
  "docs/evidence/validations/validation-github-profile-drift-reconciliation.md",
103
104
  "docs/evidence/validations/validation-github-profile-graphql-budget-guard.md",
@@ -111,6 +112,7 @@ CORE_DOCS = (
111
112
  "docs/adoption/routing-and-checkpoints.md",
112
113
  "docs/adoption/github-profile.md",
113
114
  "docs/adoption/github-profile-upgrade.md",
115
+ "docs/adoption/external-runtime-companion-contract.md",
114
116
  "docs/adoption/lightweight-retrofit-default.md",
115
117
  "docs/adoption/repo-companion-contract.md",
116
118
  "docs/adoption/repo-interop-contract.md",
@@ -6028,6 +6030,53 @@ def check_repo_interop_contracts(root: Path) -> list[Failure]:
6028
6030
  return failures
6029
6031
 
6030
6032
 
6033
+ def check_external_runtime_devendor_contract(root: Path) -> list[Failure]:
6034
+ failures: list[Failure] = []
6035
+ required_anchors = {
6036
+ "docs/adoption/external-runtime-companion-contract.md": [
6037
+ "vendored `.loom/bin`",
6038
+ "runtime_locator",
6039
+ "versioned external Loom runtime",
6040
+ "rollback",
6041
+ ".loom/companion/interop.json",
6042
+ ],
6043
+ "docs/adoption/repo-interop-contract.md": [
6044
+ "external-runtime",
6045
+ "de-vendor",
6046
+ "runtime locator",
6047
+ "interop",
6048
+ ],
6049
+ "docs/adoption/repo-companion-contract.md": [
6050
+ "external-runtime",
6051
+ "runtime locator",
6052
+ "repo-interface.json",
6053
+ ],
6054
+ "skills/shared/references/harness/runtime-state.md": [
6055
+ "Carrier transition invariants",
6056
+ "LOOM_SOURCE_REPO_ROOT",
6057
+ "external runtime",
6058
+ "vendored `.loom/bin`",
6059
+ ],
6060
+ "docs/evidence/validations/validation-external-runtime-devendor-migration.md": [
6061
+ "external-runtime",
6062
+ "de-vendor",
6063
+ "rollback",
6064
+ "advisory",
6065
+ ],
6066
+ }
6067
+ for relative, anchors in required_anchors.items():
6068
+ path = root / relative
6069
+ try:
6070
+ text = path.read_text(encoding="utf-8")
6071
+ except OSError as exc:
6072
+ failures.append(Failure("external-runtime-devendor", f"`{relative}` is unreadable: {exc}"))
6073
+ continue
6074
+ for anchor in anchors:
6075
+ if anchor not in text:
6076
+ failures.append(Failure("external-runtime-devendor", f"`{relative}` must mention `{anchor}`"))
6077
+ return failures
6078
+
6079
+
6031
6080
  def check_node_installer(root: Path) -> list[Failure]:
6032
6081
  category = "node-installer"
6033
6082
  failures: list[Failure] = []
@@ -6139,6 +6188,7 @@ def collect_failures(root: Path) -> list[Failure]:
6139
6188
  failures.extend(check_daily_execution_cli(root))
6140
6189
  failures.extend(check_repo_companion_interface_contracts(root))
6141
6190
  failures.extend(check_repo_interop_contracts(root))
6191
+ failures.extend(check_external_runtime_devendor_contract(root))
6142
6192
  failures.extend(check_node_installer(root))
6143
6193
  failures.extend(check_generated_artifacts_untracked(root))
6144
6194
  failures.extend(check_github_cli_budget(root))