intake: read task dates and render the dashboard's Recent table - #249
Merged
Conversation
The Mind now dates every task the moment it leaves the backlog (PyAutoMind REFERENCE.md "Task dates"). The census reads those dates back and the dashboard grows the one section laid out by DATE rather than by state. - parse_registry reads each entry's date via the key that names its event (`issued:` / `parked:` / `filed:`, most-specific first); a date sitting in another field's prose stays invisible, since that is the un-parseable habit the convention replaced. parse_header reads a prompt's own `Issued:` copy as the fallback that keeps an orphan in-flight prompt dated. - completed_records walks complete/<YYYY>/<MM>/ newest-first and stops once it has enough — the ledger is 1000+ files and a 20-row table must not open all of them on every render. A record with no `completed:` field dates by the month folder the lifecycle engine filed it into. - Recent sits between Backlog and Epics in both the markdown page and its Pages twin (a real table, with a copy button per row on the HTML side). Live work is SELECTED first and completions fill the rest: a straight date sort on a Mind that ships two hundred records a month is twenty receipts and no work, which would hide the dates on the very page they were added for. - In flight / Parked / Planned rows now carry their date as a facet too. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L4HPWjv5rdzBAkKpfW1SbR
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.
Pairs with PyAutoMind, which now dates every task the moment it leaves the backlog (
REFERENCE.md→ "Task dates"). The census reads those dates back and the dashboard grows the one section laid out by date rather than by state.Reading the dates
parse_registryreads each entry's date via the key that names its event (issued:/parked:/filed:, most-specific first). A date sitting in another field's prose stays invisible — that is the un-parseable habit the convention replaced, and reading it back would re-legitimise it.parse_headerreads a prompt's ownIssued:copy as the fallback that keeps an orphan in-flight prompt (no registry row claims it) dated rather than dropping it out of the feed.completed_recordswalkscomplete/<YYYY>/<MM>/newest-first and stops one month after it has enough. The ledger is 1000+ files and a 20-row table must not open all of them on every render. A record with nocompleted:field dates by the month folder the lifecycle engine filed it into — coarse, but never wrong about the month, and the alternative is dropping a fifth of the ledger out of the feed.The Recent section
Sits between Backlog and Epics in both the markdown page and its Pages twin (a real
<table>, with a copy button per row on the HTML side). Every other section answers "what should I do now?"; recency is orthogonal to state, so none of them can answer "what has been happening?".Live work is selected first and completions fill the rest. A straight date sort on a Mind that ships ~200 records a month is twenty receipts and no work — it would have hidden the dates on the very page they were added for. So rows are selected live-first (in flight, parked, planned), completions fill whatever room is left, and the selected set is then sorted by date like any other feed. On a quiet Mind that changes nothing.
In flight / Parked / Planned rows now also carry their date as a facet, because a status line reads very differently against a row issued yesterday than against one issued in May.
Testing
tests/test_intake_dashboard.py: the merged feed, the event label per registry key, newest-first ordering, section placement, a busy ledger never crowding out live work, undated rows being absent rather than padded, registry rows linking their own heading anchor, the prompt header fallback and the registry row beating it, prose not counting, folder-dated records, the HTML twin's copy buttons, and the bounded ledger scan.python3 -m pytest tests/— 395 passed.bin/pyauto-brain intake dashboard --check— clean against the regenerated PyAutoMind pages.dashboard.htmlchecked at 430px in both light and dark themes.Generated by Claude Code