ralphctl 0.22.0 → 0.23.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 CHANGED
@@ -125,6 +125,7 @@ ralphctl sprint progress <sprint-id>
125
125
  # Add / inspect tickets
126
126
  ralphctl ticket add --title "<title>"
127
127
  ralphctl ticket list
128
+ ralphctl ticket publish <ticket-id>
128
129
 
129
130
  # Manage sprint state
130
131
  ralphctl sprint activate <sprint-id>
@@ -221,6 +222,25 @@ Key properties:
221
222
  For the full architectural picture see [`.claude/docs/ARCHITECTURE.md`](./.claude/docs/ARCHITECTURE.md) and [
222
223
  `.claude/docs/REQUIREMENTS.md`](./.claude/docs/REQUIREMENTS.md).
223
224
 
225
+ ### GitHub and GitLab issues
226
+
227
+ ralphctl can create a GitHub or GitLab issue from a local ticket, and can post approved requirements as a
228
+ comment on a linked issue. Both writes are opt-in. Neither rewrites the issue body.
229
+
230
+ **Create on add.** The TUI add-ticket wizard asks whether to create a tracker issue (default **No**) when the
231
+ new ticket has no link and the project's first configured repository resolves to GitHub or GitLab. Yes creates
232
+ the issue with that ticket's title and body and stores the returned URL as the ticket's link.
233
+ `ralphctl ticket add` saves the ticket locally and does not ask.
234
+
235
+ **Comment on approval.** Refine can post approved requirements as a comment (default **No**, only when the
236
+ ticket has a link). The approval menu default is **Approve**. **Post as comment** appears only for a linked
237
+ ticket; choosing it posts the approved requirements as a new comment on that linked issue. Repeating the same
238
+ approved text does not add another comment.
239
+
240
+ **Retry with publish.** `ralphctl ticket publish <ticketId>` and sprint-detail `p` run the same write with no
241
+ second prompt: create when the ticket has no link, comment when it already has a link and approved
242
+ requirements. Create uses the first configured repository origin. Comments use the ticket's existing link.
243
+
224
244
  ---
225
245
 
226
246
  ## Providers
@@ -250,7 +270,7 @@ that file in sequence; each later pass keeps the previous body at `AGENTS.md.bak
250
270
  so path scope is the fine-grained safety envelope.
251
271
  - **OpenCode** — vendor-neutral: it fronts 75+ providers and local runtimes on a bring-your-own-key model, so
252
272
  you can run a specific model, a local model, or no account at all.
253
- - **Grok Build CLI** — xAI's coding CLI (`grok-4.6` / `grok-4.5`). Read-only flows deny edit and shell by
273
+ - **Grok Build CLI** — xAI's coding CLI (`grok-4.7` / `grok-4.6`). Read-only flows deny edit and shell by
254
274
  permission rule (`--deny 'Edit(./**)'`, cwd-rooted, plus `--deny 'Bash(*)'` and both shell tool ids); Grok
255
275
  has no separate `write` tool, so creating `signals.json` outside the denied path stays possible. Both Grok
256
276
  surfaces pass `--trust`, since the `AGENTS.md` and `.grok/skills` it loads at startup are files ralphctl
@@ -271,9 +291,9 @@ model ids, mixing backends, and known limitations.
271
291
 
272
292
  Hit a rough edge with any provider? Please [open an issue](https://github.com/lukas-grigis/ralphctl/issues).
273
293
 
274
- One-shot configuration: `ralphctl settings apply-preset <name>` where `<name>` is one of 22 presets —
294
+ One-shot configuration: `ralphctl settings apply-preset <name>` where `<name>` is one of 26 presets —
275
295
  `standard`, `economic`, `strong-gate`, `fast`, and `frontier` families, each in `mixed` / `claude-only` /
276
- `copilot-only` / `codex-only` variants, plus `opencode-only` and `grok-only`.
296
+ `copilot-only` / `codex-only` / `grok-*` variants, plus `opencode-only` in the standard family.
277
297
 
278
298
  ---
279
299
 
@@ -308,7 +328,7 @@ Configure via the TUI `Settings` view or one-shot CLI commands.
308
328
  `apply-preset`.
309
329
 
310
330
  <details>
311
- <summary>All 22 presets</summary>
331
+ <summary>All 26 presets</summary>
312
332
 
313
333
  ```bash
314
334
  # Standard — flagship model per flow
@@ -324,34 +344,40 @@ ralphctl settings apply-preset mixed-economic
324
344
  ralphctl settings apply-preset claude-economic
325
345
  ralphctl settings apply-preset copilot-economic
326
346
  ralphctl settings apply-preset codex-economic
347
+ ralphctl settings apply-preset grok-economic
327
348
 
328
349
  # Strong-gate — cheap generator, permanently-flagship evaluator gate
329
350
  ralphctl settings apply-preset mixed-strong-gate
330
351
  ralphctl settings apply-preset claude-strong-gate
331
352
  ralphctl settings apply-preset copilot-strong-gate
332
353
  ralphctl settings apply-preset codex-strong-gate
354
+ ralphctl settings apply-preset grok-strong-gate
333
355
 
334
356
  # Fast — cheapest viable tier at low effort; plateau settles rather than escalating (escalateOnPlateau=false)
335
357
  ralphctl settings apply-preset mixed-fast
336
358
  ralphctl settings apply-preset claude-fast
337
359
  ralphctl settings apply-preset copilot-fast
338
360
  ralphctl settings apply-preset codex-fast
361
+ ralphctl settings apply-preset grok-fast
339
362
 
340
- # Frontier — flagship everywhere at max effort
363
+ # Frontier — the vendor's top model on plan/implement at max effort; light flows stay below max.
364
+ # Claude/Codex step up to Fable 5.1 / gpt-6-astra (Fable 5.1 needs a non-ZDR org);
365
+ # Copilot/Grok keep their flagship (Opus 4.8 / grok-4.7).
341
366
  ralphctl settings apply-preset mixed-frontier
342
367
  ralphctl settings apply-preset claude-frontier
343
368
  ralphctl settings apply-preset copilot-frontier
344
369
  ralphctl settings apply-preset codex-frontier
