Fleet changelogs · dev.ecs0.net
rdmsm4x-changelog-20260924-1348-rtty-dashboard-523-slice-b

Completed RTTy Slice B in the isolated scratch branch: consistent section style menus, target rename, persisted flow-table sorting, and grouping placement; 1,683 tests with zero failures.

HANDBACK-B — RTTy dashboard Build 523, Slice B only

Completed: 2026-09-24 13:48:10 EDT Host: rdmsm4x. Mode: production (existing app/data); isolated worker lane for the lead. Workspace: /Users/richh/dev/_scratch/rtty-dashboard-523-20260924 Branch: feat/dashboard-one-timeline-523 Slice A base: 9f2ecb32e1bc7c896d5d206453032cb097c031ef Result: B1–B4 complete, committed, both required builds passed, full package tests passed. Slice C was not started. No push, live-repository integration, installation, signing, release metadata edit, or installed preference mutation.

Commit and exact files

812862b2afe786893b3f185285e856ca557bd212 — feat(dashboard): complete Slice B section styles and flow table sorting

Committed by explicit path; includes Agent: codex@rdmsm4x. Backup/review patch: slice-b.patch; Slice A and Slice B are retained in local Git.

FEATURE_MATRIX.md
Sources/RTTy/Stores/ObservationStore.swift
Sources/RTTy/Support/DashboardModuleLayout.swift
Sources/RTTy/Views/ApplicationFlowsView.swift
Sources/RTTy/Views/DashboardView.swift
Sources/RTTy/Views/Graphs/ApplicationFlowGraphView.swift
Sources/RTTy/Views/Graphs/ChartBoardStyle.swift
Tests/RTTyTests/ApplicationFlowStyleSelectionTests.swift
Tests/RTTyTests/ApplicationFlowsControlsTests.swift
Tests/RTTyTests/DashboardSectionStyleTests.swift
Tests/RTTyTests/StandardChannelSurfaceTruthTests.swift
docs/FEATURE_MATRIX.md

Implemented acceptance

Exact final build and test commands

All commands ran with cwd /Users/richh/dev/_scratch/rtty-dashboard-523-20260924. All final commands below exited 0. Build/test execution used the authorized host context because SwiftPM's nested manifest sandbox is unavailable under the restricted harness; no host security setting was changed.

CLANG_MODULE_CACHE_PATH=/private/tmp/rtty-a-cache/clang SWIFTPM_MODULECACHE_OVERRIDE=/private/tmp/rtty-a-cache/swiftpm swift build --arch arm64 > /private/tmp/rtty-b-build-final.log 2>&1

Output: Build complete! (0.94 sec). Retained output: slice-b-build-arm64.log. SwiftPM waited for the concurrent test invocation to release its package lock before building.

xcodebuild -project Apps/RTTyStandard/RTTyStandard.xcodeproj -scheme RTTyStandard -destination 'generic/platform=macOS' -derivedDataPath /private/tmp/rtty-a-standard build CODE_SIGNING_ALLOWED=NO > /private/tmp/rtty-b-standard-final.log 2>&1

Output: ** BUILD SUCCEEDED **. Retained output: slice-b-build-standard.log.

/usr/bin/lipo -archs /private/tmp/rtty-a-standard/Build/Products/Debug/RTTy.app/Contents/MacOS/RTTy

Output: x86_64 arm64. This is an unsigned build, not a release-signing gate.

CLANG_MODULE_CACHE_PATH=/private/tmp/rtty-a-cache/clang SWIFTPM_MODULECACHE_OVERRIDE=/private/tmp/rtty-a-cache/swiftpm swift test > /private/tmp/rtty-b-tests-final.log 2>&1

Retained output: slice-b-tests.log. Exact per-target summaries:

Test Suite 'RTTyTests.xctest' passed at 2026-09-24 13:46:03.901.
     Executed 1265 tests, with 8 tests skipped and 0 failures (0 unexpected) in 99.297 (99.391) seconds
Test Suite 'RTTyPrivilegedCaptureTests.xctest' passed at 2026-09-24 13:46:04.370.
     Executed 71 tests, with 0 failures (0 unexpected) in 0.341 (0.346) seconds
Test Suite 'LatencyCoreTests.xctest' passed at 2026-09-24 13:46:11.729.
     Executed 347 tests, with 0 failures (0 unexpected) in 7.241 (7.269) seconds

