{{define "content"}} {{$m := .Data.Mind}}{{$v := .Data.View}}{{$st := $v.State}}

{{$m.DisplayName}} global workspace

What the mind is holding and why it won attention. Every candidate's score is arithmetic you can check. connecting…

{{template "mode_badge" $st.Mode}}{{if not $v.Running}}runtime not running{{end}}
{{template "mind_tabs" (dict "M" $m "Active" "workspace")}}
Cycle
{{$st.Cycle}}
{{if $st.LastCycleAt.IsZero}}never run{{else}}last {{ago $st.LastCycleAt}}{{end}}
Workspace
{{len $st.Workspace}} / {{$m.Config.WorkspaceCapacity}}
thoughts held
Working memory
{{len $st.WorkingMemory}} / {{$m.Config.WorkingMemoryCapacity}}
decay ×{{$m.Config.WorkingMemoryDecay}} per cycle
Last stimulus
{{if $st.LastStimulus.IsZero}}—{{else}}{{ago $st.LastStimulus}}{{end}}
external input

Workspace contents ranked by score × activation

{{if $st.Workspace}} {{range $i, $t := $st.Workspace}}{{end}}
#ThoughtProcessScoreAct.Why
{{inc $i}} {{if $t.EventID}}{{$t.Summary}}{{else}}{{$t.Summary}}{{end}}
{{$t.Kind}} · cycle {{$t.AdmittedCycle}}{{if $t.Subject}} · {{trunc $t.Subject 18}}{{end}}
{{$t.Process}} {{conf $t.Score}} {{conf $t.Activation}} {{template "breakdown" $t.Breakdown}}
{{else}}

Empty. Inject an observation or talk to the mind to give it something to attend to.

{{end}}

Working memory actively maintained items

{{if $st.WorkingMemory}}
    {{range $st.WorkingMemory}}
  • {{.Kind}}
    {{.Content}}
    since cycle {{.AddedCycle}} · {{ago .TouchedAt}}{{if .SourceEvent}} · source{{end}}
  • {{end}}
{{else}}

Nothing held.

{{end}}

Last cycle: candidates and their fate {{len $v.Candidates}} scored{{if $st.LastCycleID}} · all events of this cycle{{end}}

{{if $v.Candidates}} {{range $v.Candidates}}{{$fate := index .Metadata "fate"}}{{end}}
FateCandidateProcessTotalBreakdownReason
{{$fate}} {{candSummary .Summary}} {{index .Metadata "process"}} · {{index .Metadata "kind"}} {{conf .Salience}} {{template "breakdown_json" .Payload}} {{payloadField .Payload "reason"}}
{{else}}

No candidates scored yet.

{{end}}
{{if .Principal.User.Role.AtLeast "operator"}}

Controls

{{if eq $st.Mode "paused"}}{{else}}{{end}}

Pausing stops cycles; events still accumulate and are processed on resume. Reset clears only transient state and is recorded as an operator action.

{{if .Principal.User.Role.AtLeast "administrator"}}

Attention weights per feature; score = Σ value×weight / Σ weight

{{range $f := features}}{{end}}
{{end}}
{{end}} {{end}} {{define "mode_badge"}}{{if eq . "awake"}}awake{{else if eq . "paused"}}paused{{else if eq . "idle"}}idle{{else}}{{.}}{{end}}{{end}} {{define "breakdown"}}
{{range .Terms}}{{if gt .Contribution 0.0}}{{end}}{{end}}
{{end}} {{define "breakdown_json"}}{{with breakdownOf .}}{{template "breakdown" .}}{{end}}{{end}}