Reliability
Findings
R-001: TSL UMD sender marks running before bind success
- Severity: MEDIUM
- Evidence:
server/tsl-umd-sender.js:227-259sets_isRunning = trueimmediately afterbind(), with no rollback on socket error. - Impact: If the UDP bind fails, the sender remains “running” and refresh loop continues, leading to noisy errors and no recovery.
- Recommendation: Set
_isRunningonly after successful bind or handleerrorevent by stopping and resetting state.
R-002: CasparCG shared listener keyed by IP only
- Severity: MEDIUM
- Evidence:
server/osc-casparcg.js:49-75stores clients in aMapkeyed by IP;_handleMessageroutes by source IP inserver/osc-casparcg.js:189-196. - Impact: Multiple CasparCG devices on the same host (different channels/layers) will overwrite each other, causing lost or incorrect state.
- Recommendation: Key registrations by
ip+channel+layeror allow multiple clients per IP.
R-003: No SIGTERM handler for graceful shutdown
- Severity: LOW
- Evidence:
server/server.js:584-609handlesSIGINTonly. - Impact: systemd typically uses SIGTERM; without a handler, protocol clients and sockets may not be closed cleanly.
- Recommendation: Add a SIGTERM handler that mirrors SIGINT cleanup.
Attestation
# Identityagent_id: audit-reliabilityagent_version: "1.0"protocol_version: "2.0"
# Timingtimestamp: 2026-01-31T17:00:26Zduration_seconds: 780
# Contextgit_ref: e4bb0098264f90d3afc7b5d0f3b5e425d1825761git_branch: mainworking_directory: /Users/david/Documents/GitHub/superdash
# Artefact metadataartefact: RELIABILITY.mdphase: 3status: COMPLETE
# Confidence assessmentconfidence: MEDIUMconfidence_notes: "Reliability risks derived from static code inspection; not validated in runtime environment."
# Inputs consumed (with integrity hashes)inputs_consumed: - path: server/tsl-umd-sender.js hash: sha256:85002288bee317b9749e0385e02cb830d790b9ba548d8f496b3963be180689da - path: server/osc-casparcg.js hash: sha256:7a22ec8e254ca6d55c5026ebd62068c866ce13f26d62760bfe73b56f116c5a9e - path: server/server.js hash: sha256:4d09f4acde1032a407f67943d0cd93be1fe10b79a9c07aa3b430cf6dd27b31bb
# Commands executedcommands_executed: - seq: 1 cmd: "nl -ba server/tsl-umd-sender.js | sed -n '220,300p'" exit_code: 0 purpose: "Inspect TSL sender startup sequence" output_summary: "_isRunning set before bind confirmation" - seq: 2 cmd: "nl -ba server/osc-casparcg.js | sed -n '40,220p'" exit_code: 0 purpose: "Inspect shared listener registration" output_summary: "Map keyed by IP; routing by source IP" - seq: 3 cmd: "nl -ba server/server.js | sed -n '560,620p'" exit_code: 0 purpose: "Inspect shutdown handling" output_summary: "SIGINT handler only"
# Findings summaryfindings: critical: 0 high: 0 medium: 2 low: 1 info: 0
# Blocking issuesblocking_issues: []
# Handoffhandoff: ready: true next_agents: - report-writer dependencies_satisfied: RELIABILITY.md: COMPLETE context_for_next: | Reliability risks: TSL sender running state not tied to bind success; CasparCG shared listener keyed by IP only; no SIGTERM handler.