Skip to content

doc: design note — one fleet multicall binary (epic #5412 step 0) - #5425

Merged
developing-today[bot] merged 1 commit into
mainfrom
design/fleet-multicall-epic
Nov 4, 2026
Merged

developing-today[bot] merged 1 commit into
mainfrom
design/fleet-multicall-epic

Conversation

@developing-today

@developing-today developing-today Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Step 0 (design) for epic #5412 — design only, no implementation. This PR stays open for Drew's go/no-go; do not merge.

Adds doc/2026-11-04T11-45-48Z_design_fleet_multicall_binary/ — the design note for consolidating the fleet's tools into one fleet multicall binary with capability-selected build variants, following the atlas epic's design-note pattern (#5348).

What the note settles (with a recommendation on each)

  • Census first: the broker family today has three source copies — the canonical workspace in the sandbox's ~/tools/fleet-brokers, a vendored copy in dezren39/nix PR ops(dashboard): daily backups of dashboard/orchestration logs + stores — laptop, Google Drive, R2 #1459 (still OPEN, not merged), and the laptop's ~/fleet-brokers/bin — and none of them is in this repo. repo-queue has no --help/--version today. "Dispatch" is the pm-stack TypeScript suite + the steward cron, not a CLI. The laptop-agent daemon is Python. The note flags each contradiction with the epic's framing and designs from the ground truth.
  • Workspace: pkgs/fleet/ in this repo (atlas pattern) — registry / config / secrets / proxy-proto platform crates + queue, dispatch, search, proxy domain crates.
  • Variants: three shipped builds — fleet (full), fleet-serve, fleet-connect (tiny; ≤2 MiB hard budget enforced as a nix build gate; static musl proposed, decided by a step-1 measurement).
  • Proxy protocol: today's length-prefixed JSON framing kept, plus a versioned hello/capability frame; broker accepts protocol majors N and N−1; PATH shims are regenerated from the negotiated services map on every connect — the anti-drift mechanism for the "repo-queue on PATH the moment you're connected" expectation.
  • Multicall + stubs: full argv0 map (repo-queue, queue-broker, secrets-broker, laptop-agent, atlas-search, laptop-agent-broker); the full domain registry compiles into every variant; the not-included stub exits 69 (EX_UNAVAILABLE) — justified against the existing code table (2 clap/validation, 3 transport-down, 127 not-found), so agents branch reroute (69) vs repair (3).
  • Scope calls: pkgs/id stays its own binary; broker daemons become fleet serve <role> subcommands with one unit per role; the laptop-agent daemon stays Python in v1 (fleet manages lifecycle); dispatch joins as a thin client over pm-stack — pm-stack is not rewritten.
  • Migration: additive-first — skeleton → queue pilot → proxy → dispatch → search last (after Epic: Atlas as a Rust binary + multi-client search service (b+c) #5350 step 6) — with per-domain rollback (config-disable → symlink/unit re-point → package rollback) and one version for all variants from one source tree.

Decisions Drew must make (note §8)

  • D1 — Source home pkgs/fleet/ in code + close dezren39/nix PR ops(dashboard): daily backups of dashboard/orchestration logs + stores — laptop, Google Drive, R2 #1459, porting its home-module pattern into code's home tree (vs. nix keeps broker packaging).
  • D2 — Three shipped variants vs. two (full/connect).
  • D3 — Stub exit code 69.
  • D4 — pkgs/id stays separate.
  • D5 — laptop-agent daemon stays Python in v1.
  • D6 — Dispatch = thin client domain only in v1.
  • D7 — fleet-connect linkage: musl-static on the step-1 measurement, or pre-commit glibc-dynamic.
  • D8 — Proxy framing kept + hello frame + N/N−1 window vs. a framing redesign in this epic.

A go with D1–D6 ruled lets the step issues be filed immediately; each D flips independently without breaking the rest of the design.


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.

Census-first design: workspace + crate layout in pkgs/fleet, the
three-variant capability matrix, proxy protocol versioning, the
argv0 map and the 69 (EX_UNAVAILABLE) stub contract, domain scope
calls (id stays separate, laptop-agent stays Python in v1, dispatch
thin over pm-stack), additive-first migration, and the D1-D8
go/no-go list for Drew. Design only; no implementation.
@coderabbitai

coderabbitai Bot commented Nov 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5b9e2e73-824a-4ef0-86d4-f20d42959b32

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants