screen-locker/screen_locker
Krzysztof kuhy Rudnicki f4d5337f25 Manual-workout phone sync P1: wire format + shared constants + fixture
First phase of syncing phone-logged manual/off-app workouts to the PC so they
count toward the unlock. This phase only establishes the cross-language wire
contract; no behavior change to existing flows.

- _manual_workout.py: build_sync_payload(draft, date) = build_entry fields +
  a `kind="manual_workout"` discriminator + the workout's own `date`; and
  manual_sync_record_id(date, start) -> stable `manual:<date>T<HH:MM>` id.
  A StrongLifts session payload has no `kind`, so an ingesting PC can route on
  it and never mistake a manual for a verified session.
- test_manual_workout.py: TestSyncWireFormat pins the exact literal payload as
  the cross-language contract (the Dart workout_app test will reproduce the
  same literal byte-for-byte; neither side's own round-trip test catches drift
  from the other).
- workout_app/lib/models/manual_workout_constants.dart: hand-maintained mirror
  of the 7 MANUAL_WORKOUT_* constants + the kind value (Python stays source of
  truth; the shared fixture is the drift tripwire).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PM3auNTifaVgcXWDizZrjH
2026-07-13 10:52:00 +02:00
..
tests Manual-workout phone sync P1: wire format + shared constants + fixture 2026-07-13 10:52:00 +02:00
__init__.py Fix test discovery and coverage for python_pkg modules 2025-12-02 22:33:34 +01:00
_auto_upgrade.py Fix pre-existing CI failures (crdt_sync dep, dead type:ignore, ruff) 2026-07-11 17:05:03 +02:00
_compliance_state.py Add phone-workout GitHub sync via shared crdt_sync (Workstream C) 2026-07-11 00:06:59 +02:00
_constants.py Add phone-workout GitHub sync via shared crdt_sync (Workstream C) 2026-07-11 00:06:59 +02:00
_early_bird.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_extra_benefits.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_heat_skip.py Fix pre-existing CI failures (crdt_sync dep, dead type:ignore, ruff) 2026-07-11 17:05:03 +02:00
_log_mixin.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_manual_workout_dialog.py Redesign manual-workout form: two-column grid, drop phone-only fields 2026-07-13 10:09:18 +02:00
_manual_workout_widgets.py Redesign manual-workout form: two-column grid, drop phone-only fields 2026-07-13 10:09:18 +02:00
_manual_workout.py Manual-workout phone sync P1: wire format + shared constants + fixture 2026-07-13 10:52:00 +02:00
_mcp.py Add read-only MCP server exposing workout/lock status 2026-07-10 21:28:09 +02:00
_phone_verification.py Add phone-workout GitHub sync via shared crdt_sync (Workstream C) 2026-07-11 00:06:59 +02:00
_runnerup_db.py Fix pre-existing CI failures (crdt_sync dep, dead type:ignore, ruff) 2026-07-11 17:05:03 +02:00
_runnerup_verification.py Add auto-fill RunnerUp scan, carrot bonuses, and --status interface 2026-06-28 08:08:35 +02:00
_shutdown_base.py Add auto-fill RunnerUp scan, carrot bonuses, and --status interface 2026-06-28 08:08:35 +02:00
_shutdown.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_sick_dialog.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_sick_tracker.py Fix silent skip-credit bypass; replace with weekly shutdown-time bonus 2026-07-03 15:27:08 +02:00
_status_data.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_status.py Fix pre-existing CI failures (crdt_sync dep, dead type:ignore, ruff) 2026-07-11 17:05:03 +02:00
_temperature_status_mixin.py Add phone-workout GitHub sync via shared crdt_sync (Workstream C) 2026-07-11 00:06:59 +02:00
_temperature.py Add phone-workout GitHub sync via shared crdt_sync (Workstream C) 2026-07-11 00:06:59 +02:00
_time_check.py chore: set up as standalone repo 2026-05-28 07:43:06 +02:00
_ui_flows_relaxed.py refactor: enforce 400-line file limit with pre-commit hook and split outliers 2026-05-28 21:19:18 +02:00
_ui_flows.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_ui_widgets.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_wake_state.py Migrate to the shared gatelock backend 2026-06-21 20:11:16 +02:00
_weekly_check.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_window_setup.py Migrate to the shared gatelock backend 2026-06-21 20:11:16 +02:00
_workout_credit.py Add manual (unverified) workout logging with evidence form 2026-07-05 20:08:52 +02:00
_workout_sync.py Add phone-workout GitHub sync via shared crdt_sync (Workstream C) 2026-07-11 00:06:59 +02:00
adjust_shutdown_schedule.sh fix: resolve shutdown-schedule canonical path via guardctl dynamically 2026-07-04 11:48:39 +02:00
screen_lock.py Add phone-workout GitHub sync via shared crdt_sync (Workstream C) 2026-07-11 00:06:59 +02:00
status_view.py Add phone-workout GitHub sync via shared crdt_sync (Workstream C) 2026-07-11 00:06:59 +02:00