Fleet changelogs · dev.ecs0.net
rdmbair13m5-changelog-20260904-1958-unified-ecs0lib-graphing-engine

rdmbair13m5-changelog-20260904-1958-unified-ecs0lib-graphing-engine

Unified 16 portfolio graphing styles into ECS0UI.ECS0GraphEngine in lib/ecs0lib, certified on macOS, iOS, tvOS, and visionOS under Swift 6 strict concurrency, and resolved a downstream concurrency race in apps/Tyrell.

Scope

Changes Made

  1. Unified Graphing Engine (lib/ecs0lib/Sources/ECS0UI/ECS0GraphEngine.swift):
    • Consolidated the 15 chart styles independently maintained in RTTy (ObservationStore.swift) and LogTTY (ChartStyleRegistry.swift), plus added .circularGauge (16 total styles):
      • .automatic, .line, .stepped, .area, .overlayArea, .stepArea, .stackedArea, .opposingArea, .scatteredDots, .impulse, .heatmap, .multiLaneHeatmap, .dualTrace, .peakEnvelope, .bars, .circularGauge.
    • Vends core data models: ECS0ChartDataPoint, ECS0ChartSeries, ECS0ChartPalette (.standard, .neon, .monochrome, .traffic).
    • Implements native SwiftUI views: ECS0UniversalChartView, ECS0SparklineView, ECS0AreaChartView, ECS0BarChartView, ECS0HeatmapGridView, ECS0CircularGaugeView.
    • Full Swift 6 strict concurrency compliance (Sendable, @MainActor view rendering, zero data races).
  2. Graph Engine Unit Test Suite (lib/ecs0lib/Tests/ECS0LibTests/ECS0GraphEngineTests.swift):
    • Comprehensive test coverage for style completeness, series min/max calculations, empty and edge-case rendering (single-point, zero-values), and palette equality.
  3. Downstream Tyrell Concurrency Fix (apps/Tyrell/Sources/tyrelld/ControlServer.swift):
    • Replaced an un-isolated Task with DispatchSemaphore inside synchronous HTTP routing with a direct, lock-guarded call to box.readHeatmap().
    • Eliminates Swift 6 warning/error regarding non-Sendable closure escaping into async context.

Verification Evidence

  1. Thread-Sanitizer Test Suite:
    swift test --package-path ~/dev/lib/ecs0lib --sanitize=thread
    # Output: Executed 315 tests, with 0 failures (0 unexpected) in 12.403 seconds
    # + 12 Swift Testing tests in 4 suites passed
  2. Graph Engine Tests:
    swift test --package-path ~/dev/lib/ecs0lib --filter ECS0GraphEngineTests
    # Output: Executed 6 tests, with 0 failures in 0.034 seconds
  3. Four-Platform Gate (Xcode 27 / Swift 6):
    • macOS: swift build & swift test (arm64, macOS 27 SDK) -> Passed
    • iOS: xcodebuild -scheme ecs0lib -destination 'generic/platform=iOS' build -> BUILD SUCCEEDED
    • tvOS: xcodebuild -scheme ecs0lib -destination 'generic/platform=tvOS' build -> BUILD SUCCEEDED
    • visionOS: xcodebuild -scheme ecs0lib -destination 'generic/platform=visionOS' build -> BUILD SUCCEEDED
  4. Downstream Verification (apps/Tyrell):
    • swift build --package-path ~/dev/apps/Tyrell: Built all 5 products (tyrell-app, tyrelld, tyrellbar, tyrell, tyrell-mcp) with 0 errors.
    • swift test --package-path ~/dev/apps/Tyrell --filter ActivityEventBufferActorTests: 6/6 tests passed in 0.034 seconds.

Promotion & Sync

How to Undo