Meadow
Deliverable Review
Incorrect. Try again.
Five-Milestone Roadmap  /  M4 & M5 Gap List  /  M5-001 & M5-002

The Real iPad Test

The step-by-step protocol for proving Meadow’s accessibility and speed on the iPad AbleNet sent — every claim made so far was made in a simulator on a fast computer, and this is where those claims get checked against the device a child will actually hold.
Test Protocol
Written 2026-09-17
Milestone: M5 · M5-001, M5-002
Ready to run
00 How to Use This Page

Two milestones, one afternoon on the device, one results sheet

M5-001 is the accessibility audit; M5-002 is the speed and reliability pass. They share a device, a build and a results sheet, so they run as one session.

MilestoneWhat it promisesPasses whenSections
M5-001 Hardware accessibility auditValidate VoiceOver, touch targets, motion behaviour and input clarity on target iPads.“Accessibility audit passes on target hardware without launch-blocking regressions.”02, 03, 05
M5-002 Performance and reliability passFinal app validation on the intended device class, including startup, scene transitions and sustained interaction use.“The app performs reliably on launch hardware under normal usage conditions.”04, 05

Every row has the same four parts

What to do — the exact taps and settings. Pass looks like — what you should see or measure. Fail looks like — what a defect looks like, so a borderline result is never argued about afterwards. Record — the row on the results sheet (.planning/m5/M5-001-002-hardware-results-template.md, copied to a dated file for the run) and, where a number or a picture is the evidence, the file to save under .planning/evidence/m5/.

“Launch-blocking” means one of three things: a child can tap and get silence; a child using VoiceOver, Switch Control or Voice Control cannot reach a word or a room that a touch user can; or a number in section 04 misses its budget on the device. Anything else found is a defect to fix, not a reason to hold the milestone.

Why the simulator was never enough

The iPad this app must run on is the 2021 iPad 9: an A13 chip, 3 GB of memory, a screen that is not laminated to the glass, and a Lightning port. The chip is roughly three times slower than the development simulators, the app is left with about 1.5 GB of memory before the system kills it, and the un-laminated screen adds parallax that makes small targets harder to hit. The July crash that hit every word tap for the first beta tester never reproduced in the simulator once — the test suite was green while the device crashed. That is the class of problem this protocol exists to find.

If the iPad AbleNet sent is newer than an iPad 9, a pass here is an upper bound, not a proof. Record the model in row S1 and say so on the results sheet.

01 Setup — Before the First Tap

Pin down what is being tested, or the results cannot be compared to anything

Ten minutes. Skipping this is how a “pass” becomes unrepeatable a week later.

RowWhat to doPass looks likeFail looks likeRecord
S1 Device identityOn the iPad: Settings › General › About. Note Model Name, Model Number (the A-number), iPadOS Version, and total storage. Also note whether it is a Lightning or USB-C port.Model recorded. If it reads “iPad (9th generation)” the run is against the floor device and results are proof.Model not recorded, or the device is on an iPadOS older than 18.0 (the app will not install).Sheet S1
S2 Build identityInstall the build under test from TestFlight (or from Xcode on the connected iPad). In the app: parent area › About. Note the version and build number (for example 0.2.13 (41)). Note the commit that build came from.Version, build and commit recorded; the same build is used for every row below.The build changes mid-run. If it must (a fix lands), restart the section you were in.Sheet S2
S3 Clean profileDelete the app, reinstall, and walk onboarding as a parent would: a child name, age, tier. Note the tier and the age chosen. Do not restore anything from a backup.Onboarding completes and lands on the house with no crash. Tier recorded.Onboarding cannot be completed, or lands anywhere other than a usable house.Sheet S3
S4 Accessibility settings snapshotSettings › Accessibility. Confirm VoiceOver, Switch Control, Voice Control and Reduce Motion are all off and text size is the default before starting. Turn on Settings › Accessibility › Accessibility Shortcut with VoiceOver, Switch Control and Voice Control ticked, so a triple-click of the top button offers them — you will switch between them dozens of times.All off, shortcut configured.Any assistive feature was already on from a previous session — the baseline numbers in 04 would be wrong.Sheet S4
S5 Switch sourceIf AbleNet supplied a Bluetooth switch (their own Blue2 is the obvious one), pair it: Settings › Accessibility › Switch Control › Switches › Add New Switch › External. If not, add a Screen switch (Full Screen → Select Item) so the whole glass acts as one switch. Note which.One switch registered and it selects the highlighted item in the Settings app.No switch source — the Switch Control rows in 02 cannot run.Sheet S5
S6 Mac for the timing rowsConnect the iPad to the Mac by cable, trust it, and confirm Xcode sees it (Window › Devices and Simulators). Run caffeinate -d in a terminal for the whole session so the Mac’s screen cannot lock during the 30-minute memory trace — a locked Mac has already spoiled unattended runs on this project.Device listed; caffeinate running.Device not trusted, or Instruments cannot attach.Sheet S6
S7 Volume and voiceSet the iPad volume to roughly half and the ring/silent switch (if present) to silent. In the app’s parent area › Voice & Sound, note the selected voice and rate. Under Settings › Accessibility › Spoken Content › Voices, note whether that voice is the compact or an enhanced download.Voice and quality recorded; a word tap is audible with the switch on silent.Silent switch mutes the app. That is a defect: an AAC device must speak with the phone-style mute on.Sheet S7
S8 Landscape lockHold the iPad in portrait and open the app.The app stays landscape. Rotating the iPad to either landscape edge works; portrait never renders.The house or a room draws in portrait. The compass layout is designed for landscape only and portrait breaks it.Sheet S8
02 M5-001 — The Per-Room Accessibility Loop, ×13

