@mc-and-his-agents/loom-installer 0.1.71 → 0.1.72

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 (40) hide show
  1. package/package.json +1 -1
  2. package/payload/manifest.json +79 -79
  3. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py +37 -1
  4. package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_init.py +65 -2
  5. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py +37 -1
  6. package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_init.py +65 -2
  7. package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_check.py +37 -1
  8. package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_init.py +65 -2
  9. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py +37 -1
  10. package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_init.py +65 -2
  11. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py +37 -1
  12. package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_init.py +65 -2
  13. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py +37 -1
  14. package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_init.py +65 -2
  15. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py +37 -1
  16. package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_init.py +65 -2
  17. package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_check.py +37 -1
  18. package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_init.py +65 -2
  19. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py +37 -1
  20. package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_init.py +65 -2
  21. package/payload/plugin/loom/skills/shared/scripts/loom_check.py +37 -1
  22. package/payload/plugin/loom/skills/shared/scripts/loom_init.py +65 -2
  23. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py +37 -1
  24. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_init.py +65 -2
  25. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py +37 -1
  26. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_init.py +65 -2
  27. package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_check.py +37 -1
  28. package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_init.py +65 -2
  29. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py +37 -1
  30. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_init.py +65 -2
  31. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py +37 -1
  32. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_init.py +65 -2
  33. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py +37 -1
  34. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_init.py +65 -2
  35. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py +37 -1
  36. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_init.py +65 -2
  37. package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_check.py +37 -1
  38. package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_init.py +65 -2
  39. package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py +37 -1
  40. package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_init.py +65 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mc-and-his-agents/loom-installer",
3
- "version": "0.1.71",
3
+ "version": "0.1.72",
4
4
  "description": "Node installer for Loom plugin and single-skill installation surfaces.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -2,12 +2,12 @@
2
2
  "schema_version": "loom-installer-payload/v1",
3
3
  "loom_version": "v0.6.0",
4
4
  "source_repository": "https://github.com/MC-and-his-Agents/Loom",
5
- "source_commit": "d89c44d1dcb47ec424f46a2c8ecc0c42c68028b3",
5
+ "source_commit": "10241ba5086e5ae78cbadae7873e0ccdbd33698c",
6
6
  "source_ref": "main",
7
- "built_at": "2026-05-08T15:14:19+08:00",
7
+ "built_at": "2026-05-08T18:11:37+08:00",
8
8
  "version_context": {
9
9
  "repo_version": "v0.6.0",
10
- "installer_package_version": "0.1.71",
10
+ "installer_package_version": "0.1.72",
11
11
  "plugin_surface_version": "0.4.0",
12
12
  "host_adapter_version": "1.0.0",
13
13
  "skills_registry_version": "1.4.0",
@@ -742,8 +742,8 @@
742
742
  },
743
743
  {
744
744
  "path": "plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py",
745
- "bytes": 469882,
746
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
745
+ "bytes": 471267,
746
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
747
747
  },
748
748
  {
749
749
  "path": "plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_flow.py",
@@ -752,8 +752,8 @@
752
752
  },
753
753
  {
754
754
  "path": "plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_init.py",
755
- "bytes": 91411,
756
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
755
+ "bytes": 93984,
756
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
757
757
  },
758
758
  {
759
759
  "path": "plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_status.py",
@@ -1412,8 +1412,8 @@
1412
1412
  },
1413
1413
  {
1414
1414
  "path": "plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py",
1415
- "bytes": 469882,
1416
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
1415
+ "bytes": 471267,
1416
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
1417
1417
  },
1418
1418
  {
1419
1419
  "path": "plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_flow.py",
@@ -1422,8 +1422,8 @@
1422
1422
  },
1423
1423
  {
1424
1424
  "path": "plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_init.py",
1425
- "bytes": 91411,
1426
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
1425
+ "bytes": 93984,
1426
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
1427
1427
  },
1428
1428
  {
1429
1429
  "path": "plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_status.py",
@@ -2082,8 +2082,8 @@
2082
2082
  },
2083
2083
  {
2084
2084
  "path": "plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_check.py",
2085
- "bytes": 469882,
2086
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
2085
+ "bytes": 471267,
2086
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
2087
2087
  },
2088
2088
  {
2089
2089
  "path": "plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_flow.py",
@@ -2092,8 +2092,8 @@
2092
2092
  },
