Fix/smart device graphs - #14
Merged
Merged
Conversation
Objective: Show session PIDs in a dedicated dashboard column and allow exact systemd-logind closure for eligible unavailable SSH attribution rows. Invariant: Unverifiable SSH ancestry never authorizes direct PID signalling; login1 must revalidate process generation, session ID, leader, TTY, remote state and sshd service. Evidence: make check; 116 Playwright desktop/mobile tests; targeted utmp, login1, operation, API and session inventory tests. Limitations: Managed unavailable-session closure requires systemd and a live remote utmp leader with readable process start ticks.
Objective: Keep login1 wiring and SSH inventory conversion under the SSH session owner, deriving action availability from the wired closer. Invariant: Unattributed sessions advertise managed close only when the exact login1 closer is available; verified signaling remains unchanged. Evidence: Targeted internal/app SSH session tests and make check. Limitations: None.
Objective: Reuse one session-row representation for metrics that have not been measured. Invariant: SSH attribution issues and empty terminal sources keep the same displayed values, actions, and accessibility behavior. Evidence: Four targeted Playwright session tests and make check. Limitations: None.
Objective: block libvirt network destruction when guest attachment state or network XML cannot be verified. Invariant: NetworkDestroy runs only after every relevant guest and bridge identity has been checked; no real service operation is used in tests. Evidence: go test -race ./internal/virt; git diff --check. Limitations: Remote validation will inspect configured network targets without destroying a live network.
Objective: launch Chromium with the generated isolated profile and unpacked authentication extension. Invariant: dashboard passwords remain outside URLs and process arguments while only the generated extension is enabled. Evidence: ruff check scripts/open_sermo_dashboards.py scripts/test_open_sermo_dashboards.py; python3 -m unittest scripts/test_open_sermo_dashboards.py; git diff --check. Limitations: Browser startup is validated by argument construction; remote server validation does not launch a graphical browser.
Objective: make init-scoped optional entries follow SERMO_BACKEND and engine.backend before host autodetection. Invariant: service and catalog resolution share one pruning path and malformed optional predicates remain fail-safe. Evidence: go test -race ./internal/config -run TestEnableIfInit -count=1; git diff --check. Limitations: None.
Objective: delete an exact .local sibling whenever its retired base watch is normalized, preventing orphan overrides. Invariant: the complete /etc/sermo tree is backed up before the first deletion, unrelated watch files remain untouched, and failed validation still restores the snapshot. Evidence: shellcheck scripts/remote-deploy/remote_normalize_retired_watch_types.sh; ruff check scripts/remote-deploy/test_normalize_retired_watch_types.py; python3 -m unittest scripts/remote-deploy/test_normalize_retired_watch_types.py; git diff --check. Limitations: Companion matching is intentionally exact by filename within the corresponding .local directory.
Objective: avoid delaying completed manual operations when audit persistence fails with a permanent SQLite error. Invariant: BUSY and LOCKED result codes, including extended codes, retain bounded retries and every unrecorded operation still fails loudly. Evidence: go test -race ./internal/state ./internal/cli -run Test\(IsSQLiteContention\|RecordManualActionEvent\) -count=1; git diff --check. Limitations: Retry duration and pause remain unchanged for genuine contention.
Objective: show GeoIP age, network driver/speed/assigned IPs, and the SMART interface in their watch tables, including compact desktop layouts. Invariant: typed columns read the same canonical API readings as watch expansions; narrow mobile layouts still avoid horizontal overflow, and network address counts remain distinct from assigned IP values. Evidence: make check; targeted Go address-reading test; targeted Playwright test on desktop and mobile; live pre-deploy API inspection on bk1.srvdr.com. Limitations: interfaces without an address, driver, speed, or kernel bus continue to show an em dash rather than an inferred value.
Objective: Hide graph panels and empty-data notices for SMART indicators a device does not publish. Invariant: Current and retained SMART readings preserve supported historical graphs for both watches and service checks. Evidence: make check; remote validation on bk1.srvdr.com confirmed 44 healthy services, 51 fresh watches, and device-specific SMART metrics. Limitations: SMART capability becomes visible after a current or retained device reading.
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.
No description provided.