370
+ ralphctl settings apply-preset grok-frontier
345
371
  ```
346
372
 
347
- Twenty-two presets ship, all equally first-class — none is marked default. `opencode-only` and `grok-only`
348
- sit in the standard family as single-member extras: `opencode-only` because every free-tier model is at the
349
- same (zero) price point, so `economic` / `frontier` variants of it would differ in name only; `grok-only`
350
- because mixed presets were not rerouted onto Grok and no grok-economic / fast / frontier / strong-gate
351
- variants ship. Applying a
352
- preset stamps the entire `ai` section plus `harness.escalateOnPlateau` in one transaction (`fast` stamps it
353
- `false` so a plateau settles; all others stamp it `true`). On a fresh install the welcome view silently
354
- auto-seeds a preset based on which provider CLIs it detects on `PATH`.
373
+ Twenty-six presets ship, all equally first-class — none is marked default. `opencode-only` stays a
374
+ single preset in the standard family: every free-tier model is at the same (zero) price point, so
375
+ `economic` / `frontier` variants of it would differ in name only. Grok has a variant in every family
376
+ (`grok-4.5` / `grok-4.6` / `grok-4.7`). Mixed presets stay a cross-provider split (Claude author,
377
+ Codex critic) and were not rerouted onto Grok. Applying a preset stamps the entire `ai` section plus
378
+ `harness.escalateOnPlateau` in one transaction (`fast` stamps it `false` so a plateau settles; all
379
+ others stamp it `true`). On a fresh install the welcome view silently auto-seeds a preset based on
380
+ which provider CLIs it detects on `PATH`.
355
381
 
356
382
  </details>
357
383
 
@@ -456,28 +482,29 @@ readiness / create sprint) stay TUI-only by design. The CLI exposes inspection +
456
482
  | `ralphctl doctor` | Check environment health |
457
483
  | `ralphctl settings show` | Print current settings |
458
484
  | `ralphctl settings set <key> <value>` | Set a single settings key |
459
- | `ralphctl settings apply-preset <name>` | Stamp the entire `ai` section — 22 presets: `standard` / `economic` / `strong-gate` / `fast` / `frontier` families, each in `mixed` / `*-only` variants, plus `opencode-only` and `grok-only` |
485
+ | `ralphctl settings apply-preset <name>` | Stamp the entire `ai` section — 26 presets: `standard` / `economic` / `strong-gate` / `fast` / `frontier` families, each in `mixed` / `*-only` variants (Grok included), plus `opencode-only` |
460
486
  | `ralphctl completion <shell>` | Print shell tab-completion script |
461
487
  | `ralphctl agents list` | List bundled + operator agent definitions and the implement role each is bound to |
462
488
  | `ralphctl skills list` | List bundled + manually-dropped skills — tier, enabled flows, provenance |
463
489
 
464
490
  ### Project & Sprint Inspection
465
491
 
466
- | Command | Description |
467
- | ------------------------------------- | ----------------------------------------------------------------------------------- |
468
- | `ralphctl project list` | List registered projects |
469
- | `ralphctl project show <id>` | Show one project (incl. repositories) |
470
- | `ralphctl project remove <id>` | Delete a project registration |
471
- | `ralphctl sprint list` | List all sprints |
472
- | `ralphctl sprint show <id>` | Show one sprint (tickets, status, branch) |
473
- | `ralphctl sprint progress <id>` | Sprint progress with blocker diagnostics |
474
- | `ralphctl sprint set-current <id>` | Switch the current sprint pointer |
475
- | `ralphctl ticket add --title <title>` | Add a ticket to the current sprint (`--sprint`, `--description`, `--link` optional) |
476
- | `ralphctl ticket list / show <id>` | Inspect tickets |
477
- | `ralphctl ticket remove <id>` | Remove a ticket from a draft sprint |
478
- | `ralphctl task list / show <id>` | Inspect tasks (planning generates them) |
479
- | `ralphctl task evaluation <id>` | Print the latest evaluator verdict (`evaluation.md`) for the task's last attempt |
480
- | `ralphctl task unblock <id>` | Reset a blocked task to `todo` |
492
+ | Command | Description |
493
+ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
494
+ | `ralphctl project list` | List registered projects |
495
+ | `ralphctl project show <id>` | Show one project (incl. repositories) |
496
+ | `ralphctl project remove <id>` | Delete a project registration |
497
+ | `ralphctl sprint list` | List all sprints |
498
+ | `ralphctl sprint show <id>` | Show one sprint (tickets, status, branch) |
499
+ | `ralphctl sprint progress <id>` | Sprint progress with blocker diagnostics |
500
+ | `ralphctl sprint set-current <id>` | Switch the current sprint pointer |
501
+ | `ralphctl ticket add --title <title>` | Add a ticket to the current sprint (`--sprint`, `--description`, `--link` optional); does not ask to create a tracker issue |
502
+ | `ralphctl ticket list / show <id>` | Inspect tickets |
503
+ | `ralphctl ticket publish <id>` | Create a tracker issue or post the approved-requirements comment (`--sprint` optional); no second prompt |
504
+ | `ralphctl ticket remove <id>` | Remove a ticket from a draft sprint |
505
+ | `ralphctl task list / show <id>` | Inspect tasks (planning generates them) |
506
+ | `ralphctl task evaluation <id>` | Print the latest evaluator verdict (`evaluation.md`) for the task's last attempt |
507
+ | `ralphctl task unblock <id>` | Reset a blocked task to `todo` |
481
508
 
482
509
  ### Sprint Lifecycle
483
510