Todo burndown - #1
Merged
Merged
Conversation
added 9 commits
July 20, 2026 14:53
Per TODO burndown triage 2026-07-20. - Mark recurring-phase-2-remove-flat-rrule BLOCKED as of 2026-07-20 - Delete from TODO.md and remove in-code markers for: done-error-taxonomy-cleanup, done-error-derive-serialize, mcp-preflight-shared-error-type, done-anchored-double-rrule-parse, workspace-handle - Reword done-error-grouping-comment to drop the dangling slug reference Claude-Session: https://claude.ai/code/session_011gDGijCtMBrvxhotRnSxf7
Lint errors were computed at query time and discarded, so callers that read the cache saw a partial picture. Persist them alongside the indexed entries, dedup at the read path, and bump SCHEMA_VERSION. Frozen recurring series are exempted from terminal-status rules: the phase-2 recurrence design forecloses stripping their rrule, so the terminal rules would otherwise emit permanent false positives. Claude-Session: https://claude.ai/code/session_012E14JY77xhbbUcZ9gMf6qA
Terminal items were windowed by their effective date, so a task completed long ago could still surface (or a recently finished one drop out) depending on scheduling fields that no longer mean anything once the item is done. Window them by completion date instead. Claude-Session: https://claude.ai/code/session_012E14JY77xhbbUcZ9gMf6qA
The migration/reindex path accepted rrule strings that the rrule crate cannot parse, so malformed recurrences silently produced no occurrences. Lint now flags unparseable rrules, rejects newline-injected values that could smuggle extra ICS properties, and pins the crate's error text with a canary so a crate upgrade that changes wording trips the SCHEMA_VERSION gate. Claude-Session: https://claude.ai/code/session_012E14JY77xhbbUcZ9gMf6qA
…tion The resolver family read the manifest from ambient process environment, so tests could not exercise it in isolation and risked leaking each other's state. Thread an explicit manifest through the resolver call chain; tests now inject in-memory manifests over TempDir instead of mutating the environment. Claude-Session: https://claude.ai/code/session_012E14JY77xhbbUcZ9gMf6qA
Cross-repo refs were never validated, so a manifest could point at a global ID that no repo actually defines (or that two repos both claim) and nothing flagged it until a downstream lookup silently failed. Validate refs at check time: report dangling refs, and treat a duplicate global ID within a repo's own refs as an error. Ref IDs are sanitized before they reach check output so untrusted values can't inject control characters. Claude-Session: https://claude.ai/code/session_012E14JY77xhbbUcZ9gMf6qA
…tests The item sort rank was computed in two places (Rust and SQL) that could silently drift, and the multi-repo sort tests never actually exercised the Rust min_by rank path. Collapse to one shared rank function, and rework the tests to split competitors cross-repo so the ranked path is discriminative against byte order and guarded by an SQL oracle. Claude-Session: https://claude.ai/code/session_012E14JY77xhbbUcZ9gMf6qA
MCP config was re-read and re-parsed on every access, and the XDG config directory path (including the graf/ segment) was assembled independently at multiple call sites. Cache the parsed MCP config once, and route every caller through a single graf_config_dir() helper that owns the full path including the graf/ segment. Claude-Session: https://claude.ai/code/session_012E14JY77xhbbUcZ9gMf6qA
Terminal and active status string literals were hand-written into multiple SQL fragments, independent of the Status enum, so adding a status variant could silently desync the SQL from the enum. Derive the SQL literals from Status (via TERMINAL_STATUSES_SQL and Status::ALL), add a bridging test that trips when the SQL and enum diverge, and re-pin the frozen on-disk status spellings. Claude-Session: https://claude.ai/code/session_012E14JY77xhbbUcZ9gMf6qA
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.
No description provided.