Skip to content

Commit 834f295

Browse files
authored
Merge pull request #340 from PhysShell/claude/obligation-protocol-rust-port-yxyj6y
feat(p022): port the obligation-protocol analysis and wire it through the bridge (#259 cp4b)
2 parents 6d2d8ea + 07edf7f commit 834f295

57 files changed

Lines changed: 11039 additions & 254 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎docs/evidence/p022-cp4-mutations.json‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,10 @@
159159
},
160160
{
161161
"id": "M14",
162-
"description": "protocol boundary: a protocol-bearing document is no longer refused",
162+
"description": "protocol family silently missing: the OBL findings are computed and then dropped. Re-anchored at #259 cp4b — the rule cp4 stated as a REFUSAL (a protocol-bearing document must never get a verdict list with a family missing) is now stated as a WIRING, and this is the same rule attacked on today's tree",
163163
"target": "rust/crates/own-bridge/src/verdict.rs",
164-
"pattern": "Some\\(Value::Array\\(items\\)\\) if !items\\.is_empty\\(\\) => Err\\(",
165-
"replacement": "Some(Value::Array(items)) if items.is_empty() => Err(",
164+
"pattern": " findings\\.extend\\(protocol_findings\\(root\\)\\);",
165+
"replacement": " let _ = protocol_findings(root);",
166166
"expected_catchers": [
167167
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
168168
]

‎docs/evidence/p022-cp4-mutations.result.json‎

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
"comment": "Recorded mutation-campaign run (scripts/mutate_campaign.py --run). Raw facts only: outcomes, catchers, provenance. Counts are derived by scripts/render_checkpoint_status.py; regenerate this file by re-running the campaign, never by hand.",
44
"campaign": "p022-cp4",
55
"definition": "docs/evidence/p022-cp4-mutations.json",
6-
"definition_sha256": "15b10f36c0d2b46b5e3d4815babc57bfbebefecde0f6c5579e7e9d666bd1edb9",
7-
"source_commit": "5553dae32ddf5d22592e11e84c8ed10e8c2fbc3e",
6+
"definition_sha256": "c4ca44f6bbc92cdd146931107e1e4959e1bdeb79eed9a717a874b31eba2ae42e",
7+
"source_commit": "5085a5152916b1dae260781cf850733095720fe6",
88
"dirty": false,
9-
"recorded_at": "2026-09-06T15:08:56Z",
9+
"recorded_at": "2026-09-06T20:51:00Z",
1010
"packages": [
1111
"own-analysis",
1212
"own-bridge",
@@ -22,7 +22,7 @@
2222
"id": "M00",
2323
"outcome": "survived",
2424
"catchers": [],
25-
"elapsed_seconds": 1.6
25+
"elapsed_seconds": 3.0
2626
},
2727
"mutations": [
2828
{
@@ -32,39 +32,39 @@
3232
"own-bridge/src/lib.rs::verdict::tests::only_error_severity_core_verdicts_are_mapped",
3333
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
3434
],
35-
"elapsed_seconds": 3.6
35+
"elapsed_seconds": 3.3
3636
},
3737
{
3838
"id": "M02",
3939
"outcome": "caught",
4040
"catchers": [
4141
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
4242
],
43-
"elapsed_seconds": 3.9
43+
"elapsed_seconds": 4.4
4444
},
4545
{
4646
"id": "M03",
4747
"outcome": "caught",
4848
"catchers": [
4949
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
5050
],
51-
"elapsed_seconds": 3.9
51+
"elapsed_seconds": 4.1
5252
},
5353
{
5454
"id": "M04",
5555
"outcome": "caught",
5656
"catchers": [
5757
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
5858
],
59-
"elapsed_seconds": 3.8
59+
"elapsed_seconds": 3.9
6060
},
6161
{
6262
"id": "M05",
6363
"outcome": "caught",
6464
"catchers": [
6565
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
6666
],
67-
"elapsed_seconds": 3.8
67+
"elapsed_seconds": 3.9
6868
},
6969
{
7070
"id": "M06",
@@ -81,41 +81,43 @@
8181
"own-analysis/tests/fact_parity.rs::di_fact_parity",
8282
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
8383
],
84-
"elapsed_seconds": 3.9
84+
"elapsed_seconds": 4.2
8585
},
8686
{
8787
"id": "M08",
8888
"outcome": "caught",
8989
"catchers": [
90+
"own-bridge/tests/renders.rs::replays_every_rendered_surface_byte_for_byte",
9091
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden",
9192
"own-shadow/tests/engine.rs::this_engine_reproduces_its_committed_capture"
9293
],
93-
"elapsed_seconds": 3.8
94+
"elapsed_seconds": 4.1
9495
},
9596
{
9697
"id": "M09",
9798
"outcome": "caught",
9899
"catchers": [
99100
"own-bridge/src/lib.rs::verdict::tests::malformed_effect_entries_are_skipped_not_coerced"
100101
],
101-
"elapsed_seconds": 3.9
102+
"elapsed_seconds": 4.0
102103
},
103104
{
104105
"id": "M10",
105106
"outcome": "caught",
106107
"catchers": [
107108
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
108109
],
109-
"elapsed_seconds": 3.9
110+
"elapsed_seconds": 4.0
110111
},
111112
{
112113
"id": "M11",
113114
"outcome": "caught",
114115
"catchers": [
116+
"own-bridge/tests/renders.rs::replays_every_rendered_surface_byte_for_byte",
115117
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden",
116118
"own-shadow/tests/engine.rs::this_engine_reproduces_its_committed_capture"
117119
],
118-
"elapsed_seconds": 4.6
120+
"elapsed_seconds": 4.7
119121
},
120122
{
121123
"id": "M12",
@@ -124,10 +126,11 @@
124126
"own-analysis/tests/subject.rs::leak_carries_the_acquire_origin",
125127
"own-analysis/tests/subject.rs::origin_is_inherited_across_a_move",
126128
"own-analysis/tests/subject.rs::param_leak_carries_the_param_origin",
129+
"own-bridge/tests/renders.rs::replays_every_rendered_surface_byte_for_byte",
127130
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden",
128131
"own-shadow/tests/engine.rs::this_engine_reproduces_its_committed_capture"
129132
],
130-
"elapsed_seconds": 4.8
133+
"elapsed_seconds": 4.7
131134
},
132135
{
133136
"id": "M13",
@@ -136,41 +139,43 @@
136139
"own-analysis/tests/subject.rs::region_escape_carries_the_source_identity",
137140
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
138141
],
139-
"elapsed_seconds": 3.9
142+
"elapsed_seconds": 4.0
140143
},
141144
{
142145
"id": "M14",
143146
"outcome": "caught",
144147
"catchers": [
148+
"own-bridge/tests/renders.rs::replays_every_rendered_surface_byte_for_byte",
145149
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden",
146150
"own-shadow/tests/engine.rs::this_engine_reproduces_its_committed_capture"
147151
],
148-
"elapsed_seconds": 3.9
152+
"elapsed_seconds": 4.4
149153
},
150154
{
151155
"id": "M15",
152156
"outcome": "caught",
153157
"catchers": [
154158
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
155159
],
156-
"elapsed_seconds": 3.8
160+
"elapsed_seconds": 3.9
157161
},
158162
{
159163
"id": "M16",
160164
"outcome": "caught",
161165
"catchers": [
166+
"own-bridge/tests/renders.rs::replays_every_rendered_surface_byte_for_byte",
162167
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden",
163168
"own-shadow/tests/engine.rs::this_engine_reproduces_its_committed_capture"
164169
],
165-
"elapsed_seconds": 3.8
170+
"elapsed_seconds": 4.1
166171
},
167172
{
168173
"id": "M17",
169174
"outcome": "caught",
170175
"catchers": [
171176
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
172177
],
173-
"elapsed_seconds": 3.7
178+
"elapsed_seconds": 4.1
174179
},
175180
{
176181
"id": "M18",
@@ -179,39 +184,40 @@
179184
"own-bridge/src/lib.rs::verdict::tests::dedup_keeps_findings_that_differ_only_in_an_unobservable_key_member",
180185
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
181186
],
182-
"elapsed_seconds": 3.8
187+
"elapsed_seconds": 4.2
183188
},
184189
{
185190
"id": "M19",
186191
"outcome": "caught",
187192
"catchers": [
188193
"own-bridge/src/lib.rs::verdict::tests::only_error_severity_core_verdicts_are_mapped"
189194
],
190-
"elapsed_seconds": 3.6
195+
"elapsed_seconds": 3.9
191196
},
192197
{
193198
"id": "M20",
194199
"outcome": "caught",
195200
"catchers": [
196201
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
197202
],
198-
"elapsed_seconds": 3.6
203+
"elapsed_seconds": 4.0
199204
},
200205
{
201206
"id": "M21",
202207
"outcome": "caught",
203208
"catchers": [
204209
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
205210
],
206-
"elapsed_seconds": 3.8
211+
"elapsed_seconds": 4.2
207212
},
208213
{
209214
"id": "M22",
210215
"outcome": "caught",
211216
"catchers": [
217+
"own-bridge/tests/renders.rs::replays_every_rendered_surface_byte_for_byte",
212218
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
213219
],
214-
"elapsed_seconds": 3.6
220+
"elapsed_seconds": 4.1
215221
},
216222
{
217223
"id": "M23",
@@ -221,68 +227,70 @@
221227
"own-bridge/src/lib.rs::verdict::tests::every_di_lifetime_phrase_is_pinned_including_the_unreachable_two",
222228
"own-bridge/src/lib.rs::verdict::tests::only_error_severity_core_verdicts_are_mapped",
223229
"own-bridge/src/lib.rs::verdict::tests::the_capture_route_names_a_non_static_source_it_can_never_be_handed",
230+
"own-bridge/tests/renders.rs::replays_every_rendered_surface_byte_for_byte",
224231
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden",
225232
"own-shadow/tests/engine.rs::this_engine_reproduces_its_committed_capture"
226233
],
227-
"elapsed_seconds": 3.7
234+
"elapsed_seconds": 4.1
228235
},
229236
{
230237
"id": "M24",
231238
"outcome": "caught",
232239
"catchers": [
233240
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
234241
],
235-
"elapsed_seconds": 3.8
242+
"elapsed_seconds": 4.0
236243
},
237244
{
238245
"id": "M25",
239246
"outcome": "caught",
240247
"catchers": [
241248
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
242249
],
243-
"elapsed_seconds": 3.9
250+
"elapsed_seconds": 4.1
244251
},
245252
{
246253
"id": "M26",
247254
"outcome": "caught",
248255
"catchers": [
249256
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
250257
],
251-
"elapsed_seconds": 3.8
258+
"elapsed_seconds": 4.1
252259
},
253260
{
254261
"id": "M27",
255262
"outcome": "caught",
256263
"catchers": [
257264
"own-bridge/src/lib.rs::verdict::tests::dedup_keeps_findings_that_differ_only_in_an_unobservable_key_member"
258265
],
259-
"elapsed_seconds": 3.5
266+
"elapsed_seconds": 4.0
260267
},
261268
{
262269
"id": "M28",
263270
"outcome": "caught",
264271
"catchers": [
265272
"own-bridge/src/lib.rs::verdict::tests::dedup_keeps_findings_that_differ_only_in_an_unobservable_key_member"
266273
],
267-
"elapsed_seconds": 3.6
274+
"elapsed_seconds": 4.1
268275
},
269276
{
270277
"id": "M29",
271278
"outcome": "caught",
272279
"catchers": [
273280
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden"
274281
],
275-
"elapsed_seconds": 3.7
282+
"elapsed_seconds": 4.1
276283
},
277284
{
278285
"id": "M30",
279286
"outcome": "caught",
280287
"catchers": [
281288
"own-bridge/src/lib.rs::verdict::tests::di_coercions_match_the_reference",
289+
"own-bridge/tests/renders.rs::replays_every_rendered_surface_byte_for_byte",
282290
"own-bridge/tests/verdicts.rs::replays_every_case_to_its_golden",
283291
"own-shadow/tests/engine.rs::this_engine_reproduces_its_committed_capture"
284292
],
285-
"elapsed_seconds": 3.9
293+
"elapsed_seconds": 4.3
286294
}
287295
]
288296
}

0 commit comments

Comments
 (0)