@mc-and-his-agents/loom-installer 0.1.113 → 0.1.115
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/package.json +1 -1
- package/payload/manifest.json +421 -421
- package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-adopt/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-build/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-build/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-handoff/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-init/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-init/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-init/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-resume/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-resume/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-resume/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-retire/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-retire/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-retire/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-review/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/loom-story/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/plugin/loom/skills/loom-story/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/loom-story/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/plugin/loom/skills/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/plugin/loom/skills/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/plugin/loom/skills/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/plugin/loom/skills/shared/scripts/governance_surface.py +0 -3
- package/payload/plugin/loom/skills/shared/scripts/loom_check.py +130 -2
- package/payload/plugin/loom/skills/shared/scripts/loom_flow.py +0 -52
- package/payload/plugin/loom/skills/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-adopt/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-adopt/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-build/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-build/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-build/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-build/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-build/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-build/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-build/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-build/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-build/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-handoff/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-handoff/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-init/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-init/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-init/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-merge-ready/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-merge-ready/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-pre-review/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-pre-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-resume/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-resume/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-resume/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-retire/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-retire/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-retire/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-review/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-spec-review/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-spec-review/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-spec-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-spec-review/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-spec-review/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-spec-review/.loom-runtime/shared/scripts/loom_init.py +105 -103
- package/payload/skills/loom-story/.loom-runtime/loom-init/SKILL.md +5 -3
- package/payload/skills/loom-story/.loom-runtime/loom-init/references/intake-signals.md +5 -5
- package/payload/skills/loom-story/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +11 -3
- package/payload/skills/loom-story/.loom-runtime/shared/references/adoption/repo-companion-contract.md +4 -7
- package/payload/skills/loom-story/.loom-runtime/shared/references/adoption/target-repo-version-contract.md +3 -1
- package/payload/skills/loom-story/.loom-runtime/shared/scripts/governance_surface.py +0 -3
- package/payload/skills/loom-story/.loom-runtime/shared/scripts/loom_check.py +130 -2
- package/payload/skills/loom-story/.loom-runtime/shared/scripts/loom_flow.py +0 -52
- package/payload/skills/loom-story/.loom-runtime/shared/scripts/loom_init.py +105 -103
|
@@ -1033,9 +1033,9 @@ def deferred_capabilities(scenario: str, adoption_path: str, profile: str) -> li
|
|
|
1033
1033
|
if profile == "light-governance":
|
|
1034
1034
|
return [
|
|
1035
1035
|
{
|
|
1036
|
-
"name": "loom-owned-work-item-progress-status",
|
|
1037
|
-
"reason": "light-governance keeps first-round adoption to a companion, review
|
|
1038
|
-
"upgrade_trigger": "the repo explicitly opts into execution-control or needs Loom-owned recovery
|
|
1036
|
+
"name": "loom-owned-work-item-progress-status-spec",
|
|
1037
|
+
"reason": "light-governance keeps first-round adoption to a companion, review guidance, and PR-template loop without Loom-owned execution carriers",
|
|
1038
|
+
"upgrade_trigger": "the repo explicitly opts into execution-control or needs Loom-owned work item, recovery, status, or spec carriers",
|
|
1039
1039
|
},
|
|
1040
1040
|
{
|
|
1041
1041
|
"name": "host-gate-merge-closeout-control",
|
|
@@ -1126,13 +1126,6 @@ def profile_common_artifacts() -> list[dict[str, str]]:
|
|
|
1126
1126
|
{"path": ".loom/companion/review.md", "kind": "repo-companion-doc", "source": "generated"},
|
|
1127
1127
|
{"path": ".loom/companion/merge-ready.md", "kind": "repo-companion-doc", "source": "generated"},
|
|
1128
1128
|
{"path": ".loom/companion/closeout.md", "kind": "repo-companion-doc", "source": "generated"},
|
|
1129
|
-
{"path": ".loom/companion/releases/changelog.md", "kind": "repo-release-surface", "source": "generated"},
|
|
1130
|
-
{"path": ".loom/companion/releases/release-notes.md", "kind": "repo-release-surface", "source": "generated"},
|
|
1131
|
-
{"path": ".loom/companion/releases/migration-notes.md", "kind": "repo-release-surface", "source": "generated"},
|
|
1132
|
-
{"path": ".loom/companion/releases/rollback.md", "kind": "repo-release-surface", "source": "generated"},
|
|
1133
|
-
{"path": ".loom/companion/releases/catalog.json", "kind": "repo-release-surface", "source": "generated"},
|
|
1134
|
-
{"path": ".loom/companion/releases/current.json", "kind": "repo-release-surface", "source": "generated"},
|
|
1135
|
-
{"path": ".loom/companion/releases/status.json", "kind": "repo-release-surface", "source": "generated"},
|
|
1136
1129
|
{"path": ".loom/shadow/admission-loom.json", "kind": "shadow-parity-surface", "source": "generated"},
|
|
1137
1130
|
{"path": ".loom/shadow/admission-repo.json", "kind": "shadow-parity-surface", "source": "generated"},
|
|
1138
1131
|
{"path": ".loom/shadow/review-loom.json", "kind": "shadow-parity-surface", "source": "generated"},
|
|
@@ -1162,13 +1155,6 @@ def profile_light_artifacts(target_root: Path) -> list[dict[str, str]]:
|
|
|
1162
1155
|
[
|
|
1163
1156
|
{"path": ".loom/reviews/INIT-0001.json", "kind": "review-entry", "source": "generated"},
|
|
1164
1157
|
{"path": ".loom/reviews/INIT-0001.spec.json", "kind": "review-entry", "source": "generated"},
|
|
1165
|
-
{"path": ".loom/specs/INIT-0001/spec.md", "kind": "spec", "source": "skills/shared/assets/templates/scaffold/spec.md"},
|
|
1166
|
-
{"path": ".loom/specs/INIT-0001/plan.md", "kind": "plan", "source": "skills/shared/assets/templates/scaffold/plan.md"},
|
|
1167
|
-
{
|
|
1168
|
-
"path": ".loom/specs/INIT-0001/implementation-contract.md",
|
|
1169
|
-
"kind": "implementation-contract",
|
|
1170
|
-
"source": "skills/shared/assets/templates/scaffold/implementation-contract.md",
|
|
1171
|
-
},
|
|
1172
1158
|
]
|
|
1173
1159
|
)
|
|
1174
1160
|
return artifacts
|
|
@@ -1181,6 +1167,13 @@ def profile_execution_artifacts(target_root: Path) -> list[dict[str, str]]:
|
|
|
1181
1167
|
{"path": ".loom/work-items/INIT-0001.md", "kind": "work-item", "source": "generated"},
|
|
1182
1168
|
{"path": ".loom/progress/INIT-0001.md", "kind": "progress", "source": "generated"},
|
|
1183
1169
|
{"path": ".loom/status/current.md", "kind": "status-surface", "source": "generated"},
|
|
1170
|
+
{"path": ".loom/specs/INIT-0001/spec.md", "kind": "spec", "source": "skills/shared/assets/templates/scaffold/spec.md"},
|
|
1171
|
+
{"path": ".loom/specs/INIT-0001/plan.md", "kind": "plan", "source": "skills/shared/assets/templates/scaffold/plan.md"},
|
|
1172
|
+
{
|
|
1173
|
+
"path": ".loom/specs/INIT-0001/implementation-contract.md",
|
|
1174
|
+
"kind": "implementation-contract",
|
|
1175
|
+
"source": "skills/shared/assets/templates/scaffold/implementation-contract.md",
|
|
1176
|
+
},
|
|
1184
1177
|
]
|
|
1185
1178
|
)
|
|
1186
1179
|
return artifacts
|
|
@@ -1242,6 +1235,23 @@ def initial_work_items(
|
|
|
1242
1235
|
}
|
|
1243
1236
|
]
|
|
1244
1237
|
artifacts = artifact_paths(initial_artifacts(target_root, install_pr_template, adoption_path, profile))
|
|
1238
|
+
if profile == "light-governance":
|
|
1239
|
+
return [
|
|
1240
|
+
{
|
|
1241
|
+
"id": WORK_ITEM_ID,
|
|
1242
|
+
"goal": "Establish the first lightweight Loom governance loop for this repository",
|
|
1243
|
+
"scope": "Create companion, review guidance, and PR template surfaces without Loom-owned execution carriers",
|
|
1244
|
+
"execution_path": "adoption/light-governance",
|
|
1245
|
+
"workspace_entry": ".",
|
|
1246
|
+
"recovery_entry": "checkpoint-lite issue or PR notes",
|
|
1247
|
+
"review_entry": ".loom/reviews/INIT-0001.json",
|
|
1248
|
+
"validation_entry": "python3 .loom/bin/loom_init.py verify --target .",
|
|
1249
|
+
"artifacts": artifacts,
|
|
1250
|
+
"closing_condition": "The companion entry, review guidance, PR template, and bootstrap metadata are readable without generated work/progress/status/spec carriers",
|
|
1251
|
+
"post_build_continuation": "Upgrade to execution-control only when the repo needs Loom-owned work item, recovery, status, or spec carriers",
|
|
1252
|
+
"owner_for_checkpoint_lite": "repository owner or current lightweight adoption operator",
|
|
1253
|
+
}
|
|
1254
|
+
]
|
|
1245
1255
|
return [
|
|
1246
1256
|
{
|
|
1247
1257
|
"id": WORK_ITEM_ID,
|
|
@@ -1346,13 +1356,6 @@ def planned_write_targets(result: dict[str, object], adoption_path: str) -> list
|
|
|
1346
1356
|
(".loom/companion/review.md", "repo-companion-doc"),
|
|
1347
1357
|
(".loom/companion/merge-ready.md", "repo-companion-doc"),
|
|
1348
1358
|
(".loom/companion/closeout.md", "repo-companion-doc"),
|
|
1349
|
-
(".loom/companion/releases/changelog.md", "repo-release-surface"),
|
|
1350
|
-
(".loom/companion/releases/release-notes.md", "repo-release-surface"),
|
|
1351
|
-
(".loom/companion/releases/migration-notes.md", "repo-release-surface"),
|
|
1352
|
-
(".loom/companion/releases/rollback.md", "repo-release-surface"),
|
|
1353
|
-
(".loom/companion/releases/catalog.json", "repo-release-surface"),
|
|
1354
|
-
(".loom/companion/releases/current.json", "repo-release-surface"),
|
|
1355
|
-
(".loom/companion/releases/status.json", "repo-release-surface"),
|
|
1356
1359
|
(".loom/shadow/admission-loom.json", "shadow-parity-surface"),
|
|
1357
1360
|
(".loom/shadow/admission-repo.json", "shadow-parity-surface"),
|
|
1358
1361
|
(".loom/shadow/review-loom.json", "shadow-parity-surface"),
|
|
@@ -1368,6 +1371,10 @@ def planned_write_targets(result: dict[str, object], adoption_path: str) -> list
|
|
|
1368
1371
|
|
|
1369
1372
|
|
|
1370
1373
|
def intentionally_absent_targets(adoption_path: str, profile: str) -> list[dict[str, str]]:
|
|
1374
|
+
release_target_absent = {
|
|
1375
|
+
"path": ".loom/companion/releases/**",
|
|
1376
|
+
"reason": "release target truth stays absent until the repo declares release target intent",
|
|
1377
|
+
}
|
|
1371
1378
|
if profile == "attach-only":
|
|
1372
1379
|
return [
|
|
1373
1380
|
{"path": ".loom/work-items/**", "reason": "attach-only preserves host-owned work item truth"},
|
|
@@ -1375,18 +1382,27 @@ def intentionally_absent_targets(adoption_path: str, profile: str) -> list[dict[
|
|
|
1375
1382
|
{"path": ".loom/status/current.md", "reason": "attach-only does not author Loom status truth"},
|
|
1376
1383
|
{"path": ".loom/reviews/**", "reason": "attach-only preserves host-owned review truth"},
|
|
1377
1384
|
{"path": ".loom/specs/**", "reason": "attach-only does not author Loom execution specs"},
|
|
1385
|
+
release_target_absent,
|
|
1378
1386
|
]
|
|
1379
1387
|
if adoption_path == "defer":
|
|
1380
|
-
return [
|
|
1388
|
+
return [
|
|
1389
|
+
{"path": "*", "reason": "observe-only intent is read-only"},
|
|
1390
|
+
release_target_absent,
|
|
1391
|
+
]
|
|
1381
1392
|
if adoption_path == "skill-install-only":
|
|
1382
|
-
return [
|
|
1393
|
+
return [
|
|
1394
|
+
{"path": ".loom/work-items/**", "reason": "skill install does not adopt execution governance"},
|
|
1395
|
+
release_target_absent,
|
|
1396
|
+
]
|
|
1383
1397
|
if profile == "light-governance":
|
|
1384
1398
|
return [
|
|
1385
1399
|
{"path": ".loom/work-items/**", "reason": "light-governance does not author Loom work item truth"},
|
|
1386
1400
|
{"path": ".loom/progress/**", "reason": "light-governance does not author Loom recovery truth"},
|
|
1387
1401
|
{"path": ".loom/status/current.md", "reason": "light-governance does not author Loom status truth"},
|
|
1402
|
+
{"path": ".loom/specs/**", "reason": "light-governance keeps formal Loom specs deferred until execution-control"},
|
|
1403
|
+
release_target_absent,
|
|
1388
1404
|
]
|
|
1389
|
-
return []
|
|
1405
|
+
return [release_target_absent]
|
|
1390
1406
|
|
|
1391
1407
|
|
|
1392
1408
|
def risk_summary(adoption_path: str, intake: dict[str, object], planned: list[dict[str, object]]) -> dict[str, object]:
|
|
@@ -1476,7 +1492,7 @@ def build_result(target_root: Path, scenario: str, intake: dict[str, object], in
|
|
|
1476
1492
|
"observe-only": "read-only repository observation; no Loom adoption carriers are written",
|
|
1477
1493
|
"skill-install-only": "skill/runtime installation intent without repository governance adoption carriers",
|
|
1478
1494
|
"attach-only": "companion/read-surface attachment that preserves repo-owned execution truth",
|
|
1479
|
-
"light-governance": "companion, review
|
|
1495
|
+
"light-governance": "companion, review guidance, and PR-template loop without Loom-owned work item/progress/status/spec carriers",
|
|
1480
1496
|
"execution-control": "Loom-owned work item, progress, review, status, and spec carriers",
|
|
1481
1497
|
"strong-governance": "execution-control surface prepared for host gates, required checks, merge, and closeout consumption",
|
|
1482
1498
|
}[profile],
|
|
@@ -1539,7 +1555,7 @@ def build_result(target_root: Path, scenario: str, intake: dict[str, object], in
|
|
|
1539
1555
|
]
|
|
1540
1556
|
if attach_only
|
|
1541
1557
|
else [
|
|
1542
|
-
"admission checkpoint confirms the companion entry, review
|
|
1558
|
+
"admission checkpoint confirms the companion entry, review guidance, bootstrap metadata, and PR template are readable",
|
|
1543
1559
|
"build checkpoint confirms generated light-governance surfaces are internally consistent",
|
|
1544
1560
|
"merge checkpoint remains repo-owned until the intent upgrades to execution-control or strong-governance",
|
|
1545
1561
|
]
|
|
@@ -1553,7 +1569,7 @@ def build_result(target_root: Path, scenario: str, intake: dict[str, object], in
|
|
|
1553
1569
|
"clean_state": (
|
|
1554
1570
|
"all generated attach-only Loom artifacts are readable, verified, and do not introduce Loom-authored work/progress/status/review/spec truth carriers"
|
|
1555
1571
|
if attach_only
|
|
1556
|
-
else "all generated light-governance artifacts are readable, verified, and do not introduce Loom-owned work/progress/status carriers"
|
|
1572
|
+
else "all generated light-governance artifacts are readable, verified, and do not introduce Loom-owned work/progress/status/spec carriers"
|
|
1557
1573
|
if profile == "light-governance"
|
|
1558
1574
|
else "all generated Loom artifacts are readable, verified, and free of conflicting duplicates"
|
|
1559
1575
|
),
|
|
@@ -1566,7 +1582,7 @@ def build_result(target_root: Path, scenario: str, intake: dict[str, object], in
|
|
|
1566
1582
|
if attach_only
|
|
1567
1583
|
else [
|
|
1568
1584
|
"the target repo has a readable Loom companion entry",
|
|
1569
|
-
"the review
|
|
1585
|
+
"the companion review guidance, lightweight review placeholders, and PR template exist",
|
|
1570
1586
|
"the bootstrap manifest and init-result are verifiable",
|
|
1571
1587
|
]
|
|
1572
1588
|
if profile == "light-governance"
|
|
@@ -1736,7 +1752,7 @@ def render_loom_readme(result: dict[str, object]) -> str:
|
|
|
1736
1752
|
path_lines = (
|
|
1737
1753
|
"- Repo companion entry: `.loom/companion/README.md`\n"
|
|
1738
1754
|
"- Review record: `.loom/reviews/INIT-0001.json`\n"
|
|
1739
|
-
"- Spec
|
|
1755
|
+
"- Spec-review guidance: `.loom/reviews/INIT-0001.spec.json`\n"
|
|
1740
1756
|
)
|
|
1741
1757
|
else:
|
|
1742
1758
|
path_lines = (
|
|
@@ -1852,12 +1868,6 @@ def repo_interface_payload(profile_name: str = "execution-control") -> dict[str,
|
|
|
1852
1868
|
"dynamic_tool_locators": [],
|
|
1853
1869
|
"policy_locators": [],
|
|
1854
1870
|
"hook_locators": [],
|
|
1855
|
-
"release_targets": {
|
|
1856
|
-
"catalog_locator": ".loom/companion/releases/catalog.json",
|
|
1857
|
-
"current_target_locator": ".loom/companion/releases/current.json",
|
|
1858
|
-
"enforcement": "blocking",
|
|
1859
|
-
"status_locator": ".loom/companion/releases/status.json",
|
|
1860
|
-
},
|
|
1861
1871
|
}
|
|
1862
1872
|
if profile_name == "attach-only":
|
|
1863
1873
|
payload["host_truth_locators"] = ATTACH_ONLY_HOST_TRUTH_LOCATORS
|
|
@@ -1972,6 +1982,13 @@ def render_progress(result: dict[str, object]) -> str:
|
|
|
1972
1982
|
|
|
1973
1983
|
def render_review_entry(result: dict[str, object]) -> str:
|
|
1974
1984
|
item = result["initial_work_items"][0]
|
|
1985
|
+
profile = result.get("scaffold_profile")
|
|
1986
|
+
profile_name = str(profile.get("name")) if isinstance(profile, dict) else "execution-control"
|
|
1987
|
+
validation_summary = (
|
|
1988
|
+
"Bootstrap manifest exists; init-result JSON can be read mechanically; companion review guidance and PR template artifacts exist."
|
|
1989
|
+
if profile_name == "light-governance"
|
|
1990
|
+
else "Bootstrap manifest exists; init-result JSON can be read mechanically; the first work item, status surface, and spec/plan artifacts exist."
|
|
1991
|
+
)
|
|
1975
1992
|
payload = {
|
|
1976
1993
|
"schema_version": "loom-review/v1",
|
|
1977
1994
|
"item_id": item["id"],
|
|
@@ -1980,7 +1997,7 @@ def render_review_entry(result: dict[str, object]) -> str:
|
|
|
1980
1997
|
"summary": "Bootstrap has not entered formal review yet.",
|
|
1981
1998
|
"reviewer": "not yet assigned",
|
|
1982
1999
|
"reviewed_head": "bootstrap-placeholder",
|
|
1983
|
-
"reviewed_validation_summary":
|
|
2000
|
+
"reviewed_validation_summary": validation_summary,
|
|
1984
2001
|
"fallback_to": "admission",
|
|
1985
2002
|
"blocking_issues": [
|
|
1986
2003
|
"Formal review starts only after downstream work replaces the bootstrap placeholder item."
|
|
@@ -1994,6 +2011,23 @@ def render_review_entry(result: dict[str, object]) -> str:
|
|
|
1994
2011
|
|
|
1995
2012
|
def render_spec_review_entry(result: dict[str, object]) -> str:
|
|
1996
2013
|
item = result["initial_work_items"][0]
|
|
2014
|
+
profile = result.get("scaffold_profile")
|
|
2015
|
+
profile_name = str(profile.get("name")) if isinstance(profile, dict) else "execution-control"
|
|
2016
|
+
validation_summary = (
|
|
2017
|
+
"Bootstrap manifest exists; init-result JSON can be read mechanically; lightweight spec review is represented as review guidance until execution-control creates formal spec carriers."
|
|
2018
|
+
if profile_name == "light-governance"
|
|
2019
|
+
else "Bootstrap manifest exists; init-result JSON can be read mechanically; the first work item, status surface, and spec/plan artifacts exist."
|
|
2020
|
+
)
|
|
2021
|
+
blocking_issue = (
|
|
2022
|
+
"Spec review remains guidance-only until the repo uses a repo-owned spec locator or upgrades to execution-control."
|
|
2023
|
+
if profile_name == "light-governance"
|
|
2024
|
+
else "Spec gate remains open until the formal spec path receives its own review record."
|
|
2025
|
+
)
|
|
2026
|
+
follow_up = (
|
|
2027
|
+
"Keep spec review guidance tied to repo-owned locators, or upgrade to execution-control before creating formal Loom spec carriers."
|
|
2028
|
+
if profile_name == "light-governance"
|
|
2029
|
+
else "Record a spec_review decision before implementation review or merge-ready consumes the formal spec path."
|
|
2030
|
+
)
|
|
1997
2031
|
payload = {
|
|
1998
2032
|
"schema_version": "loom-review/v1",
|
|
1999
2033
|
"item_id": item["id"],
|
|
@@ -2002,14 +2036,10 @@ def render_spec_review_entry(result: dict[str, object]) -> str:
|
|
|
2002
2036
|
"summary": "Formal spec review has not been completed yet.",
|
|
2003
2037
|
"reviewer": "not yet assigned",
|
|
2004
2038
|
"reviewed_head": "bootstrap-placeholder",
|
|
2005
|
-
"reviewed_validation_summary":
|
|
2039
|
+
"reviewed_validation_summary": validation_summary,
|
|
2006
2040
|
"fallback_to": "admission",
|
|
2007
|
-
"blocking_issues": [
|
|
2008
|
-
|
|
2009
|
-
],
|
|
2010
|
-
"follow_ups": [
|
|
2011
|
-
"Record a spec_review decision before implementation review or merge-ready consumes the formal spec path."
|
|
2012
|
-
],
|
|
2041
|
+
"blocking_issues": [blocking_issue],
|
|
2042
|
+
"follow_ups": [follow_up],
|
|
2013
2043
|
}
|
|
2014
2044
|
return json.dumps(payload, ensure_ascii=False, indent=2) + "\n"
|
|
2015
2045
|
|
|
@@ -2138,6 +2168,7 @@ def scaffold_target(
|
|
|
2138
2168
|
profile_name = str(profile.get("name")) if isinstance(profile, dict) else "execution-control"
|
|
2139
2169
|
writes_light_loop = profile_name in {"light-governance", "execution-control", "strong-governance"}
|
|
2140
2170
|
writes_work_item_carriers = profile_has_work_item_carriers(profile_name)
|
|
2171
|
+
writes_formal_spec_suite = writes_work_item_carriers
|
|
2141
2172
|
if profile_name == "attach-only":
|
|
2142
2173
|
forbidden_errors = attach_only_forbidden_carrier_errors(target_root, result)
|
|
2143
2174
|
if forbidden_errors:
|
|
@@ -2157,59 +2188,6 @@ def scaffold_target(
|
|
|
2157
2188
|
(target_root / ".loom/companion/review.md", render_companion_review(), "text"),
|
|
2158
2189
|
(target_root / ".loom/companion/merge-ready.md", render_companion_merge_ready(), "text"),
|
|
2159
2190
|
(target_root / ".loom/companion/closeout.md", render_companion_closeout(), "text"),
|
|
2160
|
-
(target_root / ".loom/companion/releases/changelog.md", "# Changelog\n\n- Bootstrap release intake example.\n", "text"),
|
|
2161
|
-
(target_root / ".loom/companion/releases/release-notes.md", "# Release Notes\n\n- Bootstrap release target is ready for Loom-derived status consumption.\n", "text"),
|
|
2162
|
-
(target_root / ".loom/companion/releases/migration-notes.md", "# Migration Notes\n\n- not_applicable\n", "text"),
|
|
2163
|
-
(target_root / ".loom/companion/releases/rollback.md", "# Rollback Basis\n\n- Revert the companion-owned release target declaration and rerun Loom checks.\n", "text"),
|
|
2164
|
-
(
|
|
2165
|
-
target_root / ".loom/companion/releases/catalog.json",
|
|
2166
|
-
{
|
|
2167
|
-
"schema_version": "loom-target-release-catalog/v1",
|
|
2168
|
-
"current_release_id": "bootstrap-v0.1.0",
|
|
2169
|
-
"releases": [{"release_id": "bootstrap-v0.1.0", "locator": ".loom/companion/releases/current.json"}],
|
|
2170
|
-
},
|
|
2171
|
-
"json",
|
|
2172
|
-
),
|
|
2173
|
-
(
|
|
2174
|
-
target_root / ".loom/companion/releases/current.json",
|
|
2175
|
-
{
|
|
2176
|
-
"schema_version": "loom-target-release/v1",
|
|
2177
|
-
"release_id": "bootstrap-v0.1.0",
|
|
2178
|
-
"display_name": "Bootstrap v0.1.0",
|
|
2179
|
-
"target_branch": "main",
|
|
2180
|
-
"release_goal": "Bootstrap the first executable Loom path for this repository.",
|
|
2181
|
-
"status": "unreleased",
|
|
2182
|
-
"included_scope": {
|
|
2183
|
-
"phase": [{"id": "bootstrap-phase", "locator": ".loom/companion/checkpoints.md", "delivery_status": "planned"}],
|
|
2184
|
-
"fr": [],
|
|
2185
|
-
"work_item": [{"id": "INIT-0001", "locator": ".loom/work-items/INIT-0001.md", "delivery_status": "unmerged"}],
|
|
2186
|
-
"implementation_pr": [],
|
|
2187
|
-
"merge_commit": [],
|
|
2188
|
-
},
|
|
2189
|
-
"evidence": {
|
|
2190
|
-
"changelog_locator": ".loom/companion/releases/changelog.md",
|
|
2191
|
-
"release_notes_locator": ".loom/companion/releases/release-notes.md",
|
|
2192
|
-
"migration_notes_locator": ".loom/companion/releases/migration-notes.md",
|
|
2193
|
-
"tag_or_artifact_locator": ".loom/companion/README.md",
|
|
2194
|
-
"rollback_basis_locator": ".loom/companion/releases/rollback.md",
|
|
2195
|
-
},
|
|
2196
|
-
"authority": {
|
|
2197
|
-
"owner": "repo-companion",
|
|
2198
|
-
"source_kind": "repo_owned_locator",
|
|
2199
|
-
"source_locator": ".loom/companion/releases/current.json",
|
|
2200
|
-
},
|
|
2201
|
-
},
|
|
2202
|
-
"json",
|
|
2203
|
-
),
|
|
2204
|
-
(
|
|
2205
|
-
target_root / ".loom/companion/releases/status.json",
|
|
2206
|
-
{
|
|
2207
|
-
"schema_version": "loom-target-release-status/v1",
|
|
2208
|
-
"result": "pass",
|
|
2209
|
-
"summary": "repo-owned release status example is readable.",
|
|
2210
|
-
},
|
|
2211
|
-
"json",
|
|
2212
|
-
),
|
|
2213
2191
|
]
|
|
2214
2192
|
if writes_light_loop:
|
|
2215
2193
|
writes.extend(
|
|
@@ -2259,7 +2237,7 @@ def scaffold_target(
|
|
|
2259
2237
|
if copy_file(source, destination, force=force):
|
|
2260
2238
|
written += 1
|
|
2261
2239
|
touched.append(str(destination.relative_to(target_root)))
|
|
2262
|
-
if
|
|
2240
|
+
if writes_formal_spec_suite:
|
|
2263
2241
|
for source, destination in (
|
|
2264
2242
|
(shared_asset(__file__, "templates/scaffold/spec.md"), target_root / ".loom/specs/INIT-0001/spec.md"),
|
|
2265
2243
|
(shared_asset(__file__, "templates/scaffold/plan.md"), target_root / ".loom/specs/INIT-0001/plan.md"),
|
|
@@ -2420,9 +2398,33 @@ def verify_target(target_root: Path, output_path: Path) -> list[str]:
|
|
|
2420
2398
|
for artifact in result.get("initial_artifacts", [])
|
|
2421
2399
|
if isinstance(artifact, dict) and isinstance(artifact.get("path"), str)
|
|
2422
2400
|
}
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2401
|
+
planned_generated = {
|
|
2402
|
+
item.get("path")
|
|
2403
|
+
for item in result.get("planned_writes", [])
|
|
2404
|
+
if isinstance(item, dict) and isinstance(item.get("path"), str)
|
|
2405
|
+
}
|
|
2406
|
+
forbidden_patterns = (
|
|
2407
|
+
".loom/work-items/**",
|
|
2408
|
+
".loom/progress/**",
|
|
2409
|
+
".loom/status/current.md",
|
|
2410
|
+
".loom/specs/**",
|
|
2411
|
+
)
|
|
2412
|
+
for collection_name, paths in (("initial_artifacts", declared_generated), ("planned_writes", planned_generated)):
|
|
2413
|
+
for path in paths:
|
|
2414
|
+
if not isinstance(path, str):
|
|
2415
|
+
continue
|
|
2416
|
+
if any(matches_forbidden_authored_carrier(path, pattern) for pattern in forbidden_patterns):
|
|
2417
|
+
errors.append(f"light-governance bootstrap must not declare execution-control carrier `{path}` in {collection_name}")
|
|
2418
|
+
for path in (
|
|
2419
|
+
".loom/work-items/INIT-0001.md",
|
|
2420
|
+
".loom/progress/INIT-0001.md",
|
|
2421
|
+
".loom/status/current.md",
|
|
2422
|
+
".loom/specs/INIT-0001/spec.md",
|
|
2423
|
+
".loom/specs/INIT-0001/plan.md",
|
|
2424
|
+
".loom/specs/INIT-0001/implementation-contract.md",
|
|
2425
|
+
):
|
|
2426
|
+
if (target_root / path).exists():
|
|
2427
|
+
errors.append(f"light-governance bootstrap must not leave execution-control carrier on disk: {path}")
|
|
2426
2428
|
|
|
2427
2429
|
for relative in required_paths:
|
|
2428
2430
|
if not (target_root / relative).exists():
|
|
@@ -66,7 +66,7 @@ description: Loom 的 root entry。负责初始化新项目或既有仓库,并
|
|
|
66
66
|
|
|
67
67
|
`--intent` 用来表达采用意图,而不是仓库静态分类。未显式给出 intent 时,dry-run 仍会输出推荐路径、风险摘要和计划写入载体;如果实际写入会创建重执行控制面,必须先显式选择 `execution-control` 或 `strong-governance`。
|
|
68
68
|
|
|
69
|
-
每个 intent 会收敛到一个 `scaffold_profile`。`observe-only` 与 `skill-install-only` 不写 adoption carriers;`attach-only` 只写 companion/read surfaces,并显式禁止 `.loom/work-items/**`、`.loom/progress/**`、`.loom/status/current.md`、`.loom/reviews/**`、`.loom/specs/**` 等 Loom-authored truth carriers;`light-governance` 写 companion、review
|
|
69
|
+
每个 intent 会收敛到一个 `scaffold_profile`。`observe-only` 与 `skill-install-only` 不写 adoption carriers;`attach-only` 只写 companion/read surfaces,并显式禁止 `.loom/work-items/**`、`.loom/progress/**`、`.loom/status/current.md`、`.loom/reviews/**`、`.loom/specs/**` 等 Loom-authored truth carriers;`light-governance` 写 companion、review guidance 与 PR 最小闭环但不写 Loom-owned work/progress/status/spec carriers;`execution-control` 与 `strong-governance` 才写 Loom-owned execution carriers。
|
|
70
70
|
|
|
71
71
|
## 1. 读取顺序
|
|
72
72
|
|
|
@@ -164,13 +164,15 @@ description: Loom 的 root entry。负责初始化新项目或既有仓库,并
|
|
|
164
164
|
- `code_review`
|
|
165
165
|
- `spec_review`
|
|
166
166
|
- 最小 PR 模板
|
|
167
|
-
-
|
|
167
|
+
- repo companion 与 bootstrap metadata
|
|
168
|
+
- review guidance / spec-review guidance
|
|
168
169
|
- 默认不装配:
|
|
169
170
|
- 完整 recovery 模型
|
|
170
171
|
- work item 合同
|
|
171
172
|
- 状态面
|
|
172
173
|
- profile 分层
|
|
173
174
|
- 重 harness
|
|
175
|
+
- formal spec suite
|
|
174
176
|
- 若需要轻量跨轮承接,默认使用 `checkpoint-lite`
|
|
175
177
|
- 即使本轮不装配标准恢复或状态面,也必须写清:
|
|
176
178
|
- issue / PR 中谁是恢复主入口
|
|
@@ -199,7 +201,7 @@ description: Loom 的 root entry。负责初始化新项目或既有仓库,并
|
|
|
199
201
|
- 保留 root rules
|
|
200
202
|
- 保留 retained host actions
|
|
201
203
|
- 保留 repo-native carriers
|
|
202
|
-
- 第一轮不生成 Loom-owned `work-item` / `progress` / `status-surface` placeholder
|
|
204
|
+
- 第一轮不生成 Loom-owned `work-item` / `progress` / `status-surface` / `spec` placeholder
|
|
203
205
|
|
|
204
206
|
## 4. 输出初始化结果
|
|
205
207
|
|
package/payload/plugin/loom/skills/loom-build/.loom-runtime/loom-init/references/intake-signals.md
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
- 是否已有 CI / 基础测试
|
|
27
27
|
- 是否已有统一的仓库级验证入口
|
|
28
28
|
- 当前主要缺口属于哪一类:
|
|
29
|
-
- 治理入口 / review 合同 / 条件化 spec 路径
|
|
29
|
+
- 治理入口 / review 合同 / 条件化 spec-review 路径
|
|
30
30
|
- 恢复 / 状态 / 执行支撑
|
|
31
31
|
- 是否有明显长任务恢复痛点
|
|
32
32
|
- 是否存在共享契约 / 共享数据模型 / 核心抽象 / 高风险链路
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
- 已有清晰根级边界文档
|
|
78
78
|
- 已有 CI / 基础测试
|
|
79
79
|
- 已有统一的仓库级验证入口
|
|
80
|
-
- 当前缺口主要在治理入口、review 合同、条件化 spec 路径
|
|
80
|
+
- 当前缺口主要在治理入口、review 合同、条件化 spec-review 路径
|
|
81
81
|
- 尚无明显长任务恢复痛点
|
|
82
82
|
- 当前没有需要立即进入更重路径的共享边界或高风险核心抽象信号
|
|
83
83
|
- 当前主产物本身不是共享 contract、shared skill 或 governance module
|
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
|
|
87
87
|
- 直接采用 [../../shared/references/adoption/lightweight-retrofit-default.md](../../shared/references/adoption/lightweight-retrofit-default.md)
|
|
88
88
|
- 默认 `companion docs` 接入
|
|
89
|
-
-
|
|
90
|
-
- 默认不装配完整 recovery、`Work Item`、`status control plane
|
|
89
|
+
- 默认装配最小治理包、repo companion、bootstrap metadata、review guidance 与 PR 模板
|
|
90
|
+
- 默认不装配完整 recovery、`Work Item`、`status control plane`、formal spec suite 与重 harness
|
|
91
91
|
- 若需要轻量跨轮承接,默认 `checkpoint-lite`
|
|
92
92
|
|
|
93
93
|
### 4.3 `复杂既有仓库`
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
- 若缺少统一验证入口,或仓库主产物本身是共享 contract、shared skill 或 governance module,优先判为 `复杂既有仓库`
|
|
130
130
|
- 任何共享契约、运行模型或高风险核心抽象变化,优先提升到更重路径
|
|
131
131
|
- 任何多轮恢复成本明显升高或出现多个入口并行记录,优先从 `checkpoint-lite` 升级到标准恢复形态
|
|
132
|
-
- 只有在缺口主要集中于治理入口、review 合同、条件化 spec 路径,且恢复痛点不明显时,才保持轻量路径
|
|
132
|
+
- 只有在缺口主要集中于治理入口、review 合同、条件化 spec-review 路径,且恢复痛点不明显时,才保持轻量路径
|
|
133
133
|
|
|
134
134
|
## 6. 场景到默认装配映射
|
|
135
135
|
|
|
@@ -11,19 +11,20 @@
|
|
|
11
11
|
- 已有清晰的工程边界文档,例如 `AGENTS.md`
|
|
12
12
|
- 已有 CI 与基础测试
|
|
13
13
|
- 已有统一的仓库级验证入口,而不是只有零散子模块脚本
|
|
14
|
-
- 当前缺的是治理入口、review 合同或条件化 spec 路径
|
|
14
|
+
- 当前缺的是治理入口、review 合同或条件化 spec-review 路径
|
|
15
15
|
- 当前还没有明显的长任务恢复痛点
|
|
16
16
|
- 当前主产物本身不是共享 contract、shared skill 或 governance module
|
|
17
17
|
|
|
18
18
|
## 2. 默认目标
|
|
19
19
|
|
|
20
|
-
第一轮 retrofit 的目标不是装完整 Loom,而是先建立最小治理闭环。
|
|
20
|
+
第一轮 retrofit 的目标不是装完整 Loom,也不是创建 Loom-owned execution truth,而是先建立最小治理闭环。
|
|
21
21
|
|
|
22
22
|
默认先解决:
|
|
23
23
|
|
|
24
24
|
- 改动如何进入实现
|
|
25
25
|
- reviewer 如何判断改动
|
|
26
26
|
- 哪些边界改动必须先说明再实现
|
|
27
|
+
- 后续何时需要显式升级到 `execution-control`
|
|
27
28
|
|
|
28
29
|
## 3. 默认装配
|
|
29
30
|
|
|
@@ -33,7 +34,10 @@
|
|
|
33
34
|
- `code_review`
|
|
34
35
|
- `spec_review`
|
|
35
36
|
- 最小 PR 模板
|
|
36
|
-
-
|
|
37
|
+
- repo companion 与 bootstrap metadata
|
|
38
|
+
- review guidance / spec-review guidance
|
|
39
|
+
|
|
40
|
+
本策略对应 `light-governance` scaffold profile。该 profile 可以暴露 review/spec-review 指引和轻量 review placeholder,但不生成 Loom-owned formal spec suite。
|
|
37
41
|
|
|
38
42
|
## 4. 默认接入方式
|
|
39
43
|
|
|
@@ -44,6 +48,7 @@
|
|
|
44
48
|
- 在 `repo-interface.json` 中显式声明 `review_instruction_locators`;已有规则用 repo-owned locator,确无规则时才声明 `loom_default`
|
|
45
49
|
- 不在第一轮重写整个根级规则体系
|
|
46
50
|
- 不把轻量 retrofit 升级成 unattended strong adoption
|
|
51
|
+
- 不在默认 `light-governance` 中生成 `.loom/work-items/**`、`.loom/progress/**`、`.loom/status/current.md` 或 `.loom/specs/**`
|
|
47
52
|
|
|
48
53
|
轻量仓库可以从 Loom default review instruction 起步,但这个选择必须是显式 locator 合同,而不是自动猜测 `spec_review.md`、`code_review.md` 或任何单仓历史路径。
|
|
49
54
|
|
|
@@ -56,6 +61,9 @@
|
|
|
56
61
|
- 状态面
|
|
57
62
|
- profile 分层
|
|
58
63
|
- 重 harness
|
|
64
|
+
- formal spec suite
|
|
65
|
+
|
|
66
|
+
如果目标仓库需要 Loom-owned `work item`、`progress`、`status` 或 `spec` carriers,必须把接入意图显式升级到 `execution-control`;此时才允许脚手架生成 `.loom/work-items/**`、`.loom/progress/**`、`.loom/status/current.md` 和 `.loom/specs/**`。
|
|
59
67
|
|
|
60
68
|
## 6. checkpoint-lite
|
|
61
69
|
|
|
@@ -143,13 +143,7 @@
|
|
|
143
143
|
},
|
|
144
144
|
"dynamic_tool_locators": [],
|
|
145
145
|
"policy_locators": [],
|
|
146
|
-
"hook_locators": []
|
|
147
|
-
"release_targets": {
|
|
148
|
-
"catalog_locator": ".loom/companion/releases/catalog.json",
|
|
149
|
-
"current_target_locator": ".loom/companion/releases/current.json",
|
|
150
|
-
"enforcement": "blocking",
|
|
151
|
-
"status_locator": ".loom/companion/releases/status.json"
|
|
152
|
-
}
|
|
146
|
+
"hook_locators": []
|
|
153
147
|
}
|
|
154
148
|
```
|
|
155
149
|
|
|
@@ -372,6 +366,8 @@
|
|
|
372
366
|
|
|
373
367
|
`release_targets` 用于声明目标仓库自己的 release / version 真相入口。
|
|
374
368
|
|
|
369
|
+
默认 adoption 不生成或声明 `release_targets`。只有目标仓库已有明确的 release target truth,并且接入决策显式要求暴露这组 repo-owned / host-owned locator 时,才写入本 section。
|
|
370
|
+
|
|
375
371
|
它回答的是:
|
|
376
372
|
|
|
377
373
|
- 目标仓库 release target catalog 去哪里读
|
|
@@ -403,6 +399,7 @@
|
|
|
403
399
|
稳定约束:
|
|
404
400
|
|
|
405
401
|
- `catalog_locator` 与 `current_target_locator` 只允许使用仓内相对路径;绝对路径、越界或不可读路径必须 fail closed
|
|
402
|
+
- 缺省状态必须视为 `availability: absent` / `target_release.result: not_applicable`,不得生成 `bootstrap-v0.1.0`、空 release 或示例 release truth
|
|
406
403
|
- target release object 必须与 Loom distribution version authority 分离;不得把 installer version、plugin version、runtime version、schema version 或 `VERSION` 回写成 target release truth
|
|
407
404
|
- target release object 可以消费 `Phase` / `FR` / `Work Item` / `PR` / `merge commit` locator,但不得让 target release 直接成为执行入口
|
|
408
405
|
- `status_locator` 若缺失,Loom 仍应从 authored target release object 与 delivery chain 派生自己的 target release status summary
|
|
@@ -63,7 +63,7 @@ Loom 读取 target release truth 后,应派生 `loom-target-release-status/v1`
|
|
|
63
63
|
|
|
64
64
|
## 4. `repo companion` 挂接方式
|
|
65
65
|
|
|
66
|
-
目标仓库通过 `.loom/companion/repo-interface.json` `v2.release_targets`
|
|
66
|
+
目标仓库通过 `.loom/companion/repo-interface.json` `v2.release_targets` 挂接这一能力。默认 adoption 必须省略该 section;没有 release target intent 的仓库应被读取为 `release_targets.availability = absent` 与 `target_release.result = not_applicable`,而不是由 Loom 生成占位 release truth。
|
|
67
67
|
|
|
68
68
|
最小字段:
|
|
69
69
|
|
|
@@ -79,6 +79,8 @@ Loom 读取 target release truth 后,应派生 `loom-target-release-status/v1`
|
|
|
79
79
|
- `status_locator` 若存在,只能是 repo-owned derived status,不替代 Loom 自己的状态面
|
|
80
80
|
- `enforcement` 只允许 `blocking | advisory`
|
|
81
81
|
|
|
82
|
+
Loom 不得为了满足 schema 而生成 `bootstrap-v0.1.0`、空 catalog、示例 current release 或示例 status。声明 `release_targets` 时,locator 指向的对象必须来自目标仓库明确选择的 repo-owned 或 host-owned release/version truth。
|
|
83
|
+
|
|
82
84
|
## 5. closeout 语义
|
|
83
85
|
|
|
84
86
|
若仓库声明了 target release truth,closeout 至少要能区分:
|
package/payload/plugin/loom/skills/loom-build/.loom-runtime/shared/scripts/governance_surface.py
CHANGED
|
@@ -2228,9 +2228,6 @@ def detect_repo_interface(root: Path) -> tuple[dict[str, Any], list[str]]:
|
|
|
2228
2228
|
repo_interface_surface["specialized_gates"] = manifest_repo_interface.copy()
|
|
2229
2229
|
repo_interface_surface["dynamic_tool_locators"] = manifest_repo_interface.copy()
|
|
2230
2230
|
repo_interface_surface["policy_locators"] = manifest_repo_interface.copy()
|
|
2231
|
-
repo_interface_surface["release_targets"]["catalog"] = manifest_repo_interface.copy()
|
|
2232
|
-
repo_interface_surface["release_targets"]["current_target"] = manifest_repo_interface.copy()
|
|
2233
|
-
repo_interface_surface["release_targets"]["status"] = manifest_repo_interface.copy()
|
|
2234
2231
|
if manifest_repo_interface_error:
|
|
2235
2232
|
missing_inputs.append(manifest_repo_interface_error)
|
|
2236
2233
|
|