{"configured":true,"runs":[{"week_start":"2026-09-21","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-22T06:00:21.202152+00:00"},{"week_start":"2026-09-21","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-21T06:00:55.242568+00:00"},{"week_start":"2026-09-14","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-20T06:00:14.279134+00:00"},{"week_start":"2026-09-14","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-19T06:00:42.017602+00:00"},{"week_start":"2026-09-14","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-18T06:00:14.841875+00:00"},{"week_start":"2026-09-14","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-17T06:00:13.133412+00:00"},{"week_start":"2026-09-14","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-16T06:01:02.469967+00:00"},{"week_start":"2026-09-14","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-15T06:00:50.426440+00:00"},{"week_start":"2026-09-14","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-14T06:01:10.412625+00:00"},{"week_start":"2026-09-07","resolver":null,"fallback_used":false,"rejected_because":null,"conflicts":0,"decisions":0,"note":"nothing to reconcile","dry_run":false,"writes_planned":0,"writes_applied":0,"writes_orphaned":0,"writes_in_flight":0,"rollback_error":null,"write_error":null,"recorded_at":"2026-09-13T06:00:37.033035+00:00"}],"entries":[{"week_start":"2026-08-31","session_id":"1759785405","verdict":"MOVE","rule":"R1","rationale":"Move the hard run to Friday to ensure two clear recovery days after Tuesday's lower-body strength session.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-31T06:02:34.796839+00:00"},{"week_start":"2026-08-31","session_id":"1759784928","verdict":"KEEP","rule":"R1","rationale":"Keep the strength session on Tuesday as planned.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-31T06:02:34.796839+00:00"},{"week_start":"2026-08-24","session_id":"1758148640","verdict":"MOVE","rule":"R6","rationale":"Moving your hard run to Saturday to avoid Thursday's low readiness.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-29T06:01:40.893312+00:00"},{"week_start":"2026-08-24","session_id":"1758148640","verdict":"DOWNGRADE","rule":"R6","rationale":"readiness does not support this session; easy ride instead","resolver":"deterministic","dry_run":false,"recorded_at":"2026-08-28T06:00:54.741416+00:00"},{"week_start":"2026-08-24","session_id":"1758148650","verdict":"MOVE","rule":"R7","rationale":"Moving this long run to Friday avoids your flight commitment and fits the day's training budget.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-27T13:22:14.142273+00:00"},{"week_start":"2026-08-24","session_id":"1758148640","verdict":"DOWNGRADE","rule":"R6","rationale":"Downgrading to an easy bike ride accommodates your low readiness while maintaining aerobic volume.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-27T13:22:14.142273+00:00"},{"week_start":"2026-08-24","session_id":"1758060267","verdict":"SWAP","rule":"R7","rationale":"Swapping this session with Friday's short run fits the training into the daily budget around your flight.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-27T10:58:17.853118+00:00"},{"week_start":"2026-08-24","session_id":"1758060256","verdict":"DOWNGRADE","rule":"R6","rationale":"Downgrading to an easy bike ride preserves aerobic volume while allowing recovery from low readiness.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-27T10:58:17.853118+00:00"},{"week_start":"2026-08-24","session_id":"1758031999","verdict":"MOVE","rule":"R7","rationale":"moved to 2026-08-30; the original day was full","resolver":"deterministic","dry_run":false,"recorded_at":"2026-08-27T10:01:41.791551+00:00"},{"week_start":"2026-08-24","session_id":"1757991754","verdict":"SWAP","rule":"R7","rationale":"Swapping this run with Friday's shorter run keeps Saturday's total duration within the 4-hour budget around your flight.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-27T09:52:51.731408+00:00"},{"week_start":"2026-08-24","session_id":"1757960664","verdict":"MOVE","rule":"R7","rationale":"moved to 2026-08-30; the original day was full","resolver":"deterministic","dry_run":false,"recorded_at":"2026-08-27T08:36:59.852536+00:00"},{"week_start":"2026-08-24","session_id":"1757959116","verdict":"MOVE","rule":"R7","rationale":"moved to 2026-08-30; the original day was full","resolver":"deterministic","dry_run":false,"recorded_at":"2026-08-27T07:34:12.539818+00:00"},{"week_start":"2026-08-24","session_id":"1755570256","verdict":"MOVE","rule":"R7","rationale":"Moving the moderate run to Wednesday avoids exceeding the daily training budget on travel day.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-26T14:48:09.903724+00:00"},{"week_start":"2026-08-24","session_id":"1757131303","verdict":"KEEP","rule":"R2","rationale":"Keeping the easy run on Thursday is safe now that the strength training session has been rescheduled.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-26T06:00:43.334336+00:00"},{"week_start":"2026-08-24","session_id":"1757131298","verdict":"KEEP","rule":"R1","rationale":"Keeping the hard run on Friday is safe now that the strength training session has been moved to Tuesday.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-26T06:00:43.334336+00:00"},{"week_start":"2026-08-24","session_id":"1755570248","verdict":"MOVE","rule":"R1","rationale":"Moving the lower-body strength session to Tuesday provides the required two-day buffer before Friday's hard run.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-26T06:00:43.334336+00:00"},{"week_start":"2026-08-24","session_id":"wed-thresh","verdict":"MOVE","rule":"R1","rationale":"Moving the hard run to Saturday provides three clear days of recovery after Tuesday's lower-body strength session.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-26T05:31:47.366599+00:00"},{"week_start":"2026-08-24","session_id":"tue-squats","verdict":"KEEP","rule":"R1","rationale":"Keeping the strength session on Tuesday as we moved the Wednesday hard run to Saturday for better recovery.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-26T05:31:47.366599+00:00"},{"week_start":"2026-08-24","session_id":"thu-ride","verdict":"MOVE","rule":"R7","rationale":"Moving the ride to Wednesday avoids the conflict with Thursday's travel commitment.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-26T05:31:47.366599+00:00"},{"week_start":"2026-08-24","session_id":"fri-inter","verdict":"DOWNGRADE","rule":"R6","rationale":"Downgrading to an easy ride preserves training volume while accommodating low readiness on Friday.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-26T05:31:47.366599+00:00"},{"week_start":"2026-08-24","session_id":"wed-thresh","verdict":"KEEP","rule":"R1","rationale":"Keeping the hard run on Wednesday when you are well-recovered is best.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-25T16:14:36.543631+00:00"},{"week_start":"2026-08-24","session_id":"tue-squats","verdict":"MOVE","rule":"R1","rationale":"Moving squats to Saturday clears the recovery window before Wednesday's hard run.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-25T16:14:36.543631+00:00"},{"week_start":"2026-08-24","session_id":"thu-ride","verdict":"MOVE","rule":"R7","rationale":"Moving the long ride to Tuesday avoids overloading your travel day to Madrid.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-25T16:14:36.543631+00:00"},{"week_start":"2026-08-24","session_id":"fri-inter","verdict":"DOWNGRADE","rule":"R6","rationale":"Downgrading to an easy ride preserves aerobic volume while letting your body recover from low readiness.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-25T16:14:36.543631+00:00"},{"week_start":"2026-08-24","session_id":"1755570248","verdict":"KEEP","rule":"R2","rationale":"Keeping your strength session on Thursday while moving the run to Friday to avoid doing both on the same day.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-24T14:39:12.283290+00:00"},{"week_start":"2026-08-24","session_id":"1755570237","verdict":"MOVE","rule":"R2","rationale":"Moving this easy run to Friday separates it from Thursday's strength session so they don't blunt each other's benefits.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-24T14:39:12.283290+00:00"},{"week_start":"2026-08-24","session_id":"1755570232","verdict":"KEEP","rule":"R1","rationale":"Keeping your hard run on Wednesday as scheduled.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-24T14:39:12.283290+00:00"},{"week_start":"2026-08-24","session_id":"1755570222","verdict":"MOVE","rule":"R1","rationale":"Moving this lower-body strength session to Monday gives your legs two full days to recover before Wednesday's hard run.","resolver":"gemini","dry_run":false,"recorded_at":"2026-08-24T14:39:12.283290+00:00"},{"week_start":"2026-08-24","session_id":"wed-thresh","verdict":"KEEP","rule":"R1","rationale":"Keeping this high-intensity run on Wednesday is possible once the strength session is moved.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-24T11:19:52.705511+00:00"},{"week_start":"2026-08-24","session_id":"tue-squats","verdict":"MOVE","rule":"R1","rationale":"Moving lower-body strength to Thursday clears the required two-day buffer before Wednesday's hard run.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-24T11:19:52.705511+00:00"},{"week_start":"2026-08-24","session_id":"thu-ride","verdict":"MOVE","rule":"R7","rationale":"Moving the long ride to Saturday avoids exceeding the daily duration limit on your travel day.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-24T11:19:52.705511+00:00"},{"week_start":"2026-08-24","session_id":"fri-inter","verdict":"DOWNGRADE","rule":"R6","rationale":"Downgrading to an easy ride preserves aerobic volume while respecting your low readiness.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-24T11:19:52.705511+00:00"},{"week_start":"2026-08-24","session_id":"wed-thresh","verdict":"MOVE","rule":"R1","rationale":"Move this hard run to Saturday to give your legs enough rest after Tuesday's strength.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-23T13:48:24.955955+00:00"},{"week_start":"2026-08-24","session_id":"tue-squats","verdict":"KEEP","rule":"R1","rationale":"Keep strength on Tuesday since we are moving the hard run to Saturday to recover.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-23T13:48:24.955955+00:00"},{"week_start":"2026-08-24","session_id":"thu-ride","verdict":"MOVE","rule":"R7","rationale":"Move the ride to Sunday because of your flight to Madrid on Thursday.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-23T13:48:24.955955+00:00"},{"week_start":"2026-08-24","session_id":"fri-inter","verdict":"DOWNGRADE","rule":"R6","rationale":"Downgrade to an easy bike ride today because your readiness is too low for a hard run.","resolver":"gemini","dry_run":true,"recorded_at":"2026-08-23T13:48:24.955955+00:00"}]}