File size: 15,526 Bytes
817dc1b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
{
 "model": "CludeMem-E4B",
 "about": "One entry per memory operation. Send the task's system_prompt as the system message and the input, formatted as user_format describes, as the user message; the reply is one JSON object with output_keys. output_values lists the values those fields take in the training targets. The examples are test items whose inputs do not occur in the training data; example.output is the reference reply.",
 "chat_template": {
  "apply_chat_template_kwargs": {
   "add_generation_prompt": true,
   "enable_thinking": true
  },
  "rendered_form": "<bos><|turn>system\n<|think|>\n{system}<turn|>\n<|turn>user\n{user}<turn|>\n<|turn>model\n",
  "note": "enable_thinking=True reproduces the training prompt: a '<|think|>' line opens the system turn. The model does not emit a thinking block; it replies with one JSON object. transformers' apply_chat_template omits the line unless enable_thinking=True is passed.",
  "tokenizers_checked": [
   "google/gemma-4-e4b-it",
   "unsloth/gemma-4-E4B-it"
  ]
 },
 "decoding": "greedy (temperature 0)",
 "tasks": {
  "CLASSIFY": {
   "system_prompt": "Classify the memory. Output JSON: {type, importance (0-1), tags[], concepts[], emotional_valence (-1..1)}.",
   "user_format": {
    "template": "{memory text}",
    "description": "One memory statement as free text on a single line."
   },
   "output_keys": [
    "type",
    "importance",
    "tags",
    "concepts",
    "emotional_valence"
   ],
   "output_values": {
    "type": [
     "episodic",
     "semantic"
    ],
    "importance": [
     0.3,
     0.4,
     0.8,
     0.6,
     0.5,
     0.85,
     0.9
    ],
    "emotional_valence": [
     0.2,
     0,
     -0.3,
     0.3,
     0.5,
     -0.4
    ]
   },
   "example": {
    "system": "Classify the memory. Output JSON: {type, importance (0-1), tags[], concepts[], emotional_valence (-1..1)}.",
    "user": "By the way, around then on 2026-02-16, Priya spent the afternoon reviewing the Polaris roadmap, triaged the mobile backlog, and noted follow-ups for the data sync. It came up while we were chatting.",
    "output": {
     "type": "episodic",
     "importance": 0.3,
     "tags": [
      "event",
      "task",
      "priya"
     ],
     "concepts": [
      "event",
      "task"
     ],
     "emotional_valence": 0.2
    }
   }
  },
  "EXTRACT": {
   "system_prompt": "Extract atomic memories from the text. Output JSON: {memories:[{content, summary, type}]}.",
   "user_format": {
    "template": "{Speaker}: {utterance}\\n{Speaker}: {utterance}\\n...",
    "description": "A dialogue block, one 'Name: utterance' line per turn. Some rows mix in non-dialogue lines (log lines, markdown tables, tool-call JSON, code fences) that carry no memory."
   },
   "output_keys": [
    "memories"
   ],
   "output_values": {
    "memories[].type": [
     "episodic",
     "semantic"
    ]
   },
   "example": {
    "system": "Extract atomic memories from the text. Output JSON: {memories:[{content, summary, type}]}.",
    "user": "Tomas: Actually, scratch what I said before — tomas now prefers matcha, having switched from cola.\nTomas: By the way, around then tomas started a new job at Brightwell on 2026-07-18. It came up while we were chatting.\n{\"tool\":\"search\",\"status\":\"ok\",\"hits\":1}",
    "output": {
     "memories": [
      {
       "content": "Tomas now prefers matcha, having switched from cola.",
       "summary": "Tomas now prefers matcha, having switched from cola.",
       "type": "semantic"
      },
      {
       "content": "Tomas started a new job at Brightwell on 2026-07-18.",
       "summary": "Tomas started a new job at Brightwell on 2026-07-18.",
       "type": "episodic"
      }
     ]
    }
   }
  },
  "ENTITIES": {
   "system_prompt": "Extract entities and relations. Output JSON: {entities:[{name,type,aliases}], relations:[{head,type,tail}]}.",
   "user_format": {
    "template": "{memory text}",
    "description": "One memory statement as free text on a single line."
   },
   "output_keys": [
    "entities",
    "relations"
   ],
   "output_values": {
    "entities[].type": [
     "person",
     "location",
     "organization",
     "project"
    ],
    "relations[].type": [
     "lives_in",
     "works_at",
     "leads"
    ]
   },
   "example": {
    "system": "Extract entities and relations. Output JSON: {entities:[{name,type,aliases}], relations:[{head,type,tail}]}.",
    "user": "Actually, scratch what I said before — on 2026-05-02, Theo spent the afternoon reviewing the Beacon roadmap, triaged the mobile backlog, and noted follow-ups for the product sync.",
    "output": {
     "entities": [
      {
       "name": "Theo",
       "type": "person",
       "aliases": []
      }
     ],
     "relations": []
    }
   }
  },
  "TEMPORAL": {
   "system_prompt": "Extract the event date and its temporal links to the known events. Output JSON: {event_date, precision, links:[{type,target}]}.",
   "user_format": {
    "template": "Today is {YYYY-MM-DD}.\\nNew event [fN]: {text}\\nKnown events:\\n[fN] {text} ({YYYY-MM-DD})\\n...",
    "description": "Reference date, the new event with its id, then the known events, each followed by its date in parentheses. A few rows have no known events (the 'Known events:' block is absent)."
   },
   "output_keys": [
    "event_date",
    "precision",
    "links"
   ],
   "output_values": {
    "precision": [
     "day"
    ],
    "links[].type": [
     "happens_before",
     "happens_after"
    ]
   },
   "example": {
    "system": "Extract the event date and its temporal links to the known events. Output JSON: {event_date, precision, links:[{type,target}]}.",
    "user": "Today is 2026-06-01.\nNew event [f57]: I think on 2026-03-19, Nina spent the afternoon reviewing the Quartz roadmap, triaged the mobile backlog, and noted follow-ups for the data sync. At least that's my sense of it.\nKnown events:\n[f25] On 2026-03-01, Nina spent the afternoon reviewing the Beacon roadmap, triaged the infra backlog, and noted follow-ups for the data sync. (2026-03-01)\n[f41] On 2026-03-01, Nina spent the afternoon reviewing the Quartz roadmap, triaged the growth backlog, and noted follow-ups for the data sync. (2026-03-01)\n[f23] On 2026-03-10, Nina spent the afternoon reviewing the Sable roadmap, triaged the growth backlog, and noted follow-ups for the design sync. (2026-03-10)\n[f22] On 2026-03-24, Nina spent the afternoon reviewing the Quartz roadmap, triaged the mobile backlog, and noted follow-ups for the platform sync. (2026-03-24)\n[f14] On 2026-04-04, Nina spent the afternoon reviewing the Beacon roadmap, triaged the mobile backlog, and noted follow-ups for the ops sync. (2026-04-04)\n[f34] On 2026-04-06, Nina spent the afternoon reviewing the Echo roadmap, triaged the infra backlog, and noted follow-ups for the design sync. (2026-04-06)",
    "output": {
     "event_date": "2026-03-19",
     "precision": "day",
     "links": [
      {
       "type": "happens_after",
       "target": "f25"
      },
      {
       "type": "happens_after",
       "target": "f41"
      },
      {
       "type": "happens_after",
       "target": "f23"
      },
      {
       "type": "happens_before",
       "target": "f22"
      },
      {
       "type": "happens_before",
       "target": "f14"
      },
      {
       "type": "happens_before",
       "target": "f34"
      }
     ]
    }
   }
  },
  "CONSOLIDATE": {
   "system_prompt": "Consolidate the memories into evidence-linked insights. Output JSON: {insights:[{content, evidence[]}]}.",
   "user_format": {
    "template": "[fN] {memory}\\n[fN] {memory}\\n...",
    "description": "One memory per line, each prefixed with its id."
   },
   "output_keys": [
    "insights"
   ],
   "output_values": {},
   "example": {
    "system": "Consolidate the memories into evidence-linked insights. Output JSON: {insights:[{content, evidence[]}]}.",
    "user": "[f1] Kai lives in Austin.\n[f2] Kai moved to Seoul on 2026-10-21.\n[f3] Kai currently resides in Seoul.\n[f4] Kai enjoys living in Seoul.\n[f5] Kai prefers cola over matcha.\n[f6] Kai now prefers matcha, having switched from cola.\n[f7] Kai started a new job at Aperture on 2026-08-16.\n[f8] Kai is allergic to gluten.",
    "output": {
     "insights": [
      {
       "content": "Kai lives in Austin.",
       "evidence": [
        "f1"
       ]
      },
      {
       "content": "Kai currently resides in Seoul.",
       "evidence": [
        "f3"
       ]
      },
      {
       "content": "Kai enjoys living in Seoul.",
       "evidence": [
        "f4"
       ]
      },
      {
       "content": "Kai prefers cola over matcha.",
       "evidence": [
        "f5"
       ]
      },
      {
       "content": "Kai now prefers matcha, having switched from cola.",
       "evidence": [
        "f6"
       ]
      },
      {
       "content": "Kai is allergic to gluten.",
       "evidence": [
        "f8"
       ]
      }
     ]
    }
   }
  },
  "COMPACT": {
   "system_prompt": "Compact the old memories into one summary, preserving entities and the date range. Output JSON: {summary, preserved_entities[], date_range:{start,end}}.",
   "user_format": {
    "template": "[fN] {memory}\\n[fN] {memory}\\n...",
    "description": "One old memory per line, each prefixed with its id."
   },
   "output_keys": [
    "summary",
    "preserved_entities",
    "date_range"
   ],
   "output_values": {},
   "example": {
    "system": "Compact the old memories into one summary, preserving entities and the date range. Output JSON: {summary, preserved_entities[], date_range:{start,end}}.",
    "user": "[f2] Aisha moved to Lisbon on 2026-03-18.\n[f7] Aisha started a new job at Northstar on 2026-10-22.\n[f9] The Beacon project shipped on 2026-04-13.",
    "output": {
     "summary": "Aisha: 3 events covering Aisha, Lisbon, Northstar, Beacon.",
     "preserved_entities": [
      "Aisha",
      "Lisbon",
      "Northstar",
      "Beacon"
     ],
     "date_range": {
      "start": "2026-03-18",
      "end": "2026-10-22"
     }
    }
   }
  },
  "RECONCILE": {
   "system_prompt": "Decide how the two memories relate. Output JSON: {verdict, resolution, weaker_id, confidence}.",
   "user_format": {
    "template": "Memory A [fN]: {text}\\nMemory B [fN]: {text}",
    "description": "Exactly two lines, the two memories to compare with their ids. weaker_id in the output names one of these ids, or is null."
   },
   "output_keys": [
    "verdict",
    "resolution",
    "weaker_id",
    "confidence"
   ],
   "output_values": {
    "verdict": [
     "contradicts",
     "supersedes",
     "duplicate",
     "consistent"
    ],
    "confidence": [
     0.9,
     0.8,
     0.75,
     0.95,
     0.85
    ],
    "resolution": [
     "Memory A and Memory B cannot be ordered; the conflict is unresolved.",
     "Memory B conflicts with Memory A; treat B as current.",
     "Memory B is the current truth; Memory A is outdated.",
     "Memory B restates Memory A; keep one.",
     "Memory A and Memory B agree; both are kept.",
     "Separate periods; both memories are kept.",
     "Different attributes; both memories are kept.",
     "Memory A is dated later than Memory B; treat Memory A as current.",
     "Memory B is dated later than Memory A; treat Memory B as current.",
     "Different people; both memories are kept.",
     "The memories overlap in time and cannot be ordered; the conflict is unresolved.",
     "Memory B restates Memory A with a coarser date; keep Memory A.",
     "Memory A is outdated; Memory B is the current truth.",
     "Memory A restates Memory B with a coarser date; keep Memory B.",
     "Memory B restates Memory A using another form of the same value; keep Memory A.",
     "Memory B is outdated; Memory A is the current truth.",
     "Memory A restates Memory B using another form of the same value; keep Memory B.",
     "Memory B names the same person as Memory A by a short form; keep Memory A.",
     "Memory A names the same person as Memory B by a short form; keep Memory B."
    ],
    "weaker_id": [
     "one of the two input ids",
     "null"
    ]
   },
   "example": {
    "system": "Decide how the two memories relate. Output JSON: {verdict, resolution, weaker_id, confidence}.",
    "user": "Memory A [f2]: Caleb moved to Toronto on 2026-03-06.\nMemory B [f4]: Caleb enjoys living in Toronto.",
    "output": {
     "verdict": "consistent",
     "resolution": "Memory A and Memory B agree; both are kept.",
     "weaker_id": null,
     "confidence": 0.9
    }
   }
  },
  "QUERY": {
   "system_prompt": "Understand the query. Output JSON: {expanded_queries[], temporal_constraints, type_filters[], entities[], intent}.",
   "user_format": {
    "template": "Today is {YYYY-MM-DD}.\\n{question}",
    "description": "Reference date on the first line, the user's question on the second."
   },
   "output_keys": [
    "expanded_queries",
    "temporal_constraints",
    "type_filters",
    "entities",
    "intent"
   ],
   "output_values": {
    "intent": [
     "lookup",
     "temporal_lookup"
    ],
    "type_filters": [
     []
    ]
   },
   "example": {
    "system": "Understand the query. Output JSON: {expanded_queries[], temporal_constraints, type_filters[], entities[], intent}.",
    "user": "Today is 2026-06-01.\nDid Zara move to Lyon on 2026-04-19?",
    "output": {
     "expanded_queries": [
      "Did Zara move to Lyon on 2026-04-19?",
      "Did Zara move to Lyon on 2026-04-19"
     ],
     "temporal_constraints": {
      "after": null,
      "before": null
     },
     "type_filters": [],
     "entities": [
      "Zara",
      "Lyon"
     ],
     "intent": "temporal_lookup"
    }
   }
  },
  "ANSWER": {
   "system_prompt": "Answer ONLY from the provided memories; abstain if unsupported. Output JSON: {rationale, answer, citations[], confidence, abstain}.",
   "user_format": {
    "template": "Question: {question}\\n\\nMemories:\\n[fN] {memory}\\n[fN] {memory}\\n...",
    "description": "The question, a blank line, 'Memories:', then one retrieved memory per line with its id. citations in the output are ids from this list."
   },
   "output_keys": [
    "rationale",
    "answer",
    "citations",
    "confidence",
    "abstain"
   ],
   "output_values": {
    "abstain": [
     false,
     true
    ],
    "confidence": [
     0.9,
     0.8
    ],
    "answer (when abstain is true)": [
     "I do not have enough information to answer that."
    ]
   },
   "example": {
    "system": "Answer ONLY from the provided memories; abstain if unsupported. Output JSON: {rationale, answer, citations[], confidence, abstain}.",
    "user": "Question: Did Tomas move to Lisbon on 2026-03-14?\n\nMemories:\n[f1] Tomas lives in Toronto.\n[f2] Tomas moved to Lisbon on 2026-03-12.",
    "output": {
     "rationale": "No provided memory answers this.",
     "answer": "I do not have enough information to answer that.",
     "citations": [],
     "confidence": 0.8,
     "abstain": true
    }
   },
   "example_answerable": {
    "system": "Answer ONLY from the provided memories; abstain if unsupported. Output JSON: {rationale, answer, citations[], confidence, abstain}.",
    "user": "Question: Where does Maya live now?\n\nMemories:\n[f2] Maya moved to Austin on 2026-10-22.\n[f1] Maya lives in Lisbon.\n[f3] Maya currently resides in Austin.",
    "output": {
     "rationale": "Supported by f2.",
     "answer": "Austin",
     "citations": [
      "f2"
     ],
     "confidence": 0.9,
     "abstain": false
    }
   }
  }
 }
}