Summary
Merge the three existing tracker testing binaries into a single tracker_client binary, while keeping behavior changes minimal:
http_tracker_client
udp_tracker_client
tracker_checker
This is a mechanical unification/refactor, not a CLI redesign.
Context
This work closes the pending EPIC task in #669 (unified client CLI) and follows discussion #660.
Decisions for this issue
- CLI shape: explicit protocol subcommands (
tracker_client http ..., tracker_client udp ..., tracker_client check ...)
- Output default: JSON (
--format=json), with --format=text available
- Legacy binaries: keep for ~1 year with deprecation warning on startup; no new features
- Scope guard: top-level auto-dispatch aliases (
tracker_client announce ...) are out of scope for this issue
In Scope
- Implement unified
tracker_client entry point with http, udp, check subcommands
- Wire current HTTP/UDP announce/scrape and checker workflows
- Add unified
--format=<json|text> behavior
- Add deprecation warnings to legacy binaries
- Update in-repo docs/skills/CI references
- Run and record manual verification scenarios against a local tracker
Out of Scope
Manual Verification (required)
Run local tracker and then execute one manual scenario per command family, tracking status/evidence:
- HTTP announce
- HTTP scrape
- UDP announce
- UDP scrape
- Checker
- HTTP text-format output
- UDP text-format output
A full matrix with concrete commands and evidence fields is captured in the issue spec.
Follow-up
Create a separate issue for optional top-level announce/scrape convenience aliases that dispatch to HTTP/UDP by URL scheme.
Summary
Merge the three existing tracker testing binaries into a single
tracker_clientbinary, while keeping behavior changes minimal:http_tracker_clientudp_tracker_clienttracker_checkerThis is a mechanical unification/refactor, not a CLI redesign.
Context
This work closes the pending EPIC task in #669 (unified client CLI) and follows discussion #660.
Decisions for this issue
tracker_client http ...,tracker_client udp ...,tracker_client check ...)--format=json), with--format=textavailabletracker_client announce ...) are out of scope for this issueIn Scope
tracker_cliententry point withhttp,udp,checksubcommands--format=<json|text>behaviorOut of Scope
announce/scrapeauto-dispatch aliases by URL scheme (future follow-up)Manual Verification (required)
Run local tracker and then execute one manual scenario per command family, tracking status/evidence:
A full matrix with concrete commands and evidence fields is captured in the issue spec.
Follow-up
Create a separate issue for optional top-level
announce/scrapeconvenience aliases that dispatch to HTTP/UDP by URL scheme.