Skip to content

v0.81.0

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Oct 19:27
· 13 commits to main since this release
6756017

A first win in five minutes on a Claude subscription, no API key: tracker explain --param question="…", then tracker quickfix --param change="…". Install or upgrade: brew upgrade 2389-research/tap/tracker.

Added

  • TRACKER_CLAUDE_BIN names the claude binary (#719). An absolute
    path that overrides the PATH lookup for every claude-code use
    (--backend claude-code, backend: claude-code / auto nodes, the
    claude-code autopilot, tracker doctor), so a stale claude earlier on
    PATH no longer wins. A wrong value fails with its path and never falls
    back to PATH; under backend: auto the node refuses to start rather than
    move to an API key. Shell-only: a project .env can't set it.
  • Every run says which claude ran. An explicitly chosen claude-code
    backend announces backend: claude-code (claude 2.1.303 at …) once per
    run (as backend: auto already did), every fatal claude-code error ends
    with (claude <version> at <path>), and tracker doctor shows the path
    and source and warns when several claude binaries are on PATH, listing
    each with its version.
  • explain built-in — a read-only first win. tracker explain --param question="what does this repo do?" answers one question about the repo on
    your Claude subscription (or an API key) with read-only tools, saves the
    answer to .tracker/runs/<id>/explain.md, and points at quickfix.
    Without --param it asks the question first. Nothing tracked is changed.
    tracker workflows lists the starters first, tagged ★ start here
    (WorkflowInfo.StartHere).
  • quickfix built-in — one small change on its own branch. tracker quickfix --param change="<one sentence>" makes the change in a separate
    git worktree on tracker/quickfix/<run-id> (Tracker never changes your
    checkout, branch or uncommitted work; the agent is told to stay in the
    worktree, and the review gate warns if anything outside it changed —
    a claude-code agent is not sandboxed), runs the project's tests, and shows
    the diff with approve (commit to that branch; nothing is merged or
    pushed), revise (up to 3 times; typed feedback counts as revise) or
    reject (remove the worktree and branch). --auto-approve and a
    timed-out webhook reject. Staging never trusts the worktree's index:
    Commit resets it first, so a new .env, private key or binary is excluded
    even if the agent ran git add. The branch, base SHA and worktree are
    recorded in <run dir>/quickfix.json.
  • A workflow can leave the user a short end-of-run message. Text a tool
    node writes to $TRACKER_RUN_DIR/notice.txt is printed after the run
    summary, in the TUI and console alike (bounded to 4 KiB, control
    characters stripped). explain and quickfix use it for their next
    steps.
  • backend: auto on agent nodes. The node runs on your Claude
    subscription when the claude CLI is installed (outside the working
    directory, answering claude --version within 10s), otherwise on a
    configured API key, resolved once per run and shared by parallel branches
    and subgraph children. The choice is announced
    (backend: auto → claude-code (claude 2.1.301 at …; no API key needed)),
    recorded in the checkpoint and run.json (backend_resolved), and reused
    on resume; a resumed run whose recorded backend is gone refuses instead of
    switching. An explicit --backend wins over auto. With neither backend
    available the node fails routably (refuse-to-start) with setup steps.
    --backend auto / Config.Backend: "auto" are rejected: it is a node
    value.
  • A run whose agent nodes never need the native backend starts without an
    API key.
    If every agent node (subgraphs included) is auto,
    claude-code or acp, "no providers configured" no longer stops engine
    construction; any other client error still does.
  • tool_access: read_only. Native: exactly read, grep_search and
    glob, which refuse symlinks out of the workdir and secret-looking files
    (.env, .env.* except example/sample, id_rsa*, *.p12, private-key
    .pem/.key). Claude Code: --tools Read,Glob,Grep,
    --permission-mode dontAsk, --strict-mcp-config and
    --setting-sources user (needs a Claude Code with --tools; tested with
    2.1.301). ACP: refused before start. Refusals don't fail the node (#676).
  • EventBackendResolved in the activity log, --json
    (backend_resolved, backend_reason, claude_path, claude_version,
    backend_from_record), the TUI, the console and tracker diagnose.

Changed

  • dippin-lang v0.78.0 → v0.80.0 (#698). Pricing and catalog data only;
    the pricing API is unchanged. Models that used to cost $0 in the budget
    guard and --max-cost now carry real prices (OpenAI chat-latest, the
    zai GLM-4.x vision models, Cohere c4ai-aya-expanse-32b, qwen3.7-plus,
    MiniMax-M3.1-Flash, and MiniMax cache reads), documented xAI / Mistral /
    OpenAI aliases resolve, gpt-5.2-codex and grok-code-fast-1 are
    deprecated (DIP161), and several OpenAI context windows are corrected
    (GPT-5 family to 400K, gpt-5.6-* to 1.05M). glm-5-turbo and
    command-a-03-2025 are now unpriced, so they cost $0 under --max-cost.
    The site's models table is regenerated.
  • A claude-code-only run's cost reads ~$X.XX usage (included in your Claude plan) in the run summary; Claude Code reports a notional cost on
    a subscription.
  • Bare tracker doctor with Claude Code and no API key warns instead of
    failing.
    The starters and every backend: auto / claude-code workflow
    run without a key; the warning says which need one.
  • tool_access: read_only no longer prints dippin's DIP139 warning on
    load or in tracker doctor. dippin (through v0.80) doesn't know the value yet (dippin-lang#54)
    and says it "falls back to no-tools", which is not what tracker does;
    every other DIP139 still prints.
  • build_product's two commit nodes share one set of staging rules.
    CommitIfDirty and FinalCommit source lib/stage.sh
    (stage_build_excludes / stage_git) instead of carrying byte-identical
    copies of the secret, private-key and compiled-binary excludes
    (#395/#646); build_product_with_superspec carries a parity-pinned copy.
    Behavior is unchanged.
  • A missing dippin binary is a tracker doctor warning, not an error.
    Running a pipeline never needs it; linting and authoring do.
  • The claude --version probe is bounded: 10s for backend: auto (which
    falls back, and names a claude that timed out or whose --version
    failed), 60s for an explicit claude-code backend; it used to wait
    indefinitely.

Fixed

  • A relative per-node working_dir resolves under the run's workdir, as
    tool nodes do, instead of the tracker process's cwd: tracker -w <repo>
    started from another directory reached the wrong directory.
  • tracker doctor no longer fails the provider-key check for a pipeline
    that runs on Claude Code (#716).
    It works out which backends the
    pipeline's agent nodes need (including --backend and subgraph children):
    when none needs the native backend the check passes, claude is required
    whenever a node needs it, and doctor --backend claude-code with no
    pipeline passes too.

Commits

Changelog

Features

  • c19e109 feat(agent): tool_access: read_only — read/grep/glob with symlink and secret containment
  • 2f38cd1 feat(claude-code): TRACKER_CLAUDE_BIN, and every run names the claude it ran (#719)
  • be30988 feat(claude-code): enforce tool_access: read_only with --tools and dontAsk; refuse ACP
  • 6b04667 feat(codergen): backend: auto resolves claude-code or native once per run
  • 8bb8c89 feat(engine): construct without a native client when no node needs one
  • 90200a7 feat(engine): per-run BackendResolver shared with child registries
  • bf8d0a0 feat(engine): record backend: auto's resolution in the checkpoint and run.json
  • a59bedb feat(events): EventBackendResolved, rendered by the console and TUI
  • 886c47b feat(workflows): explain — a read-only first-win built-in
  • 70d8f05 feat(workflows): quickfix tool scripts with fixture suites
  • cbddb72 feat(workflows): quickfix — one small change on an isolated branch
  • 7c90172 feat: first-win e2e, end-of-run notice, plan-usage cost label, docs

Fixes

  • 7ba5a38 fix(codergen): a relative working_dir resolves under the run workdir
  • a88c3b9 fix(doctor): check backends per pipeline (#716); dippin missing is a warning
  • deabddd fix(quickfix): Codex review on #725 — staging, outside-change warning, kill escalation
  • 555d54e fix: CodeRabbit review on #723 — read_only guards, resume containment, doctor precedence
  • b4e36bd fix: CodeRabbit review on #725 — gate-aware wall time, reset to base, kill grace, shown = committed
  • e893871 fix: a clean first-run doctor for the starters
  • 757edf9 fix: final review — readable gate diff, safe free text, stale worktree, case-folded secrets
  • 9f8a111 fix: read_only rebuilds guarded tools, scans whole key files; stamp run_id on backend_resolved
  • 6ac67ec fix: review on #729 — broken override in doctor, resumed auto, autopilot, stat cause

Other

  • 6ec30e5 Merge pull request #723 from 2389-research/feat/first-win-engine
  • 4dde7c5 Merge pull request #724 from 2389-research/refactor/stage-lib
  • 6b1c3ff Merge pull request #725 from 2389-research/feat/explain-quickfix
  • 0c820d4 Merge pull request #727 from 2389-research/docs/first-win-quickstart
  • 27dddc5 Merge pull request #728 from 2389-research/deps/dippin-v0.80.0
  • 27af1b1 Merge pull request #729 from 2389-research/fix/719-claude-bin
  • 6756017 Merge pull request #730 from 2389-research/release/v0.81.0
  • 4f94581 Merge remote-tracking branch 'origin/main' into feat/first-win-engine
  • d20794c deps: bump dippin-lang v0.78.0 → v0.80.0 (#698)
  • 8ba0b53 docs(plan): first-win quickstart implementation plan
  • 00d32cd docs(spec): first-win quickstart — explain → quickfix, backend: auto, tool_access: read-only
  • 4cada18 docs(spec): first-win quickstart — revise after four-lens review
  • 96b70e0 docs(spec,plan): spell the new tool_access mode read_only (matches dippin-lang#54)
  • 900a1c9 docs: backend: auto, tool_access: read_only, doctor backend needs (#716)
  • d632f59 docs: first-win quickstart — README, site hero, workflows ladder, roadmap
  • aec49de docs: quickstart says what quickfix enforces about your checkout
  • 8b733f9 docs: review on #730 — ACP estimate isn't a floor, notice keeps newline/tab, roadmap Later entries, lazy-client rules, runnable cd
  • c5c3c78 refactor(build_product): extract commit staging rules into lib/stage.sh (#395/#646)
  • d2d0c71 refactor(codergen): general refuse-to-start outcome; jail refusal uses it
  • c029868 release: v0.81.0 — first win in five minutes, TRACKER_CLAUDE_BIN, dippin v0.80.0