Skip to content

Codebase review: polish, distribution, and agent-UX improvements #118

Description

@Kinfe123

A full-codebase review (CLI surface, core/storage internals, docs, website, CI/release pipeline) surfaced a set of improvements. The engineering core is in great shape — fail-closed lifecycle, journaled recovery, actively probed backends, real-filesystem CI. The gaps below are mostly polish, distribution, and the agent-facing story, plus a few small documentation correctness bugs.

1. Correctness fixes (small, high trust impact)

  • License contradiction (already fixed on main) — README.md ("Licensing" section) says Apache-2.0, but LICENSE, Cargo.toml, and package.json all declare MIT.
  • SUPPORT.md is stale (already fixed on main) — still says Linux and Windows mutation backends are not implemented, contradicting the shipped Milestone 5/7 slices and the README compatibility table.
  • SECURITY.md is stale (already fixed on main) — still describes macOS/APFS-only mutations and says "until the first tagged release, only main receives security fixes" (v0.1.0–v0.2.1 have shipped).
  • Stale hardcoded commit SHA (already fixed on main) in website/src/app/page.tsx — the "Windows & manual install" link pins a pre-merge blob URL.
  • website/README.md overclaims content (merged: docs: describe the sections the website actually has #140) — describes sections (transparent Git usage, safety, lifecycle, compatibility) that don't exist on the page.
  • Dead riftri recover command (merged: chore: remove redundant recover subcommand #139) — byte-for-byte equivalent to riftri repair --state-dir <PATH>, never referenced by any doc or test; hide or remove.
  • Dependabot coverage (already fixed on main) — .github/dependabot.yml watches only cargo and github-actions; the root npm package and website/ (pnpm, Farm.js beta, React 19) are unmonitored.
  • Debug formatting leaks into user output (already fixed on main) — backend kind/status printed with {:?} in two places in crates/riftri-cli/src/main.rs instead of display_name().

2. Agent-first UX (the differentiator)

  • --json on success paths (merged: feat: emit stable JSON reports from lifecycle commands #141) — only doctor and backends have --json today. status, gc, repair, and all worktree subcommands are human-text only, so harnesses need a JSON parser for failures (--json-errors receipts) but text scraping for success. Blocked only on deriving Serialize for StorageAccountingReport, GarbageCollectionReport, RecoveryReport, and AddWorktreeResult in riftri-core.
  • riftri worktree list (already implemented on main, including --json) — there is no inventory command; the closest is reading the storage block of riftri status.
  • Agent-integration guide (merged: docs: add agent-harness integration guide #142, index link fix fix: link the agent integration guide from the site overview #143) — coding agents are the stated audience, but guidance is a few scattered sentences. A doc covering per-harness setup (Claude Code, Codex, Cursor, devcontainers), a "ten parallel agents" walkthrough, and the --json-errors receipt contract would close the loop.
  • worktree add for an existing branch (already implemented on main) — only -b <new-branch> and --detach are supported; git worktree add <path> <existing-branch> has no optimized equivalent.

3. Distribution

  • Homebrew formula/tap — formula done (merged: feat: add a generated Homebrew formula #161 — generated from a release's SHA256SUMS, with a drift guard test; brew install --formula ./Formula/riftri.rb). Still needs a tap repository (conventionally assistant-ui/homebrew-riftri) before brew install riftri works by name, and a token secret if the release workflow should push to it.
  • winget and/or Scoop manifests for the Windows builds.
  • Nix flake / AUR — musl and glibc builds for both arches already exist.
  • Consider crates.io publication (cargo install riftri) — all crates are currently publish = false by design; worth revisiting at least for the CLI.
  • Consider a Docker/OCI image given the OverlayFS + agent-sandbox use case.

4. Supply chain & CI

5. CLI polish

6. Docs & website

7. Roadmap features with most user impact (already tracked in ROADMAP.md, listed for completeness)

  • Sparse-checkout profiles and submodule support (the two blockers most likely to hit real large repos).
  • OverlayFS compaction (upper-layer reset) and non-ASCII case folding/normalization.
  • Ordinary-NTFS story on Windows (differencing VHDX / ProjFS evaluation).

Found via a full review of the CLI (crates/riftri-cli), core/storage/git crates, docs, website, and CI/release workflows at v0.2.1 (39e50e4).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions