A facet determined by another facet is redundant — the correlated case of `inert-status`
- Dominant language
- Python
- Stars
- 21
- Forks
- 2
- Avg merge
- 6h 33m
- Merged PRs (30d)
- 91
Description
`inert-status` (#104) already reports a scheme whose `status:` has stopped carrying information:
> A status field where every record agrees is indistinguishable from no status field, and the difference matters because other machinery reads it: `active` decides what counts as retired, and `retired-citations` fires off that. **A scheme in this state has an enforcement mechanism that cannot fire, and the build is green *because* nothing is being judged.**
That is one case of a more general property, and naming the general property makes the missing half obvious.
## The general property
A scheme's declared facets — `status`, and whatever else a project declares (`consensus`, an editorial `stage`, a `confidence`) — are meant to be **independent axes**. `TagGroup` already says so in as many words:
> `tags.yaml` declares what a tag *means*; this declares which of them may appear together, **because some vocabularies are axes rather than piles.**
Independence is the thing that makes a second axis worth its cost. And there are two ways to lose it:
| | what it looks like | reported today |
|---|---|---|
| **constant** | one value across the corpus; the axis has one point | ✅ `inert-status` |
| **determined** | two axes vary, but one predicts the other | ❌ nothing |
The second is the same failure wearing a disguise. If every `Superseded` document is also `unassessed`, the second field is spending config, template space and author attention to say nothing the first did not. It looks like it is working — values vary, the field is populated, the lint is quiet — which is exactly the "green because nothing is being judged" shape #104 was filed about.
## Why this is worth checking rather than asserting
The anthology's ADR-015 introduced `consensus` on an explicit claim:
> the two are orthogonal — a `Deferred` practice can be `converged` and an `Active` one `contested`
Nothing checks that. It was argued from two hand-picked corner cases (`SOTA-120` at `Deferred`+`converged`) and is true today, but a corpus drifts: if the corners stop being populated the axes collapse into one and no one finds out. A record that can state a claim about its own shape should be able to check it.
## Sketch
A **report**, not a lint error — this needs judgement, so it takes an acknowledgement directive the way the other distributional findings do.
- For each scheme with ≥2 declared facets, over the documents that have a value on both: report a pair where one facet's value is (near-)perfectly predicted by the other's.
- Reuse `inert-status`'s dial shape: a `share` threshold defaulting to something strict, because lowering it is a claim about what the scheme is for and that belongs to the project.
- Reuse its floor, so a young scheme with four documents is not accused of collapse.
- Reuse its acknowledgement (`uniform_ok`'s sibling): "these correlate because the field genuinely moves with status, and that is the point" is a legitimate answer.
- `inert-status` becomes the degenerate case of this rather than a separate mechanism — one implementation (DP-4), if the generalization is clean. Worth checking whether it actually is before assuming; it may be cheaper to leave them as two checks that share a floor.
## Where it came from, and what was rejected
Out of the naming discussion on #187: if facets are axes, is the set a **basis**?
The metaphor was rejected as a *name* and mined for the one thing it contributes. A basis needs independence and spanning. **Spanning is unusable** — there is no ground truth for "everything worth saying about a document's standing", so completeness cannot be checked. **Independence is checkable**, and `inert-status` is already checking the rank-0 case of it.
Not adopting "basis" as vocabulary: it carries linearity (you cannot add `Superseded` to `contested`), unique coordinates and change-of-basis, none of which mean anything here, and it would claim a minimality the record cannot verify. `facet` is standard information-architecture vocabulary and legible to someone writing a `luria.toml`.
## The corpus that would exercise it
The anthology: **134 of 144 practices are `unassessed`**. That distribution is close to `inert-status`'s existing complaint on a *different* field, and is exactly where a correlation check would either confirm the axes are doing separate work or show that `consensus` is currently a restatement of "nobody has looked at this".
Contributor guide
Research direction
Start by reading the existing inert-status check from #104 and the TagGroup description in tags.yaml. Review ADR-015 and the rejected naming discussion in #187, then inspect how acknowledgement directives are represented in luria.toml. Done means a report can cover correlated facets, with thresholds, a corpus floor, acknowledgement, and a decision on whether inert-status can share the implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100