Add [!] blocked status (lexer + rollup + rollover)#6
Merged
Conversation
Fourth status marker for tasks that cannot currently advance: - parse_todo() lexer accepts [!] alongside [ ], [/], [x] and emits status="!". - rollup_status(): any blocked child rolls the parent to [!]; this takes precedence over the existing all-done / mixed rules. - propagate_from_daily(): "!" sits at the top of the status priority map so a blocked task in Daily propagates to the matching task in Week/Month/Quarter rather than being overwritten. - advance_period() / .reset_all_status(): the weekly status reset preserves "!" — blocked tasks survive the rollover. - next_day(): blocked items are kept in today's section (not just carried forward), so the "what got worked on" record retains the attention-needed flag. tasks() already normalized [!] to status="blocked"; nothing to do on the read API. 18 tests in test_blocked.R cover lexer parsing, rollup across one and two levels, blocked-over-done and blocked-over-progress precedence, blocked-with-recurring siblings, run_monday() preservation across the week boundary for all four cadences, and roll_day() preservation at top-level and nested. Bump version to 0.1.5.
README: add [!] to the status list, the blocked-takes-precedence rollup rule, and a note that [!] is sticky across roll_day(), run_monday(), and next_day(). CLAUDE.md: same in the Task File Format section.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Task 3 of
Plan.md: a fourth status marker[!]for tasks that cannot currently advance.parse_todo()lexer accepts[!]and emitsstatus="!".rollup_status(): any blocked child rolls the parent to[!]. Blocked takes precedence over the all-done and mixed rules.propagate_from_daily():"!"sits at the top of the status priority map, so blocked in Daily propagates up to Week/Month/Quarter.advance_period()/.reset_all_status(): the weekly status reset preserves"!".next_day(): blocked items stay in today's section and carry forward to tomorrow.tasks()already normalized[!]tostatus="blocked"in PR Add tasks() data.frame API for structured reads #5; nothing more to do on the read API.Test plan
inst/tinytest/test_blocked.R: lexer, rollup across one and two levels, blocked-over-done and blocked-over-progress precedence, blocked + recurring siblings,run_monday()preservation across the week boundary for all four cadences, androll_day()preservation top-level and nestedtinyrox::document(); tinypkgr::install(); tinytest::test_package("hacer")clean