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.