chain (multi-root): 3 issues — Phase 0.4 diagnosis-detection precision sweep from #53 verify (#114) - #114
Conversation
Two Python substring sites in idd-all/SKILL.md still used the pre-#53 substring pattern `'## Diagnosis' in c['body']` after #53 / PR #58 tightened the equivalent in idd-all-chain to line-anchored regex. Sister-skill consistency sweep per #53 verify follow-up: - idd-all/SKILL.md:450 — complexity readback Python helper - idd-all/SKILL.md:533 — Phase 3b Spectra context capture Both swapped to `re.search(r'(?m)^## Diagnosis', c['body'])`, matching the check-diagnosis-readiness.sh canonical convention. Note: the cited idd-list:115 and idd-update:120 sites in the #59 issue body are prose descriptions of the detection STRATEGY in narrative markdown — they don't contain executable substring code. idd-close/SKILL.md:416 uses `startswith("## Diagnosis")` (jq) which is already line-1-anchored (stronger than substring) — left unchanged. Only idd-all has the substring pattern in actual code. 0 behavior change for canonical IDD comments (col-0 `## Diagnosis`); adversarial comment bodies (quoting the heading marker in prose) no longer false-positive. Refs #59
…code limitation doc (#64 + #65) #64 — Widen regex from `^## Diagnosis` to `^[ ]{0,3}## Diagnosis` for CommonMark spec's 1-3 space leading indent tolerance on ATX headings. 0 false-positive for canonical IDD comments (col-0 = `[ ]{0}` still matches); user-pasted comment bodies with legal indent no longer false-negative. 4+ space leading indent stays excluded (per CommonMark that's a code block, not a heading); tab indent stays excluded (U+0009 is not a valid ATX heading indent). #65 — Acknowledge fenced-code false-positive as documented known limitation (Approach A per diagnosis decision point). A comment body that quotes `## Diagnosis` inside a fenced code block for documentation purposes will false-positive as 'diagnosed'. Mitigation: chain Phase 0.4 AskUserQuestion lets user override the auto-detect verdict — the heuristic + user-override safety net is preferred over a full markdown state-machine parser (which would itself contain edge-case bugs in fence nesting / language hints / indentation rules). Comment block in the helper script makes the trade-off explicit so future contributors don't 'fix' the limitation by adding parser complexity without considering the cost. Refs #64 #65
#65) 3 sister fixes from #53 verify follow-up family addressing detection regex precision: - #59 idd-all Python detection sync (refactor) — 2 substring sites swapped from `'## Diagnosis' in c['body']` to line-anchored `re.search(r'(?m)^## Diagnosis', c['body'])`, matching the check-diagnosis-readiness.sh canonical convention. Note: cited idd-list / idd-update sites in #59 issue body are narrative prose not executable substring code; idd-close uses startswith() (already line-1-anchored). Only idd-all had actual substring code. - #64 CommonMark indent tolerance (enhancement) — check-diagnosis-readiness.sh regex widened from `^## Diagnosis` to `^[ ]{0,3}## Diagnosis` for CommonMark spec's 1-3 space leading indent tolerance. 0 false-positive for canonical IDD col-0 comments; 4+ space indent stays excluded (code block); tab indent excluded. - #65 Fenced-code limitation doc (documentation, Approach A) — NEW comment block in check-diagnosis-readiness.sh documenting that detection is line-based and doesn't track fenced code state. A comment body quoting `## Diagnosis` inside a fence will false-positive. Mitigation: chain Phase 0.4 AskUserQuestion lets user override. Simpler heuristic + user-override safety net preferred over full state-machine parser (which would have its own edge-case bugs). NOT in scope: #61 (shell test fixture infra) — diagnosed in same batch as Plan-tier with framework-choice surface (bats-core vs plain shell). Deferred per `feedback_lead_minimal` discipline: Plan-tier decisions deserve dedicated approval gate, not lumped into a precision-sweep cluster. Stays diagnosed for separate iteration. Refs #59 #64 #65
/idd-verify --pr 114 — cluster verify reportPhase: verified (verify-gated PASS)
Aggregate verdict: PASS
Findings0 blocking findings. 3 non-blocking observations (all FYI, not blocking merge):
Per-issue verdict#59 — idd-all Python substring → regex: PASS
#64 — CommonMark indent tolerance: PASS
#65 — Fenced-code limitation doc (Approach A): PASS
Shared
Process gapCodex Next: merge readyCluster ready to merge:
Verify: 3-AI ensemble PASS (Codex process gap recorded). 0 blocking findings, 3 non-blocking observations all FYI. |
…n-dev v2.68.0 Distribution sync after PR #114 merge (a15a6a5) closing #59 #64 #65 (Phase 0.4 detection precision sweep from #53 verify): - .claude-plugin/marketplace.json: 2.67.0 → 2.68.0 + full description - plugins/issue-driven-dev/README.md: Version History row v2.56.0-v2.67.0 → v2.56.0-v2.68.0 + appended v2.68.0 paragraph Refs #59 #64 #65
Refs #59 #64 #65
Summary
Multi-root chain (N=3 roots: #59 #64 #65) — Phase 0.4 diagnosis-detection precision sweep from #53's verify follow-up family. 3 sister fixes touching
scripts/check-diagnosis-readiness.sh+skills/idd-all/SKILL.md.Out of scope this PR: #61 (shell test fixture infra) — diagnosed in same batch as Plan-tier with framework-choice surface (
bats-corevs plain shell). Deferred perfeedback_lead_minimaldiscipline. Stays diagnosed for separate iteration.Cluster overview
Per-issue details
#59 — idd-all Python detection sync (refactor)
2 substring sites in
skills/idd-all/SKILL.md(commit9d58660) swapped from'## Diagnosis' in c['body'](substring match) → line-anchored regexre.search(r'(?m)^## Diagnosis', c['body']), matching thecheck-diagnosis-readiness.shcanonical convention shipped in #53 / PR #58:Cited sister sites in #59 issue body:
idd-list/SKILL.md:115— narrative prose describing detection strategy (not executable code)idd-update/SKILL.md:120— narrative prose describing scan rules (not executable code)idd-close/SKILL.md:416— usesstartswith("## Diagnosis")(jq) which is already line-1-anchored (stronger than substring)Only
idd-allhad substring patterns in real executable code. Scope narrowed accordingly.#64 — CommonMark indent tolerance (enhancement)
scripts/check-diagnosis-readiness.shregex (commite6c41ff) widened:CommonMark spec allows 1-3 space leading indent for ATX headings. The strict
^anchor false-negatived user-pasted comment bodies with legal indent.[ ]{0,3}correctly:[ ]{0})#65 — Fenced-code limitation doc (documentation, Approach A)
NEW comment block in
scripts/check-diagnosis-readiness.sh(commite6c41ff) documenting that detection is line-based and doesn't track fenced code block state. A comment body that quotes## Diagnosisinside a fenced code block (```) for documentation purposes will false-positive as 'diagnosed'.Approach A (docs-acknowledge) selected per diagnosis decision point +
feedback_lead_minimal. Mitigation: chain Phase 0.4 AskUserQuestion lets the user override the auto-detect verdict (run /idd-diagnose first / proceed anyway / cancel). Simpler heuristic + user-override safety net preferred over Approach B (full markdown state-machine parser) — the parser itself would contain its own edge-case bugs in fence nesting / language hints / indentation rules.Review status
/idd-close #Nper issue after merge🤖 Generated by /idd-all-chain. Do NOT add GitHub close trailers (Closes/Fixes/Resolves) — IDD discipline requires manual /idd-close per issue after merge to enforce checklist gate + per-issue closing summary.