fix(safety): correct LS-M-5 status to fixed (already mitigated by reject)#199
Conversation
…ect)
Clean-room verification of the v0.16.0 "LS-M-5 multiply-instantiated
module support (priority: critical)" backlog item found the critical
silent-corruption hazard was ALREADY closed: meld rejects
multiply-instantiated modules at fusion time.
`Merger::check_no_duplicate_instantiations` (merger.rs) walks every
component's instances and returns
`Error::DuplicateModuleInstantiation` the moment a module_idx
reappears; it is invoked unconditionally at the top of the merge
pipeline (~merger.rs:909) before any index-space merging. The
resolver has an independent guard (~resolver.rs:2222). So the
corrupt-output path [H-1,H-2,H-3] is unreachable — a multiply-
instantiated module produces a loud build error, never a mis-merged
module.
The loss-scenario entry still read `status: open` — stale
bookkeeping, not an open hazard. This:
- adds `ls_m_5_multiply_instantiated_module_rejected` (gate-
convention regression test pinning the reject behavior)
- flips LS-M-5 to `status: fixed` with a fix block documenting
the detection-and-reject mitigation
NOTE: this is the *rejection* mitigation. Full per-instance index-
space *support* (so a shared utility module instantiated twice
fuses correctly) remains a forward feature on the backlog — a large
merger refactor, NOT required to close the safety hazard.
No functional code change; detection already shipped in earlier
releases. Rides into the next feature release rather than a
standalone tag.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Mythos delta-pass requiredThis PR modifies one or more Tier-5 source files (per Before merge, run the Mythos discover protocol on the
Why this gate exists: LS-A-10 The gate check on this PR will pass once the label is |
LS-N verification gate
Approved Failed LS entries(none) Missing regression tests
Updated automatically by |
Mythos delta-pass (auto)✅ NO FINDINGS across 1 Tier-5 file(s)
Auto-run via |
DWARF Phase 2 increment 1 (#143, #200): component-provenance section v2 with per-function code-byte ranges — the anchor for DWARF address remapping. Plus the LS-M-5 status correction (#199, already-mitigated multiply-instantiated-module hazard). Increments 2 (rewriter instruction-offset map) and 3 (gimli DWARF rewrite) follow in later releases. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Summary
Clean-room verification of the backlog item "LS-M-5 multiply-instantiated module support (priority: critical)" found the critical silent-corruption hazard was already closed — meld rejects multiply-instantiated modules at fusion time:
So the corrupt-output path [H-1, H-2, H-3] is unreachable — a multiply-instantiated module produces a loud build error, never a mis-merged module. The loss-scenario entry still read `status: open` — stale bookkeeping.
Changes
Important scoping note
This documents the rejection mitigation. Full per-instance index-space support (fusing a module instantiated twice into two independent function/memory/table spaces) remains a backlog forward feature — a large merger refactor, not required to close the safety hazard since rejection already prevents the unsafe output.
No functional code change; the detection shipped in earlier releases. This PR is safety-case accuracy + a gate-tracked regression test. Rides into the next feature release rather than a standalone tag.
Test plan
🤖 Generated with Claude Code