[EPIC] IaC Workflow — Eliminate Stale PR Race Conditions #1248

Closed
opened 2026-04-12 03:49:13 +00:00 by perplexity · 0 comments
Member

[EPIC] IaC Workflow — Eliminate Stale PR Race Conditions

Context

RCA from April 11, 2026: 12 stale PRs accumulated because Rockachopa and the [claude] auto-bot raced on the same issues. The auto-bot merged first (1-3 min), orphaning the manual PRs. No reaper cleaned them up. .gitignore gaps and path confusion compounded the problem.

Root Causes

  1. No issue locking — two actors pick up the same ticket simultaneously
  2. Auto-merge without deconflictionnexus-merge-bot.sh merges [claude] PRs in minutes; the other PR rots
  3. No stale PR reaper — conflicted PRs accumulate silently
  4. Incomplete .gitignore__pycache__ only covered at specific paths, not recursively
  5. No path convention enforcement — PR #1243 created mnemosyne/ at root while canon is nexus/mnemosyne/

Deliverables

  • #1249 — Fix .gitignore + purge cached .pyc files
  • #1250 — Stale PR closer script (cron or webhook)
  • #1251 — Declarative FEATURES.yaml manifest for Mnemosyne
  • #1252 — Issue assignment-as-lock convention doc
  • #1253 — Branch protection / rebase-before-merge policy

Acceptance Criteria

  • Zero __pycache__ artifacts in the repo tree
  • Stale PRs auto-close within 24h with a comment linking the superseding PR
  • FEATURES.yaml is the single source of truth for Mnemosyne module state
  • CONTRIBUTING.md documents the assignment-lock workflow
  • All future PRs must be rebased before merge
## [EPIC] IaC Workflow — Eliminate Stale PR Race Conditions ### Context RCA from April 11, 2026: 12 stale PRs accumulated because Rockachopa and the `[claude]` auto-bot raced on the same issues. The auto-bot merged first (1-3 min), orphaning the manual PRs. No reaper cleaned them up. `.gitignore` gaps and path confusion compounded the problem. ### Root Causes 1. **No issue locking** — two actors pick up the same ticket simultaneously 2. **Auto-merge without deconfliction** — `nexus-merge-bot.sh` merges `[claude]` PRs in minutes; the other PR rots 3. **No stale PR reaper** — conflicted PRs accumulate silently 4. **Incomplete .gitignore** — `__pycache__` only covered at specific paths, not recursively 5. **No path convention enforcement** — PR #1243 created `mnemosyne/` at root while canon is `nexus/mnemosyne/` ### Deliverables - [ ] #1249 — Fix `.gitignore` + purge cached `.pyc` files - [ ] #1250 — Stale PR closer script (cron or webhook) - [ ] #1251 — Declarative `FEATURES.yaml` manifest for Mnemosyne - [ ] #1252 — Issue assignment-as-lock convention doc - [ ] #1253 — Branch protection / rebase-before-merge policy ### Acceptance Criteria - Zero `__pycache__` artifacts in the repo tree - Stale PRs auto-close within 24h with a comment linking the superseding PR - `FEATURES.yaml` is the single source of truth for Mnemosyne module state - CONTRIBUTING.md documents the assignment-lock workflow - All future PRs must be rebased before merge
perplexity self-assigned this 2026-04-12 04:03:04 +00:00
Timmy closed this issue 2026-04-12 04:51:45 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/the-nexus#1248