Implemented Slice C table sizing and cached latency overlay; both builds and all added tests pass, with the full-suite Settings baseline blocker documented.
HANDBACK-C — RTTy dashboard Build 523, Slice C only
Recorded: 2026-09-24 14:10:14 EDT Host: rdmsm4x. Mode: production;
isolated worker lane for lead claude@rdmsm4x/c13f617a. Workspace:
/Users/richh/dev/_scratch/rtty-dashboard-523-20260924
Branch: feat/dashboard-one-timeline-523 Slice B base:
812862b2afe786893b3f185285e856ca557bd212
Result: C1 and C2 implemented and committed; both required builds pass and all 14 added tests pass. The required all-green package gate is NOT met: the final full run reports 1,697 tests, 8 skipped and 2 assertion failures in one existing Settings scrolling test. The untouched Slice B commit reproduces those same two assertions in the currently locked desktop session. Unlock/retest is pending; an unlocked rerun has not been verified. No Settings source or test modification is included in this commit. This is a source handoff with an explicit validation blocker, not a fully green slice or release claim.
Commit and exact files
505642657ef121336e982c935ab3b6f86e70e3b4 —
feat(dashboard): implement Slice C table sizing and latency overlay
Committed by explicit path with Agent: codex@rdmsm4x.
Post-commit git status --short is empty. Complete commit
patch including the new test file: slice-c.patch.
FEATURE_MATRIX.md
Sources/RTTy/Stores/ObservationStore.swift
Sources/RTTy/Support/DashboardModuleLayout.swift
Sources/RTTy/Views/AggregateHistoryView.swift
Sources/RTTy/Views/ApplicationFlowsView.swift
Sources/RTTy/Views/DashboardView.swift
Sources/RTTy/Views/Graphs/ApplicationFlowGraphView.swift
Sources/RTTy/Views/Graphs/ChartBoardStyle.swift
Sources/RTTy/Views/PathHistoryView.swift
Tests/RTTyTests/ApplicationFlowsSizingOverlayTests.swift
Tests/RTTyTests/DashboardFitTests.swift
docs/FEATURE_MATRIX.md
Implemented acceptance
- C1 — height:
ApplicationFlowsTableHeightstores auto or finite positive points atappearance.applicationFlowsTableHeightthrough ObservationStore. Default and invalid-value fallback are auto. The auto target is the measured table content, including the column header, row heights/spacing, expanded details and a 6 pt handle clearance. It clamps to the existing 55 pt × interface-scale floor and column space remaining after measured card chrome and other visible modules, with the existing targets floor reserved. The chart keeps its 1×/2× size, core bands keep their measured minima, and excess table content scrolls. - C1 — controls: a borderless header ellipsis menu has a checkmarked Auto-size table toggle and Reset height. Disabling auto retains the rendered height; enabling auto/reset restores auto. A 6 pt bottom overlay handle adds no module/header height, uses the vertical-resize cursor and a stable named dashboard coordinate space, switches to manual live during dragging, and persists on release. Accessibility increment/decrement also adjusts height. Stored manual intent survives a narrower window; rendering clamps it without rewriting it.
- C2 — projection: the store returns cached intervals from the same existing headline latency sample projection that feeds the main latency band (overall aggregate by default). It uses the same configured alert policy and cadence-derived column duration. Spike intervals and edge clipping/three-point visibility floor share geometry with the latency band's successful spike markers. Loss remains separate and orange in the latency band.
- C2 — rendering and control: every flows style draws
the intervals after the board and before the series, using the latency
band's palette at
latencySpikeShadeOpacity * 0.6. Overlay latency spikes appears in the flows chart's shared section style menu, defaults on and persists atappearance.applicationFlowsLatencyOverlay. Standard returns no intervals and the flows UI retains its Direct-only gates. No collector or new source file was added. - C2 — performance: the cache lives outside SwiftUI observation and the frame timeline. It returns one interval array for repeated reads of the same projection; frame copies retain that array and only map/draw rectangles. Cache invalidation includes window, first/last sample identity, count/latest sample timestamp, alert policy and cadence; newest spike timestamp is recorded on rebuild. Tests verify 60 identical lookups rebuild once, plus window/new-sample invalidation and 30 frame updates with unchanged series coordinates.
- Tests: 11 new XCTest methods in
ApplicationFlowsSizingOverlayTests, plus three new cases inDashboardFitTestsat 1440×900 / 1440×1200 / 1150×1500 with 40 input rows. All five original fit cases and all six flow-controls cases remain. Overlay on/off produces different off-screen renders in all four styles in Light and Dark, and its rectangles match the latency band's spike geometry. Persistence, live-versus-release writes, reset, invalid values, clipping, channel gating and every timeline chip's series mapping are covered. - Both feature matrices are identical and include current status/boundary rows; the older fixed-height matrix narrative is explicitly superseded. Scope audit found no new Sources files, no prohibited API-term increases under Sources/RTTy, and no changes to scripts, Apps, release metadata, entitlements or app-store docs. No push, live-repo integration, installation or signing.
Exact build and test commands
Commands ran from the assigned workspace unless
--package-path is shown. Dedicated writable
caches/DerivedData are reused from A/B. SwiftPM's nested manifest
sandbox failed in the restricted harness, so builds/tests used
authorized host execution; no security setting 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-c-build-final.log 2>&1Exit 0: Build complete! (8.03 sec).
Retained: slice-c-build-arm64.log. It waited for the
preceding package test's SwiftPM lock, then built final source.
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-c-standard-verified.log 2>&1
/usr/bin/lipo -archs /private/tmp/rtty-a-standard/Build/Products/Debug/RTTy.app/Contents/MacOS/RTTyBoth exited 0. Output:
** BUILD SUCCEEDED **; x86_64 arm64. Retained:
slice-c-build-standard.log. Unsigned Standard build, not
release signing/QA.
CLANG_MODULE_CACHE_PATH=/private/tmp/rtty-a-cache/clang SWIFTPM_MODULECACHE_OVERRIDE=/private/tmp/rtty-a-cache/swiftpm swift test > /private/tmp/rtty-c-tests-verified.log 2>&1Exit 1. Retained: slice-c-tests.log.
Exact final per-target summaries:
Test Suite 'RTTyTests.xctest' failed at 2026-09-24 14:07:28.696.
Executed 1279 tests, with 8 tests skipped and 2 failures (0 unexpected) in 98.693 (98.789) seconds
Test Suite 'RTTyPrivilegedCaptureTests.xctest' passed at 2026-09-24 14:07:29.054.
Executed 71 tests, with 0 failures (0 unexpected) in 0.266 (0.270) seconds
Test Suite 'LatencyCoreTests.xctest' passed at 2026-09-24 14:07:36.419.
Executed 347 tests, with 0 failures (0 unexpected) in 7.260 (7.285) seconds
Total: 1,697 tests, 8 skipped, 2 failures; +14 XCTest methods over Slice B's 1,683, above the 1,628 floor. Failures are two assertions in a single pre-existing test, not two new failing test methods. Swift Testing's separate zero-test runner is not counted.
Required/new regression summaries from this same final full run:
Test Suite 'ApplicationFlowsControlsTests' passed at 2026-09-24 14:06:18.573.
Executed 6 tests, with 0 failures (0 unexpected) in 0.201 (0.202) seconds
Test Suite 'ApplicationFlowsSizingOverlayTests' passed at 2026-09-24 14:06:34.882.
Executed 11 tests, with 0 failures (0 unexpected) in 0.153 (0.154) seconds
Test Suite 'DashboardFitTests' passed at 2026-09-24 14:06:55.802.
Executed 8 tests, with 0 failures (0 unexpected) in 5.229 (5.230) seconds
Test Suite 'LatencyBandEdgeTests' passed at 2026-09-24 14:07:05.075.
Executed 3 tests, with 0 failures (0 unexpected) in 0.003 (0.003) seconds
Test Suite 'LatencyBandScaleTests' passed at 2026-09-24 14:07:05.076.
Executed 3 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
Earlier focused command, exit 0 (30 selected RTTy tests / 0 failures; before the two final render/frame methods were added):
CLANG_MODULE_CACHE_PATH=/private/tmp/rtty-a-cache/clang SWIFTPM_MODULECACHE_OVERRIDE=/private/tmp/rtty-a-cache/swiftpm swift test --filter 'ApplicationFlowsSizingOverlayTests|DashboardFitTests|ApplicationFlowsControlsTests|LatencyBand' > /private/tmp/rtty-c-focused-2.log 2>&1Retained: slice-c-focused-tests.log. The final full run
above supersedes that smaller test count.
git diff --check
cmp FEATURE_MATRIX.md docs/FEATURE_MATRIX.md
git status --shortAll exited 0; post-commit status was empty.
slice-c-scope-audit.txt records protected-path and API-term
checks.
Full-suite blocker and baseline reproduction
SettingsOnePageRenderTests.testAJumpScrollsTheFormAndScrollingByHandMovesTheSidebarSelection
reports:
SettingsOnePageRenderTests.swift:95: XCTAssertGreaterThan failed: ("0.0") is not greater than ("300.0") - A jump to Alerts must scroll past iCloud & Sync, Look and Menu Bar
SettingsOnePageRenderTests.swift:113: XCTAssertTrue failed - Scrolled by hand to where the jump landed, the sidebar must select Alerts as the jump did
The other Settings render tests pass. A focused rerun reproduced both
assertions. A separate temporary tree was then populated with
git archive 812862b2afe786893b3f185285e856ca557bd212 at
/private/tmp/rtty-c-baseline/apps/RTTy, with
/private/tmp/rtty-c-baseline/lib pointing to the existing
shared libraries, and tested with:
CLANG_MODULE_CACHE_PATH=/private/tmp/rtty-a-cache/clang SWIFTPM_MODULECACHE_OVERRIDE=/private/tmp/rtty-a-cache/swiftpm swift test --package-path /private/tmp/rtty-c-baseline/apps/RTTy --filter SettingsOnePageRenderTests > /private/tmp/rtty-c-baseline-settings.log 2>&1Exit 1, same two assertions; baseline RTTyTests:
Executed 3 tests, with 2 failures (0 unexpected) in 8.656 (8.656) seconds.
Retained: slice-c-baseline-settings.log. The A/B handbacks'
earlier successful runs are historical evidence; this current baseline
reproduction is the relevant comparison.
Read-only session check (ioreg -n Root -d1 -l) reported
"CGSSessionScreenIsLocked"=Yes;
launchctl managername reported Aqua. An
attempted animation-disabling change confined to the off-screen Settings
test host did not fix it and was fully reverted.
slice-c-settings-animation-experiment.log retains that
experiment; the committed Settings test is byte-for-byte the baseline.
The locked session is a current environmental condition, not a proven
sole root cause. Unlocking/retesting is pending and requires the user;
no lock, TCC or security boundary was bypassed.
Exact retry after unlocking:
CLANG_MODULE_CACHE_PATH=/private/tmp/rtty-a-cache/clang SWIFTPM_MODULECACHE_OVERRIDE=/private/tmp/rtty-a-cache/swiftpm swift testDeviations and what could not be verified
- All-green full-suite acceptance is outstanding, as documented above. Neither assertions nor tests were weakened, removed or newly skipped to hide it. All C1/C2 tests pass; that does not convert the full suite into a pass.
- Auto uses measured content, rather than duplicating a rows-times-height formula, so expanded detail rows, scale, header and empty states are included correctly. The existing eight-row displayed selection remains unchanged. The original fit tests now assert the table's existing minimum instead of the superseded fixed 292 pt height; their core-band, overlap and channel assertions remain intact.
- Cache key is stronger than window + newest spike alone. It also tracks input sample identity/count, latest timestamp, cadence and policy so a policy change, same-count rolling history or a new sample cannot return stale intervals. Newest spike time is derived and recorded when that projection is rebuilt. No array is projected from the display-linked frame callback.
- Same-as-latency semantics follow the selected headline, including a selected individual target, because that is what A2's main latency band actually draws. Default remains overall aggregate. The shared geometry extraction clips successful spike columns to the window in both consumers; loss and raw/trend scales are unchanged.
- Initial new-test compilation found calls to private instance
geometry methods (replaced with the existing public-to-tests static
helpers) and a nonexistent
DateInterval(end:duration:)initializer (replaced with start/end). Both were corrected; intermediate logs are retained. The initial sandbox build failure and the superseded full run are also retained. - Installed mouse/hover, actual drag acceptance, Space Blue appearance, signed-app persistence, runtime profiling, and unlocked full-suite execution are unverified. Screenshots were not required. No signed/notarized release, Rosetta tests, full release QA, archive, deployment or push was attempted. Seven opt-in live network tests and one ad-hoc Keychain entitlement test skipped for their existing reasons in the final log.
Persistence and rollback
Handback, full logs, patch and scope receipt:
/Users/richh/dev/_handoff/rtty-dashboard-523-20260924-codex.
Local continuity: SESSION-STATE-C.md; scoped coordination
check-in published at
~/.agent-coordination/checkins/codex-rtty-dashboard-523-slice-c.md.
Preflight reported historical unacknowledged HIGH traffic; no unrelated
fleet task or ticket completion is claimed. Canonical project/release
records remain under the lead's ownership.
Undo code with
git revert 505642657ef121336e982c935ab3b6f86e70e3b4. The
prior A/B commits and complete C patch are retained. Tests use
disposable preference suites; no installed data/preferences were
changed. No data migration/deletion occurred. The lead retains
integration and release ownership. The required per-host Notes/file
changelog receipt is appended below after publication.
Persistence receipt:
Changelog archive: /Users/richh/dev/LLM/Claude/changelogs/rdmsm4x-changelog-20260924-1410-rtty-dashboard-523-slice-c.md
Folder: rdmsm4x
Title: rdmsm4x-changelog-20260924-1410-rtty-dashboard-523-slice-c
Notes saved and re-read: x-coredata://0633F37F-D856-467D-B0FF-5AACA70D027C/ICNote/p76982
The supplied Notes helper targets llmlog and rewrites the title; direct AppleScript preserved the explicitly required per-host folder/title in the existing iCloud account. No existing note was deleted. Desktop remained locked at the final read-only check; unlocked full-suite revalidation is still pending.