# Project Map: SMI 00.05.02 short-log graph zoom

Status: active
Type: project-map
Updated: 2026-10-01
Origin: IDEA-0008
Target Release: 00.05.02
Next Action: None for this release; preserve the short-log and Graph screen evidence.

## 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.

Revised source commit `aad189f42bf932bd8c5c8b350e6a4444942af91c` passed clean managed Debug and Release rebuilds. Immutable candidate `00.05.02-aad189f42bf9-d1b73b38164d` validates against HEAD; Release S-record SHA-256 `D1B73B38164D6956AF190CC4AFF9D0DE02B638DFB98D3B178A36736C7ED4BC25`. Both approved controllers were programmed from its manifest. Complete read-only internal-flash images on A and B match the updater main-image SHA-256 `9DFA5BC7DDD174878C5A54BC4F9509CD89F0D42DB4BA4C35CCDB559C06B0788A`. Each retained its original valid CID, HPT_READY classification, and passing representative-sector read across the reboot. Touch-loss, click, and applied-action counter baselines were zero on both. Local release validation passed under Windows Python 3.13.1 and 3.11.2; focused graph and format checks passed.

The owner reported that A's revised right-aligned label matches the date row. B's label also matches, but B initially showed the same no-response zoom behavior. A live B capture showed 28 in-bounds `+` touch pairs and 28 Graph Zoom In click signals, yet zero applied zoom actions; touch-message and GUIX send failures remained zero. Source order revealed the cause: `appGraphTemp()` invoked `initializeGraphTemp()` and its first `planZoomPanActions()` before `newGraphTempScreen()` set `Cache.followNewest=true`. On fresh boot the flag was false, so a short-log Zoom In was initially planned using the rejected centered bound. A later chart publication replanned with the flag true, explaining the delayed response. This is an action-planning initialization defect, not a touch-delivery failure.

Commit `a09c3c8bf30e3890780449ba229405fdb3bee2e7` sets follow-newest before the first action plan and adds an initial-order regression check. Diagnostic candidate `00.05.02-a09c3c8bf30e-ab60c2b2295f` passed incremental managed Debug/Release builds and 16/16 follow-newest source invariants. It is installed on both controls, with exact complete-flash SHA-256 `DE72723C5356CCF09371CC64735C64DFEDBDDB95F3F17FB0DB48CB096C5A86EF`, unchanged valid CIDs, HPT_READY media, and representative-sector reads passing. The owner reports that the first `+` tap after Graph opening now changes zoom immediately on A and B, each with less than nine hours of data, and the label remains aligned. Subsequent read-only captures on both show one-hour views at the newest real sample, matched in-bounds touch/click counts, and zero delivery failures. The counters were read after further exploratory taps, so first-tap timing is operator observation. Canonical clean rebuild and final release gates remain. Evidence and hashes: `work/evidence/hpt-log-store-circular-mirror/00-05-02-preflash-20260930/release-readiness.md`.

## 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

The final shared candidate `00.05.02-a09c3c8bf30e-ab60c2b2295f` passed clean Debug and Release rebuilds, with all six generated artifacts matching its immutable files byte for byte. The 16/16 follow-newest invariants, five zoom levels, six short-log cases, 110/110 commissioning checks, candidate validation, and local release profile passed. Owner observation confirms first-tap `+` zoom on both controls with less than nine hours of history, and both labels align with the date. The post-service-471 A run initially had no real point and did not zoom, then reached a one-hour view after records began appearing; read-only target status verifies new real data and unchanged valid/readable CID. First-point timing relative to the first responsive tap remains an operator clarification, not a claim of a defect. Evidence: `work/evidence/hpt-log-store-circular-mirror/00-05-02-preflash-20260930/release-readiness.md`. Both owning MAP cycles and IDEA parents were registered for the release cohort at Tool Shed revision 969.

