generated from erix/meta
[BUG] Build-scope target IDs can collapse distinct Cargo targets #15
Labels
No labels
bug
ci
docs
duplicate
enhancement
help wanted
invalid
performance
phase-6
question
refactor
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
erix/integration#15
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The unpublished build-scope checker prototype can give two distinct Cargo
targets the same descriptive target ID. Its dictionary then keeps only one,
allowing incomplete target ownership/output coverage to appear complete.
This affects static inventory admission; no guest build proof is established
by this checker, and no released runtime is known to be affected.
Reproduction
Create two original Cargo manifests in one selected source repository:
Cargo.tomlhas an explicit library namedx/Cargo.toml#lib:y.Cargo.toml#lib:x/Cargo.tomlhas an explicit library namedy.Give each manifest its own ordinary tracked Rust source path. Both manifests
pass independent offline
cargo metadata --no-deps --offlinechecks. Theprototype concatenates source, manifest, kind and name with unescaped delimiters;
both targets obtain
integration:Cargo.toml#lib:x/Cargo.toml#lib:y.Supply ownership and output coverage for the surviving entry. The original
prototype returns
declared-scope-completeafter silently discarding the other.The deterministic reproduction is retained independently of ordinary fixtures.
Expected and actual behavior
Expected: distinct source/manifest/kind/name tuples have distinct IDs, and every
target needs its own reviewed ownership and applicable output coverage. Duplicate
derived identities must fail instead of replacing an earlier target.
Actual: delimiter-bearing names and paths collide; dictionary insertion loses
one target and the static completeness result is false.
Environment and identity
when the defect was found; no released checker version is affected.
bd509d7c601e40dd1ddfe540b6df85c0b8aea71c52a0c228453c8bce0a0fbfdc.Cargo metadata. No guest VM, service route or runtime capability is involved.
implementation of delimiter-bearing identity handling is established.
Evidence and prior checks
The reproduction admits one target from two selected valid declarations. The
correction at signed
e7995dc7a2cb32bcc13a923c473e1d5c0e731303canonically escapes percent, hash and colon characters inmanifest/name ID components and rejects duplicate derived IDs before insertion.
Original descriptive fields and ordinary existing IDs remain unchanged.
Regression coverage must prove both independent targets survive, omission of
either prevents complete coverage, and duplicate derived IDs fail closed.
The existing catalog/receipt tests and real incomplete source inventory must
retain their original outcomes. No performance or guest-build gate is relaxed.
Tracking
Owning inventory design: erix/integration#1. Audit: erix/integration#11.
Implementation review: erix/integration#12.
erikinkinen referenced this issue2026-09-12 10:21:05 +02:00