chartread session & prompt classifier #19

Open
opened 2026-09-08 17:42:12 +01:00 by gronod · 0 comments
Owner

Summary

Interactive measurement. Completion is keystroke d, not EOF. No mock Skip/Undo.

Spec refs

docs/15-stage3-chartread.md, 05-argyll-fork.md §12, 03-ipc-and-process-manager.md stdin table. #175 #93 #204 #137 #147.

Scope

In: argv, classifier, buttons, stdin, mock CI, XY cancel park.
Out: swatch grid (20), averaging (21), XY chrome (22).

Implementation notes

-v -u [-c port] [-Y l] basename

Process id chartread_{basename}. -u REQUIRED (JSON rows).
-Y l only when settings enable_i1pro2_leds (default false). Letter L, not -L. Unpatched binary: surface last stderr.
Classifier 11 states: IDLE, CALIBRATING, AWAITING_STRIP, READING, ALL_STRIPS_READ, WARNING, PROMPT_CONTINUE, TABLE_PLACE_SHEET, TABLE_ALIGN, ERROR, FINISHED.
Priority matchers on REAL C prompt strings (docs/05 §12.4), not mock phrasing. Sticky TABLE_* (#93). “remove last sheet” is info-only, state unchanged.
stdin (caller includes \n):

  • " \n" / "\n" trigger/accept
  • "d\n" done+save
  • "q\n" abort / XY park
    No s/u. If a back-strip control is needed later, map to real keys (f/b/n) after reading fork chartread.c — new ticket, not this one.
    XY cancel: q\n, ~500ms, kill.
    CI must run bundled chartread.mock.
    Port the 39 legacy classifier cases + real-prompt fixtures.

Rewrite invariants

#175 Done is d. #93 sticky XY. #204 -Y l default off. #137 send the key the prompt asks. #147 park-before-kill.

Dependencies

Blocks-on: 2, 4, 18, 5 (LED flag).
Unblocks: 20, 21, 22, 29.

Test

  • CI/mock: 39+ fixtures; state→button matrix; Done → .ti3 via mock; duplicate id while running.
  • Hardware: one real strip through Done & Save.

Acceptance criteria

  • .ti3 appears only after d\n.
  • No Skip/Undo buttons that send s/u.
## Summary Interactive measurement. Completion is keystroke `d`, not EOF. No mock Skip/Undo. ## Spec refs docs/15-stage3-chartread.md, 05-argyll-fork.md §12, 03-ipc-and-process-manager.md stdin table. #175 #93 #204 #137 #147. ## Scope In: argv, classifier, buttons, stdin, mock CI, XY cancel park. Out: swatch grid (20), averaging (21), XY chrome (22). ## Implementation notes ``` -v -u [-c port] [-Y l] basename ``` Process id `chartread_{basename}`. `-u` REQUIRED (JSON rows). `-Y l` only when settings `enable_i1pro2_leds` (default false). Letter L, not `-L`. Unpatched binary: surface last stderr. Classifier 11 states: IDLE, CALIBRATING, AWAITING_STRIP, READING, ALL_STRIPS_READ, WARNING, PROMPT_CONTINUE, TABLE_PLACE_SHEET, TABLE_ALIGN, ERROR, FINISHED. Priority matchers on REAL C prompt strings (docs/05 §12.4), not mock phrasing. Sticky TABLE_* (#93). “remove last sheet” is info-only, state unchanged. stdin (caller includes `\n`): - `" \n"` / `"\n"` trigger/accept - `"d\n"` done+save - `"q\n"` abort / XY park No `s`/`u`. If a back-strip control is needed later, map to real keys (`f`/`b`/`n`) after reading fork `chartread.c` — new ticket, not this one. XY cancel: `q\n`, ~500ms, kill. CI must run bundled `chartread.mock`. Port the 39 legacy classifier cases + real-prompt fixtures. ## Rewrite invariants #175 Done is `d`. #93 sticky XY. #204 `-Y l` default off. #137 send the key the prompt asks. #147 park-before-kill. ## Dependencies Blocks-on: 2, 4, 18, 5 (LED flag). Unblocks: 20, 21, 22, 29. ## Test - CI/mock: 39+ fixtures; state→button matrix; Done → `.ti3` via mock; duplicate id while running. - Hardware: one real strip through Done & Save. ## Acceptance criteria - [ ] `.ti3` appears only after `d\n`. - [ ] No Skip/Undo buttons that send `s`/`u`.
gronod added this to the M4 — Measurement milestone 2026-09-08 17:42:12 +01:00
gronod added the
Priority
Critical
1
Project/ICCery-v2Feature/Backend
labels 2026-09-08 17:42:12 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gronod/iccery-v2-mac#19