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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "0.27.0",
4
- "generatedAt": "2026-10-25T09:18:02.901Z",
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 FAIL stems from criterion ambiguity — two competent reviewers could disagree about what the criterion
33
- requires — rather than a demonstrable defect, prefix the item with `[spec-ambiguity]` and state the
34
- interpretation you graded against, so the generator and the operator reading the critique can tell a
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. Add tests only where the steps or
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>`). Build on those. Any other uncommitted change is unknown state — emit
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` — and do not restate or contradict them; when they disagree with a
54
- manifest, mention it in a `note`. Do not read source trees, test directories, vendored or generated
55
- directories. Do not write any file other than `signals.json` in `<outputDir>`.
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.27.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",