@getbourdon/conformance 0.1.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 (70) hide show
  1. package/LICENSE +157 -0
  2. package/README.md +26 -0
  3. package/dist/index.cjs +65 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +36 -0
  6. package/dist/index.d.ts +36 -0
  7. package/dist/index.js +36 -0
  8. package/dist/index.js.map +1 -0
  9. package/fixtures/README.md +61 -0
  10. package/fixtures/fed_seed_library/agents/claude-code.l5.yaml +63 -0
  11. package/fixtures/fed_seed_library/agents/codex.l5.yaml +35 -0
  12. package/fixtures/l5_manifests/invalid/bad-agent-type-enum.json +8 -0
  13. package/fixtures/l5_manifests/invalid/bad-spec-version-pattern.json +8 -0
  14. package/fixtures/l5_manifests/invalid/entity-bad-visibility-enum.json +14 -0
  15. package/fixtures/l5_manifests/invalid/entity-missing-name.json +13 -0
  16. package/fixtures/l5_manifests/invalid/missing-required-last_updated.json +7 -0
  17. package/fixtures/l5_manifests/invalid/reasons.json +75 -0
  18. package/fixtures/l5_manifests/valid/full.json +60 -0
  19. package/fixtures/l5_manifests/valid/minimal.json +8 -0
  20. package/fixtures/l5_manifests/valid/team-and-private.json +51 -0
  21. package/fixtures/l5_schema.json +209 -0
  22. package/fixtures/l5_todict.json +253 -0
  23. package/fixtures/leak_cases.json +229 -0
  24. package/fixtures/manifest.json +304 -0
  25. package/fixtures/mcp_snapshots/_normalizer.json +134 -0
  26. package/fixtures/mcp_snapshots/commit_to_federation.req.json +19 -0
  27. package/fixtures/mcp_snapshots/commit_to_federation.res.json +12 -0
  28. package/fixtures/mcp_snapshots/compile_codex_turn.req.json +7 -0
  29. package/fixtures/mcp_snapshots/compile_codex_turn.res.json +5 -0
  30. package/fixtures/mcp_snapshots/export_agents.req.json +4 -0
  31. package/fixtures/mcp_snapshots/export_agents.res.json +73 -0
  32. package/fixtures/mcp_snapshots/find_entity.req.json +7 -0
  33. package/fixtures/mcp_snapshots/find_entity.res.json +24 -0
  34. package/fixtures/mcp_snapshots/get_cross_agent_summary.req.json +7 -0
  35. package/fixtures/mcp_snapshots/get_cross_agent_summary.res.json +42 -0
  36. package/fixtures/mcp_snapshots/get_deeper_context.req.json +7 -0
  37. package/fixtures/mcp_snapshots/get_deeper_context.res.json +7 -0
  38. package/fixtures/mcp_snapshots/list_agents.req.json +4 -0
  39. package/fixtures/mcp_snapshots/list_agents.res.json +6 -0
  40. package/fixtures/mcp_snapshots/list_recent_work.req.json +8 -0
  41. package/fixtures/mcp_snapshots/list_recent_work.res.json +38 -0
  42. package/fixtures/mcp_snapshots/prepare_recognition_context.req.json +7 -0
  43. package/fixtures/mcp_snapshots/prepare_recognition_context.res.json +19 -0
  44. package/fixtures/mcp_snapshots/query_agent_memory.req.json +8 -0
  45. package/fixtures/mcp_snapshots/query_agent_memory.res.json +25 -0
  46. package/fixtures/mcp_snapshots/seed_library.json +24 -0
  47. package/fixtures/native_stores/README.json +24 -0
  48. package/fixtures/native_stores/claude_code/expected_l5.json +72 -0
  49. package/fixtures/native_stores/claude_code/store/auto_memory/MEMORY.md +3 -0
  50. package/fixtures/native_stores/claude_code/store/auto_memory/clyde.md +7 -0
  51. package/fixtures/native_stores/claude_code/store/auto_memory/ry-guy.md +6 -0
  52. package/fixtures/native_stores/claude_code/store/brain/LOG/2026-06-28-pc.md +3 -0
  53. package/fixtures/native_stores/claude_code/store/brain/PROJECTS/Bourdon/OVERVIEW.md +3 -0
  54. package/fixtures/native_stores/claude_code/store/brain/PROJECTS/OldThing/OVERVIEW.md +5 -0
  55. package/fixtures/native_stores/claude_code/store/knowledge_graph/memory.jsonl +3 -0
  56. package/fixtures/native_stores/github_copilot/cache/github-copilot/payload.json +21 -0
  57. package/fixtures/native_stores/github_copilot/expected_l5.json +67 -0
  58. package/fixtures/native_stores/hermes/expected_l5.json +108 -0
  59. package/fixtures/native_stores/hermes/store/.hermes/memories/memory.md +2 -0
  60. package/fixtures/native_stores/hermes/store/.hermes/memories/user.md +2 -0
  61. package/fixtures/native_stores/hermes/store/.hermes/state.db +0 -0
  62. package/fixtures/on_disk/audit.jsonl +5 -0
  63. package/fixtures/on_disk/auth_vectors.json +55 -0
  64. package/fixtures/on_disk/federation.yaml +22 -0
  65. package/fixtures/recognition_golden_v1.yaml +106 -0
  66. package/fixtures/recognition_vectors.json +448 -0
  67. package/fixtures/redaction_battery.json +473 -0
  68. package/fixtures/tier_matrix.json +398 -0
  69. package/fixtures/turn_compiler_vectors.json +645 -0
  70. package/package.json +39 -0
