Bläddra i källkod

docs(skills): fleetflow — communication model, clean-room repo seeding, codex skill-load quirk

First-real-run learnings: hub-and-spoke communication made explicit in the
lifecycle (FINAL REPLY -> ff-collect -> embedded in next packet); standalone
target repo + vendor-specs-into-repo doctrine for clean-room/benchmark runs;
codex reads ~/.agents/skills and rejects descriptions >1024 chars (non-fatal).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0xDarkMatter 2 veckor sedan
förälder
incheckning
f73bb508b5
2 ändrade filer med 24 tillägg och 0 borttagningar
  1. 18 0
      skills/fleetflow/SKILL.md
  2. 6 0
      skills/fleetflow/references/worker-contracts.md

+ 18 - 0
skills/fleetflow/SKILL.md

@@ -95,6 +95,24 @@ plan packets → ff-doctor → ff-spawn (×N, background) → ff-collect (gate)
 5. **Land** through fleet-ops (sequential, test-gated). Delete lanes and
    `.fleetflow/<run>/` after landing.
 
+**Inter-worker communication is hub-and-spoke, by design.** Workers never talk
+to each other — no shared memory, no message bus, no sideband files (lanes are
+isolated worktrees). The only channel is the native tool's: a worker's FINAL
+REPLY returns through `ff-collect` to the orchestrator, which embeds it in a
+later packet (the `prevResult`-into-next-prompt handoff; see
+[insights §3/§7](references/native-workflow-insights.md)). A judge packet is
+just the collected builder outputs pasted in. If a stage needs *all* sibling
+results, that is a barrier — collect everything first, then compose. (True
+peer-to-peer between long-lived workers is out of scope; that's what a message
+bus like pigeon is for.)
+
+**Clean-room / benchmark runs get their own target repo.** Lanes are worktrees
+*of some repo* — don't graft a build experiment onto an unrelated repo's object
+store. Seed a standalone repo (e.g. under `X:\Benching`), and **vendor any
+external spec INTO it** (`spec/…`) so packets reference it by *relative* path —
+the guard preamble forbids workers building absolute paths, and Codex's
+sandbox is confined to the lane, so out-of-repo specs are unreadable anyway.
+
 **Resume.** The journal (`.fleetflow/<run>/journal.jsonl`) uses the native
 tool's mechanism: each spawn is keyed by a content hash of
 `(brain, prompt, opts)`. Re-running `ff-spawn` with an unchanged packet returns

+ 6 - 0
skills/fleetflow/references/worker-contracts.md

@@ -52,6 +52,12 @@ OpenAI's agent harness, non-interactive. Flag map (codex-cli 0.125.0):
 - **Character**: a genuinely different model *and* toolchain — its highest
   value in fleetflow is dissent (refuter/judge lanes) and independent second
   implementations, not bulk mechanical work (GLM is cheaper there).
+- **Skill-loading quirk** (observed 2026-07-05): codex reads Claude-format
+  skills from `~/.agents/skills/` at session start and rejects any whose
+  description exceeds **1024 chars** (`failed to load skill … exceeds maximum
+  length`) — non-fatal (logged to stderr, run continues), so don't gate on a
+  clean stderr; `ff-collect` correctly ignores it. Keep skill descriptions
+  ≤1024 chars if you want codex workers to load them.
 
 ## 3. Anthropic workers (`claude -p`)