IngenuityPrint · current state & findings

The menu-tree after the live survey — and what we found to fix.

This is the tree as it stands now: a leader-driven live walk grew it from 22 to 26 screens. Below is the current After map (a node is a screen, an edge is an action), then the findings organized into problems / improvements and the custom tools the walk proved we need to build.

26screens now (After)
+2real new screens grown live
2MAJOR problems
3custom tools to build

1Current tree (After) — 26 screens

A node is a screen (click it for the device screenshot); an edge is an action (click it for the action + the screen it lands on). Green = grown live this survey; dashed amber = a fragmentation duplicate (same screen split by dynamic content — problem IB-1).

(unresolved)?BodyComposition BodyCompositionMainAcBreathe BreatheMainActivityDa DaMainActivityExercise ListExerciseMainListActivHeartHealth HeartHealthMainActiviHeartRateOnboardinHeartRateOnboardingAcHome DashboardHomeDashboardActivityMedicationScheduleMedicationScheduleLisMoodCheckIn MoodCheckInMainActiviDUP (IB-1)MoodCheckIn MoodCheckInMainActiviNewMeQuickAddNewMeQuickAddActivityProgramPFIProgramPFIActivitySleepEditClockFaceSleepEditClockFaceActSpo2OnboardingSpo2OnboardingActivitStress StressMainActivityBloodGlucoseNewInpTrackerBloodGlucoseNeBloodPressureInputTrackerBloodPressureIBloodPressure TrackerBloodPressureMFoodDetailTrackerFoodDetailActiDUP (IB-1)FoodDetailTrackerFoodDetailActiFoodNewPickTrackerFoodNewPickActNEWSportManualInputTrackerSportManualInpNEWVascularLoad TrackerVascularLoadMaWater TrackerWaterMainActivWeightInputTrackerWeightInputAct

Select a node (screen) or edge (action).

grown live this surveyfragmentation duplicate (IB-1)

2Problems / improvements

Structural fixes to the framework. The two MAJOR items gate most further growth.

IB-1MAJORGeneral edge-set fragmentation (identity)
What & where
The same screen splits into multiple tree nodes whenever dynamic content / a11y-state / a selected value changes the clickable edge-set. Seen this survey: the workout-input fragments per workout title (#001), MoodCheckIn into 2 variants by selected-state (#002), FoodDetail into 2 by meal/time (#005). Part A's chrome-anchor fixed only the dashboard.
Fix
A GENERAL identity rule (e.g. a scrollable-container / dynamic-region anchor, or a per-activity stable key) so a screen folds to ONE node regardless of dynamic edges — generalize the dashboard anchor.
IB-5MAJORClosed feature-vocabulary blocks growth (tooling)
What & where
finalize rejects any feature outside a fixed 13-item set {activity,discover,fitness,home,mindfulness,mypage,nav,nutrition,quick_add,settings,sleep,together,vitals}. Frontier screens in un-listed domains can't be authored AT ALL: water (#012), period (#011), medication (#009) all reached real screens but were refused. This is the single biggest blocker to further growth.
Fix
Extend the vocabulary to cover the app's domains, OR add a domain→feature mapping for new trackers, so any reached screen can be authored.
IB-3specMulti-step toggle/select doesn't extend (U-8)
What & where
Selecting a mood/toggle is a state-change that folds to needs_review and adds no edge (#002). A select-then-save sequence is needed to reach the next screen; the single-affordance walk stops short.
Fix
Author toggle-bearing screens as a select+save sequence (U-8 state-verify path), so a state-change leads to its confirmation screen.

3Custom tools to build

Each is a real widget the walk reached but the current tool-set could not actuate or read. The screenshot shows the widget; the gap is concrete; the tool is the deliverable.

TrackerWeightInputActivity
set_weightfound #004
Dual scroll-wheel composite setter
The gap
Weight = an integer scroll-wheel + a decimal scroll-wheel. A single NL "set weight to 70.5" set only the integer (result 70.3). Explicit per-wheel NL reached 70.5 — so each wheel IS set_text-able, but no tool decomposes X.Y.
What the tool does
A composite set_weight that splits a target like 70.5 into integer (70) + decimal (5) and sets each wheel — mirroring the existing set_duration / set_distance composites.
SleepEditClockFaceActivity
set_clock_facefound #006
Fast circular clock-face setter
The gap
The sleep bed/wake time is a circular clock face. "set bedtime to 11:00 PM" TIMED OUT >2min — the generic round-clock interaction is a heavy multi-drag / vision loop.
What the tool does
A deterministic clock-face setter that computes the hand angle for a target time and sets it in one bounded action (no long vision loop).
drawn canvas
(no a11y values)
TrackerWaterExpandedChartActivity
read_chart_valuefound #012
Chart data-read tool
The gap
An expanded chart is a DRAWN FrameLayout canvas (id_default_expanded_chart) with NO per-point text in the accessibility tree. Reading or asserting "the value on Monday" is impossible with tap / scroll / set_text.
What the tool does
A chart-reading tool: select a date/bar (or vision-extract the value) and return the data point, so chart screens can carry value assertions.

4In one line

The tree is now 26 screens and the walk works. To go deeper, build the 2 MAJOR fixes (general de-fragmentation + open the feature-vocab) and the 3 custom tools (set_weight, clock-face, chart-read). Then the same walk reaches the screens it was blocked on today.

Source: committed menu-tree fold (post live survey) + stage snapshots; runlog frontier-RUNLOG.md. Screenshots are real device captures (chart screen has no fixture — drawn canvas).