Skip to content

cli: doctor banner reads "=== edgesync doctor ===" inside the bones binary #151

Description

@danmestas

Summary

When bones doctor runs, the first banner of the output reads === edgesync doctor ===. Confirmed by strings /opt/homebrew/bin/bones | grep edgesync:

=== edgesync doctor ===

The string is hardcoded in EdgeSync's cli/doctor.go and inherited by every consuming binary (bones, possibly others) that runs the EdgeSync doctor as a sub-doctor.

Why this is confusing

Anyone running bones doctor for the first time sees a banner from a tool they've never heard of and assumes they ran the wrong thing. The bones doctor then continues with its own === bones substrate gates (ADR 0034) ===, === bones swarm sessions ===, etc. — making it look like two unrelated tools ran in sequence.

A surface owner doing post-spike triage caught this; their report rated it a P2 cosmetic issue but consistently re-mentions it as the most jarring "first impression" issue across multiple operators.

Proposed fix

Make the banner reflect the invoking binary, not the EdgeSync source. Two viable shapes:

(a) Take the program name from os.Args[0] (or a configurable parameter passed to the doctor entry point):

banner := fmt.Sprintf("=== %s doctor ===", filepath.Base(os.Args[0]))
fmt.Println(banner)

(b) Drop the EdgeSync banner entirely when invoked as a subroutine, and let the consuming binary emit its own banner above its full doctor output.

(b) is cleaner architecturally (subroutines shouldn't emit branding); (a) is a one-line fix.

Acceptance criteria

  • bones doctor no longer emits === edgesync doctor === as its first line
  • EdgeSync's own edgesync doctor (if such a CLI exists) still produces a sensible banner
  • No regression on the substantive doctor checks (go version, fossil, NATS, doppler, etc.)

File in scope

cli/doctor.go in this repo. Probably a 1-3 LOC change.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions