Expand description
The tracker plugin — balls’ one remote-talker (§0/§12/§13).
Base balls is local-only: it commits task-file changes to the balls branch
and never touches a remote. Everything beyond that is a plugin, and the
tracker is the plugin that owns the remote. It is a SEPARATE binary, invoked
subprocess-uniform (<bin> <op> <phase>, §6) with the §7 wire on stdin and
no return channel — in-repo only as a default capability + reference impl.
Its whole job is git acts on the state branch:
- [
remote_ops::sync] —sync/pre: fetch + fast-forward-only import; a non-ff is the contention signal (§13). - [
remote_ops::push] —*/post: publish the sealed balls branch (§12). - [
prime::prime] —prime/pre: settle the store name, clone an established remote branch into a local ref, or warn the stealth W1 (§12). - [
prime::prime_post] —prime/post: settle content — fetch-ff an established remote then push, or found an absent branch by pushing (§12).
The wire’s Binding is everything it needs — remote + tasks_branch
name the store upstream DIRECTLY, with no trail to walk (§12). When the binding
carries no explicit remote (core resolves only --remote/--center/XDG, the
config tiers — §0 keeps it local-only), the tracker discovers the project-repo
origin as its single fallback ([effective_remote], resolved once at the
[handle] dispatch point). Each handler no-ops in a stealth repo — no explicit
remote AND no discoverable origin, or a binding DECLARED stealth (the landing
task_remote sentinel, written by bl prime --stealth and re-derived by core
on every op, bl-9df0) — the structural opt-out (§12).
Structs§
- Binding
- §7 binding — where the op is happening, from the tracker’s seat.
remoteis absent in a stealth (no-remote) repo, which is the tracker’s whole branch point: no remote ⇒ nothing to talk to.stealthis the §12 declared opt-out (the landingtask_remotesentinel, derived by core per op — bl-9df0): it makes the no-remote read DECLARED rather than inferred, suppressing evenorigindiscovery (absent on every ordinary payload, so it defaultsfalse).storeis the STORE checkout it fetches/pushestasks_branchagainst (§2);landingis theballs/configcheckout theinstall/preconfig fetch targets (§6/§13) and the W2 gap’s durable-ladder read (bl-9df0 — every other handler ignores it, so it defaults empty);invocation_pathlocates the project repo whoseoriginis the implicit bottom tier (§12). - Env
- The host-resolved environment the binary edge hands the tracker: the XDG roots that locate this checkout’s clone bundle (§1). No env reads in the lib — the edge resolves them once (the bl-bfa8 rule) and passes them in.
Functions§
- run
- The tracker entrypoint: dispatch
args(protocol, or<op> <phase>with the §7 payload oninput), returning the process exit code. A handler error is logged to stderr and becomes exit1— the §6 “non-zero aborts the op”.