Status: Accepted
Date: 2026-07-06
Context
Six GOVERNANCE-themed known-issues had accumulated about the integrity of the
.context/ and ADR tooling: the adr-index gate checked existence not freshness;
check-undocumented-decisions.sh silently skipped any file mentioning
index.yaml; generated remediation plans omitted the now-required value field;
the frontmatter schema’s additionalProperties: false was not enforced by a real
validator; effort used single-letter values against the UPPER_CASE-word
convention (ADR-050); and known-issues themselves had no enforcement gate. A
verification pass confirmed all six were still live against current source. A
3-reviewer plan-review then examined a single consolidated remediation plan.
Decision
Fix by value, not in one batch. The six issues are split by their own
valuegrades rather than bundled. The three quick, genuinely-valuable gaps
(adr-index freshness, undocumented-decisions false-negative, remediation-plan
value— all individuallyvalue: MEDIUM/S-effort) go in
governance-tooling-hardening-2026-07-06.md. The twovalue: LOW,
high-blast-radius gaps (effort full-word enum migration; a real JSON-schema
validator) go in a separate deferred plan,
governance-enum-and-schema-hardening-2026-07-06.md.Do not gate valuable work behind low-value work. The consolidated plan
originally sequenced the LOW-value effort-enum migration as a hard prerequisite
to the valuable remediation-planvaluefix. Two independent reviewers
(Strategic, Risk) flagged that a blendedvalue: MEDIUMhid a LOW majority-
effort tail and that the coupling blocked a live fix. The split removes the
coupling and keeps each plan sorting honestly under the read protocol.Known-issues enforcement stays rejected (reaffirms the deferral). The
known-issues-lack-enforcementgap is a settleddo_not_proceed_for_now
design-debate verdict — self-assigned severity, creation-date cannot detect
neglect, a wall-clock expiry gate is non-deterministic, and any such gate is
trivially silenceable. It is not actioned by either plan and staysACTIVEas
a tracked deferral. This complements ADR-046 (which established the known-issue
context type) by recording that the type deliberately carries no enforcement.Generated remediation plans get a static
value: MEDIUM, not a derived
grade. Derivingvaluefrom the score gap would invent a second heuristic
for no proven benefit; a static default is the minimal fix that makes generated
plans satisfy the validator. Revisit only if the grades prove systematically
wrong.The deferred plan sequences the enum migration before the schema validator,
and does not enforceadditionalProperties: falseagainst generated
remediation plans until they have a dedicated schema or a path-glob exemption.
The effort enum must be final before a strict validator locks it in, and a
strict validator would otherwise reject generated remediation plans on their
extra keys.
Consequences
- Easier: the read protocol stays honest — the MEDIUM quick-wins plan is not
weighed down by a LOW deferred tail, and the valuable remediation-plan fix ships
without waiting on an optional migration. - Prevents re-litigation: a future agent will not re-attempt known-issues
enforcement (Decision 3), re-bundle the enum/schema work into the quick-wins
plan (Decisions 1-2), or add agapValue()heuristic without cause (Decision 4). - Ongoing: the deferred plan carries genuinely open design questions (effort
vocabulary, schema-validator runner, remediation-plan schema scope) to be
resolved in its ownplan-reviewwhen it reaches the top of the queue. - Observed irony worth noting: the quick-wins plan is currently exempted from
thecheck-undocumented-decisionsscan by the veryindex.yaml-substring
false-negative (G3) it exists to fix — this ADR gives it real coverage
regardless, and G3’s fix will bring it under the scan legitimately.