Repository navigation
Machines view: every machine the ground station hears from, with drift findings - #74
Merged
Merged
Conversation
…w in v1.6.0 once its metadata exists (#73) REQ-JOBS-001 depends on REQ-PROBE-001: job states travel in each host's probe report instead of a separate collection. REQ-EXP-001 is proposed for v1.6.0: its source must be structured metadata in pulseengine.eu, designed with the view, never parsed prose. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KEjmjacA37doyazDSdB8ez
…t findings (REQ-PROBE-001/003) The ground station probes its own machine every minute ([hub] probe_self, on by default; off in the test servers) and stores the latest report per machine in machines.json next to the hub state. The CI host gets a card from the smithy agent's snapshot. GET /api/machines serves the reports with age, stale flag and findings. Findings, worst first: kernel or agent-CLI versions behind the newest seen on the same OS (versions compared numerically: 2.1.9 < 2.1.312), disks at 85%/95%, under 10% memory free, 5-min load above the core count, and no report for 3 minutes. Other machines appear once they can send (enrollment and the QUIC link are next). Oracles: findings (drift, silence, full disk, order), escaping of what machines report, persistence across restarts, the endpoint in the contract, and the view in the browser (Playwright 20/20). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KEjmjacA37doyazDSdB8ez
…l errors Security review of the Machines view: the read API has no auth (#46) and a permissive CorsLayer let any web page a LAN user opened read it cross-origin, now including a machine inventory. Nothing needs CORS (the dashboard is same-origin, agents use the CLI), so the layer is gone. /api/machines publishes tools as name/installed/version and sessions as counts per agent; tool paths, tool error output, pids and working directories stay in the ground station's local machines.json. Oracle: a request with a foreign Origin gets no access-control-allow-origin, and none of the private details appear in the API or the view. Negative control: restoring CorsLayer::permissive() turns it red. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KEjmjacA37doyazDSdB8ez
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.
Step 1 of getting every machine into warte: the ground station side, starting with what it can see without a network link.
Machines view and
GET /api/machines(REQ-PROBE-001/003):[hub] probe_self, on by default) and keeps the latest report per machine inmachines.json. Each card shows OS, kernel, load, memory, disks, agent CLIs with versions, and agent sessions, without command lines.Previewed on real data: this Mac running the probe locally, plus the CI host. It showed the Mac's system disk at 95% (critical) and load above its 10 cores, and the CI host at 25 load on 32 cores.
Also carries the plan commit (folded in, as admission advised for docs):
Next: enrollment (DD-PROBE-002) and the QUIC link (DD-TRANSPORT-001), so wohl, gale, the CI host and the Macs can send. Then the smithy role (smithy#40).
Oracles:
/api/openapi.json, and the contract test hits it.cargo testand clippy-D warningsare green.🤖 Generated with Claude Code
https://claude.ai/code/session_01KEjmjacA37doyazDSdB8ez