Six checks, run in every room, one room at a time

Roughly ten minutes a room, so about two hours for all thirteen. The order of rooms does not matter; finishing a room before moving on does — half-checked rooms are how the seven world rooms went unseen for a month.

House rooms (routines on the rail)World rooms (no routines)
Kitchen · Bathroom · Bedroom · Playtime (the living room). Each routine on the room’s rail is checked separately for rows A1 and A2 — the kitchen alone has four meals, and every routine swaps the words in the same positions. Playground · Farm · School · Library · Music school · Splash pad · Treehouse · Store · Doctor. Reached from the world map; rows A1 and A2 run once per room.

What “the right order” means

VoiceOver and Switch Control read a room’s objects in the order they are listed in that room’s plan file, not in the order they sit on screen. The plan generator writes them left-to-right, top-to-bottom, so on a correct room the two agree. Nothing automated checks that — a hand-edited plan would scramble the scanning order for a blind or switch-scanning child with no test turning red. This loop is the only check.

RowWhat to doPass looks likeFail looks likeRecord
A1 VoiceOver reading orderTriple-click → VoiceOver on. Enter the room at Tier 1. Swipe right repeatedly from the top-left of the screen and listen to every element announced until you are back where you started. Then repeat at Tier 2 and Tier 3 (parent area › change tier).Objects are announced left-to-right, top-to-bottom, one per swipe; each announces the word itself (“apple, button”), no object is skipped, no object is announced twice, and the routine rail, Back and the parent-area chip are all reached. The room name is announced on entry.Any object announced out of screen order; an object with no name (“button” alone, or “image”); an object that cannot be reached by swiping; two elements for one object.Sheet A1, one line per room (and per routine in the house rooms). Write the announced order if it is wrong.
A2 Switch Control — every object independently selectableTriple-click → Switch Control on (VoiceOver off). Let the scan run through the room at Tier 1. For three objects in different parts of the room, wait for the highlight and activate the switch.The scan visits every object in the same left-to-right, top-to-bottom order as A1; each object is its own scan stop (or its own stop inside a group); activating the switch on an object speaks its word. The rail, Back and the parent chip are scan stops too.Objects grouped so that one stop covers several words; an object the cursor never lands on; activating the switch selects a different object than the one highlighted; the parent chip is a stop that does nothing when activated (see Q7).Sheet A2, one line per room.
A3 Dynamic Type at the largest accessibility sizeSettings › Accessibility › Display & Text Size › Larger Text › turn on Larger Accessibility Sizes and drag the slider fully right. Return to the room. Look at every label, the routine rail, the speech bubble and the parent area.Every label grows and stays readable; long words shrink or wrap inside their tile rather than being cut off; nothing overlaps; the room still fits the screen with no scrolling required to reach a word.Text cut off mid-word (“Bathro…”), a label overlapping its neighbour, a tile that no longer shows its picture, or any label that did not grow at all (a hard-coded size).Sheet A3. Screenshot every fail: evidence/m5/A3-<room>.png. Reset the slider to default before section 04.
A4 Reduce MotionSettings › Accessibility › Motion › Reduce Motion on. In the room: tap five words, open and close the routine rail, trigger a celebration if one fires, tap the companion.Every animation that moved or bounced now fades instead. Nothing that was tappable disappeared, and the celebration still acknowledges the child without motion.Anything still sliding, scaling or bouncing; a feature that simply does nothing with Reduce Motion on (a fade is required, silence is not acceptable).Sheet A4. Turn Reduce Motion off again afterwards.
A5 Touch-target size and hit accuracyWith all assistive features off, at Tier 1, tap every object once with a fingertip aimed at its centre, then once more aimed at its edge (about a fingertip’s width off centre). Then, at Tier 3, tap the smallest tile on screen the same two ways. Hold a ruler to the screen: the smallest tile should be at least 60 pt (about 8 mm on this screen) on each side; Tier 1 objects should measure roughly 96 pt (13 mm) or more.Every centre tap speaks the right word; edge taps speak the right word or nothing — never the neighbour. The smallest tile at every tier measures at least the 60 pt floor.An edge tap speaking the neighbouring word (parallax from the un-laminated screen makes this worse on an iPad 9 than on any simulator); any tile under 60 pt; a tile whose picture is tappable but whose label is not.Sheet A5, one line per room with the measured smallest tile.
A6 Symbol-vs-background contrast, by eyeWith the parent area’s background opacity at its default, look at every object in the room from arm’s length, in normal room light, then again with the iPad brightness at half. Then tap the companion to start Speak With Me and look again while the room is dimmed behind the spotlight.Every symbol is distinguishable from the room artwork behind it at a glance, in both lighting conditions and during the spotlight dim.Any symbol that blends into the scene (a white bowl on a white counter, a green frog on grass) so that a child would have to hunt for it. Note it even if it is “a bit hard”: no machine can see this, so a human eye is the only gate.Sheet A6, one line per room naming the offending words. Photo of each fail: evidence/m5/A6-<room>-<word>.jpg.

