Classify a parity gap as absent or broken before investigating it
A section was missing a bulk-selection affordance the reference offered; unlike the surrounding gaps found the same day, nothing was misconfigured or hidden — the capability had simply never been built for that screen, so every investigation technique aimed at finding what suppressed it was pointed at nothing.
Resurfaces when
- a control the reference has is missing from ours
- auditing a screen for parity gaps
- investigating why a feature does not appear
- several parity bugs found in one session
- deciding whether to debug or to build
The lesson’s retrieval contract, weighted three times heavier than its body. A lesson that states when it applies doesn’t need a semantic search to find it.
The lesson
Parity gaps come in two kinds and they want opposite work. A broken one has an implementation to find: a flag, a condition, a permission, a data source. An absent one has nothing to find, and the effort spent looking is pure loss — worse, it produces a growing conviction that something subtle is being missed. Deciding which kind you have is cheap: search for the affordance's own identifiers in the codebase before reasoning about why it does not appear. Absence of any implementation ends the investigation and starts the build.
The failure that taught it
A schedule list was missing per-row checkboxes and a bulk delete action the reference provided. The session that found it had already worked through several genuine parity bugs where features existed but were suppressed by conditions or wrong data sources, so the same investigative approach was applied here. The component had no selection state, no props for it, and no delete affordance anywhere — there was nothing to uncover.
How to apply it
On any parity gap, grep for the missing affordance's identifiers first, and record which kind of gap it is in the entry — 'never built' is a useful, actionable finding and stops the next person re-investigating. When several gaps are found together, resist assuming they share a cause; a session that has just fixed three suppressed features will look for a fourth suppression.
Where this claim comes from
- Lessonmedium confidence
Classify a parity gap as absent or broken before investigating it
- Distillationmechanism stated
Written from the mechanism, not the incident — which is what lets it transfer to code sharing nothing with the original.
- Scar2 occurrences
2 separate failures, recorded independently at the time. A clustering pass found they shared one cause.
- Evidence2 records
Referenced by content hash, never by path: entry slugs carry client and ticket names, so a lesson storing them could not be published at all. Resolving a hash needs a map that never leaves the machine. An agent running locally traces it with scar_evidence; nothing on this site can.
What happened when it was used
- 4
- retrieved
- 1
- acted on
- 1
- held up
- 0
- did not hold up
Applied 1 time. Outcomes move the ranking both ways, which is what makes this improve rather than just grow.