{{template "shellTop" "trace"}}

Rule Trace

{{.Tick.Now | ago}} — winner: {{if .Tick.Winner}}{{.Tick.Winner}}{{else}}nothing fired{{end}}
{{range .Tick.Rules}}{{end}}
rulesevpredicategateblocked bydetailselectedlost to
{{.RuleName}} {{.Severity}} {{.PredicateResult}} {{.GateResult}} {{.GateBlockedBy}}
gate snooze_until: {{.GateDetail.SnoozeUntil | fmtTime}}
cooldown_until: {{.GateDetail.CooldownUntil | fmtTime}}
quiet_hours: {{.GateDetail.QuietHours}}
calendar_busy: {{.GateDetail.CalendarBusy}}
presence: {{.GateDetail.Presence}}
inert_keys_missing: {{if .GateDetail.InertKeysMissing}}{{join .GateDetail.InertKeysMissing ", "}}{{else}}—{{end}}
{{.WasSelected}} {{.LostTo}}

Turn Decisions

Who claimed each utterance, who lost it, and who was never asked. In memory, newest first, cleared on restart.
{{if not .Turns}}
no turn has run since the daemon started
{{end}} {{range .Turns}}
{{.Utterance}}{{if .Winner}}{{.Winner}}{{else}}nobody{{end}} {{.Ts | ago}}
{{range .Claims}}{{end}}
stageclaimantwould have beenscoreoutcomewhy
{{.Stage}} {{.Claimant}} {{if .Intent}}{{.Intent}}{{else}}—{{end}} {{if .HasScore}}{{printf "%.3f" .Score}}{{else}}—{{end}} {{.Outcome}} {{.Reason}}
{{end}} {{template "shellBottom"}}