065-a-dead-glob-is-dead-in-both-tables

A dead glob is dead in both tables

Lifecycle approvedImplementation completeVerification unknownQualification unknown

`L-010` refuses a pattern ending in `/**` in `[index] extra_hashed_inputs`, where it enumerates directories and can contribute no bytes. `[index.slices]` carries pattern lists with the same documented semantics and the same file-only walk, and the lint is silent about it. An adopter audited on 2026-09-09 carried seventeen dead patterns, nine in the table the lint reads and eight in the table it does not. A fix pass corrected all nine and six of the eight; the two survivors reached an already-reviewed pull request and were caught by a second human reading, since no tool could report them. Both pointed at directories that do not exist yet, so they would have stayed silently empty on the day those directories arrived. This spec extends the rule to the second table, and requires the slice message to speak about the slice's own hash rather than repeating a sentence about `contentHash` that is false for slices.

Read the full pinned specification ↗

Relationships

Claimed units

  • extends
    {
      "nature": "additive",
      "spec": "003-conformance-lint",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/lint.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "046-depends-on-ordinal-monotonicity",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/tests/lint.rs"
      }
    }

Source headings

  1. 065: A dead glob is dead in both tables
  2. 1. Purpose
  3. 2. Territory
  4. 3. Behavior
  5. 3.1 `L-010` reads both pattern tables
  6. 3.2 The message names which table, and which slice
  7. 3.3 The slice message MUST NOT claim a content hash
  8. 3.4 The refusal is proven on a fixture, not on this corpus
  9. 4. Out of scope
  10. 5. Resolved decisions
  11. Verification

Frozen anchors

No frozen anchors declared.