@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,645 @@
1
+ {
2
+ "_doc": "Cross-impl turn-compiler parity. Oracle = the REAL compile_codex_turn / compile_cursor_turn, driven over a temp copy of `seed_library` with the wall clock FROZEN to frozen_clock so recency is deterministic. codex `brief` is TurnBrief.to_dict() with the resolved top-level cwd swapped back to the logical input string (the only env-bound field; repo.root/remote are null for the synthetic non-git cwd) -- the TS mirror passes the same cwd and applies the identical swap. BriefItem.score is round(.,1); recognition_confidence is the shared tier-only bucket. The pinned codex_cwd_hit item folds cwd-hit (25) + recency (15) + a NAME_SUBSTRING prompt tier into one session item. cursor briefs drop the runtime compile_latency_us; matched_entities[].score is round(.,2). codex DROPS recency-only non-vague candidates (observe), cursor INCLUDES score>0 recency matches but still buckets confidence 'none' without a name/alias tier hit.",
3
+ "frozen_clock": "2026-06-29",
4
+ "codex_schema_version": "codex-turn-brief/v1",
5
+ "cursor_schema_version": "cursor-turn-brief/v1",
6
+ "seed_library": {
7
+ "claude-code.l5.yaml": {
8
+ "spec_version": "0.1",
9
+ "agent": {
10
+ "id": "claude-code",
11
+ "type": "code-assistant"
12
+ },
13
+ "last_updated": "2026-06-29T12:00:00+00:00",
14
+ "known_entities": [
15
+ {
16
+ "name": "Bourdon",
17
+ "type": "project",
18
+ "aliases": [
19
+ "NeuroLayer",
20
+ "Continuo"
21
+ ],
22
+ "summary": "Cross-agent memory federation.",
23
+ "last_touched": "2026-06-28",
24
+ "visibility": "public"
25
+ },
26
+ {
27
+ "name": "Roadmap",
28
+ "type": "concept",
29
+ "summary": "Phase 1.7 federation roadmap.",
30
+ "tags": [
31
+ "team"
32
+ ],
33
+ "last_touched": "2026-06-10",
34
+ "visibility": "team"
35
+ }
36
+ ],
37
+ "recent_sessions": [
38
+ {
39
+ "date": "2026-06-28",
40
+ "cwd": "/projects/bourdon",
41
+ "project_focus": [
42
+ "Bourdon"
43
+ ],
44
+ "key_actions": [
45
+ "wired the turn compiler"
46
+ ],
47
+ "files_touched": [
48
+ "core/codex_turn_compiler.py"
49
+ ],
50
+ "visibility": "public"
51
+ }
52
+ ]
53
+ },
54
+ "codex.l5.yaml": {
55
+ "spec_version": "0.1",
56
+ "agent": {
57
+ "id": "codex",
58
+ "type": "code-assistant"
59
+ },
60
+ "last_updated": "2026-06-29T12:00:00+00:00",
61
+ "known_entities": [
62
+ {
63
+ "name": "Bourdon",
64
+ "type": "project",
65
+ "summary": "Federation, codex view.",
66
+ "last_touched": "2026-06-28",
67
+ "visibility": "public"
68
+ }
69
+ ]
70
+ }
71
+ },
72
+ "codex_cases": [
73
+ {
74
+ "name": "codex_cwd_hit",
75
+ "prompt": "what's next on Bourdon",
76
+ "cwd": "/projects/bourdon",
77
+ "access_level": "team",
78
+ "recognition_confidence": "medium",
79
+ "item_scores": [
80
+ {
81
+ "rank": 1,
82
+ "name": "Bourdon",
83
+ "kind": "session",
84
+ "source": "l6_federation",
85
+ "score": 86.0
86
+ },
87
+ {
88
+ "rank": 2,
89
+ "name": "Bourdon",
90
+ "kind": "project",
91
+ "source": "l6_federation",
92
+ "score": 60.0
93
+ }
94
+ ],
95
+ "brief": {
96
+ "schema_version": "codex-turn-brief/v1",
97
+ "prompt": "what's next on Bourdon",
98
+ "cwd": "/projects/bourdon",
99
+ "repo": {
100
+ "name": "bourdon",
101
+ "root": null,
102
+ "remote": null
103
+ },
104
+ "health": {
105
+ "native_stage1": "unknown",
106
+ "strategy": "turn_compiled"
107
+ },
108
+ "routing": {
109
+ "mode": "inject",
110
+ "primary_surface": "explicit_pre_turn",
111
+ "surfaces": [
112
+ "explicit_pre_turn",
113
+ "mcp",
114
+ "repo_overlay_candidate"
115
+ ],
116
+ "confidence": "medium",
117
+ "reason": "top anchor scored 86.0; source mix spans 1 surface(s); repo identity available as bourdon",
118
+ "suppressed_surfaces": [],
119
+ "next_action": "prepend delivery.explicit_text before the Codex turn"
120
+ },
121
+ "items": [
122
+ {
123
+ "rank": 1,
124
+ "score": 86.0,
125
+ "kind": "session",
126
+ "name": "Bourdon",
127
+ "summary": "wired the turn compiler",
128
+ "reason": "prompt matched Bourdon; cwd matched prior Codex thread; repo name matched candidate; cwd basename matched candidate; recent work; continuity evidence",
129
+ "source": "l6_federation",
130
+ "source_agents": [
131
+ "claude-code"
132
+ ],
133
+ "evidence": [
134
+ "session date 2026-06-28",
135
+ "cwd /projects/bourdon",
136
+ "files touched: core/codex_turn_compiler.py"
137
+ ]
138
+ },
139
+ {
140
+ "rank": 2,
141
+ "score": 60.0,
142
+ "kind": "project",
143
+ "name": "Bourdon",
144
+ "summary": "Cross-agent memory federation.",
145
+ "reason": "prompt matched Bourdon; repo name matched candidate; cwd basename matched candidate; cross-agent agreement",
146
+ "source": "l6_federation",
147
+ "source_agents": [
148
+ "claude-code",
149
+ "codex"
150
+ ],
151
+ "evidence": [
152
+ "known by claude-code, codex",
153
+ "aliases: NeuroLayer, Continuo"
154
+ ]
155
+ }
156
+ ],
157
+ "delivery": {
158
+ "explicit_text": "Bourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: bourdon\nUse these as recognition anchors, not as a final answer:\n1. Bourdon [session, l6_federation, score 86.0] via claude-code\n wired the turn compiler\n Why: prompt matched Bourdon; cwd matched prior Codex thread; repo name matched candidate; cwd basename matched candidate; recent work; continuity evidence\n2. Bourdon [project, l6_federation, score 60.0] via claude-code, codex\n Cross-agent memory federation.\n Why: prompt matched Bourdon; repo name matched candidate; cwd basename matched candidate; cross-agent agreement",
159
+ "mcp_payload": {
160
+ "schema_version": "codex-turn-brief/v1",
161
+ "strategy": "turn_compiled",
162
+ "native_stage1": "unknown",
163
+ "repo": {
164
+ "name": "bourdon",
165
+ "root": null,
166
+ "remote": null
167
+ },
168
+ "items": [
169
+ {
170
+ "rank": 1,
171
+ "score": 86.0,
172
+ "kind": "session",
173
+ "name": "Bourdon",
174
+ "summary": "wired the turn compiler",
175
+ "reason": "prompt matched Bourdon; cwd matched prior Codex thread; repo name matched candidate; cwd basename matched candidate; recent work; continuity evidence",
176
+ "source": "l6_federation",
177
+ "source_agents": [
178
+ "claude-code"
179
+ ],
180
+ "evidence": [
181
+ "session date 2026-06-28",
182
+ "cwd /projects/bourdon",
183
+ "files touched: core/codex_turn_compiler.py"
184
+ ]
185
+ },
186
+ {
187
+ "rank": 2,
188
+ "score": 60.0,
189
+ "kind": "project",
190
+ "name": "Bourdon",
191
+ "summary": "Cross-agent memory federation.",
192
+ "reason": "prompt matched Bourdon; repo name matched candidate; cwd basename matched candidate; cross-agent agreement",
193
+ "source": "l6_federation",
194
+ "source_agents": [
195
+ "claude-code",
196
+ "codex"
197
+ ],
198
+ "evidence": [
199
+ "known by claude-code, codex",
200
+ "aliases: NeuroLayer, Continuo"
201
+ ]
202
+ }
203
+ ],
204
+ "prompt_context": "Bourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: bourdon\nUse these as recognition anchors, not as a final answer:\n1. Bourdon [session, l6_federation, score 86.0] via claude-code\n wired the turn compiler\n Why: prompt matched Bourdon; cwd matched prior Codex thread; repo name matched candidate; cwd basename matched candidate; recent work; continuity evidence\n2. Bourdon [project, l6_federation, score 60.0] via claude-code, codex\n Cross-agent memory federation.\n Why: prompt matched Bourdon; repo name matched candidate; cwd basename matched candidate; cross-agent agreement"
205
+ },
206
+ "memory_md_block": "<!-- BEGIN BOURDON TURN BRIEF -->\nBourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: bourdon\nUse these as recognition anchors, not as a final answer:\n1. Bourdon [session, l6_federation, score 86.0] via claude-code\n wired the turn compiler\n Why: prompt matched Bourdon; cwd matched prior Codex thread; repo name matched candidate; cwd basename matched candidate; recent work; continuity evidence\n2. Bourdon [project, l6_federation, score 60.0] via claude-code, codex\n Cross-agent memory federation.\n Why: prompt matched Bourdon; repo name matched candidate; cwd basename matched candidate; cross-agent agreement\n<!-- END BOURDON TURN BRIEF -->",
207
+ "fallback_block": "<!-- BEGIN Bourdon Turn Brief -->\nBourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: bourdon\nUse these as recognition anchors, not as a final answer:\n1. Bourdon [session, l6_federation, score 86.0] via claude-code\n wired the turn compiler\n Why: prompt matched Bourdon; cwd matched prior Codex thread; repo name matched candidate; cwd basename matched candidate; recent work; continuity evidence\n2. Bourdon [project, l6_federation, score 60.0] via claude-code, codex\n Cross-agent memory federation.\n Why: prompt matched Bourdon; repo name matched candidate; cwd basename matched candidate; cross-agent agreement\n<!-- END Bourdon Turn Brief -->",
208
+ "repo_overlay_block": "<!-- BEGIN BOURDON REPO OVERLAY CANDIDATE -->\nRepo overlay candidate for bourdon\nUse only as an explicit, human-reviewed overlay candidate.\n\nBourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: bourdon\nUse these as recognition anchors, not as a final answer:\n1. Bourdon [session, l6_federation, score 86.0] via claude-code\n wired the turn compiler\n Why: prompt matched Bourdon; cwd matched prior Codex thread; repo name matched candidate; cwd basename matched candidate; recent work; continuity evidence\n2. Bourdon [project, l6_federation, score 60.0] via claude-code, codex\n Cross-agent memory federation.\n Why: prompt matched Bourdon; repo name matched candidate; cwd basename matched candidate; cross-agent agreement\n<!-- END BOURDON REPO OVERLAY CANDIDATE -->"
209
+ },
210
+ "trace": {
211
+ "routing_decision": {
212
+ "primary_surface": "explicit_pre_turn",
213
+ "confidence": "medium",
214
+ "reason": "top anchor scored 86.0; source mix spans 1 surface(s); repo identity available as bourdon"
215
+ },
216
+ "surface_health": {
217
+ "native_stage1": "unknown",
218
+ "repo_identity": "available",
219
+ "candidate_count": 2
220
+ },
221
+ "source_mix": {
222
+ "candidates": {
223
+ "l6_federation": 2
224
+ },
225
+ "selected": {
226
+ "l6_federation": 2
227
+ },
228
+ "ignored": {}
229
+ },
230
+ "selected_items": [
231
+ {
232
+ "name": "Bourdon",
233
+ "kind": "session",
234
+ "score": 86.0,
235
+ "dominant_components": [
236
+ "prompt",
237
+ "cwd_repo",
238
+ "recency"
239
+ ],
240
+ "reason": "prompt matched Bourdon; cwd matched prior Codex thread; repo name matched candidate; cwd basename matched candidate; recent work; continuity evidence"
241
+ },
242
+ {
243
+ "name": "Bourdon",
244
+ "kind": "project",
245
+ "score": 60.0,
246
+ "dominant_components": [
247
+ "prompt",
248
+ "cwd_repo",
249
+ "cross_agent"
250
+ ],
251
+ "reason": "prompt matched Bourdon; repo name matched candidate; cwd basename matched candidate; cross-agent agreement"
252
+ }
253
+ ]
254
+ },
255
+ "diagnostics": {
256
+ "scoring_components": {
257
+ "Bourdon": {
258
+ "prompt": 36.0,
259
+ "cwd_repo": 18.0,
260
+ "recency": 0.0,
261
+ "cross_agent": 6.0,
262
+ "continuity": 0.0,
263
+ "penalty": 0.0
264
+ }
265
+ },
266
+ "candidate_count": 2,
267
+ "delivery": "all",
268
+ "max_items": 6,
269
+ "max_chars": 1800,
270
+ "stage1_jobs": {
271
+ "total": 0,
272
+ "by_status": {},
273
+ "error_classes": {}
274
+ },
275
+ "exhausted_paths": [
276
+ "native_stage1_primary",
277
+ "static_fallback_primary",
278
+ "l5_export_only",
279
+ "sync_native_only"
280
+ ]
281
+ }
282
+ }
283
+ },
284
+ {
285
+ "name": "codex_prompt_only",
286
+ "prompt": "tell me about the Roadmap",
287
+ "cwd": "/projects/unrelated",
288
+ "access_level": "team",
289
+ "recognition_confidence": "medium",
290
+ "item_scores": [
291
+ {
292
+ "rank": 1,
293
+ "name": "Roadmap",
294
+ "kind": "entity",
295
+ "source": "l6_federation",
296
+ "score": 36.0
297
+ }
298
+ ],
299
+ "brief": {
300
+ "schema_version": "codex-turn-brief/v1",
301
+ "prompt": "tell me about the Roadmap",
302
+ "cwd": "/projects/unrelated",
303
+ "repo": {
304
+ "name": "unrelated",
305
+ "root": null,
306
+ "remote": null
307
+ },
308
+ "health": {
309
+ "native_stage1": "unknown",
310
+ "strategy": "turn_compiled"
311
+ },
312
+ "routing": {
313
+ "mode": "inject",
314
+ "primary_surface": "explicit_pre_turn",
315
+ "surfaces": [
316
+ "explicit_pre_turn",
317
+ "mcp"
318
+ ],
319
+ "confidence": "medium",
320
+ "reason": "top anchor scored 36.0; source mix spans 1 surface(s); repo identity available as unrelated",
321
+ "suppressed_surfaces": [],
322
+ "next_action": "prepend delivery.explicit_text before the Codex turn"
323
+ },
324
+ "items": [
325
+ {
326
+ "rank": 1,
327
+ "score": 36.0,
328
+ "kind": "entity",
329
+ "name": "Roadmap",
330
+ "summary": "Phase 1.7 federation roadmap.",
331
+ "reason": "prompt matched Roadmap",
332
+ "source": "l6_federation",
333
+ "source_agents": [
334
+ "claude-code"
335
+ ],
336
+ "evidence": [
337
+ "known by claude-code"
338
+ ]
339
+ }
340
+ ],
341
+ "delivery": {
342
+ "explicit_text": "Bourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: unrelated\nUse these as recognition anchors, not as a final answer:\n1. Roadmap [entity, l6_federation, score 36.0] via claude-code\n Phase 1.7 federation roadmap.\n Why: prompt matched Roadmap",
343
+ "mcp_payload": {
344
+ "schema_version": "codex-turn-brief/v1",
345
+ "strategy": "turn_compiled",
346
+ "native_stage1": "unknown",
347
+ "repo": {
348
+ "name": "unrelated",
349
+ "root": null,
350
+ "remote": null
351
+ },
352
+ "items": [
353
+ {
354
+ "rank": 1,
355
+ "score": 36.0,
356
+ "kind": "entity",
357
+ "name": "Roadmap",
358
+ "summary": "Phase 1.7 federation roadmap.",
359
+ "reason": "prompt matched Roadmap",
360
+ "source": "l6_federation",
361
+ "source_agents": [
362
+ "claude-code"
363
+ ],
364
+ "evidence": [
365
+ "known by claude-code"
366
+ ]
367
+ }
368
+ ],
369
+ "prompt_context": "Bourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: unrelated\nUse these as recognition anchors, not as a final answer:\n1. Roadmap [entity, l6_federation, score 36.0] via claude-code\n Phase 1.7 federation roadmap.\n Why: prompt matched Roadmap"
370
+ },
371
+ "memory_md_block": "<!-- BEGIN BOURDON TURN BRIEF -->\nBourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: unrelated\nUse these as recognition anchors, not as a final answer:\n1. Roadmap [entity, l6_federation, score 36.0] via claude-code\n Phase 1.7 federation roadmap.\n Why: prompt matched Roadmap\n<!-- END BOURDON TURN BRIEF -->",
372
+ "fallback_block": "<!-- BEGIN Bourdon Turn Brief -->\nBourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: unrelated\nUse these as recognition anchors, not as a final answer:\n1. Roadmap [entity, l6_federation, score 36.0] via claude-code\n Phase 1.7 federation roadmap.\n Why: prompt matched Roadmap\n<!-- END Bourdon Turn Brief -->",
373
+ "repo_overlay_block": "<!-- BEGIN BOURDON REPO OVERLAY CANDIDATE -->\nRepo overlay candidate for unrelated\nUse only as an explicit, human-reviewed overlay candidate.\n\nBourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: unrelated\nUse these as recognition anchors, not as a final answer:\n1. Roadmap [entity, l6_federation, score 36.0] via claude-code\n Phase 1.7 federation roadmap.\n Why: prompt matched Roadmap\n<!-- END BOURDON REPO OVERLAY CANDIDATE -->"
374
+ },
375
+ "trace": {
376
+ "routing_decision": {
377
+ "primary_surface": "explicit_pre_turn",
378
+ "confidence": "medium",
379
+ "reason": "top anchor scored 36.0; source mix spans 1 surface(s); repo identity available as unrelated"
380
+ },
381
+ "surface_health": {
382
+ "native_stage1": "unknown",
383
+ "repo_identity": "available",
384
+ "candidate_count": 1
385
+ },
386
+ "source_mix": {
387
+ "candidates": {
388
+ "l6_federation": 1
389
+ },
390
+ "selected": {
391
+ "l6_federation": 1
392
+ },
393
+ "ignored": {}
394
+ },
395
+ "selected_items": [
396
+ {
397
+ "name": "Roadmap",
398
+ "kind": "entity",
399
+ "score": 36.0,
400
+ "dominant_components": [
401
+ "prompt"
402
+ ],
403
+ "reason": "prompt matched Roadmap"
404
+ }
405
+ ]
406
+ },
407
+ "diagnostics": {
408
+ "scoring_components": {
409
+ "Roadmap": {
410
+ "prompt": 36.0,
411
+ "cwd_repo": 0.0,
412
+ "recency": 0.0,
413
+ "cross_agent": 0.0,
414
+ "continuity": 0.0,
415
+ "penalty": 0.0
416
+ }
417
+ },
418
+ "candidate_count": 1,
419
+ "delivery": "all",
420
+ "max_items": 6,
421
+ "max_chars": 1800,
422
+ "stage1_jobs": {
423
+ "total": 0,
424
+ "by_status": {},
425
+ "error_classes": {}
426
+ },
427
+ "exhausted_paths": [
428
+ "native_stage1_primary",
429
+ "static_fallback_primary",
430
+ "l5_export_only",
431
+ "sync_native_only"
432
+ ]
433
+ }
434
+ }
435
+ },
436
+ {
437
+ "name": "codex_observe_no_match",
438
+ "prompt": "what is the weather today",
439
+ "cwd": "/projects/unrelated",
440
+ "access_level": "team",
441
+ "recognition_confidence": "none",
442
+ "item_scores": [],
443
+ "brief": {
444
+ "schema_version": "codex-turn-brief/v1",
445
+ "prompt": "what is the weather today",
446
+ "cwd": "/projects/unrelated",
447
+ "repo": {
448
+ "name": "unrelated",
449
+ "root": null,
450
+ "remote": null
451
+ },
452
+ "health": {
453
+ "native_stage1": "unknown",
454
+ "strategy": "turn_compiled"
455
+ },
456
+ "routing": {
457
+ "mode": "observe",
458
+ "primary_surface": "none",
459
+ "surfaces": [],
460
+ "confidence": "none",
461
+ "reason": "no high-confidence recognition anchors",
462
+ "suppressed_surfaces": [
463
+ "native_stage1",
464
+ "memory_md",
465
+ "fallback_file"
466
+ ],
467
+ "next_action": "continue without recognition injection"
468
+ },
469
+ "items": [],
470
+ "delivery": {
471
+ "explicit_text": "Bourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: unrelated\nNo high-confidence recognition anchors found for this turn.",
472
+ "mcp_payload": {
473
+ "schema_version": "codex-turn-brief/v1",
474
+ "strategy": "turn_compiled",
475
+ "native_stage1": "unknown",
476
+ "repo": {
477
+ "name": "unrelated",
478
+ "root": null,
479
+ "remote": null
480
+ },
481
+ "items": [],
482
+ "prompt_context": "Bourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: unrelated\nNo high-confidence recognition anchors found for this turn."
483
+ },
484
+ "memory_md_block": "<!-- BEGIN BOURDON TURN BRIEF -->\nBourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: unrelated\nNo high-confidence recognition anchors found for this turn.\n<!-- END BOURDON TURN BRIEF -->",
485
+ "fallback_block": "<!-- BEGIN Bourdon Turn Brief -->\nBourdon turn recognition brief\nStrategy: turn-scoped compiler; native Stage 1 is unknown.\nRepo: unrelated\nNo high-confidence recognition anchors found for this turn.\n<!-- END Bourdon Turn Brief -->",
486
+ "repo_overlay_block": ""
487
+ },
488
+ "trace": {
489
+ "routing_decision": {
490
+ "primary_surface": "none",
491
+ "confidence": "none",
492
+ "reason": "no high-confidence recognition anchors"
493
+ },
494
+ "surface_health": {
495
+ "native_stage1": "unknown",
496
+ "repo_identity": "available",
497
+ "candidate_count": 0
498
+ },
499
+ "source_mix": {
500
+ "candidates": {},
501
+ "selected": {},
502
+ "ignored": {}
503
+ },
504
+ "selected_items": []
505
+ },
506
+ "diagnostics": {
507
+ "scoring_components": {},
508
+ "candidate_count": 0,
509
+ "delivery": "all",
510
+ "max_items": 6,
511
+ "max_chars": 1800,
512
+ "stage1_jobs": {
513
+ "total": 0,
514
+ "by_status": {},
515
+ "error_classes": {}
516
+ },
517
+ "exhausted_paths": [
518
+ "native_stage1_primary",
519
+ "static_fallback_primary",
520
+ "l5_export_only",
521
+ "sync_native_only"
522
+ ]
523
+ }
524
+ }
525
+ }
526
+ ],
527
+ "cursor_cases": [
528
+ {
529
+ "name": "cursor_cwd_hit",
530
+ "prompt": "what's next on Bourdon",
531
+ "cwd": "/projects/bourdon",
532
+ "access_level": "team",
533
+ "recognition_confidence": "medium",
534
+ "cwd_project": "bourdon",
535
+ "prompt_tokens": [
536
+ "next",
537
+ "bourdon"
538
+ ],
539
+ "matched_entities": [
540
+ {
541
+ "name": "Bourdon",
542
+ "type": "project",
543
+ "agent": "claude-code",
544
+ "summary": "Cross-agent memory federation.",
545
+ "score": 6.0
546
+ },
547
+ {
548
+ "name": "Bourdon",
549
+ "type": "project",
550
+ "agent": "codex",
551
+ "summary": "Federation, codex view.",
552
+ "score": 6.0
553
+ },
554
+ {
555
+ "name": "Roadmap",
556
+ "type": "concept",
557
+ "agent": "claude-code",
558
+ "summary": "Phase 1.7 federation roadmap.",
559
+ "score": 0.5
560
+ }
561
+ ],
562
+ "routing": {
563
+ "confidence": "medium",
564
+ "strategy": "turn_compiled"
565
+ }
566
+ },
567
+ {
568
+ "name": "cursor_prompt_only",
569
+ "prompt": "tell me about the Roadmap",
570
+ "cwd": "/projects/unrelated",
571
+ "access_level": "team",
572
+ "recognition_confidence": "medium",
573
+ "cwd_project": "unrelated",
574
+ "prompt_tokens": [
575
+ "roadmap"
576
+ ],
577
+ "matched_entities": [
578
+ {
579
+ "name": "Roadmap",
580
+ "type": "concept",
581
+ "agent": "claude-code",
582
+ "summary": "Phase 1.7 federation roadmap.",
583
+ "score": 2.5
584
+ },
585
+ {
586
+ "name": "Bourdon",
587
+ "type": "project",
588
+ "agent": "claude-code",
589
+ "summary": "Cross-agent memory federation.",
590
+ "score": 1.0
591
+ },
592
+ {
593
+ "name": "Bourdon",
594
+ "type": "project",
595
+ "agent": "codex",
596
+ "summary": "Federation, codex view.",
597
+ "score": 1.0
598
+ }
599
+ ],
600
+ "routing": {
601
+ "confidence": "medium",
602
+ "strategy": "turn_compiled"
603
+ }
604
+ },
605
+ {
606
+ "name": "cursor_recency_only",
607
+ "prompt": "what is the weather today",
608
+ "cwd": "/projects/unrelated",
609
+ "access_level": "team",
610
+ "recognition_confidence": "none",
611
+ "cwd_project": "unrelated",
612
+ "prompt_tokens": [
613
+ "weather",
614
+ "today"
615
+ ],
616
+ "matched_entities": [
617
+ {
618
+ "name": "Bourdon",
619
+ "type": "project",
620
+ "agent": "claude-code",
621
+ "summary": "Cross-agent memory federation.",
622
+ "score": 1.0
623
+ },
624
+ {
625
+ "name": "Bourdon",
626
+ "type": "project",
627
+ "agent": "codex",
628
+ "summary": "Federation, codex view.",
629
+ "score": 1.0
630
+ },
631
+ {
632
+ "name": "Roadmap",
633
+ "type": "concept",
634
+ "agent": "claude-code",
635
+ "summary": "Phase 1.7 federation roadmap.",
636
+ "score": 0.5
637
+ }
638
+ ],
639
+ "routing": {
640
+ "confidence": "none",
641
+ "strategy": "turn_compiled"
642
+ }
643
+ }
644
+ ]
645
+ }
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@getbourdon/conformance",
3
+ "version": "0.1.0",
4
+ "description": "Language-neutral cross-implementation parity fixtures for Bourdon. Python (pip install bourdon) is the oracle; the @getbourdon/* TypeScript mirror asserts against these exact bytes.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "main": "./dist/index.cjs",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "require": "./dist/index.cjs"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "fixtures"
20
+ ],
21
+ "engines": {
22
+ "node": ">=20"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public",
26
+ "provenance": false
27
+ },
28
+ "homepage": "https://bourdon.ai",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/getbourdon/bourdon-js.git",
32
+ "directory": "packages/conformance"
33
+ },
34
+ "scripts": {
35
+ "build": "tsup",
36
+ "test": "vitest run",
37
+ "sync-fixtures": "node scripts/sync-fixtures.mjs"
38
+ }
39
+ }