Matching & ResourceActors
Matching
Matching resolves each Bindle resource against Resource Definitions and provider capability to choose where and how a resource is realized. It is the placement brain inside plan/up — not a separate product noun beside Gatekeeper.
Flow (conceptual):
- Resource collection produces provider-agnostic manifest IR.
- Each node lowers to ResourceIntent (FinOps/routing-friendly, provider-neutral).
- Matching + policy + cost solve a DeploymentPlan DAG.
- Gatekeeper admits or denies the plan.
- ResourceActors converge desired → actual.
ResourceActor
One ResourceActor (controller-style grain) per resource owns reconciliation:
| State (conceptual) | Meaning |
|---|---|
| Desired | From DeploymentPlan |
| Progressing | Executor in flight |
| Ready | Provider reports healthy |
| Failed | Past no-go threshold → compensation choreography |
| Drifted | Actual ≠ desired → governed remediation |
Choreography over orchestration
- Independent subtrees provision concurrently.
- No single coordinator SPOF for every resource.
- Compensation is also choreographed:
resource.Failedpast threshold →deployment.RolledBackfans out. - DeploymentView projection reconstructs the saga graph for humans/agents.
Executors
Sandboxed runners (Firecracker-class) apply IaC/builds with short-lived scoped tokens — no ambient cloud creds. Stdout streams via Streamer; state events hit the control log.
Continuous re-placement
Dispatcher re-enters Matching when price/policy/reliability signals change. Same plan → gate → converge path as human hobo up — migration is not a special engine.
Related
Control plane · Conductor · Continuous migration · Event families