2093
2093
  {
2094
2094
  "path": "plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_init.py",
2095
- "bytes": 91411,
2096
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
2095
+ "bytes": 93984,
2096
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
2097
2097
  },
2098
2098
  {
2099
2099
  "path": "plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_status.py",
@@ -2757,8 +2757,8 @@
2757
2757
  },
2758
2758
  {
2759
2759
  "path": "plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py",
2760
- "bytes": 469882,
2761
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
2760
+ "bytes": 471267,
2761
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
2762
2762
  },
2763
2763
  {
2764
2764
  "path": "plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_flow.py",
@@ -2767,8 +2767,8 @@
2767
2767
  },
2768
2768
  {
2769
2769
  "path": "plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_init.py",
2770
- "bytes": 91411,
2771
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
2770
+ "bytes": 93984,
2771
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
2772
2772
  },
2773
2773
  {
2774
2774
  "path": "plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_status.py",
@@ -3427,8 +3427,8 @@
3427
3427
  },
3428
3428
  {
3429
3429
  "path": "plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py",
3430
- "bytes": 469882,
3431
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
3430
+ "bytes": 471267,
3431
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
3432
3432
  },
3433
3433
  {
3434
3434
  "path": "plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_flow.py",
@@ -3437,8 +3437,8 @@
3437
3437
  },
3438
3438
  {
3439
3439
  "path": "plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_init.py",
3440
- "bytes": 91411,
3441
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
3440
+ "bytes": 93984,
3441
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
3442
3442
  },
3443
3443
  {
3444
3444
  "path": "plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_status.py",
@@ -4097,8 +4097,8 @@
4097
4097
  },
4098
4098
  {
4099
4099
  "path": "plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py",
4100
- "bytes": 469882,
4101
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
4100
+ "bytes": 471267,
4101
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
4102
4102
  },
4103
4103
  {
4104
4104
  "path": "plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_flow.py",
@@ -4107,8 +4107,8 @@
4107
4107
  },
4108
4108
  {
4109
4109
  "path": "plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_init.py",
4110
- "bytes": 91411,
4111
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
4110
+ "bytes": 93984,
4111
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
4112
4112
  },
4113
4113
  {
4114
4114
  "path": "plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_status.py",
@@ -4767,8 +4767,8 @@
4767
4767
  },
4768
4768
  {
4769
4769
  "path": "plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py",
4770
- "bytes": 469882,
4771
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
4770
+ "bytes": 471267,
4771
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
4772
4772
  },
4773
4773
  {
4774
4774
  "path": "plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_flow.py",
@@ -4777,8 +4777,8 @@
4777
4777
  },
4778
4778
  {
4779
4779
  "path": "plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_init.py",
4780
- "bytes": 91411,
4781
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
4780
+ "bytes": 93984,
4781
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
4782
4782
  },
4783
4783
  {
4784
4784
  "path": "plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_status.py",
@@ -5437,8 +5437,8 @@
5437
5437
  },
5438
5438
  {
5439
5439
  "path": "plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_check.py",
5440
- "bytes": 469882,
5441
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
5440
+ "bytes": 471267,
5441
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
5442
5442
  },
5443
5443
  {
5444
5444
  "path": "plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_flow.py",
@@ -5447,8 +5447,8 @@
5447
5447
  },
5448
5448
  {
5449
5449
  "path": "plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_init.py",
5450
- "bytes": 91411,
5451
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
5450
+ "bytes": 93984,
5451
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
5452
5452
  },
5453
5453
  {
5454
5454
  "path": "plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_status.py",
@@ -6107,8 +6107,8 @@
6107
6107
  },
6108
6108
  {
6109
6109
  "path": "plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py",
6110
- "bytes": 469882,
6111
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
6110
+ "bytes": 471267,
6111
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
6112
6112
  },
6113
6113
  {
6114
6114
  "path": "plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_flow.py",
@@ -6117,8 +6117,8 @@
6117
6117
  },
6118
6118
  {
6119
6119
  "path": "plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_init.py",
6120
- "bytes": 91411,
6121
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
6120
+ "bytes": 93984,
6121
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
6122
6122
  },
6123
6123
  {
6124
6124
  "path": "plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_status.py",
@@ -6492,8 +6492,8 @@
6492
6492
  },
