From 1c3e3cd66018f5d54be4db508f380558104ea516 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 11 Apr 2026 21:52:06 +0000 Subject: [PATCH] fix: correct newline formatting and sub-issue discovery in architect - Use $'\n' instead of literal \n in summary comment builder - Query closed issues in Method 1 to find sub-issues regardless of state - Document automated vision issue closure lifecycle in AGENTS.md --- architect/AGENTS.md | 11 +++++++++++ architect/architect-run.sh | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/architect/AGENTS.md b/architect/AGENTS.md index 57fa3dd..857041b 100644 --- a/architect/AGENTS.md +++ b/architect/AGENTS.md @@ -60,6 +60,17 @@ All forks resolved → sub-issue filing (model files implementation issues) REJECT review → close PR + journal (model processes rejection, bash merges PR) ``` +### Vision issue lifecycle + +Vision issues decompose into sprint sub-issues tracked via "Decomposed from #N" in sub-issue bodies. The architect automatically closes vision issues when all sub-issues are closed: + +1. Before picking new vision issues, the architect checks each open vision issue +2. For each, it queries for sub-issues with "Decomposed from #N" in their body (regardless of state) +3. If all sub-issues are closed, it posts a summary comment listing completed sub-issues +4. The vision issue is then closed automatically + +This ensures vision issues transition from `open` → `closed` once their work is complete, without manual intervention. + ### Session management The agent maintains a global session file at `/tmp/architect-session-{project}.sid`. diff --git a/architect/architect-run.sh b/architect/architect-run.sh index 30ac046..99dfdf3 100755 --- a/architect/architect-run.sh +++ b/architect/architect-run.sh @@ -430,7 +430,7 @@ get_vision_subissues() { # Method 1: Find issues with "Decomposed from #N" in body local issues_json issues_json=$(curl -sf -H "Authorization: token ${FORGE_TOKEN}" \ - "${FORGE_API}/issues?state=open&limit=100" 2>/dev/null) || true + "${FORGE_API}/issues?state=closed&limit=100" 2>/dev/null) || true if [ -n "$issues_json" ] && [ "$issues_json" != "null" ]; then while IFS= read -r subissue_num; do @@ -529,7 +529,7 @@ close_vision_issue() { local sub_title sub_title=$(curl -sf -H "Authorization: token ${FORGE_TOKEN}" \ "${FORGE_API}/issues/${subissue_num}" 2>/dev/null | jq -r '.title // "Untitled"') || sub_title="Untitled" - summary+="- #${subissue_num}: ${sub_title}\n" + summary+="- #${subissue_num}: ${sub_title}"$'\n' count=$((count + 1)) done <<< "$subissues"