Where a fail here counts as launch-blocking

A1 and A2 fails in any room are launch-blocking: a child who navigates by ear or by switch cannot reach a word a touch user can. A5 fails are launch-blocking. A3, A4 and A6 fails are defects to fix before submission but do not by themselves hold M5-001, unless a label becomes unreadable at the default size too.

03 M5-001 — App-Level Accessibility Checks

Three checks that are not about any one room

RowWhat to doPass looks likeFail looks likeRecord
A7 Settle the audit contradiction (W3.1)Two automated checks disagree about the bathroom: the per-room accessibility test is green, while a direct audit of the same room on both simulators logged unsupported Dynamic Type sizes, clipped text and eight contrast failures (potty, bathtub, towel, diaper, rubber duck, soap, toothbrush, and the world-map button). On the Mac: Xcode › Open Developer Tool › Accessibility Inspector. Choose the connected iPad as the target, open the bathroom at Tier 1 in the app, and run Audit › Run Audit. This is a third, independent instrument looking at the real device.The Inspector’s list is compared line by line against the recorded simulator list. Either the Inspector reproduces the failures (the per-room test is the one that is blind, and its filter must be widened) or it does not (the direct audit was measuring the compass chrome around the room, not the room). One of the two is now known to be wrong, and the results sheet says which.Not running it, or running it and not writing down which check was lying. The whole point is that fixes cannot start until the guard that should catch them is known to be honest.Sheet A7. Save the Inspector’s audit export: evidence/m5/A7-bathroom-inspector.txt.
A8 Voice Control reaches the roomsTriple-click → Voice Control on. On the house, say “show names”, then say “tap kitchen”. In the room say “show names” and then “tap” followed by one object’s word exactly as it is printed.Every room on the house and every object in it has a short spoken name that opens or speaks it. The names shown are the words themselves, not numbers.An object or room that only responds to a number badge, or has no name at all; a room that opens on the wrong name.Sheet A8.
A9 VoiceOver and the child’s own voiceCovered by Q1 in section 05 — run it there. Listed here because it is the accessibility finding most likely to leave a child unheard.See Q1.See Q1.Sheet Q1.
04 M5-002 — Speed, Memory and Reliability

