[Review] detectExcitementCycles bag-of-words picks up common English words ('time', 'meeting', 'just') as 'excitement keywords' #185
Labels
No labels
blocked:depends-p1
blocked:gate-research
blocked:lint-failed
blocked:needs-decision
blocked:needs-human
blocked:verify-failed
bug
data-loss
documentation
enhancement
feature-request
in-progress
needs-decompose
needs-triage
pwa
quickfix
security
security/high
security/medium
test
test-coverage
triage-approved
vault
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/kimi_agent_kin_app_sync#185
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding
src/lib/intimate-state-engine.ts:328-330:This takes every word ≥4 chars from
notesand adds it to a topic bag that gets counted for excitement cycles. There's no stop-word list (despite the new STOP_WORDS set added in #166 tosrc/lib/utils.ts).Common English words ("just", "with", "that", "have", "from", "they", "would", "could", "meeting", "their", "there") all qualify and accumulate. Combined with the positive-keyword check at line 322 (
mood.includes(kw) || notes.includes(kw)for words like "great", "amazing"), if a user writes "we had a great time but I was just tired from the meeting", the bag accumulatestime,just,tired,meeting,from— so "time", "meeting", "tired" all become excitement keywords. The insight surfaces as "You've been particularly energized about 'meeting' with Bob."The 5-keyword output cap (line 354) masks the noise, but the ranking
sort by intensityScore descsurfaces whichever has the highest count + recency, which is essentially random for common words.Suggested fix
Reuse the
STOP_WORDSset added in #166 (src/lib/utils.ts) for the bag filter:Or scope the bag to
topics(which is curated by the user at log time) and skip the notes-token path entirely:Option A is more conservative (less risk of dropping legitimate excitement keywords). Option B is more aggressive (stops the noise at the source).
Severity
Medium. UX-visible bug. The insight text is user-facing and confusing when it surfaces common words.
Discovered by
Manual code review pass over #168, 2026-09-14.
Closing as already-fixed.
Location: uncommitted worktree + commit
ccc9ce4(Apply changes from kilo-gsd.py run for Mark/kimi_agent_kin_app_sync#188)Change: excitement-cycle keyword noise: removed
i.notes.splittokenization, bag now uses curatedtopicsonlyThe chat-agent code review read against a stale HEAD and reported this issue as open. The fix was already in place (committed for #184, in the kilo-gsd worktree for #185) when the review started.
Stash + worktree state at session start:
0854652(fix #184), not4fe2244as the session began assuming.No work to do. Re-classify if either fix needs to be re-merged to a different branch.