Review Trail Finding Command Design · Entire

Review the "entire trail finding" command

Can a finding be updated with apply and why is there stale AND status while both are doing effectively very similar things? Also, the "entire trail finding" print is inconsistent to other commands? WDYT?

4w ago·4.5s·48 calls

Implemented the trail/finding UX cleanup.

Changed:

My take:

Validation:

How to update an existing finding then?

4w ago·35.3s·21 calls

Good catch: before this, you effectively couldn’t update finding metadata from the CLI — only lifecycle status via resolve/dismiss/reopen, or apply --resolve.

I added:

1
2
3
4
5

entire trail finding update <finding-id> \
  --title "short title" \
  --body "updated body" \
  --severity high \
  --confidence 0.9

Also supports trail selection:

1
2

entire trail finding update <trail> <finding-id> --body "..."
entire trail finding update --trail <trail> <finding-id> --severity low

What stays separate:

Changed files:

Validation:

Review everything once again critically and make me a very concise and simple analysis of all finding sub-commands and parameters.

4w ago·5.5s·2 calls

Here’s the finding command surface after review:

Target selection

Most commands accept either:

1
2
3

tire trail finding <cmd> <finding-id>
tire trail finding <cmd> <trail> <finding-id>
tire trail finding --trail <trail> <cmd> <finding-id>

<trail> = number, id, or branch. If omitted, current branch’s trail is used.

Commands

Command Purpose Key params
finding Dashboard for findings --status, --severity, --stale, --include-dismissed, --limit, --offset, --json
list Plain table list same filters as dashboard
show Full finding detail <finding-id>
add Create finding --body/-m required, --severity, --confidence, location flags, suggested-change flags
update Update finding metadata --title, --body/-m, --severity, --confidence, --json
apply Apply unified-diff suggestion to worktree --check, --resolve
resolve Mark lifecycle resolved --message/-m
dismiss Mark lifecycle dismissed --message/-m
reopen Mark lifecycle open --message/-m
watch Stream finding events --json, --show-pings, --once

Filters

Critical take

The split now makes sense:

Remaining rough edges:

Why is there trail watch and trail finding watch, is it the same thing?

4w ago·11.2s

Yes — they are effectively the same today.

Both stream the trail-scoped review/finding SSE endpoint:

GET /api/v1/trails/<id>/reviews/events

Difference is mostly command shape:

My take: this is duplicate and confusing.

Best cleanup:

watch is supposed to be for more than just finding events, remove the "finding watch" one instead.

what are better names for "--stale" then?

update is probably fine without updating location since a new finding could be created?

add: there is no title on a finding, also not on the API, why would we need that?

Agreed on all points. I updated the CLI accordingly.

Decisions

    --freshness current|stale|any
    ```
  - `--stale` remains as deprecated alias for compatibility.
- `update`
  - no location update
  - no title update
  - now only:
--body/-m
--severity high|medium|low
--confidence 0.0..1.0
```

Current finding commands

1
2
3
4
5
6
7
8
9

entire trail finding                 # dashboard
entire trail finding list            # table
entire trail finding show <id>       # detail
entire trail finding add -m "..."    # create
entire trail finding update <id>     # edit metadata/content
entire trail finding apply <id>      # apply patch
entire trail finding resolve <id>    # lifecycle
entire trail finding dismiss <id>    # lifecycle
entire trail finding reopen <id>     # lifecycle

Validation:

Make the changes.

4w ago·24.2s·11 calls

Done.

Changes made:

Validation:

Don't keep old commands (stale) around, clean up.

4w ago·6.2s·12 calls

Cleaned up.

  --freshness current|stale|any

Validation:

Create a PR

4w ago·7.2s·6 calls

Created PR: https://github.com/entireio/cli/pull/1477