The nine budgets from the build specification, measured on the device

These numbers were set in the Phase 2 build specification with the rule “every budget is a pass/fail gate; ‘it feels fast’ is not a budget.” The spec also says they are validated on an iPad 9, not a simulator. This is that validation.

BudgetTargetRow below
App launch to interactive≤ 2.0 secondsP1
Word tap to speech onset≤ 400 msP4
Scene transition≤ 300 ms to first contentP2
SCS follow-up appearance≤ 200 ms after speech startsP5
Memory ceiling (sustained use)≤ 250 MB after 30 minutesP6
Touch response (any tappable element)≤ 100 ms visual feedbackP3
Vocabulary JSON decode≤ 200 ms for the full fileP9
Animation frame rate≥ 55 fps during celebrationsP7
No crashes0 crashes in 60 minutes of continuous useP8

How the millisecond rows are measured without special tooling

Screen recording. Swipe down for Control Center, hold the record button, turn the microphone on (so the speaker is captured), start recording, do the action, stop. The iPad records at 60 frames a second, so every frame is 16.7 ms. Open the recording in QuickTime on the Mac, use the arrow keys to step one frame at a time, and count frames from the frame where the finger lands to the frame where the thing you are timing happens. 24 frames is 400 ms; 6 frames is 100 ms; 18 frames is 300 ms. For speech, the audio waveform in QuickTime’s trim view shows exactly where sound begins. Record each action three times and report the slowest — a child does not get the median.

The 400 ms speech budget was set in M2-005 and is spent as: 0–50 ms the iPad detects the tap, 50–100 ms the word highlights, 100–400 ms the speech engine fires and sound begins. If a child cannot connect the tap to the sound, they stop believing they made it happen — and stop trying.

