chore Close the Hevy CSV import item

Record the doctrine verdict, vertical-slice commits, and 324-test evidence for native upload, cleaning, promotion, persistence, insights, and recovery.

Commit
11d3a7fad243f58a7ad346bd305e842f21c44d61
Author
Marius Peter <dev@marius-peter.com>
Author date
Committer
Marius Peter <dev@marius-peter.com>
Committer date
RAIL.org
index d7e70f14..34913c45 100644..100644
@@ -7,6 +7,44 @@
7 7 #+TAGS: [ Impact : minor major ]
8 8 #+TAGS: [ Misc : doctrine ]
9 9
10 Added: * TESTED Add pure app-layer Workout_import module with tests :feat:app:major:
11 Added: SCHEDULED: [2026-09-09 Wed 19:04]
12 Added: :PROPERTIES:
13 Added: :ID: 18A5AEB1-9328-48D7-B742-1E7AFE0E0D99
14 Added: :END:
15 Added: :LOGBOOK:
16 Added: - [2026-09-09 Wed 19:09] Added lib/app/workout_import.mli/.ml (pure,
17 Added: depends inward on hito.core
18 Added: only) and test/test_workout_import.ml (17 Alcotests), registered in
19 Added: test/dune and test/test_hito.ml. dune build @check clean, dune fmt +
20 Added: @fmt clean, dune runtest --force green: 263 tests total, all 17
21 Added: Workout_import tests pass. Not committed per instruction.
22 Added:
23 Added: Design note: warning, source_set, workout, and promoted share field
24 Added: names (row, exercise_name, title, started_at, ended_at), so several
25 Added: functions carry explicit record annotations to steer OCaml field
26 Added: disambiguation. Every promoted set becomes one Observation at
27 Added: Positive_failure performed at ended_at; set_type gates confirmation
28 Added: only. Mapping/acknowledgement edits bump a revision; a stored promotion
29 Added: at an older revision re-promotes as a replacement, else Already_promoted.
30 Added: :END:
31 Added: Implement a PURE app-layer module `Workout_import`
32 Added: (lib/app/workout_import.mli/.ml) plus Alcotests. Import lifecycle is an
33 Added: application use case, not a core entity. Core receives only confirmed,
34 Added: catalogued, failure-defined Evidence.Observation.
35 Added:
36 Added: Rules: raw CSV immutable source in batch; warmups/unsupported rows are
37 Added: warnings, not provisional sets; Hevy `failure` sets promotable after
38 Added: exercise mapping; `normal` sets require ONE workout-level
39 Added: acknowledgement; `dropset` blocks the whole workout; exercise mapping
40 Added: requires explicit confirmation, by source exercise name, applies to all
41 Added: matching sets; promotion atomic per workout, partial per batch; superset
42 Added: id is provenance only; every promoted set becomes one canonical
43 Added: Observation with Positive_failure; mappings/confirmation edits increment
44 Added: a revision so later promotion replaces observations.
45 Added:
46 Added: No CSV parsing, repository, DB, or web. Use only _build-agent for Dune.
47 Added: Run fmt, @check, @fmt, runtest --force. Do not commit.
10 48 * DONE Review docs and comments vs code, apply STE100 :docs:app:minor:
11 49 CLOSED: [2026-09-09 Wed 16:16] SCHEDULED: [2026-09-09 Wed 15:54]
12 50 :PROPERTIES:
@@ -346,12 +384,26 @@
346 384
347 385 - result :: commit=43da59d tests=215 pass
348 386
349 Removed: * BLOCKED Import Hevy CSV from profile :feat:app:
350 Removed: SCHEDULED: [2026-09-05 Sat 21:25]
387 Added: * DONE Import Hevy CSV from profile :feat:app:
388 Added: CLOSED: [2026-09-09 Wed 20:26] SCHEDULED: [2026-09-05 Sat 21:25]
351 389 :PROPERTIES:
352 390 :ID: 2559dd31-18e1-4f62-8d16-92f96d782203
353 391 :END:
354 392
393 Added: :LOGBOOK:
394 Added: - CLOSING NOTE [2026-09-09 Wed 20:26] :: model=kiro-cli commit=40b7989 tests=324 pass; vertical slice commits b4c482d, 1ff7131, 04082c3, e2d6443, 12ed085, a4b5bc0, 40b7989; native CSV upload, immutable source, warnings, mappings, acknowledgement, blockers, atomic workout and partial batch promotion, provenance, SQLite, insights, recovery
395 Added: - [2026-09-09 Wed 20:26] Doctrine check: Consistent. Imports remain an
396 Added: application use case. lib/core contains no Hevy, CSV, import, or
397 Added: provenance concepts. Only catalogued and confirmed Positive_failure
398 Added: observations reach Progression. Hevy failure sets qualify after
399 Added: exercise mapping; normal sets need an explicit retained workout-level
400 Added: acknowledgement; warmups and unsupported rows are dropped with
401 Added: warnings; dropset workouts remain blocked. Promoted workouts gate
402 Added: recovery but never advance routine rotation. Raw source is immutable,
403 Added: and blocked workouts stay provisional for later review. This upholds
404 Added: categorical intensity, explicit deviations, focus on the curated
405 Added: catalog, systemic recovery, and plan/record separation.
406 Added: :END:
355 407 - note :: Deferred by the request clarification. Left open under Dispatch; not implemented this session.
356 408 On profile page, user should be able to import Hevy CSV
357 409