On 2026-10-01 the owner's 24-hour Graph photo exposed a new layout defect: the right-edge date and `24 Hours` visibly run together as `1 Oct24 Hours`. The previous 12-hour label-alignment observation did not cover this date-change case. The cause is the adjacent right-aligned end-date and range prompt rectangles; although their boxes do not overlap, the rendered words have no separation. The owner specified start date left, duration centered, and stop date right on one row. Source commit `67a0ede43e45aceb36af897ec774a2c96f223c46` computes the exact visible start and stop dates, removes intermediate date markers, and reserves separate left, center, and right fields at the same vertical position. Incremental Debug and Release builds and existing Graph checks passed. Clean candidate builds and physical layout verification remain open. The prior `a09c3c8b` content package and USB copies are superseded for release purposes; no release has been published.

The source commit `67a0ede43e45aceb36af897ec774a2c96f223c46` subsequently passed clean managed Debug and Release rebuilds, 16/16 Graph invariants, 110/110 HPT commissioning invariants, candidate validation, and the Windows Python 3.13.1 release profile. Immutable candidate `00.05.02-67a0ede43e45-3091e7a4cdba` was programmed from its Release S-record on both controls. Full preflash readbacks matched the old candidate; full postflash readbacks on A and B exactly matched the new expanded image SHA-256 `CED5BB48725624F7656D4CC17DBA063542B0F1BA91183A87A6E32D565583144C`. Both controls retained their valid CIDs and readable HPT media. The owner confirmed the corrected 24-hour start/range/end row and immediate first `+` tap on both controls. The matched target and operator evidence is in `work/evidence/hpt-log-store-circular-mirror/00-05-02-preflash-20260930/release-readiness.md`.

The normal-updater `7520553_SMI_00_05_02.imx` was rebuilt from the same Release candidate and copied to the FAT32 USB drives `imx` and `IMX2`. Complete readback hashes on both USB copies match the source SHA-256 `CC43980F6BCDE68BE480F9AD2CE36B900F2EA97CCEE366A560C2608C6D1DECE4`; see `work/evidence/generated/00-05-02-graph-date-row-20261001/usb-copy-verification.json`. Normal-updater installation, including the owner's planned DisplayTest-to-SMI transition, remains untested on this exact image. The corrected product commit and both owning MAP cycles plus IDEA parents are registered in the active release cohort at Tool Shed revision 973.

The owner subsequently reported DisplayTest-to-00.05.02-IMX installation on both controls and confirmed the focused Graph and format changes on both. Controller B additionally passed chart review, guided format, and the reported service-code sequence `471`, `504`, `501`, `51`, `511`, `505`, `506`; the owner did not claim that whole sequence on A. Both remote J-Link probes were initially absent for follow-up, delaying post-IMX full-flash and fresh CID evidence until they were reconnected. The update is recorded in `work/evidence/hpt-log-store-circular-mirror/00-05-02-preflash-20260930/release-readiness.md`.

The owner reconnected both probes. Complete read-only post-IMX code-flash captures on A and B each match the new image's expanded main SHA-256 `CED5BB48725624F7656D4CC17DBA063542B0F1BA91183A87A6E32D565583144C`. Fresh identity captures on both show the unchanged complete CIDs, protocol READY, CID valid, representative-sector read success, HPT_READY, and real Graph data. These bind the owner-observed normal-updater and focused screen checks to the exact candidate; the B service-code sequence remains operator-observed. Files and identity details are linked from `work/evidence/hpt-log-store-circular-mirror/00-05-02-preflash-20260930/release-readiness.md`.

Next, prepare the reviewed 00.05.02 release package and content commit. Keep publication behind explicit owner authorization and exact-content-SHA CI gates; no 00.05.02 release has been published.

## Verified release result

The short-log Graph zoom correction, immediate first + tap, and three-field date row passed focused checks on both approved controls with exact candidate flash readbacks. The plot uses real samples only, with blank prehistory and no future extension. The owner also confirmed the focused Graph behavior after the normal IMX install on both.

Release: https://github.com/Sheldon-Mfg-Inc/7520553_SMI_FW/releases/tag/v00.05.02. Exact-content four-job CI: https://github.com/Sheldon-Mfg-Inc/7520553_SMI_FW/actions/runs/36880599577. Independent download, checksum, and IMX identity evidence: `work/evidence/generated/00-05-02-graph-date-row-20261001/publication-verification.json`. This closes the firmware release obligation; customer rollout, ECO/BOM, and supplier approvals are separate.