@@ -0,0 +1,473 @@
1
+ {
2
+ "_doc": "Cross-impl redaction parity. Loaders join `fragments`. REDACTED sentinel = '[redacted credential-like text]'. benign uses limit=400. case_variants: one probe per TOKEN pattern -- `correct` always redacts; for case_sensitive patterns `wrong` (case-flipped prefix) must NOT redact, for the IGNORECASE patterns (appl_/hf_) `wrong` still redacts. Pins the per-pattern case flag across impls.",
3
+ "redacted_sentinel": "[redacted credential-like text]",
4
+ "benign_limit": 400,
5
+ "secrets": [
6
+ {
7
+ "fragments": [
8
+ "my api_key is QXp9-not-a-real-key"
9
+ ],
10
+ "expect_redacted": "[redacted credential-like text]",
11
+ "expect_contains_secret": true
12
+ },
13
+ {
14
+ "fragments": [
15
+ "password: hunter2hunter2"
16
+ ],
17
+ "expect_redacted": "[redacted credential-like text]",
18
+ "expect_contains_secret": true
19
+ },
20
+ {
21
+ "fragments": [
22
+ "uses a bearer token to authenticate"
23
+ ],
24
+ "expect_redacted": "[redacted credential-like text]",
25
+ "expect_contains_secret": true
26
+ },
27
+ {
28
+ "fragments": [
29
+ "the service_role key for supabase"
30
+ ],
31
+ "expect_redacted": "[redacted credential-like text]",
32
+ "expect_contains_secret": true
33
+ },
34
+ {
35
+ "fragments": [
36
+ "stripe secret rotated today"
37
+ ],
38
+ "expect_redacted": "[redacted credential-like text]",
39
+ "expect_contains_secret": true
40
+ },
41
+ {
42
+ "fragments": [
43
+ "the keystore password lives in .env"
44
+ ],
45
+ "expect_redacted": "[redacted credential-like text]",
46
+ "expect_contains_secret": true
47
+ },
48
+ {
49
+ "fragments": [
50
+ "sk",
51
+ "_live_",
52
+ "abcd1234efGH5678ijkl"
53
+ ],
54
+ "expect_redacted": "[redacted credential-like text]",
55
+ "expect_contains_secret": true
56
+ },
57
+ {
58
+ "fragments": [
59
+ "appl",
60
+ "_AbCdEfGhIjKlMnOp"
61
+ ],
62
+ "expect_redacted": "[redacted credential-like text]",
63
+ "expect_contains_secret": true
64
+ },
65
+ {
66
+ "fragments": [
67
+ "hf",
68
+ "_abcdefghij1234567890"
69
+ ],
70
+ "expect_redacted": "[redacted credential-like text]",
71
+ "expect_contains_secret": true
72
+ },
73
+ {
74
+ "fragments": [
75
+ "AKIA",
76
+ "IOSFODNN7EXAMPLE"
77
+ ],
78
+ "expect_redacted": "[redacted credential-like text]",
79
+ "expect_contains_secret": true
80
+ },
81
+ {
82
+ "fragments": [
83
+ "ghp_",
84
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
85
+ ],
86
+ "expect_redacted": "[redacted credential-like text]",
87
+ "expect_contains_secret": true
88
+ },
89
+ {
90
+ "fragments": [
91
+ "github_pat_",
92
+ "bbbbbbbbbbbbbbbbbbbbbbbb"
93
+ ],
94
+ "expect_redacted": "[redacted credential-like text]",
95
+ "expect_contains_secret": true
96
+ },
97
+ {
98
+ "fragments": [
99
+ "glpat-",
100
+ "cccccccccccccccccccccc"
101
+ ],
102
+ "expect_redacted": "[redacted credential-like text]",
103
+ "expect_contains_secret": true
104
+ },
105
+ {
106
+ "fragments": [
107
+ "xoxb",
108
+ "-123456789012-abcdefghijklmnop"
109
+ ],
110
+ "expect_redacted": "[redacted credential-like text]",
111
+ "expect_contains_secret": true
112
+ },
113
+ {
114
+ "fragments": [
115
+ "sk-",
116
+ "dddddddddddddddddddddddd"
117
+ ],
118
+ "expect_redacted": "[redacted credential-like text]",
119
+ "expect_contains_secret": true
120
+ },
121
+ {
122
+ "fragments": [
123
+ "sk-ant-",
124
+ "api03-",
125
+ "eeeeeeeeeeeeeeeeeeeeeeee"
126
+ ],
127
+ "expect_redacted": "[redacted credential-like text]",
128
+ "expect_contains_secret": true
129
+ },
130
+ {
131
+ "fragments": [
132
+ "AIza",
133
+ "fffffffffffffffffffffffffffffffffff"
134
+ ],
135
+ "expect_redacted": "[redacted credential-like text]",
136
+ "expect_contains_secret": true
137
+ },
138
+ {
139
+ "fragments": [
140
+ "ya29.",
141
+ "gggggggggggggggggggggggggggggg"
142
+ ],
143
+ "expect_redacted": "[redacted credential-like text]",
144
+ "expect_contains_secret": true
145
+ },
146
+ {
147
+ "fragments": [
148
+ "npm_",
149
+ "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
150
+ ],
151
+ "expect_redacted": "[redacted credential-like text]",
152
+ "expect_contains_secret": true
153
+ },
154
+ {
155
+ "fragments": [
156
+ "eyJ",
157
+ "hbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.",
158
+ "eyJzdWIiOiIxMjM0In0.",
159
+ "Sf",
160
+ "lKxwRJSMeKKF2QT4fwpMeJf36"
161
+ ],
162
+ "expect_redacted": "[redacted credential-like text]",
163
+ "expect_contains_secret": true
164
+ },
165
+ {
166
+ "fragments": [
167
+ "-----BEGIN RSA PRIVATE KEY-----"
168
+ ],
169
+ "expect_redacted": "[redacted credential-like text]",
170
+ "expect_contains_secret": true
171
+ }
172
+ ],
173
+ "benign": [
174
+ {
175
+ "text": "We shipped the recognition timing layer for Bourdon",
176
+ "expect_redacted": "We shipped the recognition timing layer for Bourdon",
177
+ "expect_contains_secret": false
178
+ },
179
+ {
180
+ "text": "Fixed the desktop tray autostart on Windows",
181
+ "expect_redacted": "Fixed the desktop tray autostart on Windows",
182
+ "expect_contains_secret": false
183
+ },
184
+ {
185
+ "text": "task-management-dashboard-rewrite-was-completed-today",
186
+ "expect_redacted": "task-management-dashboard-rewrite-was-completed-today",
187
+ "expect_contains_secret": false
188
+ },
189
+ {
190
+ "text": "the risk-assessment-and-disk-usage-monitoring-tool shipped",
191
+ "expect_redacted": "the risk-assessment-and-disk-usage-monitoring-tool shipped",
192
+ "expect_contains_secret": false
193
+ },
194
+ {
195
+ "text": "Bourdon recognition-first runtime layer is the core promise",
196
+ "expect_redacted": "Bourdon recognition-first runtime layer is the core promise",
197
+ "expect_contains_secret": false
198
+ }
199
+ ],
200
+ "case_variants": [
201
+ {
202
+ "pattern": "stripe_sk",
203
+ "case_sensitive": true,
204
+ "correct": {
205
+ "fragments": [
206
+ "sk",
207
+ "_live_",
208
+ "abcd1234efGH5678ijkl"
209
+ ],
210
+ "expect_redacted": "[redacted credential-like text]",
211
+ "expect_contains_secret": true
212
+ },
213
+ "wrong": {
214
+ "fragments": [
215
+ "SK_LIVE_ABCD1234EFGH5678IJKL"
216
+ ],
217
+ "expect_redacted": "SK_LIVE_ABCD1234EFGH5678IJKL",
218
+ "expect_contains_secret": false
219
+ }
220
+ },
221
+ {
222
+ "pattern": "revenuecat_appl",
223
+ "case_sensitive": false,
224
+ "correct": {
225
+ "fragments": [
226
+ "appl",
227
+ "_AbCdEfGhIjKlMnOp"
228
+ ],
229
+ "expect_redacted": "[redacted credential-like text]",
230
+ "expect_contains_secret": true
231
+ },
232
+ "wrong": {
233
+ "fragments": [
234
+ "APPL",
235
+ "_ABCDEFGHIJKLMNOP"
236
+ ],
237
+ "expect_redacted": "[redacted credential-like text]",
238
+ "expect_contains_secret": true
239
+ }
240
+ },
241
+ {
242
+ "pattern": "huggingface_hf",
243
+ "case_sensitive": false,
244
+ "correct": {
245
+ "fragments": [
246
+ "hf",
247
+ "_abcdefghij1234567890"
248
+ ],
249
+ "expect_redacted": "[redacted credential-like text]",
250
+ "expect_contains_secret": true
251
+ },
252
+ "wrong": {
253
+ "fragments": [
254
+ "HF",
255
+ "_ABCDEFGHIJ1234567890"
256
+ ],
257
+ "expect_redacted": "[redacted credential-like text]",
258
+ "expect_contains_secret": true
259
+ }
260
+ },
261
+ {
262
+ "pattern": "aws_akia",
263
+ "case_sensitive": true,
264
+ "correct": {
265
+ "fragments": [
266
+ "AKIA",
267
+ "IOSFODNN7EXAMPLE"
268
+ ],
269
+ "expect_redacted": "[redacted credential-like text]",
270
+ "expect_contains_secret": true
271
+ },
272
+ "wrong": {
273
+ "fragments": [
274
+ "akiaiosfodnn7example"
275
+ ],
276
+ "expect_redacted": "akiaiosfodnn7example",
277
+ "expect_contains_secret": false
278
+ }
279
+ },
280
+ {
281
+ "pattern": "github_ghp",
282
+ "case_sensitive": true,
283
+ "correct": {
284
+ "fragments": [
285
+ "ghp_",
286
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
287
+ ],
288
+ "expect_redacted": "[redacted credential-like text]",
289
+ "expect_contains_secret": true
290
+ },
291
+ "wrong": {
292
+ "fragments": [
293
+ "GHP_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
294
+ ],
295
+ "expect_redacted": "GHP_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
296
+ "expect_contains_secret": false
297
+ }
298
+ },
299
+ {
300
+ "pattern": "github_pat",
301
+ "case_sensitive": true,
302
+ "correct": {
303
+ "fragments": [
304
+ "github_pat_",
305
+ "bbbbbbbbbbbbbbbbbbbbbbbb"
306
+ ],
307
+ "expect_redacted": "[redacted credential-like text]",
308
+ "expect_contains_secret": true
309
+ },
310
+ "wrong": {
311
+ "fragments": [
312
+ "GITHUB_PAT_BBBBBBBBBBBBBBBBBBBBBBBB"
313
+ ],
314
+ "expect_redacted": "GITHUB_PAT_BBBBBBBBBBBBBBBBBBBBBBBB",
315
+ "expect_contains_secret": false
316
+ }
317
+ },
318
+ {
319
+ "pattern": "gitlab_glpat",
320
+ "case_sensitive": true,
321
+ "correct": {
322
+ "fragments": [
323
+ "glpat-",
324
+ "cccccccccccccccccccccc"
325
+ ],
326
+ "expect_redacted": "[redacted credential-like text]",
327
+ "expect_contains_secret": true
328
+ },
329
+ "wrong": {
330
+ "fragments": [
331
+ "GLPAT-CCCCCCCCCCCCCCCCCCCCCC"
332
+ ],
333
+ "expect_redacted": "GLPAT-CCCCCCCCCCCCCCCCCCCCCC",
334
+ "expect_contains_secret": false
335
+ }
336
+ },
337
+ {
338
+ "pattern": "slack_xoxb",
339
+ "case_sensitive": true,
340
+ "correct": {
341
+ "fragments": [
342
+ "xoxb",
343
+ "-123456789012-abcdefghijklmnop"
344
+ ],
345
+ "expect_redacted": "[redacted credential-like text]",
346
+ "expect_contains_secret": true
347
+ },
348
+ "wrong": {
349
+ "fragments": [
350
+ "XOXB-123456789012-ABCDEFGHIJKLMNOP"
351
+ ],
352
+ "expect_redacted": "XOXB-123456789012-ABCDEFGHIJKLMNOP",
353
+ "expect_contains_secret": false
354
+ }
355
+ },
356
+ {
357
+ "pattern": "openai_anthropic_sk",
358
+ "case_sensitive": true,
359
+ "correct": {
360
+ "fragments": [
361
+ "sk-",
362
+ "dddddddddddddddddddddddd"
363
+ ],
364
+ "expect_redacted": "[redacted credential-like text]",
365
+ "expect_contains_secret": true
366
+ },
367
+ "wrong": {
368
+ "fragments": [
369
+ "SK-DDDDDDDDDDDDDDDDDDDDDDDD"
370
+ ],
371
+ "expect_redacted": "SK-DDDDDDDDDDDDDDDDDDDDDDDD",
372
+ "expect_contains_secret": false
373
+ }
374
+ },
375
+ {
376
+ "pattern": "google_aiza",
377
+ "case_sensitive": true,
378
+ "correct": {
379
+ "fragments": [
380
+ "AIza",
381
+ "fffffffffffffffffffffffffffffffffff"
382
+ ],
383
+ "expect_redacted": "[redacted credential-like text]",
384
+ "expect_contains_secret": true
385
+ },
386
+ "wrong": {
387
+ "fragments": [
388
+ "AIZAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
389
+ ],
390
+ "expect_redacted": "AIZAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
391
+ "expect_contains_secret": false
392
+ }
393
+ },
394
+ {
395
+ "pattern": "google_ya29",
396
+ "case_sensitive": true,
397
+ "correct": {
398
+ "fragments": [
399
+ "ya29.",
400
+ "gggggggggggggggggggggggggggggg"
401
+ ],
402
+ "expect_redacted": "[redacted credential-like text]",
403
+ "expect_contains_secret": true
404
+ },
405
+ "wrong": {
406
+ "fragments": [
407
+ "YA29.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"
408
+ ],
409
+ "expect_redacted": "YA29.GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG",
410
+ "expect_contains_secret": false
411
+ }
412
+ },
413
+ {
414
+ "pattern": "npm_token",
415
+ "case_sensitive": true,
416
+ "correct": {
417
+ "fragments": [
418
+ "npm_",
419
+ "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
420
+ ],
421
+ "expect_redacted": "[redacted credential-like text]",
422
+ "expect_contains_secret": true
423
+ },
424
+ "wrong": {
425
+ "fragments": [
426
+ "NPM_HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
427
+ ],
428
+ "expect_redacted": "NPM_HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH",
429
+ "expect_contains_secret": false
430
+ }
431
+ },
432
+ {
433
+ "pattern": "jwt",
434
+ "case_sensitive": true,
435
+ "correct": {
436
+ "fragments": [
437
+ "eyJ",
438
+ "hbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.",
439
+ "eyJzdWIiOiIxMjM0In0.",
440
+ "Sf",
441
+ "lKxwRJSMeKKF2QT4fwpMeJf36"
442
+ ],
443
+ "expect_redacted": "[redacted credential-like text]",
444
+ "expect_contains_secret": true
445
+ },
446
+ "wrong": {
447
+ "fragments": [
448
+ "EYJHBGCIOIJIUZI1NIISINR5CCI6IKPXVCJ9.EYJZDWIIOIIXMJM0IN0.SFLKXWRJSMEKKF2QT4FWPMEJF36"
449
+ ],
450
+ "expect_redacted": "EYJHBGCIOIJIUZI1NIISINR5CCI6IKPXVCJ9.EYJZDWIIOIIXMJM0IN0.SFLKXWRJSMEKKF2QT4FWPMEJF36",
451
+ "expect_contains_secret": false
452
+ }
453
+ },
454
+ {
455
+ "pattern": "pem_private_key",
456
+ "case_sensitive": true,
457
+ "correct": {
458
+ "fragments": [
459
+ "-----BEGIN RSA PRIVATE KEY-----"
460
+ ],
461
+ "expect_redacted": "[redacted credential-like text]",
462
+ "expect_contains_secret": true
463
+ },
464
+ "wrong": {
465
+ "fragments": [
466
+ "-----begin rsa private key-----"
467
+ ],
468
+ "expect_redacted": "-----begin rsa private key-----",
469
+ "expect_contains_secret": false
470
+ }
471
+ }
472
+ ]
473
+ }