250954c17d
DockerBottlePlan.print and .to_dict each pulled the same agent / bottle / env_names / ssh_hosts / prompt-first-line out of the spec before formatting. Extract a private _view() helper that returns a small frozen _PlanView dataclass with those derived fields; both methods consume it. Removes the duplicated derivation and the risk that one renderer drifts from the other (the OAuth-name append in particular existed twice).