From 4d2f83de2fff3eecaaa96c86301a221d1fe8d708 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Wed, 24 Jun 2026 06:34:50 -0400 Subject: feat(tasks): surface cross-project dependencies in what's-next A task can be blocked by work owed by another project, and today it keeps getting recommended as "next" even though it can't move, while the blocker sits at low priority over there and the dependency stalls silently. Adds a :blocked: tag plus a :BLOCKED_BY: : property (todo-format.md) to mark the dependency, and teaches open-tasks.org Next Mode to pull :blocked: tasks out of the cascade pick and surface them in a dedicated "Blocked on other projects" section that names each blocker and offers an inbox-send nudge. Distinct from VERIFY, which waits on Craig rather than another project. Claude-Session: https://claude.ai/code/session_017PtX1nt1rtYVATuzmzBS4f --- claude-rules/todo-format.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'claude-rules') diff --git a/claude-rules/todo-format.md b/claude-rules/todo-format.md index 895526f..0bfd3d3 100644 --- a/claude-rules/todo-format.md +++ b/claude-rules/todo-format.md @@ -263,3 +263,26 @@ are noise that pollute his `cj:` greps. ** DOING [#A] Kostya's contract :admin:kostya: *** 2026-05-15 Fri @ 14:00:00 -0500 Kostya basis — part-time, 20 hr/week Nerses confirmed 5/15 13:30 CDT: Kostya runs at 20 hr/week part-time, mirroring Vrezh's structure. Plugged into Exhibit A § 2 of the contract draft. + +## Cross-Project Dependency Tag + +A task can be blocked by work that has to happen in a *different project* — a rulesets task that can't finish until `.emacs.d` ships a companion function, say. Left unmarked, two things go wrong: the what's-next workflow keeps recommending the blocked task even though it can't move, and the blocker sits at low priority in the other project, so the dependency stalls silently. + +Mark the dependency with the `:blocked:` tag plus a `:BLOCKED_BY:` property: + +``` +** DOING [#B] Wrap-teardown feature :feature:blocked: +:PROPERTIES: +:BLOCKED_BY: emacsd: ai-term companion functions (cj/ai-term-quit, -live-count) +:END: +Body... +``` + +- The `:blocked:` tag on the heading is the filterable marker — it's what `open-tasks.org` reads to pull the task out of the "do this next" recommendation. +- The `:BLOCKED_BY:` property names *which* project blocks the task and *what* that project owes, as `: `. The project token is the short basename (`emacsd`, `home`, `work`), matching the inbox/handoff naming. + +A task stays `:blocked:` only while the external dependency is genuinely outstanding. When the other project delivers, or the dependency dissolves, drop the `:blocked:` tag and the `:BLOCKED_BY:` property in the same edit — the task is workable again. + +`open-tasks.org` Next Mode surfaces `:blocked:` tasks in a dedicated "Blocked on other projects" section instead of the cascade, naming each blocker so a stalled cross-project dependency stays visible (and can be nudged via `inbox-send`) rather than rotting. See that workflow for the surfacing behavior. + +This is distinct from `VERIFY`, which marks "waiting on Craig's input." `:blocked:` marks "waiting on another *project's* work." If Craig's input is what's needed, it's a VERIFY, not `:blocked:`. -- cgit v1.2.3