docs(rivet): VCR-DEC-003 — settle synth-provenance-v1 contract for witness MC/DC reconciliation (#396)#520
Merged
Conversation
…tness MC/DC reconciliation (#396) witness (#396, PR witness#130) landed its reconciler + `witness object-disposition` CLI and defined the `synth-provenance-v1` schema synth must emit so MC/DC coverage measured on the WASM reconciles against the object code synth's branch folding/splitting produces. Records the synth-side acceptance of the contract as a rivet decision: - Join key CONFIRMED available — synth's `op_offsets` side-table (VCR-DBG-001 step 1) is the per-function WASM byte offset witness joins on; no decode/manifest change either side. - The 4-kind taxonomy (preserved / folded-predication / eliminated-constant / split-into-object-branches) maps 1:1 onto real synth transforms (cmp→select fuse, guard elision + scry#51 evidence, br_table/i64 multi-branch expansion). - ONE open item raised on #396 before implementing: the offset-normalization domain (module-relative vs function-body-relative) so the join is exact. - Emitter scoped as the follow-up milestone (label branches through both lowering paths — optimized `ir_to_arm` drops provenance today — + serialize behind a CLI flag, frozen-safe/additive). Behavior-frozen: docs/traceability artifact only, no code or `.text` change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
witness (#396, PR witness#130 — reconciler +
witness object-dispositionCLI) landedits consumer and defined the
synth-provenance-v1contract synth must emit so MC/DCcoverage measured on the WASM can be reconciled against the object code synth's branch
folding/splitting actually produces. This lands the synth-side contract acceptance
as a rivet decision (no code yet — witness explicitly asked to settle the schema before
implementing).
Findings recorded in VCR-DEC-003
(func_index, byte_offset)(walrus
InstrLocId); synth's decoder records exactly this as theop_offsetsside-table (VCR-DBG-001 step 1,
wasm_decoder.rs). No decode/manifest change eitherside; the if/else "two arms → one byte_offset" many-to-one join matches.
folded-predication= cmp→select→ITfuse (default-on v0.13.0);
eliminated-constant= guard elision + scry#51 evidence;split-into-object-branches=br_table+ i64 multi-branch expansion;preserved=1:1
br_if.(module-relative vs function-body-relative).
kindlabel through bothlowering paths (the optimized
ir_to_armpath setssource_line: None, so it dropsprovenance today and needs wiring) + serializes behind a CLI flag, frozen-safe.
Gate
Behavior-frozen — docs/traceability artifact only, no code or
.textchange. rivetvalidate: VCR-DEC-003 introduces zero non-xref errors (its
synth:396/witness:130cross-refs are the gate-filtered kind, matching the
gale:209precedent).Settling reply posted on #396 (issuecomment-4813581111).
🤖 Generated with Claude Code