@getbourdon/conformance 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -4
- package/dist/index.cjs +30 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -1
- package/dist/index.d.ts +28 -11
- package/dist/index.js +51 -29
- package/dist/index.js.map +1 -1
- package/fixtures/README.md +11 -3
- package/fixtures/cursor_vectors.json +98 -0
- package/fixtures/l5_manifests/invalid/entity-impossible-calendar-date.json +14 -0
- package/fixtures/l5_manifests/invalid/reasons.json +52 -0
- package/fixtures/l5_manifests/invalid/session-impossible-calendar-date.json +13 -0
- package/fixtures/l5_manifests/invalid/session-impossible-feb-30.json +13 -0
- package/fixtures/l5_manifests/valid/session-empty-date.json +16 -0
- package/fixtures/l5_schema.json +137 -38
- package/fixtures/manifest.json +102 -7
- package/fixtures/mcp_snapshots/_normalizer.json +3 -2
- package/fixtures/mcp_snapshots/commit_to_federation.res.json +1 -0
- package/fixtures/mcp_snapshots/explain_memory_change.req.json +7 -0
- package/fixtures/mcp_snapshots/explain_memory_change.res.json +15 -0
- package/fixtures/mcp_snapshots/list_memory_versions.req.json +6 -0
- package/fixtures/mcp_snapshots/list_memory_versions.res.json +13 -0
- package/fixtures/mcp_snapshots/prepare_recognition_context_drifting.req.json +8 -0
- package/fixtures/mcp_snapshots/prepare_recognition_context_drifting.res.json +26 -0
- package/fixtures/mcp_snapshots/resource_agent_memory.req.json +6 -0
- package/fixtures/mcp_snapshots/resource_agent_memory.res.json +80 -0
- package/fixtures/mcp_snapshots/resource_agents.req.json +4 -0
- package/fixtures/mcp_snapshots/resource_agents.res.json +4 -0
- package/fixtures/mcp_snapshots/resource_entity.req.json +6 -0
- package/fixtures/mcp_snapshots/resource_entity.res.json +19 -0
- package/fixtures/mcp_snapshots/rollback_agent_memory.req.json +7 -0
- package/fixtures/mcp_snapshots/rollback_agent_memory.res.json +7 -0
- package/fixtures/mcp_snapshots/seed_library.json +67 -3
- package/fixtures.pin.json +5 -0
- package/package.json +6 -4
package/fixtures/l5_schema.json
CHANGED
|
@@ -4,17 +4,26 @@
|
|
|
4
4
|
"title": "Bourdon L5 Agent Memory Manifest",
|
|
5
5
|
"description": "A per-agent public memory glossary. L5 is a projection of L0-L4 personal memory into a standardized, agent-readable form with visibility filtering applied. L6 (the federation library) aggregates L5 manifests across agents.",
|
|
6
6
|
"type": "object",
|
|
7
|
-
"required": [
|
|
7
|
+
"required": [
|
|
8
|
+
"spec_version",
|
|
9
|
+
"agent",
|
|
10
|
+
"last_updated"
|
|
11
|
+
],
|
|
8
12
|
"properties": {
|
|
9
13
|
"spec_version": {
|
|
10
14
|
"description": "Bourdon spec version this manifest conforms to (semver). L6 warns when reading a manifest with an incompatible version.",
|
|
11
15
|
"type": "string",
|
|
12
16
|
"pattern": "^\\d+\\.\\d+$",
|
|
13
|
-
"examples": [
|
|
17
|
+
"examples": [
|
|
18
|
+
"0.1"
|
|
19
|
+
]
|
|
14
20
|
},
|
|
15
21
|
"agent": {
|
|
16
22
|
"type": "object",
|
|
17
|
-
"required": [
|
|
23
|
+
"required": [
|
|
24
|
+
"id",
|
|
25
|
+
"type"
|
|
26
|
+
],
|
|
18
27
|
"properties": {
|
|
19
28
|
"id": {
|
|
20
29
|
"description": "Unique slug for this agent. Used as the L6 filename and cross-agent reference key.",
|
|
@@ -22,7 +31,12 @@
|
|
|
22
31
|
"pattern": "^[a-z0-9][a-z0-9_-]*$",
|
|
23
32
|
"minLength": 1,
|
|
24
33
|
"maxLength": 64,
|
|
25
|
-
"examples": [
|
|
34
|
+
"examples": [
|
|
35
|
+
"alpha-agent",
|
|
36
|
+
"claude-code",
|
|
37
|
+
"codex",
|
|
38
|
+
"beta-agent"
|
|
39
|
+
]
|
|
26
40
|
},
|
|
27
41
|
"type": {
|
|
28
42
|
"description": "Agent category. Informs L6 query routing and UI grouping.",
|
|
@@ -43,12 +57,18 @@
|
|
|
43
57
|
"description": "Optional machine/deployment identifier. Helps federate memory across multiple instances of the same agent on different machines.",
|
|
44
58
|
"type": "string",
|
|
45
59
|
"maxLength": 128,
|
|
46
|
-
"examples": [
|
|
60
|
+
"examples": [
|
|
61
|
+
"workstation-01",
|
|
62
|
+
"laptop-01"
|
|
63
|
+
]
|
|
47
64
|
},
|
|
48
65
|
"spec_version_compat": {
|
|
49
66
|
"description": "Version range of Bourdon specs this manifest is compatible with. Uses npm-style semver ranges. If omitted, assumed equal to spec_version.",
|
|
50
67
|
"type": "string",
|
|
51
|
-
"examples": [
|
|
68
|
+
"examples": [
|
|
69
|
+
">=0.1",
|
|
70
|
+
"^0.1.0"
|
|
71
|
+
]
|
|
52
72
|
},
|
|
53
73
|
"role_narrative": {
|
|
54
74
|
"description": "Free-text description of the agent's role within a fleet. Differentiates agents that share the same `type` slug (e.g. multiple code-assistants playing different roles like manager, lead author, debugger, throwaway). Used by L6 to answer 'who should I ask about X?' style queries.",
|
|
@@ -78,31 +98,44 @@
|
|
|
78
98
|
"uniqueItems": true,
|
|
79
99
|
"maxItems": 64,
|
|
80
100
|
"examples": [
|
|
81
|
-
[
|
|
101
|
+
[
|
|
102
|
+
"code-read",
|
|
103
|
+
"code-write",
|
|
104
|
+
"web-search",
|
|
105
|
+
"image-analysis"
|
|
106
|
+
]
|
|
82
107
|
]
|
|
83
108
|
},
|
|
84
109
|
"recent_sessions": {
|
|
85
110
|
"description": "Rolling window of recent sessions. Typical retention: 30 days or 100 sessions, whichever is greater. Older sessions should be rolled up into L3/L4 personal memory and omitted from L5.",
|
|
86
111
|
"type": "array",
|
|
87
|
-
"items": {
|
|
112
|
+
"items": {
|
|
113
|
+
"$ref": "#/$defs/Session"
|
|
114
|
+
},
|
|
88
115
|
"maxItems": 500
|
|
89
116
|
},
|
|
90
117
|
"known_entities": {
|
|
91
118
|
"description": "The glossary surface. Each entity is something this agent knows about and can provide context on. L6 uses this for cross-agent entity lookup. Respect visibility_policy when emitting.",
|
|
92
119
|
"type": "array",
|
|
93
|
-
"items": {
|
|
120
|
+
"items": {
|
|
121
|
+
"$ref": "#/$defs/Entity"
|
|
122
|
+
},
|
|
94
123
|
"maxItems": 1000
|
|
95
124
|
},
|
|
96
125
|
"known_workstreams": {
|
|
97
126
|
"description": "Ongoing multi-session initiatives, distinct from a single dated Session and from a named glossary Entity. A workstream has a status and accrues sessions/entities over time. L6 uses this to answer 'what's currently in flight?' style queries.",
|
|
98
127
|
"type": "array",
|
|
99
|
-
"items": {
|
|
128
|
+
"items": {
|
|
129
|
+
"$ref": "#/$defs/Workstream"
|
|
130
|
+
},
|
|
100
131
|
"maxItems": 200
|
|
101
132
|
},
|
|
102
133
|
"notes": {
|
|
103
134
|
"description": "Freestanding unstructured notes not tied to a specific named entity or a single session's action log. Closer to a journal entry than a glossary term.",
|
|
104
135
|
"type": "array",
|
|
105
|
-
"items": {
|
|
136
|
+
"items": {
|
|
137
|
+
"$ref": "#/$defs/Note"
|
|
138
|
+
},
|
|
106
139
|
"maxItems": 1000
|
|
107
140
|
},
|
|
108
141
|
"visibility_policy": {
|
|
@@ -115,13 +148,25 @@
|
|
|
115
148
|
"private_tags": {
|
|
116
149
|
"description": "Entity tags that auto-mark the entity as private (overriding any explicit visibility setting).",
|
|
117
150
|
"type": "array",
|
|
118
|
-
"items": {
|
|
119
|
-
|
|
151
|
+
"items": {
|
|
152
|
+
"type": "string"
|
|
153
|
+
},
|
|
154
|
+
"examples": [
|
|
155
|
+
[
|
|
156
|
+
"personal",
|
|
157
|
+
"financial",
|
|
158
|
+
"credential",
|
|
159
|
+
"health",
|
|
160
|
+
"family"
|
|
161
|
+
]
|
|
162
|
+
]
|
|
120
163
|
},
|
|
121
164
|
"team_tags": {
|
|
122
165
|
"description": "Entity tags that mark entities as team-visibility (shared with team L6 but not public).",
|
|
123
166
|
"type": "array",
|
|
124
|
-
"items": {
|
|
167
|
+
"items": {
|
|
168
|
+
"type": "string"
|
|
169
|
+
}
|
|
125
170
|
}
|
|
126
171
|
}
|
|
127
172
|
}
|
|
@@ -129,17 +174,31 @@
|
|
|
129
174
|
"$defs": {
|
|
130
175
|
"Visibility": {
|
|
131
176
|
"type": "string",
|
|
132
|
-
"enum": [
|
|
177
|
+
"enum": [
|
|
178
|
+
"public",
|
|
179
|
+
"team",
|
|
180
|
+
"private"
|
|
181
|
+
],
|
|
133
182
|
"description": "public = published to all L6 stores | team = team L6 only | private = local L6 only, never federated outward"
|
|
134
183
|
},
|
|
135
184
|
"Session": {
|
|
136
185
|
"type": "object",
|
|
137
|
-
"required": [
|
|
186
|
+
"required": [
|
|
187
|
+
"date"
|
|
188
|
+
],
|
|
138
189
|
"properties": {
|
|
139
190
|
"date": {
|
|
140
|
-
"description": "ISO 8601 date the session occurred (date-only, no time).",
|
|
191
|
+
"description": "ISO 8601 date the session occurred (date-only, no time). An empty string means the native store carried no recognisable timestamp; readers MUST NOT substitute the current date, which would make a manifest look more current than reality. The pattern rejects impossible months/days (e.g. 2026-99-99) even under pattern-only validators; the anyOf format branch additionally rejects impossible calendar dates the pattern cannot express (e.g. Feb 30) wherever format checking is enabled.",
|
|
141
192
|
"type": "string",
|
|
142
|
-
"
|
|
193
|
+
"pattern": "^(\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01]))?$",
|
|
194
|
+
"anyOf": [
|
|
195
|
+
{
|
|
196
|
+
"format": "date"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"const": ""
|
|
200
|
+
}
|
|
201
|
+
]
|
|
143
202
|
},
|
|
144
203
|
"cwd": {
|
|
145
204
|
"description": "Working directory of the session. Optional but highly useful for developer-tool participants.",
|
|
@@ -149,26 +208,37 @@
|
|
|
149
208
|
"project_focus": {
|
|
150
209
|
"description": "Entity IDs the session focused on. Cross-references known_entities.",
|
|
151
210
|
"type": "array",
|
|
152
|
-
"items": {
|
|
211
|
+
"items": {
|
|
212
|
+
"type": "string"
|
|
213
|
+
}
|
|
153
214
|
},
|
|
154
215
|
"key_actions": {
|
|
155
216
|
"description": "Brief list of what happened. 1-5 short strings.",
|
|
156
217
|
"type": "array",
|
|
157
|
-
"items": {
|
|
218
|
+
"items": {
|
|
219
|
+
"type": "string",
|
|
220
|
+
"maxLength": 256
|
|
221
|
+
},
|
|
158
222
|
"maxItems": 10
|
|
159
223
|
},
|
|
160
224
|
"files_touched": {
|
|
161
225
|
"description": "Paths or patterns modified during the session. Optional.",
|
|
162
226
|
"type": "array",
|
|
163
|
-
"items": {
|
|
227
|
+
"items": {
|
|
228
|
+
"type": "string"
|
|
229
|
+
},
|
|
164
230
|
"maxItems": 50
|
|
165
231
|
},
|
|
166
|
-
"visibility": {
|
|
232
|
+
"visibility": {
|
|
233
|
+
"$ref": "#/$defs/Visibility"
|
|
234
|
+
}
|
|
167
235
|
}
|
|
168
236
|
},
|
|
169
237
|
"Entity": {
|
|
170
238
|
"type": "object",
|
|
171
|
-
"required": [
|
|
239
|
+
"required": [
|
|
240
|
+
"name"
|
|
241
|
+
],
|
|
172
242
|
"properties": {
|
|
173
243
|
"name": {
|
|
174
244
|
"description": "Human-readable entity name. Used for L0 keyword matching.",
|
|
@@ -184,7 +254,9 @@
|
|
|
184
254
|
"aliases": {
|
|
185
255
|
"description": "Alternative names or abbreviations that should also match for L0 detection.",
|
|
186
256
|
"type": "array",
|
|
187
|
-
"items": {
|
|
257
|
+
"items": {
|
|
258
|
+
"type": "string"
|
|
259
|
+
},
|
|
188
260
|
"maxItems": 16
|
|
189
261
|
},
|
|
190
262
|
"summary": {
|
|
@@ -194,22 +266,27 @@
|
|
|
194
266
|
},
|
|
195
267
|
"last_touched": {
|
|
196
268
|
"type": "string",
|
|
197
|
-
"format": "date"
|
|
269
|
+
"format": "date",
|
|
270
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
|
|
198
271
|
},
|
|
199
272
|
"valid_from": {
|
|
200
273
|
"description": "ISO 8601 date this entity became active in the agent's worldview. When omitted, the entity has either always been valid or its start date is unknown. L6 queries can filter on this to answer 'what was active in Q1 2026?' style questions. Inspired by Zep's Graphiti temporal validity model.",
|
|
201
274
|
"type": "string",
|
|
202
|
-
"format": "date"
|
|
275
|
+
"format": "date",
|
|
276
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
|
|
203
277
|
},
|
|
204
278
|
"valid_to": {
|
|
205
279
|
"description": "ISO 8601 date this entity stopped being active. Participants typically populate this when an entity is tagged 'archived' or 'canceled'. Absent (or null) means the entity is still active as of last_updated. Federation queries that filter by current time treat missing valid_to as 'still valid'.",
|
|
206
280
|
"type": "string",
|
|
207
|
-
"format": "date"
|
|
281
|
+
"format": "date",
|
|
282
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
|
|
208
283
|
},
|
|
209
284
|
"tags": {
|
|
210
285
|
"description": "Free-text tags. Used for visibility_policy.private_tags/team_tags matching and for filtering in L6 queries.",
|
|
211
286
|
"type": "array",
|
|
212
|
-
"items": {
|
|
287
|
+
"items": {
|
|
288
|
+
"type": "string"
|
|
289
|
+
}
|
|
213
290
|
},
|
|
214
291
|
"visibility": {
|
|
215
292
|
"$ref": "#/$defs/Visibility",
|
|
@@ -219,7 +296,10 @@
|
|
|
219
296
|
},
|
|
220
297
|
"Workstream": {
|
|
221
298
|
"type": "object",
|
|
222
|
-
"required": [
|
|
299
|
+
"required": [
|
|
300
|
+
"name",
|
|
301
|
+
"status"
|
|
302
|
+
],
|
|
223
303
|
"properties": {
|
|
224
304
|
"name": {
|
|
225
305
|
"description": "Human-readable workstream name.",
|
|
@@ -235,28 +315,39 @@
|
|
|
235
315
|
"status": {
|
|
236
316
|
"description": "Current lifecycle state.",
|
|
237
317
|
"type": "string",
|
|
238
|
-
"enum": [
|
|
318
|
+
"enum": [
|
|
319
|
+
"active",
|
|
320
|
+
"paused",
|
|
321
|
+
"done",
|
|
322
|
+
"archived"
|
|
323
|
+
]
|
|
239
324
|
},
|
|
240
325
|
"started": {
|
|
241
326
|
"description": "ISO 8601 date this workstream began.",
|
|
242
327
|
"type": "string",
|
|
243
|
-
"format": "date"
|
|
328
|
+
"format": "date",
|
|
329
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
|
|
244
330
|
},
|
|
245
331
|
"last_touched": {
|
|
246
332
|
"description": "ISO 8601 date of the most recent activity on this workstream.",
|
|
247
333
|
"type": "string",
|
|
248
|
-
"format": "date"
|
|
334
|
+
"format": "date",
|
|
335
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
|
|
249
336
|
},
|
|
250
337
|
"related_entities": {
|
|
251
338
|
"description": "Entity names this workstream references. Cross-references known_entities.",
|
|
252
339
|
"type": "array",
|
|
253
|
-
"items": {
|
|
340
|
+
"items": {
|
|
341
|
+
"type": "string"
|
|
342
|
+
},
|
|
254
343
|
"maxItems": 32
|
|
255
344
|
},
|
|
256
345
|
"tags": {
|
|
257
346
|
"description": "Free-text tags. Used for visibility_policy matching and L6 query filtering.",
|
|
258
347
|
"type": "array",
|
|
259
|
-
"items": {
|
|
348
|
+
"items": {
|
|
349
|
+
"type": "string"
|
|
350
|
+
}
|
|
260
351
|
},
|
|
261
352
|
"visibility": {
|
|
262
353
|
"$ref": "#/$defs/Visibility",
|
|
@@ -266,12 +357,16 @@
|
|
|
266
357
|
},
|
|
267
358
|
"Note": {
|
|
268
359
|
"type": "object",
|
|
269
|
-
"required": [
|
|
360
|
+
"required": [
|
|
361
|
+
"date",
|
|
362
|
+
"text"
|
|
363
|
+
],
|
|
270
364
|
"properties": {
|
|
271
365
|
"date": {
|
|
272
366
|
"description": "ISO 8601 date the note was written.",
|
|
273
367
|
"type": "string",
|
|
274
|
-
"format": "date"
|
|
368
|
+
"format": "date",
|
|
369
|
+
"pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
|
|
275
370
|
},
|
|
276
371
|
"text": {
|
|
277
372
|
"description": "Freeform note content. Larger than a Session.key_actions line -- this is a journal entry, not an action log.",
|
|
@@ -281,13 +376,17 @@
|
|
|
281
376
|
"related_entities": {
|
|
282
377
|
"description": "Entity names this note references. Cross-references known_entities. Optional.",
|
|
283
378
|
"type": "array",
|
|
284
|
-
"items": {
|
|
379
|
+
"items": {
|
|
380
|
+
"type": "string"
|
|
381
|
+
},
|
|
285
382
|
"maxItems": 16
|
|
286
383
|
},
|
|
287
384
|
"tags": {
|
|
288
385
|
"description": "Free-text tags. Used for visibility_policy matching and L6 query filtering.",
|
|
289
386
|
"type": "array",
|
|
290
|
-
"items": {
|
|
387
|
+
"items": {
|
|
388
|
+
"type": "string"
|
|
389
|
+
}
|
|
291
390
|
},
|
|
292
391
|
"visibility": {
|
|
293
392
|
"$ref": "#/$defs/Visibility",
|
package/fixtures/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_doc": "Index of cross-impl parity fixtures. conformance_version bumps on any fixture change (patch=added cases, minor=new family, major=changed expected-output = a reviewed behavior change). Python is the oracle; this file is generated by tools/gen_conformance.py.",
|
|
3
|
-
"conformance_version": "
|
|
3
|
+
"conformance_version": "2.2.0",
|
|
4
4
|
"produced_against": {
|
|
5
|
-
"bourdon_version": "0.
|
|
5
|
+
"bourdon_version": "0.13.0"
|
|
6
6
|
},
|
|
7
7
|
"fixtures": [
|
|
8
8
|
{
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"path": "l5_schema.json",
|
|
30
|
-
"sha256": "
|
|
30
|
+
"sha256": "1005b3fa3e370b05e07d5d0c00ac311f1c7b803e71529392865ce157857a1cc1",
|
|
31
31
|
"producer": "tools/gen_conformance.py::l5_schema_and_manifests"
|
|
32
32
|
},
|
|
33
33
|
{
|
|
@@ -40,6 +40,11 @@
|
|
|
40
40
|
"sha256": "0d0cb5781134bfd21603d1a4792ae682f683eed6ce5df636d3e54aec7a0bdf10",
|
|
41
41
|
"producer": "tools/gen_conformance.py::l5_schema_and_manifests"
|
|
42
42
|
},
|
|
43
|
+
{
|
|
44
|
+
"path": "l5_manifests/valid/session-empty-date.json",
|
|
45
|
+
"sha256": "807c24d78a2b28eff45c8a1d2fb82ffd1750a31336a1689d071f3b538fe17248",
|
|
46
|
+
"producer": "tools/gen_conformance.py::l5_schema_and_manifests"
|
|
47
|
+
},
|
|
43
48
|
{
|
|
44
49
|
"path": "l5_manifests/valid/team-and-private.json",
|
|
45
50
|
"sha256": "eb2259201dba3e2f09cb0577df08cb7196af97fa9ba15e9fc8385efa4373ee44",
|
|
@@ -70,9 +75,24 @@
|
|
|
70
75
|
"sha256": "24b4d1d2ec9554909e9cb52d45baa2eeb8c76f2fd9e12abd70c3a3cdcd72242f",
|
|
71
76
|
"producer": "tools/gen_conformance.py::l5_schema_and_manifests"
|
|
72
77
|
},
|
|
78
|
+
{
|
|
79
|
+
"path": "l5_manifests/invalid/session-impossible-calendar-date.json",
|
|
80
|
+
"sha256": "4948c32f30d443305919fd048bbfc12fe6ba6c430876b948aab2d0009f393c22",
|
|
81
|
+
"producer": "tools/gen_conformance.py::l5_schema_and_manifests"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"path": "l5_manifests/invalid/session-impossible-feb-30.json",
|
|
85
|
+
"sha256": "58607a25737a8049ea952b126b2fb00323ab2da46b2a48aae09c938c556f8348",
|
|
86
|
+
"producer": "tools/gen_conformance.py::l5_schema_and_manifests"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"path": "l5_manifests/invalid/entity-impossible-calendar-date.json",
|
|
90
|
+
"sha256": "51673647d2dce6626bb8ac7a3ae3d945624a63879d5d3ea836cf97665b9a0319",
|
|
91
|
+
"producer": "tools/gen_conformance.py::l5_schema_and_manifests"
|
|
92
|
+
},
|
|
73
93
|
{
|
|
74
94
|
"path": "l5_manifests/invalid/reasons.json",
|
|
75
|
-
"sha256": "
|
|
95
|
+
"sha256": "ab2d8c34b29db3ac7fc60a6668120532ec4d475c366cdd3d0a0822dbfed2f8aa",
|
|
76
96
|
"producer": "tools/gen_conformance.py::l5_schema_and_manifests"
|
|
77
97
|
},
|
|
78
98
|
{
|
|
@@ -95,6 +115,11 @@
|
|
|
95
115
|
"sha256": "9753ad1fd4a092bdf4110b3b24576f2bfe7001d6d6758ef55047ee5da851e25c",
|
|
96
116
|
"producer": "tools/gen_conformance.py::tier_matrix"
|
|
97
117
|
},
|
|
118
|
+
{
|
|
119
|
+
"path": "cursor_vectors.json",
|
|
120
|
+
"sha256": "433e7a1c8f87f5544b8a0a3a8df1be89b6f53199f0295a458564bf53a9bf8029",
|
|
121
|
+
"producer": "tools/gen_conformance.py::cursor_vectors"
|
|
122
|
+
},
|
|
98
123
|
{
|
|
99
124
|
"path": "on_disk/federation.yaml",
|
|
100
125
|
"sha256": "7a3795961d369ec57a6caa6af15e250d016c98e883077e82d7d103bd0c016cfe",
|
|
@@ -110,6 +135,46 @@
|
|
|
110
135
|
"sha256": "c48be69e564767155a4414c6723846a6f921d9c032bf1ed927103678d3f2529d",
|
|
111
136
|
"producer": "tools/gen_conformance.py::federation_on_disk"
|
|
112
137
|
},
|
|
138
|
+
{
|
|
139
|
+
"path": "mcp_snapshots/resource_agents.req.json",
|
|
140
|
+
"sha256": "ed34272024145f8aa223c2d5bc329b606180bcc276ab0f35336643cd79566dcb",
|
|
141
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"path": "mcp_snapshots/resource_agents.res.json",
|
|
145
|
+
"sha256": "463d51e3317c2bb8164fd92edf9a9ce9da66951d92bcc19658c838062eceee4b",
|
|
146
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"path": "mcp_snapshots/resource_agent_memory.req.json",
|
|
150
|
+
"sha256": "850a252053f8a51fbe5577872373214663cce2e83037a610a3c9c3a3162e801e",
|
|
151
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"path": "mcp_snapshots/resource_agent_memory.res.json",
|
|
155
|
+
"sha256": "bb86d39d2f899c95d295ccccd9156f5abf1ecac1839d1ed7a929f72f9489c236",
|
|
156
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"path": "mcp_snapshots/resource_entity.req.json",
|
|
160
|
+
"sha256": "edf28d1d95f5ce7f996f944d1ee16914d493cc8e73deefedb935111b22358654",
|
|
161
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"path": "mcp_snapshots/resource_entity.res.json",
|
|
165
|
+
"sha256": "c54f451d5837f6b7d302891757d40107803c95cb1d40da2e4910b55d94eb5fad",
|
|
166
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"path": "mcp_snapshots/prepare_recognition_context_drifting.req.json",
|
|
170
|
+
"sha256": "036fbde926d6979f0e70703e888f70820ec0151f60e7976af2cc85f18ee1a7df",
|
|
171
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"path": "mcp_snapshots/prepare_recognition_context_drifting.res.json",
|
|
175
|
+
"sha256": "665c149473ce295b22970f072483de4d3f93bc4affb022752a0251a5852e4567",
|
|
176
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
177
|
+
},
|
|
113
178
|
{
|
|
114
179
|
"path": "mcp_snapshots/query_agent_memory.req.json",
|
|
115
180
|
"sha256": "596ac7e85eb1afe05da799ea34593c75bd27d56be57ec86706713b469df7e7fc",
|
|
@@ -187,7 +252,7 @@
|
|
|
187
252
|
},
|
|
188
253
|
{
|
|
189
254
|
"path": "mcp_snapshots/commit_to_federation.res.json",
|
|
190
|
-
"sha256": "
|
|
255
|
+
"sha256": "5252a31806f3e491bde6c1446d20804a81c67f1e8373c480fa60fef4dd46cb36",
|
|
191
256
|
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
192
257
|
},
|
|
193
258
|
{
|
|
@@ -230,14 +295,44 @@
|
|
|
230
295
|
"sha256": "842926cd013275692fd11daab8553a329f2685c870b59389ee5b075544d5ed49",
|
|
231
296
|
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
232
297
|
},
|
|
298
|
+
{
|
|
299
|
+
"path": "mcp_snapshots/list_memory_versions.req.json",
|
|
300
|
+
"sha256": "d74a7d4ca7aaef454887f3a84e7db9d01a9141899a2d3a2e4dd43863a09c67df",
|
|
301
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"path": "mcp_snapshots/list_memory_versions.res.json",
|
|
305
|
+
"sha256": "e4c147501b354d8111afe65bc09830a111db3fec51a5e6bed14731c37843ffaf",
|
|
306
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"path": "mcp_snapshots/explain_memory_change.req.json",
|
|
310
|
+
"sha256": "5075f978e2ab22df9d7ecad5f3c70df33df477a0453cdc4ff458676193f859af",
|
|
311
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"path": "mcp_snapshots/explain_memory_change.res.json",
|
|
315
|
+
"sha256": "a99e35cf8860d419eada7b109a814a1d161d0e879e8b712bcf6576b0f102e577",
|
|
316
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"path": "mcp_snapshots/rollback_agent_memory.req.json",
|
|
320
|
+
"sha256": "f683ad5837e32169f9d42a0b434697c350c5cd9d0392b731e0fc3835594c9fa0",
|
|
321
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"path": "mcp_snapshots/rollback_agent_memory.res.json",
|
|
325
|
+
"sha256": "315dca58b769d262bb956a3e1a707397ebc9cfe65c311e00e4b3b15280444c7e",
|
|
326
|
+
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
327
|
+
},
|
|
233
328
|
{
|
|
234
329
|
"path": "mcp_snapshots/seed_library.json",
|
|
235
|
-
"sha256": "
|
|
330
|
+
"sha256": "f0210a4b63af53728f3d7a1f56baede0bc110ad902a36530b2b35312c71e69ff",
|
|
236
331
|
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
237
332
|
},
|
|
238
333
|
{
|
|
239
334
|
"path": "mcp_snapshots/_normalizer.json",
|
|
240
|
-
"sha256": "
|
|
335
|
+
"sha256": "438071a3b1de83fb23083fd9ad2d4a734a27032d84faabf9d5772f14779a1721",
|
|
241
336
|
"producer": "tools/gen_conformance.py::mcp_snapshots"
|
|
242
337
|
},
|
|
243
338
|
{
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
}
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
|
-
"_doc": "decodes a
|
|
87
|
+
"_doc": "decodes a sealed next_cursor to its {offset} payload (token sealed under the conformance test key from cursor_vectors.json; replaying this case requires injecting that key); null cursor drops",
|
|
88
88
|
"normalized": {
|
|
89
89
|
"has_more": true,
|
|
90
90
|
"next_cursor": {
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
},
|
|
94
94
|
"raw": {
|
|
95
95
|
"has_more": true,
|
|
96
|
-
"next_cursor": "eyJvZmZzZXQiOjJ9"
|
|
96
|
+
"next_cursor": "v1.eyJvZmZzZXQiOjJ9.Kq1CqjJ2bx9GKxUve6An2fcBMxcGu9Ledn3C1V_6oZI="
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
{
|
|
@@ -154,6 +154,7 @@
|
|
|
154
154
|
"float_precision": 4,
|
|
155
155
|
"freeze_fields": [
|
|
156
156
|
"age_s",
|
|
157
|
+
"digest",
|
|
157
158
|
"generated_at",
|
|
158
159
|
"generated_from",
|
|
159
160
|
"last_updated",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"agent_id": "claude-code",
|
|
3
|
+
"found": true,
|
|
4
|
+
"write": {
|
|
5
|
+
"agent_id": "claude-code",
|
|
6
|
+
"caller": "operator",
|
|
7
|
+
"counts": {
|
|
8
|
+
"entities_added": 1
|
|
9
|
+
},
|
|
10
|
+
"new_digest": "7ec802e09dd4a4d43eaa643a096d3e12269d72200017e73db27591257ea3eebe",
|
|
11
|
+
"op": "commit",
|
|
12
|
+
"session_id": "0192eeee-5555-7000-8000-00000000e005",
|
|
13
|
+
"ts": "2026-06-28T12:00:00.000000Z"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_doc": "Same tool, driven under the deterministic drift-watermark seed (see drift_seed in seed_library.json). The plain prepare_recognition_context.res.json is the healthy half: drifting_surfaces is ABSENT there, present here.",
|
|
3
|
+
"args": {
|
|
4
|
+
"access_level": "team",
|
|
5
|
+
"prompt": "what about Bourdon"
|
|
6
|
+
},
|
|
7
|
+
"tool": "prepare_recognition_context"
|
|
8
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"access_level": "team",
|
|
3
|
+
"confidence": "medium",
|
|
4
|
+
"drifting_surfaces": [
|
|
5
|
+
{
|
|
6
|
+
"agent": "codex",
|
|
7
|
+
"checked_at": "2026-06-29T12:00:00Z",
|
|
8
|
+
"reason": "yielded nothing this run - last yielded 400 record(s) at 2026-06-29T09:00:00Z"
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"hydration_scheduled": true,
|
|
12
|
+
"include_private": false,
|
|
13
|
+
"matched_entities": [
|
|
14
|
+
{
|
|
15
|
+
"name": "Bourdon",
|
|
16
|
+
"source_agents": [
|
|
17
|
+
"claude-code",
|
|
18
|
+
"codex"
|
|
19
|
+
],
|
|
20
|
+
"type": "project"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"prompt": "what about Bourdon",
|
|
24
|
+
"prompt_context": "Bourdon recognition context\nImmediate recognition: Oh -- Bourdon, the project.\nMatched entities:\n- Bourdon (project) via claude-code, codex: Cross-agent memory federation (granted side).\nUse this as timing-layer context, not as a final answer.",
|
|
25
|
+
"recognition": "Oh -- Bourdon, the project."
|
|
26
|
+
}
|