@getbourdon/conformance 0.5.0 → 0.7.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.
@@ -0,0 +1,65 @@
1
+ spec_version: '0.1'
2
+ agent:
3
+ id: lovable
4
+ type: code-assistant
5
+ instance: cloud
6
+ role_narrative: Cloud app-building agent. Ships full-stack web apps from chat.
7
+ last_updated: '2026-08-26T12:00:00+00:00'
8
+ capabilities:
9
+ - app-building
10
+ - full-stack-generation
11
+ - deploy-preview
12
+ known_entities:
13
+ - name: Acme Site
14
+ type: project
15
+ aliases:
16
+ - acme.example
17
+ summary: Marketing site for Acme, an automation and AI systems studio.
18
+ tags:
19
+ - lovable
20
+ - client
21
+ visibility: team
22
+ - name: Bourdon
23
+ type: project
24
+ summary: Recognition-first memory federation (granted side, Lovable view).
25
+ tags:
26
+ - infra
27
+ visibility: public
28
+ - name: Client Billing Export
29
+ type: concept
30
+ summary: Unpublished billing integration details.
31
+ tags:
32
+ - client-confidential
33
+ visibility: private
34
+ recent_sessions:
35
+ - date: '2026-08-25'
36
+ project_focus:
37
+ - Acme Site
38
+ key_actions:
39
+ - rebuilt hero section
40
+ files_touched:
41
+ - src/routes/index.tsx
42
+ visibility: team
43
+ - date: '2026-08-24'
44
+ project_focus:
45
+ - Bourdon
46
+ key_actions:
47
+ - drafted participant adapter
48
+ visibility: public
49
+ - date: '2026-08-23'
50
+ project_focus:
51
+ - Client Billing Export
52
+ key_actions:
53
+ - private review
54
+ visibility: private
55
+ visibility_policy:
56
+ default: team
57
+ private_tags:
58
+ - personal
59
+ - credential
60
+ - secret
61
+ - client-confidential
62
+ team_tags:
63
+ - lovable
64
+ - project
65
+ - client
@@ -0,0 +1,314 @@
1
+ {
2
+ "_doc": "Local-hydration parity vectors over _SEED_MANIFESTS + the l1_seed fixture dir: entity_index.search rankings (names only, best first), hydration_local.assemble/build_payload outputs (team access), and load_l1_synopsis reads incl. the visibility-denial null cases, plus filename_cases: the direct-filename validator's human-decided security verdicts (reserved device stems, 8.3 tildes, control chars). The mirror must reproduce all of it from the same bytes.",
3
+ "search_cases": [
4
+ {
5
+ "query": "bourdon",
6
+ "expected": [
7
+ "Bourdon"
8
+ ]
9
+ },
10
+ {
11
+ "query": "cross-agent memory federation",
12
+ "expected": [
13
+ "Bourdon",
14
+ "Roadmap"
15
+ ]
16
+ },
17
+ {
18
+ "query": "federation roadmap",
19
+ "expected": [
20
+ "Roadmap",
21
+ "Bourdon"
22
+ ]
23
+ },
24
+ {
25
+ "query": "quarterly numbers",
26
+ "expected": []
27
+ },
28
+ {
29
+ "query": "what box holds the release plans",
30
+ "expected": []
31
+ }
32
+ ],
33
+ "assemble_cases": [
34
+ {
35
+ "prompt": "what about Bourdon",
36
+ "expected": {
37
+ "text": "## Bourdon (project)\nknown by: claude-code, codex\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.",
38
+ "entities": [
39
+ "Bourdon"
40
+ ],
41
+ "doors": [
42
+ "recognition"
43
+ ],
44
+ "l1_documents": 1,
45
+ "truncated": false,
46
+ "reason": ""
47
+ },
48
+ "payload": {
49
+ "prompt": "what about Bourdon",
50
+ "access_level": "team",
51
+ "include_private": false,
52
+ "context": "## Bourdon (project)\nknown by: claude-code, codex\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.",
53
+ "context_chars": 349,
54
+ "source": "local-store",
55
+ "entities": [
56
+ "Bourdon"
57
+ ],
58
+ "doors": [
59
+ "recognition"
60
+ ],
61
+ "l1_documents": 1,
62
+ "truncated": false,
63
+ "reason": "",
64
+ "hydration_hint": "Local retrieval only -- these are stored bytes, not generated prose. Synthesize with your own model if you want a narrative answer; Bourdon does not call one."
65
+ }
66
+ },
67
+ {
68
+ "prompt": "cross-agent memory federation",
69
+ "expected": {
70
+ "text": "## Bourdon (project)\nknown by: claude-code, codex\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.\n\n## Roadmap (concept)\nknown by: claude-code\nTeam-only fixture synopsis. Exists so the L1 visibility gate has a pinned\ndeny case: public access must not read this document.",
71
+ "entities": [
72
+ "Bourdon",
73
+ "Roadmap"
74
+ ],
75
+ "doors": [
76
+ "lexical"
77
+ ],
78
+ "l1_documents": 2,
79
+ "truncated": false,
80
+ "reason": ""
81
+ },
82
+ "payload": {
83
+ "prompt": "cross-agent memory federation",
84
+ "access_level": "team",
85
+ "include_private": false,
86
+ "context": "## Bourdon (project)\nknown by: claude-code, codex\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.\n\n## Roadmap (concept)\nknown by: claude-code\nTeam-only fixture synopsis. Exists so the L1 visibility gate has a pinned\ndeny case: public access must not read this document.",
87
+ "context_chars": 521,
88
+ "source": "local-store",
89
+ "entities": [
90
+ "Bourdon",
91
+ "Roadmap"
92
+ ],
93
+ "doors": [
94
+ "lexical"
95
+ ],
96
+ "l1_documents": 2,
97
+ "truncated": false,
98
+ "reason": "",
99
+ "hydration_hint": "Local retrieval only -- these are stored bytes, not generated prose. Synthesize with your own model if you want a narrative answer; Bourdon does not call one."
100
+ }
101
+ },
102
+ {
103
+ "prompt": "phase federation roadmap planning",
104
+ "expected": {
105
+ "text": "## Roadmap (concept)\nknown by: claude-code\nTeam-only fixture synopsis. Exists so the L1 visibility gate has a pinned\ndeny case: public access must not read this document.\n\n## Bourdon (project)\nknown by: claude-code, codex\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.",
106
+ "entities": [
107
+ "Roadmap",
108
+ "Bourdon"
109
+ ],
110
+ "doors": [
111
+ "recognition",
112
+ "lexical"
113
+ ],
114
+ "l1_documents": 2,
115
+ "truncated": false,
116
+ "reason": ""
117
+ },
118
+ "payload": {
119
+ "prompt": "phase federation roadmap planning",
120
+ "access_level": "team",
121
+ "include_private": false,
122
+ "context": "## Roadmap (concept)\nknown by: claude-code\nTeam-only fixture synopsis. Exists so the L1 visibility gate has a pinned\ndeny case: public access must not read this document.\n\n## Bourdon (project)\nknown by: claude-code, codex\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.",
123
+ "context_chars": 521,
124
+ "source": "local-store",
125
+ "entities": [
126
+ "Roadmap",
127
+ "Bourdon"
128
+ ],
129
+ "doors": [
130
+ "recognition",
131
+ "lexical"
132
+ ],
133
+ "l1_documents": 2,
134
+ "truncated": false,
135
+ "reason": "",
136
+ "hydration_hint": "Local retrieval only -- these are stored bytes, not generated prose. Synthesize with your own model if you want a narrative answer; Bourdon does not call one."
137
+ }
138
+ },
139
+ {
140
+ "prompt": "zzz nothing matches this",
141
+ "expected": {
142
+ "text": "",
143
+ "entities": [],
144
+ "doors": [],
145
+ "l1_documents": 0,
146
+ "truncated": false,
147
+ "reason": "no entity in the local store matched this prompt"
148
+ },
149
+ "payload": {
150
+ "prompt": "zzz nothing matches this",
151
+ "access_level": "team",
152
+ "include_private": false,
153
+ "context": "",
154
+ "context_chars": 0,
155
+ "source": "local-store",
156
+ "entities": [],
157
+ "doors": [],
158
+ "l1_documents": 0,
159
+ "truncated": false,
160
+ "reason": "no entity in the local store matched this prompt",
161
+ "hydration_hint": "Local retrieval only -- these are stored bytes, not generated prose. Synthesize with your own model if you want a narrative answer; Bourdon does not call one."
162
+ }
163
+ }
164
+ ],
165
+ "synopsis_cases": [
166
+ {
167
+ "entity": "Bourdon",
168
+ "access_level": "team",
169
+ "expected": "# Bourdon\n\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.\n"
170
+ },
171
+ {
172
+ "entity": "Bourdon",
173
+ "access_level": "public",
174
+ "expected": "# Bourdon\n\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.\n"
175
+ },
176
+ {
177
+ "entity": "Roadmap",
178
+ "access_level": "team",
179
+ "expected": "# Roadmap\n\nTeam-only fixture synopsis. Exists so the L1 visibility gate has a pinned\ndeny case: public access must not read this document.\n"
180
+ },
181
+ {
182
+ "entity": "Roadmap",
183
+ "access_level": "public",
184
+ "expected": null
185
+ },
186
+ {
187
+ "entity": "Missing Entity",
188
+ "access_level": "team",
189
+ "expected": null
190
+ }
191
+ ],
192
+ "filename_cases": [
193
+ {
194
+ "filename": "good.md",
195
+ "expected": "good.md"
196
+ },
197
+ {
198
+ "filename": "Bourdon.md",
199
+ "expected": "Bourdon.md"
200
+ },
201
+ {
202
+ "filename": "CON.md",
203
+ "expected": null
204
+ },
205
+ {
206
+ "filename": "con.md",
207
+ "expected": null
208
+ },
209
+ {
210
+ "filename": "CON.notes.md",
211
+ "expected": null
212
+ },
213
+ {
214
+ "filename": "CONX.md",
215
+ "expected": "CONX.md"
216
+ },
217
+ {
218
+ "filename": "NUL.md",
219
+ "expected": null
220
+ },
221
+ {
222
+ "filename": "PRN.md",
223
+ "expected": null
224
+ },
225
+ {
226
+ "filename": "AUX.md",
227
+ "expected": null
228
+ },
229
+ {
230
+ "filename": "COM1.md",
231
+ "expected": null
232
+ },
233
+ {
234
+ "filename": "com9.md",
235
+ "expected": null
236
+ },
237
+ {
238
+ "filename": "COM0.md",
239
+ "expected": "COM0.md"
240
+ },
241
+ {
242
+ "filename": "LPT1.md",
243
+ "expected": null
244
+ },
245
+ {
246
+ "filename": "lpt9.md",
247
+ "expected": null
248
+ },
249
+ {
250
+ "filename": "CON .md",
251
+ "expected": null
252
+ },
253
+ {
254
+ "filename": "CON..md",
255
+ "expected": null
256
+ },
257
+ {
258
+ "filename": "COM¹.md",
259
+ "expected": null
260
+ },
261
+ {
262
+ "filename": "LPT³.md",
263
+ "expected": null
264
+ },
265
+ {
266
+ "filename": "DOCUME~1.MD",
267
+ "expected": null
268
+ },
269
+ {
270
+ "filename": "doc~1.md",
271
+ "expected": null
272
+ },
273
+ {
274
+ "filename": "doc.md.",
275
+ "expected": null
276
+ },
277
+ {
278
+ "filename": "doc.md ",
279
+ "expected": null
280
+ },
281
+ {
282
+ "filename": "doc.txt",
283
+ "expected": null
284
+ },
285
+ {
286
+ "filename": "a/b.md",
287
+ "expected": null
288
+ },
289
+ {
290
+ "filename": "a\b.md",
291
+ "expected": null
292
+ },
293
+ {
294
+ "filename": "a\bb.md",
295
+ "expected": null
296
+ },
297
+ {
298
+ "filename": "a:b.md",
299
+ "expected": null
300
+ },
301
+ {
302
+ "filename": "doc.md::$DATA",
303
+ "expected": null
304
+ },
305
+ {
306
+ "filename": ".md",
307
+ "expected": null
308
+ },
309
+ {
310
+ "filename": "",
311
+ "expected": null
312
+ }
313
+ ]
314
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "version": 1,
3
+ "documents": [
4
+ {
5
+ "entity": "Bourdon",
6
+ "filename": "Bourdon.md",
7
+ "visibility": "public",
8
+ "sha256": "ad24bb442ba01dc579a3c66aa8f8d8659e46242620e1f02afd683b1b723a348b"
9
+ },
10
+ {
11
+ "entity": "Roadmap",
12
+ "filename": "Roadmap.md",
13
+ "visibility": "team",
14
+ "sha256": "717d0ea3cf6c768fc51a02856214352b3c74720af1beaab9ea5950ce957ef780"
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,6 @@
1
+ # Bourdon
2
+
3
+ Conformance fixture synopsis. L1 hydration is byte-checkable, so this text is
4
+ pinned verbatim into the interop vectors -- which is exactly why it must be
5
+ fixture-owned rather than real documentation. A second implementation has to
6
+ reproduce THIS, not whatever the project's docs happen to say today.
@@ -0,0 +1,4 @@
1
+ # Roadmap
2
+
3
+ Team-only fixture synopsis. Exists so the L1 visibility gate has a pinned
4
+ deny case: public access must not read this document.
@@ -2,6 +2,7 @@
2
2
  "_doc": "Cross-impl federation leak-audit parity. Oracle = bourdon.core.leak_audit.audit_manifest. Each case feeds `manifest` through the auditor; `expected_findings` pins [{kind, location}] in the oracle's emission order (visibility entities, visibility sessions, then the total credential walk). kind in {'credential','visibility'}; location is a json-path like 'known_entities[0].summary'. audit_manifest NEVER raises -- garbage manifests yield []. Credential cases use keyword-shaped triggers only; no token literal is committed.",
3
3
  "audit_schema_version": "federation-leak-audit/v1",
4
4
  "private_tag_families": [
5
+ "client-confidential",
5
6
  "credential",
6
7
  "family",
7
8
  "financial",
@@ -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": "2.3.0",
3
+ "conformance_version": "2.6.0",
4
4
  "produced_against": {
5
- "bourdon_version": "0.16.1"
5
+ "bourdon_version": "0.23.0"
6
6
  },
7
7
  "fixtures": [
8
8
  {
@@ -12,17 +12,17 @@
12
12
  },
13
13
  {
14
14
  "path": "leak_cases.json",
15
- "sha256": "4142107183dd967d00fc6f4b3678a84270480fb146a6e1c51dead7fa625ae685",
15
+ "sha256": "cb85515a3fbfafecf5a72e0a361a80ce5da1e8cdb5c25cdef3227029d955322f",
16
16
  "producer": "tools/gen_conformance.py::leak_cases"
17
17
  },
18
18
  {
19
19
  "path": "recognition_vectors.json",
20
- "sha256": "248b2af23e35f6e1e86a918896ba4243e7edc54aa30daabc0f4b32e260c47bc1",
20
+ "sha256": "5f19085be347d089774a79c12aa16ec41885f6d9f5e2bd83799d92a607314251",
21
21
  "producer": "tools/gen_conformance.py::recognition_vectors"
22
22
  },
23
23
  {
24
24
  "path": "recognition_golden_v1.yaml",
25
- "sha256": "9059e2615118a934b2ec3523c06238345de4aac5138d99611418cc70eeb53956",
25
+ "sha256": "644cab8367f7915fbe2b7ab184573b9f24cf66c8bf6d44d411775920a0c0fd9b",
26
26
  "producer": "tools/gen_conformance.py::recognition_vectors"
27
27
  },
28
28
  {
@@ -115,6 +115,26 @@
115
115
  "sha256": "9190f55662b66941cac8a3d869579024ef2a83de1912bda8c60c3c75c4b585d0",
116
116
  "producer": "tools/gen_conformance.py::fed_seed_library"
117
117
  },
118
+ {
119
+ "path": "l1_seed/Bourdon.md",
120
+ "sha256": "ad24bb442ba01dc579a3c66aa8f8d8659e46242620e1f02afd683b1b723a348b",
121
+ "producer": "tools/gen_conformance.py::l1_seed"
122
+ },
123
+ {
124
+ "path": "l1_seed/Roadmap.md",
125
+ "sha256": "717d0ea3cf6c768fc51a02856214352b3c74720af1beaab9ea5950ce957ef780",
126
+ "producer": "tools/gen_conformance.py::l1_seed"
127
+ },
128
+ {
129
+ "path": "l1_seed/.bourdon-l1-index.json",
130
+ "sha256": "8045f999517ca175d6a1dca10637740b11a9d2eb5e1a6fe7e9f43b3182aceb94",
131
+ "producer": "tools/gen_conformance.py::l1_seed"
132
+ },
133
+ {
134
+ "path": "hydration_vectors.json",
135
+ "sha256": "0016cdedfa3665ade7d08fde21e51ad31024ad37ab93c1886b44e746de267a3d",
136
+ "producer": "tools/gen_conformance.py::hydration_vectors"
137
+ },
118
138
  {
119
139
  "path": "tier_matrix.json",
120
140
  "sha256": "9753ad1fd4a092bdf4110b3b24576f2bfe7001d6d6758ef55047ee5da851e25c",
@@ -177,7 +197,7 @@
177
197
  },
178
198
  {
179
199
  "path": "mcp_snapshots/prepare_recognition_context_drifting.res.json",
180
- "sha256": "2d217ba56593bf6593216546c223adf0b972470632adb326bb82eb5d5996acc8",
200
+ "sha256": "0c55d6d1b55f6dc8d4bf417473b31091eb12d9f8f6ef53396d150bc6e05dd649",
181
201
  "producer": "tools/gen_conformance.py::mcp_snapshots"
182
202
  },
183
203
  {
@@ -250,6 +270,16 @@
250
270
  "sha256": "d8bf31fa8a2e23b126139e209eda1c6d3167070717122fdd53b46168cdc28853",
251
271
  "producer": "tools/gen_conformance.py::mcp_snapshots"
252
272
  },
273
+ {
274
+ "path": "mcp_snapshots/describe_caller.req.json",
275
+ "sha256": "dc8391d7a81a214547d7ceefaf9461450a809fdaa001f5668ad37309a35caae6",
276
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
277
+ },
278
+ {
279
+ "path": "mcp_snapshots/describe_caller.res.json",
280
+ "sha256": "a86d352f38c7ec13bcf83ef22f692e7c80bf1e9254105355ecb0d27b0139752a",
281
+ "producer": "tools/gen_conformance.py::mcp_snapshots"
282
+ },
253
283
  {
254
284
  "path": "mcp_snapshots/commit_to_federation.req.json",
255
285
  "sha256": "07c43423cb303a567214217063c7c0b0d7629e1ec91c6f79c5b56858315ae2d8",
@@ -277,7 +307,7 @@
277
307
  },
278
308
  {
279
309
  "path": "mcp_snapshots/prepare_recognition_context.res.json",
280
- "sha256": "dfb2d73ddb812d41dfe8e0b17dddeb1399373904972c09cf80e0bf9daa65941f",
310
+ "sha256": "11c90ab8cb537a46e625f5fda2bcf203b0ebbc9b4337040ce79d7b1e61551561",
281
311
  "producer": "tools/gen_conformance.py::mcp_snapshots"
282
312
  },
283
313
  {
@@ -332,7 +362,7 @@
332
362
  },
333
363
  {
334
364
  "path": "mcp_snapshots/seed_library.json",
335
- "sha256": "f0210a4b63af53728f3d7a1f56baede0bc110ad902a36530b2b35312c71e69ff",
365
+ "sha256": "9438518dadb691feaeb44c7bebf6583958ddf55289df3d3fef8ad7b123500827",
336
366
  "producer": "tools/gen_conformance.py::mcp_snapshots"
337
367
  },
338
368
  {
@@ -0,0 +1,4 @@
1
+ {
2
+ "args": {},
3
+ "tool": "describe_caller"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "error": "not_configured",
3
+ "version": 1
4
+ }
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "access_level": "team",
3
3
  "confidence": "medium",
4
- "hydration": "# Bourdon\n\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.",
5
- "hydration_chars": 310,
4
+ "hydration": "## Bourdon (project)\nknown by: claude-code, codex\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.",
5
+ "hydration_chars": 349,
6
6
  "hydration_scheduled": true,
7
7
  "include_private": false,
8
8
  "matched_entities": [
9
9
  {
10
+ "confidence": "medium",
10
11
  "name": "Bourdon",
11
12
  "source_agents": [
12
13
  "claude-code",
@@ -16,6 +17,6 @@
16
17
  }
17
18
  ],
18
19
  "prompt": "what about Bourdon",
19
- "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.",
20
- "recognition": "Oh -- Bourdon, the project."
20
+ "prompt_context": "Bourdon recognition context\nBourdon (project; known by 2 agents): Federation, codex view.\nKnown by: Bourdon via claude-code, codex.\nUse this as timing-layer context, not as a final answer.",
21
+ "recognition": "Bourdon (project; known by 2 agents): Federation, codex view."
21
22
  }
@@ -8,12 +8,13 @@
8
8
  "reason": "yielded nothing this run - last yielded 400 record(s) at 2026-06-29T09:00:00Z"
9
9
  }
10
10
  ],
11
- "hydration": "# Bourdon\n\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.",
12
- "hydration_chars": 310,
11
+ "hydration": "## Bourdon (project)\nknown by: claude-code, codex\nConformance fixture synopsis. L1 hydration is byte-checkable, so this text is\npinned verbatim into the interop vectors -- which is exactly why it must be\nfixture-owned rather than real documentation. A second implementation has to\nreproduce THIS, not whatever the project's docs happen to say today.",
12
+ "hydration_chars": 349,
13
13
  "hydration_scheduled": true,
14
14
  "include_private": false,
15
15
  "matched_entities": [
16
16
  {
17
+ "confidence": "medium",
17
18
  "name": "Bourdon",
18
19
  "source_agents": [
19
20
  "claude-code",
@@ -23,6 +24,6 @@
23
24
  }
24
25
  ],
25
26
  "prompt": "what about Bourdon",
26
- "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.",
27
- "recognition": "Oh -- Bourdon, the project."
27
+ "prompt_context": "Bourdon recognition context\nBourdon (project; known by 2 agents): Federation, codex view.\nKnown by: Bourdon via claude-code, codex.\nUse this as timing-layer context, not as a final answer.",
28
+ "recognition": "Bourdon (project; known by 2 agents): Federation, codex view."
28
29
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "_doc": "The mcp_snapshots/*.res.json were produced by driving the live create_l6_server tool + resource closures (OPERATOR / trusted, = stdio) over a TEMP copy of this seed library, then normalizing each response. Every tool and resource the server registers is covered (the generator refuses to emit otherwise). The TS mirror loads the SAME seed and must reproduce every normalized res. Each payload travels the wire as a single TextContent whose .text = json.dumps(payload); the snapshot is the json.loads of that text. resource_* snapshots are taken FIRST (pure seed view); rollback_agent_memory runs LAST (it restores the seeded prior version of claude-code).",
2
+ "_doc": "The mcp_snapshots/*.res.json were produced by driving the live create_l6_server tool + resource closures (OPERATOR / trusted, = stdio) over a TEMP copy of this seed library, then normalizing each response. Every tool and resource the server registers is covered (the generator refuses to emit otherwise). The TS mirror loads the SAME seed and must reproduce every normalized res. Each payload travels the wire as a single TextContent whose .text = json.dumps(payload); the snapshot is the json.loads of that text. resource_* snapshots are taken FIRST (pure seed view); rollback_agent_memory runs LAST (it restores the seeded prior version of claude-code). describe_caller pins only the not_configured response because caller_audience is unset; authenticated caller behavior is not covered by this seed.",
3
3
  "caller": {
4
4
  "agent_id": "operator",
5
5
  "tier": "trusted"
@@ -73,6 +73,7 @@
73
73
  "list_notes",
74
74
  "list_agents",
75
75
  "export_agents",
76
+ "describe_caller",
76
77
  "commit_to_federation",
77
78
  "get_cross_agent_summary",
78
79
  "prepare_recognition_context",
@@ -104,3 +104,33 @@ cases:
104
104
  - {name: Gamma}
105
105
  - {name: Delta}
106
106
  expected_entities: [Alpha, Beta, Gamma]
107
+
108
+ # Fuzzy tier (0.21.0): a long name (>= 3 meaningful terms) matches when at
109
+ # least 60% of its terms (never fewer than two) appear anywhere in the prompt.
110
+ # Here the name has five meaningful terms, so three must overlap.
111
+ - id: fuzzy-long-name-paraphrase
112
+ prompt: "how do we improve the recognition first runtime protocol"
113
+ manifest:
114
+ known_entities:
115
+ - {name: Bourdon recognition first runtime layer, type: topic}
116
+ expected_entities: [Bourdon recognition first runtime layer]
117
+ expected_confidence: medium
118
+
119
+ # Two of five terms is not enough: the fuzzy tier must not turn every
120
+ # mention of "runtime" into a recognition.
121
+ - id: fuzzy-long-name-too-little-overlap
122
+ prompt: "the runtime layer is slow today"
123
+ manifest:
124
+ known_entities:
125
+ - {name: Bourdon recognition first runtime layer, type: topic}
126
+ expected_entities: []
127
+
128
+ # Short names never take the fuzzy path: the contiguous rule (and with it the
129
+ # short-name guard) still governs them.
130
+ - id: fuzzy-never-applies-to-short-names
131
+ prompt: "the memory federation is the product"
132
+ manifest:
133
+ known_entities:
134
+ - {name: Bourdon memory federation, type: topic}
135
+ - {name: Bourdon federation, type: topic}
136
+ expected_entities: [Bourdon memory federation]
@@ -165,6 +165,113 @@
165
165
  }
166
166
  ],
167
167
  "recognition_strings": [
168
+ {
169
+ "name": "fuzzy_long_name_paraphrase",
170
+ "prompt": "how do we improve the recognition first runtime protocol",
171
+ "manifest": {
172
+ "known_entities": [
173
+ {
174
+ "name": "Bourdon recognition first runtime layer",
175
+ "type": "topic"
176
+ }
177
+ ]
178
+ },
179
+ "access_level": "team",
180
+ "matched_names": [
181
+ "Bourdon recognition first runtime layer"
182
+ ],
183
+ "recognition": "Bourdon recognition first runtime layer (topic).",
184
+ "confidence": "medium",
185
+ "entity_confidences": {
186
+ "Bourdon recognition first runtime layer": "medium"
187
+ }
188
+ },
189
+ {
190
+ "name": "fuzzy_too_little_overlap",
191
+ "prompt": "the runtime layer is slow today",
192
+ "manifest": {
193
+ "known_entities": [
194
+ {
195
+ "name": "Bourdon recognition first runtime layer",
196
+ "type": "topic"
197
+ }
198
+ ]
199
+ },
200
+ "access_level": "team",
201
+ "matched_names": [],
202
+ "recognition": "",
203
+ "confidence": "none",
204
+ "entity_confidences": {}
205
+ },
206
+ {
207
+ "name": "cluster_by_alias",
208
+ "prompt": "compare Bourdon and Continuo",
209
+ "manifest": {
210
+ "known_entities": [
211
+ {
212
+ "name": "Bourdon",
213
+ "type": "project",
214
+ "aliases": [
215
+ "Continuo"
216
+ ],
217
+ "source_agents": [
218
+ "claude-code",
219
+ "codex"
220
+ ]
221
+ },
222
+ {
223
+ "name": "Continuo",
224
+ "type": "oss-product",
225
+ "source_agents": [
226
+ "codex"
227
+ ]
228
+ }
229
+ ]
230
+ },
231
+ "access_level": "team",
232
+ "matched_names": [
233
+ "Bourdon"
234
+ ],
235
+ "recognition": "Bourdon (project; known by 2 agents; also known as Continuo).",
236
+ "confidence": "medium",
237
+ "entity_confidences": {
238
+ "Bourdon": "medium"
239
+ }
240
+ },
241
+ {
242
+ "name": "gloss_freshest_summary_stale",
243
+ "prompt": "what is Nimbletron",
244
+ "manifest": {
245
+ "known_entities": [
246
+ {
247
+ "name": "Nimbletron",
248
+ "type": "project",
249
+ "source_agents": [
250
+ "alpha",
251
+ "beta"
252
+ ],
253
+ "summaries": {
254
+ "alpha": "Nimbletron is the batch renderer for the print pipeline, owned by the platform team.",
255
+ "beta": "renderer"
256
+ },
257
+ "touched": {
258
+ "alpha": "2019-06-01",
259
+ "beta": "2020-01-01"
260
+ },
261
+ "last_touched": "2020-01-01"
262
+ }
263
+ ]
264
+ },
265
+ "access_level": "team",
266
+ "matched_names": [
267
+ "Nimbletron"
268
+ ],
269
+ "recognition": "Nimbletron (project; known by 2 agents): Nimbletron is the batch renderer for the print pipeline, owned by the platform team. Last touched 2020-01-01, may be stale.",
270
+ "confidence": "medium",
271
+ "entity_confidences": {
272
+ "Nimbletron": "medium"
273
+ }
274
+ },
168
275
  {
169
276
  "name": "single_with_type",
170
277
  "prompt": "tell me about Bourdon",
@@ -180,7 +287,7 @@
180
287
  "matched_names": [
181
288
  "Bourdon"
182
289
  ],
183
- "recognition": "Oh -- Bourdon, the project.",
290
+ "recognition": "Bourdon (project).",
184
291
  "confidence": "medium",
185
292
  "entity_confidences": {
186
293
  "Bourdon": "medium"
@@ -200,7 +307,7 @@
200
307
  "matched_names": [
201
308
  "Alpha"
202
309
  ],
203
- "recognition": "Oh -- Alpha.",
310
+ "recognition": "Alpha.",
204
311
  "confidence": "medium",
205
312
  "entity_confidences": {
206
313
  "Alpha": "medium"
@@ -230,7 +337,7 @@
230
337
  "Bourdon",
231
338
  "Zephyr"
232
339
  ],
233
- "recognition": "You're asking about Bourdon and Zephyr -- I have both.",
340
+ "recognition": "You're asking about Bourdon and Zephyr.\n- Bourdon (project).\n- Zephyr (project).",
234
341
  "confidence": "medium",
235
342
  "entity_confidences": {
236
343
  "Bourdon": "medium",
@@ -262,7 +369,7 @@
262
369
  "Beta",
263
370
  "Gamma"
264
371
  ],
265
- "recognition": "You're asking about Alpha, Beta, and Gamma -- I have all of those.",
372
+ "recognition": "You're asking about Alpha, Beta, and Gamma.\n- Alpha.\n- Beta.\n- Gamma.",
266
373
  "confidence": "medium",
267
374
  "entity_confidences": {
268
375
  "Alpha": "medium",
@@ -302,7 +409,7 @@
302
409
  "matched_names": [
303
410
  "NAS"
304
411
  ],
305
- "recognition": "Oh -- NAS, the hardware.",
412
+ "recognition": "NAS (hardware).",
306
413
  "confidence": "medium",
307
414
  "entity_confidences": {
308
415
  "NAS": "medium"
@@ -328,7 +435,7 @@
328
435
  "matched_names": [
329
436
  "PublicProj"
330
437
  ],
331
- "recognition": "Oh -- PublicProj, the project.",
438
+ "recognition": "PublicProj (project).",
332
439
  "confidence": "medium",
333
440
  "entity_confidences": {
334
441
  "PublicProj": "medium"
@@ -350,7 +457,7 @@
350
457
  "matched_names": [
351
458
  "Nimbletron"
352
459
  ],
353
- "recognition": "Oh -- Nimbletron, the project (archived 2026-01-01).",
460
+ "recognition": "Nimbletron (project; archived 2026-01-01).",
354
461
  "confidence": "medium",
355
462
  "entity_confidences": {
356
463
  "Nimbletron": "medium"
@@ -374,7 +481,7 @@
374
481
  "matched_names": [
375
482
  "LegacyThing"
376
483
  ],
377
- "recognition": "Oh -- LegacyThing, the tool (archived).",
484
+ "recognition": "LegacyThing (tool; archived).",
378
485
  "confidence": "medium",
379
486
  "entity_confidences": {
380
487
  "LegacyThing": "medium"
@@ -398,7 +505,7 @@
398
505
  "matched_names": [
399
506
  "QUIP"
400
507
  ],
401
- "recognition": "Oh -- QUIP, the product.",
508
+ "recognition": "QUIP (product).",
402
509
  "confidence": "medium",
403
510
  "entity_confidences": {
404
511
  "QUIP": "medium"
@@ -438,7 +545,7 @@
438
545
  "matched_names": [
439
546
  "Multi Word Project"
440
547
  ],
441
- "recognition": "Oh -- Multi Word Project, the project.",
548
+ "recognition": "Multi Word Project (project).",
442
549
  "confidence": "medium",
443
550
  "entity_confidences": {
444
551
  "Multi Word Project": "medium"
package/fixtures.pin.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "_doc": "The recorded fixture pin. CI and the package tests assert the vendored fixtures/manifest.json hashes to exactly this value, so the fixture set in any build is provably the reviewed one. Refresh via the re-pin ritual in README.md.",
3
- "conformance_version": "2.3.0",
4
- "manifest_sha256": "8887c3db998a7062c5ef991edc1ddb8af20bc8a8d448228cb78000b3f8c4dfa5"
3
+ "conformance_version": "2.6.0",
4
+ "manifest_sha256": "0e5f12493974729e203cfeda4a04be39e55af2468510aaced80d3c40a38d3b06"
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getbourdon/conformance",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
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
5
  "license": "Apache-2.0",
6
6
  "type": "module",