@getbourdon/conformance 0.2.1 → 0.3.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.
Files changed (61) hide show
  1. package/README.md +26 -4
  2. package/dist/index.cjs +30 -2
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +20 -1
  5. package/dist/index.d.ts +28 -11
  6. package/dist/index.js +51 -29
  7. package/dist/index.js.map +1 -1
  8. package/fixtures/README.md +11 -3
  9. package/fixtures/fed_seed_library/agents/claude-code.l5.yaml +31 -4
  10. package/fixtures/fed_seed_library/agents/codex.l5.yaml +15 -0
  11. package/fixtures/l5_manifests/invalid/bad-agent-type-enum.json +1 -1
  12. package/fixtures/l5_manifests/invalid/bad-spec-version-pattern.json +1 -1
  13. package/fixtures/l5_manifests/invalid/entity-bad-visibility-enum.json +1 -1
  14. package/fixtures/l5_manifests/invalid/entity-impossible-calendar-date.json +14 -0
  15. package/fixtures/l5_manifests/invalid/entity-missing-name.json +1 -1
  16. package/fixtures/l5_manifests/invalid/missing-required-last_updated.json +1 -1
  17. package/fixtures/l5_manifests/invalid/reasons.json +52 -0
  18. package/fixtures/l5_manifests/invalid/session-impossible-calendar-date.json +13 -0
  19. package/fixtures/l5_manifests/invalid/session-impossible-feb-30.json +13 -0
  20. package/fixtures/l5_manifests/valid/full.json +2 -2
  21. package/fixtures/l5_manifests/valid/minimal.json +1 -1
  22. package/fixtures/l5_manifests/valid/session-empty-date.json +16 -0
  23. package/fixtures/l5_manifests/valid/team-and-private.json +1 -1
  24. package/fixtures/l5_schema.json +216 -27
  25. package/fixtures/l5_todict.json +10 -10
  26. package/fixtures/leak_cases.json +1 -1
  27. package/fixtures/manifest.json +142 -32
  28. package/fixtures/mcp_snapshots/_normalizer.json +32 -2
  29. package/fixtures/mcp_snapshots/commit_to_federation.req.json +13 -1
  30. package/fixtures/mcp_snapshots/commit_to_federation.res.json +9 -2
  31. package/fixtures/mcp_snapshots/explain_memory_change.req.json +7 -0
  32. package/fixtures/mcp_snapshots/explain_memory_change.res.json +15 -0
  33. package/fixtures/mcp_snapshots/export_agents.res.json +47 -1
  34. package/fixtures/mcp_snapshots/get_cross_agent_summary.res.json +1 -1
  35. package/fixtures/mcp_snapshots/list_memory_versions.req.json +6 -0
  36. package/fixtures/mcp_snapshots/list_memory_versions.res.json +13 -0
  37. package/fixtures/mcp_snapshots/list_notes.req.json +8 -0
  38. package/fixtures/mcp_snapshots/list_notes.res.json +28 -0
  39. package/fixtures/mcp_snapshots/list_recent_work.res.json +1 -1
  40. package/fixtures/mcp_snapshots/list_workstreams.req.json +6 -0
  41. package/fixtures/mcp_snapshots/list_workstreams.res.json +23 -0
  42. package/fixtures/mcp_snapshots/prepare_recognition_context_drifting.req.json +8 -0
  43. package/fixtures/mcp_snapshots/prepare_recognition_context_drifting.res.json +26 -0
  44. package/fixtures/mcp_snapshots/resource_agent_memory.req.json +6 -0
  45. package/fixtures/mcp_snapshots/resource_agent_memory.res.json +80 -0
  46. package/fixtures/mcp_snapshots/resource_agents.req.json +4 -0
  47. package/fixtures/mcp_snapshots/resource_agents.res.json +4 -0
  48. package/fixtures/mcp_snapshots/resource_entity.req.json +6 -0
  49. package/fixtures/mcp_snapshots/resource_entity.res.json +19 -0
  50. package/fixtures/mcp_snapshots/rollback_agent_memory.req.json +7 -0
  51. package/fixtures/mcp_snapshots/rollback_agent_memory.res.json +7 -0
  52. package/fixtures/mcp_snapshots/seed_library.json +111 -3
  53. package/fixtures/native_stores/claude_code/expected_l5.json +8 -8
  54. package/fixtures/native_stores/claude_code/store/auto_memory/{clyde.md → alpha-agent.md} +2 -2
  55. package/fixtures/native_stores/claude_code/store/auto_memory/{ry-guy.md → example-user.md} +2 -2
  56. package/fixtures/native_stores/claude_code/store/knowledge_graph/memory.jsonl +2 -2
  57. package/fixtures/recognition_golden_v1.yaml +17 -17
  58. package/fixtures/recognition_vectors.json +23 -23
  59. package/fixtures/tier_matrix.json +2 -2
  60. package/fixtures.pin.json +5 -0
  61. package/package.json +6 -4
