agent-project-sdlc 0.1.21 → 0.1.23
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/README.md +12 -3
- package/assets/docs/README.md +13 -4
- package/assets/policies/allowed_paths.yaml +1 -0
- package/assets/policies/phase_contracts.yaml +131 -12
- package/assets/skills/pjsdlc_architect_design/SKILL.md +3 -0
- package/assets/skills/pjsdlc_dev_sprint/SKILL.md +10 -5
- package/assets/skills/pjsdlc_implementation_doc/SKILL.md +7 -3
- package/assets/skills/pjsdlc_reviewer/SKILL.md +2 -2
- package/assets/skills/pjsdlc_rfc_recalibrate/SKILL.md +3 -3
- package/assets/skills/pjsdlc_tester/SKILL.md +4 -3
- package/assets/templates/EVIDENCE_INDEX_TEMPLATE.md +18 -0
- package/assets/templates/EXPLORATION_APPENDIX_TEMPLATE.md +24 -0
- package/assets/templates/IMPLEMENTATION_DOC_TEMPLATE.md +63 -10
- package/assets/templates/PLAN_TEMPLATE.yaml +48 -1
- package/assets/templates/RUNBOOK_TEMPLATE.md +52 -0
- package/assets/tools/harness_utils.py +470 -17
- package/assets/tools/transition.py +24 -31
- package/assets/tools/validate_design.py +5 -0
- package/assets/tools/validate_harness.py +15 -1
- package/assets/tools/validate_prompt_language.py +1 -1
- package/assets/tools/validate_rfc.py +5 -0
- package/dist/lib/init.js +2 -1
- package/dist/lib/validators.js +811 -21
- package/package.json +1 -1
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
from harness_utils import
|
|
2
|
+
from harness_utils import (
|
|
3
|
+
load_lifecycle,
|
|
4
|
+
load_phase_contract_data,
|
|
5
|
+
load_phase_contracts,
|
|
6
|
+
load_yaml,
|
|
7
|
+
phase_transition_contract_errors,
|
|
8
|
+
repo_path,
|
|
9
|
+
require,
|
|
10
|
+
require_paths,
|
|
11
|
+
run_main,
|
|
12
|
+
)
|
|
3
13
|
|
|
4
14
|
|
|
5
15
|
def main() -> None:
|
|
@@ -29,6 +39,7 @@ def main() -> None:
|
|
|
29
39
|
".docs/06_review",
|
|
30
40
|
".docs/07_test",
|
|
31
41
|
".docs/08_release",
|
|
42
|
+
".docs/09_runbooks",
|
|
32
43
|
".docs/rfc",
|
|
33
44
|
".codex/skills",
|
|
34
45
|
"tools",
|
|
@@ -36,6 +47,7 @@ def main() -> None:
|
|
|
36
47
|
require_paths(required_files + required_dirs)
|
|
37
48
|
|
|
38
49
|
lifecycle = load_lifecycle()
|
|
50
|
+
phase_contract_data = load_phase_contract_data()
|
|
39
51
|
phases = load_phase_contracts()
|
|
40
52
|
load_yaml(".codex/pjsdlc_managed/policies/gates.yaml")
|
|
41
53
|
load_yaml(".codex/pjsdlc_managed/policies/allowed_paths.yaml")
|
|
@@ -43,6 +55,8 @@ def main() -> None:
|
|
|
43
55
|
|
|
44
56
|
current_phase = lifecycle.get("current_phase")
|
|
45
57
|
require(current_phase in phases, f"Lifecycle current_phase is not declared: {current_phase}")
|
|
58
|
+
for error in phase_transition_contract_errors(phase_contract_data, require_transitions=True):
|
|
59
|
+
require(False, error)
|
|
46
60
|
|
|
47
61
|
for phase_name, contract in phases.items():
|
|
48
62
|
skill = contract.get("skill")
|
package/dist/lib/init.js
CHANGED
|
@@ -14,6 +14,7 @@ const DOC_DIRS = [
|
|
|
14
14
|
".docs/06_review",
|
|
15
15
|
".docs/07_test",
|
|
16
16
|
".docs/08_release",
|
|
17
|
+
".docs/09_runbooks",
|
|
17
18
|
".docs/rfc"
|
|
18
19
|
];
|
|
19
20
|
export async function runInit(projectRoot, options) {
|
|
@@ -52,7 +53,7 @@ async function createProjectState(projectRoot, root, report) {
|
|
|
52
53
|
const files = [
|
|
53
54
|
[
|
|
54
55
|
harnessPath(root, "state", "lifecycle.yaml"),
|
|
55
|
-
`project_name: "Project"\nversion: "v0.1"\ncurrent_phase: "SPRINTING"\nactive_role: "developer"\nactive_skill: "pjsdlc_dev_sprint"\ncurrent_milestone: "MVP"\nblocked_reason: ""\nsuspended_phase: ""\nallowed_next_phases:\n - "REVIEWING"\n`
|
|
56
|
+
`project_name: "Project"\nversion: "v0.1"\ncurrent_phase: "SPRINTING"\nactive_role: "developer"\nactive_skill: "pjsdlc_dev_sprint"\ncurrent_milestone: "MVP"\nblocked_reason: ""\nsuspended_phase: ""\nallowed_next_phases:\n - "REVIEWING"\n - "RFC_RECALIBRATION"\n - "BLOCKED"\n`
|
|
56
57
|
],
|
|
57
58
|
[harnessPath(root, "state", "plan.yaml"), `current_task_id: ""\nnext_task_sequence: 1\ntasks: []\n`],
|
|
58
59
|
[harnessPath(root, "state", "plan.draft.yaml"), `next_task_sequence: 1\ntasks: []\n`],
|