router: add CapabilitySelection field to Decision (slice 6b)
Authoritative record of which executable capability matched, separate from Decision.Intent (what kind of turn) and ActionCandidate (downstream action artifact). Decision.Slots.Fn/Args/HasFn remain as compatibility representations populated from this selection.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user