152-a-refusal-says-what-it-is-in-every-form

A refusal says what it is in every form

Lifecycle approvedImplementation completeVerification unknownQualification unknown

Three consumer-visible inconsistencies survived 0.27.0, each documented in its handoff with a workaround. `check --json` and `index check --json` still report an unresolved claim as `fresh: false` with a `stale shard` line, where the human output and every other verb say validation, not staleness (spec 145). `index coverage`, `index owner`, `scope evaluate` and `registry show` print nothing on stdout under `--json` when they refuse, so a consumer gets an empty document where the verdict verbs give an error envelope. And a compact plan path refused for a `:` is told to drop `.`, `..` and a leading slash, none of which it has. This spec makes the index half of the JSON freshness report answer drift alone and carry the claims separately, gives every `--json` verb an error envelope on failure, and makes the compact refusal name the rule the path broke.

Read the full pinned specification ↗

Relationships

Claimed units

  • establishes
    {
      "kind": "file",
      "path": "crates/spec-spine-cli/tests/refusal_envelopes.rs"
    }
  • extends
    {
      "nature": "additive",
      "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-core/src/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": "corrective",
      "spec": "004-codebase-index",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-cli/src/cmd_index.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "001-compile-registry",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-cli/src/main.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "034-machine-readable-verdicts",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/verdict.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "096-compaction-is-a-verb-not-a-session",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/compact.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "022-index-sharding",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/version.rs"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "057-the-docs-name-what-adopters-derived",
      "unit": {
        "kind": "file",
        "path": "docs/schema-versioning.md"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "132-one-exit-contract-for-the-family",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-cli/tests/exit_contract.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "079-a-blocking-claim-is-not-a-stale-shard",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-cli/tests/cli.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "113-a-waiver-has-a-declared-lifecycle",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-cli/tests/waiver.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "011-index-hash-slices",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/tests/dtos.rs"
      }
    }

Source headings

  1. 152: A refusal says what it is in every form
  2. 1. Purpose
  3. 1.1 The JSON freshness report still calls a claim stale
  4. 1.2 Four reads print nothing when they refuse under `--json`
  5. 1.3 The compact refusal names rules the path did not break
  6. 2. Territory
  7. 3. Behavior
  8. 3.1 The index half answers drift; claims are their own member (amends 145)
  9. 3.2 Every `--json` verb answers a failure with an envelope
  10. 3.3 The compact refusal names the rule
  11. 3.4 The verdict version moves (D-1)
  12. 4. Out of scope
  13. 5. Resolved decisions
  14. Verification

Frozen anchors

No frozen anchors declared.