Commit 007fec0
The msgq/gust tests cover layer-2's PROVEN (finite) path; the soundness of the
whole derivation rests on the complementary REFUSAL path working — an unbounded
shadow stack must never receive a finite budget, or the image silently
under-reserves and overflows on silicon. #421 covers this with synthetic bounds
only; this anchors it against REAL scry output.
`scripts/repro/recursive_shadow_stack.wat` recurses through the shadow stack
(each activation decrements the SP global by a 16 B frame), so the worst-case
depth is unbounded. Empirically scry classifies it exactly: sp_global
identified, recursive=true, max_stack_bytes=Unbounded.
`layer2_unbounded_recursion_refuses_proven_budget_242` (synth-cli main.rs
cfg(test)) asserts that scry behaviour AND that `budget_from_bound` never yields
a ProvenStackDepth for it — with a fallback it returns AssertedFallback (not
proven), without one it honestly refuses. This guards the upstream assumption
the entire honest-fail gate depends on: a scry regression that returned a finite
bound for an unbounded stack — the one failure mode that would silently
under-reserve on silicon — would redden CI.
Frozen-safe: scry + wat stay test-only (cfg(test)); production bytes unchanged,
no MODULE.bazel pin. Roadmap VCR-MEM-001 records the proven+honest-fail coverage.
Verification: `cargo test -p synth-cli --bin synth layer2_` -> 3/3 pass; fmt +
clippy -D warnings clean; rivet check zero non-xref errors.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 47820e8 commit 007fec0
3 files changed
Lines changed: 112 additions & 0 deletions
File tree
- artifacts
- crates/synth-cli/src
- scripts/repro
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1204 | 1204 | | |
1205 | 1205 | | |
1206 | 1206 | | |
| 1207 | + | |
| 1208 | + | |
| 1209 | + | |
| 1210 | + | |
| 1211 | + | |
| 1212 | + | |
| 1213 | + | |
| 1214 | + | |
| 1215 | + | |
| 1216 | + | |
| 1217 | + | |
| 1218 | + | |
| 1219 | + | |
1207 | 1220 | | |
1208 | 1221 | | |
1209 | 1222 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4291 | 4291 | | |
4292 | 4292 | | |
4293 | 4293 | | |
| 4294 | + | |
| 4295 | + | |
| 4296 | + | |
| 4297 | + | |
| 4298 | + | |
| 4299 | + | |
| 4300 | + | |
| 4301 | + | |
| 4302 | + | |
| 4303 | + | |
| 4304 | + | |
| 4305 | + | |
| 4306 | + | |
| 4307 | + | |
| 4308 | + | |
| 4309 | + | |
| 4310 | + | |
| 4311 | + | |
| 4312 | + | |
| 4313 | + | |
| 4314 | + | |
| 4315 | + | |
| 4316 | + | |
| 4317 | + | |
| 4318 | + | |
| 4319 | + | |
| 4320 | + | |
| 4321 | + | |
| 4322 | + | |
| 4323 | + | |
| 4324 | + | |
| 4325 | + | |
| 4326 | + | |
| 4327 | + | |
| 4328 | + | |
| 4329 | + | |
| 4330 | + | |
| 4331 | + | |
| 4332 | + | |
| 4333 | + | |
| 4334 | + | |
| 4335 | + | |
| 4336 | + | |
| 4337 | + | |
| 4338 | + | |
| 4339 | + | |
| 4340 | + | |
| 4341 | + | |
| 4342 | + | |
| 4343 | + | |
| 4344 | + | |
| 4345 | + | |
| 4346 | + | |
| 4347 | + | |
| 4348 | + | |
| 4349 | + | |
| 4350 | + | |
| 4351 | + | |
| 4352 | + | |
| 4353 | + | |
| 4354 | + | |
| 4355 | + | |
| 4356 | + | |
| 4357 | + | |
| 4358 | + | |
| 4359 | + | |
| 4360 | + | |
| 4361 | + | |
| 4362 | + | |
| 4363 | + | |
| 4364 | + | |
| 4365 | + | |
| 4366 | + | |
| 4367 | + | |
| 4368 | + | |
4294 | 4369 | | |
4295 | 4370 | | |
4296 | 4371 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
0 commit comments