Repository navigation
Conversation
Adds a stdlib-only UI over the tracking data and spec files. - Graph: spec (specs/*.md) -> epic (sprint) -> task (issue) and governance task -> acceptance criterion (AC-n from brief.md). Unplanned work and governance tasks get group nodes. No dangling parents. - Storage: CSV stays the write path and the fallback. `.onecoder/track.db` is a derived SQLite index, rebuilt when CSV, specs, or governance files change. It ignores itself via `.onecoder/.gitignore`. If the index can't be written, the page serves from CSV and shows a warning. - Server: loopback by default, strict CSP, no external resources. The page builds the DOM with textContent only. - `--print-json` prints the graph for scripts and agents. Fix: issue and sprint ids were time-based (ms modulo 1e6). Issues created in the same millisecond shared an id, so updates hit all of them and the graph dropped the duplicates. Ids are now random. Tests: 61 pass (49 existing, 12 new covering hierarchy, index invalidation, CSV fallback, ignore rules, HTTP surface, CLI, and id collisions). Claude-Session: https://claude.ai/code/session_01NGJmcc1EdTFt3e6CJfF3E9
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.
Summary
Adds
onecoder viz, a stdlib-only, read-only UI that shows a project as specification → epic → task → acceptance criterion.specs/<name>.mdwith frontmatterid,title,status,epic: <sprint-id>. Kept in git..onecoder/tasks/<id>). Criterion:AC-nlines in the governance task'sbrief.md.onecoder viz --print-jsonprints the same graph for scripts and agents.Storage
.onecoder/track.dbis a derived SQLite index. It is rebuilt when the CSV, spec, or governance files change, and it ignores itself via.onecoder/.gitignore.Security
default-src 'none', no external resources.textContentonly. Tracker titles are never parsed as markup.Bug fix
Issue and sprint IDs were millisecond timestamps modulo 1,000,000. Issues created in the same millisecond shared an ID, so updates hit all of them and the graph dropped duplicates. IDs are now random (
uuid4). The change is intrack/local.py.Known gaps (not in this PR)
task new --issueaccepts the flag but does not store it instate.json, so governance tasks don't nest under their issue yet.Test plan
python3 -m unittest discover -s tests -p "test_*.py": 61 tests pass (49 existing, 12 new).Generated by Claude Code