mavend: run the persona checks over the clarify prose, document the proposal cooldown

clarifyExpiredVariants and clarifyGaveUp are hand-written Russian that the
phrasing eval never sees, because they never pass through the phraser. They
carry feminine self-reference and a plain imperative, and they are the lines a
later edit reaches for a synonym in. A table test now runs the eval's own
feminine, his-gender, address and cringe checks over them and over
clarifyQuestions. The apology clause of the cringe check is skipped with its
reason written down: it exists so a greenlit nudge is not undercut, and a reply
to a request she failed to parse is the opposite case.

Also two notes and no behaviour change. announceProposal now says what its
cooldown does and does not do: detectAndPropose returns non-nil only for a newly
created row, so the first tick over a populated history announces one pattern
and silences the rest permanently, and the cooldown only spaces genuinely new
pairs found later. A queue would be needed for "one per day until each is
mentioned". The duplicated Cooldown default is explained as cover for a tickLoop
built in a test without going through Load. The -reembed flag help says the
daemon does not answer until the backfill finishes.

Found in review of #50, #54.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TrVSBKe3RFDF4fGYKWYQnX
This commit is contained in:
kami
2026-08-01 14:05:59 +04:00
parent 4757ff6d7b
commit fa799bc051
3 changed files with 59 additions and 1 deletions
+1 -1
View File
@@ -122,7 +122,7 @@ func main() {
func run(args []string) error {
cfgPath := flag.String("config", defaultConfigPath(), "path to mavend JSON config")
wrappedKeyPath := flag.String("wrapped-key-file", "", "path to wrapped encryption key blob (enables cold-start unlock)")
reembed := flag.Bool("reembed", false, "re-embed every stored note and fact with the configured embedder, then serve normally (run once after an embedder swap)")
reembed := flag.Bool("reembed", false, "re-embed every stored note and fact with the configured embedder, then serve normally (run once after an embedder swap; the daemon does not answer until it finishes)")
flag.CommandLine.Parse(args)
reembedOnStart = *reembed
cfg, err := config.Load(*cfgPath)