ruvnet / ruvnet/RuVector

rvf: three ADR-280 changes survive mutation testing (test coverage gaps)

Open
#771 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
4.5k
Forks
603
Avg merge
23h 32m
Merged PRs (30d)
59

Description

Found during ADR-280 review via mutation testing. All 11 metadata_growth tests stay green when these are broken:

  1. dropped_generations accumulation (store.rs:3984) — deleting it leaves every test passing, because assertions are all > 0 or == 0; no test pins an exact count. The CLI prints this number to users.
  2. delete/set_file_metadata rollback via full clone (:1496/:1543, :2815/:2834) — reverting to truncate is only detectable via ENOSPC, which the suite never exercises. (Verified load-bearing by hand: with truncate, an ENOSPC run permanently drops a live Meta entry and retains an uncommitted one.)
  3. the if re_anchoring { … retain … } prune block (:3830-3836) — deleting it is benign for convergence since orphans sit below the new snapshot, but it leaves the pruning half — the entire reason orphaned_metadata_offsets exists — unpinned.

One test each when convenient. An ENOSPC harness (small RAM disk) would cover #2 and is reusable.

Also informational (store.rs:1496, pre-existing): a delete() that fails before its manifest commits leaves its Journal segment in segment_dir, because the append happens above the rollback snapshot point. Harmless — the deletion isn't applied and the id stays queryable — but it makes the "snapshot everything visible first" comment at :1490-1493 inexact.

🤖 Generated with claude-flow

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in store.rs at lines 3984, 1496/1543, 2815/2834, and 3830-3836, then run the existing metadata_growth tests. Add one regression test for the exact dropped_generations count, one ENOSPC rollback test for metadata changes, and one test pinning re-anchoring pruning. Done means these tests fail when each targeted behavior is removed.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
testing-qa
Issue type
Refactor
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.