Skip to main content

Module tracker

Module tracker 

Source
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. remote is absent in a stealth (no-remote) repo, which is the tracker’s whole branch point: no remote ⇒ nothing to talk to. stealth is the §12 declared opt-out (the landing task_remote sentinel, derived by core per op — bl-9df0): it makes the no-remote read DECLARED rather than inferred, suppressing even origin discovery (absent on every ordinary payload, so it defaults false). store is the STORE checkout it fetches/pushes tasks_branch against (§2); landing is the balls/config checkout the install/pre config fetch targets (§6/§13) and the W2 gap’s durable-ladder read (bl-9df0 — every other handler ignores it, so it defaults empty); invocation_path locates the project repo whose origin is 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 on input), returning the process exit code. A handler error is logged to stderr and becomes exit 1 — the §6 “non-zero aborts the op”.