152-a-refusal-says-what-it-is-in-every-form
A refusal says what it is in every form
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
depends on
depended on by
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
- 152: A refusal says what it is in every form
- 1. Purpose
- 1.1 The JSON freshness report still calls a claim stale
- 1.2 Four reads print nothing when they refuse under `--json`
- 1.3 The compact refusal names rules the path did not break
- 2. Territory
- 3. Behavior
- 3.1 The index half answers drift; claims are their own member (amends 145)
- 3.2 Every `--json` verb answers a failure with an envelope
- 3.3 The compact refusal names the rule
- 3.4 The verdict version moves (D-1)
- 4. Out of scope
- 5. Resolved decisions
- Verification
Frozen anchors
No frozen anchors declared.