Captures page: the recording checklist with one start/end button
/ crosscheck (push) Successful in 1s
CI / Analyze & Test (push) Successful in 10s
CI / Debug APK (push) Successful in 24s

Steps come from a bundled copy of contracts checklists/ (assets/contracts/,
refreshed by tool/sync-contracts.sh), not from Dart.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz
This commit is contained in:
2026-10-13 11:12:44 +09:00
parent 4a32a801f0
commit bf8a99fb23
7 changed files with 793 additions and 4 deletions
@@ -0,0 +1,226 @@
{
"id": "z27ag-captures",
"version": 1,
"title": "Z27AG decoding captures",
"about": "docs/impl/plans/Z27AG-CAPTURES.md",
"mark_format": "<step> <action>[ #<n>] start|end for a span, <step> <action>[ #<n>] for a point",
"sections": [
{
"title": "Parked, ignition on, engine off",
"steps": [
{
"id": "1",
"title": "Baseline",
"do": "Touch nothing.",
"finds": "the resting value of everything",
"actions": [{ "label": "baseline", "hold_s": 20 }]
},
{
"id": "2",
"title": "Accelerator",
"do": "Slowly to the floor over 5 s, hold 3 s, slowly back. Start as the foot moves, end when it is off.",
"finds": "pedal position, with no rpm to confuse it",
"actions": [{ "label": "accel" }]
},
{
"id": "3",
"title": "Brake",
"do": "Start as you press, hold 3 s, end as you release.",
"finds": "brake switch, maybe pressure",
"actions": [{ "label": "brake", "hold_s": 3, "repeat": 3 }]
},
{
"id": "4",
"title": "Clutch",
"do": "Start as you press, hold 3 s, end as you release.",
"finds": "clutch switch",
"actions": [{ "label": "clutch", "hold_s": 3, "repeat": 3 }]
},
{
"id": "5",
"title": "Steering",
"do": "Centre, full left, full right, back to centre, slowly.",
"finds": "steering angle",
"actions": [{ "label": "steer" }]
},
{
"id": "6",
"title": "Gears",
"do": "Start when the gear is in, end as you take it out. Clutch down throughout.",
"finds": "reverse (likely as the reverse light); no other gearbox signal expected",
"actions": [
{ "label": "gear 1", "hold_s": 3 },
{ "label": "gear 2", "hold_s": 3 },
{ "label": "gear 3", "hold_s": 3 },
{ "label": "gear 4", "hold_s": 3 },
{ "label": "gear 5", "hold_s": 3 },
{ "label": "gear R", "hold_s": 3 },
{ "label": "neutral", "hold_s": 3 }
]
},
{
"id": "7",
"title": "Handbrake",
"do": "Start as you pull it up, end as you release it.",
"finds": "handbrake switch",
"actions": [{ "label": "handbrake", "hold_s": 3, "repeat": 2 }]
},
{
"id": "8",
"title": "Indicators",
"do": "Start when switched on, end when off.",
"finds": "indicator states",
"actions": [
{ "label": "left", "hold_s": 5 },
{ "label": "right", "hold_s": 5 },
{ "label": "hazard", "hold_s": 5 }
]
},
{
"id": "9",
"title": "Lights",
"do": "Start when switched on, end when off.",
"finds": "light states",
"actions": [
{ "label": "side lights", "hold_s": 3 },
{ "label": "dipped", "hold_s": 3 },
{ "label": "main beam", "hold_s": 3 },
{ "label": "flash", "point": true },
{ "label": "front fogs", "hold_s": 3 },
{ "label": "rear fog", "hold_s": 3 }
]
},
{
"id": "10",
"title": "Doors",
"do": "Start as it opens, end when it is shut. Skip what the car does not have.",
"finds": "door switches",
"actions": [
{ "label": "driver door" },
{ "label": "passenger door" },
{ "label": "rear left door" },
{ "label": "rear right door" },
{ "label": "boot" },
{ "label": "bonnet" }
]
},
{
"id": "11",
"title": "Wipers",
"do": "Start when switched on, end when off.",
"finds": "wiper states",
"actions": [
{ "label": "wipers int", "hold_s": 5 },
{ "label": "wipers low", "hold_s": 5 },
{ "label": "wipers high", "hold_s": 5 },
{ "label": "washer" }
]
},
{
"id": "12",
"title": "A/C and blower",
"do": "A/C: start on, end off. Blower: start as you turn it up, end when it is back down.",
"finds": "A/C request, blower",
"actions": [
{ "label": "ac", "hold_s": 5 },
{ "label": "blower" }
]
},
{
"id": "13",
"title": "Seatbelt",
"do": "Start as it clicks in, end as it comes out.",
"finds": "belt switch",
"actions": [{ "label": "belt", "hold_s": 3 }]
}
]
},
{
"title": "Engine running, parked",
"steps": [
{
"id": "14",
"title": "Engine start",
"do": "Cold start if possible: mark as the starter turns, then idle 60 s.",
"finds": "starting, coolant and oil warming, idle control",
"actions": [
{ "label": "engine start", "point": true },
{ "label": "idle", "hold_s": 60 }
]
},
{
"id": "15",
"title": "Revs",
"do": "Start when the revs are steady at the target, end as you leave it.",
"finds": "engine speed against OBD rpm, throttle against pedal",
"actions": [
{ "label": "rpm 1500", "hold_s": 5 },
{ "label": "rpm 2000", "hold_s": 5 },
{ "label": "rpm 3000", "hold_s": 5 }
]
},
{
"id": "16",
"title": "Blips",
"do": "Three sharp blips of the throttle.",
"finds": "response timing of throttle, rpm, pressure",
"actions": [{ "label": "blips" }]
},
{
"id": "17",
"title": "A/C under load",
"do": "A/C on for 20 s, then off.",
"finds": "compressor clutch, idle-up",
"actions": [{ "label": "ac", "hold_s": 20 }]
},
{
"id": "18",
"title": "Radiator fan",
"do": "Idle until the fan cuts in, if it will; mark when you hear it.",
"finds": "fan state, coolant threshold",
"actions": [{ "label": "fan", "point": true }]
}
]
},
{
"title": "Driving (a passenger presses, or skip the marks)",
"steps": [
{
"id": "19",
"title": "Steady speeds",
"do": "Where safe, hold each speed 10 s.",
"finds": "road and wheel speeds against OBD and GNSS speed",
"actions": [
{ "label": "steady 20", "hold_s": 10 },
{ "label": "steady 40", "hold_s": 10 },
{ "label": "steady 60", "hold_s": 10 }
]
},
{
"id": "20",
"title": "Stops",
"do": "Start as you brake, end when stopped.",
"finds": "brake pressure, deceleration",
"actions": [
{ "label": "gentle stop" },
{ "label": "firm stop" }
]
},
{
"id": "21",
"title": "Corners",
"do": "A few corners each way.",
"finds": "yaw, lateral g, wheel speed differences",
"actions": [{ "label": "corners" }]
},
{
"id": "22",
"title": "Through the box",
"do": "Each gear in turn.",
"finds": "gear from rpm / speed",
"actions": [{ "label": "gears" }]
}
]
}
]
}