Skip to content

Composition seams

ELI5: Where two protocols plug together — the risky edges. The flywheel has four pillars; some repos are intentionally outside the loop.

In-scope flywheel seams

Seam From → To Mechanism
Fee ingress Coil → CoilFeeRouter USDC harvest
Keep funding CoilFeeRouter → CoilMaker / vault keep_bps deposit path
Surplus CoilFeeRouter → TareEngine Swap + donate
Surplus split Engine → SurplusSplitter → sTARE + Keep Skim
Governance GaugeController → GaugeWeightRouter → Keep set_allocations
Bribes CoilFeeRouter → BribeDistributor gauge_bps USDC
Market making CoilMakerStrategy → Coil EIP-1271 intents
flowchart TD
    subgraph inScope [In-scope four pillars]
        TARE[TARE]
        Keep[Keep]
        Coil[Coil]
        veForge[veForge]
    end
    Coil -->|fees| TARE
    Coil -->|keep_bps| Keep
    Coil -->|gauge_bps| veForge
    TARE -->|surplus split| Keep
    veForge -->|allocations| Keep
    Keep -->|CoilMaker| Coil

Out of scope (by design)

Repo Reason
tribute/ Standalone payments — no Sepolia binding
SnekSentry/ Monitoring tooling — not value path
AGENTS_FLYWHEEL/ Read-only security agents

Known composition fixes

ID Fix
COMP-2 ALLOCATOR_ROLE on vault — router cannot full manager
COMP-4 Document out-of-scope repos explicitly
FMR-002 CoilFeeRouter redeploy — correct keep deposit path

Verification tooling

  • Composition auditorAGENTS_FLYWHEEL/agents/security/composition_auditor/
  • deploy_verifier — address drift vs manifests
  • stresssim — adversarial economic scenarios

What can go wrong

Seam risks

  • Bare USDC transfer to vault without deposit — does not credit total_idle (FLYWHEEL 2.0 addressed in router)
  • Stale address in marketing HTML vs on-chain manifest
  • Gauge epoch lag — votes apply weekly, not instantly

See internal review: reviews/composition-review-2026-06/