opencrabs 0.3.38

The autonomous, self-improving AI agent. Single Rust binary. Every channel. Install with: cargo install opencrabs
Documentation
{
  "title": "Rust Fast Path",
  "description": "Trivial Rust change (< 20 lines). modum check, self-review, PR. Stops at PR — user handles CI, review, merge.",
  "tasks": [
    {
      "order": 1,
      "title": "Verify branch base",
      "description": "Fetch origin/main. Create branch from origin/main (NOT upstream/main — the two remotes have diverged; upstream/main has commits not in origin/main). Verify with: `git diff origin/main --stat` should show ONLY the intended changed files. If it shows hundreds of files, you're based on the wrong branch — start fresh from origin/main.",
      "task_type": "Configuration",
      "complexity": 1,
      "acceptance_criteria": [
        "branch based on origin/main",
        "git diff origin/main --stat shows only intended files"
      ]
    },
    {
      "order": 2,
      "title": "modum check",
      "description": "Run `modum check --mode error` on the crate root. Fix any violations before proceeding. This is the preflight check since we can't compile on this machine.",
      "task_type": "Test",
      "complexity": 1,
      "dependencies": [
        1
      ],
      "acceptance_criteria": [
        "modum exits 0"
      ]
    },
    {
      "order": 3,
      "title": "Self-review diff",
      "description": "Read through the ENTIRE diff (`git diff origin/main`) line by line. Check for:\n- Logic errors: Does the control flow handle all edge cases? (early returns, None/Err paths, fallthroughs, type conversions)\n- Unchanged call sites: Did you update ALL callers of a refactored function? Grep for old signatures — this is the most common failure pattern\n- Message correctness: Do user-facing strings reference the right flags, paths, and commands?\n- Consistency: Are variable names, function signatures, and arg ordering consistent across the change?\n- Edge cases: What happens when a dependency is missing, a subprocess fails, a config is empty?",
      "task_type": "Research",
      "complexity": 1,
      "dependencies": [
        2
      ],
      "acceptance_criteria": [
        "no logic errors",
        "no obvious compilation issues",
        "messages correct",
        "all callers updated"
      ]
    },
    {
      "order": 4,
      "title": "Push + PR",
      "description": "Verify branch is NEW: `git branch -r | grep <branch-name>`. If it already exists on any remote, pick a different name (e.g. `-v2`). Never push to an existing branch unless you specifically mean to update it.\n\nPush branch to upstream (NOT origin): `git push upstream <branch>`.\n\nCreate PR: `gh pr create --repo adolfousier/opencrabs --head leshchenko1979:<branch>`\n\nVerify PR diff: `gh pr diff --name-only` should match expected files. If it doesn't, close the PR and fix.",
      "task_type": "Configuration",
      "complexity": 1,
      "dependencies": [
        3
      ],
      "acceptance_criteria": [
        "branch pushed to upstream",
        "PR created against origin",
        "gh pr diff --name-only matches expected"
      ]
    }
  ]
}