Repository navigation
Share Explorer facets and infrastructure table controls - #720
tonyalaribe wants to merge 4 commits into
Conversation
Monoscope production impact · Coverage unknownProject Evidence window (UTC): 2026-10-19 00:27:28.202216734 UTC → 2026-10-26 00:27:28.202216734 UTC Coverage: Evidence is capped at 20 service/environment groups, monitors and dashboard queries. Telemetry describes the mapped service, not a proven changed-path or deployed-revision match. Monitor and dashboard references are project-wide; their relationship to the mapped service is unverified. Diff coverage is incomplete: only the first 30 files and 2000 characters per patch are inspected. No evidence maps the changed revision to a deployed service, environment, or changed request path. No changed-path performance or export/facet interaction measurements were supplied. Diff inspection is incomplete beyond the first 30 files and 2000 characters per patch. The supplied monitor and dashboard references lack verified dependency or revision linkage to the changed paths. |
ReviewGood consolidation: it removes the bespoke Possible bug
Succinctness / reuse
Tests
Security/perf
|
|
Review (skimmed the diff; build/CI results taken from the PR description). Good: one shared Succinctness / reuse
Bugs / risks
Security: nothing blocking. Facet values go through Process: the |
Infrastructure inventories now render the same
Pkg.Components.Facets.sidebar_as Explorer. The shared renderer handles counted checkboxes, grouped fields, search, lazy values, and More/Less controls, and is embedded by the table and Host Map.The table owns optional export, column customization, grouping, and resource tabs. Column choices persist through refresh and HTMX navigation; CSS owns visibility and inline hyperscript restores preferences. Host grouping works with search and CSV export. Switching Kubernetes tabs preserves filters and time, applying namespace scope before aggregation so the node and cluster views keep matching resources.
Container identity moves into the name column at narrower desktop widths so CPU values remain visible alongside the shared sidebar. The obsolete Host Map time-input helper is removed. Two existing browser tests now await editor readiness and saved review settings.
AGENTS.mdreserves expensive sign-off for the end of implementation and verification.Validation:
E2E_WORKERS=1 CI_SHARDS=4 make ci-signoffpassed; every check has a valid attestation for this tree.Review decisions:
Supported pages each render one facet rail. Scoping search for multiple simultaneous rails is deferred until such a page exists.
Keep
facetTail_'s expanded flag: inventory overflow passesFalse, while Explorer's lazy response passesTrue(Log.hs:1002). Dropping it would change Explorer behavior.Namespace-before-aggregation is already exercised through real requests in
infrastructure-time-window.spec.ts:86: Pods → Nodes retains the namespace/cluster, returns both matching rows, and preserves hidden columns.Keep the qualified
Facets.Config/Table.Confignames and explicit configuration fields. Attribute bags would weaken the API. ChanginginfraUrlto optional values would add conversions to concrete-value callers without removing URL handling.The two Kubernetes aggregations consume different inputs: the full snapshot supplies facet options/counts, and namespace-scoped rows supply the table. Counts intentionally retain the unfiltered inventory scope, consistent with the other inventories; a local alias would not remove either computation.
Keep presentation sorting at the host table boundary, rather than coupling shared inventory projection to table order. Keep the small positional filter-option constructor consistent with its existing builders.
Applied the review’s exhaustive constructor classification: one explicit case covers values, children, and loading, and its result drives both inline style decisions. The small More-label expressions remain beside their markup rather than adding another helper.
Final automated review: keep optional clear/actions values because absence omits their wrappers; empty attributes alone would still render a Clear button without behavior. Keep lazy-tail expansion separate from the fetch/expand strategy because an Explorer response opens a fetched tail while inventories initially collapse it. A values-only predicate would lose the explicit constructor coverage required by this repository.
The Explorer checkbox's short
hx-on:clickinterop and unloaded-group search behavior predate this extraction. Selectors passed tofilterInputAttr_are static code literals. Additional inventory defaults, URL builders, vector-sorting dependencies, and layout-only helpers would widen this change without fixing observed behavior, so they are deferred.Browser coverage ran with
E2E_BASE_URLset: grouping/search/CSV and namespace tab navigation were exercised. The CSV assertion pins the current export format, and explicit viewport/breakpoint expectations test the responsive contract; no duplicate handler test or breakpoint configuration layer is added.