Sunday weekly checkpoint — real-world weekly recap (nutrition, weight trend, rehab sessions vs plan, gates, next week's plan) and the chapter's climax in the story (dice, outcome by the week's tier, a choice). Use when the user says checkpoint, or on his first message of a Sunday.
Install
npx skillscat add bro2jo/leyenda/checkpoint Install via the SkillsCat registry.
/checkpoint: the week closes, the chapter climaxes
Do the Ledger fully before writing any story. The next chapter's plan is /chapter, in this session or a fresh one.
A. Close out the week
git pull --rebase origin main.- Record first. Anything in his message dated Saturday or earlier goes into the Ledger now, by
/log(no glimpse), before anything closes or freezes: the freeze is final, and a Saturday dinner sent on Sunday morning must count as eaten. - Before closing Saturday, look at it (
python3 engine/darrow.py today --date <Saturday>): if it shows food under 60% of the target with no dinner, or no food, or nothing at all in a week that has other logs, ask him once, in one line, and wait; what he sends goes in by step 2. Then close Saturday, and any earlier open day of the week, by/close(each gets its scene). A Saturday with nothing logged at all is missed:python3 engine/saga.py plan done N --skipped; its spine content folds into the climax (Friday's slot is never promoted). python3 engine/darrow.py chapter-close --date <last Saturday>(always the Saturday that just ended). It refuses while Saturday looks unfinished in a week that has other logs; when he said that was all,--partial-ok. It freezes the week's score and tier as chapter N and prints the breakdown. From here the dice (--chapter N), the road and the week's XP bonus read the frozen tier; a late log still moves totals and the live score, never the tier.- A week with nothing logged at all is still a chapter:
chapter-close --date <its Saturday>(a Setback, counted toward the road: the world moved without him, never a lecture); if its chapter is already open,python3 engine/saga.py plan chapter cutawayturns it into a cutaway chapter, otherwiseplan chapter open --number Nwith no slots; write one### Interlude — Title(the world moving in his absence, another POV, one planned world move from the arc's open threads, no climax, no choice) and record it (saga.py record '{"key": "chNN:interlude", …}'); then go on to the current week. An open climax choice carries across the cutaway and resolves on its normal schedule in the next real chapter.
B. The Ledger recap (real only)
python3 engine/darrow.py recap --date <last Saturday> --write: it createsreal/checkpoints/<Sunday>.mdfrom the template and fills its numbers block (the day table, every macro and micro average vs target, weight vs last week and the guide's rule, loaded days → next mornings, floor, swelling grades, sessions vs plan, what was measured, flags). Quote those numbers; never recompute them. A later log for that week: rerun the same command.- Write the meaning under each heading, replacing the comment there. Read the State a section at a time (
python3 engine/darrow.py doc state <section>), this week's PT Notes entries (doc ptnotes <date>) and any otherreal/visits/file from the week; never open the plans whole.- Nutrition: the flagged nutrients and the foods behind them (
food list DATE), fish, one or two fixes for next week. - Weight: the trend. If the engine printed the ⚠ falling line, say so plainly and suggest telling the surgeon/PCP. If the guide's rule moves the target, update
real/config.json → nutrition_targetswith source and date. - Rehab: the loaded days and their mornings, the swelling trend, progressions and the one-change rule (
show ex DATE). - Add-on and conditioning: upper 2 of 2? (block advancement:
doc addon 4; the block in force:doc state 7); bike; accessory/power. - Sport: sessions vs plan, the phase's throwing and the pivot ladder's rung (a Knot tied this week opens the next phase: update
config.json → sport.stage,stage_since,stage_evidence), the guide's weekly question; every fourth week the month check (doc sport reviews). - PT and measurements: each visit with its PT Notes entry; the numbers measured (
measures); questions answered and still open. - Gates: the next phase gate (
real/config.json → rehab.next_gate), criterion by criterion, with evidence. If a gate was passed with PT/surgeon clearance or measured criteria this week:python3 engine/darrow.py knot tie N --date … --evidence "…", updaterehab.current_phase/phase_entered/next_gate, andsync. - Program — changes and decisions, and Next week (the plan day by day with doses, or a pointer to the State's program section).
- Nutrition: the flagged nutrients and the foods behind them (
- The State holds the present only (
real/state/recovery_state.md). If the program changed:git mv real/state/recovery_state.md real/state/archive/recovery_state_<the Sunday in its title>.md, then write the new State in the same ten sections (sections 2, 4 and 8 stay pointers), its title naming this Sunday, "Supersedes" naming the archived file. If nothing changed, update "Last reviewed" and whatever status moved. Either way rewrite §5's next-visit list, §6's "This week" table for the new week (its days matchingconfig.json: template,plan_changes, the throwing days) and §7's add-on status. The week's review never goes in the State. - Update the top section of
real/NOW.mdfor the new week: plan in force, next PT visit, the gate, flags, open items. No counts. - Give him a ≤15-line summary in chat (the level-up block too if this session's
syncreported one).
C. The climax (story only)
- If
python3 engine/saga.py nowshows an open small choice, resolve it first by its default (saga.py choose --by bearing '<entry>'): the climax never opens with one pending. Thenpython3 engine/saga.py plan set stage=climaxfirst (it pays the owed world moves and makes the climax-targeted items due), thenpython3 engine/saga.py brief --climax: the chapter's question, the climax plan, its checks, options and default, the frozen tier and the shape it sets, the arc's per-tier sketch and the beat's choice, what is owed (DUE items, the owed world moves, RULE ARMED lines, a rank beat), the people (voice, tactic, regard, what they know), the threads, the callbacks that fit, the format and the record skeleton. Readsaga/bible/style.md§1–§2 and the chapter so far. - Write the climax under
## Climax — <Title>, as long as the decision and its cost need (most land between 900 and 1,800 words): it answers the chapter's question in the tier's shape (Triumph: the plan works and something extra; Hard-won: he wins and it costs something real; Costly: one thing won, one lost; Setback: the enemy gains ground and the reversal sets up the next chapter, never humiliating, never a lecture). The dice decide the details: 2–4 checks at the moments of real stakes,python3 engine/darrow.py roll ch<NN>-<slug> --stat … --dc … [--prof] [--art <id>] [--adv|--dis] --chapter <N>, each first line pasted exactly; an Insight check is--stat resolve --prof --art wardens_eye; Inspiration may be offered as the reroll in the choice rather than spent for him. A rank beat waits for a moment outside the action beats, or for the next chapter's first scene. One callback at most, fired. End on the choice (2–3 options from the climax plan; gated options marked, struck through when unmet; who approves in italics). Then the reread (style.md§4). python3 engine/saga.py record '{"key": "chNN:climax", …, "choice": {"ask": …, "options": […], "default": K}, "recap": "<one spoiler-free line>", "story_so_far": {<id>: "<2–5 sentences>" for everyone in the chapter}, "fired": [what it paid], …}': it opens the climax choice (it carries two scenes into the next chapter, then its default), fires what the climax paid, and rebuilds every page. The choice goes in the reply exactly as written and on the NOW page by itself;/chooserecords his answer when it comes.- When a Knot is tied (the KNOT line in
nowsays when the Book's transition falls due): when it is due at this climax,python3 engine/saga.py route decide --book Nbefore writing (it refuses while a listed chapter is unclosed, unless--road … --why …), thensaga.py dueagain for the items that fall due; write the climax as the last beat's own, ending on its choice; once he answers,/choosewrites the crossing (saga.py arc tN.<road>) as its### Choiceblock, thenplan beat tN status=doneandplan companion arrive IDfor anyone the road put beside him. When it waits, the coming chapter is planned by the compress rule (/chapter). Book VI ends on its finale: at the finale's checkpoint runroute decide --book 6first.
D. Turn the page
/chapter plans the next chapter (in this session, or a fresh one when this one is long); it opens the chapter and its file. If no project is open (python3 engine/darrow.py project show), ask him in one line for the coming week's work, a goal outside the knee and its 2–5 tasks, and open it by /project when he answers; one at a time. Then python3 engine/darrow.py ship -m "checkpoint <Sunday>: chapter N <tier>" (if it stops at a step, fix what it printed and ship again).