// Letter from the garden — UX-02 + CONTEXT D-17 + D-18 + D-20. // // Composed from authored skeleton + templated insertions per CONTEXT D-17. // Slots populated at runtime from sim/offline/events.ts via the variable // map in src/content/ink-loader.ts. // // Per Pitfall 4: Ink VAR names are snake_case AND case-sensitive. // Per CONTEXT D-11: 24h offline cap is silent in voice — no numeric // "28h" copy in any branch. // Per CLAUDE.md Tone — the gardener-keeper voice. Warm. Specific. // Intermittent. Sometimes funny, sometimes devastating. Never a stat // dump (UX-02 explicitly forbids that). The skeleton holds the voice; // the slots fill in the specifics. // Per anti-fomo-doctrine.md: this letter is NOT a "you missed X — come // back tomorrow!" nag. It is a contemplative summary of what stayed. VAR plants_bloomed = 0 VAR fragment_titles = "" VAR lura_was_here = false VAR fragment_count = 0 VAR last_plant_type = "" == letter == The garden held its breath while you were gone. { plants_bloomed > 1: {plants_bloomed} blooms came and went, each leaving the soil a little quieter than they found it. - else: { plants_bloomed == 1: One bloom came and went. The space it left feels generous, somehow. - else: Nothing bloomed. The wind carried something else, and the garden held that, too. } } { fragment_titles != "": Among what stayed: {fragment_titles}. } { lura_was_here: Lura came by once. She did not knock. She left a folded leaf on the gate post — you'll find it when you next walk past. } The light is the same as when you left. The garden is older. -> END