the ring reads out over ipc as turn decisions (V-564)
Same shape as TickTrace and RecentEvents: a bounded daemon ring, so the store adapter refuses rather than pretending a table exists. No voice wiring means an empty list and not an error, because a box with no voice path has had no turns to arbitrate.
This commit is contained in:
@@ -836,6 +836,30 @@ type TickTrace struct {
|
||||
Rules []RuleTrace `json:"rules"`
|
||||
}
|
||||
|
||||
// --- Turn decision trace DTOs (V-564) ---
|
||||
|
||||
// TurnClaim — one claimant's say on one turn: who, at which stage, what it
|
||||
// would have made the turn, the score it reported if it has one, and what
|
||||
// happened to the claim. Same shape as RuleTrace above and for the same reason:
|
||||
// a winner alone does not explain an arbitration, the losers do.
|
||||
type TurnClaim struct {
|
||||
Stage string `json:"stage"`
|
||||
Claimant string `json:"claimant"`
|
||||
Intent string `json:"intent,omitempty"`
|
||||
Score float64 `json:"score,omitempty"`
|
||||
HasScore bool `json:"has_score,omitempty"`
|
||||
Outcome string `json:"outcome"`
|
||||
Reason string `json:"reason,omitempty"`
|
||||
}
|
||||
|
||||
// TurnDecision — one turn's arbitration, newest first when read as a list.
|
||||
type TurnDecision struct {
|
||||
Ts time.Time `json:"ts"`
|
||||
Utterance string `json:"utterance"`
|
||||
Winner string `json:"winner"`
|
||||
Claims []TurnClaim `json:"claims"`
|
||||
}
|
||||
|
||||
// MorningRoutineItem — one checklist entry's current state.
|
||||
type MorningRoutineItem struct {
|
||||
Key string `json:"key"`
|
||||
|
||||
Reference in New Issue
Block a user