nsmcp::CodexQuestionRun method recordUsage (protected)

 <instance of nsmcp::CodexQuestionRun[i]> recordUsage thread \
    counters

Defined in /usr/local/ns/tcl/nsmcp/question-backend.tcl

Parameters:
thread (required)
counters (required)

Testcases:
No testcase defined.
Source code:
if {!${:usageActive}} {
    set :usageBeforeTurn [dict create thread $thread counters $counters]
    return
}
set :usageTotals $counters
set questionUsage [dict create source codex scope turn available false]
if {!${:usageBaselineKnown}} {
    dict set questionUsage reason missing-baseline
} else {
    set delta {}
    dict for {key value} $counters {
        if {[dict exists ${:usageBaseline} $key]} {
            set previous [dict get ${:usageBaseline} $key]
            if {$value < $previous} {set :usageIssue counter-reset}
            dict set delta $key [expr {$value-$previous}]
        }
    }
    if {${:usageIssue} ne ""} {
        dict set questionUsage reason ${:usageIssue}
    } elseif {$delta eq ""} {
        dict set questionUsage reason missing-comparable-counters
    } else {
        set questionUsage [dict merge $questionUsage $delta {available true}]
    }
}
# Persist observations even when a later timeout interrupts the turn.
# Such a baseline is not reusable without a fresh pre-turn snapshot.
:emit [dict create type state state [:continuationState]]
:emit [dict create type usage usage [dict merge $counters {scope conversation-cumulative source codex}]]
:emit [dict create type questionUsage usage $questionUsage]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: