feat(show): surface boundary language in read view - #59
Merged
Conversation
`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>
- 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
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
hydrate showrenders a node's kind, path, ports, and edges — but not a boundary's codegenlanguage(set with--language). A user who set--language pythonon 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:
languagefield on nodes that have one, omitted (notnull) when unset — matching how the view treats other optional fields.Core [boundary] (python), only when set (same(lang)convention already used byhydrate projects).Pure display change in the hand-written layer — the graph was already pulled with
languagepresent.wire/is untouched.Tests (TDD, written first)
boundary_language_is_shown_in_both_modes— a boundary with a language shows it in both--jsonand--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— cleancargo clippy --workspace --all-targets -- -D warnings— cleancargo test— 294 + 7 pass, 0 failed