6493
6493
  {
6494
6494
  "path": "plugin/loom/skills/shared/scripts/loom_check.py",
6495
- "bytes": 469882,
6496
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
6495
+ "bytes": 471267,
6496
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
6497
6497
  },
6498
6498
  {
6499
6499
  "path": "plugin/loom/skills/shared/scripts/loom_flow.py",
@@ -6502,8 +6502,8 @@
6502
6502
  },
6503
6503
  {
6504
6504
  "path": "plugin/loom/skills/shared/scripts/loom_init.py",
6505
- "bytes": 91411,
6506
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
6505
+ "bytes": 93984,
6506
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
6507
6507
  },
6508
6508
  {
6509
6509
  "path": "plugin/loom/skills/shared/scripts/loom_status.py",
@@ -7127,8 +7127,8 @@
7127
7127
  },
7128
7128
  {
7129
7129
  "path": "skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py",
7130
- "bytes": 469882,
7131
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
7130
+ "bytes": 471267,
7131
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
7132
7132
  },
7133
7133
  {
7134
7134
  "path": "skills/loom-adopt/.loom-runtime/shared/scripts/loom_flow.py",
@@ -7137,8 +7137,8 @@
7137
7137
  },
7138
7138
  {
7139
7139
  "path": "skills/loom-adopt/.loom-runtime/shared/scripts/loom_init.py",
7140
- "bytes": 91411,
7141
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
7140
+ "bytes": 93984,
7141
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
7142
7142
  },
7143
7143
  {
7144
7144
  "path": "skills/loom-adopt/.loom-runtime/shared/scripts/loom_status.py",
@@ -7797,8 +7797,8 @@
7797
7797
  },
7798
7798
  {
7799
7799
  "path": "skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py",
7800
- "bytes": 469882,
7801
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
7800
+ "bytes": 471267,
7801
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
7802
7802
  },
7803
7803
  {
7804
7804
  "path": "skills/loom-handoff/.loom-runtime/shared/scripts/loom_flow.py",
@@ -7807,8 +7807,8 @@
7807
7807
  },
7808
7808
  {
7809
7809
  "path": "skills/loom-handoff/.loom-runtime/shared/scripts/loom_init.py",
7810
- "bytes": 91411,
7811
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
7810
+ "bytes": 93984,
7811
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
7812
7812
  },
7813
7813
  {
7814
7814
  "path": "skills/loom-handoff/.loom-runtime/shared/scripts/loom_status.py",
@@ -8467,8 +8467,8 @@
8467
8467
  },
8468
8468
  {
8469
8469
  "path": "skills/loom-init/.loom-runtime/shared/scripts/loom_check.py",
8470
- "bytes": 469882,
8471
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
8470
+ "bytes": 471267,
8471
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
8472
8472
  },
8473
8473
  {
8474
8474
  "path": "skills/loom-init/.loom-runtime/shared/scripts/loom_flow.py",
@@ -8477,8 +8477,8 @@
8477
8477
  },
8478
8478
  {
8479
8479
  "path": "skills/loom-init/.loom-runtime/shared/scripts/loom_init.py",
8480
- "bytes": 91411,
8481
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
8480
+ "bytes": 93984,
8481
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
8482
8482
  },
8483
8483
  {
8484
8484
  "path": "skills/loom-init/.loom-runtime/shared/scripts/loom_status.py",
@@ -9142,8 +9142,8 @@
9142
9142
  },
9143
9143
  {
9144
9144
  "path": "skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py",
9145
- "bytes": 469882,
9146
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
9145
+ "bytes": 471267,
9146
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
9147
9147
  },
9148
9148
  {
9149
9149
  "path": "skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_flow.py",
@@ -9152,8 +9152,8 @@
9152
9152
  },
9153
9153
  {
9154
9154
  "path": "skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_init.py",
9155
- "bytes": 91411,
9156
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
9155
+ "bytes": 93984,
9156
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
9157
9157
  },
9158
9158
  {
9159
9159
  "path": "skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_status.py",
@@ -9812,8 +9812,8 @@
9812
9812
  },
9813
9813
  {
9814
9814
  "path": "skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py",
9815
- "bytes": 469882,
9816
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
9815
+ "bytes": 471267,
9816
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
9817
9817
  },
9818
9818
  {
9819
9819
  "path": "skills/loom-pre-review/.loom-runtime/shared/scripts/loom_flow.py",
@@ -9822,8 +9822,8 @@
9822
9822
  },
9823
9823
  {
9824
9824
  "path": "skills/loom-pre-review/.loom-runtime/shared/scripts/loom_init.py",
9825
- "bytes": 91411,
9826
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
9825
+ "bytes": 93984,
9826
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
9827
9827
  },
9828
9828
  {
9829
9829
  "path": "skills/loom-pre-review/.loom-runtime/shared/scripts/loom_status.py",
@@ -10482,8 +10482,8 @@
10482
10482
  },
10483
10483
  {
10484
10484
  "path": "skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py",
10485
- "bytes": 469882,
10486
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
10485
+ "bytes": 471267,
10486
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
10487
10487
  },
10488
10488
  {
10489
10489
  "path": "skills/loom-resume/.loom-runtime/shared/scripts/loom_flow.py",
@@ -10492,8 +10492,8 @@
10492
10492
  },
10493
10493
  {
10494
10494
  "path": "skills/loom-resume/.loom-runtime/shared/scripts/loom_init.py",
10495
- "bytes": 91411,
10496
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
10495
+ "bytes": 93984,
10496
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
10497
10497
  },
10498
10498
  {
10499
10499
  "path": "skills/loom-resume/.loom-runtime/shared/scripts/loom_status.py",
@@ -11152,8 +11152,8 @@
11152
11152
  },
11153
11153
  {
11154
11154
  "path": "skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py",
11155
- "bytes": 469882,
11156
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
11155
+ "bytes": 471267,
11156
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
11157
11157
  },
11158
11158
  {
11159
11159
  "path": "skills/loom-retire/.loom-runtime/shared/scripts/loom_flow.py",
@@ -11162,8 +11162,8 @@
11162
11162
  },
11163
11163
  {
11164
11164
  "path": "skills/loom-retire/.loom-runtime/shared/scripts/loom_init.py",
11165
- "bytes": 91411,
11166
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
11165
+ "bytes": 93984,
11166
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
11167
11167
  },
11168
11168
  {
11169
11169
  "path": "skills/loom-retire/.loom-runtime/shared/scripts/loom_status.py",
@@ -11822,8 +11822,8 @@
11822
11822
  },
11823
11823
  {
11824
11824
  "path": "skills/loom-review/.loom-runtime/shared/scripts/loom_check.py",
11825
- "bytes": 469882,
11826
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
11825
+ "bytes": 471267,
11826
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
11827
11827
  },
11828
11828
  {
11829
11829
  "path": "skills/loom-review/.loom-runtime/shared/scripts/loom_flow.py",
@@ -11832,8 +11832,8 @@
11832
11832
  },
11833
11833
  {
11834
11834
  "path": "skills/loom-review/.loom-runtime/shared/scripts/loom_init.py",
11835
- "bytes": 91411,
11836
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
11835
+ "bytes": 93984,
11836
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
11837
11837
  },
11838
11838
  {
11839
11839
  "path": "skills/loom-review/.loom-runtime/shared/scripts/loom_status.py",
@@ -12492,8 +12492,8 @@
12492
12492
  },
12493
12493
  {
12494
12494
  "path": "skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py",
12495
- "bytes": 469882,
12496
- "sha256": "47fe871caf9f276cc609d2205a512731e905f9f253969e96d2ea434aec477658"
12495
+ "bytes": 471267,
12496
+ "sha256": "fa960c0dca7125c552c6a2d398314d0b754295b3047acf6e3dfad373f29a4f32"
12497
12497
  },
12498
12498
  {
12499
12499
  "path": "skills/loom-spec-review/.loom-runtime/shared/scripts/loom_flow.py",
@@ -12502,8 +12502,8 @@
12502
12502
  },
12503
12503
  {
12504
12504
  "path": "skills/loom-spec-review/.loom-runtime/shared/scripts/loom_init.py",
12505
- "bytes": 91411,
12506
- "sha256": "21e3da23e82efdcbc81bff7d9bd7110d5579d8d87fffc9b4cd8e2c6adbb2e78d"
12505
+ "bytes": 93984,
12506
+ "sha256": "842a6420a5e44e6190c952fce5dc2bab0c55e8a834cfe2d3680eafb84db0106d"
12507
12507
  },
