Status: Accepted
Date: 2026-07-06
Context
A session-reflection run (an independent sub-agent reviewing a session’s work) surfaced several verified, concrete gaps — most notably that check-docs-drift.sh’s new jq-based sidecar lookup hard-fails a contributor’s pre-push hook with an unhelpful exit 127 if jq isn’t on PATH, confirmed live by actually removing jq from PATH and re-running the script. Items like this, surfaced during reflection but not fixed in the same session, had no durable home: the session-reflection skill’s existing “Follow up” step said only “if a finding warrants preservation, create a new finding entry” — findings are for research/investigation output, not naturally for “this is a real bug, deliberately not fixed right now, don’t forget it.” Without a dedicated place, verified gaps like this tend to evaporate into chat scrollback once a session ends.
Decision
known-issueis added as a sixth.context/file type, alongsideplan,finding,analysis,instruction,audit— living under.context/known-issues/, one file per issue (matching the existing one-file-per-topic convention for findings, not a single running checklist). Added tocontext-frontmatter.schema.json’stypeenum andregenerate-context-index.sh’s type-grouping tables.- A
severityfield (critical | high | medium | low) is required fortype: known-issue, enforced byvalidate-context-frontmatter.shthe same wayeffortis required for draft/active plans. TheKnown Issuesindex section is sorted by severity (critical first) so the highest-urgency items surface without opening every file. - The
Known Issuessection is placed first in.context/index.yaml’s output, ahead of Plans — this list is meant to be the first thing a reader scans, not buried after other sections. statusreuses the existingdraft | active | done | supersededenum rather than inventing new values —activemeans still open,donemeans fixed. No new status vocabulary was needed.- The
session-reflectionskill’s “Follow up” step is the primary, designated source ofknown-issueentries. ItsSKILL.mdnow explicitly instructs: a reflection item that’s a verified, concrete gap NOT being fixed in the current session must become a.context/known-issues/<topic>-YYYY-MM-DD.mdentry viacontext-file, rather than only being discussed and left in chat. Not creating one for something about to be fixed immediately — fix it instead;known-issueis for consciously deferred work only. - Two known-issue entries are seeded from the reflection that motivated this decision, both stemming from the reviewed-baseline docs-drift work (ADR-045, not yet merged at time of writing): the
jqhard-dependency bug (critical) and cumulative-mode’s CI-visible-but-not-enforced gap (high). Lower-signal reflection items (an untested-in-Actions assumption, a manual-only regression test) were deliberately not promoted to known-issue status — the list is for genuinely critical/high-severity, verified gaps, not every minor observation, to keep its signal meaningful.
Consequences
- Easier: a verified-but-deferred gap now has one obvious, git-tracked, indexed home instead of relying on someone remembering a chat message or re-reading old PR descriptions.
- Easier:
.context/index.yaml’s severity-sortedKnown Issuessection gives an at-a-glance “what’s the most urgent debt right now” view without opening every file, the same wayeffortdoes for plans. - Harder: a sixth file type is one more thing to remember when authoring or reviewing
.context/files — mitigated by reusing the existing frontmatter schema/status vocabulary rather than inventing new mechanics, so the marginal complexity is one new type name and one new field. - Binding for future work: any future edit to the
session-reflectionskill’s “Follow up” step must preserve the known-issue creation instruction — removing it would silently regress reflection findings back to evaporating in chat, the exact problem this ADR fixes.