RowWhat to doPass looks likeFail looks likeRecord
P1 Cold launchForce-quit the app (swipe it away in the app switcher). Wait ten seconds. Start a screen recording, tap the Meadow icon, and stop when the house is drawn. Count frames from the icon tap to the first frame where a room on the house can be tapped. Do it three times; also do it once immediately after a device restart (the coldest case). Cross-check with Instruments › App Launch template on the connected iPad if you want a second opinion.Slowest of three ≤ 2.0 s (120 frames). The after-restart launch may be slower; record it separately, it is informational.> 2.0 s on any of the three warm-restart launches; a blank or spinner screen that lasts longer than the launch image; any launch that ends in a crash.Sheet P1, three numbers plus the post-restart one. evidence/m5/P1-launch-1..3.mov.
P2 Room transitionFrom the house, screen-record tapping into the kitchen, then Back, then into the farm from the world map. Count frames from the tap to the first frame that shows room artwork with at least one object on it.≤ 300 ms (18 frames) for every transition, house → room and room → house alike.> 300 ms; a grey panel with a spinner (that is a missing background, a different defect — note it); a room that draws its background first and its objects noticeably later.Sheet P2, per transition. evidence/m5/P2-transitions.mov.
P3 Touch feedbackIn the same recording, tap a word tile and count frames from finger-down to the first visible change on the tile (highlight, scale or colour).≤ 100 ms (6 frames) on a room object, an edge word tile, a rail tile and the Back button.> 6 frames on any of the four; a tile that speaks but never visibly reacts.Sheet P3.
P4 Word tap to speech onsetScreen-record with microphone on. Tap five different words in the kitchen, one every three seconds, then five in a row as fast as you can. In QuickTime, measure finger-down to the first audio for each of the five spaced taps. For the five rapid taps, count how many words were spoken.Every spaced tap ≤ 400 ms (24 frames) to audible sound, with the selected child voice. Rapid taps: the newest word interrupts the previous one; the last word tapped is always spoken in full; no crash.Any spaced tap > 400 ms; any tap that produces no sound at all (stop the run and treat as launch-blocking — this is the one failure the whole product cannot survive); rapid taps that freeze the app or leave the last word unspoken.Sheet P4, five numbers plus the rapid-tap note. evidence/m5/P4-speech.mov.
P5 Follow-ups after speechSet the child to Tier 2. In the bathroom, screen-record tapping “potty”. Count frames from the first audio to the frame where the follow-up suggestions are visible.≤ 200 ms (12 frames) after speech starts; at least three follow-ups; tapping one speaks it and produces a new set.Follow-ups appear later than 12 frames after the audio, or appear before the word is spoken, or the strip is empty.Sheet P5.
P6 Thirty-minute session, memoryOn the Mac: Xcode › Open Developer Tool › Instruments › Allocations template, target the Meadow app on the connected iPad, press record. Then use the app as a child would for thirty minutes by the clock: at least four rooms including the kitchen and two world rooms, every routine on the kitchen rail, a hundred or more word taps, the feelings tray, the companion, several celebrations, and the parent area opened and closed twice. Read All Heap & Anonymous VM in the Allocations summary at 5, 15 and 30 minutes.≤ 250 MB at 30 minutes, and the graph flattens — it may step up when a room loads and should step back down when you leave it.> 250 MB at 30 minutes; a graph that keeps climbing without plateauing (a leak, even if still under budget); the app being killed by the system at any point (the trace stops on its own). The spec’s warning line is 200 MB — note it if crossed. The iPad 9 leaves the app about 1.5 GB before it is killed; that is a cliff, not a target.Sheet P6, three readings. Save the trace: evidence/m5/P6-allocations.trace.
P7 Frame rate during celebrationsStill connected: Instruments › Animation Hitches template (the modern replacement for the Core Animation template the spec names). Record while triggering five celebrations at intensity 3 in the parent settings, and while opening and closing the routine rail several times.No hitch longer than one frame during any celebration; effective frame rate ≥ 55 fps. The child can tap a word mid-celebration and it speaks.Repeated hitches over 34 ms during particle bursts; a celebration that blocks a tap; visible stutter on the rail.Sheet P7. evidence/m5/P7-hitches.trace.
P8 No crashes in sixty minutesThe P6 session plus the rest of this protocol comfortably exceeds sixty minutes on the device. Keep a tally of every crash, every freeze longer than two seconds, and every time speech stopped working until the app was restarted. Afterwards, on the Mac: Xcode › Window › Devices and Simulators › the iPad › Open Console / View Device Logs, and look for any Meadow crash report from today.Zero crashes, zero freezes, zero speech outages, and no crash log on the device.Any crash log for the app dated today, even one you did not notice. One crash is a fail.Sheet P8. Copy any crash log to evidence/m5/P8-<time>.crash.
P9 Vocabulary file decodeThis one cannot be timed by hand. It is measured by engineering with Instruments › Time Profiler on the connected iPad during a cold launch (P1): find the time spent decoding the bundled vocabulary and scene-plan JSON in the call tree.≤ 200 ms for the full vocabulary file on the device.> 200 ms. If P1 passes comfortably this row can only fail on paper; if P1 fails, this is the first place to look.Sheet P9. evidence/m5/P9-timeprofiler.trace.
P10 Split View and Slide OverDrag another app in from the Dock to put Meadow in Split View at half width, then in Slide Over. Tap a word in each.Either the app refuses to share the screen (stays full-screen, which is acceptable for a landscape-only communication device) or it draws correctly at the narrower width and every word still speaks.A half-drawn compass, tiles off the edge of the screen, or a word that stops speaking in the narrow layout.Sheet P10. Informational unless a word goes silent.
05 The Questions Only a Running iPad Can Answer

Carried from the dead-controls audit of September 16

The audit read every button and toggle in the app and was strict about not asserting anything it could not prove from the code. What it could not prove, it wrote down as a question with the exact thing to tap. Those questions are reproduced here as they were written, with their pass and fail spelled out. Several are being fixed in parallel this week (the PIN, Button Size, the sign display, the parent chip); if the fix has already landed in the build under test, the row becomes a check that the fix works, not a question.

