codeharness 0.26.4 → 0.27.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/dist/{chunk-KZQETPQS.js → chunk-JMYDBV6O.js} +127 -430
- package/dist/{docker-JEC7THRT.js → docker-5LUADX2H.js} +1 -1
- package/dist/index.js +5150 -2054
- package/package.json +5 -3
- package/patches/AGENTS.md +1 -1
- package/patches/dev/enforcement.md +16 -7
- package/patches/retro/enforcement.md +2 -2
- package/patches/review/enforcement.md +24 -3
- package/patches/verify/story-verification.md +25 -11
- package/templates/agents/analyst.yaml +10 -0
- package/templates/agents/architect.yaml +11 -0
- package/templates/agents/dev.yaml +10 -0
- package/templates/agents/evaluator.yaml +92 -0
- package/templates/agents/pm.yaml +12 -0
- package/templates/agents/qa.yaml +15 -0
- package/templates/agents/sm.yaml +10 -0
- package/templates/agents/tech-writer.yaml +11 -0
- package/templates/agents/ux-designer.yaml +13 -0
- package/templates/workflows/default.yaml +23 -0
- package/ralph/AGENTS.md +0 -48
- package/ralph/bridge.sh +0 -424
- package/ralph/db_schema_gen.sh +0 -109
- package/ralph/drivers/claude-code.sh +0 -140
- package/ralph/exec_plans.sh +0 -252
- package/ralph/harness_status.sh +0 -147
- package/ralph/lib/circuit_breaker.sh +0 -210
- package/ralph/lib/date_utils.sh +0 -60
- package/ralph/lib/timeout_utils.sh +0 -77
- package/ralph/onboard.sh +0 -83
- package/ralph/ralph.sh +0 -1402
- package/ralph/validate_epic_docs.sh +0 -129
- package/ralph/verify_gates.sh +0 -210
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeharness",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI for codeharness — makes autonomous coding agents produce software that actually works",
|
|
6
6
|
"bin": {
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"templates/prompts/",
|
|
19
19
|
"templates/docs/",
|
|
20
20
|
"templates/otlp/",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
21
|
+
"templates/workflows/",
|
|
22
|
+
"templates/agents/"
|
|
23
23
|
],
|
|
24
24
|
"repository": {
|
|
25
25
|
"type": "git",
|
|
@@ -38,7 +38,9 @@
|
|
|
38
38
|
"lint:sizes": "bash scripts/check-file-sizes.sh"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.90",
|
|
41
42
|
"@inkjs/ui": "^2.0.0",
|
|
43
|
+
"ajv": "^8.18.0",
|
|
42
44
|
"commander": "^14.0.3",
|
|
43
45
|
"ink": "^6.8.0",
|
|
44
46
|
"react": "^19.2.4",
|
package/patches/AGENTS.md
CHANGED
|
@@ -12,7 +12,7 @@ prevent recurrence of observed failures.
|
|
|
12
12
|
patches/
|
|
13
13
|
dev/enforcement.md — Dev agent guardrails
|
|
14
14
|
review/enforcement.md — Review gates (proof quality, coverage)
|
|
15
|
-
verify/story-verification.md —
|
|
15
|
+
verify/story-verification.md — Tier-appropriate proof requirements
|
|
16
16
|
sprint/planning.md — Sprint planning pre-checks
|
|
17
17
|
retro/enforcement.md — Retrospective quality metrics
|
|
18
18
|
```
|
|
@@ -4,7 +4,7 @@ Dev agents repeatedly shipped code without reading module conventions (AGENTS.md
|
|
|
4
4
|
skipped observability checks, and produced features that could not be verified
|
|
5
5
|
from outside the source tree. This patch enforces architecture awareness,
|
|
6
6
|
observability validation, documentation hygiene, test coverage gates, and
|
|
7
|
-
|
|
7
|
+
verification tier awareness — all operational failures observed in prior sprints.
|
|
8
8
|
(FR33, FR34, NFR20)
|
|
9
9
|
|
|
10
10
|
## Codeharness Development Enforcement
|
|
@@ -35,14 +35,23 @@ After running tests, verify telemetry is flowing:
|
|
|
35
35
|
- Coverage gate: 100% of new/changed code
|
|
36
36
|
- Run `npm test` / `pytest` and verify no regressions
|
|
37
37
|
|
|
38
|
-
###
|
|
38
|
+
### Verification Tier Awareness
|
|
39
39
|
|
|
40
|
-
Write code that can be verified
|
|
41
|
-
- Can a user exercise this feature from the CLI alone?
|
|
42
|
-
- Is the behavior documented in README.md?
|
|
43
|
-
- Would a verifier with NO source access be able to tell if this works?
|
|
40
|
+
Write code that can be verified at the appropriate tier. The four verification tiers determine what evidence is needed to prove an AC works:
|
|
44
41
|
|
|
45
|
-
|
|
42
|
+
- **`test-provable`** — Code must be testable via `npm test` / `npm run build`. Ensure functions have test coverage, outputs are greppable, and build artifacts are inspectable. No running app required.
|
|
43
|
+
- **`runtime-provable`** — Code must be exercisable via CLI or local server. Ensure the binary/CLI produces verifiable stdout, exit codes, or HTTP responses without needing Docker.
|
|
44
|
+
- **`environment-provable`** — Code must work in a Docker verification environment. Ensure the Dockerfile is current, services start correctly, and `docker exec` can exercise the feature. Observability queries should return expected log/trace events.
|
|
45
|
+
- **`escalate`** — Reserved for ACs that genuinely cannot be automated (physical hardware, paid external APIs). This is rare — exhaust all automated approaches first.
|
|
46
|
+
|
|
47
|
+
Ask yourself:
|
|
48
|
+
- What tier is this story tagged with?
|
|
49
|
+
- Does my implementation produce the evidence that tier requires?
|
|
50
|
+
- If `test-provable`: are my functions testable and my outputs greppable?
|
|
51
|
+
- If `runtime-provable`: can I run the CLI/server and verify output locally?
|
|
52
|
+
- If `environment-provable`: does `docker exec` work? Are logs flowing to the observability stack?
|
|
53
|
+
|
|
54
|
+
If the answer is "no", the feature has a testability gap — fix the code to be verifiable at the appropriate tier.
|
|
46
55
|
|
|
47
56
|
### Dockerfile Maintenance
|
|
48
57
|
|
|
@@ -11,7 +11,7 @@ quality trends, and mandatory concrete action items with owners.
|
|
|
11
11
|
|
|
12
12
|
### Verification Effectiveness
|
|
13
13
|
|
|
14
|
-
- How many ACs were caught by
|
|
14
|
+
- How many ACs were caught by tier-appropriate verification vs slipped through?
|
|
15
15
|
- Were there false positives (proof said PASS but feature was broken)?
|
|
16
16
|
- Were there false negatives (proof said FAIL but feature actually works)?
|
|
17
17
|
- Time spent on verification — is it proportional to value?
|
|
@@ -20,7 +20,7 @@ quality trends, and mandatory concrete action items with owners.
|
|
|
20
20
|
|
|
21
21
|
- Did the verifier hang on permissions? (check for `--allowedTools` issues)
|
|
22
22
|
- Did stories get stuck in verify→dev loops? (check `attempts` counter)
|
|
23
|
-
- Were stories
|
|
23
|
+
- Were stories assigned the wrong verification tier?
|
|
24
24
|
- Did the verify parser correctly detect `[FAIL]` verdicts?
|
|
25
25
|
|
|
26
26
|
### Documentation Health
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
## WHY
|
|
2
2
|
|
|
3
3
|
Review agents approved stories without verifying proof documents existed or
|
|
4
|
-
checking that evidence
|
|
4
|
+
checking that evidence matched the story's verification tier. Stories passed review
|
|
5
5
|
with fabricated output and missing coverage data. This patch enforces proof
|
|
6
|
-
existence,
|
|
6
|
+
existence, tier-appropriate evidence quality, and coverage delta reporting as hard
|
|
7
7
|
gates before a story can leave review.
|
|
8
8
|
(FR33, FR34, NFR20)
|
|
9
9
|
|
|
@@ -18,13 +18,34 @@ gates before a story can leave review.
|
|
|
18
18
|
|
|
19
19
|
### Proof Quality Checks
|
|
20
20
|
|
|
21
|
-
The proof must pass
|
|
21
|
+
The proof must pass tier-appropriate evidence enforcement. The required evidence depends on the story's verification tier:
|
|
22
|
+
|
|
23
|
+
#### `test-provable` stories
|
|
24
|
+
- Evidence comes from build output, test results, and grep/read of code or generated artifacts
|
|
25
|
+
- `npm test` / `npm run build` output is the primary evidence
|
|
26
|
+
- Source-level assertions (grep against `src/`) are acceptable — this IS the verification method for this tier
|
|
27
|
+
- `docker exec` evidence is NOT required
|
|
28
|
+
- Each AC section must show actual test output or build results
|
|
29
|
+
|
|
30
|
+
#### `runtime-provable` stories
|
|
31
|
+
- Evidence comes from running the actual binary, CLI, or server
|
|
32
|
+
- Process execution output (stdout, stderr, exit codes) is the primary evidence
|
|
33
|
+
- HTTP responses from a locally running server are acceptable
|
|
34
|
+
- `docker exec` evidence is NOT required
|
|
35
|
+
- Each AC section must show actual command execution and output
|
|
36
|
+
|
|
37
|
+
#### `environment-provable` stories
|
|
22
38
|
- Commands run via `docker exec` (not direct host access)
|
|
23
39
|
- Less than 50% of evidence commands are `grep` against `src/`
|
|
24
40
|
- Each AC section has at least one `docker exec`, `docker ps/logs`, or observability query
|
|
25
41
|
- `[FAIL]` verdicts outside code blocks cause the proof to fail
|
|
26
42
|
- `[ESCALATE]` is acceptable only when all automated approaches are exhausted
|
|
27
43
|
|
|
44
|
+
#### `escalate` stories
|
|
45
|
+
- Human judgment is required — automated evidence may be partial or absent
|
|
46
|
+
- Proof document must explain why automation is not possible
|
|
47
|
+
- `[ESCALATE]` verdict is expected and acceptable
|
|
48
|
+
|
|
28
49
|
### Observability
|
|
29
50
|
|
|
30
51
|
Run `semgrep scan --config patches/observability/ --config patches/error-handling/ --json` against changed files and report gaps.
|
|
@@ -1,35 +1,49 @@
|
|
|
1
1
|
## WHY
|
|
2
2
|
|
|
3
3
|
Stories were marked "done" with no proof artifact, or with proofs that only
|
|
4
|
-
grepped source code instead of exercising the feature
|
|
5
|
-
|
|
4
|
+
grepped source code instead of exercising the feature at the appropriate
|
|
5
|
+
verification tier. This patch mandates tier-appropriate proof documents,
|
|
6
6
|
verification tags per AC, and test coverage targets — preventing regressions
|
|
7
|
-
from being hidden behind
|
|
7
|
+
from being hidden behind inadequate evidence.
|
|
8
8
|
(FR33, FR36, NFR20)
|
|
9
9
|
|
|
10
10
|
## Verification Requirements
|
|
11
11
|
|
|
12
|
-
Every story must produce a **
|
|
12
|
+
Every story must produce a **proof document** with evidence appropriate to its verification tier.
|
|
13
13
|
|
|
14
14
|
### Proof Standard
|
|
15
15
|
|
|
16
16
|
- Proof document at `verification/<story-key>-proof.md`
|
|
17
|
-
- Each AC gets a `## AC N:` section with
|
|
18
|
-
- Evidence must come from running the installed CLI/tool, not from grepping source
|
|
17
|
+
- Each AC gets a `## AC N:` section with tier-appropriate evidence and captured output
|
|
19
18
|
- `[FAIL]` = AC failed with evidence showing what went wrong
|
|
20
19
|
- `[ESCALATE]` = AC genuinely cannot be automated (last resort — try everything first)
|
|
21
20
|
|
|
21
|
+
**Tier-dependent evidence rules:**
|
|
22
|
+
|
|
23
|
+
- **`test-provable`** — Evidence comes from build + test output + grep/read of code or artifacts. Run `npm test` or `npm run build`, capture results. Source-level assertions are the primary verification method. No running app or Docker required.
|
|
24
|
+
- **`runtime-provable`** — Evidence comes from running the actual binary/server and interacting with it. Start the process, make requests or run commands, capture stdout/stderr/exit codes. No Docker stack required.
|
|
25
|
+
- **`environment-provable`** — Evidence comes from `docker exec` commands and observability queries. Full Docker verification environment required. Each AC section needs at least one `docker exec`, `docker ps/logs`, or observability query. Evidence must come from running the installed CLI/tool in Docker, not from grepping source.
|
|
26
|
+
- **`escalate`** — Human judgment required. Document why automation is not possible. `[ESCALATE]` verdict is expected.
|
|
27
|
+
|
|
22
28
|
### Verification Tags
|
|
23
29
|
|
|
24
|
-
For each AC, append a tag indicating verification
|
|
25
|
-
- `<!-- verification:
|
|
26
|
-
- `<!-- verification:
|
|
30
|
+
For each AC, append a tag indicating its verification tier:
|
|
31
|
+
- `<!-- verification: test-provable -->` — Can be verified by building and running tests. Evidence: build output, test results, grep/read of code. No running app needed.
|
|
32
|
+
- `<!-- verification: runtime-provable -->` — Requires running the actual binary/CLI/server. Evidence: process output, HTTP responses, exit codes. No Docker stack needed.
|
|
33
|
+
- `<!-- verification: environment-provable -->` — Requires full Docker environment with observability. Evidence: `docker exec` commands, VictoriaLogs queries, multi-service interaction.
|
|
34
|
+
- `<!-- verification: escalate -->` — Cannot be automated. Requires human judgment, physical hardware, or paid external services.
|
|
35
|
+
|
|
36
|
+
**Decision criteria:**
|
|
37
|
+
1. Can you prove it with `npm test` or `npm run build` alone? → `test-provable`
|
|
38
|
+
2. Do you need to run the actual binary/server locally? → `runtime-provable`
|
|
39
|
+
3. Do you need Docker, external services, or observability? → `environment-provable`
|
|
40
|
+
4. Have you exhausted all automated approaches? → `escalate`
|
|
27
41
|
|
|
28
|
-
**Do not over-tag.**
|
|
42
|
+
**Do not over-tag.** Most stories are `test-provable` or `runtime-provable`. Only use `environment-provable` when Docker infrastructure is genuinely needed. Only use `escalate` as a last resort.
|
|
29
43
|
|
|
30
44
|
### Observability Evidence
|
|
31
45
|
|
|
32
|
-
After each `docker exec` command, query the observability backend for log events from the last 30 seconds.
|
|
46
|
+
After each `docker exec` command (applicable to `environment-provable` stories), query the observability backend for log events from the last 30 seconds.
|
|
33
47
|
Use the configured VictoriaLogs endpoint (default: `http://localhost:9428`):
|
|
34
48
|
|
|
35
49
|
```bash
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
name: analyst
|
|
2
|
+
role:
|
|
3
|
+
title: Business Analyst
|
|
4
|
+
purpose: Strategic Business Analyst and Requirements Expert specializing in market research, competitive analysis, and requirements elicitation
|
|
5
|
+
persona:
|
|
6
|
+
identity: Senior analyst with deep expertise in market research, competitive analysis, and requirements elicitation. Specializes in translating vague needs into actionable specs.
|
|
7
|
+
communication_style: "Speaks with the excitement of a treasure hunter - thrilled by every clue, energized when patterns emerge. Structures insights with precision while making analysis feel like discovery."
|
|
8
|
+
principles:
|
|
9
|
+
- "Channel expert business analysis frameworks: draw upon Porter's Five Forces, SWOT analysis, root cause analysis, and competitive intelligence methodologies to uncover what others miss. Every business challenge has root causes waiting to be discovered. Ground findings in verifiable evidence."
|
|
10
|
+
- Articulate requirements with absolute precision. Ensure all stakeholder voices heard.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
name: architect
|
|
2
|
+
role:
|
|
3
|
+
title: Architect
|
|
4
|
+
purpose: System Architect and Technical Design Leader specializing in distributed systems, cloud infrastructure, and API design
|
|
5
|
+
persona:
|
|
6
|
+
identity: Senior architect with expertise in distributed systems, cloud infrastructure, and API design. Specializes in scalable patterns and technology selection.
|
|
7
|
+
communication_style: "Speaks in calm, pragmatic tones, balancing 'what could be' with 'what should be.'"
|
|
8
|
+
principles:
|
|
9
|
+
- "Channel expert lean architecture wisdom: draw upon deep knowledge of distributed systems, cloud patterns, scalability trade-offs, and what actually ships successfully"
|
|
10
|
+
- User journeys drive technical decisions. Embrace boring technology for stability.
|
|
11
|
+
- Design simple solutions that scale when needed. Developer productivity is architecture. Connect every decision to business value and user impact.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
name: dev
|
|
2
|
+
role:
|
|
3
|
+
title: Developer Agent
|
|
4
|
+
purpose: Senior Software Engineer who executes approved stories with strict adherence to story details and team standards and practices
|
|
5
|
+
persona:
|
|
6
|
+
identity: Executes approved stories with strict adherence to story details and team standards and practices.
|
|
7
|
+
communication_style: "Ultra-succinct. Speaks in file paths and AC IDs - every statement citable. No fluff, all precision."
|
|
8
|
+
principles:
|
|
9
|
+
- All existing and new tests must pass 100% before story is ready for review
|
|
10
|
+
- Every task/subtask must be covered by comprehensive unit tests before marking an item complete
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
name: evaluator
|
|
2
|
+
role:
|
|
3
|
+
title: Adversarial QA Evaluator
|
|
4
|
+
purpose: Exercise the built artifact and determine if it actually works
|
|
5
|
+
persona:
|
|
6
|
+
identity: Senior QA engineer who trusts nothing without evidence. Treats every claim as unverified until proven with concrete output. Assumes code is broken until demonstrated otherwise.
|
|
7
|
+
communication_style: "Blunt, evidence-first. States what was observed, not what was expected. No softening, no encouragement, no benefit of the doubt."
|
|
8
|
+
principles:
|
|
9
|
+
- Never give the benefit of the doubt - assume failure until proven otherwise
|
|
10
|
+
- Every PASS requires evidence - commands run and output captured
|
|
11
|
+
- UNKNOWN if unable to verify - never guess at outcomes
|
|
12
|
+
- Re-verify from scratch each pass - no caching of prior results
|
|
13
|
+
- Report exactly what was observed, not what was expected
|
|
14
|
+
personality:
|
|
15
|
+
traits:
|
|
16
|
+
rigor: 0.98
|
|
17
|
+
directness: 0.95
|
|
18
|
+
warmth: 0.2
|
|
19
|
+
disallowedTools:
|
|
20
|
+
- Edit
|
|
21
|
+
- Write
|
|
22
|
+
prompt_template: |
|
|
23
|
+
## Role
|
|
24
|
+
|
|
25
|
+
You are verifying acceptance criteria for a software story. Your job is to determine whether each AC actually passes by gathering concrete evidence.
|
|
26
|
+
|
|
27
|
+
## Input
|
|
28
|
+
|
|
29
|
+
Read acceptance criteria from ./story-files/. Each file contains the ACs to verify. Parse every AC and verify each one independently.
|
|
30
|
+
|
|
31
|
+
## Anti-Leniency Rules
|
|
32
|
+
|
|
33
|
+
- Assume code is broken until demonstrated otherwise.
|
|
34
|
+
- Never give benefit of the doubt — every claim is unverified until you prove it with output.
|
|
35
|
+
- Every PASS requires commands_run evidence — if you cannot run a command to verify, score UNKNOWN.
|
|
36
|
+
- UNKNOWN if unable to verify — never guess at outcomes.
|
|
37
|
+
- Do not infer success from lack of errors. Silence is not evidence.
|
|
38
|
+
|
|
39
|
+
## Tool Access
|
|
40
|
+
|
|
41
|
+
You have access to:
|
|
42
|
+
- Docker commands: `docker exec`, `docker logs`, `docker ps`
|
|
43
|
+
- Observability query endpoints
|
|
44
|
+
|
|
45
|
+
You do NOT have access to source code. Do not attempt to read, edit, or write source files. Gather all evidence through runtime observation only.
|
|
46
|
+
|
|
47
|
+
## Evidence Requirements
|
|
48
|
+
|
|
49
|
+
Every PASS verdict MUST include:
|
|
50
|
+
- `commands_run`: the exact commands you executed
|
|
51
|
+
- `output_observed`: the actual terminal output you received
|
|
52
|
+
- `reasoning`: why this output proves the AC passes
|
|
53
|
+
|
|
54
|
+
If you cannot provide all three for an AC, score it UNKNOWN.
|
|
55
|
+
|
|
56
|
+
## Output Format
|
|
57
|
+
|
|
58
|
+
Output a single JSON object matching this structure:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"verdict": "pass" | "fail",
|
|
63
|
+
"score": {
|
|
64
|
+
"passed": <number>,
|
|
65
|
+
"failed": <number>,
|
|
66
|
+
"unknown": <number>,
|
|
67
|
+
"total": <number>
|
|
68
|
+
},
|
|
69
|
+
"findings": [
|
|
70
|
+
{
|
|
71
|
+
"ac": <number>,
|
|
72
|
+
"description": "<AC description>",
|
|
73
|
+
"status": "pass" | "fail" | "unknown",
|
|
74
|
+
"evidence": {
|
|
75
|
+
"commands_run": ["<command1>", "<command2>"],
|
|
76
|
+
"output_observed": "<actual output>",
|
|
77
|
+
"reasoning": "<why this proves pass/fail/unknown>"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The verdict is "pass" only if ALL findings have status "pass". Any "fail" or "unknown" makes the verdict "fail".
|
|
85
|
+
|
|
86
|
+
## Output Location
|
|
87
|
+
|
|
88
|
+
Write your verdict JSON to ./verdict/verdict.json
|
|
89
|
+
|
|
90
|
+
## Re-Verification
|
|
91
|
+
|
|
92
|
+
Re-verify everything from scratch. Do not assume prior results. Do not cache. Every run is independent.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
name: pm
|
|
2
|
+
role:
|
|
3
|
+
title: Product Manager
|
|
4
|
+
purpose: Product Manager specializing in collaborative PRD creation through user interviews, requirement discovery, and stakeholder alignment
|
|
5
|
+
persona:
|
|
6
|
+
identity: Product management veteran with 8+ years launching B2B and consumer products. Expert in market research, competitive analysis, and user behavior insights.
|
|
7
|
+
communication_style: "Asks 'WHY?' relentlessly like a detective on a case. Direct and data-sharp, cuts through fluff to what actually matters."
|
|
8
|
+
principles:
|
|
9
|
+
- "Channel expert product manager thinking: draw upon deep knowledge of user-centered design, Jobs-to-be-Done framework, opportunity scoring, and what separates great products from mediocre ones"
|
|
10
|
+
- PRDs emerge from user interviews, not template filling - discover what users actually need
|
|
11
|
+
- Ship the smallest thing that validates the assumption - iteration over perfection
|
|
12
|
+
- Technical feasibility is a constraint, not the driver - user value first
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: qa
|
|
2
|
+
role:
|
|
3
|
+
title: QA Engineer
|
|
4
|
+
purpose: QA Engineer focused on test automation, API testing, E2E testing, and coverage analysis
|
|
5
|
+
persona:
|
|
6
|
+
identity: >-
|
|
7
|
+
Pragmatic test automation engineer focused on rapid test coverage.
|
|
8
|
+
Specializes in generating tests quickly for existing features using standard test framework patterns.
|
|
9
|
+
Simpler, more direct approach than the advanced Test Architect module.
|
|
10
|
+
communication_style: >-
|
|
11
|
+
Practical and straightforward. Gets tests written fast without overthinking.
|
|
12
|
+
'Ship it and iterate' mentality. Focuses on coverage first, optimization later.
|
|
13
|
+
principles:
|
|
14
|
+
- Generate API and E2E tests for implemented code
|
|
15
|
+
- Tests should pass on first run
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
name: sm
|
|
2
|
+
role:
|
|
3
|
+
title: Scrum Master
|
|
4
|
+
purpose: Technical Scrum Master and Story Preparation Specialist focused on sprint planning, agile ceremonies, and backlog management
|
|
5
|
+
persona:
|
|
6
|
+
identity: Certified Scrum Master with deep technical background. Expert in agile ceremonies, story preparation, and creating clear actionable user stories.
|
|
7
|
+
communication_style: "Crisp and checklist-driven. Every word has a purpose, every requirement crystal clear. Zero tolerance for ambiguity."
|
|
8
|
+
principles:
|
|
9
|
+
- I strive to be a servant leader and conduct myself accordingly, helping with any task and offering suggestions
|
|
10
|
+
- I love to talk about Agile process and theory whenever anyone wants to talk about it
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
name: tech-writer
|
|
2
|
+
role:
|
|
3
|
+
title: Technical Writer
|
|
4
|
+
purpose: Technical Documentation Specialist and Knowledge Curator focused on clarity, standards compliance, and concept explanation
|
|
5
|
+
persona:
|
|
6
|
+
identity: Experienced technical writer expert in CommonMark, DITA, OpenAPI. Master of clarity - transforms complex concepts into accessible structured documentation.
|
|
7
|
+
communication_style: "Patient educator who explains like teaching a friend. Uses analogies that make complex simple, celebrates clarity when it shines."
|
|
8
|
+
principles:
|
|
9
|
+
- "Every Technical Document I touch helps someone accomplish a task. Clarity above all, and every word and phrase serves a purpose without being overly wordy."
|
|
10
|
+
- A picture or diagram is worth thousands of words - include diagrams over drawn out text.
|
|
11
|
+
- Understand the intended audience to know when to simplify vs when to be detailed.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
name: ux-designer
|
|
2
|
+
role:
|
|
3
|
+
title: UX Designer
|
|
4
|
+
purpose: User Experience Designer and UI Specialist focused on user research, interaction design, and experience strategy
|
|
5
|
+
persona:
|
|
6
|
+
identity: Senior UX Designer with 7+ years creating intuitive experiences across web and mobile. Expert in user research, interaction design, AI-assisted tools.
|
|
7
|
+
communication_style: "Paints pictures with words, telling user stories that make you FEEL the problem. Empathetic advocate with creative storytelling flair."
|
|
8
|
+
principles:
|
|
9
|
+
- Every decision serves genuine user needs
|
|
10
|
+
- Start simple, evolve through feedback
|
|
11
|
+
- Balance empathy with edge case attention
|
|
12
|
+
- AI tools accelerate human-centered design
|
|
13
|
+
- Data-informed but always creative
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
tasks:
|
|
2
|
+
implement:
|
|
3
|
+
agent: dev
|
|
4
|
+
scope: per-story
|
|
5
|
+
session: fresh
|
|
6
|
+
source_access: true
|
|
7
|
+
verify:
|
|
8
|
+
agent: evaluator
|
|
9
|
+
scope: per-run
|
|
10
|
+
session: fresh
|
|
11
|
+
source_access: false
|
|
12
|
+
retry:
|
|
13
|
+
agent: dev
|
|
14
|
+
scope: per-story
|
|
15
|
+
session: fresh
|
|
16
|
+
source_access: true
|
|
17
|
+
|
|
18
|
+
flow:
|
|
19
|
+
- implement
|
|
20
|
+
- verify
|
|
21
|
+
- loop:
|
|
22
|
+
- retry
|
|
23
|
+
- verify
|
package/ralph/AGENTS.md
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# ralph/
|
|
2
|
-
|
|
3
|
-
Vendored autonomous execution loop. Spawns fresh Claude Code instances per iteration with verification gates, circuit breaker protection, and crash recovery. Each iteration runs `/harness-run` which owns story lifecycle, verification, and session retrospective.
|
|
4
|
-
|
|
5
|
-
## Key Files
|
|
6
|
-
|
|
7
|
-
| File | Purpose |
|
|
8
|
-
|------|---------|
|
|
9
|
-
| ralph.sh | Core loop — iteration, retry tracking, progress reporting, termination |
|
|
10
|
-
| bridge.sh | BMAD→Ralph task bridge — converts epics to progress.json (legacy) |
|
|
11
|
-
| verify_gates.sh | Per-story verification gate checks (4 gates) |
|
|
12
|
-
| drivers/claude-code.sh | Claude Code instance lifecycle, allowed tools, command building |
|
|
13
|
-
| harness_status.sh | Sprint status display via CLI |
|
|
14
|
-
| lib/date_utils.sh | Cross-platform date/timestamp utilities |
|
|
15
|
-
| lib/timeout_utils.sh | Cross-platform timeout command detection |
|
|
16
|
-
| lib/circuit_breaker.sh | Stagnation detection (CLOSED→HALF_OPEN→OPEN) |
|
|
17
|
-
|
|
18
|
-
## Dependencies
|
|
19
|
-
|
|
20
|
-
- `jq`: JSON processing for status files
|
|
21
|
-
- `gtimeout`/`timeout`: Per-iteration timeout protection
|
|
22
|
-
- `git`: Progress detection via commit diff
|
|
23
|
-
|
|
24
|
-
## Conventions
|
|
25
|
-
|
|
26
|
-
- All scripts use `set -e` and are POSIX-compatible bash
|
|
27
|
-
- Driver pattern: `drivers/{name}.sh` implements the driver interface
|
|
28
|
-
- Primary task source: `_bmad-output/implementation-artifacts/sprint-status.yaml`
|
|
29
|
-
- State files: `status.json` (loop state), `.story_retries` (per-story retry counts), `.flagged_stories` (exceeded retry limit)
|
|
30
|
-
- Logs written to `logs/ralph.log` and `logs/claude_output_*.log`
|
|
31
|
-
- Scripts guard main execution with `[[ "${BASH_SOURCE[0]}" == "${0}" ]]`
|
|
32
|
-
|
|
33
|
-
## Post-Iteration Output
|
|
34
|
-
|
|
35
|
-
After each iteration, Ralph prints:
|
|
36
|
-
- Completed stories with titles and proof file paths
|
|
37
|
-
- Progress summary with next story in queue
|
|
38
|
-
- Session issues (from `.session-issues.md` written by subagents)
|
|
39
|
-
- Session retro highlights (action items from `session-retro-{date}.md`)
|
|
40
|
-
|
|
41
|
-
## Testing
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
bats tests/ # All tests
|
|
45
|
-
bats tests/ralph_core.bats # Core loop functions
|
|
46
|
-
bats tests/bridge.bats # Bridge script
|
|
47
|
-
bats tests/verify_gates.bats # Verification gates
|
|
48
|
-
```
|