Skip to content

feat(show): surface boundary language in read view - #59

Merged
rennehan merged 2 commits into
mainfrom
feat/show-boundary-language
Jul 18, 2026
Merged

feat(show): surface boundary language in read view#59
rennehan merged 2 commits into
mainfrom
feat/show-boundary-language

Conversation

@rennehan

Copy link
Copy Markdown
Contributor

What

hydrate show renders a node's kind, path, ports, and edges — but not a boundary's codegen language (set with --language). A user who set --language python on a boundary had no way to confirm it from the CLI; the only read surface was the web UI.

This surfaces the language in both output modes, keeping them in parity:

  • JSON: a language field on nodes that have one, omitted (not null) when unset — matching how the view treats other optional fields.
  • Human: annotates the boundary line, e.g. Core [boundary] (python), only when set (same (lang) convention already used by hydrate projects).

Pure display change in the hand-written layer — the graph was already pulled with language present. wire/ is untouched.

Tests (TDD, written first)

  • boundary_language_is_shown_in_both_modes — a boundary with a language shows it in both --json and --human.
  • node_without_language_emits_no_language_value — a languageless node emits no field / no bogus value in either mode.

Both fail if the display logic is removed (verified).

Gates

  • cargo fmt -p hydrate -- --check — clean
  • cargo clippy --workspace --all-targets -- -D warnings — clean
  • cargo test — 294 + 7 pass, 0 failed

`hydrate show` rendered only a node's kind, path, ports, and edges — a
boundary's codegen language (set with `--language`) was invisible, so the
only way to confirm it was the web UI.

Surface it in both output modes, carrying the same information:
- JSON: a `language` field on nodes that have one, omitted when unset.
- Human: annotate the boundary line, e.g. `Core  [boundary]  (python)`,
  only when set.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rennehan rennehan added the enhancement New feature or request label Jul 18, 2026
@rennehan rennehan self-assigned this Jul 18, 2026
- reword the ShowNode.language doc to reflect it surfaces on whichever
  node the server reports it on (not boundary-gated in code)
- tighten the no-annotation test to assert the exact `]  (` signature is
  absent rather than any stray `(`, so unrelated output can't false-trip

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rennehan
rennehan merged commit a1f15e1 into main Jul 18, 2026
3 checks passed
@rennehan
rennehan deleted the feat/show-boundary-language branch July 18, 2026 17:04
rennehan added a commit that referenced this pull request Jul 19, 2026
…olerance test (review)

Public repo — strip roadmap phase labels from comments (consistent with #59/#60). Fix the
test comment (it constructs in-memory, doesn't round-trip JSON deserialize) and assert the
port survives into JSON output too, not just Human mode.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
rennehan added a commit that referenced this pull request Jul 19, 2026
* feat(h2o): accept per-port external + contract_name (wire regen)

The h2o Port schema gained `external` and `contract_name`. Vendor the
updated contract and regenerate the wire client so the generated Port /
WirePort models carry the two new fields (external: Option<bool>,
contract_name: Option<Option<String>>).

The CLI treats these as accept-and-ignore data: it never authors them, so
the hand-written port-construction sites set them to None (skipped on the
wire) and show/pull deserialize + render a graph carrying them without
error. Adds a tolerance test for a port carrying both fields.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* refactor(show): drop public "Phase 1.5" comment labels + strengthen tolerance test (review)

Public repo — strip roadmap phase labels from comments (consistent with #59/#60). Fix the
test comment (it constructs in-memory, doesn't round-trip JSON deserialize) and assert the
port survives into JSON output too, not just Human mode.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant