Skip to content

test(dwarf): LS-CP-4 aliases + gate scans integration tests#165

Merged
avrabe merged 1 commit into
mainfrom
test/ls-cp-4-alias
May 19, 2026
Merged

test(dwarf): LS-CP-4 aliases + gate scans integration tests#165
avrabe merged 1 commit into
mainfrom
test/ls-cp-4-alias

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 18, 2026

Summary

Two related fixes for the LS-N verification gate's coverage of LS-CP-4 ("DWARF passthrough emits address-incorrect debug info").

Fix 1: Convention aliases in dwarf_strip.rs

The file already has three tests pinning Phase 1.5's Strip-default policy (the mitigation LS-CP-4 calls for): default_strips_dwarf, passthrough_preserves_dwarf, default_is_strip. The gate just couldn't find them by name. Adds three convention aliases delegating to the existing test bodies — same pattern as PR #161's five aliases.

Fix 2: Gate scans integration tests too

tools/run_ls_verification.py was invoking cargo test --lib, which excludes <package>/tests/. Drops the --lib filter so both lib and integration-test binaries participate. One-line semantic change; the parser was already shaped to sum multiple test result: lines, so no other plumbing impact.

Gate verdict

State Before After
Verified 16/19 17/19
Missing 3 (LS-CP-4, LS-A-8, LS-A-9) 2 (LS-A-8, LS-A-9)
Failed 0 0

Remaining two need net-new tests, not aliases — surveyed in task #52:

  • LS-A-9 (~1-2h): byte-pattern assertion on generate_async_callback_adapter emitted body for the WAIT||POLL OR-pattern
  • LS-A-8 (~2-4h): adversarial 2+ resource component fixture verifying rep_func selection

Test plan

  • CI green
  • LS-N verification gate posts sticky comment showing 17/19 verified / 2 missing / 0 failed
  • No production code paths touched; this is test/CI scaffolding only

🤖 Generated with Claude Code

Two related fixes for the LS-N verification gate's coverage of
LS-CP-4 ("DWARF passthrough emits address-incorrect debug info").

1. `meld-core/tests/dwarf_strip.rs` already had three tests pinning
   Phase 1.5's Strip-default policy (the mitigation LS-CP-4 calls
   for): `default_strips_dwarf`, `passthrough_preserves_dwarf`,
   `default_is_strip`. The gate didn't see them because the names
   don't match the `ls_cp_4_*` convention. Adds three convention
   aliases that delegate to the existing test bodies — same pattern
   as the five aliases in PR #161.

2. `tools/run_ls_verification.py` was invoking `cargo test --lib`,
   which excludes integration tests under `<package>/tests/`. Drops
   the `--lib` filter so both lib and integration-test binaries
   participate. Each cargo target prints its own `test result:`
   line; the parser already sums across multiple matches, so this
   is a one-line change with no other plumbing impact.

Gate result moves from 16/19 verified (3 missing: LS-CP-4, LS-A-8,
LS-A-9) to 17/19 verified (2 missing: LS-A-8, LS-A-9). The
remaining two need net-new tests, not aliases — surveyed in task
#52, scoped at ~1-2h (LS-A-9) and ~2-4h (LS-A-8).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

LS-N verification gate

⚠️ 17/19 verified — 2 missing regression tests

count
Passed (≥1 test, all green) 17
Failed (≥1 test failure) 0
Missing (no ls_*_NN_* test found) 2

Approved loss-scenarios.yaml entries are expected to have a
regression test named ls_<letter>_<num>_* (e.g. LS-A-11
ls_a_11_*). The gate runs each prefix via cargo test --lib --no-fail-fast and aggregates pass/fail/missing.

Failed LS entries

(none)

Missing regression tests
  • LS-A-8
  • LS-A-9

Updated automatically by tools/post_verification_comment.py.
Source of truth: safety/stpa/loss-scenarios.yaml.

@avrabe avrabe merged commit e402fd4 into main May 19, 2026
14 checks passed
@avrabe avrabe deleted the test/ls-cp-4-alias branch May 19, 2026 04:25
@avrabe avrabe mentioned this pull request May 20, 2026
2 tasks
avrabe added a commit that referenced this pull request May 21, 2026
P3 cross-component stream-pair detection foundation + a fully
operational Mythos delta-pass auto-runner. 12 commits since v0.8.1.

Headline changes:

- Cross-component stream<T> pairing detection (#141, ADR-3). The
  StreamPairGraph foundation for the in-module stream adapter: meld
  now inventories at resolve time which fused components form
  producer -> consumer stream pairings. The ring-buffer / copy-chain
  emitter is a runtime-verified follow-up (ADR-3 Path N).

- Mythos delta-pass auto-runner (#162, #164, #170, #173, #175). The
  AI-driven discover protocol now runs automatically on every
  Tier-5 PR by the maintainer, via claude-code-action on a Max-plan
  OAuth token. Five plumbing fixes brought it to a working
  end-to-end state: scan -> NO_FINDINGS verdict -> sticky comment ->
  mythos-pass-done label.

- LS-N verification gate (#161, #165). Every approved loss-scenario
  in safety/stpa/loss-scenarios.yaml is now enforced to have a
  matching ls_<letter>_<num>_* regression test; 19/19 verified.

- DWARF / witness-mapping discovery (#131) — Phase 1 of the #130
  epic; pins today's lossy passthrough as the green-to-red oracle
  for the Phase 2 remap work.

- Regression coverage for LS-A-8/9/19 and LS-CP-4 (#163/165/166/169)
  — closed every missing-test entry the LS-N gate surfaced.

- CI footprint reduction (#171) — bench/fuzz/ci skip on docs- and
  safety-only PRs; meld is a leaner consumer of the shared fleet.

- fuzz.yml musl-target drop (#170, closes #168) — fixes the
  recurring "sanitizer incompatible with statically linked libc"
  fuzz failures.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant