diff --git a/internal/router/intent.go b/internal/router/intent.go index dde57c0..36d1e30 100644 --- a/internal/router/intent.go +++ b/internal/router/intent.go @@ -150,6 +150,16 @@ type Decision struct { Slots Slots Clarify bool // stage 3: below threshold — ask, don't guess + // CapabilitySelection — the authoritative result of the capability- + // selection stage. Says what executable capability matched, separate + // from what kind of turn this is (Decision.Intent) and separate from + // the downstream action artifact (ActionCandidate). + // + // Decision.Slots.Fn/Args/HasFn remain as compatibility representations + // populated FROM this selection. Later action execution must read the + // candidate produced from this selection, not the compatibility fields. + CapabilitySelection CapabilitySelection + // Producer — which cascade stage produced this decision. Recorded for // observability so a trace can name the winning component directly. Producer RouteProducer