Repository navigation
fix(init): say trail init, not graft init, when there's no terminal to ask on - #588
rushabhnagda11 wants to merge 1 commit into
Conversation
…o ask on `trail init` run from a script, a pipe or an agent printed "graft init: no TTY to prompt on…" and suggested four `graft init` commands. The help now names the command the way it was run; `graft init` prints exactly what it did before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🌱 graft blast radius1 area changed → 1 area can be affected. 3 dependent symbols, depth 2. flowchart TB
A0(("CLI Commands<br/>3 symbols"))
classDef reached fill:#D9EDF3,stroke:#3AA7C9,stroke-width:1.5px,color:#0E313C;
class A0 reached;
Who knows this code — 2 people across 2 areas
Ownership is git history over each area's own files, weighted towards recent work (120-day half-life). Merge commits and bots are dropped, and you are dropped from your own PR. A name with no All 3 dependent symbols, grouped by areaCLI Commands — 3 symbols in 1 file
Test signal per changed area — 1 ✓Reached = a node under a test path has a resolved edge into the changed symbol. It undercounts anything called indirectly — through a CLI, a spawned process or a dynamic import — so read a low ratio as “look here”, never as a coverage gate.
Open the interactive graph → — click an area to see its dependent symbols at file:line. |
Found while rehearsing the new onboarding for the 2026-10-19 metrics review.
What
trail initwith no TTY (run from a script, a pipe, or by a coding agent) printed:formatNonInteractiveHelphard-coded the graft spelling. It now goes throughcmd(), like the rest of init's output, sotrail initsaystrail init ….Safety
graft initoutput is byte-for-byte unchanged (cmd()returns the graft spelling under graft, and the existing tests that assertgraft init --agents claude cursorstill pass).Test
node --import tsx --test test/cli-picker.test.ts test/graft-to-trail.test.ts test/trail-name.test.ts: 55/55 pass.🤖 Generated with Claude Code