ADR-0031: Plan habits as definitions checked off per day, never carried over
Status: proposed ยท 2026-11-02
Contextโ
ADR-0030 has the planning skills write a habit as a repeating Tasks line in its owner's note (- [ ] Up at 6:00 ๐ every day โณ <date>), ticked only in Obsidian. On 2026-11-02 the user found their morning and evening routines carried from day to day. A habit line not ticked on its day stays open with its old date. The day plan's query (scheduled on or before <day>) lists it again every following day, and Tasks writes no occurrence for the next day until the old one is ticked. Two open occurrences of one evening habit sat in the same note.
The user asked for a habit concept in which a day not kept is missed, not carried over. They chose to define each habit once and check it off per day. kb-template built this on 2026-11-02 (its ADR-KI-0065):
- a habit is a plain list item
- <text> ๐ <rule>under## Habitsin its owner's note; - each day plan has a
## Habitssection thatplan_periodandplan_daysfill with that day's checks; - an open check is never overdue and never rolled over;
review_periodcounts each habit's due, ticked and missed days and its streak;planning_overviewlists habits, and for a day its due habits and checks;- a new tool,
add_habits, writes the definitions.
Decisionโ
- A habit is a routine that is kept or missed on a day; it is defined with
add_habits, notadd_tasks. Personal habits go in a workstream of the habit project thatvault-planning/rules.mdnames. Rules areevery day,every weekday,every weekendorevery week on <days>. A habit is changed or ended withedit_noteon its definition line. This replaces "including habits" in ADR-0030 Decision 2. ๐on a task line is kept for repeating work that must still get done after a missed day, such as a cleaning cycle. ADR-0030 Decision 7 now applies to those lines only: they are ticked in Obsidian.- Every
plan-daymorning run, and everyplan-weeklayout, writes the day's habit checks throughplan_days, and shows the checks added in the preview. An open check is a missed day: closing a day names it and moves nothing. - Habit checks are ticked in Obsidian or with
update_taskon the day plan. - Week and month planning read
review_period'shabitsto judge habit goals such as "Gym 4 times" against the days actually kept. Gym, whose days the user picks each week, stays as tasks. - The user's existing
๐routines are moved to definitions once, withadd_habits. Their old lines are cancelled or deleted by the user.
Consequencesโ
- A missed morning no longer reappears the next day, and each day starts with its own checks.
- A day plan created by Obsidian from its template shows no habit checks until
plan-dayorplan-weekruns for it. - The skills depend on
add_habitsand the habit fields ofplanning_overview,plan_period,plan_daysandreview_period. Thelife-vaultserver must run a kb-template build that has ADR-KI-0065. - The skill docs (
vault-planningconventions, tools and rules,plan-day,plan-week,add-task,review-period) describe habits apart from tasks. - No ai-coach code changes.