dev-harness-cli 1.0.5 → 1.2.0
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 +158 -230
- package/cli/commands/checkpoint.mjs +2 -2
- package/cli/commands/config.mjs +12 -12
- package/cli/commands/contract.mjs +10 -10
- package/cli/commands/detect-tool.mjs +5 -4
- package/cli/commands/init.mjs +10 -10
- package/cli/commands/learn.mjs +3 -3
- package/cli/commands/pause.mjs +1 -1
- package/cli/commands/phase.mjs +6 -6
- package/cli/commands/resume.mjs +3 -3
- package/cli/commands/rollback.mjs +9 -9
- package/cli/commands/set-mode.mjs +5 -5
- package/cli/commands/status.mjs +9 -9
- package/cli/commands/validate.mjs +7 -7
- package/cli/commands/worktree.mjs +6 -6
- package/cli/{harness-dev.mjs → dev-harness.mjs} +2 -2
- package/cli/lib/config-registry.mjs +2 -2
- package/cli/lib/contract.mjs +3 -3
- package/cli/lib/gates.mjs +11 -9
- package/cli/lib/help.mjs +28 -28
- package/cli/lib/paths.mjs +87 -8
- package/cli/lib/ralph-inner.mjs +2 -2
- package/cli/lib/ralph-outer.mjs +3 -3
- package/cli/lib/ralph-output.mjs +1 -1
- package/cli/lib/scaffold.mjs +18 -18
- package/cli/lib/state.mjs +1 -1
- package/cli/lib/templates.mjs +38 -1
- package/package.json +8 -4
- package/schema/feature-list.schema.json +63 -0
- package/templates/AGENTS.md +19 -15
- package/templates/ci/github-actions.yml +2 -2
- package/templates/ci/gitlab-ci.yml +2 -2
- package/templates/docs/agents/generator.md +1 -1
- package/templates/docs/agents/planner.md +1 -1
- package/templates/docs/agents/simplifier.md +1 -1
- package/templates/docs/phases/build.md +3 -3
- package/templates/docs/phases/define.md +3 -3
- package/templates/docs/phases/plan.md +3 -3
- package/templates/docs/phases/review.md +2 -2
- package/templates/docs/phases/ship.md +3 -3
- package/templates/docs/phases/simplify.md +3 -3
- package/templates/docs/phases/verify.md +2 -2
- package/templates/harness-config.json +42 -0
- package/templates/init.ps1 +1 -1
- package/templates/progress.md +18 -0
|
@@ -10,4 +10,4 @@ You implement. You produce artifacts. You self-check.
|
|
|
10
10
|
- In BUILD: implement ONE task at a time, then validate
|
|
11
11
|
- In VERIFY: run the full test suite
|
|
12
12
|
- In SIMPLIFY: adopt the Simplifier persona (see simplifier.md)
|
|
13
|
-
- When done: call `harness
|
|
13
|
+
- When done: call `dev-harness validate`
|
|
@@ -9,5 +9,5 @@ You design the approach. You write criteria. You set scope.
|
|
|
9
9
|
- Set exclusions explicitly ("We will NOT build X")
|
|
10
10
|
- Hand off to Generator when criteria are clear
|
|
11
11
|
- In DEFINE: interview the user, write PRD in specs/*.md
|
|
12
|
-
- In PLAN: decompose features into tasks in
|
|
12
|
+
- In PLAN: decompose features into tasks in harness/features/feature-list.json
|
|
13
13
|
- Review gate criteria with Evaluator before proceeding
|
|
@@ -10,4 +10,4 @@ You refactor. You clean. You never change behavior.
|
|
|
10
10
|
- Break long functions (~40 line threshold)
|
|
11
11
|
- Rename unclear variables
|
|
12
12
|
- ⚠ All tests must still pass after your changes
|
|
13
|
-
- Run `harness
|
|
13
|
+
- Run `dev-harness validate` after each feature to confirm gate
|
|
@@ -21,14 +21,14 @@ fresh context. Only when all features pass does the phase gate run.
|
|
|
21
21
|
1. Read `progress.md`, `AGENTS.md`, `sprint-contract.md`.
|
|
22
22
|
2. Pick next feature where `passes === false`.
|
|
23
23
|
3. Implement the feature's tasks.
|
|
24
|
-
4. Run `harness
|
|
24
|
+
4. Run `dev-harness validate --feature <name> --task <id>` per task.
|
|
25
25
|
5. On pass: mark feature `passes: true`, commit, append lesson to `progress.md`.
|
|
26
26
|
6. On fail (≤ `maxRetries`): retry with fresh context (git reset if `--git-ops`).
|
|
27
27
|
7. On fail (> `maxRetries`): escalate to human.
|
|
28
28
|
|
|
29
29
|
## Exit Gate
|
|
30
30
|
|
|
31
|
-
Run `harness
|
|
31
|
+
Run `dev-harness validate` — checks:
|
|
32
32
|
|
|
33
33
|
- `config-exists`
|
|
34
34
|
- `git-repo`
|
|
@@ -38,4 +38,4 @@ Run `harness-dev validate` — checks:
|
|
|
38
38
|
|
|
39
39
|
## Handoff
|
|
40
40
|
|
|
41
|
-
On gate pass: `harness
|
|
41
|
+
On gate pass: `dev-harness phase verify` (Generator → Evaluator).
|
|
@@ -12,7 +12,7 @@ feature list.
|
|
|
12
12
|
|
|
13
13
|
## Entry
|
|
14
14
|
|
|
15
|
-
- `harness-config.json` exists (created by `harness
|
|
15
|
+
- `harness-config.json` exists (created by `dev-harness init`)
|
|
16
16
|
- `AGENTS.md` present in project root
|
|
17
17
|
|
|
18
18
|
## Work
|
|
@@ -40,7 +40,7 @@ feature list.
|
|
|
40
40
|
|
|
41
41
|
## Exit Gate
|
|
42
42
|
|
|
43
|
-
Run `harness
|
|
43
|
+
Run `dev-harness validate` — checks:
|
|
44
44
|
|
|
45
45
|
- `config-exists`
|
|
46
46
|
- `git-repo`
|
|
@@ -48,4 +48,4 @@ Run `harness-dev validate` — checks:
|
|
|
48
48
|
|
|
49
49
|
## Handoff
|
|
50
50
|
|
|
51
|
-
On gate pass: `harness
|
|
51
|
+
On gate pass: `dev-harness phase plan` (Planner → continues as Planner for decomposition).
|
|
@@ -20,11 +20,11 @@ verifiable acceptance criteria. The Sprint Contract is negotiated here.
|
|
|
20
20
|
2. Decompose into features → tasks in `feature_list.json`.
|
|
21
21
|
3. Planner proposes `sprint-contract.md` (scope, criteria, exclusions).
|
|
22
22
|
4. Evaluator reviews; iterate until `**Status:** Agreed`.
|
|
23
|
-
5. Use `harness
|
|
23
|
+
5. Use `dev-harness contract propose` / `contract review --decision <agreed|needs-revision>`.
|
|
24
24
|
|
|
25
25
|
## Exit Gate
|
|
26
26
|
|
|
27
|
-
Run `harness
|
|
27
|
+
Run `dev-harness validate` — checks:
|
|
28
28
|
|
|
29
29
|
- `config-exists`
|
|
30
30
|
- `git-repo`
|
|
@@ -33,4 +33,4 @@ Run `harness-dev validate` — checks:
|
|
|
33
33
|
|
|
34
34
|
## Handoff
|
|
35
35
|
|
|
36
|
-
On gate pass: `harness
|
|
36
|
+
On gate pass: `dev-harness phase build` (Planner → Generator).
|
|
@@ -27,7 +27,7 @@ overall verdict: Accept / Revise / Block.
|
|
|
27
27
|
|
|
28
28
|
## Exit Gate
|
|
29
29
|
|
|
30
|
-
Run `harness
|
|
30
|
+
Run `dev-harness validate` — checks:
|
|
31
31
|
|
|
32
32
|
- `config-exists`
|
|
33
33
|
- `git-repo`
|
|
@@ -39,4 +39,4 @@ Run `harness-dev validate` — checks:
|
|
|
39
39
|
|
|
40
40
|
## Handoff
|
|
41
41
|
|
|
42
|
-
On gate pass: `harness
|
|
42
|
+
On gate pass: `dev-harness phase ship` (committee → release).
|
|
@@ -17,13 +17,13 @@ The release must be reproducible from a clean checkout.
|
|
|
17
17
|
|
|
18
18
|
1. Update `CHANGELOG.md` with version, date, summary.
|
|
19
19
|
2. Bump version in `package.json` / equivalent manifest.
|
|
20
|
-
3. Run full `harness
|
|
20
|
+
3. Run full `dev-harness validate` — all gates must pass.
|
|
21
21
|
4. Tag the release: `git tag -a v<x.y.z> -m "Release x.y.z"`.
|
|
22
22
|
5. Open or merge the PR per project workflow.
|
|
23
23
|
|
|
24
24
|
## Exit Gate
|
|
25
25
|
|
|
26
|
-
Run `harness
|
|
26
|
+
Run `dev-harness validate` — checks:
|
|
27
27
|
|
|
28
28
|
- `config-exists`
|
|
29
29
|
- `git-repo`
|
|
@@ -38,6 +38,6 @@ Run `harness-dev validate` — checks:
|
|
|
38
38
|
|
|
39
39
|
## Handoff
|
|
40
40
|
|
|
41
|
-
On gate pass: pipeline complete. `harness
|
|
41
|
+
On gate pass: pipeline complete. `dev-harness status` reports
|
|
42
42
|
`Pipeline complete after "ship"`. Increment `pipelineIteration` and loop back
|
|
43
43
|
to DEFINE for the next sprint, or stop if the project is done.
|
|
@@ -20,14 +20,14 @@ must not break the feature's acceptance criteria.
|
|
|
20
20
|
1. Read `progress.md` and `AGENTS.md`.
|
|
21
21
|
2. For each feature: review the implementation, propose deletions/renames.
|
|
22
22
|
3. Apply simplifications.
|
|
23
|
-
4. Re-run `harness
|
|
23
|
+
4. Re-run `dev-harness validate --feature <name>` — criteria must still pass.
|
|
24
24
|
5. On pass: commit, append lesson.
|
|
25
25
|
6. On fail (≤ `maxRetries`): revert and retry.
|
|
26
26
|
7. On fail (> `maxRetries`): escalate.
|
|
27
27
|
|
|
28
28
|
## Exit Gate
|
|
29
29
|
|
|
30
|
-
Run `harness
|
|
30
|
+
Run `dev-harness validate` — checks:
|
|
31
31
|
|
|
32
32
|
- `config-exists`
|
|
33
33
|
- `git-repo`
|
|
@@ -37,4 +37,4 @@ Run `harness-dev validate` — checks:
|
|
|
37
37
|
|
|
38
38
|
## Handoff
|
|
39
39
|
|
|
40
|
-
On gate pass: `harness
|
|
40
|
+
On gate pass: `dev-harness phase review` (Simplifier → multi-agent committee).
|
|
@@ -26,7 +26,7 @@ feature's acceptance criteria from the sprint contract and scores it against
|
|
|
26
26
|
|
|
27
27
|
## Exit Gate
|
|
28
28
|
|
|
29
|
-
Run `harness
|
|
29
|
+
Run `dev-harness validate` — checks:
|
|
30
30
|
|
|
31
31
|
- `config-exists`
|
|
32
32
|
- `git-repo`
|
|
@@ -35,4 +35,4 @@ Run `harness-dev validate` — checks:
|
|
|
35
35
|
|
|
36
36
|
## Handoff
|
|
37
37
|
|
|
38
|
-
On gate pass: `harness
|
|
38
|
+
On gate pass: `dev-harness phase simplify` (Evaluator → Simplifier).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0",
|
|
3
|
+
"stack": "{{stack}}",
|
|
4
|
+
"stackMeta": null,
|
|
5
|
+
"agentTool": null,
|
|
6
|
+
"mode": "copilot",
|
|
7
|
+
"currentPhase": null,
|
|
8
|
+
"paused": false,
|
|
9
|
+
"features": {
|
|
10
|
+
"remaining": 0,
|
|
11
|
+
"passing": 0,
|
|
12
|
+
"total": 0
|
|
13
|
+
},
|
|
14
|
+
"gates": {
|
|
15
|
+
"enabled": false,
|
|
16
|
+
"checks": ["all"]
|
|
17
|
+
},
|
|
18
|
+
"git": {
|
|
19
|
+
"autoCommit": false,
|
|
20
|
+
"autoTag": false,
|
|
21
|
+
"resetOnRetry": false,
|
|
22
|
+
"branch": null,
|
|
23
|
+
"clean": true,
|
|
24
|
+
"hasUpstream": false,
|
|
25
|
+
"lastCommitMessage": null
|
|
26
|
+
},
|
|
27
|
+
"phases": {
|
|
28
|
+
"enabled": ["define", "plan", "build", "verify", "review", "ship"]
|
|
29
|
+
},
|
|
30
|
+
"agents": {
|
|
31
|
+
"tone": {
|
|
32
|
+
"planner": "Analytical and precise. Define clear boundaries.",
|
|
33
|
+
"generator": "Focused and practical. Build what's specified, nothing more.",
|
|
34
|
+
"evaluator": "Skeptical and thorough. Accept only compelling evidence.",
|
|
35
|
+
"simplifier": "Relentless about clarity. Delete more than you add."
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"maxRetries": 3,
|
|
39
|
+
"retryCount": 0,
|
|
40
|
+
"pipelineIteration": 0,
|
|
41
|
+
"gateHistory": []
|
|
42
|
+
}
|
package/templates/init.ps1
CHANGED
|
@@ -94,4 +94,4 @@ switch ($Stack) {
|
|
|
94
94
|
Write-Host " ✓ Setup verified" -ForegroundColor Green
|
|
95
95
|
|
|
96
96
|
# ── Start ────────────────────────────────────────────────────────────────────
|
|
97
|
-
Write-Host "`nSetup complete. Run: harness
|
|
97
|
+
Write-Host "`nSetup complete. Run: dev-harness phase define" -ForegroundColor Cyan
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Progress: {{stackLabel}}
|
|
2
|
+
|
|
3
|
+
## Session State
|
|
4
|
+
|
|
5
|
+
Current Phase: not started
|
|
6
|
+
Current Feature: —
|
|
7
|
+
Gate Status: pending
|
|
8
|
+
Next Action: —
|
|
9
|
+
Retry Count: 0/{{maxRetries}}
|
|
10
|
+
|
|
11
|
+
## Lessons
|
|
12
|
+
|
|
13
|
+
<!-- Use \`dev-harness learn "lesson here"\` to add lessons. -->
|
|
14
|
+
|
|
15
|
+
## Checkpoints
|
|
16
|
+
|
|
17
|
+
| Tag | Phase | Date | Notes |
|
|
18
|
+
|-----|-------|------|-------|
|