076-a-stray-shard-is-orphaned-at-the-verbs
A stray shard is orphaned at the verbs
Spec 069 §3.1 says `orphaned` covers "a stray file in either shard directory", and `compare_shard_dir` classifies by name without parsing, so the library holds to it. The verbs do not. `check_report` and `check_freshness_json` compute the freshness verdict and then call `diagnostics::committed_counts(config, repo_root)?`, which parses every file in the shard directories; an unparseable stray makes that `?` throw the computed verdict away, and `index check` and `check` exit 3 with a parse error where `couple` and `index coverage` exit 2 and name the orphan. Measured at 0.19.0, and the same at 0.18.0, so it is not a regression and not a bypass. 069's acceptance asserted the classification on the library function only, which is exactly how it passed. This spec makes the tally best-effort and the verdict authoritative, and asserts it at the verbs.
Read the full pinned specification ↗Relationships
Claimed units
- extends
{ "nature": "corrective", "spec": "044-index-diagnostics-reach-a-gate", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/diagnostics.rs" } } - extends
{ "nature": "corrective", "spec": "001-compile-registry", "unit": { "kind": "file", "path": "crates/spec-spine-core/src/lib.rs" } } - extends
{ "nature": "corrective", "spec": "004-codebase-index", "unit": { "kind": "file", "path": "crates/spec-spine-cli/src/cmd_index.rs" } } - extends
{ "nature": "corrective", "spec": "062-one-name-one-freshness-verb", "unit": { "kind": "file", "path": "crates/spec-spine-cli/src/cmd_check.rs" } } - extends
{ "nature": "additive", "spec": "069-the-committed-index-is-compared-not-trusted", "unit": { "kind": "file", "path": "crates/spec-spine-core/tests/index_body.rs" } } - extends
{ "nature": "additive", "spec": "034-machine-readable-verdicts", "unit": { "kind": "file", "path": "crates/spec-spine-cli/tests/cli.rs" } }
Source headings
- 076: A stray shard is orphaned at the verbs
- 1. Purpose
- 1.1 The verdict is computed and then discarded
- 1.2 Measured, at the verbs
- 1.3 Why the library test did not catch it
- 2. Territory
- 3. Behavior
- 3.1 The verdict outranks the tally
- 3.2 An unparseable file in the shard directory is drift, not a parse error
- 3.3 The tally is best-effort and says what it skipped
- 3.4 One path, four entry points
- 3.5 What does not change
- 3.6 The acceptance runs the verbs
- 4. Out of scope
- 5. Resolved decisions
- Verification
Frozen anchors
No frozen anchors declared.