Description
Entries in the work-problems ADR-044 loop-end queue (.afk-run-state/outstanding-questions.jsonl) reference decisions by bare ID (e.g. existing_decision: "ADR-060 § Bypass mechanism line 158") with no revision pin — no commit SHA, no amendment-date snapshot. A deviation-approval entry queued against one revision of a decision can therefore survive an amendment that changes or retires the very mechanism it cited, and be surfaced at a later loop-end for adjudication against a revision that no longer matches. In the observed case a 2026-06-02 entry cited a bypass-trailer encoding that a 2026-06-08 amendment retired entirely; at 2026-06-10 loop-end the user adjudicated the stale framing against a mechanism that no longer existed. The mismatch was caught only by accident (a fresh-context subagent happened to read the current ADR text during a downstream capture).
Symptoms
- Loop-end
outstanding_questions entries are presented for adjudication with framing that may no longer match the cited decision's current revision.
- Without an accidental fresh read, a rework decision contradicting the CURRENT decision text can be produced.
Workaround
Rely on incidental fresh reads of the cited decision during unrelated work. No systematic guard.
Affected plugin / component
@windyroad/itil — work-problems SKILL (Step 5 outstanding_questions schema + Step 2.5 surfacing pass).
Frequency
Latent on every queued deviation/direction entry that outlives an amendment to its cited decision; observed once with user-visible impact (2026-06-10).
Versions
- Local plugin:
@windyroad/itil (cache 0.57.1)
- Upstream package:
@windyroad/itil (not detected — monorepo)
- Claude Code CLI: 2.1.201 (Claude Code)
- Node: v22.17.1
- OS: Darwin 25.3.0 x86_64
Evidence
- Queued 2026-06-02 against a bypass-trailer encoding; retired by a 2026-06-08 amendment; adjudicated stale at 2026-06-10 loop-end.
Fix direction (either or both)
- (a) Queue entries record the cited decision file's git blob SHA / last-amendment date at queue time; the Step 2.5 surfacing pass compares against current state and prefixes the question with "NOTE: decision amended since this was queued" on mismatch.
- (b) Step 2.5's ranking step re-reads each cited decision before presenting and drops/flags entries whose cited section no longer exists.
Cross-reference
Reported from a downstream adopter's docs/problems/ (tracked locally as P092).
Description
Entries in the work-problems ADR-044 loop-end queue (
.afk-run-state/outstanding-questions.jsonl) reference decisions by bare ID (e.g.existing_decision: "ADR-060 § Bypass mechanism line 158") with no revision pin — no commit SHA, no amendment-date snapshot. A deviation-approval entry queued against one revision of a decision can therefore survive an amendment that changes or retires the very mechanism it cited, and be surfaced at a later loop-end for adjudication against a revision that no longer matches. In the observed case a 2026-06-02 entry cited a bypass-trailer encoding that a 2026-06-08 amendment retired entirely; at 2026-06-10 loop-end the user adjudicated the stale framing against a mechanism that no longer existed. The mismatch was caught only by accident (a fresh-context subagent happened to read the current ADR text during a downstream capture).Symptoms
outstanding_questionsentries are presented for adjudication with framing that may no longer match the cited decision's current revision.Workaround
Rely on incidental fresh reads of the cited decision during unrelated work. No systematic guard.
Affected plugin / component
@windyroad/itil—work-problemsSKILL (Step 5outstanding_questionsschema + Step 2.5 surfacing pass).Frequency
Latent on every queued deviation/direction entry that outlives an amendment to its cited decision; observed once with user-visible impact (2026-06-10).
Versions
@windyroad/itil(cache 0.57.1)@windyroad/itil(not detected — monorepo)Evidence
Fix direction (either or both)
Cross-reference
Reported from a downstream adopter's
docs/problems/(tracked locally as P092).