{"id":47735813,"url":"https://github.com/cdilga/roger-reviewer","last_synced_at":"2026-04-07T11:02:42.222Z","repository":{"id":348132538,"uuid":"1192556847","full_name":"cdilga/roger-reviewer","owner":"cdilga","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-02T05:55:12.000Z","size":1191,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T07:09:08.513Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdilga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-26T10:34:21.000Z","updated_at":"2026-04-02T05:55:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cdilga/roger-reviewer","commit_stats":null,"previous_names":["cdilga/roger-reviewer"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/cdilga/roger-reviewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdilga%2Froger-reviewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdilga%2Froger-reviewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdilga%2Froger-reviewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdilga%2Froger-reviewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdilga","download_url":"https://codeload.github.com/cdilga/roger-reviewer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdilga%2Froger-reviewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31509945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-02T22:35:38.719Z","updated_at":"2026-04-07T11:02:42.216Z","avatar_url":"https://github.com/cdilga.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Roger Reviewer\n\n\u003e Local-first pull request review with durable sessions and explicit approval\n\u003e gates before any GitHub write.\n\n## Status (As Of April 7, 2026)\n\nRoger Reviewer is in active `0.1.0` implementation.\n\nWhat is real in this repo right now:\n\n- local-first CLI/domain workflow is under active implementation\n- OpenCode is the blessed continuity path for the quickstart flow\n- extension support is optional and launch-focused, not the source of truth\n- safety model is explicit: no automatic posting and no hidden mutation path\n\nWhat is not fully shipped yet:\n\n- no GA signed installer distribution channel yet\n- no automatic in-place binary mutation path from `rr update` (manual install step remains explicit)\n- no in-extension approval or posting controls\n\n## Who This Is For\n\nPrimary audience for this slice:\n\n- engineers reviewing GitHub PRs from terminal-first workflows\n- teams that want durable local review continuity rather than one-shot prompt output\n- users who require explicit approval gates before any remote write action\n\n## Product Shape (Current Slice)\n\nRoger Reviewer is:\n\n- local-first (`SQLite` state is authoritative)\n- session-aware (`review`, `resume`, `refresh`, `return`, `sessions`)\n- approval-gated (draft + approve + post boundaries are explicit)\n- continuity-focused (OpenCode fallback stays real)\n\nRoger Reviewer is not:\n\n- an automatic bug-fix bot by default\n- an automatic GitHub posting bot\n- a daemon-centered architecture\n\n## Support Snapshot\n\n| Surface | Current reality | Notes |\n| --- | --- | --- |\n| Published `rr` CLI install | Available | One-line release installer ships on GitHub Releases |\n| `rr` CLI from source | Available for local/dev use | Commands are implemented in `packages/cli`; run via `cargo run` |\n| OpenCode provider flow | Blessed quickstart path | Primary documented continuity path for this slice |\n| Codex provider path | Bounded/non-primary | Exists in command surface but is not the primary supported onboarding lane |\n| Browser extension | Optional launch helper | PR-page launch panel; local Roger remains authoritative |\n| In-extension posting controls | Not shipped | Approval/posting stays local and explicit |\n\n## Install Reality\n\nInstaller/update metadata contracts now exist in-repo:\n\n- `scripts/release/rr-install.sh` and `scripts/release/rr-install.ps1` consume\n  `release-install-metadata-\u003cversion\u003e.json` plus matching core/checksum assets\n- `rr update` validates published release metadata and fails closed for\n  local/unpublished builds without embedded release markers\n\nPublic one-line installer entrypoints (CLI base product):\n\n- Stable/latest (Unix):\n  - `curl -fsSL https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.sh | bash`\n- Stable/latest (PowerShell):\n  - `\u0026 ([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.ps1').Content))`\n- Pinned release (Unix, example `2026.04.07`):\n  - `curl -fsSL https://github.com/cdilga/roger-reviewer/releases/download/v2026.04.07/rr-install.sh | bash -s -- --version 2026.04.07`\n- Pinned release (PowerShell, example `2026.04.07`):\n  - `\u0026 ([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://github.com/cdilga/roger-reviewer/releases/download/v2026.04.07/rr-install.ps1').Content)) -Version '2026.04.07'`\n\nOptional follow-on workflow (separate from base CLI install):\n\n- bridge and extension packaging assets are optional; base `rr` install does not require them\n- use optional lanes only when browser launch/helper integration is needed\n- the browser extension is not shipped as a release artifact in this slice; pack/sideload it from source if you need the PR-page launch panel\n\nSafe isolated install example:\n\n```bash\nmkdir -p \"$HOME/.local/rr-test-bin\"\ncurl -fsSL https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.sh | \\\n  bash -s -- --install-dir \"$HOME/.local/rr-test-bin\"\nalias rr-rel=\"$HOME/.local/rr-test-bin/rr\"\n```\n\nSource-run onboarding remains the developer path:\n\n1. install Rust toolchain\n2. clone repo and run `rr` through Cargo\n3. keep state local (default `.roger/` store)\n\nOptional env overrides:\n\n```bash\nexport RR_STORE_ROOT=\"$PWD/.roger\"\nexport RR_OPENCODE_BIN=\"opencode\"\n```\n\n## Quickstart (Blessed Local Path)\n\n### 1. Prerequisites\n\n- a Git repository with a GitHub `origin` remote\n- OpenCode CLI available on `PATH` (or `RR_OPENCODE_BIN` override)\n\n### 2. Install `rr`\n\nStable/latest:\n\n```bash\ncurl -fsSL https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.sh | bash\n```\n\nSafe isolated install:\n\n```bash\nmkdir -p \"$HOME/.local/rr-test-bin\"\ncurl -fsSL https://github.com/cdilga/roger-reviewer/releases/latest/download/rr-install.sh | \\\n  bash -s -- --install-dir \"$HOME/.local/rr-test-bin\"\nalias rr=\"$HOME/.local/rr-test-bin/rr\"\n```\n\n### 3. Check the installed CLI\n\n```bash\nrr --help\nrr update --dry-run\n```\n\n### 4. Start a review session (OpenCode)\n\n```bash\nrr review --pr 123 --provider opencode\n```\n\n### 5. Inspect local state\n\n```bash\nrr status\nrr findings\nrr sessions\nrr search --query \"null pointer\"\n```\n\n### 6. Continue the same review safely\n\n```bash\nrr resume --pr 123\nrr refresh --pr 123\nrr return --pr 123\n```\n\nIf candidate sessions are ambiguous, Roger fails closed and requires explicit\nselection (for example `--session \u003cid\u003e`).\n\n## Developer Path (Run From Source)\n\nPrerequisites:\n\n- Rust toolchain\n\nRun `rr` from source:\n\n```bash\ncargo run -p roger-cli --bin rr -- help\n```\n\nOptional shell alias:\n\n```bash\nalias rr='cargo run -q -p roger-cli --bin rr --'\n```\n\n## Optional Browser Launch Surface\n\nThe extension is optional and currently launch-oriented.\n\nCurrent source artifact:\n\n- `apps/extension/manifest.template.json`\n\nCurrent panel actions on GitHub PR pages:\n\n- `Start`\n- `Resume`\n- `Findings`\n- `Refresh`\n\nBridge dispatch order:\n\n1. Native Messaging (`com.roger_reviewer.bridge`)\n2. `roger://launch/...` fallback\n\nLaunch-only honesty in this slice:\n\n- no in-extension authoritative local status mirror\n- no in-extension approval/posting controls\n\n## Agent Mail Watch Over ngrok\n\nFor a browser-readable, read-only Agent Mail view over ngrok, expose the local\nwatcher instead of the raw Agent Mail MCP endpoint.\n\nStart the watcher:\n\n```bash\nAGENT_MAIL_WATCH_AGENTS=BlueCat scripts/run_agent_mail_watch.sh\n```\n\nIt prints the local URL, the Basic Auth username (`watch`), the generated\nbrowser password, and the watcher port.\n\nTunnel the watcher port, not Agent Mail's `8765` MCP port:\n\n```bash\nngrok http 8781\n```\n\nThe watcher proxies read-only inbox fetches to Agent Mail server-side, so your\nphone browser never needs the Agent Mail bearer token and never talks to the\nraw SSE/MCP endpoint directly.\n\n## Safety Model (Non-Negotiable)\n\n- No automatic GitHub posting.\n- No automatic bug-fixing unless explicitly enabled by the user.\n- No raw direct review writes outside Roger's approval/posting flow.\n- Mutation-capable flows must be explicit and visibly elevated.\n\n## Known Boundaries\n\n- `rr update` currently validates metadata and emits a manual install command;\n  fully automatic binary replacement is intentionally deferred\n- extension readback/status parity is not shipped yet\n- support claims prioritize the OpenCode continuity lane\n- degraded continuity states are expected to fail closed where ambiguity exists\n\n## Repo Orientation\n\n| Path | Purpose |\n| --- | --- |\n| `packages/cli` | `rr` command implementation |\n| `packages/app-core` | Domain model, finding lifecycle, approval/posting contracts |\n| `packages/session-opencode` | OpenCode session linkage and return model |\n| `packages/bridge` | Native Messaging + URL launch bridge |\n| `apps/extension` | GitHub PR launch panel |\n| `packages/storage` | Canonical local store and retrieval |\n\n## Canonical Docs\n\n- [`AGENTS.md`](AGENTS.md)\n- [`docs/PLAN_FOR_ROGER_REVIEWER.md`](docs/PLAN_FOR_ROGER_REVIEWER.md)\n- [`docs/HARNESS_SESSION_LINKAGE_CONTRACT.md`](docs/HARNESS_SESSION_LINKAGE_CONTRACT.md)\n- [`docs/RELEASE_AND_TEST_MATRIX.md`](docs/RELEASE_AND_TEST_MATRIX.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdilga%2Froger-reviewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdilga%2Froger-reviewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdilga%2Froger-reviewer/lists"}