GitHub
07/26/2026, 8:06 PMNodeView with:
• posture.risk_level
• tags
• health.status
• health.reason
• health.signals
• Adds server-side node health calculation:
• offline when the node is inactive
• at_risk for high/critical posture risk
• attention for medium or unknown posture
• healthy for active nodes with low/no risk
• Loads posture summaries and tags during single-node and paginated node projection.
• Adds batch tag loading by node IDs to avoid per-row tag queries.
Posture Summary
• Adds posture summary helpers to calculate compact node risk from posture records.
• Supports single-node and batch posture risk summary lookup.
All Nodes Table
• Adds dedicated Health and Tags columns.
• Adds a posture column when posture is enabled.
• Keeps Activity focused on last seen and bytes received.
• Displays posture risk as a colored badge: low, medium, or high.
• Displays uptime alongside posture risk when posture is enabled.
Single Node View
• Adds a Health section in the Details tab.
• Shows:
• health badge
• health reason
• calculation signals
• all node tags
Frontend Shared Components
• Adds reusable node signal rendering for:
• health badges
• tag chips
Tests
• Adds backend tests for:
• node health projection
• posture risk projection
• node tag projection
• batch tag lookup
• Adds frontend tests for:
• all-nodes Health and Tags columns
• posture column behavior
• node detail Health and Tags section
Validation
• npm test -- NodesTablePage.test.tsx
• npm test -- NodeDetailPage.test.tsx
• npm run check
• GOCACHE=/tmp/osctrl-gocache go test ./pkg/tags ./pkg/types ./pkg/posture ./cmd/api/handlers
• GOCACHE=/tmp/osctrl-gocache go test ./cmd/api/handlers
• git diff --check
jmpsec/osctrlGitHub
07/26/2026, 8:45 PM