Total: 1,683 tests, 0 failures, 8 skipped (1,675 not skipped). Nine new XCTest methods relative to Slice A's 1,674; no test deleted. The minimum of 1,628 is exceeded. Swift Testing separately reports zero tests and is not counted.

Required/regression suite receipts from that same complete run:

Test Suite 'ApplicationFlowStyleSelectionTests' passed at 2026-09-24 13:44:53.441.
     Executed 5 tests, with 0 failures (0 unexpected) in 0.195 (0.195) seconds
Test Suite 'ApplicationFlowsControlsTests' passed at 2026-09-24 13:44:53.742.
     Executed 6 tests, with 0 failures (0 unexpected) in 0.228 (0.229) seconds
Test Suite 'DashboardFitTests' passed at 2026-09-24 13:45:30.134.
     Executed 5 tests, with 0 failures (0 unexpected) in 3.647 (3.647) seconds
Test Suite 'DashboardSectionStyleTests' passed at 2026-09-24 13:45:38.812.
     Executed 8 tests, with 0 failures (0 unexpected) in 0.097 (0.098) seconds
Test Suite 'StandardChannelSurfaceTruthTests' passed at 2026-09-24 13:46:03.861.
     Executed 12 tests, with 0 failures (0 unexpected) in 0.026 (0.027) seconds

DashboardFitTests retains all five cases, including 1440×900 / 1440×1200 / 1150×1500, both channels and the doubled chart. ApplicationFlowsControlsTests retains its original cases, measures the replacement compact menu against 856pt, and adds title-row grouping placement. The new suite covers all three preference keys, every sort column/direction and stable ties, click direction transitions, invalid preferences, target title/choices, three menu call sites and channel gates, and four distinct History renders.

git diff --check
cmp FEATURE_MATRIX.md docs/FEATURE_MATRIX.md
git status --short

Final results: diff check and matrix comparison exited 0; post-commit status was empty. Scope receipt: slice-b-scope-audit.txt.

Deviations and clarifications

  1. The spec calls Down-descending today's order, but the base helper orders by total rate. Implemented the explicit requested default, Down descending, only in the table. The chart and candidate-row selection retain their existing total-rate order. No change to the number or membership of visible rows was requested or made.
  2. The three new persisted keys are the two History styles and table sort. The chart's section style remains view state, as its previous segmented selection was; no unrequested fourth persistence key was added. Automatic target history intentionally preserves today's global-style resolution rather than silently changing existing appearance.
  3. Placement verification: SwiftUI's off-screen hierarchy is not directly walkable with the existing test harness. Following the repository's existing source-guard pattern, the test asserts the real graph title-row placement and its absence from the real controls bar, checks the actual grouping binding, and measures the title-row controls' intrinsic width. Existing flow-control render tests and full dashboard fit tests remain green. This is not a claim of installed UI click/hover acceptance.
  4. Initial run found three test-expectation failures, all corrected: two existing source guards named the replaced Picker/Text spellings; their assertions now name the actual menu and retain transition/channel coverage. The new title-width test initially allowed its text to compress under a zero-width proposal; it now measures intrinsic size with fixedSize(). slice-b-tests-initial.log retains that run; the final full run supersedes it.
  5. Build invocation: reused Slice A's dedicated writable module caches and Standard DerivedData, with the spec-permitted -derivedDataPath addition. Initial sandboxed build reported sandbox-exec: sandbox_apply: Operation not permitted; authorized builds succeeded. No scripts, source-registration files, pins or release metadata were edited.

What was not verified

Persistence and rollback

Handback, patch, full logs and audit: /Users/richh/dev/_handoff/rtty-dashboard-523-20260924-codex. Undo this isolated code change with git revert 812862b2afe786893b3f185285e856ca557bd212. Tests use disposable UserDefaults suites; no installed data or preferences were changed. No data migration/deletion was introduced. The lead retains integration and release ownership. Slice C remains untouched.

Changelog archive: /Users/richh/dev/LLM/Claude/changelogs/rdmsm4x-changelog-20260924-1348-rtty-dashboard-523-slice-b.md
Folder: rdmsm4x
Title: rdmsm4x-changelog-20260924-1348-rtty-dashboard-523-slice-b
Notes saved and re-read: x-coredata://8B904D75-7762-4F58-B71A-9EF669C47259/ICNote/p599

The supplied Notes helper currently targets llmlog and rewrites titles, so the required per-host folder/title were preserved with direct AppleScript in this Aqua session. No existing note was removed.