Notes import: TODO.md and UPSTREAM.md as tasks
Every repo in the ecosystem keeps its open work in two markdown files:
TODO.md (what to do, - [ ] and - [x] items under headings) and
UPSTREAM.md (what it is waiting on in other repos, each item naming the
issue it filed). This module turns those lists into tasks, so the board can
hold the work that lives in files as well as the work that lives in GitHub.
Each top-level list item becomes one task. Its first line is the title;
indented continuation lines and nested bullets are the body, prefixed with
the heading path it sat under. An open item arrives in backlog (a
roadmap item in freezer): it is acknowledged work, not something new
in the inbox. A done item — - [x], a leading ✅, a struck-through
~~lead~~, CLOSED / DONE, or "— done" — arrives closed. Every GitHub issue URL in the item
becomes a link tag: upstream:tosijs-ui#173 when the issue is in another
repo, github:12 when it is this project's own. The tags source:notes
and notes:todo / notes:upstream say where it came from.
Ids are deterministic — a hash of the item's text — so importing the same file again adds nothing, and a file that gained three items adds three tasks. An item whose wording changed is a new task; the old one stays, because the log never forgets and the file is not the truth once it has been imported (the same rule as GitHub issues after onboarding). Close the stale one on the board.
virta notes --project tosijs-virta --host https://… TODO.md UPSTREAM.md
The notes verb does the same for an agent, given the file's text.