@@ -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": "1.7.0",
3
+ "conformance_version": "2.1.0",
4
4
  "produced_against": {
5
- "bourdon_version": "0.11.0"
5
+ "bourdon_version": "0.13.0"
6
6
  },
7
7
  "fixtures": [
8
8
  {
@@ -12,87 +12,107 @@
12
12
  },
13
13
  {
14
14
  "path": "leak_cases.json",
15
- "sha256": "6a5a100b11ffb138f933f7e8c47a4f6ce49cecd1a4f6dfa4635c1b022b573fc7",
15
+ "sha256": "4142107183dd967d00fc6f4b3678a84270480fb146a6e1c51dead7fa625ae685",
16
16
  "producer": "tools/gen_conformance.py::leak_cases"
17
17
  },
18
18
  {
19
19
  "path": "recognition_vectors.json",
20
- "sha256": "229b25bbf7521d821bb3e36661f47d6dbd837970964774346eee0f6ab8d0e686",
20
+ "sha256": "248b2af23e35f6e1e86a918896ba4243e7edc54aa30daabc0f4b32e260c47bc1",
21
21
  "producer": "tools/gen_conformance.py::recognition_vectors"
22
22
  },
23
23
  {
24
24
  "path": "recognition_golden_v1.yaml",
25
- "sha256": "d39272869976e192060eb9b2f0a0c289a18f43f78e15dc32192977876dd682db",
25
+ "sha256": "9059e2615118a934b2ec3523c06238345de4aac5138d99611418cc70eeb53956",
26
26
  "producer": "tools/gen_conformance.py::recognition_vectors"
27
27
  },
28
28
  {
29
29
  "path": "l5_schema.json",
30
- "sha256": "c9bbee36b08656aaddf7584a94c0640ae9933177506be6ce656613fce5800ec7",
30
+ "sha256": "1005b3fa3e370b05e07d5d0c00ac311f1c7b803e71529392865ce157857a1cc1",
31
31
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
32
32
  },
33
33
  {
34
34
  "path": "l5_manifests/valid/minimal.json",
35
- "sha256": "2d06070185ed9141f3cfbe969f7e726e07785b3f71a3dc92404debe121e2f606",
35
+ "sha256": "9fd41d9a13c735f6208542df5173e02d9eb21382dbcdba7d17063ddcc1fd85bf",
36
36
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
37
37
  },
38
38
  {
39
39
  "path": "l5_manifests/valid/full.json",
40
- "sha256": "6204750867c74436691db72ba3cd6818d5a3fb6bc57f0447855c39bb607ca1d1",
40
+ "sha256": "0d0cb5781134bfd21603d1a4792ae682f683eed6ce5df636d3e54aec7a0bdf10",
41
+ "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
42
+ },
43
+ {
44
+ "path": "l5_manifests/valid/session-empty-date.json",
45
+ "sha256": "807c24d78a2b28eff45c8a1d2fb82ffd1750a31336a1689d071f3b538fe17248",
41
46
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
42
47
  },
43
48
  {
44
49
  "path": "l5_manifests/valid/team-and-private.json",
45
- "sha256": "1cc77d236bad1b90f79b7e41e8f1765309bfca68d8fb4cd21138c470387ceec1",
50
+ "sha256": "eb2259201dba3e2f09cb0577df08cb7196af97fa9ba15e9fc8385efa4373ee44",
46
51
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
47
52
  },
48
53
  {
49
54
  "path": "l5_manifests/invalid/missing-required-last_updated.json",
50
- "sha256": "51b938efb6461f64dc40afe08dcd66dbb910e2985f0f4274122c5d7997b6d1f5",
55
+ "sha256": "00df90b5ab3c908c12385a10b462c1aefca47c1c525901442c613462eb4a18bf",
51
56
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
52
57
  },
53
58
  {
54
59
  "path": "l5_manifests/invalid/bad-spec-version-pattern.json",
55
- "sha256": "1a707a3d97c882e1e248690438c956afd2c4da94f17b4dd74ca7119ea1accdb5",
60
+ "sha256": "1fed01a2bf51568c189b48a9cfc4cf2bc6d631e2c66388867bd736a1fa83e420",
56
61
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
57
62
  },
58
63
  {
59
64
  "path": "l5_manifests/invalid/bad-agent-type-enum.json",
60
- "sha256": "1e7f6ac2f8f263edf3d7f8d4a65ff10502ca05d794846b235fc3fc6d9584e3c0",
65
+ "sha256": "c19d2eb95593737a179d0355dbe621f90a0054c8d54443a9b3a88d4f2d908f08",
61
66
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
62
67
  },
63
68
  {
64
69
  "path": "l5_manifests/invalid/entity-bad-visibility-enum.json",
65
- "sha256": "5b4c2173fb7a21a2cb0efa0710e9104ce6ba22721746d4d5ceae86eed1230472",
70
+ "sha256": "8bd0ce9e91cef500dc4280255328a0f7503e6e33c13c6a519da93e2100e88ce4",
66
71
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
67
72
  },
68
73
  {
69
74
  "path": "l5_manifests/invalid/entity-missing-name.json",
70
- "sha256": "6836bb9f6143ee82aa772836850832538ddfa6fc8cd6047e27848418746bd4b6",
75
+ "sha256": "24b4d1d2ec9554909e9cb52d45baa2eeb8c76f2fd9e12abd70c3a3cdcd72242f",
76
+ "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
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",
71
91
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
72
92
  },
73
93
  {
74
94
  "path": "l5_manifests/invalid/reasons.json",
75
- "sha256": "7457175cf3406f910a68d0b72c9b1149d1c5962e2a929ecbdb90984fe92500fd",
95
+ "sha256": "ab2d8c34b29db3ac7fc60a6668120532ec4d475c366cdd3d0a0822dbfed2f8aa",
76
96
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
77
97
  },
78
98
  {
79
99
  "path": "l5_todict.json",
80
- "sha256": "0c83c95cd8f4efb9e32e816d4b28243b06da031079cff3a55440b00f8fcb2b34",
100
+ "sha256": "963f9eb6c68cd8897650f098c241ebbff34ab23603bf9fee92e5431ae2db78af",
81
101
  "producer": "tools/gen_conformance.py::l5_schema_and_manifests"
82
102
  },
83
103
  {
84
104
  "path": "fed_seed_library/agents/claude-code.l5.yaml",
85
- "sha256": "a38fcc6c2e9d743449b3b969a9bf79b283a0fde24958bcc8f479a6af11d94c58",
105
+ "sha256": "efe5467ee41bfe807098f2339dda7295f236c1ae7f575016b2402f9ba1988f7c",
86
106
  "producer": "tools/gen_conformance.py::fed_seed_library"
87
107
  },
88
108
  {
89
109
  "path": "fed_seed_library/agents/codex.l5.yaml",
90
- "sha256": "025ced64d65d394f3937b2e1e60fad7495fc395e44c9738e0086eb9fb3c5b428",
110
+ "sha256": "9190f55662b66941cac8a3d869579024ef2a83de1912bda8c60c3c75c4b585d0",
91
111
  "producer": "tools/gen_conformance.py::fed_seed_library"
92
112
  },
93
113
  {
94
114
  "path": "tier_matrix.json",
95
- "sha256": "620c762af64132214e1ea7067b24d073a74a981949f787b9dd3e11558d2e9371",
115
+ "sha256": "9753ad1fd4a092bdf4110b3b24576f2bfe7001d6d6758ef55047ee5da851e25c",
96
116
  "producer": "tools/gen_conformance.py::tier_matrix"
97
117
  },
98
118
  {
@@ -110,6 +130,46 @@
110
130
  "sha256": "c48be69e564767155a4414c6723846a6f921d9c032bf1ed927103678d3f2529d",
111
131
  "producer": "tools/gen_conformance.py::federation_on_disk"
112
132
  },
133
+ {
134
+ "path": "mcp_snapshots/resource_agents.req.json",
135
+ "sha256": "ed34272024145f8aa223c2d5bc329b606180bcc276ab0f35336643cd79566dcb",
136
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
137
+ },
138
+ {
139
+ "path": "mcp_snapshots/resource_agents.res.json",
140
+ "sha256": "463d51e3317c2bb8164fd92edf9a9ce9da66951d92bcc19658c838062eceee4b",
141
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
142
+ },
143
+ {
144
+ "path": "mcp_snapshots/resource_agent_memory.req.json",
145
+ "sha256": "850a252053f8a51fbe5577872373214663cce2e83037a610a3c9c3a3162e801e",
146
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
147
+ },
148
+ {
149
+ "path": "mcp_snapshots/resource_agent_memory.res.json",
150
+ "sha256": "bb86d39d2f899c95d295ccccd9156f5abf1ecac1839d1ed7a929f72f9489c236",
151
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
152
+ },
153
+ {
154
+ "path": "mcp_snapshots/resource_entity.req.json",
155
+ "sha256": "edf28d1d95f5ce7f996f944d1ee16914d493cc8e73deefedb935111b22358654",
156
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
157
+ },
158
+ {
159
+ "path": "mcp_snapshots/resource_entity.res.json",
160
+ "sha256": "c54f451d5837f6b7d302891757d40107803c95cb1d40da2e4910b55d94eb5fad",
161
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
162
+ },
163
+ {
164
+ "path": "mcp_snapshots/prepare_recognition_context_drifting.req.json",
165
+ "sha256": "036fbde926d6979f0e70703e888f70820ec0151f60e7976af2cc85f18ee1a7df",
166
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
167
+ },
168
+ {
169
+ "path": "mcp_snapshots/prepare_recognition_context_drifting.res.json",
170
+ "sha256": "665c149473ce295b22970f072483de4d3f93bc4affb022752a0251a5852e4567",
171
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
172
+ },
113
173
  {
114
174
  "path": "mcp_snapshots/query_agent_memory.req.json",
115
175
  "sha256": "596ac7e85eb1afe05da799ea34593c75bd27d56be57ec86706713b469df7e7fc",
@@ -127,7 +187,7 @@
127
187
  },
128
188
  {
129
189
  "path": "mcp_snapshots/list_recent_work.res.json",
130
- "sha256": "ce42ba942bbc368866a0f6deca120a9263058e90c94862bfce88fee299be4d3a",
190
+ "sha256": "57a692c535b5418489daad2998bbef1e9e4b5a1a5cd3c43bbddc74682ec14843",
131
191
  "producer": "tools/gen_conformance.py::mcp_snapshots"
132
192
  },
133
193
  {
@@ -140,6 +200,26 @@
140
200
  "sha256": "b6881e05615333d99d8bb6b0966c4bb233cc35d94ab97d8d6b0bc55949e7141b",
141
201
  "producer": "tools/gen_conformance.py::mcp_snapshots"
142
202
  },
203
+ {
204
+ "path": "mcp_snapshots/list_workstreams.req.json",
205
+ "sha256": "8d997fcfb154e0fdc04324542a29cf3c4607704269dfc8c2dbb20d98fdc884ac",
206
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
207
+ },
208
+ {
209
+ "path": "mcp_snapshots/list_workstreams.res.json",
210
+ "sha256": "fb8ecbd94611ae52843eb05955af1a75112bbade751facf975068a369843f66e",
211
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
212
+ },
213
+ {
214
+ "path": "mcp_snapshots/list_notes.req.json",
215
+ "sha256": "9c4261539270a13a75f67c348a6625dd376d5dcda2f91316a1eb617b2e482e03",
216
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
217
+ },
218
+ {
219
+ "path": "mcp_snapshots/list_notes.res.json",
220
+ "sha256": "a3d219f456d0f608e8951161823e4b0df605241db4c3efefa56ea0c16fbbe7f7",
221
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
222
+ },
143
223
  {
144
224
  "path": "mcp_snapshots/list_agents.req.json",
145
225
  "sha256": "80c17300d53998e351d8647f5af0e9660944e657b1ab05c9b3a29a23e170e22c",
@@ -157,17 +237,17 @@
157
237
  },
158
238
  {
159
239
  "path": "mcp_snapshots/export_agents.res.json",
160
- "sha256": "af70539f49e7882b03eb2018dd34fb748b13bfb11d953a166adbb2d54b354f17",
240
+ "sha256": "d8bf31fa8a2e23b126139e209eda1c6d3167070717122fdd53b46168cdc28853",
161
241
  "producer": "tools/gen_conformance.py::mcp_snapshots"
162
242
  },
163
243
  {
164
244
  "path": "mcp_snapshots/commit_to_federation.req.json",
165
- "sha256": "da0faa15708bac21e7d6e551d12a4fa70ac29a1d2aaf025fd91989992d22d938",
245
+ "sha256": "07c43423cb303a567214217063c7c0b0d7629e1ec91c6f79c5b56858315ae2d8",
166
246
  "producer": "tools/gen_conformance.py::mcp_snapshots"
167
247
  },
168
248
  {
169
249
  "path": "mcp_snapshots/commit_to_federation.res.json",
170
- "sha256": "96b8ee3c0017587a5aee35aaf1553a1786fa6acae9be16294aa1c9590523bfaa",
250
+ "sha256": "5252a31806f3e491bde6c1446d20804a81c67f1e8373c480fa60fef4dd46cb36",
171
251
  "producer": "tools/gen_conformance.py::mcp_snapshots"
172
252
  },
173
253
  {
@@ -177,7 +257,7 @@
177
257
  },
178
258
  {
179
259
  "path": "mcp_snapshots/get_cross_agent_summary.res.json",
180
- "sha256": "ada93fb31ec2981e4a34cf67aaea995a82516ae57d329c5aea72fe01c157c00a",
260
+ "sha256": "9238a6083bed98806495a75777a30778d4950994b72792b4551663f392cf4dbb",
181
261
  "producer": "tools/gen_conformance.py::mcp_snapshots"
182
262
  },
183
263
  {
@@ -210,14 +290,44 @@
210
290
  "sha256": "842926cd013275692fd11daab8553a329f2685c870b59389ee5b075544d5ed49",
211
291
  "producer": "tools/gen_conformance.py::mcp_snapshots"
212
292
  },
293
+ {
294
+ "path": "mcp_snapshots/list_memory_versions.req.json",
295
+ "sha256": "d74a7d4ca7aaef454887f3a84e7db9d01a9141899a2d3a2e4dd43863a09c67df",
296
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
297
+ },
298
+ {
299
+ "path": "mcp_snapshots/list_memory_versions.res.json",
300
+ "sha256": "e4c147501b354d8111afe65bc09830a111db3fec51a5e6bed14731c37843ffaf",
301
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
302
+ },
303
+ {
304
+ "path": "mcp_snapshots/explain_memory_change.req.json",
305
+ "sha256": "5075f978e2ab22df9d7ecad5f3c70df33df477a0453cdc4ff458676193f859af",
306
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
307
+ },
308
+ {
309
+ "path": "mcp_snapshots/explain_memory_change.res.json",
310
+ "sha256": "a99e35cf8860d419eada7b109a814a1d161d0e879e8b712bcf6576b0f102e577",
311
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
312
+ },
313
+ {
314
+ "path": "mcp_snapshots/rollback_agent_memory.req.json",
315
+ "sha256": "f683ad5837e32169f9d42a0b434697c350c5cd9d0392b731e0fc3835594c9fa0",
316
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
317
+ },
318
+ {
319
+ "path": "mcp_snapshots/rollback_agent_memory.res.json",
320
+ "sha256": "315dca58b769d262bb956a3e1a707397ebc9cfe65c311e00e4b3b15280444c7e",
321
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
322
+ },
213
323
  {
214
324
  "path": "mcp_snapshots/seed_library.json",
215
- "sha256": "64742d18945ed031b09c6ddb784785e7f504b158ed792349fd624e640b84cb14",
325
+ "sha256": "f0210a4b63af53728f3d7a1f56baede0bc110ad902a36530b2b35312c71e69ff",
216
326
  "producer": "tools/gen_conformance.py::mcp_snapshots"
217
327
  },
218
328
  {
219
329
  "path": "mcp_snapshots/_normalizer.json",
220
- "sha256": "e7eebbd0f68d967a6517d23b7d483a3a9296b109f7b7aff4431931877842c347",
330
+ "sha256": "7b9eef3ee22267274657117243086ea52403d33ceb2509f7be314d025fd0872b",
221
331
  "producer": "tools/gen_conformance.py::mcp_snapshots"
222
332
  },
223
333
  {
@@ -261,23 +371,23 @@
261
371
  "producer": "tools/gen_conformance.py::native_stores"
262
372
  },
263
373
  {
264
- "path": "native_stores/claude_code/store/auto_memory/clyde.md",
265
- "sha256": "dd0b03ac047fcc377cf104e3be32807d89d4ac59a3d06b283d3b8b48d85a755c",
374
+ "path": "native_stores/claude_code/store/auto_memory/alpha-agent.md",
375
+ "sha256": "6e4b2469231495cdec10ac65a6eceec8863c9fe2f88b10c75720d6549d2331d3",
266
376
  "producer": "tools/gen_conformance.py::native_stores"
267
377
  },
268
378
  {
269
- "path": "native_stores/claude_code/store/auto_memory/ry-guy.md",
270
- "sha256": "022cde0d5bfdaf2beae38f9b831b8b2c16e2823e705c1f5ff050a9c72374ee86",
379
+ "path": "native_stores/claude_code/store/auto_memory/example-user.md",
380
+ "sha256": "a7cf0628676044c8101b6935411ba3510622c26dd02494e89c3790592909b28b",
271
381
  "producer": "tools/gen_conformance.py::native_stores"
272
382
  },
273
383
  {
274
384
  "path": "native_stores/claude_code/store/knowledge_graph/memory.jsonl",
275
- "sha256": "6d15efda0caabc52037385908b40fcf6becb3bfa7ead33c13535ab6b6cc401a1",
385
+ "sha256": "544f1d0a609272614bd351003859eec31b8beb7874324bb0b8148fac5149f885",
276
386
  "producer": "tools/gen_conformance.py::native_stores"
277
387
  },
278
388
  {
279
389
  "path": "native_stores/claude_code/expected_l5.json",
280
- "sha256": "09b7431c42caf316b99ba4d743a328e83ad066284b6e325e322c5683bbdc38f7",
390
+ "sha256": "9235bd39863934d3ce6686218ab0b535b6c7a6d94348ffdde2f132517da03b8d",
281
391
  "producer": "tools/gen_conformance.py::native_stores"
282
392
  },
283
393
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "_doc": "Fixture-tests the MCP snapshot NORMALIZER itself. Each `normalized` is normalize_snapshot(`raw`) computed by the oracle. Rules: sort object keys (write-time), round floats to 4 dp, drop null + empty-list dict fields, freeze {last_updated, generated_at, generated_from, path} -> '<frozen>', drop latency fields {recognition_latency_us, peer_latencies_us}, decode next_cursor base64 -> {offset:N}. The TS canonicalizer must match each pair.",
2
+ "_doc": "Fixture-tests the MCP snapshot NORMALIZER itself. Each `normalized` is normalize_snapshot(`raw`) computed by the oracle. Rules: sort object keys (write-time), round floats to 4 dp, drop null + empty-list dict fields, freeze {last_updated, generated_at, generated_from, path, age_s} -> '<frozen>', drop latency fields {recognition_latency_us, peer_latencies_us}, decode next_cursor base64 -> {offset:N}. The TS canonicalizer must match each pair.",
3
3
  "cases": [
4
4
  {
5
5
  "_doc": "drops null + empty-list fields (to_dict omission parity)",
@@ -39,7 +39,35 @@
39
39
  "generated_at": "2026-06-30T02:59:09Z",
40
40
  "generated_from": "/tmp/x/agents",
41
41
  "last_updated": "2026-06-30T02:59:09.096243+00:00",
42
- "path": "/tmp/x/clyde.l5.yaml"
42
+ "path": "/tmp/x/alpha-agent.l5.yaml"
43
+ }
44
+ },
45
+ {
46
+ "_doc": "freezes presence age_s (derived from wall-clock now at read time); a null age_s (no parseable heartbeat) still drops like any null",
47
+ "normalized": {
48
+ "live_count": 2,
49
+ "live_sessions": [
50
+ {
51
+ "age_s": "<frozen>",
52
+ "instance": "0192aaaa"
53
+ },
54
+ {
55
+ "instance": "0192bbbb"
56
+ }
57
+ ]
58
+ },
59
+ "raw": {
60
+ "live_count": 2,
61
+ "live_sessions": [
62
+ {
63
+ "age_s": 37,
64
+ "instance": "0192aaaa"
65
+ },
66
+ {
67
+ "age_s": null,
68
+ "instance": "0192bbbb"
69
+ }
70
+ ]
43
71
  }
44
72
  },
45
73
  {
@@ -125,6 +153,8 @@
125
153
  ],
126
154
  "float_precision": 4,
127
155
  "freeze_fields": [
156
+ "age_s",
157
+ "digest",
128
158
  "generated_at",
129
159
  "generated_from",
130
160
  "last_updated",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "args": {
3
- "agent_id": "clyde",
3
+ "agent_id": "alpha-agent",
4
4
  "agent_type": "other",
5
5
  "entities": [
6
6
  {
@@ -9,10 +9,22 @@
9
9
  }
10
10
  ],
11
11
  "mode": "merge",
12
+ "notes": [
13
+ {
14
+ "date": "2026-06-09",
15
+ "text": "snapshot note"
16
+ }
17
+ ],
12
18
  "sessions": [
13
19
  {
14
20
  "date": "2026-06-09"
15
21
  }
22
+ ],
23
+ "workstreams": [
24
+ {
25
+ "name": "SnapshotRelease",
26
+ "status": "active"
27
+ }
16
28
  ]
17
29
  },
18
30
  "tool": "commit_to_federation"
@@ -1,12 +1,19 @@
1
1
  {
2
- "agent_id": "clyde",
2
+ "agent_id": "alpha-agent",
3
+ "digest": "<frozen>",
3
4
  "entities_added": 1,
4
5
  "entities_updated": 0,
5
6
  "last_updated": "<frozen>",
6
7
  "mode": "merge",
8
+ "notes_added": 1,
9
+ "notes_updated": 0,
7
10
  "path": "<frozen>",
8
11
  "sessions_added": 1,
9
12
  "sessions_updated": 0,
10
13
  "total_entities": 1,
11
- "total_sessions": 1
14
+ "total_notes": 1,
15
+ "total_sessions": 1,
16
+ "total_workstreams": 1,
17
+ "workstreams_added": 1,
18
+ "workstreams_updated": 0
12
19
  }
@@ -0,0 +1,7 @@
1
+ {
2
+ "args": {
3
+ "agent_id": "claude-code",
4
+ "digest": "7ec802e0"
5
+ },
6
+ "tool": "explain_memory_change"
7
+ }
@@ -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
+ }
@@ -4,8 +4,18 @@
4
4
  "capability_count": 2,
5
5
  "freshest_session_date": "2026-06-08",
6
6
  "id": "claude-code",
7
- "instance": "pc-threadripper",
7
+ "instance": "workstation-01",
8
8
  "last_updated": "<frozen>",
9
+ "live_count": 1,
10
+ "live_sessions": [
11
+ {
12
+ "age_s": "<frozen>",
13
+ "host": "conformance-host",
14
+ "instance": "0192cccc",
15
+ "project": "bourdon",
16
+ "started_at": "2026-06-29T08:15:00Z"
17
+ }
18
+ ],
9
19
  "recent_activity": [
10
20
  {
11
21
  "date": "2026-06-08",
@@ -39,6 +49,25 @@
39
49
  "freshest_session_date": "2026-06-08",
40
50
  "id": "codex",
41
51
  "last_updated": "<frozen>",
52
+ "live_count": 2,
53
+ "live_sessions": [
54
+ {
55
+ "age_s": "<frozen>",
56
+ "host": "conformance-host",
57
+ "instance": "0192aaaa",
58
+ "project": "bourdon",
59
+ "started_at": "2026-06-29T09:00:00Z",
60
+ "title": "Bourdon federation review"
61
+ },
62
+ {
63
+ "age_s": "<frozen>",
64
+ "host": "conformance-host",
65
+ "instance": "0192bbbb",
66
+ "project": "parity-fixtures",
67
+ "started_at": "2026-06-29T10:30:00Z",
68
+ "title": "Parity fixture harness"
69
+ }
70
+ ],
42
71
  "recent_activity": [
43
72
  {
44
73
  "date": "2026-06-08",
@@ -61,6 +90,23 @@
61
90
  "visibility": "team"
62
91
  }
63
92
  ],
93
+ "recent_threads": [
94
+ {
95
+ "instance": "0192bbbb",
96
+ "title": "Parity fixture harness",
97
+ "updated_at": "2026-06-29T10:30:00Z"
98
+ },
99
+ {
100
+ "instance": "0192aaaa",
101
+ "title": "Bourdon federation review",
102
+ "updated_at": "2026-06-29T09:00:00Z"
103
+ },
104
+ {
105
+ "instance": "0192dddd",
106
+ "title": "Schema drift triage",
107
+ "updated_at": "2026-06-28T22:05:00Z"
108
+ }
109
+ ],
64
110
  "session_count": 2,
65
111
  "source": "conformance-host",
66
112
  "source_kind": "local",
@@ -26,7 +26,7 @@
26
26
  "recent_sessions": [
27
27
  {
28
28
  "agent": "claude-code",
29
- "cwd": "/c/Users/cumul/repos/bourdon",
29
+ "cwd": "/home/example/repos/bourdon",
30
30
  "date": "2026-06-08",
31
31
  "files_touched": [
32
32
  "tools/gen_conformance.py"
@@ -0,0 +1,6 @@
1
+ {
2
+ "args": {
3
+ "agent_id": "claude-code"
4
+ },
5
+ "tool": "list_memory_versions"
6
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "agent_id": "claude-code",
3
+ "count": 1,
4
+ "versions": [
5
+ {
6
+ "agent_id": "claude-code",
7
+ "digest8": "7ec802e0",
8
+ "size_bytes": 426,
9
+ "taken_at": "2026-06-28T12:00:00Z",
10
+ "version_id": "20260628T120000000000Z-7ec802e0"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "args": {
3
+ "access_level": "team",
4
+ "limit": 2,
5
+ "since": "2026-06-01"
6
+ },
7
+ "tool": "list_notes"
8
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "access_level": "team",
3
+ "has_more": true,
4
+ "include_private": false,
5
+ "limit": 2,
6
+ "next_cursor": {
7
+ "offset": 2
8
+ },
9
+ "notes": [
10
+ {
11
+ "agent": "codex",
12
+ "date": "2026-06-10",
13
+ "related_entities": [
14
+ "Bourdon"
15
+ ],
16
+ "text": "Codex public release note."
17
+ },
18
+ {
19
+ "agent": "claude-code",
20
+ "date": "2026-06-09",
21
+ "related_entities": [
22
+ "Bourdon"
23
+ ],
24
+ "text": "Public release note."
25
+ }
26
+ ],
27
+ "since": "2026-06-01"
28
+ }
@@ -20,7 +20,7 @@
20
20
  },
21
21
  {
22
22
  "agent": "claude-code",
23
- "cwd": "/c/Users/cumul/repos/bourdon",
23
+ "cwd": "/home/example/repos/bourdon",
24
24
  "date": "2026-06-08",
25
25
  "files_touched": [
26
26
  "tools/gen_conformance.py"
@@ -0,0 +1,6 @@
1
+ {
2
+ "args": {
3
+ "access_level": "team"
4
+ },
5
+ "tool": "list_workstreams"
6
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "access_level": "team",
3
+ "include_private": false,
4
+ "workstreams": [
5
+ {
6
+ "agents": [
7
+ "claude-code",
8
+ "codex"
9
+ ],
10
+ "last_touched": "2026-06-11",
11
+ "name": "Release",
12
+ "related_entities": [
13
+ "Bourdon"
14
+ ],
15
+ "status": "paused",
16
+ "summary": "Prepare the public Bourdon release.",
17
+ "tags": [
18
+ "launch",
19
+ "coordination"
20
+ ]
21
+ }
22
+ ]
23
+ }
@@ -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
+ }