Expand description
Ball: git-native task tracker for parallel agent workflows.
Tasks are JSON files committed to your repo. Worktrees provide isolation. Git provides sync, history, and collaboration. There is no database, no daemon, no external service.
§Library usage
use balls::{Store, Task};
use std::env;
let store = Store::discover(&env::current_dir().unwrap()).unwrap();
let tasks = store.all_tasks().unwrap();
for t in balls::ready::ready_queue(&tasks) {
println!("[P{}] {} {}", t.priority, t.id, t.title);
}Re-exports§
pub use config::Config;pub use error::BallError;pub use error::Result;pub use store::Store;pub use task::validate_id;pub use task::ArchivedChild;pub use task::Link;pub use task::LinkType;pub use task::NewTaskOpts;pub use task::Note;pub use task::Status;pub use task::Task;pub use task::TaskType;
Modules§
- commit_
msg - Format a review-time commit message in the standard git 50/72
shape: a single title line with the delivery tag appended, a blank
line, then the optional body. Keeps
git log --onelinereadable. - config
- delivery
- Delivery-link resolution (SPEC §6).
- error
- git
- git_
state - Git plumbing for the state branch topology: orphan branch creation,
remote-tracking setup, and worktree attachment for an existing branch.
Separate from
git.rsso that module stays under the 300-line cap. - link
- Typed relationships between tasks:
LinkandLinkType. - plugin
- ready
- resolve
- review
- Review, close, and archive — the submit side of the task lifecycle.
Lives alongside
worktree.rs(claim/drop/orphans) but kept separate so neither file hits the 300-line cap. - store
- task
- task_io
- Task file I/O. Separated from
task.rsto keep that file under the 300-line cap and to localize the on-disk format in one place. - task_
type TaskTypeenum. Split fromtask.rsto keep that file under the 300-line cap, mirroring thelink.rssplit pattern.- worktree
- Worktree scaffolding: claim, drop, and orphan cleanup. The submit
side (review, close, archive) lives in
review.rsto keep both files under the 300-line cap.