ralphctl 0.27.0 → 0.28.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 +1 -0
- package/dist/{cli-EYDXERW6.mjs → chunk-WAHQPVTG.mjs} +22089 -46756
- package/dist/cli-W3M7L4TP.mjs +2772 -0
- package/dist/cli.mjs +1 -1
- package/dist/launch-VBRTQP4L.mjs +20602 -0
- package/dist/manifest.json +2 -2
- package/dist/prompts/_partials/conventions-claude-md.md +2 -0
- package/dist/prompts/_partials/evaluator-grading-rules.md +7 -4
- package/dist/prompts/implement/template.md +6 -2
- package/dist/prompts/readiness/template.md +6 -3
- package/dist/prompts/reproduce/template.md +7 -0
- package/package.json +1 -1
package/dist/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"packageVersion": "0.
|
|
4
|
-
"generatedAt": "2026-
|
|
3
|
+
"packageVersion": "0.28.0",
|
|
4
|
+
"generatedAt": "2026-11-11T08:06:25.094Z",
|
|
5
5
|
"assets": [
|
|
6
6
|
"agent-definitions/ralphctl-evaluator.md",
|
|
7
7
|
"agent-definitions/ralphctl-generator.md",
|
|
@@ -11,6 +11,8 @@ invocation, not as a tutorial or README.
|
|
|
11
11
|
is one verifiable claim.
|
|
12
12
|
- Target under 200 lines — adherence drops as the file grows, so brevity is load-bearing. With an existing
|
|
13
13
|
file, add sections only.
|
|
14
|
+
- An existing file that is only an `@AGENTS.md` line imports the repository's `AGENTS.md`: keep that line first
|
|
15
|
+
and add only Claude-specific sections below it — the imported rules already load.
|
|
14
16
|
|
|
15
17
|
**"Read on demand" pattern** — for sections that an agent rarely needs mid-task, list them under a
|
|
16
18
|
`## References` heading with paths rather than embedding the content inline:
|
|
@@ -28,10 +28,13 @@ These rules apply every round, identically on a first evaluation and on a re-eva
|
|
|
28
28
|
- **Critique format.** Write the `critique` as one `- ` line per failed item: `[Dimension · criterion id]`,
|
|
29
29
|
what you observed, what it should do instead, and where to look (`path:line` or test name). The generator
|
|
30
30
|
starts from the location, so an item without one usually costs it a round. When a defect is one instance of
|
|
31
|
-
a pattern, name the pattern and list the other locations you saw, so one round fixes every instance. When
|
|
32
|
-
a
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
a pattern, name the pattern and list the other locations you saw, so one round fixes every instance. When a
|
|
32
|
+
FAIL rests on a project convention rather than a criterion, cite the context file and line that states it,
|
|
33
|
+
since the generator's tool may not load that file, or the sibling code at `path:line` that shows it; do not
|
|
34
|
+
fail on a convention nothing in the repository states or shows.
|
|
35
|
+
When a FAIL stems from criterion ambiguity — two competent reviewers could disagree about what the
|
|
36
|
+
criterion requires — rather than a demonstrable defect, prefix the item with `[spec-ambiguity]` and state
|
|
37
|
+
the interpretation you graded against, so the generator and the operator reading the critique can tell a
|
|
35
38
|
disputed criterion from a code defect.
|
|
36
39
|
- **Evidence over suspicion.** A FAIL needs a concrete observation, just as a PASS does: a reproduced failing
|
|
37
40
|
command, or cited code that demonstrably violates the criterion. Do not fail on speculation about a path
|
|
@@ -118,7 +118,10 @@ sessions and may be stale.
|
|
|
118
118
|
created before finishing — they would otherwise be committed with the task.
|
|
119
119
|
- **Stay in scope.** Change what the steps request or clearly require. Do not add unrequested
|
|
120
120
|
abstractions, docstrings, documentation, supporting files, or compatibility shims; when you spot a
|
|
121
|
-
worthwhile extra, list it in a `note` signal rather than doing it.
|
|
121
|
+
worthwhile extra, list it in a `note` signal rather than doing it. Don't add error handling, fallbacks or
|
|
122
|
+
validation for states the surrounding code already rules out — validate only at system boundaries — and
|
|
123
|
+
don't add comments or type annotations to code you didn't change; a smaller diff is cheaper to review and
|
|
124
|
+
verify. Add tests only where the steps or
|
|
122
125
|
criteria call for them or the project already keeps tests for this kind of change — sized like the
|
|
123
126
|
neighbouring test files, roughly one focused test per stated behaviour — and don't turn scratch
|
|
124
127
|
checks into permanent test files.
|
|
@@ -190,7 +193,8 @@ on the first attempt, not to discover problems after the fact.
|
|
|
190
193
|
4. **Working tree state** — inspect the working tree for uncommitted changes before writing anything.
|
|
191
194
|
Two kinds are expected: the reproduction test named in `<reproduction>`, and earlier work on this
|
|
192
195
|
task (signalled by a non-empty `<prior_critique>`, `<retry_feedback>`, `<prior_attempts>` or
|
|
193
|
-
`<restored_work>`
|
|
196
|
+
`<restored_work>` — except that a `<retry_feedback>` saying its changes were set aside means the
|
|
197
|
+
tree holds none of them until you apply the saved patch). Build on those. Any other uncommitted change is unknown state — emit
|
|
194
198
|
`task-blocked` naming the files rather than building on it.
|
|
195
199
|
5. **Git log orientation** — run `git log --oneline -20` to see what prior tasks on this branch have
|
|
196
200
|
committed. Cross-reference with `<prior_progress>` to avoid re-implementing or conflicting with
|
|
@@ -42,6 +42,7 @@ bottom of this prompt.
|
|
|
42
42
|
<target_file_conventions>
|
|
43
43
|
{{TARGET_FILE_CONVENTIONS}}
|
|
44
44
|
</target_file_conventions>
|
|
45
|
+
<target_cli_loads>{{TARGET_CLI_LOADS}}</target_cli_loads>
|
|
45
46
|
</inputs>
|
|
46
47
|
|
|
47
48
|
<constraints>
|
|
@@ -50,9 +51,11 @@ bottom of this prompt.
|
|
|
50
51
|
`Cargo.toml`, `go.mod`, `Makefile`, `mise.toml`, `.tool-versions`, `.github/workflows/*.yml`, `README.md`,
|
|
51
52
|
top-level `scripts/` entries, `flake.nix`. Also read other tools' context files and onboarding docs when
|
|
52
53
|
present — `AGENTS.md`, `CLAUDE.md`, `.github/copilot-instructions.md`, `.cursor/rules/`, `.grok/rules/`,
|
|
53
|
-
`.claude/rules/`, `CONTRIBUTING.md
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
`.claude/rules/`, `CONTRIBUTING.md`. `<target_cli_loads>` names the ones the `{{CURRENT_TOOL}}` CLI loads by
|
|
55
|
+
itself: do not restate or contradict those; from a context file it does not load, carry over the rules that
|
|
56
|
+
still apply, since its sessions never see that file. When they disagree with a manifest, mention it in a
|
|
57
|
+
`note`. Do not read source trees, test directories, vendored or generated directories. Do not write any file
|
|
58
|
+
other than `signals.json` in `<outputDir>`.
|
|
56
59
|
|
|
57
60
|
**Evidence requirement.** For each tech-stack claim in the context file body, quote the file that
|
|
58
61
|
establishes it (e.g. `"build": "tsup src/index.ts"` from `package.json` → `## Build & Run` bullet).
|
|
@@ -103,6 +103,13 @@ Choose the smallest test that demonstrates the defect exactly as reported — no
|
|
|
103
103
|
narrower one. Add it to an existing relevant test file when one fits naturally; otherwise create a new
|
|
104
104
|
test file following the project's own conventions.
|
|
105
105
|
|
|
106
|
+
Assert the behaviour the report or done criteria state — the expected value, exception, or output — not
|
|
107
|
+
only that the result differs from today's wrong value: a test that only rejects the current output also
|
|
108
|
+
accepts a wrong fix. Do not assert what the report does not require (formatting or ordering it never
|
|
109
|
+
mentions, a particular helper or call sequence) — that rejects a correct fix written another way. If the
|
|
110
|
+
defect is a hang, bound it with a timeout inside the test so it fails instead of hanging — a run the
|
|
111
|
+
harness has to kill (timeout or runaway output) is not accepted as a reproduction.
|
|
112
|
+
|
|
106
113
|
### Phase 3 — Run it and capture the failure
|
|
107
114
|
|
|
108
115
|
Run the new test in isolation using the project's own test runner. Confirm it fails, and confirm the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ralphctl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"description": "A ralph harness for long-running AI coding tasks — a generator-evaluator loop that drives Claude Code, GitHub Copilot CLI, OpenAI Codex CLI, OpenCode or Grok Build CLI across one or more repositories",
|
|
5
5
|
"homepage": "https://github.com/lukas-grigis/ralphctl",
|
|
6
6
|
"type": "module",
|