6b3749f5a2
The three persona checks score what Variants() returns, and Variants() reads the JSON. The hardcoded Go floor strings were in no scored set, so the persona was unchecked precisely when the Go code rather than the model is doing the talking. Those floors are what speaks when the model is unreachable, and the CPT that would fix the persona in the model has not shipped. The floors live in nine files, not the four I named: acts.go holds the largest set at 35 lines and was not on my list. prompts.go, replier.go and llmphraser.go hold Russian written FOR the model, which must not be scored -- ruleTopics says 'он давно не пил воду', correct as prompt input and a CheckAddress failure on sight. TestGoFloorPersona reads the maps whole and calls the composing functions, so a new map entry is scored with no edit. TestGoFloorCoverage parses the package with go/ast and fails on any Russian literal that neither reached that corpus nor sits inside a declared prompt builder. The exemption list is of builders rather than strings, so the default for a literal added anywhere else is 'must be scored'. Named hole: a new literal that is a substring of an already-scored line passes silently. No existing floor violates the persona. The hand sweep was right; this makes it a guard. (V-621)