Skip to main content

Crate balls

Crate balls 

Source
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::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 --oneline readable.
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.rs so that module stays under the 300-line cap.
link
Typed relationships between tasks: Link and LinkType.
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.rs to keep that file under the 300-line cap and to localize the on-disk format in one place.
task_type
TaskType enum. Split from task.rs to keep that file under the 300-line cap, mirroring the link.rs split pattern.
worktree
Worktree scaffolding: claim, drop, and orphan cleanup. The submit side (review, close, archive) lives in review.rs to keep both files under the 300-line cap.