Repository navigation
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_BINnames theclaudebinary (#719). An absolute
path that overrides the PATH lookup for every claude-code use
(--backend claude-code,backend: claude-code/autonodes, the
claude-code autopilot,tracker doctor), so a staleclaudeearlier on
PATH no longer wins. A wrong value fails with its path and never falls
back to PATH; underbackend: autothe node refuses to start rather than
move to an API key. Shell-only: a project.envcan't set it.- Every run says which
clauderan. An explicitly chosen claude-code
backend announcesbackend: claude-code (claude 2.1.303 at …)once per
run (asbackend: autoalready did), every fatal claude-code error ends
with(claude <version> at <path>), andtracker doctorshows the path
and source and warns when severalclaudebinaries are on PATH, listing
each with its version. explainbuilt-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 atquickfix.
Without--paramit asks the question first. Nothing tracked is changed.
tracker workflowslists the starters first, tagged★ start here
(WorkflowInfo.StartHere).quickfixbuilt-in — one small change on its own branch.tracker quickfix --param change="<one sentence>"makes the change in a separate
git worktree ontracker/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-approveand 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 rangit 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.txtis printed after the run
summary, in the TUI and console alike (bounded to 4 KiB, control
characters stripped).explainandquickfixuse it for their next
steps. backend: autoon agent nodes. The node runs on your Claude
subscription when theclaudeCLI is installed (outside the working
directory, answeringclaude --versionwithin 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 andrun.json(backend_resolved), and reused
on resume; a resumed run whose recorded backend is gone refuses instead of
switching. An explicit--backendwins overauto. 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) isauto,
claude-codeoracp, "no providers configured" no longer stops engine
construction; any other client error still does. tool_access: read_only. Native: exactlyread,grep_searchand
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-configand
--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).EventBackendResolvedin the activity log,--json
(backend_resolved,backend_reason,claude_path,claude_version,
backend_from_record), the TUI, the console andtracker diagnose.
Changed
- dippin-lang v0.78.0 → v0.80.0 (#698). Pricing and catalog data only;
thepricingAPI is unchanged. Models that used to cost $0 in the budget
guard and--max-costnow carry real prices (OpenAIchat-latest, the
zai GLM-4.x vision models, Coherec4ai-aya-expanse-32b,qwen3.7-plus,
MiniMax-M3.1-Flash, and MiniMax cache reads), documented xAI / Mistral /
OpenAI aliases resolve,gpt-5.2-codexandgrok-code-fast-1are
deprecated (DIP161), and several OpenAI context windows are corrected
(GPT-5 family to 400K,gpt-5.6-*to 1.05M).glm-5-turboand
command-a-03-2025are 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 doctorwith Claude Code and no API key warns instead of
failing. The starters and everybackend: auto/claude-codeworkflow
run without a key; the warning says which need one. tool_access: read_onlyno longer prints dippin's DIP139 warning on
load or intracker 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.
CommitIfDirtyandFinalCommitsourcelib/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_superspeccarries a parity-pinned copy.
Behavior is unchanged. - A missing
dippinbinary is atracker doctorwarning, not an error.
Running a pipeline never needs it; linting and authoring do. - The
claude --versionprobe is bounded: 10s forbackend: auto(which
falls back, and names aclaudethat timed out or whose--version
failed), 60s for an explicit claude-code backend; it used to wait
indefinitely.
Fixed
- A relative per-node
working_dirresolves 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 doctorno 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--backendand subgraph children):
when none needs the native backend the check passes,claudeis required
whenever a node needs it, anddoctor --backend claude-codewith 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