Repository navigation
feat: trail is the command name, graft still works - #555
anirudhkumar-nanonets wants to merge 3 commits into
Conversation
🌱 graft blast radius5 areas changed → 7 areas can be affected. 19 dependent symbols, depth 2. flowchart TB
A0(("Session Display<br/>5 symbols"))
A1(("Tool Invocation<br/>4 symbols"))
A2(("Workspace Federation<br/>4 symbols"))
A3(("Change Tracking<br/>3 symbols"))
A4(("Search Formatting<br/>1 symbol"))
AX(("2 smaller areas<br/>2 symbols"))
classDef reached fill:#D9EDF3,stroke:#3AA7C9,stroke-width:1.5px,color:#0E313C;
class A0,A1,A2,A3,A4 reached;
classDef tail fill:#EEF2F3,stroke:#9AA4A9,stroke-width:1px,color:#3A4247;
class AX tail;
Who knows this code — 4 people across 12 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 19 dependent symbols, grouped by areaSession Display — 5 symbols in 5 files
Tool Invocation — 4 symbols in 1 file
Workspace Federation — 4 symbols in 4 files
Change Tracking — 3 symbols in 3 files
Search Formatting — 1 symbol in 1 file
Maintenance Tasks — 1 symbol in 1 file
Session Telemetry — 1 symbol in 1 file
Test signal per changed area — 3 ✓ · 1 ⚠ · 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.
25 test suites also reference this code25 symbols, kept out of the diagram and the table so they cannot crowd out the areas a reviewer has to look at.
Open the interactive graph → — click an area to see its dependent symbols at file:line. |
|
Folded into #558, which now carries this change along with the rest of trail. |
Moves:
graft_active(PostHog DB 11,posthog_event_full_view, distinct users with aqueryevent in the last 7 days, the SQL indaily/project.md): 9,370 on 2026-10-07. The newcli_nameproperty on every event splits it by which name ran,trailorgraft. It starts at 0 fortrailbecause it's new.People sign up for Trail, so the command is called trail now. graft keeps working for everyone who already has it, and its output doesn't change.
@trailhq/trailshipstrail, laid out byscripts/pack-trail.mjsintobuild/trail.@nanonets/graftshipsgraft. It's the same code:dist/bin/trail.js/dist/bin/graft.jssetTRAIL_INVOKED_AS, andbrand()/cmd()pick the spelling. I diffed graft's--helpagainstmain. The only addition isgraft build --check/--json.login,push,pull,logoutandstatusare top-level.trail trail …spellings still run.trail build --check, becausetrail checkbecomes the team check later in this stack.trail mcpservestrail_*tools and still answersgraft_*calls, so wiring an older graft wrote keeps working.graft upgradealso installs@trailhq/trailonce it's published, and people still typing graft see a once-a-day note about the new name.cli_nameis added to the contract allowlist and to TELEMETRY.md, and the contract test pins it.Not published:
@trailhq/trailneeds the trailhq npm org.Stack: this PR, then the notes, skills and cloud PRs on top. To try all four together, check out
feat/trail-all.Tests:
npm test, 1,375 pass on this branch.