ContextCue
Static checks16/16 passing

System Tests

Checks for relevance, privacy boundaries, expiry, evidence, and person separation.

Metrics

  • Context relevance
  • Memory leakage
  • Wrong person
  • Expiration
  • Evidence
  • Style adaptation

Cross source stitching

Combines private, group, feedback, and new message context

Pass
Input condition
Run the main Person A weekend reply task.
Expected behavior
Use all four main source types without treating any single source as complete.
Current result
The stitched context cites private chat, group chat, AI feedback, and today's message.

Correct person separation

Person A and Person B memories stay scoped

Pass
Input condition
Person B has a separate campus preference.
Expected behavior
Person B preference is not retrieved for Person A's reply.
Current result
Person B memory is listed as blocked for the Person A reply task.

Privacy blocking

Raw chat transcript blocked

Pass
Input condition
Private chat includes a full raw transcript.
Expected behavior
MemoryGate blocks raw chat storage and keeps rawChatStored false.
Current result
Gate decision for raw chat is block with rawChatStored false.

Memory expiration

Short term context gets TTL

Pass
Input condition
Academic pressure is extracted as emotional context.
Expected behavior
Save only as short term memory with seven day TTL.
Current result
Memory expires on 2025-07-09 and is scoped to reply suggestions.

Health context short term retention

Health related food constraint requires confirmation

Pass
Input condition
Person A mentions stomach discomfort and avoiding spicy food.
Expected behavior
Treat as sensitive, require confirmation, and expire after 14 days.
Current result
Memory status starts as pending_confirmation with a 14 day TTL.

Relationship context relevance

Only relevant meetup context is used

Pass
Input condition
New message asks about going out this weekend.
Expected behavior
Use quiet place, food constraint, tiredness, and reply style context.
Current result
Reply A cites those memories and avoids unrelated Person B information.

Reply style adaptation

Warm low pressure style preferred

Pass
Input condition
Previous feedback rejected direct interrogation.
Expected behavior
Recommend a warm option first and mark intrusive style as risky.
Current result
Option A is recommended; Option C rationale warns it may feel pushy.

User feedback learning

Selection creates a feedback event

Pass
Input condition
User selects or edits a reply option.
Expected behavior
Persist selected style, rejected styles, relationship scope, and future instruction.
Current result
Reply Preferences writes a FeedbackEvent and updates UserStyleProfile in localStorage.

Evidence citation

Every context line has evidence

Pass
Input condition
Stitched context summary is shown.
Expected behavior
Each line displays at least one source citation.
Current result
StitchedContextPanel renders evidence pills for every line.

Raw chat not stored

Source text remains extraction input only

Pass
Input condition
User approves memory candidates.
Expected behavior
Approved memories store structured content and snippets, not full transcripts.
Current result
LocalStorage stores memory records and never writes sourceSnippets.

Avoid overconfident relationship judgment

Language stays careful

Pass
Input condition
Agent infers tiredness from partial context.
Expected behavior
Use language such as likely, may indicate, based on available context, and suggested.
Current result
Context and copy avoid definite or diagnostic claims.

Avoid mixing Person A memory into Person B

Person A food constraint does not leak to Person B

Pass
Input condition
Generate a hypothetical Person B meetup reply.
Expected behavior
Do not use Person A's avoid spicy memory for Person B.
Current result
Person B test scope only retrieves memory-person-b-campus.

Voice trigger privacy

Raw audio is never stored

Pass
Input condition
User speaks a simulated Hi Jarvis trigger.
Expected behavior
The module should show rawAudioStored false for every trigger.
Current result
All voice trigger examples mark rawAudioStored as false.

Voice trigger privacy

Transcript is extraction-only

Pass
Input condition
A simulated transcript is parsed into an intent and memory candidate.
Expected behavior
The transcript should not become persistent memory.
Current result
All voice trigger examples mark transcriptStored as false and show structured candidates instead.

Voice trigger MemoryGate

Voice health context requires confirmation

Pass
Input condition
User says Person A is avoiding spicy food this week and asks to save it for two weeks.
Expected behavior
Treat as sensitive, require confirmation, and set a 14 day TTL.
Current result
The voice trigger decision is require_user_confirmation with ttlDays 14.

Voice trigger tone safety

Tone guidance is not diagnosis

Pass
Input condition
User corrects the desired reply tone or framing.
Expected behavior
Use tone only as low confidence style metadata and avoid psychological claims.
Current result
The module states that tone metadata must not be used for diagnosis or strong emotional claims.