R-6: Tracking-state and degradation chips on the camera tile#147
Merged
Conversation
Reuses existing telemetry (tracking_status.state, quality_state) rather than adding TelemetryMsg fields — no wire-format changes. Tile paints a small colored state chip (locked/coasting/searching/ambiguous/lost) and a x2/x4 degradation chip when the auto quality ladder relaxes detector cadence below configured, matching the fps-chip's existing scrim-pill style. Properties panel gets matching text rows for both, driven by the same telemetry-tick refresh the quality-effective rows already use. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Derive the state chip's color from the engine's own severity field instead of a second hand-maintained table, so a chip can never invert the engine's severity ordering. Fixes the standby state (both the "Confirming target" fresh-pick flavor and the terminal "Standing by for reacquire" flavor) rendering red LOST — standby is severity=info and now renders neutral, never alarming. manual/degraded now show their own MANUAL/DEGRADED labels instead of a misleading COASTING label. locked now distinguishes its two action flavors: actively driving PTZ (green LOCKED) vs. target selected with auto-tracking off (neutral SELECTED) — a green chip while the camera deliberately isn't moving was misleading. Also extracts the duplicated `max(2, effective // configured)` quality multiplier into a shared `quality_multiplier()` helper used by both the tile's degradation chip and the properties panel's row, and makes the degradation chip's x-offset derive from the state chip's actual painted width instead of a hardcoded "COASTING" string measurement. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
TCVinNYC
force-pushed
the
feat/r6-state-chips
branch
from
July 3, 2026 19:45
23c8d8c to
92cb6fd
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Operators finally see what tracking is doing, per the transparency rule (auto behavior must be visible):
severityfield, so red is structurally unreachable for benign states and a future engine state falls back non-alarming (pinned by a vocabulary test covering all 9 emitted flavors).quality_multiplier()used by tile + properties panel.tracking_status/quality_statetelemetry already carried everything; display-only.Review history (two rounds)
Initial review caught the chip lying:
standby(severity=info — including the "Confirming target" state that fires on every fresh target pick) rendered as red LOST, andlockedshowed green TRACKING even when auto-tracking was deliberately paused. Both fixed; severity-consistency now test-pinned. Final verdict: Approved.Test plan
Validation
Needs your visual sign-off (run the app, watch the chips through a pick→track→occlude→reacquire cycle). Label/color choices are flagged judgment calls — easy to tweak. Includes the #141 test-isolation cherry-pick (dedupes on merge).
🤖 Generated with Claude Code