pinhole 0.3.7: the operator's home marks its logical-lens namespace box too (#234, pinhole#119) - #333
Merged
Merged
Conversation
…he logical lens too (#234, pinhole#119) behold#324 marked the OperatorStack's namespace in the ENTITY graph (markOperatorHome) but could not mark it in the logical lens's box — GroupBox had no mark field until pinhole#119 shipped one in 0.3.7. Bump the pin to ^0.3.7 and wire it up: operatorHomeBoxMarks (src/operator.ts) runs the same operatorHomes detector against the projection's own namespaceBoxes keys (behold#328/#331, now exposed on projectTopology's return), and renderArchitecture's new groupMarks option splices the result onto the matching GroupBox by its structural id — never by title, same discipline #331 already holds for placeHelmReleases. Two of the four /api/graph and /api/overlay logical branches never called markOperatorHome at all (they return before the entity branch that does), so their box mark is derived straight from operatorHomes on the pre-projection IR rather than depending on that call's having run. Picked a fresh two-arc "converge loop" GlyphSpec rather than a GENERIC_GLYPHS key — nothing in that fixed vocabulary names a converge loop, and the point is one glyph identity so the operator's home reads the same as web/app.js's "⟳" on the entity graph. Verified #331's decorated-title test (logical-helm.test.ts) doesn't interact: it exercises ByContainer/title strings, mark is a separate GroupBox field addressed by id. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Rfs1mLVWmwginHnDTg75sG
lex00
added a commit
that referenced
this pull request
Aug 31, 2026
…s home is marked in both views, the e2es assert the new edges (#335) Since 0.13.0: #331 (the single-project logical routes gain addClusterAnchorEdges — history showed the omission was never a decision — and namespace boxes are addressed by structural keys, not titles), #333 (pinhole 0.3.7's GroupBox mark channel consumed — the converge loop's home namespace carries the same glyph in the logical lens as on the entity graph), #332 (both GitOps e2es run green live at this line and now assert the reconciles/delivers member edge, its entry-node landing, and the detail-tier note). Claude-Session: https://claude.ai/code/session_01Rfs1mLVWmwginHnDTg75sG Co-authored-by: Claude Fable 5 <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.
Summary
@intentius/pinholeto^0.3.7(pinhole#95's node mark vocabulary, extended toGroupBox.markby pinhole#119).markOperatorHome, src/server.ts's four call sites) but the logical lens's namespace box had no mark channel to use — recorded in pinhole#119 and src/operator.ts's scope note. That gap is now closed.operatorHomeBoxMarks(src/operator.ts) reusesoperatorHomes— the same label-reading detectormarkOperatorHomealready calls, not a second one — against the projection's ownnamespaceBoxeskeys (behold#328/fix: every logical route hands the lens the same anchors, and namespace boxes stop being addressed by their titles (#328, pinhole#119) #331's structural addressing, now exposed onprojectTopology's return).renderArchitecturegained agroupMarksoption that splices the result onto the matchingGroupBoxby its structuralid, never by title./api/graphand/api/overlaynever calledmarkOperatorHomeat all (they return before the entity branch that does), so the box mark is derived straight fromoperatorHomeson the pre-projection IR rather than depending on that call having run first.GlyphSpecrather than aGENERIC_GLYPHSkey — nothing in that fixed vocabulary names a converge loop, and the point is one glyph identity so the operator's home reads the same as web/app.js's "⟳" mark on the entity graph.Test plan
npm run tscnpm test— 75 files / 1420 tests (main: 75/1413, +7 new)npm run buildnpm run smoke:uilogical-helm.test.ts) doesn't interact — it exercisesByContainer/title strings,markis a separateGroupBoxfield addressed byid.🤖 Generated with Claude Code
https://claude.ai/code/session_01Rfs1mLVWmwginHnDTg75sG