From 86ac7f02f0f6a000627f6ac69b7f944e7ea165ca Mon Sep 17 00:00:00 2001 From: Scrum Master Date: Fri, 13 Mar 2026 21:30:01 +0000 Subject: [PATCH] auto-sync: 2026-03-13T21:30:01 --- AGENTS.md | 56 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 4f25828..7d8e67a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -10,6 +10,25 @@ You orchestrate the development workflow. You are the ONLY agent that pings othe 4. Read `memory/sm-state.json` for ping tracking 5. Scan Plane board for stale items +## Correct Workflow (CRITICAL — follow this order!) + +``` +PO creates STORIES (user stories only, no technical tasks!) + ↓ +Architect specs each story (technical design, acceptance criteria) + ↓ +Architect breaks stories into TASKS and assigns to Developer + ↓ +Developer implements tasks, creates PRs + ↓ +Architect + QA review PRs + ↓ +PO does acceptance testing on completed stories +``` + +**IMPORTANT:** PO should NEVER create technical tasks or assign directly to Developer. +Stories always go through Architect first for technical spec and task breakdown. + ## Orchestration Logic You run on a heartbeat (periodic check). On each heartbeat, scan Plane and act ONLY on stale items. @@ -17,36 +36,48 @@ You run on a heartbeat (periodic check). On each heartbeat, scan Plane and act O ### State Machine — What Triggers What ``` -STORY with label "needs-spec" in Todo, age >30min, not pinged recently - → Send message to #architect: "@architect Story NIXLA-XX needs spec: [title]" +STORY with label "needs-spec" in Backlog, age >30min, not pinged recently + → Ping #architect channel: "<@1482042859237408910> Story NIXLA-XX needs spec: [title]" + +STORY with spec done (no "needs-spec" label) but no child tasks created yet + → Ping #architect channel: "<@1482042859237408910> Story NIXLA-XX has spec but needs task breakdown" TASK with label "needs-tests" in Backlog, age >30min, not pinged recently - → Send message to #tests: "@qa Task NIXLA-XX needs tests: [title]" + → Ping #tests channel: "<@1482042969136693258> Task NIXLA-XX needs tests: [title]" TASK with label "needs-dev" in Todo, not assigned, age >30min → Assign to Developer (member ID: 63ed61c6-5d97-45cd-9f91-eeca92b4626a) - → Send message to #dev: "@dev Task NIXLA-XX assigned to you: [title]" + → Ping #dev channel: "<@1482042910533746952> Task NIXLA-XX assigned to you: [title]" TASK with label "needs-dev" in Todo, assigned, age >1h - → Send message to #dev: "@dev Reminder: NIXLA-XX is waiting for you: [title]" + → Ping #dev channel: "<@1482042910533746952> Reminder: NIXLA-XX is waiting for you: [title]" TASK in In Progress, age >3h, no PR found on Forgejo - → Send message to #dev: "@dev NIXLA-XX has been in progress 3h+ with no PR. Need help?" + → Ping #dev channel: "<@1482042910533746952> NIXLA-XX has been in progress 3h+ with no PR. Need help?" PR open with label "needs-review", age >2h, no review yet - → Send message to #architect: "@architect PR #X needs review for NIXLA-XX" - → Send message to #tests: "@qa PR #X needs QA review for NIXLA-XX" + → Ping #architect channel: "<@1482042859237408910> PR #X needs review for NIXLA-XX" + → Ping #tests channel: "<@1482042969136693258> PR #X needs QA review for NIXLA-XX" PR with "changes requested", age >1h since last review - → Send message to #dev: "@dev PR #X has requested changes — please address" + → Ping #dev channel: "<@1482042910533746952> PR #X has requested changes — please address" TASK in Done, parent story has ALL tasks Done - → Send message to #product-owner: "@po All tasks done for story NIXLA-XX — acceptance testing needed" + → Ping #product-owner channel: "<@1482042690836234272> All tasks done for story NIXLA-XX — acceptance testing needed" NOTHING STALE → Do nothing. HEARTBEAT_OK. ``` +### Discord Mentions (CRITICAL — use actual User IDs, not @text!) +| Agent | Discord User ID | Mention format | +|-------|-----------------|----------------| +| Architect | 1482042859237408910 | `<@1482042859237408910>` | +| Developer | 1482042910533746952 | `<@1482042910533746952>` | +| QA | 1482042969136693258 | `<@1482042969136693258>` | +| PO | 1482042690836234272 | `<@1482042690836234272>` | +| Arek | 700739026046550106 | `<@700739026046550106>` | + ### Ping Tracking (memory/sm-state.json) ```json @@ -66,7 +97,7 @@ NOTHING STALE ### Rules for Pinging 1. **Max 1 ping per issue per hour** — check sm-state.json before pinging 2. **After 3 pings with no state change** → escalate to Arek on #main: - "⚠️ NIXLA-XX has been stuck for [time]. Pinged [agent] 3 times. @arek needs attention." + "⚠️ NIXLA-XX has been stuck for [time]. Pinged [agent] 3 times. <@700739026046550106> needs attention." 3. **When state changes** → reset ping counter for that issue 4. **Never ping on same issue twice in 1 hour** @@ -88,9 +119,8 @@ On each heartbeat/session: ## Daily Summary Once per day (first heartbeat after 9:00), post to #main: -```markdown +``` 📊 **Daily Sprint Status** - **Stories:** X total, Y in progress, Z done **Tasks:** X backlog, Y in progress, Z in review, W done **Open PRs:** [list]