RowWhat to doPass looks likeFail looks likeRecord
Q1 With VoiceOver on, does the child’s configured voice still speak?Turn VoiceOver on, open a room, tap a word tile. (a) Does the word get spoken at all? (b) Is it the child voice or the VoiceOver voice? (c) Now tap three tiles in quick succession — do all three announce, or does the announcement queue drop some?All three taps are heard. Record which voice speaks. (When VoiceOver is on the app deliberately hands the word to VoiceOver rather than competing with it, so hearing the VoiceOver voice is expected — but it must be heard, every time.)Any of the three taps is silent. A dropped announcement here is silence with no retry, which is the abandonment case for a VoiceOver-using family. Launch-blocking.Sheet Q1.
Q2 Does Tier 2 auto-speak match the parent’s setting on the first render after launch?Set the child to Tier 2 (word combinations), leave “Auto-Speak Combinations” OFF, force-quit the app, relaunch, and immediately tap two word tiles.The two words go into the bubble and a Speak button appears.The phrase auto-speaking on its own, or the Speak button not appearing.Sheet Q2.
Q3 Does the Button Size setting appear to do anything anywhere the parent is looking?Open Settings › Access & Motor, set “Extra Large (100pt)”, leave settings, and compare a kitchen scene object against a compass edge word tile.Both the kitchen object and the edge word tile grow (the fix has landed), or the setting has been honestly removed.The kitchen object grows and the word tile does not — the setting’s own footer text says it resizes the tiles. Confirming this on screen turns a structural claim into a reproducible bug report.Sheet Q3. Screenshot both tiles: evidence/m5/Q3-button-size.png.
Q4 Does the parent gate actually open with no PIN set?On a fresh install, two-finger-hold the parent-area chip for 3 seconds.If a PIN has been set in this build’s settings, a PIN prompt appears after the hold. If no PIN is set, settings open after the hold with no prompt — and there is a working way to set one.Settings open immediately with no PIN prompt on every install and there is no way to set a PIN; or a PIN prompt appears when none was ever set.Sheet Q4.
Q5 Do word tiles visibly change size with use?Use one room heavily for a few sessions, then look at whether frequently-tapped tiles are drawn larger than rarely-tapped ones.Either outcome is a pass — this row settles a documentation question. Write down which.Not answering. If tiles do grow, the mechanism was not found in the code and an old audit item re-opens; if they do not, that item is struck.Sheet Q5.
Q6 Does anything actually draw an ASL sign?In Tier 1, tap and long-press several word tiles.A sign appears (the signing display has been built), or the signing setting has been honestly removed from the parent area.No sign appears under any interaction, ever, while the parent area still offers a signing setting that defaults to on. A setting that promises a third modality and never delivers it is a dead reaction.Sheet Q6.
Q7 Can a VoiceOver or Switch Control user open the Parent Area at all?Turn VoiceOver on, swipe to the parent-area chip (it announces “Open parent area, button”), and double-tap. Then try Voice Control: say “tap parent area”.Settings open in both cases (after the PIN, if one is set).Nothing happens in either case. A blind parent then cannot configure their child’s device. Launch-blocking.Sheet Q7.
Q8 Does SCS drag-to-expand work, or does the Button swallow the gesture?With the SCS strip collapsed, drag it upward about 20 pt rather than tapping.The panel expands on the drag.Only tapping works; the documented drag affordance is inert.Sheet Q8.
Q9 Should the Pitch slider preview, like its two siblings?In Voice & Sound, drag each of the three sliders (Voice, Speech Rate, Pitch) and note which ones speak a sample.All three preview, or the sheet records why Pitch deliberately does not.Pitch is silent while the two sliders above it speak, and nobody has written down why.Sheet Q9.

A note on the count

The audit’s headline says seven runtime questions; its section 4 actually lists nine. All nine are carried here rather than guessing which two the headline meant to leave out.

06 Reading the Results

What passes the milestones, what merely goes on the fix list

OutcomeRule
M5-001 passesEvery A1, A2 and A5 row is a pass in all thirteen rooms; Q1 and Q7 pass; A7 names which automated check was wrong. A3, A4, A6, A8 and the other Q rows may have open defects, listed with their fixes scheduled.
M5-002 passesP1 through P8 within budget on the device; P9 measured; P10 recorded. One crash anywhere in the session fails P8 and the milestone.
Stop the runAny tap that produces silence with assistive features off (P4). Do not continue collecting numbers on a build that can go quiet; that finding goes straight to engineering.
Re-run scope after a fixA fix to one room re-runs that room’s six A rows. A fix to shared code (tiles, speech, the compass) re-runs A1–A2 in all thirteen rooms and P1–P5. Say which in the dated results file.

Two honest limits of this protocol

It measures one device. If AbleNet’s iPad is not an iPad 9, every number here is a ceiling on what an iPad 9 would do, and an iPad 9 should be borrowed for P1, P4 and P6 before submission. And it is run by one adult: a child’s taps are slower, wetter and less accurate than anything on this page, which is why the touch-target row asks for deliberate off-centre taps.