12508
12508
  {
12509
12509
  "path": "skills/loom-spec-review/.loom-runtime/shared/scripts/loom_status.py",
@@ -448,6 +448,34 @@ def load_text_file(path: Path) -> str:
448
448
  return path.read_text(encoding="utf-8")
449
449
 
450
450
 
451
+ def prune_fixture_work_items(target: Path, keep_item: str = "INIT-0001") -> None:
452
+ """Keep copied self-check fixtures independent from this repo's active Work Items."""
453
+ for directory in (
454
+ target / ".loom/work-items",
455
+ target / ".loom/progress",
456
+ target / ".loom/reviews",
457
+ ):
458
+ if not directory.exists():
459
+ continue
460
+ for path in directory.glob("*"):
461
+ if path.stem == keep_item or path.stem.startswith(f"{keep_item}."):
462
+ continue
463
+ if path.is_dir():
464
+ shutil.rmtree(path)
465
+ else:
466
+ path.unlink()
467
+
468
+ specs_dir = target / ".loom/specs"
469
+ if specs_dir.exists():
470
+ for path in specs_dir.iterdir():
471
+ if path.name == keep_item:
472
+ continue
473
+ if path.is_dir():
474
+ shutil.rmtree(path)
475
+ else:
476
+ path.unlink()
477
+
478
+
451
479
  def run_command(
452
480
  root: Path,
453
481
  args: list[str],
@@ -2853,6 +2881,12 @@ def check_root_self_adoption_carrier(root: Path) -> list[Failure]:
2853
2881
  carrier_root = root / ".loom"
2854
2882
  if not carrier_root.exists():
2855
2883
  return failures
2884
+ active_item = "INIT-0001"
2885
+ init_result = load_json_file(root / ".loom/bootstrap/init-result.json")
2886
+ if isinstance(init_result, dict):
2887
+ entry_points = init_result.get("fact_chain", {}).get("entry_points")
2888
+ if isinstance(entry_points, dict) and isinstance(entry_points.get("current_item_id"), str):
2889
+ active_item = entry_points["current_item_id"]
2856
2890
 
2857
2891
  required_paths = (
2858
2892
  ".loom/bootstrap/manifest.json",
@@ -2892,7 +2926,7 @@ def check_root_self_adoption_carrier(root: Path) -> list[Failure]:
2892
2926
  ),
2893
2927
  (
2894
2928
  "root adopt verify",
2895
- ["python3", ".loom/bin/loom_flow.py", "adopt", "verify", "--target", ".", "--item", "INIT-0001"],
2929
+ ["python3", ".loom/bin/loom_flow.py", "adopt", "verify", "--target", ".", "--item", active_item],
2896
2930
  "adopt-verify",
2897
2931
  {"result": "pass", "schema_version": "loom-adoption-verify/v1"},
2898
2932
  ),
@@ -4376,6 +4410,7 @@ def check_daily_execution_cli(root: Path) -> list[Failure]:
4376
4410
  if not isinstance(verification, dict) or verification.get("ok") is not True:
4377
4411
  failures.append(Failure("daily-execution-cli", f"`{label}` bootstrap must verify successfully"))
4378
4412
  return False
4413
+ prune_fixture_work_items(target)
4379
4414
  for args in (
4380
4415
  ["git", "add", "."],
4381
4416
  ["git", "add", "-f", ".loom"],
@@ -5309,6 +5344,7 @@ def check_daily_execution_cli(root: Path) -> list[Failure]:
5309
5344
  if not isinstance(verification, dict) or verification.get("ok") is not True:
5310
5345
  errors.append("installed bootstrap must verify successfully before the pre-merge chain starts")
5311
5346
  return None, errors
5347
+ prune_fixture_work_items(target)
5312
5348
 
5313
5349
  git_add = run_command(root, ["git", "add", "."], cwd=target)
5314
5350
  if git_add.returncode != 0:
@@ -163,6 +163,11 @@ def parse_args(argv: list[str]) -> argparse.Namespace:
163
163
  bootstrap.add_argument("--write", action="store_true", help="Write bootstrap artifacts into the target repo")
164
164
  bootstrap.add_argument("--verify", action="store_true", help="Verify written artifacts after scaffolding")
165
165
  bootstrap.add_argument("--force", action="store_true", help="Overwrite Loom-managed artifacts when needed")
166
+ bootstrap.add_argument(
167
+ "--portable-output",
168
+ action="store_true",
169
+ help="Normalize machine-local paths and branch names in written bootstrap metadata",
170
+ )
166
171
  bootstrap.add_argument(
167
172
  "--install-pr-template",
168
173
  action="store_true",
@@ -1060,6 +1065,62 @@ def build_result(target_root: Path, scenario: str, intake: dict[str, object], in
1060
1065
  return result
1061
1066
 
1062
1067
 
1068
+ def git_branch_name(target_root: Path) -> str | None:
1069
+ try:
1070
+ completed = subprocess.run(
1071
+ ["git", "-C", str(target_root), "rev-parse", "--abbrev-ref", "HEAD"],
1072
+ check=False,
1073
+ capture_output=True,
1074
+ text=True,
1075
+ )
1076
+ except OSError:
1077
+ return None
1078
+ branch = completed.stdout.strip()
1079
+ if completed.returncode != 0 or not branch or branch == "HEAD":
1080
+ return None
1081
+ return branch
1082
+
1083
+
1084
+ def portable_bootstrap_value(value: object, replacements: list[tuple[str, str]], current_branch: str | None) -> object:
1085
+ if isinstance(value, dict):
1086
+ return {key: portable_bootstrap_value(child, replacements, current_branch) for key, child in value.items()}
1087
+ if isinstance(value, list):
1088
+ return [portable_bootstrap_value(child, replacements, current_branch) for child in value]
1089
+ if not isinstance(value, str):
1090
+ return value
1091
+ if current_branch and value == current_branch:
1092
+ return "${CURRENT_BRANCH}"
1093
+ portable = value
1094
+ for source, replacement in replacements:
1095
+ portable = portable.replace(source, replacement)
1096
+ return portable
1097
+
1098
+
1099
+ def portable_bootstrap_result(result: dict[str, object], target_root: Path) -> dict[str, object]:
1100
+ replacement_inputs = [
1101
+ (str(target_root.resolve()), "${TARGET_ROOT}"),
1102
+ (os.environ.get("LOOM_SOURCE_REPO_ROOT", ""), "${SOURCE_REPO_ROOT}"),
1103
+ (os.environ.get("LOOM_INSTALLED_SKILLS_ROOT", ""), "${INSTALLED_SKILLS_ROOT}"),
1104
+ ]
1105
+ replacements = sorted(
1106
+ [(source, replacement) for source, replacement in replacement_inputs if source],
1107
+ key=lambda pair: len(pair[0]),
1108
+ reverse=True,
1109
+ )
1110
+ portable = portable_bootstrap_value(result, replacements, git_branch_name(target_root))
1111
+ assert isinstance(portable, dict)
1112
+ portable["portable_output"] = {
1113
+ "enabled": True,
1114
+ "path_placeholders": {
1115
+ "target_root": "${TARGET_ROOT}",
1116
+ "source_repo_root": "${SOURCE_REPO_ROOT}",
1117
+ "installed_skills_root": "${INSTALLED_SKILLS_ROOT}",
1118
+ "current_branch": "${CURRENT_BRANCH}",
1119
+ },
1120
+ }
1121
+ return portable
1122
+
1123
+
1063
1124
  def init_maturity_upgrade_path(governance_surface: dict[str, object]) -> dict[str, object]:
1064
1125
  control_plane = governance_surface.get("governance_control_plane")
1065
1126
  maturity = control_plane.get("maturity") if isinstance(control_plane, dict) else None
@@ -1932,9 +1993,10 @@ def bootstrap(args: argparse.Namespace) -> int:
1932
1993
 
1933
1994
  if args.write:
1934
1995
  try:
1996
+ scaffold_result = portable_bootstrap_result(result, target_root) if args.portable_output else result
1935
1997
  written, touched = scaffold_target(
1936
1998
  target_root=target_root,
1937
- result=result,
1999
+ result=scaffold_result,
1938
2000
  output_path=output_path,
1939
2001
  force=args.force,
1940
2002
  install_pr_template=args.install_pr_template,
@@ -1961,7 +2023,8 @@ def bootstrap(args: argparse.Namespace) -> int:
1961
2023
  else:
1962
2024
  result["write"] = {"enabled": False, "written_files": 0, "touched": []}
1963
2025
 
1964
- print(json.dumps(result, ensure_ascii=False, indent=2))
2026
+ output_result = portable_bootstrap_result(result, target_root) if args.portable_output else result
2027
+ print(json.dumps(output_result, ensure_ascii=False, indent=2))
1965
2028
  return 0
1966
2029
 
1967
2030