Task Note Readers¶
Sessions whose transcripts show they READ a task's note — the inverse of developed-by. Detects native Read of tasks/notes/
.md plus task_read/task_assign MCP calls carrying the task id. Surfaces the Rung-3 "read it, did the work, never referenced the task id in a commit" developer that developed-by misses. Read-only; full-history JSONL scan with a durable-table fast path.
MCP name: task_note_readers
Category: tasks
Parameters¶
| Name | Type | Required | Description |
|---|---|---|---|
include_saw_id |
bool |
No | When true, also return sessions that merely mention the task id without an explicit read (weak signal). Default false — only explicit-read sessions are returned. |
note_uuid |
str |
No | The task's note UUID. Enables Read-tool detection on tasks/notes/ |
task_id |
str |
Yes | Task ID (e.g., 't-xxxxxxxx') |
Details¶
Returns the sessions whose JSONL transcripts demonstrate they read a
task's note — the inverse of task_provenance's developed_by.
Where developed_by answers "who committed against this task id,"
task_note_readers answers "who read the note." That gap is the Rung-3
"forgot to toggle" case: a session reads the note, does the work, but
never references the task id in a commit message — invisible to
developed_by, yet exactly the developer /wb-task-completeness wants to
find.
Each returned session carries:
- awareness —
read_note(an explicit read fired) or, only wheninclude_saw_id=true,saw_id(the id appeared without a demonstrable read). - sources — which explicit-read signals fired, each with first/last
timestamps and a count:
read_tool(aReadontasks/notes/<uuid>.md),task_read_mcp,task_assign_mcp. - first_seen / last_seen — ISO timestamps bounding the reads.
Results are ranked read_note before saw_id, then most-recent first.
Pass note_uuid for full fidelity (it's what enables read_tool
detection). Bridge-independent — reads session JSONL + the durable
session_task_note_reads table (when populated, used as an O(1) fast
path), never the Obsidian bridge.