# Project Map: SMI 00.05.02 short-log graph zoom

Status: active
Type: project-map
Updated: 2026-09-30
Origin: IDEA-0008
Target Release: 00.05.02
Next Action: complete focused graph regression and shared 00.05.02 release qualification on the corrected exact image

## Purpose

Allow Graph Zoom In immediately after real logged data is available, while leaving time before the first sample empty and never presenting future time as logged data.

## Direction

1. Correct the newest-anchored zoom bounds that previously required nine hours of history for the first zoom step.
2. Check histories below nine hours, at the boundary, and after maturation across the available zoom levels. Preserve follow-newest, manual history inspection, and pan limits.
3. Run focused graph checks and the managed firmware build. Qualify the exact 00.05.02 candidate on target before release.

## Current Position

The source correction permits blank time before the first real sample when following newest. Focused graph checks pass 15/15 source invariants, five zoom levels, six short-log cases, and 15/15 graph-cache checks. Commit `b7f9cd9fda8b65070b984e6137cfe0461adcfac0` passed clean managed Debug and Release rebuilds; immutable candidate `00.05.02-b7f9cd9fda8b-4e1a73b11a06` validates with Release S-record SHA-256 `4E1A73B11A06C0026F9AAFDE37FD69E04924732BF1D8054B9C7E8F5EB7D21656`. It is installed with exact complete-flash readback on both controls.

After Controller A's approved format, the owner pressed Zoom In while less than nine hours of new data existed and reported that the displayed view stayed at 12 hours. Read-only target RAM showed real chart data, following-newest true, and Zoom In action possible, while the current view still spanned 12 hours. A single built-in graph review command then sent the same `GX_SIGNAL` through `GraphTempScreenEventHandler`; target RAM changed from 12 hours to 6 hours with real-data bounds intact. This proves the planner and event handler path can zoom on this exact image, but does not explain why the physical tap did not change the view. A display/photo and second physical-button observation are pending. The target behavior remains unqualified. Evidence is under `work/evidence/hpt-log-store-circular-mirror/00-05-02-preflash-20260930/`.

The shared corrected candidate `00.05.02-f51d98e7ffec-b10533f2134c` (commit `f51d98e7ffec36a419a1564b24924a5639dfcb84`) retains the same graph correction and has exact full-flash readback on both controls. Following B's successful first Format 2, the owner initially reported that a physical Zoom In tap left the visible graph at 12 hours and supplied a photo. RAM showed the Zoom In action possible and the `+` widget visible and enabled. The owner then reported that zoom was working; immediate RAM capture showed the one-hour view after physical touch with only 11 minutes of real data, its right edge at the newest real sample and its blank prehistory extending 49 minutes before the first sample. At that capture point, the successful tap sequence and a post-zoom photo had not yet been supplied. This demonstrates short-log physical zoom on B but retains the initial transient as an observation. Evidence: `work/evidence/hpt-log-store-circular-mirror/00-05-02-preflash-20260930/baseline.md` and linked `setup-b/graph-b-*` captures.

The owner clarified that on B they tapped `+` first, then `-`, and both directions worked after roughly a minute from the first tap. A post-zoom photo shows the one-hour axis, real samples only at the right, and the `+` icon hidden at the maximum zoom. They repeated physical `+`/`-` on A: initial taps did nothing, then both worked after about a minute. Immediate A RAM capture confirmed a one-hour view with 55 minutes of real data, blank prehistory, and the newest real sample at the right edge. The last A touch record was `(269,477)`, three pixels below the `+` widget's clickable bottom row 474; its input owner was clear. B's last successful touch was `(300,443)`, inside the `+` rectangle, with GUIX focus on that widget. These coordinates suggest a possible edge miss but do not establish it as the cause of the minute-long observation. A centered immediate retry after reopening Graph was then requested.

The centered retry on A succeeded immediately: the owner left and reopened Graph, tapped `+` within a few seconds, and saw 12 hours change to six hours. Read-only `setup-a/graph-a-immediate-centered-plus-*` confirms six-hour zoom, follow-newest, blank time before the oldest real sample, and a right edge at the newest real sample. Its pen-up point `(278,443)` lies inside the `+` widget; GUIX focus owner is that widget, and input capture is clear. A one-minute startup wait is therefore not required for a centered touch. The earlier recorded A point outside the button explains at least that missed tap. B's original miss had no touch-coordinate capture, so its cause remains uncertain. Both controls have physically reached one-hour views before nine hours of data, and A has independently passed immediate centered Zoom In. No touch-path firmware change is supported by the current evidence.

The owner clarified that the initial no-response sequence involved multiple consecutive taps. A few may have missed the target, but the available coordinate capture cannot explain every reported no-response tap. Preserve this as an intermittent touch observation; the original taps lack per-tap coordinates or click events. Local rechecks of `check-graph-follow-newest.ps1`, `check-graph-data-policy.ps1`, and `check-hpt-graph-cache.ps1` passed on 2026-09-30. The release validation profile passed under Windows Python 3.11.2 and 3.13.1, and the immutable corrected candidate manifest validated against HEAD. The target's one-hour short-log views and A's immediate centered tap establish the graph behavior requested by this map, subject to remaining release gates.

The owner added a visible current-range label above the right side of the Graph task bar for 00.05.02. The agreed text is `1 Hour`, `3 Hours`, `6 Hours`, `12 Hours`, and `24 Hours`. Commit `f2ade778` and immutable candidate `00.05.02-f2ade7788c72-6e95dfb00673` added the label and were installed and exactly read back on Controller A with its same valid CID. The owner's photo showed `12 Hours` too low, touching the task bar. The owner clarified that the label must remain right-aligned and use the same font and vertical position as the date on the left. The revised source positions the range prompt at x=694–793, y=350–379, using the date's `NS_BOLD_24` font, and shifts the potentially overlapping rightmost date prompt left. Visual target qualification of this revision is pending. The original label candidate is rejected for release.

The owner reported 10–12 consecutive `+`/`-` taps with no apparent response before zoom began working. A read-only capture after this report showed the last GUIX pen point `(282,455)` within the enabled `+` rectangle, while Zoom In was planned possible and the view remained at 12 hours. It is not known whether this point belonged to a failed tap, but the repeated-tap report is stronger than a single edge miss. The revised source adds read-only counters for touches in the button rectangles, GUIX send failure, Graph click signals, and applied zoom actions. A controlled per-tap reproduction must identify the loss point before any production behavior change is chosen. Evidence: `work/evidence/hpt-log-store-circular-mirror/00-05-02-preflash-20260930/baseline.md` and linked `setup-a/graph-range-*` captures.

## Dependencies And Boundaries

- IDEA-0009 remains priority 1 and must be corrected and qualified in the same release image.
- The owner requires explicit release authorization after qualification.

## Next Ground Task

Finish the revised diagnostic build, verify date-row range placement on target, and capture one centered physical tap at a time with before/after counters on both controls. Identify and correct any confirmed loss in the physical touch path, then qualify one exact 00.05.02 candidate containing both fixes and the label. Prepare one reviewable release package.
