{"repo": "amalik/convoke-agents", "files": {"_bmad-output/planning-artifacts/convoke-note-initiative-lifecycle-backlog.md": {"e35d87252957d7d2c2b0220f04dbfa8a59456c82": {"t": 1785596438.717483, "n": 353413, "h": "efcaeac3607fae4a", "c": "---\ninitiative: convoke\nartifact_type: note\nqualifier: initiative-lifecycle-backlog\ncreated: '2026-04-12'\nschema_version: 1\nstatus: active\norigin: party-mode-session-2026-04-12 (John, Winston, Amalik)\nsupersedes: convoke-note-initiatives-backlog.md\n---\n\n# Convoke Initiative Lifecycle & Backlog\n\n**Created:** 2026-04-12\n**Origin:** Party mode session — John (PM), Winston (Architect), Amalik\n**Status:** Draft (Pass 2 — full backlog populated from retroactive review)\n\n---\n\n## Part 1: Lifecycle Process\n\n### 1.1 Intake\n\nAny conversation about a problem, idea, observation, or improvement — regardless of source — enters the lifecycle as an **intake**.\n\n**Intake rules:**\n\n- Anyone can raise an intake: team members, code reviews, retros, party mode sessions, external feedback\n- Intakes are logged immediately in Section 2.1 with: ID, description, source, date, raiser\n- Intakes remain in the log permanently — they are the audit trail\n- An intake has no lane, no priority, and no commitment until it passes the qualifying gate\n- Intakes do not block or consume sprint capacity\n\n**Logging format:**\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| ID | Yes | Sequential: `IN-{number}` |\n| Description | Yes | One-line summary (detail in appendix if needed) |\n| Source | Yes | Where it came from (code review, retro, party mode, user report, etc.) |\n| Date | Yes | Date logged (absolute, not relative) |\n| Raiser | Yes | Who raised it (person or agent name) |\n\n### 1.2 Qualifying Gate\n\nThe qualifying gate is the single decision point that determines what happens to an intake. It is performed by one of three qualified parties:\n\n1. **Vortex team** — through discovery (full 7-stream or partial)\n2. **John (PM)** — product framing shortcut\n3. **Winston (Architect)** — technical framing shortcut\n\n**Gate rules:**\n\n- John or Winston may shortcut the Vortex discovery phase when the problem is well-understood\n- Vortex team can qualify intakes during discovery and ship spikes directly in a quick process\n- The qualifier assigns: lane, portfolio attachment, and initial RICE score\n- The qualifying decision is recorded with rationale\n- For capability-type intakes (new skill, agent, or team proposals): run the **Capability Evaluation Framework** decision tree (`convoke-note-capability-evaluation-framework.md`) to determine form factor (Skill → Agent → Team) before assigning a lane. Friction log evidence (`convoke-note-friction-log-template.md`) is the required input signal — vision is not demand.\n\n**Gate output:** one of three lanes.\n\n### 1.3 Three Lanes\n\n#### Bug Lane\n\n**Trigger:** Something is broken — observed incorrect behavior, data loss risk, or regression.\n\n**Pipeline:** Reproduce → Fix → Test → Ship\n\n**Rules:**\n\n- Bugs get a fix, not a redesign. The bug lane is for the fix only.\n- If the fix reveals a deeper structural issue, spawn a follow-up:\n - Refactoring story or light epic → **Fast Lane**\n - Larger rework → **Initiative Lane**\n- Risk vs. cost triage governs priority\n- RICE scored — impact is often hardcoded high, effort is low, so bugs rise organically in the backlog\n\n#### Fast Lane (Quick Wins + Spikes)\n\n**Trigger:** The qualifier judges the full initiative pipeline unnecessary.\n\n**Pipeline:** Story with ACs → Implement → Review → Ship\n\n**What belongs here:**\n\n- Point fixes from code reviews\n- Refactoring follow-ups from bug fixes\n- Process rules to encode\n- Small enhancements (single-module, contained scope)\n- Spikes (time-boxed learning with uncertain outcome)\n- Documentation improvements\n- Test debt items\n\n**Rules:**\n\n- Vortex team can ship spikes directly during discovery\n- Each item gets a story with acceptance criteria before implementation\n- RICE scored — low effort denominator means good items rise naturally\n- Can be bundled into themed groups for sprint planning\n\n#### Initiative Lane\n\n**Trigger:** The work is multi-module, requires architectural decisions, affects user-facing behavior, or has enough scope that skipping planning steps would create risk.\n\n**Pipeline (sequential, non-skippable):**\n\n```\nBrief → PRD → Architecture → PRD Validation → IR → Epic Breakdown\n```\n\n**Rules:**\n\n- Full pipeline, no way out. No step can be skipped.\n- The only shortcut is at intake qualification — John or Winston can qualify without Vortex discovery. Once qualified as an initiative, the pipeline is the pipeline.\n- Attaches to a portfolio item (existing taxonomy or new — see 1.4)\n- RICE scored\n- Pipeline stages track progress (see 1.5)\n\n**v6.3 Adoption standard (reference bar):**\n\nThe BMAD v6.3 Adoption initiative established the quality bar: 50 FRs, 33 NFRs, 16 failure modes mitigated, 12-check PRD validation (5/5), full FR→Architecture→Epic traceability, pre-registered experiments, innovation hypotheses with falsification criteria. This is the benchmark.\n\n### 1.4 Portfolio Attachment\n\nEvery initiative attaches to a portfolio item. The portfolio item answers: \"which part of the product does this serve?\"\n\n**Current taxonomy:**\n\n| Portfolio Item | Scope |\n|---------------|-------|\n| convoke | Core platform, CLI, update system, meta-infrastructure |\n| vortex | Discovery team (7 agents, Shiftup Innovation Vortex) |\n| gyre | Readiness team (contextual assessment) |\n| forge | Knowledge extraction team (brownfield capture) |\n| bmm | Build module (upstream BMAD agents, workflows) |\n| enhance | Skills module (workflow extensions on existing agents) |\n| loom | Orchestration / Team Factory |\n| helm | Strategic governance |\n\n**Taxonomy growth rule:**\n\n- New portfolio items are created when an initiative doesn't fit any existing item\n- Decision to create a new portfolio item is made by John + Winston\n- New items are logged with rationale\n\n**Fast Lane and Bug Lane items** also receive a portfolio attachment where applicable, for traceability. Items that are purely cross-cutting may use `convoke`.\n\n### 1.5 Pipeline Stages (Evolvable)\n\nInitiatives in the Initiative Lane track their progress through pipeline stages.\n\n**Current stages:**\n\n| Stage | Meaning |\n|-------|---------|\n| **Qualified** | Passed the gate. Lane and portfolio assigned. No planning artifacts yet. |\n| **In Pipeline** | Planning work in progress (Brief, PRD, Architecture, etc.) |\n| **Ready** | Full pipeline complete — Brief + PRD + Arch + PRD Validation + IR + Epics all exist |\n| **In Sprint** | Stories are being executed |\n| **Done** | Shipped |\n\n**Artifacts tracking (within \"In Pipeline\"):**\n\nEach initiative's row includes an artifacts indicator showing what exists:\n\n- `B` = Brief\n- `P` = PRD\n- `P✓` = PRD validated\n- `A` = Architecture\n- `IR` = Implementation Readiness report\n- `E` = Epic breakdown\n- `D` = Discovery (Vortex)\n\nExample: `D, P✓, A, IR, E` = has Discovery, validated PRD, Architecture, IR report, and Epic breakdown.\n\n**Stage evolution rule:**\n\n- These stages are configuration, not dogma\n- Stages are adapted when evidence shows the current set is insufficient\n- Changes are logged with rationale and date in this section\n\n### 1.6 RICE Scoring\n\nRICE scoring applies to **all three lanes**. It determines priority within each lane.\n\n| Factor | Scale | Description |\n|--------|-------|-------------|\n| **Reach** | 1–10 | How many users/quarter will this affect? (10 = all users, 1 = edge case) |\n| **Impact** | 0.25–3 | Per-user impact (3 = massive, 2 = high, 1 = medium, 0.5 = low, 0.25 = minimal) |\n| **Confidence** | 20–100% | How sure are we about reach and impact estimates? |\n| **Effort** | 1–10 | Relative effort in story points (1 = trivial, 10 = multi-epic) |\n| **Score** | calculated | (Reach x Impact x Confidence) / Effort |\n\n**Lane-specific scoring notes:**\n\n- **Bug Lane:** Impact is often hardcoded high (2–3) when user-facing. Effort is typically low (1–2). Bugs rise organically.\n- **Fast Lane:** Effort is typically 1–3. Items above score 3.0 are strong sprint candidates.\n- **Initiative Lane:** Full RICE applies. Effort reflects pipeline + execution (not just coding).\n\n---\n\n## Part 2: Backlog\n\n**Migration note:** Pass 2 reclassified all 88 items from `convoke-note-initiatives-backlog.md` into the three-lane model. Original IDs preserved for traceability. Items previously in \"Completed\" moved to §2.5. Items previously in \"Exploration Candidates\" moved to §2.1 (Intakes) — they never passed a qualifying gate.\n\n### 2.1 Intakes (Unqualified)\n\nItems awaiting qualification. No lane, no priority, no commitment.\n\n| ID | Description | Source | Date | Raiser |\n|----|-------------|--------|------|--------|\n| IN-1 (was N1) | Usage telemetry (opt-in) — track workflow usage, completion rates, drop-off | Multi-agent review (Noah) | 2026-03-08 | Noah |\n| IN-2 (was P5) | Convoke website — public landing/docs site, team showcase, getting started | Product owner | 2026-03-08 | Amalik |\n| IN-3 (was P6) | Tool-enabled agents — select agents use external tools (MCP, CLI, file ops) | Product owner | 2026-03-08 | Amalik |\n| IN-4 (was H4) | Validate \"strategic conversation\" hypothesis — measure triage engagement (modification rate) | P4 PRD (Innovation Hypotheses) | 2026-03-15 | John |\n| IN-5 (was D4) | Video walkthrough or tutorial — screencast of Emma's Lean Persona workflow | Contributing section | 2026-03-08 | Maya/Carson |\n| IN-6 (was W1) | Wardley Mapping as shared capability — cross-team strategic lens (multiple agents) | Winston ArcKit analysis | 2026-03-22 | Winston |\n| IN-7 (was W2) | Pre-write artifact validation hooks — Claude Code hooks validating artifacts before write | Winston ArcKit analysis | 2026-03-22 | Winston |\n| IN-8 (was P9-wka) | Forge Written Knowledge Analysis agent — potential third Forge agent for doc/code analysis | Emma contextualization | 2026-03-22 | Emma |\n| IN-9 | Initiative Lifecycle Engine — product-lens rework of backlog/portfolio/governance skills into integrated lifecycle management → ILE-1 | Party mode session | 2026-04-12 | Amalik (via John+Winston) |\n| IN-10 | Refactor `DEFAULT_ARTIFACT_TYPES` to single source of truth — eliminate drift across `scripts/migrate-artifacts.js:135`, `scripts/update/lib/taxonomy-merger.js:11`, and `taxonomy.yaml` → I54 | Code review oc-1-2 Round 1 (Blind Hunter) | 2026-04-18 | Winston |\n| IN-11 | Derive ADR type list from taxonomy in `generateGovernanceADR` — `scripts/lib/artifact-utils.js:2033` hardcodes \"Artifact types (21)\" while taxonomy has 23 → BUG-1 | Code review oc-1-2 Round 1 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-12 | Vortex audit expansion — oc-1-1 sampled only lean-persona (least-violating Vortex workflow); spot-check shows assumption-mapping has ~10 novel concepts in step-01. Audit 3-4 more Vortex workflows to compute Vortex-specific Right-to-pacing rate → A24 (renamed from A8 on 2026-04-19 — collision) | Code review oc-1-1 Round 3 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-13 | Decision-support archetype undersampled — oc-1-1 had only 1 decision-support skill (enhance-backlog) which also carried COI disclosure. Add 1 more decision-support skill to v2 Covenant audit baseline → A25 (renamed from A9 on 2026-04-19 — collision) | Code review oc-1-1 Round 3 (Acceptance Auditor) | 2026-04-18 | Winston |\n| IN-14 | Reproducibility gate ≥3 cells for future Covenant audits — oc-1-1 AC #1 literal reading says \"cells\" (plural); v1 gate measured 1 cell via D2a pragmatic reading. Future audits should cover ≥3 cells (expected-PASS + expected-FAIL + borderline) per §2.5 → A10 | Code review oc-1-1 Round 3 (Acceptance Auditor) | 2026-04-18 | Winston |\n| IN-15 | Migration scar re-interpretation evidence grounding — oc-1-1 §4.2 asserted Right-to-next-action scar shape using current CLI evidence, not historical scar-era quotes. Locate scar-era retro/logs or soften the re-interpretation with evidence-limitation note → A11 | Code review oc-1-1 Round 3 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-16 | `compareVersions` silently coerces pre-release versions to base — `scripts/update/lib/utils.js:27-39` does `Number('4-alpha') → NaN → 0`, so `compareVersions('1.0.4-alpha', '1.0.4') === 0`. Shared utility used by changelog-reader filter and migration-path decisions → U11 | Code review BUG-1+U7 Round 1 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-17 | Empty `taxonomy.initiatives.platform` / `artifact_types` not validated — `readTaxonomy` (`scripts/lib/artifact-utils.js:148-160`) accepts empty arrays; operator commenting out all entries produces degenerate ADR text like \"**Platform initiatives (0):** \" → I55 | Code review BUG-1+U7 Round 1 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-18 | `taxonomy.initiatives.user` silently dropped from generated ADR — `scripts/lib/artifact-utils.js:2031` renders only `platform`; user-scope initiatives invisible in governance artifact → I56 | Code review BUG-1+U7 Round 1 (Blind Hunter) | 2026-04-18 | Winston |\n| IN-19 | **OC-R7 doc-mapping double-counts in Paige's 4-part format** — Compliance Checklist says \"each part counts per the glossary\" but every section has 4 parts × ≥1 concept = budget always exceeded. **Story 1.4 pre-requisite: MUST resolve before Covenant self-compliance gate.** → A12 | Code review oc-1-3 Round 3 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-20 | OC-R7 concept-counting ambiguity persists even with inline §2.6 glossary — compound concepts (4-level importance taxonomy = 1 or 4?) produce reviewer disagreement. Overlaps audit §9.3. → A13 | Code review oc-1-3 Round 3 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-21 | Conditional-surface skills (e.g., Gyre single- vs multi-service) don't fit 2-variant N/A taxonomy; needs `N/A — conditional ()` variant or per-branch verdicts. → A14 | Code review oc-1-3 Round 3 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-22 | Layer 3 uncontrollable stderr — skills wrapping external CLIs (git, npm) whose errors lack next-action clauses lock OC-R6 to permanent FAIL. Need external-declaration escape hatch in worst-case rule. → A15 | Code review oc-1-3 Round 3 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-23 | Workflow-inherited concepts rule uni-directional — no rule for out-of-order review or concepts used-before-defined. Checklist audit-discipline ambiguity. → A16 | Code review oc-1-3 Round 3 (Blind Hunter) | 2026-04-18 | Winston |\n| IN-24 | Cross-module exclusion-ID validation for `excluded_agents` — `mergeConfig`, `refresh-installation`, and `convoke-doctor` silently no-op on typos (`noha` for `noah`) or wrong-module IDs (Vortex ID in Gyre config). Add a cross-registry warn when an ID isn't recognized. → I57 | Code review U8 Round 1 (Blind Hunter) | 2026-04-18 | Winston |\n| IN-25 | `excluded_agents: []` default appears in pre-U8 upgraded configs without the explanatory comment — `merged.excluded_agents = excludedAgents` emits the field but the comment lives only in the shipped source YAML. Inject it via `writeConfig` comment-preservation path. → U12 | Code review U8 Round 1 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-26 | YAML parser asymmetry between `readExcludedAgents` (js-yaml) and `mergeConfig` (yaml package) — rare anchor/merge-key divergence could cause `refresh-installation` to copy an excluded agent while `mergeConfig` filters it out. Unify on the `yaml` package. → I58 | Code review U8 Round 1 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-27 | Duplicate entries in `excluded_agents` not deduped — `['noah', 'noah']` persists both entries through merge, inconsistent with `Set`-based dedup on `agents`. → I59 | Code review U8 Round 1 (Blind Hunter) | 2026-04-18 | Winston |\n| IN-28 | `EXTRA_BME_AGENTS` (team-factory + other standalone bme agents) have no exclusion mechanism — `refresh-installation` only reads Vortex + Gyre configs for exclusion snapshots; standalone bme agents have no opt-out path. → U13 | Code review U8 Round 1 (Edge Case Hunter) | 2026-04-18 | Winston |\n| IN-29 | Dev-mode (`isSameRoot`) skill wrapper generation loops (§6, §6b) don't honor `excluded_agents` — agent-file copy is skipped but skill wrappers are still generated when `packageRoot === projectRoot`. → U14 | Code review U8 Round 1 (Blind Hunter) | 2026-04-18 | Winston |\n| IN-30 | bme/README submodule table omits `_bmad/bme/config.yaml` — sibling config file not listed in Submodules table; contributor orienting via the README won't learn it exists. Out of scope for oc-1-5 (Covenant surfacing). → D8 | Code review oc-1-5 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-31 | `docs/` directory has 6 contributor files with no Covenant pointer — no `docs/README.md` or `docs/index.md` exists; contributor landing via GitHub tree sees 6 docs with no Covenant orientation. Create `docs/README.md` as docs index with Covenant callout to legitimize AC #3's 4-of-4 coverage. → D9 | Code review oc-1-5 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-32 | Canonical Covenant location under `_bmad-output/planning-artifacts/` — path smell conflating workflow output with canonical spec. Covenant + Checklist are durable required-reading but live in the output tree, which is conventionally ephemeral. Consider moving to `docs/covenant/` or new convention with `_bmad-output/` retaining pointer. Cross-reference impact: ~8 existing references. → P24 | Code review oc-1-5 Round 1 (Blind Hunter) | 2026-04-19 | Winston |\n| IN-33 | A10 3-cell minimum doesn't scale — 2-skill audit has 14 cells (21% sample); 8-skill audit has 56 cells (5%). Fixed floor regardless of audit size. Add percentage floor or \"≥3 OR ≥10% of matrix\" scaling. → A17 | Code review A15+A5+A10 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-34 | A15 OC-R0 format extension — `(internal)/(external)` qualifier added to OC-R0 row but not propagated to §§3.x/§§8.x evidence-note examples. Templates should carry the format for audit-template copy. → A18 | Code review A15+A5+A10 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-35 | A5 `mechanical-research-enumeration` has no operational test — is a retrospective covered? A portfolio status report? A PRD personas section? Rule needs a definition or example list. → A19 | Code review A15+A5+A10 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-36 | A5 retroactive gap — v1 audit §6 sample selection was not mechanical per the new rule; rule is prospective by design but framing not documented. → A20 | Code review A15+A5+A10 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-37 | A15+A10 interaction — N/A-variant disagreement (`external-declared` vs `out-of-scope` vs `FAIL`) slips through verdict-agreement threshold. Threshold treats all non-PASS/FAIL agreement as equivalent. → A21 | Code review A15+A5+A10 Round 1 (Blind Hunter) | 2026-04-19 | Winston |\n| IN-38 | A5 story templates not updated — `bmad-create-story` + sprint-planning templates should require a search-command field for research/catalog/audit/inventory stories. → I60 | Code review A15+A5+A10 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-39 | Parser grammar § doesn't formalize the `Layers:` evidence-note prefix — enforcement aspirational until Story 2.2 Loom parser exists. Lightweight spec extension lets Loom author have a target. → I61 | Code review A15+A5+A10 Round 2 (Blind Hunter) | 2026-04-19 | Winston |\n| IN-40 | Revisions table cell growing — 430+ words per patch cycle. Split to per-patch rows or extract round detail to a `revisions/` folder with pointer. → D10 | Code review A15+A5+A10 Round 2 (Blind Hunter) | 2026-04-19 | Winston |\n| IN-41 | `(external)/(internal)` OC-R0 tokens substring-collide with `external-declared` OC-R6 value — grep tooling scanning evidence notes for `external` matches both contexts. Rename (e.g., `owned/unowned`) or document collision in Parser grammar §. → A22 | Code review A15+A5+A10 Round 2 (Blind Hunter) | 2026-04-19 | Winston |\n| IN-42 | Misprediction + DISPUTED interaction edge case unspecified in A10 — if auditor predicted PASS, reviewers unanimously FAIL (mispredicted but reproducible), then cell is DISPUTED via path (b) in a re-run, the interaction between calibration-logging and DISPUTED exclusion isn't defined. → A23 | Code review A15+A5+A10 Round 2 (Blind Hunter) | 2026-04-19 | Winston |\n| IN-43 | Vortex-wide HC-schema-at-step-01 pattern audit — A24 found 3/4 Vortex pacing FAILs concentrated at step-01's §3 Input Validation where an upstream HC-schema gets enumerated in a single intake round. Candidate workflows with likely same pattern: research-convergence, lean-experiment, learning-card, pivot-resynthesis, production-monitoring, signal-interpretation, behavior-analysis. Proper inventory of the ~23 Vortex workflows + audit of those consuming HC-contracts would motivate a class-level retrofit (shared `step-01-receive-contract` template) rather than per-workflow patches. → A26 | Code review A24 Round 1 (Blind Hunter — flagged as unsourced speculation in A24 report §6.2) | 2026-04-19 | Winston |\n| IN-44 | Staleness pre-flight for backlog pickup — parallel tracks cause silent drift: sibling sessions ship items, refactor anchored files, or duplicate-triage intakes. Today's session hit this twice (A24 shipped in parallel; oc-1-5 deferrals pre-triaged). Proposed 3-phase rollout: rule → minimal skill step → bmad-help integration. Phase 1: project-context.md rule `staleness-preflight-for-backlog-pickup` + one-line bmad-help reminder. → A27 | Architect consultation 2026-04-19 (staleness concern under parallel tracks) | 2026-04-19 | Winston |\n| IN-45 | Staleness pre-flight — Phase 2: minimal `[P] Preflight` step file in `bmad-enhance-initiatives-backlog` mechanizing the 3 checks (existence via commit/deferred-work scan, dependency state, code-anchor validity) validated during Phase 1. Ships to all Convoke end-users as a proper skill mode. → I62 (blocked on A27 evidence) | Architect consultation 2026-04-19 (staleness 3-phase rollout) | 2026-04-19 | Winston |\n| IN-46 | Staleness pre-flight — Phase 3: wire the Phase 2 Preflight checks into `bmad-help` as a decorator so \"what should I do next\" naturally runs staleness when advising on a pickup. Zero new logic once Phase 2 ships — just call-site integration. → I63 (blocked on I62 evidence) | Architect consultation 2026-04-19 (staleness 3-phase rollout) | 2026-04-19 | Winston |\n| IN-47 | ADR generation silently fails on re-run with byte-identical content — `scripts/migrate-artifacts.js:402-404` downgrades `git commit`-on-empty-tree errors to warnings with exit 0. Confirmed by T4 test fixture firing the warning-guard. 3 fix paths: `git commit --allow-empty`, no-op detection before git call, or monotonic counter in ADR content. → BUG-2 | Code review T4 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-48 | `runScript` helper returns `exitCode: null` on `execFile` timeout — `tests/helpers.js:143-152` maps `err.code` to exitCode, but timeouts set `err.signal='SIGTERM'` and leave `err.code === null`. Tests asserting `exitCode === 0` fail with misleading `null !== 0`. Fix: surface `timedOut`/`signal` as distinct return fields. → I64 | Code review T4 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-49 | Migration-generated meta-artifacts (ADR + rename-map) flagged as ungoverned on re-run — filenames don't match `{initiative}-{artifact_type}` convention the migration itself enforces. Functional idempotency holds; UX is confusing. 2 fix paths: inject governance frontmatter into ADR/rename-map on creation, or add inference-time exclusion list. → I65 | T4 ship deferral 2026-04-19 | 2026-04-19 | Winston |\n| IN-50 | Covenant audit step-01 sampling bias — A24 audited only step-01 in 3/3 workflows; later steps (up to 6 per workflow) unaudited. Future Vortex audits must cover ≥2 steps per workflow OR explicitly scope to step-01 with documented rationale. Methodology amendment to the Compliance Checklist's §Representative-skill selection OR §Reproducibility gate. → A28 | Code review A24 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-51 | Covenant audit third-workflow \"twins\" pattern-confirmation bias — A24's third pick shared architecture with its second (both lack template/validate scaffolding, both invoke HC-schema-at-step-01), guaranteeing the \"shared architectural pattern\" finding. Future audits must include ≥1 structurally-different skill per audit. Add criterion to Compliance Checklist's sample-selection rules. → A29 | Code review A24 Round 1 (Blind Hunter) | 2026-04-19 | Winston |\n| IN-52 | Convoke Operator Covenant Epic 2 T1 threshold boundary case — Epic's \"< 70%\" is strict-less-than; a cell at exactly 70% doesn't fire T1. Clarify to `≤ 70%` OR document the strict-less-than intent with an example. Spec edit to `convoke-epic-operator-covenant.md` §\"Retrofit Trigger Rule\". → A30 | Code review A24 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-53 | Cross-document consistency — Epic v1 baseline claim vs. oc-1-1 matrix. `convoke-epic-operator-covenant.md:367` states \"every Right ≥ 70%\" at v1 baseline but `convoke-report-operator-covenant-audit-2026-04-18.md:271` shows Right to pacing at 62.5% compliance (3/8 fail). Either threshold averages per-team-with-N-floor (not per-cell across all skills), or Epic claim is loose. Surfaced in A24 report §9 ambiguity #3. → A31 | Code review A24 Round 1 (Edge Case Hunter + Acceptance Auditor) | 2026-04-19 | Winston |\n| IN-54 | Right-to-next-action PASS vs N/A at intake-only steps — all 4 Vortex step-01 cells + oc-1-1 lean-persona §8.7 score R6 PASS via \"no error surface at step-01; validation happens in later steps\" reasoning. Either R6 is N/A (per §2.3) at intake-only steps, or \"no error surface\" PASS is method-correct but vacuous. Rubric silent. Surfaced in A24 report §9 ambiguity #4. → A32 | Code review A24 Round 1 (Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-55 | workflow.md-vs-step-01 scope for §2.6 novel-concept counting — §2.6 covers \"earlier steps\" but silent on whether workflow.md concepts are pre-existing at step-01. §4.2 empathy-map verdict reading-dependent (PASS under broader reading; FAIL under narrower; 8 novel concepts under strict). §4.1 + §4.3 FAILs stable either way. Surfaced in A24 report §9 ambiguity #5; corrected in Round 2 after prior \"verdict-stability\" claim was wrong for empathy-map. → A33 | Code review A24 Round 1 + Round 2 correction (Edge Case Hunter + Acceptance Auditor) | 2026-04-19 | Winston |\n| IN-56 | A24 §8.1 Mitigation Gate refinement — Round 2 code review identified gate language gaps (deferred per operator decision 2026-04-19): (a) \"independent reviewer\" scope for G2 undefined; (b) G1 doesn't specify A10 cell-composition (expected-PASS/FAIL/borderline); (c) G2 subsumption by G1 is conditional, not automatic; (d) no G5 for §4.2 empathy-map reading-dependent drift (ambiguity #5 / IN-55); (e) G1's literal scope is retrofit-only, not v2 baseline ratification. Gate language should be ratified via Epic 2 Story 2.1 governance (requires Epic 2 sequencing). → A34 | Code review A24 Round 2 (Blind Hunter + Edge Case Hunter) | 2026-04-19 | Winston |\n| IN-57 | `detectMigrationState` scans only last 5 commits — `scripts/lib/artifact-utils.js:~2118` reads `git log -5 --format=%s`. Fixture/test at T4 boundary (4+1 = 5 commits). Any intervening commit pushes the governance marker off the window → silent state-flip from `complete` → `fresh`. Fix: raise window OR document 5-commit ceiling as fixture-design constraint. → I66 | T4 ship deferral 2026-04-19 (Edge Case Hunter R1) | 2026-04-19 | Winston |\n| IN-58 | Missing baseline idempotency test — zero-ungoverned-files from the start. T4 covers (1) migrate, (2) no-op re-run, (3) new-file resumption, but not (4) fixture with no ungoverned files where first run is already a clean no-op. Adds lock on the \"already-clean project on first run\" CLI path. → T9 | T4 ship deferral 2026-04-19 | 2026-04-19 | Winston |\n| IN-59 | T4 test 4 over-specifies git state — the new ungoverned file is committed before the migration runs. If the scanner ever regresses to only seeing staged/committed files (not unstaged), test 4 wouldn't catch it. Variant: leave the new file uncommitted. → T10 | T4 ship deferral 2026-04-19 | 2026-04-19 | Winston |\n| IN-60 | `npm test` / `test:coverage` / other scripts use shell-glob expansion (`tests/unit/*.test.js`). On Windows `cmd.exe` no expansion happens → `node --test` receives literal patterns and the gate fails. Pre-existing pattern across ~5 test scripts in `package.json`. Fix: Node-side glob (e.g., `glob` package) or cross-platform shell wrapper. → I67 | Story B.4 defer (portfolio-rules Jest→node:test) | 2026-04-19 | Winston |\n| IN-61 | `afterEach` hooks use `cpMock.restore()` without defensive chaining — if `beforeEach` throws (e.g., helper resolution fails), `afterEach` secondary-throws on `undefined` and masks the root cause. Pattern repeats across `tests/lib/*` and `tests/unit/*`. Mechanical grep+touch rollout of `cpMock?.restore()`. → T11 | Story B.4 defer | 2026-04-19 | Winston |\n| IN-62 | Time-dependent test in `git-recency-rule` — `'recent activity -> status: ongoing'` and `'multiple artifacts -> picks latest date'` use `new Date().toISOString().split('T')[0]` as mock return. At UTC midnight boundary `daysSince` math flakes ±1 day. Inherited from original Jest file. Fix: fixed date `staleDays - 1` ago, not `today`. → T12 | Story B.4 defer | 2026-04-19 | Winston |\n| IN-63 | Governance ADR filename-collision on cross-day re-runs with identical stats — `adr-artifact-governance-convention-${date}.md` keys the filename on date, but identical `(renameCount, injectedCount, linksUpdated, scopeDirs, taxonomy)` on a different day produces two distinct ADR files (different filenames, byte-identical bodies apart from the `Date:` line). One logical governance decision ends up represented by two ADRs. Post-BUG-2 fix, content-identity idempotency works within a single day; cross-day identity isn't handled. Fix paths: (a) hash-suffix the filename on content, (b) overwrite-and-update the most recent ADR rather than create-new when stats match, (c) check for an existing ADR from a prior date with identical stats and skip regeneration. | BUG-2 Winston handoff (2026-04-20) | 2026-04-20 | Winston |\n| IN-64 | Add `windows-latest` to the CI matrix — I67 introduced `scripts/test-runner.js` to replace POSIX shell globs, but `.github/workflows/ci.yml` still runs only on `ubuntu-latest`. Without a Windows job, future regressions that break `cmd.exe` compatibility (e.g., someone reintroduces a shell-glob in an npm script) won't be caught by CI. Extend the `test` job's OS matrix to `[ubuntu-latest, windows-latest]` and validate `npm test`, `npm run test:integration`, `npm run test:p0`. Expect a small CI runtime increase (Windows runners are slower + add concurrency pressure); acceptable trade-off to lock in cross-platform. | I67 Winston handoff (2026-04-20) | 2026-04-20 | Winston |\n| IN-65 | Reconsider `engines: \">=22.6.0\"` during Convoke 4.0 — Winston's revised I67 analysis (2026-04-20) identified path (d): bump Node engines floor to 22.6.0+ and use native `node --test ` recursive discovery instead of the `scripts/test-runner.js` helper. Path (d) was deferred for I67 to avoid bundling an engines-bump with a scripts-fix, but Convoke 4.0 is the right vehicle: Node 18 is EOL (2025-04-30), Node 20 is in maintenance, Node 22 is current LTS, and major versions are the canonical moment to raise engines. If (d) adopted during 4.0: delete `scripts/test-runner.js`, restore dir-args to the 4 scripts, drop Node 18/20 from CI matrix. Savings: ~40 lines of helper code + removes a maintenance surface. | I67 Winston revised consultation 2026-04-20 | 2026-04-20 | Winston |\n| IN-66 | Operator-visible boundary formalization — extend Checklist §171 \"Operator-facing vs agent-facing text\" with exhaustive enumeration (frontmatter, HTML comments, Steps Overview, fenced code blocks, ``, `SYSTEM:`, INITIALIZATION blocks, `Note:` blocks) or a semantic test (\"agent-facing = imperative addressee is the LLM and not rendered/echoed to the operator\"). §171 is example-based; A33's Scope paragraph delegates to it and now load-bears on the determination of what's operator-visible. → A35 | Code review R2 of spec-a33-checklist-workflow-md-scope | 2026-04-20 | Winston |\n| IN-67 | Sibling files (`template.md`, `validate.md`, `*.template.md`) silently escape Checklist §2.4 Layer 1/2 enumeration — §2.4 Layer 1 names only `workflow.md`; Layer 2 is `steps/**.md`. Workflow-root companions are neither, so their operator-visible concept-introductions evade OC-R7 entirely (e.g., empathy-map's `validate.md:57-66` names \"Says/Thinks/Does/Feels/Pains/Gains\" dimensions). Fix path: extend Layer 1 to cover workflow-root companions OR explicit §2.4 exclusion rule. → A36 | Code review R2 of spec-a33-checklist-workflow-md-scope | 2026-04-20 | Winston |\n| IN-68 | Step-01 `Read`s workflow.md at runtime and echoes concepts to operator — A33 ¶4 exempts \"re-introduction in step-01\", but is silent on the runtime-echo case where step-01 explicitly loads workflow.md and re-states concepts. Is the echo a re-introduction (exempt) or a fresh Layer 2 introduction (counts toward step-01 budget)? Clarify in §2.6. → A37 | Code review R2 of spec-a33-checklist-workflow-md-scope | 2026-04-20 | Winston |\n| IN-69 | Cross-module + cross-workflow concept inheritance rule — two adjacent silences bundled: (a) cross-module `Read` (bmad-init bridging, Compass routing) — no rule for concepts loaded from another skill's workflow.md mid-execution; fix path: treat loaded content as Layer 2 of the calling step; (b) cross-workflow shared concepts (HC contracts, JTBD) — A33's \"within the same workflow\" scope (BS2 restoration) is silent on shared-concept declarations across workflows. → A38 | Code review R2 of spec-a33-checklist-workflow-md-scope | 2026-04-20 | Winston |\n| IN-70 | [DROPPED] New FAIL surfaces at dense Layer 1 workflows — A33's anti-escape-hatch clause (¶4) requires workflow.md's operator-visible content to pass OC-R7 at Layer 1. Skills with dense prose preambles (assumption-mapping/workflow.md:14-19 has 5+ novel concepts: bet / hides assumptions / lethality / uncertainty / testing order) now implicitly FAIL Layer 1 under A33. **Dropped from Triage**: retrofit scope is already captured in Epic 2 Story 2.1 (assumption-mapping + hypothesis-engineering step-01 retrofits). Logged for audit trail; no new lane item created. | Code review R2 of spec-a33-checklist-workflow-md-scope | 2026-04-20 | Winston |\n| IN-71 | Team Factory Phase 3 (add-agent + add-skill extension workflows, TF-FR25 + TF-FR26) is unshipped work with no Initiative Lane row. P21 Story 2.2 currently blocks on the informal label \"external Phase 3 Loom Add Skill\" rather than a trackable ID. Team Factory subsystem exists at `_bmad/bme/_team-factory/` with Phase 1+2 (add-team) shipped via P14; Phase 3 explicitly \"not yet available\" per `_bmad/bme/_team-factory/workflows/step-00-route.md:42-48`. Friction log: P21 Story 2.2 is real documented demand. → P25 | Post-Review gap analysis 2026-04-21 (following P21 Initiative Lane rescoring) | 2026-04-21 | Winston |\n| IN-72 | P14 §2.5 Completed entry overstates shipped scope. Entry claims \"3 epics, 16 stories\" (2026-03-25) but Phase 3 Add Agent/Skill is unshipped per `_bmad/bme/_team-factory/workflows/step-00-route.md:42-48` — no `add-agent/` or `add-skill/` workflow folders exist under `_bmad/bme/_team-factory/workflows/`. Amend §2.5 P14 row to clarify \"Phase 1+2 (add-team) shipped; Phase 3 (add-agent + add-skill) tracked as P25.\" Data integrity fix for backlog readers trying to understand Team Factory completion state. → I68 | Overlap-scan discovery during IN-71 verification 2026-04-21 | 2026-04-21 | Winston |\n| IN-73 | Gyre Covenant audit — zero Gyre reports exist today. Audit trajectory has been baseline (6 skills, mixed) → Vortex (deep) → IN-12 Vortex re-audit (pending) → A26 Vortex-wide pattern audit (qualified). All post-baseline audits target Vortex. Gyre never audited. Publication evidence for Epic 2 Story 2.3 requires ≥2 team audits for coverage breadth (one-team extrapolation fails Blue Ocean standard). Methodology is locked (A10 + A28/A29 Selection Discipline); Gyre audit is locked-methodology application to 4 agents × 7 rights = 28 cells. → A39 | Party mode 2026-04-21 (John + Winston, P21 next-best-move discussion) | 2026-04-21 | Winston |\n| IN-74 | Epic 2 Publication Gate scope bug — current gate in `convoke-epic-operator-covenant.md` enforces \"retrofit completion of bottleneck rights\" (Story 2.1 completion) but does NOT enforce coverage breadth. A single Vortex-audit + retrofit could theoretically unlock publication — failing both Victor's Blue Ocean standard (one-team claim is methodologically weak) and user-level trust (over-generalization). Proposed amendment: Publication Gate must require BOTH (a) retrofit completion AND (b) ≥2 team audits minimum. → A40 | Party mode 2026-04-21 (John + Winston, P21 next-best-move discussion) | 2026-04-21 | Winston |\n| IN-75 | Publication Gate definitional rigor — follow-up to A40 ship. Round 2 code review of A40 surfaced 5 HIGH findings caused by Round 1 patches (contradiction in \"locked methodology\", A10 mis-scoped as portfolio-gate, `convoke` cross-cutting satisfies gate trivially, \"substantially change\" undefined, etc.) + 4 MEDIUM (gate-clear inconsistency 439/451 vs 403/FR17, \"no regressions\" undefined, retrofit cascade livelock, A29 single-skill exemption contradiction). Rather than patch-forward into 500-word FR17 bloat, minimal A40 shipped with core commitment only; operational definitions deferred to A41 as scoped follow-up work. Scope: define \"portfolio audit\", reproducibility threshold at correct granularity, methodology-lock semantics, \"no regressions\" baseline, cascade termination, A29 single-skill handling, cross-portfolio (`convoke`) exclusion, 439/451 AC alignment with FR17. → A41 (SHIPPED 2026-04-25 bundled as A41+A42 — see §2.5 Completed) | A40 Round 2 code review 2026-04-21 (Blind Hunter + Edge Case Hunter) | 2026-04-21 | Winston |\n| IN-76 | `portfolio-engine.js` CLI — `--sort ` silently falls to alpha. `portfolio-engine.js:468-470` uses `args[args.indexOf('--sort') + 1] === 'last-activity' ? 'last-activity' : 'alpha'`. A user passing `--sort recent` gets alpha order silently with no validation warning. Fix path: validate sort value against a known set, `process.exit(2)` on invalid. Pre-existing Story 6.3 pattern, unchanged by I20 — surfaced during I20 Round 2 review. → I69 | deferred-work.md sweep 2026-04-21 (deferred-from: I20 Round 2 2026-04-20) | 2026-04-21 | Winston |\n| IN-77 | `portfolio-engine.js` CLI — `--filter` without value silently ignores the flag. `portfolio-engine.js:471-474` uses `args[filterIdx + 1] && !args[filterIdx + 1].startsWith('--')` as the guard. If `--filter` is the last arg or followed by another flag, the filter is silently dropped. Fix path: explicit error when `--filter` is present without a value. Pre-existing Story 6.3 pattern, unchanged by I20 — surfaced during I20 Round 2 review. → I70 | deferred-work.md sweep 2026-04-21 (deferred-from: I20 Round 2 2026-04-20) | 2026-04-21 | Winston |\n| IN-78 | Broad `git add _bmad-output/planning-artifacts/` stages unrelated modified files during migration. `scripts/migrate-artifacts.js:399` stages every modified/untracked file under the scope dir, not just ADR paths written by this phase. If operator has unstaged edits to sibling ADRs or notes when re-running migration, they silently get absorbed into the `\"chore: generate governance convention ADR\"` commit. BUG-2 fix amplified the consequence — diff-check sees unrelated staged change and proceeds to commit without warning. Fix path: stage only `adrPath` and (when `supersedePreviousADR` returns true) the supersede target path. → I71 | deferred-work.md sweep 2026-04-21 (deferred-from: BUG-2 2026-04-20; explicitly scoped out of BUG-2 per spec I/O Matrix) | 2026-04-21 | Winston |\n| IN-79 | \"Worst-scoring rights\" threshold undefined in Epic FR15 + Story 2.1 AC. The retrofit clause says \"rights scoring worst in the audit\" but does not specify a threshold (top-1? bottom-quartile? below some score?). Pre-existing from 2026-04-18 amendment; re-entrenched (but not introduced) by A40 Publication Gate amendment. Fix path: add explicit threshold to Epic retrofit rule, or reference Selection Discipline criteria from the Compliance Checklist. Sibling to A30 (T1 threshold boundary clarity) — both are Covenant Epic tightening work. → A42 (SHIPPED 2026-04-25 bundled as A41+A42 — see §2.5 Completed) | deferred-work.md sweep 2026-04-21 (deferred-from: A40 Round 1 2026-04-21) | 2026-04-21 | Winston |\n| IN-80 | `portfolio-engine.js --markdown` path emits terminal-style summary / WIP radar / verbose trace as plain-text interleaved with markdown output. `portfolio-engine.js` writes `Total: X artifacts | Governed: ...`, `WIP: N active ...`, and `--- Inference Trace ---` via `console.log` regardless of `useMarkdown`. Pre-I20 behavior, exposed more clearly now that the markdown path has a structured `## Unattributed Files` section above the unstructured tail. Structural fix: move summary/WIP/verbose rendering into `formatMarkdown()` (or make summary a markdown section). → I72 | deferred-work.md sweep 2026-04-21 (deferred-from: I20 Round 1 2026-04-20) | 2026-04-21 | Winston |\n| IN-81 | Secondary-channel (blog post) approval authority undefined in Story 2.3 AC. AC says \"an accompanying blog post is optional and requires separate approval (secondary channel)\" — the separate-approval authority is unspecified. Governance gap: who approves blog publication when README publication is already gated? Fix path: define approval authority in Story 2.3 AC (operator? PM? specific party?), OR state that blog publication is operator-only with no additional gate. Pre-existing, out of A40 scope (A40 is specifically about Publication Gate conditions, not secondary-channel governance). → A43 | deferred-work.md sweep 2026-04-21 (deferred-from: A40 Round 1 2026-04-21) | 2026-04-21 | Winston |\n| IN-82 | Layer 1 + operator-facing text — correct semantics for workflow-root file classes. A35+A36 bundle attempted 2026-04-21, reverted after Round 1 review found architectural premise issues: (a) Edge Case Hunter HIGH — `validate.md` files are standalone workflows (frontmatter `type: single-file`), not sibling companions of their parent workflow; A36's \"extend Layer 1 to cover workflow-root companions\" conflated standalone workflows with step-loaded templates; (b) Blind Hunter HIGH — A35's enumerations contradicted §2.4's conditional counting (authoritative-vs-illustrative tension, self-contradicting code-blocks bullet); (c) silent §2.6 inheritance expansion not addressed; (d) retroactive invalidation of Vortex audit §4.2 with no grandfather clause. Correct approach requires filesystem survey + categorization (standalone workflow / step-loaded template / operator-read doc / agent-only) before amending §2.4 and §Operator-facing. → A44 | A35+A36 Round 1 code review 2026-04-21 (reverted); supersedes: IN-66 (A35 origin) + IN-67 (A36 origin) | 2026-04-21 | Winston |\n| IN-83 | Manual-row ordering lost in BMM dependency scanner `_sortWithFr18Pin` — Task 4.3 spec said \"manual rows preserved in their original order\" but implementation re-sorts alphabetically. AC8 enforces byte-content not ordering. Story 2.4 should decide whether ordering matters. → I73 | Code review v63-2-1 R1 (Blind Hunter LOW) | 2026-04-23 | Winston |\n| IN-84 | ISO-8601 timestamp dates silently overwritten in BMM scanner — `/^\\d{4}-\\d{2}-\\d{2}$/` rejects full ISO timestamps; preserve-step discards date and restamps with today's, no warning. Widen regex OR log `[warn] malformed registered_date dropped: ...`. → I74 | Code review v63-2-1 R2 (Edge Case Hunter LOW) | 2026-04-23 | Winston |\n| IN-85 | Missing FR18 + merge + dedup three-way integration test for BMM scanner — sort stability across manual-only, dedup-survivor, FR18-pinned untested. Land in Story 2.4 with concrete fixture. → T13 | Code review v63-2-1 R2 (Edge Case Hunter LOW) | 2026-04-23 | Winston |\n| IN-86 | Duplicate manual rows for same (skill, agent) pair silently preserved in BMM scanner — no uniqueness invariant, no stderr warning. Add `manualPairSeen` Set + log warn. → I75 | Code review v63-2-1 R2 (Blind Hunter LOW) | 2026-04-23 | Winston |\n| IN-87 | AC7 measurement proxy too narrow — bare prose path references (CLI stdout `docs/migration/3.x-to-4.0.md`, CSV path `_bmad/_config/bmm-dependencies.csv`) escape `[text](url)` link check. Spec-template refinement: future \"no broken links\" ACs should walk prose citations of file paths. → A45 | Code review v63-1a-6 R1 (Edge Case Hunter MED) | 2026-04-23 | Winston |\n| IN-88 | Missing test coverage for v1.7.x multi-hop positive case — 1.7.x→2.0→3.1→4.0 chain test absent; future registry edits could silently drop guide link from 1.7.x users. → T14 | Code review v63-1a-6 R2 (Blind Hunter LOW) | 2026-04-23 | Winston |\n| IN-89 | Hardcoded GitHub URL in CLI output `convoke-update.js:223` — literal `https://github.com/amalik/convoke-agents/blob/main/docs/migration/3.x-to-4.0.md` fragile against rename/forks. Helper to derive from `package.json.repository.url`. → I76 | Code review v63-1a-6 R2 (Blind Hunter LOW) | 2026-04-23 | Winston |\n| IN-90 | PF1 rephrase asserts present-tense \"validates\" for unshipped Epic 4 scope — re-read at Epic 4 ship time; tighten to \"will validate\" or remove the bullet if Epic 4 still slipping. → D11 | Code review v63-1a-6 R2 (Blind Hunter LOW) | 2026-04-23 | Winston |\n| IN-91 | `console.warn` side-effects not routable in config-loader — direct stderr writes; CLI/JSON-logging consumers can't suppress. Accept `{logger}` option or EventEmitter. Sibling to I41 (`convoke-doctor` `console.warn` breaks structured-output contract) — same library-logging hygiene class. → I77 | Code review v63-1a-2 R1 (Blind Hunter MED) | 2026-04-23 | Winston |\n| IN-92 | Nested `{project-root}` placeholder silently unresolved — `_resolveProjectRootPlaceholder` is top-level-only by audit §5 YAGNI; nested objects/arrays pass through. Recurse OR warn. → absorbed into T16 (loader hardening bundle) | Code review v63-1a-2 R1 (Blind+Edge MED) | 2026-04-23 | Winston |\n| IN-93 | Windows path-separator mismatch in `{project-root}` resolution — `replaceAll('{project-root}', 'C:\\\\Users\\\\x')` + YAML `\"{project-root}/foo\"` yields mixed separators on Windows. Normalize via `path.join`. → absorbed into T16 (loader hardening bundle) | Code review v63-1a-2 R1 (Blind Hunter MED) | 2026-04-23 | Winston |\n| IN-94 | Test `console.warn` spy restore-on-failure edge — `beforeEach` throw before `afterEach` poisons subsequent test files in same process. Wrap setup in try/catch or use `t.mock`. Sibling pattern to T11 `cpMock?.restore()` defensive-chain rollout. → T15 | Code review v63-1a-2 R1 (Blind Hunter LOW) | 2026-04-23 | Winston |\n| IN-95 | EISDIR / broken-symlink at configPath unhandled — `fs.existsSync` returns true for directory; `readFileSync` then fails with raw EISDIR. `statSync().isFile()` check or catch EISDIR with actionable rethrow. → absorbed into T16 (loader hardening bundle) | Code review v63-1a-2 R1 (Blind Hunter LOW) | 2026-04-23 | Winston |\n| IN-96 | YAML merge keys `<<:` preserved as literal `\"<<\"` key — pass `{merge: true}` to `yaml.parseDocument` or document non-support. → absorbed into T16 (loader hardening bundle) | Code review v63-1a-2 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-97 | Python2-as-python3 PATH resolution — script fails with SyntaxError if `python3` is actually Python 2; no explicit version-check in legacy fallback. → absorbed into T16 (loader hardening bundle) | Code review v63-1a-2 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-98 | Subprocess stdout with warning-prelude-then-JSON breaks parse — bmad_init.py deprecation warning before JSON makes `JSON.parse` fail with generic \"non-JSON stdout\" error. Extract last-line JSON before parse. → absorbed into T16 (loader hardening bundle) | Code review v63-1a-2 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-99 | Repeated `[DEPRECATED]` warning on N loader calls — doctor health check spams warning N times. Module-scoped Set keyed by `legacyInitDir`, warn once per process. Sibling to U15 (one-shot directory-existence notice). → I78 | Code review v63-1a-2 R1 (Edge Case Hunter LOW) | 2026-04-23 | Winston |\n| IN-100 | **Loader hardening + edge-case test surface (Story 1A.2 ACs)** — bundle parent absorbing 6 individual loader-edge findings + mutate-vs-clone implementation choice for `_resolveProjectRootPlaceholder`. Single test-suite addition closes ~7 hardening items at once. → T16 | Code review v63-1a-1 R1 (Edge Case Hunter) + v63-1a-2 R1 | 2026-04-23 | Winston |\n| IN-101 | `yaml` vs `js-yaml` package convergence decision — both in `package.json`; audit uses `yaml` (eemeli) but other Convoke modules use `js-yaml`. Pick one and enforce across `scripts/update/lib/`. → merged into I58 (scope broadened to cover all `scripts/update/lib/`) | Code review v63-1a-1 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-102 | Deprecation warning only fires on fallback path — operators with successful v3→v4 migration never see 4.0 deprecation notice for `bmad-init` removal in 4.1. Emit one-shot notice on `_bmad/core/bmad-init/` directory existence even if config loads successfully. → U15 | Code review v63-1a-1 R1 (Blind Hunter) | 2026-04-23 | Winston |\n| IN-103 | convoke-doctor: `_team-factory` missing `add-team` workflow — pre-existing platform hygiene issue surfaced during AC6 validation. Either doctor's check is stale (looking for wrong path) or workflow file is actually missing. Investigation needed. → BUG-3 | Code review v63-1a-1 R1 (Blind Hunter) | 2026-04-23 | Winston |\n| IN-104 | convoke-doctor: cross-module version drift — `_artifacts/_enhance/_gyre/_team-factory` at 1.0.0 vs `_vortex` at 3.3.0 vs package 3.2.0. Confusing diagnostic output, may mask real upgrade bugs. Sibling to I39 + I46. → BUG-4 | Code review v63-1a-1 R1 (Blind Hunter) | 2026-04-23 | Winston |\n| IN-105 | Architecture doc Decision 1 vs Pattern 3 inconsistency — Decision 1 sample uses `yaml.parse()`; Pattern 3 says `yaml.parseDocument()` for read-write. Sync Decision 1 sample to Pattern 3 (and any I58 convergence outcome). → D12 | Code review v63-1a-1 R1 (Acceptance Auditor) | 2026-04-23 | Winston |\n| IN-106 | `_resolveProjectRootPlaceholder` mutates input config in place — drafted JS mutates `config[key]` rather than returning new object. Story 1A.2 implementer decides mutate-vs-clone based on caller contract. → absorbed into T16 (loader hardening bundle) | Code review v63-1a-1 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-107 | `safe_dump` comment-stripping claim unverified before Story 1A.4 — audit §12 asserts `yaml.safe_dump` strips operator comments as round-trip-writer justification. Grep installed configs for operator-added comments before Story 1A.4. Spike that may shrink Story 1A.4 scope. → T17 | Code review v63-1a-1 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-108 | Touched-files lint scope has no tooling automation — `project-context.md` §`lint-passes-before-review` defines gate by diff scope but commands unfiltered `npm run lint`. Reviewers manually cross-reference output vs `git diff --name-only`. Helper `scripts/lint-touched.js` scoped to `git diff --name-only main...HEAD`. → I79 | Code review lint-1-1 R1 (Blind Hunter) | 2026-04-23 | Winston |\n| IN-109 | `.claude/skills/bmad-dev-story/checklist.md` not refreshed by `convoke-update` — `scripts/update/lib/refresh-installation.js:587-700` only refreshes bme-* skills; `_bmad/bmm/` framework skills never touched. Canonical DoD checklist amendments don't propagate to installed Convoke projects. → U16 | Code review lint-1-1 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-110 | Canonical→runtime checklist copy would break relative `project-context.md` link — canonical uses `../../../../project-context.md` (4 levels); runtime uses `../../../project-context.md` (3 levels). Path-rewrite step needed during refresh. Generalize as `copyWithRelativePathRewrite()` utility. → U17 | Code review lint-1-1 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-111 | `_warnings` rename in `loadSkillSource` masks pre-existing unused-threaded-param bug — `scripts/portability/export-engine.js:105` declares `loadSkillSource(skillRow, projectRoot, _warnings)`; caller line 1015 passes real `warnings` array expecting population, but function never pushes. `_`-rename satisfies ESLint and makes dead-code permanent. Either populate (surface missing-workflow.md) or remove parameter. → I80 | Code review lint-1-1 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-112 | `migrations[1].breaking` unchecked in v1.7.1 chain assertion — `tests/integration/upgrade.test.js:405-407` asserts `migrations[0].breaking === true` but never `migrations[1]`. If `2.0.x-to-3.1.0` breaking flag flipped, test passes silently. → absorbed into T18 (upgrade.test.js derive-counts compliance sweep) | Code review mig-test-1-1 R1 (Blind Hunter) | 2026-04-23 | Winston |\n| IN-113 | Unfixed hardcoded count `config.workflows.length >= 13` at `upgrade.test.js:289` — same rot class as AC1-3 fix; replace with named-list assertion. → absorbed into T18 (upgrade.test.js derive-counts compliance sweep) | Code review mig-test-1-1 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-114 | **`upgrade.test.js` derive-counts compliance sweep** — bundle parent: replaces 3 hardcoded count assertions (`migrations[1].breaking`, `workflows.length >= 13`, `agents.length >= 7`) with named-list assertions. Same `derive-counts-from-source` rule (I49) applied to test side. → T18 | Code review mig-test-1-1 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-115 | **v3.0.x chain-walker non-determinism in `registry.js`** — `getMigrationsFor('3.0.5')` could match `3.0.x-to-3.1.0` OR `3.0.x-to-4.0.0` at `registry.js:151-153` (Array.find returns first match). v3.0.x user routed through 3.1.0 hop **misses 4.0.0 breaking migration silently**. Fix: registry invariant (one match per `fromVersion`) OR target test asserting 4.0.0 inclusion. → BUG-5 | Code review mig-test-1-1 R1 (Edge Case Hunter) | 2026-04-23 | Winston |\n| IN-116 | [DROPPED] Phantom-test recurrence in `tests/lib/portability-*.test.js` (URGENT 2026-04-09 call-out) — verified resolved during this triage session: all 3 files pass standalone, `npm test` uses `scripts/test-runner.js` with `tests/lib` directory recursion (I67 ship). F.2 unblock condition met. No action needed. | deferred-work.md URGENT call-out 2026-04-09 (verified resolved 2026-04-23) | 2026-04-23 | Winston |\n| IN-117 | Test 20 (`npm pack --dry-run`) JSON shape brittleness (npm v6 returns object, v7+ returns array; `parsed[0]` assumes v7+) → T19 | deferred-work.md sweep 2026-04-25 (v63-3-1 R1, R1-M3) | 2026-04-25 | Winston |\n| IN-118 | Backup `{ overwrite: true }` clobbers prior backups on convoke-update re-run (data loss path on operator recovery) → I81 | deferred-work.md sweep 2026-04-25 (v63-3-1 R2, R2-L3) | 2026-04-25 | Winston |\n| IN-119 | `readdirSync` order non-deterministic across filesystems in `audit-skill-dirs.js:154` (1-line `localeCompare` fix) → I82 | deferred-work.md sweep 2026-04-25 (v63-3-2 R1, R1-L7) | 2026-04-25 | Winston |\n| IN-120 | `_tripleKey` dedup not normalization-aware (case/whitespace/Unicode NFC vs NFD slip past) → I83 | deferred-work.md sweep 2026-04-25 (v63-2-4 R1, R1-M7) | 2026-04-25 | Winston |\n| IN-121 | `_agentManifestPath` no submodule allowlist — unknown names like `noha` (meant `noah`) silently fall through to flat-`.md` → I84 | deferred-work.md sweep 2026-04-25 (v63-3-1 R1, R1-L2) | 2026-04-25 | Winston |\n| IN-122 | `--dry-run` UX hardening bundle for convoke-register-skill: skip disk-existence check + offer `--dry-run` in workflow.md → U18 | deferred-work.md sweep 2026-04-25 (v63-2-4 R1, R1-M9 + R1-L7) | 2026-04-25 | Winston |\n| IN-123 | `.claude/skills/` `files[]` shipping mechanism cleanup — single-purpose entries; affects `bmad-register-skill` + future slash-command skills → I85 | deferred-work.md sweep 2026-04-25 (v63-3-2 R1, R1-L4) | 2026-04-25 | Winston |\n| IN-124 | Broken-symlink UX in convoke-doctor `[stale:skill-gone]` (use `lstat` to distinguish absent vs dangling) → I86 | deferred-work.md sweep 2026-04-25 (v63-2-2 R1) | 2026-04-25 | Winston |\n| IN-125 | FR16 merge-collision test missing in convoke-register-skill (Test 11 seeds bare skill dir, never exercises `mergePreservingManual` dedup) → T20 | deferred-work.md sweep 2026-04-25 (v63-2-4 R1, R1-L5) | 2026-04-25 | Winston |\n| IN-126 | Unverified-but-written exit 0 ambiguity — emit `REGISTRATION_UNVERIFIED:` machine marker for scripted callers → I87 | deferred-work.md sweep 2026-04-25 (v63-2-4 R2, R2-M7) | 2026-04-25 | Winston |\n| IN-127 | `EXTRA_BME_AGENTS` wrapper hardcodes flat-`.md` LOAD — silent break for future skill-dir EXTRA agents (add `layout` field) → I88 | deferred-work.md sweep 2026-04-25 (v63-3-1 R1, R1-L4) | 2026-04-25 | Winston |\n| IN-128 | v63-2-2 H1 integration test isolation hardening bundle (pin minimal taxonomy.yaml + write fixture package.json) → T21 | deferred-work.md sweep 2026-04-25 (v63-2-2 R2) | 2026-04-25 | Winston |\n| IN-129 | R1-H1 concurrency test not actually concurrent — `Promise.all([setTimeout])` runs serially on Node single-thread; spawn real subprocesses → T22 | deferred-work.md sweep 2026-04-25 (v63-2-4 R2, R2-M1) | 2026-04-25 | Winston |\n| IN-130 | Race in Vortex copy loop (`fs.remove` → `fs.copy`) — Windows file-lock real; copy-to-tmp + atomic rename → I89 | deferred-work.md sweep 2026-04-25 (v63-3-1 R1, R1-L1) | 2026-04-25 | Winston |\n| IN-131 | 200ms hardcoded stdin-write delay in `runScriptWithInput` (CI flake + 1.4s/suite waste); refactor to ready-event → T23 | deferred-work.md sweep 2026-04-25 (v63-2-3 R1) | 2026-04-25 | Winston |\n| IN-132 | `refreshInstallation` flat-cleanup runs in dev environment — wipes `.md.bak` outside `isSameRoot` guard → I90 | deferred-work.md sweep 2026-04-25 (v63-3-1 R1, R1-M5) | 2026-04-25 | Winston |\n| IN-133 | Test 16 doesn't verify `{project-root}` resolves at activation (E2E gap; load SKILL.md target + assert minimal structure) → T24 | deferred-work.md sweep 2026-04-25 (v63-3-1 R1, R1-M10) | 2026-04-25 | Winston |\n| IN-134 | Concurrent `refreshInstallation` race — lockfile gap parallel to Story 2.4 R1-H1 (sibling to register-skill `_withCsvLock`) → I91 | deferred-work.md sweep 2026-04-25 (v63-3-1 R1, R1-L6) | 2026-04-25 | Winston |\n| IN-135 | `module_definition` field missing from `.claude-plugin/marketplace.json` — Architecture Decision 5 specifies `module_definition: _bmad/bme/_vortex/module.yaml`. Story 3.1 shipped without it; Story 3.4 parity scope explicitly excluded marketplace.json. Pickup at next Story 3.1 re-engagement or Convoke 4.x marketplace amendment. Fix path: amend marketplace.json + re-run validate-marketplace + consider extending Story 3.4 parity test. | deferred-work.md re-triage 2026-04-25 (V-pass 3-4, D-V34-E11) | 2026-04-25 | Winston |\n| IN-136 | PluginResolver behavior re-verification trigger — Story 3.4 ships with provisional assumptions (materializes files, no postinstall, preserves source-relative paths) verified via in-tree simulator. Real verification requires upstream BMAD community-module marketplace CLI which does not exist today. **Blocked.** Re-trigger: any BMAD release notes mentioning marketplace install CLI; replace simulator's `marketplaceInstall` with real `bmad-cli install`. **revisit-trigger:** sprint-planning sweep — check BMAD releases (https://github.com/bmad-code-org/BMAD-METHOD/releases) for marketplace install CLI; first revisit window 2026-05-25, then every 30 days until unblocked. | deferred-work.md re-triage 2026-04-25 (V-pass 3-4, D-V34-E5) | 2026-04-25 | Winston |\n| IN-137 | A39 D-A1 — ≤2-sentence evidence-note cap enforcement for compound-mechanism cells. A39 audit cells exceed cap; A41+A42 did not amend. Methodology decision: enforce uniformly OR allow §Notes pointer convention for compound-mechanism cells (multiple subfunctions). Pending operator decision; currently deferred to v4+ Covenant refresh. | deferred-work.md re-triage 2026-04-25 (A39 R1 / D-A1) | 2026-04-25 | Winston |\n| IN-138 | A39 D-A3 — Scout R6 re-eval, auto-decide branch as separate FAIL trigger. If Scout R6 flips FAIL on multi-service auto-decide branch, Epic 2 Story 2.1 retrofit scope adds 1 cell to catalog. A41+A42 did not amend. Pending operator decision; deferred to v4+ refresh unless explicit Round 2 trigger. | deferred-work.md re-triage 2026-04-25 (A39 R1 / D-A3) | 2026-04-25 | Winston |\n| IN-139 | BMAD v6.3+ source format adoption (Convoke 4.0 packaging-contract) — Pattern A migration of 7 Vortex agents from v5 XML-in-markdown to v6.3+ outcome-based markdown; absorbs naming convention reconciliation + Covenant preservation policy → I97 | spike-marketplace-packaging-delta diagnostic 2026-04-28 (Winston) | 2026-04-28 | Winston |\n| IN-140 | Gyre marketplace structural compliance gap — flat .md agents, no manifests; Pattern A-equivalent migration when Gyre goes to marketplace → I98 | spike-marketplace-packaging-delta diagnostic 2026-04-28 (Winston) | 2026-04-28 | Winston |\n| IN-141 | Team Factory marketplace structural compliance gap — flat .md agent, missing module.yaml, schema-variant module-help.csv → I99 | spike-marketplace-packaging-delta diagnostic 2026-04-28 (Winston) | 2026-04-28 | Winston |\n| IN-142 | Module-help.csv Convoke schema extension standard — variant columns vs BMM canonical; documented standard needed → I100 | spike-marketplace-packaging-delta diagnostic 2026-04-28 (Winston) | 2026-04-28 | Winston |\n| IN-143 | `coverage` job conflates \"test failed\" with \"threshold dropped\" into one opaque red — split into `test:p0` + `coverage:report` + `coverage:gate` so dual-cause reds diagnose themselves (root cause of 4-day 2026-05-01→05 red diagnosis cost) → I102 | CI/CD review 2026-05-25 (Winston) | 2026-05-25 | Winston |\n| IN-144 | No `defaults.run.shell: bash -eo pipefail {0}` on `ci.yml` — pipefail not set; future piped step will silently lie (scar-story: AC-RETRO-1 `npm run test:coverage \\| tail`) → I103 | CI/CD review 2026-05-25 (Quinn) | 2026-05-25 | Winston |\n| IN-145 | AC-RETRO-1 `verification-pipefail` rule never landed in `project-context.md` — retro forward-prevention unshipped; cite session 2026-05-05 as scar-story → A47 | CI/CD review 2026-05-25 (Quinn) + retro AC-RETRO-1 | 2026-05-25 | Winston |\n| IN-146 | CI lint runs without `--max-warnings 0` — `package.json:48` + `eslint.config.mjs:30` accept warnings (`no-unused-vars` configured as `warn`); contradicts `lint-passes-before-review` rule which mandates zero warnings on touched files → I104 | CI/CD review 2026-05-25 (Winston + Quinn) | 2026-05-25 | Winston |\n| IN-147 | No required-status / branch-protection / failure-notification path — red on `main` sits invisible until next push; `concurrency.cancel-in-progress: true` on main pushes (`ci.yml:10-12`) erases trail; structural root cause of 4-day red staying quiet → I105 | CI/CD review 2026-05-25 (Winston) | 2026-05-25 | Winston |\n| IN-148 | No install-tarball smoke (`npm pack` + install in tmp + run bin) — `package-check` runs `node index.js` in working copy; cannot detect missing `files:` entries in `package.json:6-23` which has churned (vortex/enhance/gyre/artifacts/portability/team-factory) → T25 | CI/CD review 2026-05-25 (Winston + Quinn) | 2026-05-25 | Winston |\n| IN-149 | Coverage gate aggregate-only in `.c8rc.json` — no per-file threshold; known gaps in `convoke-update.js` (29%), `convoke-version.js` (56%), `1.0.x-to-1.3.0.js` (37%) hide behind aggregate. Add `per-file: true` + `statements` threshold → T26 | CI/CD review 2026-05-25 (Quinn) | 2026-05-25 | Winston |\n| IN-150 | `burn-in` job runs `npm test` 5× with no seed variance / shuffled order — catches only nondeterminism already showing in main `test` job. Either delete or convert to shuffled-seed (`TEST_SEED` env) → T27 | CI/CD review 2026-05-25 (Winston + Quinn) | 2026-05-25 | Winston |\n| IN-151 | Matrix tests Node 18/20/22 but coverage/lint/security/package-check pin Node 20 only — Node 18 EoL'd 2025-04; current matrix half-effective. Either drop Node 18 OR matrix all jobs (distinct from U19 action runtime + IN-64 windows add) → I106 | CI/CD review 2026-05-25 (Quinn) | 2026-05-25 | Winston |\n| IN-152 | 11 `npm ci` invocations per pipeline run; no shared install artifact — `cache: 'npm'` helps but coverage/lint/package-check/security each re-resolve ~30s. Tutorial-default shape → I107 | CI/CD review 2026-05-25 (Quinn) | 2026-05-25 | Winston |\n| IN-153 | `badges.yml` auto-commits to `main` with `[skip ci]` — bot bypasses every CI gate (lint/test/coverage); high blast surface for cosmetic output. PR-validated path or branch-protected merge → I108 | CI/CD review 2026-05-25 (Winston + Quinn) | 2026-05-25 | Winston |\n| IN-154 | `python-test` hardcodes 5 specific test file paths — adding new Python test silently misses CI. Replace with `pytest _bmad/ -k ...` glob or discovery rule → T28 | CI/CD review 2026-05-25 (Winston) | 2026-05-25 | Winston |\n| IN-155 | `package.json:89` self-references `convoke-agents: ^3.2.0` — circular self-dep footgun from bmad-enhanced → convoke-agents rename; unexplained. Either remove or add explanatory comment → I109 | CI/CD review 2026-05-25 (Winston) | 2026-05-25 | Winston |\n| IN-156 | No version-sync / changelog gate; `no-hardcoded-versions` has no CI enforcer — publish job ships whatever's tagged. Add CI check: `package.json` ↔ `CHANGELOG.md` ↔ sibling configs (`_bmad/bme/_vortex/config.yaml` etc.) agree → I110 | CI/CD review 2026-05-25 (Winston) | 2026-05-25 | Winston |\n| IN-157 | Failure-artifact upload globs all of `tests/` (`ci.yml:62-66`) — zero forensic value (source already in git, test output went to job log via `stdio: 'inherit'`). Narrow upload to relevant logs only or drop → I111 | CI/CD review 2026-05-25 (Quinn) | 2026-05-25 | Winston |\n| IN-158 | `tests/lib/portfolio-engine.test.js:512` (Story 6.3 AC2 \"unattributed count is well under 20 on the current repo\") violates `test-fixture-isolation` rule — runs `generatePortfolio(projectRoot)` against live repo and asserts absolute count `< 20`. Caused CI red on 2026-05-25 push #2 when count went 22→23 from ci-hygiene-1-1 story file authoring. Unblocked in-flight via STORY_PREFIX_MAP expansion (ci-hygiene-1-1 Task 0; 7 prefixes added: `lint`, `cov`, `mig`, `i97`, `oc`, `spec`, `ci`) which dropped count 23→5 — but the underlying test design is still fragile. Proper fix: migrate AC2 test to fixture-based per `test-fixture-isolation` (project-context.md:9). Two paths: (a) use existing `createValidInstallation(tmpDir)` helper + populate fixture with known-count of unattributed files + assert on the known count; (b) replace AC2 entirely with a regression-mode test that diffs unattributed-list against a checked-in golden file. → T29 | CI red triage 2026-05-25 (operator option A+C) | 2026-05-25 | Winston |\n| IN-159 | Portfolio engine reports 3 large planning-artifact files (`convoke-arch-bmad-v6.3-adoption.md` 45KB, `convoke-epic-bmad-v6.3-adoption.md` 26KB, `convoke-report-implementation-readiness-initiative-lifecycle-engine-post-epics.md` 25KB) as \"unreadable or empty\" — files exist and are readable. Bug in `explainUnattributed` or upstream content-reading path. Pre-existing; orthogonal to ci-hygiene-1-1; surfaced during 2026-05-25 CI red investigation. → I112 | CI red triage 2026-05-25 (incidental finding) | 2026-05-25 | Winston |\n| IN-160 | `v63-4-5-n-1-external-user-validation-sprint-5.md` Task 0.4 spec wording references non-existent `scripts/update/migrations/3.x-to-4.0.js` (single-file naming). Actual structure is chain-walker per BUG-5 ship 2026-04-25: `3.0.x-to-3.1.0.js` + `3.1.x-to-4.0.0.js` + `3.2.x-to-4.0.0.js` + `3.3.x-to-4.0.0.js` + `registry.js` walker. Task 0.4 should reference the 4.0-target chain (e.g., `3.3.x-to-4.0.0.js` as the head + `registry.js` invariant) rather than a single composite filename that doesn't exist. → D13 | Release-readiness probe 2026-05-25 (Winston, after `ls` verification) | 2026-05-25 | Winston |\n| IN-161 | v63-4-3 PF1 validation cycle stalled — operator-reported context-rebuild required on resumption; release path blocker (4.5 + 5B.3 both gate on 4.3 PF1 PASS). Tractable artifact: short state-snapshot / resumption checklist capturing where 4.3 left off + context-rebuild prerequisites. Reduces stalled-story pickup cost (generalizable pattern for any future stall). → D14 | Release-readiness probe 2026-05-25 (Winston) | 2026-05-25 | Winston |\n| IN-162 | v63-1B-{1,2,3} story specs not authored despite sprint-status listing all 3 at `backlog`: `v63-1b-1-remove-deprecated-agents-and-update-manifests`, `v63-1b-2-integrate-upstream-amelia-v6-3`, `v63-1b-3-update-workflow-references-and-verify-clean-grep` (Amelia consolidation — remove Bob/Quinn/Barry per WS3). Story-creation gap *within* parent Initiative A8 (Initiative Lane Appendix L602). Per v63-5b-3 Decision 5: needed only if operator decides ship-WITH-1B vs ship-WITHOUT-1B (default: ship without per OP-1 bandwidth principle). Authoring de-risks the deferral discussion. → D15 | Release-readiness probe 2026-05-25 (Winston) | 2026-05-25 | Winston |\n| IN-163 | v6.3 release re-sequencing decision artifact missing — given v63-4-3 PF1 stall, options need explicit capture: (a) defer 4.3 PF1 to 4.0.1 patch; (b) ship 4.0.0-rc.X iterations until PF1 closes; (c) accept stall + reduce v4.0 scope; (d) recruit help to resume 4.3. Without an artifact, the sequencing call lives only in operator head — increases drift risk + makes the call harder to revisit. Loosely bundles-with I97 (v6.3 adoption parent) but distinct: this is a sequencing-decision artifact, not a new initiative. Depends on D14 (PF1 resumption checklist informs the call). → D16 | Release-readiness probe 2026-05-25 (Winston) | 2026-05-25 | Winston |\n| IN-164 | **Convoke 4.1 — Upstream BMAD v6.4-v6.7 absorption Initiative** spawned by Option F decision (D16, 2026-05-25). 6 epics drafted: E1 marketplace structural adoption (Pattern A — restructure `skills/` at root + resubmit `bmad-plugins-marketplace` PR per #9 rejection feedback); E2 v6.7 module-help schema rename (`after`/`before` → `preceded-by`/`followed-by`, forced); E3 v6.4 TOML customization framework adoption spike (`_bmad/custom/` overrides could obviate wrappers); E4 v6.4 release-channels adoption (`stable`/`next`/`pinned` — structural N-cadence fix); E5 `bmad-investigate` + `.decision-log` evaluation (v6.7); E6 Web Bundles v1.0.0 evaluation (today — Gemini/ChatGPT distribution surface for Vortex Standalone). Successor relationship with I97 (absorbs I97 E5/E6 marketplace re-submission). Distinct from A8 (Epic 1B Amelia → v4.0.1 patch). → I113 | Release-readiness probe 2026-05-25 (Winston) + D16 decision doc + BMAD upstream impact spike | 2026-05-25 | Winston |\n| IN-165 | **v6.8.0 absorption + E7 (activation-guardrails-as-Covenant-enforcement) added to v4.1 scope.** CA + IR session 2026-06-21 analyzed BMAD upstream **v6.8.0** (2026-05-25, current head as of 2026-06-21) — not covered by D16's appendix (which stopped at Web Bundles v1.0.0). Finding: v6.8 activation guardrails are **orthogonal** to the Operator Covenant (agent↔author vs workflow↔operator axis) and **reinforce OC-R5 (pause)** — an enforcement substrate, not a competitor. Authored [ADR-001](adr/v4-1/adr-001-guardrails-covenant-enforcement.md) + extended I113 scope 6→7 epics (E7). E7 **gated** on agent-internal-vs-operator-facing spike (operator-facing gate adopted verbatim would self-violate OC-R7 pacing); E7 retrofit must **sequence after Epic 1B (A8, → v4.0.1)** to avoid double-touching skill activation sequences. IR decoupling memo confirms 4.0 ship **unaffected**. → updates I113 (no new item) | CA + IR session 2026-06-21 (Winston) — ADR-001 + IR decoupling memo | 2026-06-21 | Winston |\n| IN-166 | **Migration rollback cannot restore the files the migration rewrites (release-blocker for 4.0).** `backup-manager.getFilesToBackup()` backs up only 4 `_bmad/bme/_vortex/*` paths, but the 3.3→4.0 migration rewrites the 19 `SKILL.md` targets in `v6.3-migration-inventory.csv` + `bmad-init/SKILL.md` — zero overlap, so `restoreBackup` cannot restore them. Reproduced 2026-06-28. → BUG-8 | Codebase audit 2026-06-27 (#2 / HIGH-2) | 2026-06-28 | Winston |\n| IN-167 | **`install-scope-check.js` orphaned — promote to CI + fix write-op matcher false-positive.** Mechanical $0 scope-leak guard (migration/install writes must stay in Convoke-owned paths) unwired to CI; #31 matcher counts comments/strings, snapshot bakes in a known FP. → I114 | Codebase audit 2026-06-27 (#21, #31) | 2026-06-28 | Winston |\n| IN-168 | **Base-layer consolidation — no kernel layer; 5 single-source-of-truth findings.** Agent roster ×3 (agent-registry/export-engine/classify-skills), install paths ×10+, frontmatter parser bypassed ×15 (two YAML libs), kernel utils misplaced in `update/lib/utils.js`, package self-location `../../../` chains. Related to I54/IN-10 (one-constant dedup) but broader. → P58 | Codebase audit 2026-06-27 (#17/18/19/41/42) | 2026-06-28 | Winston |\n\n**Notes on intakes:**\n\n- IN-1, IN-2, IN-3, IN-5 were flagged as \"Next Step: define scope\" — never qualified.\n- IN-4 is an innovation hypothesis awaiting observation data.\n- IN-6 and IN-7 need qualification against the Capability Evaluation Framework (which P10 delivered).\n- IN-8 needs Forge shadow engagement evidence before qualification.\n- IN-9 was qualified by John+Winston on 2026-04-15 → ILE-1 in §2.4 Initiative Lane (portfolio: helm). The intake row stays here as audit trail per §1.1.\n\n### 2.2 Bug Lane\n\nActive bugs — fix pipeline only. Deeper follow-ups spawn Fast Lane or Initiative items.\n\n| ID | Description | R | I | C | E | Score | Portfolio | Status | Dependencies | Linked Follow-up |\n|----|-------------|---|---|---|---|-------|-----------|--------|--------------|------------------|\n| BUG-7 | **Phase 6 export placeholder leak — `[your X]` brackets across 132 adapter cells (true scope 176 files).** `scripts/portability/export-engine.js:481-517` Phase 6 substitution emitted `[your name]`/`[your output folder]`/etc. — bracket-wrapped form read awkwardly, and `convoke-export.js:295-302` already refined to `your-X` form but ONLY for the per-skill README (not for instructions.md / SKILL.md / copilot-instructions.md / Cursor adapters). Surfaced at v63-epic-3 retro 2026-04-25 (TI-6, HIGH PRIORITY pre-Convoke-4.0). Path A executed: moved wording refinement upstream into Phase 6 + deleted redundant convoke-export.js block (DRY). In-flight discovery: latent substitution-order bug (single-brace loop matched inner `{var}` of `{{var}}`); fixed via loop reorder to satisfy spec's \"warning behavior preserved\" Always-constraint. R1 review: 0 NEW HIGH (3 raw HIGHs reclassified — 2 pre-existing root causes, 1 theoretical); 5 patches applied; 9 defers logged. Validation gates green: unit 1446/0/1, integration 93/0, lint clean, 0 bracket leaks across 176 affected files. Spec: [spec-bug-7-export-placeholder-wording.md](../implementation-artifacts/spec-bug-7-export-placeholder-wording.md). | 7 | 2 | 80% | 1 | 11.2 | convoke | Done | deferred-from: epic-v63-3 retro TI-6 | D-BUG7-1..9 |\n| BUG-4 | **convoke-doctor: cross-module version drift** — `_artifacts/_enhance/_gyre/_team-factory` at 1.0.0 vs `_vortex` at 3.3.0 vs package 3.2.0. Confusing diagnostic output, may mask real upgrade bugs. Sibling to I39 (non-atomic version stamp writes) + I46 (version-stamp post-check absence). | 4 | 2 | 80% | 2 | 3.2 | convoke | Open | sibling: I39, I46 | U9 |\n| BUG-3 | **convoke-doctor: `_team-factory` missing `add-team` workflow** — pre-existing platform hygiene issue surfaced during AC6 validation of v63-1a-1. Either doctor's check is stale (looking for wrong path) or the workflow file is actually missing. Investigation needed before fix. | 4 | 2 | 70% | 2 | 2.8 | loom | Open | — | P25 |\n| BUG-8 | **Migration rollback cannot restore the files the migration rewrites (release-blocker for 4.0).** `getFilesToBackup()` backs up only 4 `_bmad/bme/_vortex/*` paths; the 3.3→4.0 migration rewrites the 19 `SKILL.md` inventory targets + `bmad-init/SKILL.md` (zero overlap), and `restoreBackup` iterates the static list (not the manifest), so rewritten skills are unrecoverable while the operator is told \"restored.\" Fix: manifest-driven restore + per-migration backup-manifest hook (design-reviewed 2026-06-28: + path-mirrored storage, single-source enumeration, best-effort restore, modify-only assertion). **Absorbs audit #3** (state-file `migration-state-4.0.yaml` survives rollback — same safety-net hole; handled via delete-on-rollback class). Reproduced 2026-06-28. Story: [bug-high2-migration-backup-rollback-scope.md](../implementation-artifacts/bug-high2-migration-backup-rollback-scope.md). | 6 | 2 | 90% | 4 | 2.7 | convoke | Open | intake: IN-166; absorbs: audit #3 | — |\n\n**Note:** Bug Lane re-populated 2026-04-23 — 3 new bugs from v6.3 sprint review wave (v63-1a-1 + mig-test-1-1). BUG-1 shipped 2026-04-18 and BUG-2 shipped 2026-04-20 — see §2.5. BUG-5 (chain-walker non-determinism) was the highest-priority Bug pre-fix at score 7.2 (shipped 2026-04-25 — see §2.5). BUG-7 (export placeholder leak) added 2026-04-25 from v63-epic-3 retro TI-6 — top of lane at score 11.2.\n\n### 2.3 Fast Lane (Quick Wins + Spikes)\n\nItems qualified as not needing the full initiative pipeline. Sorted by RICE score.\n\n| ID | Description | R | I | C | E | Score | Portfolio | Status | Dependencies |\n|----|-------------|---|---|---|---|-------|-----------|--------|--------------|\n| U15 | **One-shot 4.0 deprecation notice on `_bmad/core/bmad-init/` directory existence** — operators with successful v3→v4 migration never hit `_loadLegacyConfig` and miss the 4.0 removal-in-4.1 communication runway. Emit notice from a directory-existence check, dedup via module-scoped Set (sibling to I78). Highest-reach item in batch — most successful migrators by 4.0 ship hit this gap. | 6 | 1 | 80% | 1 | 4.8 | convoke | Backlog | deferred-from: v63-1a-1 R1 (Blind Hunter); bundles-with: Story 1A.4 |\n| I80 | **Ship `/bmad-register-skill` + `/bmad-audit-skill-dirs` slash-command skills as tracked artifacts (architectural cleanup; supersedes Option A 2026-04-25 .gitignore unblock)** — Story 2.4's `SKILL.md` + `workflow.md` live only at `.claude/skills/bmad-register-skill/` which was historically gitignored repo-wide. Same gap applies to `.claude/skills/bmad-audit-skill-dirs/` (Story 3.2). **Option A (CI-unblock applied 2026-04-25):** un-gitignored both `.claude/skills/bmad-audit-skill-dirs/` + `.claude/skills/bmad-register-skill/` via step-wise negative `.gitignore` pattern (`.claude/` ignored → `.claude/skills/` un-ignored as dir marker → `.claude/skills/*` re-ignored → 2 specific skills un-ignored). Files now tracked + present on CI fresh checkouts → Test 17 in `tests/unit/audit-skill-dirs.test.js` passes. **Option B (this I80 — proper architectural fix, NOT YET DONE):** existing `bmad-*` skills (e.g. `bmad-export-skill`, `bmad-migrate-artifacts`) follow a 2-location pattern: canonical tracked copy at `_bmad/bme//skills//` or `_bmad/bme//workflows//`, plus a `.claude/skills/` dev-cache mirror. Story 2.4 + Story 3.2 only created dev-cache mirrors. Fix: (a) decide module home (candidates: `_bmad/bme/_artifacts/skills/` alongside `bmad-migrate-artifacts`, or a new `_bmad/bme/_governance/` module for the registration + doctor + audit-skill-dirs + update-gate quartet); (b) move the SKILL.md + workflow.md under that canonical path for BOTH skills; (c) extend `scripts/update/lib/refresh-installation.js` to include the new skills in the `.claude/skills/` copy list if a glob-based pattern doesn't already handle them; (d) **after Option B ships, revert the Option A negative `.gitignore` pattern** (the 2 specific skill exemptions become unnecessary once SKILL.md lives in `_bmad/bme/` tracked location). Violates Story 2.4 AC2 + Story 3.2 AC2 de facto for the distribution audience under v3 architectural pattern. | 5 | 1 | 90% | 1 | 4.5 | convoke | Backlog | deferred-from: v63-2-4 post-commit audit 2026-04-24; rescoped 2026-04-25 to also cover `bmad-audit-skill-dirs` + Option B/A relationship; **blocks:** full user-facing AC2 compliance for Story 2.4 + Story 3.2 |\n| I96 | **Sprint 0 anti-pattern registry consultation checklist for future Convoke major releases** — codify L1 hypothesis mitigation per PRD `convoke-prd-bmad-v6.3-adoption/innovation-novel-patterns.md:64,100`: registry must be consulted at the *start* of future releases, not just updated at the end. Falsification clause L64 (\"registry exists but is never consulted\") is currently load-bearing on operator memory. Concrete deliverable: add a Sprint 0 checklist line item to the `host_framework_sync` playbook (`docs/host-framework-sync-playbook.md` — Story 5A.2 outline) requiring v4.x + v6.4 release planners to (a) read `_bmad-output/planning-artifacts/convoke-anti-patterns.md` end-to-end at sprint kickoff, (b) cite applicable entries in the new release's planning artifacts (PRD shards or sprint plan), (c) note recurrence inline in registry entries when an anti-pattern reappears (per registry §\"Recurrence tracking\"). Closes the L1 falsification surface from \"operator must remember\" to \"checklist enforces.\" Triggered by Story 5B.2 retrospective hypothesis observation: L1 is the only PRD hypothesis with no PRD-cited observation-window (CM-1 V-pass note) — registry artifact ships now; consultation discipline must ship before next major to avoid first-release-only inertia. | 4 | 1 | 80% | 1 | 3.2 | convoke | Backlog | provenance: v63-5b-2-retrospective; depends: Story 5B.2 ships `convoke-anti-patterns.md` (✓ shipped at this story); cites: [`../implementation-artifacts/v63-retrospective-bmad-v6.3-adoption.md`](../implementation-artifacts/v63-retrospective-bmad-v6.3-adoption.md) L1 observation; bundles-with: Story 5A.2 playbook section (d)/(e) population at Story 5B.3 |\n| I92 | **Backlog & deferred-work reorganization + maintenance protocol** — Functional-goal taxonomy as primary axis (lane secondary). Defines the maintenance protocol Convoke will dogfood and then promote (→ I93). **Protocol scope:** (a) row brevity standard (≤200 char summary + ref link for detail); (b) duplication check across both files + shipped items; (c) merge-candidate search for related items; (d) functional-goal tagging; (e) deferred-work→backlog transfer rules. **Exec:** inventory → tag/flag → operator redline → rewrite with audit trail. | 4 | 2 | 80% | 3 | 2.1 | convoke | Backlog | sequencing-pref: after v6.3 Epic 3 ships; drives: I93; origin: party-mode-2026-04-26 (John, Winston, Amalik) |\n| I94 | **Parallel-track collision detection skill** (`/bmad-collision-check` or similar) — Answers \"of my open work items, which can I pick up next without merge collision against track B?\" Inputs: current branch state + named other-branch (or open story spec `files-to-touch`). Output: green/amber/red list. Quick win for solo devs juggling lanes. | 4 | 1.5 | 80% | 2 | 2.4 | convoke | Backlog | origin: party-mode-2026-04-26 (John, Winston, Amalik) |\n| I93 | **Promote I92 maintenance protocol to `bmad-enhance-initiatives-backlog` skill mode** — New mode (Reframe / Goal-View) applying I92's protocol (functional-goal taxonomy + brevity + dedup/merge/transfer rules) as a reusable Convoke capability. Eats own dog food via I92 first. | 5 | 2 | 70% | 4 | 1.75 | enhance | **Blocked** | depends: I92 ships and validates method; origin: party-mode-2026-04-26 (John, Winston, Amalik) |\n| I62 | Staleness pre-flight — Phase 2 — minimal `[P] Preflight` step file in `bmad-enhance-initiatives-backlog` mechanizing the 3 checks. Ships to all Convoke end-users. | 8 | 1 | 70% | 2 | 2.8 | enhance | **Blocked** | unblocks when A27 applied ≥3 times AND ≥1 real drift found OR 2 weeks elapsed |\n| T18 | **`upgrade.test.js` derive-counts compliance sweep** — replaces 3 hardcoded count assertions with named-list assertions: `migrations[1].breaking` unchecked (line 405-407), `config.workflows.length >= 13` (line 289), `config.agents.length >= 7` (line 446). Same `derive-counts-from-source` rule (I49) applied to test side. Bundles 3 individual findings. | 3 | 1 | 90% | 1 | 2.7 | convoke | Backlog | deferred-from: mig-test-1-1 R1 (absorbs IN-112, IN-113, IN-114) · sibling: T14, BUG-5 |\n| I79 | **`scripts/lint-touched.js` helper — scope `npm run lint` to `git diff --name-only main...HEAD`** — closes manual cross-reference toil between full-lint output and touched-files gate per `project-context.md` §`lint-passes-before-review`. Promotable to test-runner target + checklist reference. | 6 | 1 | 80% | 2 | 2.4 | convoke | Backlog | deferred-from: lint-1-1 R1 (Blind Hunter) · sibling: A45 |\n| I63 | Staleness pre-flight — Phase 3 — wire I62's Preflight checks into `bmad-help` as a decorator so \"what should I do next\" naturally runs staleness when recommending a pickup. Call-site integration only (no new logic). | 8 | 0.5 | 60% | 1 | 2.4 | convoke | **Blocked** | unblocks when I62 invoked ≥5 times AND output format stable ≥1 sprint |\n| U17 | **Path-rewrite step for canonical→runtime checklist copy** — canonical uses `../../../../project-context.md` (4 levels); runtime uses `../../../project-context.md` (3 levels). Naive `fs.copyFileSync` breaks the link. Generalize as `copyWithRelativePathRewrite(srcPath, destPath, rewrites)` utility. | 5 | 0.5 | 90% | 1 | 2.3 | convoke | Backlog | deferred-from: lint-1-1 R1 (Edge Case Hunter) · bundles-with: U16 |\n| I76 | **Dynamic GitHub blob URL helper for `convoke-update.js:223`** — replace literal `https://github.com/amalik/convoke-agents/blob/main/docs/migration/3.x-to-4.0.md` with helper parsing `package.json.repository.url`. Fragile against future repo renames/forks. | 5 | 0.5 | 90% | 1 | 2.3 | convoke | Backlog | deferred-from: v63-1a-6 R2 (Blind Hunter) |\n| I20 | Portfolio markdown formatter — render `--show-unattributed` | 5 | 0.5 | 90% | 1 | 2.3 | enhance | Backlog | — |\n| A6 | Structured-source for count-sensitive deliverables [rescored 2026-04-19: 1.8→2.3] | 5 | 1 | 90% | 2 | 2.3 | convoke | Backlog | — |\n| D2 | Add output examples for more agents (Isla, Wade, Noah) — **⚠ premise unverified 2026-04-21:** pickup attempt found zero \"Output Example\" sections in any Vortex or Gyre user guide. Description implies a pre-existing pattern being extended, but no such pattern exists in the tree. Needs scope clarification before next pickup: (a) what shape of example (inline fenced / separate sample file / link to real artifact), (b) fictional vs distilled-from-real, (c) whether E:2 still holds under actual scope. | 6 | 1 | 70% | 2 | 2.1 | convoke | Backlog | needs-scope-clarification |\n| U16 | **Refresh `bmad-dev-story/checklist.md` via `convoke-update`** — extend `scripts/update/lib/refresh-installation.js:587-700` to copy `_bmad/bmm/4-implementation/*/checklist.md` to `.claude/skills/*/checklist.md`. Currently `_bmad/bmm/` framework skills are never refreshed; canonical DoD checklist amendments don't propagate. | 5 | 1 | 80% | 2 | 2.0 | convoke | Backlog | deferred-from: lint-1-1 R1 (Edge Case Hunter) · bundles-with: U17 |\n| T16 | **Loader hardening + edge-case test surface (Story 1A.2 ACs)** — bundle parent: `moduleConfigPath` undef/null/empty/absolute, `projectRoot` variants, BOM, EACCES, TOCTOU, YAML multi-doc/anchors/merge keys, nested `{project-root}` resolution, Windows path-separator, EISDIR/symlink, Python2-as-python3, JSON parse with prelude, mutate-vs-clone implementation choice. Bundles 7 individual hardening items into one Story 1A.2 test-surface deliverable. | 5 | 1.5 | 80% | 3 | 2.0 | convoke | Backlog | deferred-from: v63-1a-1 R1 + v63-1a-2 R1 (absorbs IN-92, IN-93, IN-95, IN-96, IN-97, IN-98, IN-106) |\n| I22 | Resolution-map key normalization (migration skill) | 5 | 1 | 80% | 2 | 2.0 | enhance | Backlog | — |\n| I25 | Resolution-map missing-from-manifest validation | 5 | 0.5 | 80% | 1 | 2.0 | enhance | Backlog | — |\n| I16 | Skill description generator — semantic descriptions for bme skills | 5 | 0.5 | 80% | 1 | 2.0 | convoke | Backlog | — |\n| I60 | A5 story templates — add required `search-command` field to `bmad-create-story` + sprint-planning templates for research/catalog/audit/inventory stories | 4 | 0.5 | 90% | 1 | 1.8 | convoke | Backlog | deferred-from: A15+A5+A10 R1 · depends: A19 |\n| I7 | Team Factory CSV quoting hardening | 4 | 0.5 | 90% | 1 | 1.8 | loom | Backlog | — |\n| I23 | Format contract test between CLI and migration skill | 4 | 0.5 | 90% | 1 | 1.8 | enhance | Backlog | — |\n| A16 | Workflow-inherited concepts rule — add bidirectional/out-of-order review guidance to the Checklist glossary | 2 | 0.5 | 90% | 0.5 | 1.8 | convoke | Backlog | deferred-from: oc-1-3 Round 3 |\n| A19 | A5 `mechanical-research-enumeration` operational test — add definition or example list for \"research/catalog/audit/inventory\" scope (retrospectives? portfolio status? PRD personas?) | 4 | 0.5 | 80% | 1 | 1.6 | convoke | Backlog | deferred-from: A15+A5+A10 R1 |\n| A31 | Reconcile Epic v1 baseline claim vs oc-1-1 matrix — Epic `convoke-epic-operator-covenant.md:367` says \"every Right ≥ 70%\" but oc-1-1 shows Right to pacing at 62.5%. Narrow Epic claim OR document that threshold is per-team-with-N-floor not per-cell. | 2 | 0.5 | 80% | 0.5 | 1.6 | convoke | Backlog | deferred-from: A24 Round 1 |\n| D6 | Reduce narrative overlap in journey example | 4 | 0.5 | 80% | 1 | 1.6 | convoke | Backlog | — |\n| I18 | Pre-compile regex in `_scanCorpusForInitiative` per migration run | 4 | 0.5 | 80% | 1 | 1.6 | enhance | Backlog | — |\n| I36 | `yaml` package `doc.warnings` ignored at 5 write sites | 4 | 0.5 | 80% | 1 | 1.6 | convoke | Backlog | — |\n| T14 | **v1.7.x multi-hop migration test** — add `createInstallation(tmpDir, '1.7.1')` test asserting the migration guide URL appears post-upgrade. Pins the `1.7.x→2.0→3.1→4.0` chain; future registry edits could silently drop the guide link from 1.7.x users. | 3 | 0.5 | 90% | 1 | 1.4 | convoke | Backlog | deferred-from: v63-1a-6 R2 (Blind Hunter) · bundles-with: T18 |\n| U4 | Test upgrade-path step file cleanup | 3 | 1 | 90% | 2 | 1.4 | convoke | Backlog | — |\n| I9 | Registry writer idempotency drift detection | 3 | 0.5 | 90% | 1 | 1.4 | loom | Backlog | — |\n| I77 | **Logger injection for config-loader (`{ logger = console }` option)** — replace direct `console.warn` for deprecation + YAML warnings; CLI/JSON-logging consumers can't currently route or suppress. Sibling to I41 — same library-logging hygiene class; consider promoting to a `scripts/update/lib/*` + doctor sweep. | 4 | 1 | 70% | 2 | 1.4 | convoke | Backlog | deferred-from: v63-1a-2 R1 (Blind Hunter) · sibling: I41 |\n| A45 | **AC-template prose-link rule for \"no broken links\" ACs** — extend AC-authoring convention to walk prose citations of file paths (e.g., regex for `(scripts\\|docs\\|_bmad\\|tests)/\\S+\\.(md\\|js\\|yaml\\|csv)` and verify each resolves), not just `[text](url)` markdown links. Spec-template refinement. | 4 | 0.5 | 70% | 1 | 1.4 | convoke | Backlog | deferred-from: v63-1a-6 R1 (Edge Case Hunter) · sibling: A5, I79 |\n| A38 | Cross-module + cross-workflow concept inheritance rule — two silences bundled: (a) cross-module `Read` (bmad-init, Compass) — concepts loaded from another skill's workflow.md mid-execution should be treated as Layer 2 of the calling step; (b) cross-workflow shared concepts (HC contracts, JTBD) — A33's \"within the same workflow\" restriction is silent on shared-concept declarations. | 4 | 1 | 70% | 2 | 1.4 | convoke | Backlog | deferred-from: A33 Round 2 |\n| I5 | Workflow output naming enforcement (ADR Phase C) | 8 | 0.5 | 90% | 3 | 1.2 | convoke | Backlog | — |\n| I78 | **Module-scoped Set dedup for `[DEPRECATED]` warnings** — keyed by `legacyInitDir`, warn once per path per process. Doctor health check spamming N warnings; clean stderr matters for CI log parsing. Sibling pattern to U15 (one-shot directory-existence notice). | 3 | 0.5 | 80% | 1 | 1.2 | convoke | Backlog | deferred-from: v63-1a-2 R1 (Edge Case Hunter) · sibling: U15 |\n| I73 | **Manual-row ordering in BMM dependency scanner `_sortWithFr18Pin`** — Task 4.3 spec said \"manual rows preserved in their original order\" but implementation re-sorts alphabetically. AC8 enforces byte-content not ordering. Story 2.4 (manual registration UX) should decide whether ordering matters. | 3 | 0.5 | 80% | 1 | 1.2 | convoke | Backlog | deferred-from: v63-2-1 R1 (Blind Hunter) · bundles-with: Story 2.4 |\n| I72 | **`portfolio-engine.js --markdown` terminal-style interleaving fix** — summary/WIP radar/verbose trace currently emit via `console.log` regardless of `useMarkdown`, interleaving plain text with structured markdown output. Structural fix: move summary/WIP/verbose rendering into `formatMarkdown()` (or emit as markdown sections). | 3 | 0.5 | 80% | 1 | 1.2 | enhance | Backlog | deferred-from: I20 Round 1 2026-04-20 |\n| I65 | Migration meta-artifacts (ADR + rename-map) flagged as ungoverned on re-run — UX fix. 2 paths: inject governance frontmatter on creation, or add inference-time exclusion list. CLI would emit \"Nothing to migrate\" instead of \"Previous migration detected, but new ungoverned files found\". | 3 | 0.5 | 80% | 1 | 1.2 | convoke | Backlog | deferred-from: T4 ship |\n| P22 | SP Epic 6 — skill portability UX slash command wrappers (4 stories) | 7 | 1 | 70% | 4 | 1.2 | enhance | Backlog | — |\n| A14 | N/A taxonomy extension — add `N/A — conditional ()` variant (or per-branch verdicts) for skills with conditional operator surfaces | 3 | 0.5 | 80% | 1 | 1.2 | convoke | Backlog | deferred-from: oc-1-3 Round 3 |\n| T17 | **`safe_dump` operator-comment grep audit (spike)** — before Story 1A.4 implements round-trip writer, grep installed configs for operator-added comments. If none, simpler `safe_dump` approach is fine; round-trip writer scope can shrink. | 2 | 1 | 60% | 1 | 1.2 | convoke | Backlog | deferred-from: v63-1a-1 R1 (Edge Case Hunter) · sibling: U12 · gates: Story 1A.4 design |\n| I66 | `detectMigrationState` 5-commit scan boundary risk — `scripts/lib/artifact-utils.js:~2118` reads `git log -5 --format=%s`. T4 test fixture sits at the boundary; any intervening commit silently flips state from `complete` → `fresh`. Fix: raise window (e.g., 20 commits) or document the ceiling as a fixture-design constraint. | 2 | 0.5 | 60% | 0.5 | 1.2 | convoke | Backlog | deferred-from: T4 Round 1 |\n| A13 | OC-R7 concept-counting rules for compound concepts (taxonomies, tiers, mental models) — add counting conventions to the novel-concept glossary to resolve reviewer disagreement. **Absorbed 2026-04-20 from A33 Round 2**: two specific instances — (i) Steps Overview bullet headers (e.g., empathy-map quadrant names \"Says & Thinks / Does & Feels / Pains / Gains\") as navigational vs concept-introducing; (ii) aliases / parenthetical expansions (e.g., \"JTBD\" in workflow.md ↔ \"job-to-be-done (JTBD)\" in step-01) as re-introduction-or-not. | 5 | 1 | 70% | 3 | 1.17 | convoke | Backlog | deferred-from: oc-1-3 Round 3; absorbed: A33 Round 2 (2 sub-examples) |\n| I26 | Portfolio skill — case-insensitive input + alias normalization | 5 | 0.25 | 90% | 1 | 1.1 | enhance | Backlog | — |\n| I21 | Parent-dir attribution scan over-match on multi-token dirs | 3 | 0.5 | 70% | 1 | 1.1 | enhance | Backlog | — |\n| A32 | Covenant Checklist R6 rubric at intake-only steps — decide between `N/A — vacuous (no error surface)` or PASS-with-evidence. Today the rubric is silent; 4 Vortex step-01 cells + lean-persona §8.7 scored PASS via \"no error surface\" reasoning that's vacuous under §2.3. | 3 | 0.5 | 70% | 1 | 1.1 | convoke | Backlog | deferred-from: A24 Round 1 |\n| I51 | Manifest duplicate rows hygiene (same skill across modules) | 3 | 0.5 | 70% | 1 | 1.1 | enhance | Backlog | — |\n| I68 | **P14 §2.5 Completed entry scope-of-completion correction** — claims \"3 epics, 16 stories\" (2026-03-25) but Phase 3 (Add Agent/Skill) is unshipped per `_bmad/bme/_team-factory/workflows/step-00-route.md:42-48`. Amend §2.5 P14 entry to clarify Phase 1+2 shipped; Phase 3 now tracked as P25. Data integrity fix. | 2 | 0.5 | 100% | 1 | 1.0 | loom | Backlog | deferred-from: Post-Review cleanup 2026-04-21; bundles-with: P25 |\n| I28 | Portfolio engine — `--filter` interaction with summary lines | 5 | 0.5 | 80% | 2 | 1.0 | enhance | Backlog | — |\n| I80 | **`_warnings` rename in `loadSkillSource` masks unused-threaded-param bug** — `scripts/portability/export-engine.js:105` declares `loadSkillSource(skillRow, projectRoot, _warnings)`; caller line 1015 passes real `warnings` array expecting population, but function never pushes. `_`-rename satisfies ESLint and makes dead-code permanent. Either populate (surface missing-workflow.md) or remove the parameter from both sides. | 2 | 0.5 | 90% | 1 | 0.9 | enhance | Backlog | deferred-from: lint-1-1 R1 (Edge Case Hunter) |\n| D12 | **Architecture doc Decision 1 vs Pattern 3 inconsistency** — Decision 1 sample uses `yaml.parse()`; Pattern 3 says `yaml.parseDocument()` for read-write. Sync Decision 1 sample to match Pattern 3 (and any I58 convergence outcome). | 2 | 0.5 | 90% | 1 | 0.9 | convoke | Backlog | deferred-from: v63-1a-1 R1 (Acceptance Auditor) · bundles-with: I58 |\n| T13 | **FR18 + merge + dedup three-way integration test for BMM scanner** — fixture: manual row for `bmad-enhance-initiatives-backlog` + scan emits same (skill, agent) pair + 2 other skills; assert FR18 row pinned first, manual wins dedup. | 2 | 0.5 | 90% | 1 | 0.9 | convoke | Backlog | deferred-from: v63-2-1 R2 (Edge Case Hunter) · bundles-with: Story 2.4 |\n| I1 | NPM_TOKEN secret for CI publish [rescored 2026-04-19: 1.8→0.9] | 8 | 1 | 90% | 8 | 0.9 | convoke | Backlog | — |\n| T9 | Migration idempotency — zero-ungoverned baseline test — append integration test to `tests/integration/migrate-artifacts-idempotency.test.js` exercising first-run no-op on a fixture with no ungoverned files. Locks the \"already-clean project on first run\" CLI path. | 2 | 0.25 | 90% | 0.5 | 0.9 | convoke | Backlog | deferred-from: T4 ship |\n| D3 | BMAD Core return arrow in diagram | 4 | 0.25 | 90% | 1 | 0.9 | convoke | Backlog | — |\n| I10 | Config appender YAML comment preservation (Team Factory) | 4 | 0.5 | 90% | 2 | 0.9 | loom | Backlog | — |\n| I15 | `validateManifest` CSV parsing — replace substring matching | 4 | 0.5 | 90% | 2 | 0.9 | convoke | Backlog | bundles-with: I45, I48 |\n| I27 | Portfolio skill — Option [4] empty-state messaging | 4 | 0.25 | 90% | 1 | 0.9 | enhance | Backlog | — |\n| I52 | Collision resolution flag for migration CLI | 4 | 0.5 | 90% | 2 | 0.9 | enhance | Backlog | — |\n| I54 | Refactor `DEFAULT_ARTIFACT_TYPES` to single source of truth (migrate-artifacts.js + taxonomy-merger.js + taxonomy.yaml) | 4 | 0.5 | 90% | 2 | 0.9 | convoke | Backlog | — |\n| U11 | `compareVersions` semver-aware pre-release handling — fix `Number('4-alpha')→0` coercion in `scripts/update/lib/utils.js:27-39`; proper tuple compare + pre-release identifier ordering per semver spec | 2 | 0.5 | 90% | 1 | 0.9 | convoke | Backlog | deferred-from: BUG-1+U7 Round 1 |\n| A11 | Migration scar re-interpretation evidence grounding — locate scar-era retro/logs to anchor Right-to-next-action classification, or soften re-interpretation with evidence-limitation note | 3 | 0.5 | 60% | 1 | 0.9 | convoke | Backlog | deferred-from: oc-1-1 Round 3 |\n| I33 | Workflow-name namespace collision risk (verbatim names) | 4 | 1 | 70% | 3 | 0.9 | enhance | Backlog | ✓I32 (I32 made orphan deletion active — blast radius increased) |\n| I39 | Non-atomic version stamp writes in `refresh-installation.js` | 4 | 1 | 70% | 3 | 0.9 | convoke | Backlog | bundles-with: I46 |\n| A18 | A15 OC-R0 format — propagate `(internal)/(external)` qualifier examples into §§3.x and §§8.x evidence-note templates in Compliance Checklist + audit report | 2 | 0.5 | 90% | 1 | 0.9 | convoke | Backlog | deferred-from: A15+A5+A10 R1 |\n| I75 | **Duplicate manual rows for same (skill, agent) pair silently preserved in BMM scanner** — add `manualPairSeen` Set tracking in `mergePreservingManual`; log `[warn] duplicate manual entry ...` and keep first row. Story 2.4 manual-registration workflow should also prevent at authoring time. | 2 | 0.5 | 80% | 1 | 0.8 | convoke | Backlog | deferred-from: v63-2-1 R2 (Blind Hunter) · bundles-with: Story 2.4 |\n| I74 | **ISO-8601 timestamp dates silently overwritten in BMM scanner** — `/^\\d{4}-\\d{2}-\\d{2}$/` rejects full ISO timestamps; preserve-step discards date and restamps with today's, no warning. Widen regex OR log `[warn] malformed registered_date dropped: ...`. | 2 | 0.5 | 80% | 1 | 0.8 | convoke | Backlog | deferred-from: v63-2-1 R2 (Edge Case Hunter) |\n| I2 | `gh auth` for CI release creation [rescored 2026-04-19: 2.4→0.8] | 4 | 0.5 | 80% | 2 | 0.8 | convoke | Backlog | — |\n| T12 | `git-recency-rule` tests drift at UTC midnight — `tests/lib/portfolio-rules.test.js` uses `new Date().toISOString()` as mock return, making `daysSince` math ±1 day flaky across midnight. Fix: swap for a fixed `staleDays - 1` ago date in 2 test cases. | 1 | 0.5 | 80% | 0.5 | 0.8 | convoke | Backlog | deferred-from: Story B.4 defer |\n| A1 | Add validate menu items to Wave 3 Vortex agents (Mila, Liam, Noah) | 4 | 0.5 | 80% | 2 | 0.8 | vortex | Backlog | — |\n| A3 | Add `agentic` + `team-of-teams` npm keywords | 3 | 0.25 | 100% | 1 | 0.8 | convoke | Backlog | — |\n| I6 | `--verbose` flag across all CLI commands | 4 | 0.5 | 80% | 2 | 0.8 | convoke | Backlog | — |\n| T1 | `convoke-update.js` coverage to 80%+ | 3 | 1 | 80% | 3 | 0.8 | convoke | Backlog | — |\n| U2 | Validate migration modules at load time | 2 | 0.5 | 80% | 1 | 0.8 | convoke | Backlog | — |\n| I17 | `suggestDifferentiator` — support extensions beyond `.md`/`.yaml` | 4 | 0.25 | 80% | 1 | 0.8 | enhance | Backlog | — |\n| I19 | Share `_scanCorpus` between portfolio engine and migration suggester | 4 | 0.25 | 80% | 1 | 0.8 | enhance | Backlog | — |\n| I41 | `convoke-doctor` `console.warn` breaks structured-output contract | 4 | 0.25 | 80% | 1 | 0.8 | convoke | Backlog | — |\n| I56 | Render `taxonomy.initiatives.user` in generated ADR — add a \"User initiatives\" line to `generateGovernanceADR` so operator-added initiatives appear in the governance artifact | 2 | 0.5 | 80% | 1 | 0.8 | convoke | Backlog | deferred-from: BUG-1+U7 Round 1 |\n| A37 | Step-01 `Read`s workflow.md and echoes concepts to operator — A33 ¶4 exempts \"re-introduction in step-01\" but is silent on the runtime-echo case. Is the echo a re-introduction (exempt) or a fresh Layer 2 introduction (counts toward budget)? Clarify in §2.6. | 2 | 0.5 | 70% | 1 | 0.7 | convoke | Backlog | deferred-from: A33 Round 2 |\n| I35 | Naive `split('\\n')` CSV parsing — CRLF + quoted-newline edges | 4 | 0.5 | 70% | 2 | 0.7 | convoke | Backlog | — |\n| I40 | `loadSkillManifest` Map silently overwrites duplicate paths | 3 | 0.25 | 90% | 1 | 0.7 | convoke | Backlog | — |\n| I44 | No `validateGyreModule` function in validator.js | 2 | 1.5 | 70% | 3 | 0.7 | gyre | Backlog | ✓I34 |\n| A17 | A10 3-cell gate scaling — add percentage floor or `≥3 OR ≥10% of matrix` rule so large audits aren't under-sampled | 2 | 1 | 70% | 2 | 0.7 | convoke | Backlog | deferred-from: A15+A5+A10 R1 |\n| A21 | A15+A10 N/A-variant disagreement threshold — treat `external-declared` vs `out-of-scope` vs `FAIL` disagreement as reviewer-agreement failure, not just PASS/FAIL match | 2 | 1 | 70% | 2 | 0.7 | convoke | Backlog | deferred-from: A15+A5+A10 R1 |\n| I8 | Team Factory write verification — value correctness | 3 | 0.5 | 80% | 2 | 0.6 | loom | Backlog | — |\n| A34 | A24 §8.1 Mitigation Gate refinement — 5 bundled sub-issues: (a) \"independent reviewer\" scope for G2 undefined; (b) G1 doesn't specify A10 cell-composition; (c) G2 subsumption by G1 is conditional; (d) no G5 for §4.2 empathy-map reading-dependent drift; (e) G1's scope is retrofit-only not v2 baseline. | 2 | 1 | 60% | 2 | 0.6 | convoke | **Blocked** | blocked-on: oc-2-1 kickoff · deferred-from: A24 Round 2 |\n| I57 | Cross-module exclusion-ID validation for `excluded_agents` — `readExcludedAgents` + doctor warn when an ID doesn't match any known agent in any module's registry | 2 | 0.5 | 90% | 2 | 0.5 | convoke | Backlog | deferred-from: U8 Round 1 |\n| U3 | Robust version detection fallback | 3 | 0.5 | 60% | 2 | 0.5 | convoke | Backlog | — |\n| I11 | Registry Fragment Architecture (D-Q6) | 3 | 1 | 60% | 4 | 0.5 | loom | Backlog | — |\n| I58 | **Unify YAML parser across `scripts/update/lib/`** — pick one of (`yaml` eemeli vs `js-yaml`) and converge: closes the js-yaml/`yaml` library split between `readExcludedAgents` (js-yaml), `mergeConfig` (yaml), and the new config-loader (yaml per audit). Eliminates filesystem/config state drift risk and removes the parser-asymmetry decision surface for future module additions. **Scope expanded 2026-04-23**: original IN-26 surface was `readExcludedAgents` ↔ `mergeConfig`; v63-1a-1 R1 (IN-101) surfaced same convergence question for the new config-loader — merged here. | 2 | 1 | 70% | 3 | 0.5 | convoke | Backlog | deferred-from: U8 Round 1 + v63-1a-1 R1 (merged IN-101); bundles-with: D12 |\n| I13 | Team Factory Express Mode (pre-filled spec file input) | 2 | 1 | 70% | 3 | 0.5 | loom | Backlog | — |\n| I37 | Non-scalar/merge/anchor YAML keys crash `writeConfig` loop | 3 | 0.25 | 70% | 1 | 0.5 | convoke | Backlog | — |\n| I46 | Version-stamp post-check absence in refresh | 2 | 1 | 50% | 2 | 0.5 | convoke | Backlog | ✓I34, bundles-with: I39 |\n| T15 | **`console.warn` spy try/catch wrap for failure-isolation in v3-fallback tests** — `beforeEach` throw poisons subsequent test files in same process; wrap setup in try/catch or use `t.mock`. Sibling pattern to T11 `cpMock?.restore()` defensive-chain rollout. | 1 | 0.5 | 80% | 1 | 0.4 | convoke | Backlog | deferred-from: v63-1a-2 R1 (Blind Hunter) · sibling: T11 |\n| T10 | T4 test 4 variant — leave new ungoverned file uncommitted before migration run. Guards against scanner regression that would skip unstaged files; current test over-specifies git state by committing upfront. | 1 | 0.25 | 80% | 0.5 | 0.4 | convoke | Backlog | deferred-from: T4 Round 1 |\n| T2 | `convoke-version.js` coverage to 80%+ | 2 | 0.5 | 80% | 2 | 0.4 | convoke | Backlog | — |\n| I12 | Validator.js hardcoded to Vortex paths (make module-agnostic) | 3 | 0.5 | 80% | 3 | 0.4 | convoke | Backlog | — |\n| I3 | CSV parser library for manifest (replace regex) | 2 | 0.25 | 70% | 1 | 0.4 | convoke | Backlog | — |\n| I24 | Mock git in unit tests instead of bumping timeouts | 4 | 0.25 | 80% | 2 | 0.4 | enhance | Backlog | — |\n| I47 | Doctor missing Enhance menu-patch check + parallel coverage consolidation | 1 | 1 | 70% | 2 | 0.35 | convoke | Backlog | ✓I34 |\n| I61 | Parser grammar § — formalize `Layers:` evidence-note prefix alongside Compliance Status cell grammar; gives Story 2.2 Loom parser a target | 1 | 0.5 | 70% | 1 | 0.35 | convoke | Backlog | deferred-from: A15+A5+A10 R2 |\n| T5 | Expand docs audit — tense consistency + prose patterns | 2 | 0.5 | 60% | 2 | 0.3 | convoke | Backlog | — |\n| I38 | `mergeConfig` Document mutation not idempotent across writes | 2 | 0.5 | 80% | 3 | 0.3 | convoke | Backlog | — |\n| I48 | Agent-manifest.csv doctor check + CSV-parse validator upgrade | 2 | 0.5 | 60% | 2 | 0.3 | convoke | Backlog | ✓I34, bundles-with: I15 |\n| A4 | Fix temp dir prefix inconsistency (`bmad-` vs `convoke-`) | 1 | 0.25 | 100% | 1 | 0.3 | convoke | Backlog | — |\n| U14 | Honor `excluded_agents` in dev-mode (`isSameRoot`) skill wrapper generation loops — align with agent-file copy skip behavior | 1 | 0.25 | 100% | 1 | 0.25 | convoke | Backlog | deferred-from: U8 Round 1 |\n| I59 | Dedup duplicate entries in `excluded_agents` using Set — consistent with `Set`-based dedup on `agents` | 1 | 0.25 | 100% | 1 | 0.25 | convoke | Backlog | deferred-from: U8 Round 1 |\n| A20 | A5 retroactive-gap framing — add explicit \"rule is prospective\" statement to A5, OR add §6 note to v1 audit acknowledging sample-selection predates the rule | 1 | 0.25 | 90% | 1 | 0.2 | convoke | Backlog | deferred-from: A15+A5+A10 R1 |\n| T11 | `cpMock?.restore()` defensive-chain rollout across `afterEach` hooks — prevents secondary-throw in `afterEach` when `beforeEach` fails. Mechanical grep+touch pattern across `tests/lib/*` + `tests/unit/*` test files. | 1 | 0.25 | 80% | 1 | 0.2 | convoke | Backlog | deferred-from: Story B.4 defer |\n| U13 | Extend `excluded_agents` support to `EXTRA_BME_AGENTS` (team-factory + other standalone bme agents) — add per-submodule exclusion plumbing in `refresh-installation` + doctor | 2 | 0.5 | 70% | 3 | 0.2 | convoke | Backlog | deferred-from: U8 Round 1 |\n| A2 | Create `.agent.yaml` source files for Vortex agents | 2 | 0.5 | 60% | 4 | 0.2 | vortex | Backlog | — |\n| I42 | `MERGED_DOC_SENTINEL` doesn't survive spread or JSON-serialize | 2 | 0.25 | 70% | 2 | 0.2 | convoke | Backlog | — |\n| I53 | Carry-forward: CRLF writeManifest + basename collision | 2 | 0.25 | 40% | 1 | 0.2 | enhance | Backlog | — |\n| I55 | Validate `taxonomy.initiatives.platform` + `artifact_types` non-empty in `readTaxonomy` — reject/warn on all-commented config before rendering degenerate ADR text | 1 | 0.25 | 90% | 1 | 0.2 | convoke | Backlog | deferred-from: BUG-1+U7 Round 1 |\n| D11 | **PF1 migration-guide tense revisit at Epic 4 ship** — guide says \"Convoke 4.0 validates agent output equivalence as part of release gating\" but Epic 4 (PF1 validation battery) unshipped as of 1A.6 ship. Re-read at Epic 4 ship time; if Epic 4 still slipping, tighten to \"will validate\" or remove the bullet. | 1 | 0.25 | 60% | 1 | 0.15 | convoke | Backlog | deferred-from: v63-1a-6 R2 (Blind Hunter) · revisit-trigger: Epic 4 ship |\n| A23 | A10 misprediction + DISPUTED interaction — add one sentence to A10 covering auditor-predicted PASS → reviewers unanimously FAIL → DISPUTED-via-path-(b) re-run edge | 1 | 0.25 | 60% | 1 | 0.15 | convoke | Backlog | deferred-from: A15+A5+A10 R2 |\n| I45 | Workflow-manifest CSV registration drift not validated | 1 | 0.5 | 60% | 2 | 0.15 | convoke | Backlog | ✓I34, bundles-with: I15 |\n| D10 | Revisions table hygiene — split multi-patch rows to per-patch rows, or extract round-detail to a `revisions/` folder with pointer from the table | 1 | 0.25 | 100% | 2 | 0.1 | convoke | Backlog | deferred-from: A15+A5+A10 R2 |\n| A22 | `(external)/(internal)` OC-R0 tokens vs `external-declared` OC-R6 value — rename to `(owned)/(unowned)` OR document the collision in Parser grammar § | 1 | 0.25 | 80% | 2 | 0.1 | convoke | Backlog | deferred-from: A15+A5+A10 R2 |\n| U12 | Inject `excluded_agents` inline comment on pre-U8 config upgrade via `writeConfig` — operators upgrading see the field appear without context | 2 | 0.25 | 70% | 3 | 0.1 | convoke | Backlog | deferred-from: U8 Round 1 |\n| T19 | Test 20 (`npm pack --dry-run`) JSON shape brittleness — npm v6 returns object, v7+ returns array; `parsed[0]` assumes v7+. Fix: `Array.isArray(parsed) ? parsed[0] : parsed`. | 3 | 1 | 80% | 0.5 | 4.8 | convoke | Backlog | deferred-from: v63-3-1 R1 (R1-M3); intake: IN-117 |\n| I81 | Backup `{ overwrite: true }` clobbers prior backups on convoke-update re-run — operator scenario: update #1 backs up to `.backup-v4/.md`; operator recovers/edits flat file; update #2 overwrites backup. Loses original 3.x content. Fix: timestamp-suffix on conflict. | 2 | 1.5 | 70% | 0.5 | 4.2 | convoke | Backlog | deferred-from: v63-3-1 R2 (R2-L3); intake: IN-118 |\n| I82 | `readdirSync` order non-deterministic across filesystems — `audit-skill-dirs.js:154` produces non-stable failure messages + `--verbose` output across APFS vs ext4. Fix: `entries.sort((a, b) => a.name.localeCompare(b.name))`. | 2 | 0.5 | 90% | 0.25 | 3.6 | convoke | Backlog | deferred-from: v63-3-2 R1 (R1-L7); intake: IN-119 |\n| I83 | `_tripleKey` dedup not normalization-aware in convoke-register-skill — case/trailing-whitespace/Unicode NFC vs NFD variants slip past duplicate detection. macOS case-insensitive filesystem catches most case-variants via skill-dir existence check. Fix: normalize all 3 components via `.normalize('NFC').trim().toLowerCase()` before building triple key. | 2 | 1 | 70% | 0.5 | 2.8 | convoke | Backlog | deferred-from: v63-2-4 R1 (R1-M7); intake: IN-120 |\n| I84 | `_agentManifestPath` no submodule allowlist in `scripts/portability/export-engine.js` — unknown names like `noha` (meant `noah`) silently fall through to flat-`.md` LOAD. Fix: whitelist + throw on unknown submodule. | 2 | 1 | 70% | 0.5 | 2.8 | convoke | Backlog | deferred-from: v63-3-1 R1 (R1-L2); intake: IN-121 |\n| U18 | `--dry-run` UX hardening bundle for convoke-register-skill: (1) script accepts `{dryRun: true}` option in `validateInput`, demoting skill-exists error to warning when dry-run set (R1-M9); (2) workflow.md adds `--dry-run` as Phase 2 operator affordance for cautious \"show me what would happen\" flow (R1-L7). | 3 | 0.5 | 80% | 0.5 | 2.4 | convoke | Backlog | deferred-from: v63-2-4 R1 (R1-M9 + R1-L7); intake: IN-122 |\n| I85 | `.claude/skills/` shipping mechanism cleanup — `package.json:files[]` requires per-skill entry for each operator-tooling slash-command (currently `bmad-audit-skill-dirs`; `bmad-register-skill` has the same gap; future slash-commands accumulate). Single-purpose pattern. Fix: glob entry or canonical staging discipline. | 3 | 1 | 70% | 1 | 2.1 | convoke | Backlog | deferred-from: v63-3-2 R1 (R1-L4); intake: IN-123 |\n| I86 | Broken-symlink UX in convoke-doctor `[stale:skill-gone]` categorization — `fs.existsSync` returns false for dangling symlinks (target missing), same result as absent dir. Operator with `.claude/skills/foo` symlinked to unmounted volume sees misleading \"skill-gone\" warning. Fix: `lstatSync` + link-target check to distinguish \"absent\" from \"dangling symlink\" in warning text. | 2 | 0.5 | 80% | 0.5 | 1.6 | convoke | Backlog | deferred-from: v63-2-2 R1; intake: IN-124 |\n| T20 | FR16 merge-collision test missing in convoke-register-skill — Test 11 seeds a bare skill dir (no SKILL.md `dependencies:` frontmatter), so `scanBmmDependencies` returns 0 rows; `mergePreservingManual` dedup path isn't exercised for skill that BOTH exists in CSV AND is auto-detected. Fix: extend Test 11 seeding to write SKILL.md with `dependencies: [bmad-agent-pm]`. | 2 | 0.5 | 80% | 0.5 | 1.6 | convoke | Backlog | deferred-from: v63-2-4 R1 (R1-L5); intake: IN-125 |\n| I87 | Unverified-but-written exit 0 ambiguity in convoke-register-skill — when verification fails fail-soft, CLI exits 0 without REGISTERED marker. LLM parsers correctly treat as not-success; scripted callers keyed only on exit code treat as success. Fix: emit `REGISTRATION_UNVERIFIED: ` as distinct machine marker. | 2 | 0.5 | 80% | 0.5 | 1.6 | convoke | Backlog | deferred-from: v63-2-4 R2 (R2-M7); intake: IN-126 |\n| I88 | `EXTRA_BME_AGENTS` wrapper hardcodes flat-`.md` LOAD path — correct today, but future skill-dir EXTRA_BME agents would silently break when wrapper looks for flat `.md` that isn't there. Fix: add `layout` field to registry. | 2 | 1 | 70% | 1 | 1.4 | convoke | Backlog | deferred-from: v63-3-1 R1 (R1-L4); intake: IN-127 |\n| T21 | v63-2-2 H1 integration test isolation hardening (bundle): (1) pin minimal taxonomy.yaml fixture inline OR wrap live read with descriptive error pointing at broken taxonomy (R2 LOW — non-hermetic via live `_bmad/_config/taxonomy.yaml` read); (2) write `tmpDir/package.json` with `{\"name\":\"fixture\",\"version\":\"${pkg.version}\"}` so `findProjectRoot` doesn't walk up to repo root (R2 LOW — fixture coupling to repo's package.json). Decouples test from live repo state. | 3 | 0.5 | 80% | 1 | 1.2 | convoke | Backlog | deferred-from: v63-2-2 R2; intake: IN-128 |\n| T22 | R1-H1 concurrency test in convoke-register-skill not actually concurrent — `Promise.all([setTimeout(…, 0), setTimeout(…, 0)])` runs serially on Node's single-thread event loop; `_withCsvLock` is sync → callback 1 completes the full lock cycle before callback 2 starts. Test passes regardless of lock correctness. Fix: spawn two `runScript` subprocesses in parallel; assert both rows land. | 2 | 1 | 60% | 1 | 1.2 | convoke | Backlog | deferred-from: v63-2-4 R2 (R2-M1); intake: IN-129 |\n| I89 | Race in Vortex copy loop in `refresh-installation.js` — `fs.remove` then `fs.copy`; concurrent observer sees empty dir; under Windows file-lock scenarios this is real. Fix: copy-to-tmp + atomic rename. | 2 | 1 | 60% | 1 | 1.2 | convoke | Backlog | deferred-from: v63-3-1 R1 (R1-L1); intake: IN-130 |\n| T23 | 200ms hardcoded stdin-write delay in `runScriptWithInput` (`tests/helpers.js:143-152`) — burns 200ms × N tests (~1.4s in Story 2.3 suite) and risks hanging on slow CI if convoke-update prompts earlier. Refactor to `child.stdin.on('ready', ...)` or write-when-flowing pattern. Also: add `fs.remove` retry on EBUSY for macOS SIGTERM-orphan cleanup. | 3 | 0.5 | 70% | 1 | 1.1 | convoke | Backlog | deferred-from: v63-2-3 R1; intake: IN-131 |\n| I90 | `refreshInstallation` flat-cleanup runs in dev environment — cleanup loop at `refresh-installation.js:95-105` is OUTSIDE the `isSameRoot` guard; could wipe `.md.bak` files in dev tree. Zero operator risk today. Fix: move inside `!isSameRoot` block. | 1 | 0.5 | 80% | 0.5 | 0.8 | convoke | Backlog | deferred-from: v63-3-1 R1 (R1-M5); intake: IN-132 |\n| T24 | Test 16 doesn't verify `{project-root}` resolves at activation — verifies wrapper content but not end-to-end activation correctness. Fix: load SKILL.md target + assert minimal structure (e.g., presence of `description` frontmatter). | 2 | 0.5 | 70% | 1 | 0.7 | convoke | Backlog | deferred-from: v63-3-1 R1 (R1-M10); intake: IN-133 |\n| I91 | Concurrent `refreshInstallation` race — parallel to Story 2.4 R1-H1; lockfile gap allows two simultaneous installs to corrupt state. Fix path: lockfile around installation phase (sibling to register-skill `_withCsvLock`). | 2 | 1 | 60% | 2 | 0.6 | convoke | Backlog | deferred-from: v63-3-1 R1 (R1-L6); intake: IN-134 |\n| I95 | **BMAD v6.4.0/v6.5.0 compatibility recon + minor adoption** — **Re-scoped 2026-04-28** following marketplace PR #9 rejection: check #1 (Vortex agents in `_bmad/config.toml` post-marketplace install) is now **post-I97-ship** (was pre-4.0-ship; install can't happen until Pattern A migration ships) — absorbed into I97 Epic 5 (marketplace re-submission + smoke-test). Checks #2 (`_gyre/config.yaml` post-install state divergence) and #3 (`add-team` workflow loader tolerance, BUG-3 sibling) remain **independent and unblocked** — runnable against any test install regardless of I97 status. Minor adoption (`channel: stable` declaration in `marketplace.json` per v6.4 channel resolver) also remains active. **Watch-list (no action this row):** v6.5 `.agents/skills/` cross-tool standard tracked for portability segment (40% standalone-Vortex users) — adopt when stabilized. v6.4 customize.toml framework declined (BMM-internal customization, not Convoke surface). N-1 cadence policy proposed in memory: 4-6 wk lag behind upstream BMAD stable. | 5 | 1 | 80% | 2 | 2.0 | convoke | Backlog | origin: party-mode-2026-04-26 (Winston, John, Amalik); source: `_bmad-output/implementation-artifacts/spike-bmad-interop-findings.md`; sibling: BUG-3 (empirical check #3 settles BUG-3 fix path); bundles-with: I97 Epic 5 (check #1 only); re-scoped: 2026-04-28 (Winston) per spike-marketplace-packaging-delta diagnostic |\n| I100 | **Module-help.csv Convoke schema extension standard** — Team Factory's `module-help.csv` columns (`module, phase, name, code, sequence, workflow-file, command, required, agent, options, description, output-location, outputs`) diverge from BMM's canonical (`module, skill, display-name, menu-code, description, action, args, phase, after, before, required, output-location, outputs`). Convoke needs documented extension standard (which columns are Convoke-specific, which are BMM-conformant) before next module ships marketplace-eligible. Likely covenant-adjacent. | 5 | 1 | 60% | 2 | 1.5 | convoke | Backlog | bundles-with: P21 Operator Covenant (covenant-adjacent standard); origin: spike-marketplace-packaging-delta diagnostic 2026-04-28 (Winston); intake: IN-142 |\n| I98 | **Gyre marketplace structural compliance gap** — forward-looking; Gyre's 4 agents are flat `.md` files (not folder-per-agent), no `module.yaml`, no `module-help.csv`. Structurally MORE out-of-shape than Vortex on two axes (manifest absence + flat-vs-folder). Pattern A-equivalent migration needed when Gyre goes to marketplace (per spike's open product question). Tracks the gap so Pattern A learnings (from I97) transfer cleanly when triggered. | 4 | 2 | 60% | 7 | 0.7 | gyre | Backlog | bundles-with: I97 (Pattern A precedent); origin: spike-marketplace-packaging-delta diagnostic 2026-04-28 (Winston); intake: IN-140 |\n| I99 | **Team Factory marketplace structural compliance gap** — forward-looking, speculative. Single agent (`team-factory.md`) is flat `.md` file; no `module.yaml`; has `module-help.csv` but Convoke-variant schema (different columns from BMM canonical). Memory says Loom/Team Factory \"out of marketplace, repo-internal only\" — marketplace eligibility may never trigger. Tracked as backstop. | 2 | 1 | 50% | 4 | 0.25 | loom | Backlog | bundles-with: I97 (Pattern A precedent); origin: spike-marketplace-packaging-delta diagnostic 2026-04-28 (Winston); intake: IN-141 |\n| U19 | **Migrate CI actions to Node.js 24 (action JS runtime only — distinct from package test-matrix Node versions)** — GitHub Actions deprecation warning fires on every CI run: `actions/checkout@v4` and `actions/setup-node@v4` use Node.js 20 for the *action's own JavaScript runtime* (the runtime that *executes* the action code); GitHub will force Node.js 24 by 2026-06-02 and remove Node.js 20 from runners 2026-09-16. **In scope:** (a) bump action versions if newer majors exist (currently @v4; check @v5+); (b) optionally set `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true` to opt-in early. **Out of scope (deliberately separate concern):** the package's own test matrix (`node-version: [18, 20, 22]` in `ci.yml:38`) tests `convoke-agents` itself across Node versions and is independent of the action runtime deprecation; any change to that matrix is a separate decision driven by `package.json:engines` (`>=18.0.0`) and end-user Node coverage targets, not by this deprecation. Hard deadline: 2026-06-02 (forced opt-in) / 2026-09-16 (Node 20 removed). | 5 | 1 | 90% | 1 | 4.5 | convoke | Backlog | deferred-from: cov-1-1 (Task 5.3); deadline: 2026-06-02 (forced) / 2026-09-16 (removed); renumbered: U18 → U19 in cov-1-1 R1 review (existing U18 = `--dry-run` UX hardening bundle) |\n| I101 | **Classify `scripts/audit/*.js` and legacy `scripts/update/migrations/{1.0,1.1,1.2,2.0,3.0}.x-to-*.js` as operational tooling vs production code path** — c8 glob hygiene followup from cov-1.1. cov-1.1 excluded one file (`pf1-judge-calibration.js`) as the minimum-required Path 1 fix; six other audit scripts had zero production importers at spot-check time and could also be excluded for ratchet stability. **Already-classified at cov-1-1 spot-check (2026-05-03; mechanical `grep -rn \"require.*['\\\"]\\.\\.*\\/audit\\/\" scripts/ index.js`):** **operational-tooling, zero production importers** — `pf1-judge-calibration.js` (already excluded by cov-1.1), `pf1-validation-battery.js`, `reference-integrity.js`, `audit-bmad-init-refs.js`, `drift-snapshot.js`, `validate-marketplace.js`, `audit-skill-dirs.js`. **Production-path (KEEP measured)** — `audit-bmm-dependencies.js` (5 importers across `scripts/convoke-doctor.js:14` + 4 sites in `scripts/convoke-register-skill.js`). **Legacy migrations 1.1.x/1.2.x/3.0.x** are production-path (invoked by chain-walker in `scripts/update/migrations/registry.js`) — Path 1 not viable; addressable via Path 2 (targeted unit tests) or accepted-as-rare-traversal-by-design. **Cross-coupling cluster (per cov-1-1 R1 D01 → P08):** `pf1-judge-calibration.js` ↔ `pf1-validation-battery.js` (line 44 `require('./pf1-judge-calibration')`) ↔ tests `tests/lib/pf1-validation-battery.test.js:86` + `tests/lib/pf1-judge-prompt.test.js:100`. This cluster MUST be classified-and-handled together (symmetric exclude OR per-function unit tests OR `/* c8 ignore */` annotations) rather than file-by-file — partial exclusion creates a measurement blind spot where `pf1-validation-battery.js` (still measured) reaches into excluded `pf1-judge-calibration.js`. Concrete deliverable: per-file classification table with mechanical importer-grep evidence, then a corresponding `.c8rc.json` exclude expansion and (optionally) targeted unit tests for any production-path files with weak coverage. Closes the c8 hygiene gap that allowed the I97 Story 2.1 Emma POC harness regression. | 3 | 2 | 80% | 2 | 2.4 | convoke | Backlog | deferred-from: cov-1-1 (AC5) + cov-1-1 R1 D01 (cross-coupling cluster); bundles-with: I97 retro on conversion-artifact quality gates; depends: cov-1-1 ships first |\n| A47 | **AC-RETRO-1 `verification-pipefail` rule into `project-context.md`** — codify the AC-RETRO-1 forward-prevention from session-retro-2026-05-05-cov-and-i97-bug.md: \"Story Task verification commands using shell pipes MUST use `set -o pipefail` or `${PIPESTATUS[0]}`; `cmd \\| head/tail/grep ; echo $?` is forbidden because it captures the rightmost command's exit code.\" Cite 2026-05-05 retro as scar-story. **ID note:** A46 was already allocated to §A41-2 scope-clarification (shipped 2026-04-26, §2.5 Absorbed) before this triage was run; renumbered to A47 to avoid collision. | 3 | 1 | 100% | 0.25 | 12.0 | convoke | Backlog | deferred-from: session-retro-2026-05-05 AC-RETRO-1; intake: IN-145; sibling: I103 |\n| I103 | **`defaults.run.shell: bash -eo pipefail {0}` on `ci.yml`** — one-line workflow hardening; GitHub Actions default `bash` has `-e` but not `-o pipefail`. Eliminates an entire false-positive class for any future piped step. Sibling to A47 (codifies same lesson at workflow level). | 3 | 1 | 90% | 0.25 | 10.8 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Quinn); intake: IN-144; sibling: A47 |\n| I104 | **CI lint `--max-warnings 0`** — `package.json:48` currently runs `eslint scripts/ index.js tests/` without `--max-warnings 0`; `no-unused-vars` configured as `warn` slides through green. Closes rule↔gate disagreement with `project-context.md` `lint-passes-before-review` rule. One-flag edit. | 3 | 1 | 90% | 0.25 | 10.8 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Winston + Quinn); intake: IN-146; sibling: I79 (scope to touched files) |\n| T25 | **Install-tarball smoke job (`npm pack` + install in tmp + run bin)** — replace/augment `package-check`'s `node index.js` smoke with a real install verification: `npm pack`, install the tarball into a fresh tmp project, exercise `npx convoke-install-vortex` or `convoke-doctor`. Catches missing `files:` entries in `package.json:6-23` which has churned repeatedly. Highest-reach: every user hits `npm install`. | 10 | 2 | 80% | 2 | 8.0 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Winston + Quinn); intake: IN-148; sibling: T19 (npm pack JSON parsing) |\n| I105 | **Required-status checks / branch protection / failure notifications** — currently no `CODEOWNERS`, no branch-protection config, no notification workflow; `concurrency.cancel-in-progress: true` on main pushes (`ci.yml:10-12`) erases the trail when red. Structural root cause of the 4-day 2026-05-01→05 red staying invisible. Set up: required statuses on `ci.yml` jobs, branch protection on `main`, issue-on-failure workflow for `main` pushes. | 2 | 2 | 80% | 1 | 3.2 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Winston); intake: IN-147 |\n| T28 | **`python-test` job pytest discovery** — replace 5 hardcoded test file paths (`ci.yml:147-171`) with `pytest _bmad/` or glob-based discovery. Adding a new BMB or Core Python test currently silently misses CI. | 2 | 1 | 80% | 0.5 | 3.2 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Winston); intake: IN-154 |\n| T26 | **Per-file coverage threshold + `statements` in `.c8rc.json`** — surface known gaps in `convoke-update.js` (29%), `convoke-version.js` (56%), `1.0.x-to-1.3.0.js` (37%) that currently hide behind the aggregate `lines: 83 / functions: 88 / branches: 80`. Add `per-file: true` + `statements` threshold. Sibling to T1/T2 which would close the per-file gaps themselves. | 3 | 1 | 70% | 1 | 2.1 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Quinn); intake: IN-149; sibling: T1, T2 |\n| T27 | **Re-shape or delete `burn-in` job** — `ci.yml:68-91` runs `npm test` 5× with no seed variance, no shuffled order, no `TEST_SEED` env. Catches only nondeterminism already visible in main `test` job. Two paths: (a) delete entirely (invest savings in deterministic fixtures per `test-fixture-isolation`), (b) add `--test-shuffle` + seed env to actually catch ordering bugs. | 2 | 0.5 | 80% | 0.5 | 1.6 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Winston + Quinn); intake: IN-150 |\n| I106 | **CI matrix consistency** — `ci.yml:38` matrix tests Node 18/20/22 but coverage/lint/security/package-check pin Node 20 only (lines 23, 98, 115, 132, 152). Node 18 EoL'd 2025-04 → matrix is half-effective. Two paths: (a) drop Node 18, matrix Node 20+22 across all jobs; (b) keep matrix as-is but matrix the other jobs too. Distinct from U19 (action runtime, not test matrix) and IN-64 (windows-latest add). | 2 | 1 | 80% | 1 | 1.6 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Quinn); intake: IN-151; sibling: U19, IN-64 |\n| I110 | **Version-sync / changelog gate in CI** — no current CI assertion that `package.json:3` ↔ `CHANGELOG.md` ↔ sibling configs (`_bmad/bme/_vortex/config.yaml` etc.) agree on the current version. `no-hardcoded-versions` rule exists but has no enforcer; publish job ships whatever's tagged. Add a `version-sync` check job. Sibling to I39 (non-atomic version stamp writes) + I46 (version-stamp post-check). | 3 | 1.5 | 70% | 2 | 1.6 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Winston); intake: IN-156; sibling: I39, I46 |\n| I108 | **`badges.yml` auto-commit-to-main safety** — `.github/workflows/badges.yml:38-48` auto-commits and pushes `docs/badges.json` to `main` with `[skip ci]`, bypassing every other CI gate. If `scripts/generate-badges-json.js` produces malformed JSON or touches an adjacent file, ships to main untested. Move to PR-validation path (`prepublishOnly` already covers publish-time; this would close the main-push gap). | 2 | 1 | 70% | 1 | 1.4 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Winston + Quinn); intake: IN-153 |\n| I102 | **Coverage job concern-split — `test:p0` / `coverage:report` / `coverage:gate`** — `ci.yml:93-108` currently conflates \"test failed\" with \"threshold dropped\" into one opaque red (direct cause of 4-day 2026-05-01→05 red requiring party-mode diagnosis to untangle). Split into 3 jobs scoped by concern; next dual-cause red diagnoses itself. Cross-cutting impact: P0 surface gets its own visible signal (currently runs only as side-effect of coverage). | 3 | 1 | 80% | 2 | 1.2 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Winston + Quinn); intake: IN-143 |\n| I111 | **Failure-artifact upload narrowing** — `ci.yml:62-66` uploads `tests/` wholesale on failure; the source is already in git and actual test output went to job log via `stdio: 'inherit'` in `scripts/test-runner.js:67`. Pure noise; 14-day retention × matrix(3) × failure rate. Either drop the upload step or narrow to genuine runtime artifacts (coverage report, JUnit XML). | 1 | 0.25 | 90% | 0.25 | 0.9 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Quinn); intake: IN-157 |\n| I109 | **`convoke-agents` self-dep in `package.json:89`** — `dependencies: { \"convoke-agents\": \"^3.2.0\" }` is a circular self-reference, likely artifact of the bmad-enhanced → convoke-agents rename. Resolves fine with `npm ci` but footgun: any operator unfamiliar with rename history sees circular self-dep. Either remove (after verifying no consumer code requires it) or add explanatory comment. | 1 | 0.5 | 70% | 0.5 | 0.7 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Winston); intake: IN-155 |\n| I107 | **Shared install artifact across CI jobs** — `ci.yml` 7 jobs each do their own `actions/setup-node@v4` + `npm ci` (11 invocations per pipeline run). `cache: 'npm'` helps but coverage/lint/package-check/security each re-resolve ~30s. Tutorial-default shape. Add a `build` job that uploads `node_modules` artifact consumed by downstream jobs. | 2 | 0.5 | 70% | 2 | 0.35 | convoke | Backlog | deferred-from: CI/CD review 2026-05-25 (Quinn); intake: IN-152 |\n| T29 | **Migrate `portfolio-engine.test.js:512` AC2 test from live-state to fixture-based** — Story 6.3 AC2 test asserts `result.summary.unattributed < 20` against the live repo via `generatePortfolio(projectRoot)`. Violates `test-fixture-isolation` rule (project-context.md:9): any net-new file in `implementation-artifacts/` without an initiative signal tips the count. **Already happened 2026-05-25** (ci-hygiene-1-1 push: count 22→23, CI red, unblocked via STORY_PREFIX_MAP expansion). Underlying test still fragile. Fix paths: (a) use `createValidInstallation(tmpDir)` + populate fixture with known-count of unattributed files + assert on the known count, OR (b) replace with regression-mode test that diffs unattributed-list against a checked-in golden file. Likely (a) preferred — matches `tests/helpers.js` precedent. | 3 | 1.5 | 80% | 2 | 1.8 | convoke | Backlog | deferred-from: CI red 2026-05-25 (operator option A+C); intake: IN-158; cites: project-context.md:9 (`test-fixture-isolation`) |\n| I112 | **Portfolio engine \"unreadable or empty\" mis-categorization** — 3 large planning-artifact files (25-45KB) reported as \"unreadable or empty\" by `explainUnattributed` in [scripts/lib/portfolio/portfolio-engine.js:200-216](../../scripts/lib/portfolio/portfolio-engine.js#L200-L216). Files exist and are readable via `fs.readFileSync`. Bug likely in content-reading path upstream of `explainUnattributed` (passes empty content for some reason). Pre-existing; orthogonal to ci-hygiene-1-1; surfaced during CI red investigation. | 2 | 0.5 | 60% | 2 | 0.3 | convoke | Backlog | deferred-from: CI red 2026-05-25 (incidental finding); intake: IN-159 |\n| D16 | **v6.3 re-sequencing + v4.1 catch-up decision artifact** — **AUTHORED 2026-05-25** at [convoke-note-v6-3-resequencing-and-v4-1-catchup-2026-05-25.md](convoke-note-v6-3-resequencing-and-v4-1-catchup-2026-05-25.md). Scope expanded mid-author per BMAD upstream impact spike (operator request): not just PF1 sequencing but full Option F decision (ship v4.0 on v6.3 as planned + commit to v4.1 catch-up Initiative for v6.4-v6.7 absorption). Doc embeds: F decision + rationale, BMAD upstream impact analysis (v6.4 → Web Bundles v1.0.0), marketplace landscape spike findings, PR #9 status correction (closed 2026-04-27), v4.1 catch-up scope outline (6 epics, draft). Status: recorded; signoff_by: amalik. **Next action:** add Initiative Lane row for v4.1 catch-up. | 5 | 2 | 60% | 1 | 6.0 | convoke | **Authored** | bundles-with: I97 (v6.3 adoption parent); depends: D14 (PF1 resumption checklist informs the call); intake: IN-163; spawns: v4.1-catchup Initiative-Lane row (TBA) |\n| D14 | **v63-4-3 PF1 resumption checklist / state-snapshot** — **AUTHORED 2026-05-26** at [v63-4-3-resumption-snapshot.md](../implementation-artifacts/v63-4-3-resumption-snapshot.md). Probes revealed: Tasks 1+2 shipped 2026-04-28 (spike result + recording protocol, D2-A path locked); Tasks 3-8 pending; `scripts/audit/pf1-record-agent.js` not yet authored. Realistic resumption window: ~2.5-3 hours focused session. ANTHROPIC_API_KEY verified set 2026-05-26 by operator. Story `v63-4-3` status remains `in-progress` (accurate — Tasks 1+2 done is genuine partial execution, not drift). Resumption gated only on operator session-time allocation. | 3 | 1 | 70% | 1 | 2.1 | convoke | **Authored** | release-path-blocker (4.5 + 5B.3 gate on this); intake: IN-161 |\n| D13 | **v63-4-5 Task 0.4 spec wording fix — `3.x-to-4.0.js` → chain-walker** — Task 0.4 currently checks for single-file `scripts/update/migrations/3.x-to-4.0.js` which doesn't exist (post-BUG-5 the structure is `3.{0,1,2,3}.x-to-{3.1.0,4.0.0}.js` + `registry.js` walker). Rewrite Task 0.4 to verify the 4.0-target chain (e.g., `3.3.x-to-4.0.0.js` present + `registry.js` invariant unchanged). One-line spec edit + restate of Task 0.4 check. | 1 | 0.5 | 90% | 0.25 | 1.8 | convoke | Backlog | scope: v63-4-5 spec correction; cites: BUG-5 (chain-walker invariant); intake: IN-160 |\n| D15 | **Author v63-1B-{1,2,3} story specs** (Amelia consolidation: remove Bob/Quinn/Barry) — sprint-status lists all 3 at `backlog` but specs don't exist on disk. Story-creation gap *within* parent Initiative A8 (Initiative Lane Appendix L602). Per v63-5b-3 Decision 5 default: ship-without-1B (operator can override). Authoring de-risks the deferral discussion. Use `/bmad-create-story` 3× following v63-1A pattern; ~30-60 min × 3. | 3 | 1 | 80% | 2 | 1.2 | convoke | Backlog | bundles-with: A8 (Initiative Lane Appendix L602 — Amelia consolidation parent); intake: IN-162 |\n| I114 | **Salvage `install-scope-check.js` into CI + fix write-op matcher.** Wire `node scripts/audit/install-scope-check.js` into `npm test`/CI (mechanical $0 scope-leak guard, orphaned only because filed under the stalled PF1 battery); fix #31 matcher counting comments/strings + re-baseline snapshot 5→4. Independent of PF1's fate. Story: [fast-install-scope-check-ci-salvage.md](../implementation-artifacts/fast-install-scope-check-ci-salvage.md). | 4 | 1 | 80% | 2 | 1.6 | convoke | Backlog | intake: IN-167; cites: audit #21, #31 |\n\n### 2.4 Initiative Lane\n\nItems requiring the full pipeline: Brief → PRD → Arch → PRD Validation → IR → Epics.\n\n| ID | Description | R | I | C | E | Score | Portfolio | Stage | Artifacts | Dependencies |\n|----|-------------|---|---|---|---|-------|-----------|-------|-----------|--------------|\n| P21 | **Convoke Operator Covenant — axiom (\"the operator is the resolver\") + 7 Operator Rights + Compliance Checklist + baseline audit (renamed from \"Convoke Experience Contract\" in party mode 2026-04-18)** [rescored 2026-04-20: 4.8→9.0] | 10 | 2 | 90% | 2 | 9.0 | convoke | **Epic 1 ✓ (5/5 stories + retro shipped 2026-04-19)** \\| **Epic 2 deferred** (A5 trigger rule locked — IN-12 Vortex re-audit pending; oc-2-2 blocked on Phase 3 Loom) | B, P (`convoke-epic-operator-covenant.md`), E1✓ (`oc-1-1`..`oc-1-5` + retro) | Epic 2 triggers: IN-12 outcome, external Phase 3 Loom Add Skill |\n| S3 | **One-command standalone install (`npx convoke-agents init`)** [rescored 2026-04-20: 3.6→4.0] | 10 | 2 | 80% | 4 | 4.0 | convoke | **Qualified** | Strategy doc | — |\n| P12 | **Enhance framework — Team Module Generator (BMB)** | 8 | 3 | 80% | 6 | 3.2 | enhance | **Qualified** | ADR only | — |\n| P9 | **Forge team — Domain Knowledge Extraction** | 9 | 3 | 90% | 8 | 3.0 | forge | **In Pipeline** (Blocked on Gate 1) | D, E(partial) | external: shadow engagement (Gate 1) |\n| I97 | **BMAD v6.3+ source format adoption (Convoke 4.0 packaging-contract)** — Pattern A migration of 7 Vortex agents from v5 XML-in-markdown to v6.3+ outcome-based markdown; `module.yaml` expansion (add `agents:` array, prompts, directories) + `module-help.csv` authoring; absorbs decision-2 (naming convention reconciliation — **resolved 2026-04-28 in Architecture phase D1: hybrid** — internal `bmad-bme-agent-{first-name}` + slash-command compat aliases) + decision-3 (Operator Covenant preservation policy — **D6 declares per-Right policy**; per-Right matrix authored at Epic 4 spec). **Pattern C revisit deferred** to marketplace-traction / BMAD-roadmap / UX-research trigger (see `project_marketplace_structural_adoption.md`). 5 epics: E1 format migration for 7 Vortex agents, E2 workflow content transformation (18 active workflows → agent `references/`), E3 manifest authoring + naming reconciliation, E4 Covenant survival audit per converted file + per-Right matrix + personality rubric authoring, E5 marketplace re-submission + smoke-test (absorbs I95). **PRD ✓ + Architecture ✓ + Epics ✓ (2026-04-28).** 6 epics + 17 stories ratified (E5 split into operator-controllable E5 vs reviewer-dependent E6 trickle epic); ready for sprint planning (Bob SP). | 10 | 3 | 80% | 8 | 3.0 | convoke | **In Pipeline** (PRD ✓; Arch ✓; Epics ✓; ready-for-sprint) | Diagnostic: [`../implementation-artifacts/spike-marketplace-packaging-delta.md`](../implementation-artifacts/spike-marketplace-packaging-delta.md); predecessor: [`../implementation-artifacts/spike-bmad-interop-findings.md`](../implementation-artifacts/spike-bmad-interop-findings.md); PRD: [`convoke-prd-bmad-v63-source-format-adoption.md`](convoke-prd-bmad-v63-source-format-adoption.md); PRD validation: [`convoke-report-prd-validation-bmad-v63-source-format-adoption.md`](convoke-report-prd-validation-bmad-v63-source-format-adoption.md); Architecture: [`convoke-arch-bmad-v63-source-format-adoption.md`](convoke-arch-bmad-v63-source-format-adoption.md); Epics: [`convoke-epic-bmad-v63-source-format-adoption.md`](convoke-epic-bmad-v63-source-format-adoption.md); Personality rubric: [`convoke-spec-personality-preservation-rubric.md`](convoke-spec-personality-preservation-rubric.md) | bundles-with: U10+P23+A8+A9 (sibling v6.3 adoption); supersedes-framing: I95 (smoke-test absorbed into E5); origin: spike-marketplace-packaging-delta diagnostic 2026-04-28 (Winston); intake: IN-139 |\n| ILE-1 | **Initiative Lifecycle Engine** (Portfolio-as-Code — rework of backlog/portfolio/governance skills into integrated lifecycle management) [rescored 2026-04-19: 2.0→2.7] | 9 | 3 | 80% | 8 | 2.7 | helm | **Ready for Sprint** | B, P, IR(pre-arch), A, E, IR✓ | ✓P15, ✓P10, ✓I49, ✓bmad-enhance-initiatives-backlog-v2.0.0 |\n| P13 | **Vortex redesign (align to Enhance-codified patterns)** | 7 | 2 | 70% | 4 | 2.5 | vortex | **Qualified** (Blocked on P12) | — | P12 |\n| U10+P23+A8+A9 | **BMAD v6.3.0 Adoption (Convoke 4.0)** | 10 | 2 | 80% | 7 | 2.3 | convoke | **In Sprint** | B, P✓, A, IR, E | external: BMAD v6.3.0 release |\n| U9 | **Module-aware refresh and validation (modules-manifest.yaml)** [rescored 2026-04-19: 1.9→2.1] | 8 | 2 | 80% | 6 | 2.1 | convoke | **Qualified** | — | — |\n| P24 | **Relocate Covenant + Checklist out of `_bmad-output/planning-artifacts/`** — path smell conflating workflow output with canonical spec; propose `docs/covenant/` with pointer retained in old location; touches ~8 references. **Sequencing pref:** soft prerequisite for P21 Story 2.3 (Publication Gate) — external publication shouldn't point at a workflow-output path. | 4 | 1 | 70% | 2 | 1.4 | convoke | **Qualified** | — | deferred-from: oc-1-5 Round 1 |\n| P3 | **Team installer architecture (`convoke-install `)** — **Sequencing pref:** if U9 (modules-manifest.yaml) ships first, P3 effort drops from E:4 → E:2 because the manifest reader already exists; on-ship-of-U9, re-score P3. | 6 | 1 | 80% | 4 | 1.2 | convoke | **Qualified** | — | bundles-with: S3 |\n| P7 | **ML/AI Engineering team exploration** | 6 | 2 | 30% | 3 | 1.2 | *(pending)* | **Qualified** (needs discovery) | — | — |\n| P25 | **Team Factory Phase 3 — add-agent + add-skill extension workflows (TF-FR25 + TF-FR26)** — formalizes the trackable reference for P21 Story 2.2's blocker (previously informal \"external Phase 3 Loom Add Skill\" label). Per `_bmad/bme/_team-factory/workflows/step-00-route.md:42-48`, Phase 3 workflows are \"not yet available\"; Phase 1+2 (add-team) shipped via P14. Scope: 2 extension workflows + integration wiring + validation (estimated 5-7 stories from loom-epic.md TF-FR25/TF-FR26 definitions). | 4 | 2 | 60% | 7 | 0.7 | loom | **Qualified** | — | deferred-from: Post-Review cleanup 2026-04-21; unblocks: P21 Story 2.2 |\n| P8 | **Governance & Support skill set** | 5 | 1 | 30% | 3 | 0.5 | helm | **Qualified** (needs discovery) | — | — |\n| P2 | **Multi-module collaboration workflows (cross-team handoffs)** | 5 | 2 | 30% | 8 | 0.4 | convoke | **Qualified** (Unblocked by P1) | — | ✓P1 |\n| I113 | **Convoke 4.1 — Upstream BMAD v6.4-v6.8 absorption** — focused catch-up Initiative committed via Option F decision (2026-05-25); v6.8.0 absorbed 2026-06-21 (upstream now **N-6 / v6.8.0**, current head). **7 epics drafted:** E1 marketplace structural adoption (Pattern A — restructure to `skills/` at root + resubmit `bmad-plugins-marketplace` PR per #9 rejection feedback; inherits PRD + Arch + 5 ADRs from I97 planning track); E2 v6.7 module-help schema rename (`after`/`before` → `preceded-by`/`followed-by`, forced); E3 v6.4 TOML customization framework adoption spike (`_bmad/custom/` overrides could obviate Convoke wrapper patterns); E4 v6.4 release-channels adoption (`stable`/`next`/`pinned` — structural fix for N-cadence policy); E5 `bmad-investigate` + `.decision-log` evaluation (v6.7); E6 Web Bundles v1.0.0 evaluation (2026-05-25 today — Gemini Gems + ChatGPT Custom GPTs distribution surface for Vortex Standalone ~40% segment); **E7 activation-guardrails adoption as Operator Covenant enforcement substrate (v6.8 — added 2026-06-21; [ADR-001](adr/v4-1/adr-001-guardrails-covenant-enforcement.md)): adopt the `INCLUDE→READ→RUN→CHECK→FILTER→CD` guardrail pattern to graduate OC-R5 (pause) from convention to enforced; **spike RESOLVED 2026-06-21 — verdict Option A (agent-internal self-confirmation) → adopt wholesale, no OC-R7 risk;** scope correction: v6.8 guardrail enforces *activation-sequence* fidelity only (not mid-workflow pause), so E7 = Convoke-authored extension of the self-confirm discipline to OC-R5 decision points, not a drop-in; retrofit of `_bmad/bme/` skills must sequence after Epic 1B (A8) to avoid double-touching activation sequences)**. **Pre-decision scoping note:** Original Winston proposal was R:10 I:2 CF:60% E:9 = 1.3; party-mode RICE calibration with John (PM) + Bob (SM) revised to R:10 I:3 CF:50% E:10 = 1.5 (I:3 honors cumulative value across marketplace + N-cadence + Web Bundles; CF:50% honors spike-dependent unknowns in E3/E5/E6; E:10 honest scoping vs Winston-generous E:9). Mid-lane position; sits below I97 (3.0, in flight) since v4.1 is future-discount commitment. Scope expected to refine post-v4.0 ship when E3/E5/E6 spike outcomes scope-shape the Initiative. | 10 | 3 | 50% | 10 | 1.5 | convoke | **In Pipeline — ready-for-sprint** (PRD ✓ + Arch ✓ + Epics ✓, all 2026-06-21; scope ratified MVP=E2+E4+E7; E7 spike resolved) | PRD: [`convoke-prd-bmad-v6.4-v6.8-absorption.md`](convoke-prd-bmad-v6.4-v6.8-absorption.md) (26 FR / 14 NFR / MVP=E2+E4+E7); Arch: [`convoke-arch-bmad-v6.4-v6.8-absorption.md`](convoke-arch-bmad-v6.4-v6.8-absorption.md) (AD1-AD9, READY); Epics: [`convoke-epic-bmad-v6.4-v6.8-absorption.md`](convoke-epic-bmad-v6.4-v6.8-absorption.md) (**4 epics / 20 stories**); E7-ADR: [`adr/v4-1/adr-001`](adr/v4-1/adr-001-guardrails-covenant-enforcement.md); Decision doc: [`convoke-note-v6-3-resequencing-and-v4-1-catchup-2026-05-25.md`](convoke-note-v6-3-resequencing-and-v4-1-catchup-2026-05-25.md); inherits-from: I97 planning track (5 ADRs at `adr/i97/` for E1) | depends: I97 close (v4.0 ship); **Epic 3 (E7) blocked-on: external A8 Epic 1B** (specs unauthored — E7-last or decoupling spike); supersedes-framing: I97 E5+E6 (→ v4.1 E1); origin: D16; intake: IN-164, IN-165; next-gate: sprint-planning when v4.0 ships; **OQ-1 (2026-06-28): arch AD1/AD8 cadence-reader contradiction — resolve at sprint-planning, blocks E4 Story 1.1 (see [arch §AD1](convoke-arch-bmad-v6.4-v6.8-absorption.md) + [`docs/codebase-audit-2026-06-27.md`](../../docs/codebase-audit-2026-06-27.md) #20)** |\n| P58 | **Base-layer consolidation** — extract a kernel/base layer (`scripts/lib/`) to end multiple-sources-of-truth: agent roster ×3 (agent-registry/export-engine/classify-skills), install-layout paths ×10+, frontmatter parser bypassed ×15 (two YAML libs in parallel), kernel primitives misplaced in `update/lib/utils.js` (every subsystem reaches *up*), package self-location `../../../` chains. Post-4.0 debt-paydown; prevents the patch-at-call-site bug class (HIGH-1 was one instance). Coordinate with in-flight `frontmatter.js` rollout + v4.1 cadence/`paths.js` overlap (OQ-1). Brief: [convoke-brief-base-layer-consolidation.md](convoke-brief-base-layer-consolidation.md). | 5 | 1 | 60% | 6 | 0.5 | convoke | **Qualified** | B | depends: I97 close (v4.0 ship); coordinate: I113 (v4.1 cadence/paths overlap); related: I54 (narrow dedup); intake: IN-168 |\n\n**Notes on initiatives:**\n\n- **v6.3 Adoption** is the only initiative at **In Sprint** with the full artifact set. This is the reference standard.\n- **P9 (Forge)** has complete Vortex discovery (all 7 streams, 9 artifacts) and partial epic breakdown. Missing: formal PRD, Architecture, IR report. Blocked on Gate 1 (shadow engagement).\n- **P12 (Enhance)** has only an ADR. Needs the full pipeline before build.\n- **P21 (Convoke Operator Covenant)** — Epic 1 ✓ shipped 2026-04-19 (Covenant + Compliance Checklist + baseline audit + Vortex audit + 5 stories + retro). Epic 2 deferred pending IN-12 Vortex re-audit outcome + external Phase 3 Loom Add Skill workflow. See `convoke-epic-operator-covenant.md` (status: `ready-for-sprint-planning`).\n- **S3, U9, P3, P13, P7, P8, P2, P24, P25** are all **Qualified** — they have a backlog entry and rationale but no planning artifacts. Next step: Product Brief.\n- **P7** portfolio is pending — could be a new portfolio item or absorbed into an existing one. Decision deferred to qualification session.\n\n### 2.5 Absorbed / Archived\n\nItems removed from the active backlog. Nothing disappears without a receipt.\n\n#### Absorbed into v6.3 Adoption epic breakdown\n\n| ID | Original Description | Absorbed Into | Reference | Date |\n|----|---------------------|---------------|-----------|------|\n| A8 | Adopt upstream Amelia consolidation (WS3) | v6.3 Adoption Epic 1B | `convoke-epic-bmad-v6.3-adoption.md` §Epic 1B | 2026-04-12 |\n| A9 | Convoke extensions compatibility governance (WS4) | v6.3 Adoption Epic 2 | `convoke-epic-bmad-v6.3-adoption.md` §Epic 2 | 2026-04-12 |\n| U10 | BMAD v6.3.0 direct-load migration (WS1) | v6.3 Adoption Epic 1A | `convoke-epic-bmad-v6.3-adoption.md` §Epic 1A | 2026-04-12 |\n| P23 | BMAD v6.3.0 marketplace publication (WS2) | v6.3 Adoption Epic 3 | `convoke-epic-bmad-v6.3-adoption.md` §Epic 3 | 2026-04-12 |\n\n**Note:** U10/P23/A8/A9 are grouped as a single initiative in §2.4 for visibility; their individual scope is absorbed into epic stories.\n\n#### Absorbed into larger initiatives\n\n| ID | Original Description | Absorbed Into | Reference | Date |\n|----|---------------------|---------------|-----------|------|\n| S1 | Interactive installer with project-type questions | S3 (One-command install) | Backlog item S3 explicitly subsumes S1 | 2026-04-12 |\n| S2 | Simplified entry point — single \"Start Discovery\" command | S3 (One-command install) | S3 includes guided first-run experience | 2026-04-12 |\n\n#### Completed (shipped)\n\n| ID | Description | Shipped | Score | Portfolio |\n|----|-------------|---------|-------|-----------|\n| A26 | **Vortex-wide HC-schema pattern audit (HC-consumer cluster) — A24 §6.2 pattern claim CONFIRMED at cluster scale; A10 GATE CLEARED at 3/3 = 100%.** First v5 audit applying §A41-14 Layer 1 categorization + §A41-2 hybrid counting + §A41-5 reading-dependent commits. Audited 9 HC-consumer Vortex workflows × 7 Operator Rights = 63 cells per [convoke-report-operator-covenant-audit-vortex-hc-cluster-2026-04-26.md](convoke-report-operator-covenant-audit-vortex-hc-cluster-2026-04-26.md). **Headline:** **T1 FIRES for HC-cluster × Right to pacing at 100% fail rate (9/9 FAIL, N_effective=9).** All 9 HC-consumer Vortex workflows fail OC-R7 at step-01. Pattern claim from A24 §6.2 confirmed at cluster scale (vs A24's HC-subset 2/2 = 100%, full Vortex 3/4 = 75%). All 6 other rights compliant at 100% across HC-cluster. **Mechanism analysis (narrowed from A24 single-mechanism speculation):** ≥2 distinct sub-mechanisms identified — **Mechanism (i):** HC-schema enumeration + Convoke-internal-form enumeration (7/9: behavior-analysis, experiment-design, pattern-mapping, pivot-resynthesis, production-monitoring, research-convergence, signal-interpretation; plus A24 precedent assumption-mapping + hypothesis-engineering = 9 total cells). **Mechanism (ii):** HC-reference + independent operator-readiness validation checklists (2/9: lean-experiment, proof-of-value). **Retrofit recommendation per AC12:** shared `_bmad/bme/_vortex/templates/step-01-receive-contract.md` template closes 9 mechanism (i) cells (split receipt from validation across ≥2 sub-rounds with `Concept count: N/3` footers); per-workflow patches needed for 2 mechanism (ii) cells. **Vacuous-PASS surface:** 2 cells (production-monitoring R1 + R5; Production-readiness archetype per A39 §6.6 + §A41-8) — N_effective excludes these for R1/R5 (reduces to 8/8 PASS). **Reading-dependent (§A41-5):** §9.6 NEW ambiguity surfaced — OC-R5 strict (§A41-4 v4+ literal HALT marker) vs lenient (A24 §4.1 + lean-persona §8.7 implicit-wait precedent) divergence; main audit committed lenient for cross-audit comparability with A24 v3; A10 reviewers BOTH naturally defaulted to strict → strong empirical evidence §9.6 is operationally divisive (reproducibility validates main audit's deliberate methodology choice). v6+ refresh proposes Compliance Checklist amendment to clarify retroactive-vs-grandfathered semantics; if strict applies, R5 fails T1 at 100% as second bottleneck. **§A41-14 Layer 1 classification:** 7 workflow-only + 2 with agent-only-template + incomplete-placeholder validate.md (lean-experiment, proof-of-value); 0 standalone-workflows; cell count locked at 63. Echo-test stress-test: 9 workflows audited (≥3 threshold per A44 worst-case-risk); no echo-test boundary cases surfaced. **Pre-execution review (PAD 2 Option A escalation 2026-04-25):** V-pass single-layer Acceptance Auditor (13 patches) + 3-layer pre-exec adversarial review (Blind Hunter + Edge Case Hunter + Acceptance Auditor in parallel; converged on APPROVE-WITH-PATCHES with 7 patches applied to dossier 2026-04-26 — including §A41-2 scope tightening, Cell B arithmetic correction 9→12, mechanism-identity narrowing per Edge Case Hunter H2). **Task 5 execution (3 parallel scoring agents 2026-04-26):** Group 1 (behavior-analysis + experiment-design + lean-experiment, 21 cells), Group 2 (pattern-mapping + pivot-resynthesis + production-monitoring, 21 cells), Group 3 (proof-of-value + research-convergence + signal-interpretation, 21 cells). All 3 groups independently confirmed 100% R1-R6 compliance + 100% R7 fail rate. **A10 reproducibility pass (2 parallel blind LLM sub-reviewers 2026-04-26):** 3 cells selected per §A41-6 v5+ rule — behavior-analysis × R5 (reading-dependent expected-PASS), experiment-design × R7 (expected-FAIL), pivot-resynthesis × R7 (borderline: dual HC-schema). **Outcome: 3/3 pairwise A-vs-B agreement = 100%** (significantly exceeds A39's 1/3 = 33%; matches A25's 3/3 = 100%). Both reviewers diverged from main audit on R5 (chose strict over lenient) — calibration signal validates §9.6 as operationally divisive. **COI:** auditor-side methodology-frame COI 4-deep (Claude authored §A41-14 in A44 + §A41-2 in A41+A42 + A26 audit + A46 amendment, all 2026-04-25/26 same session). Step-file authorship clean (verified via git log — Claude has not edited audited step files). Operator-author COI: all 9 step files Amalik-authored. Mitigation: pre-exec 3-layer adversarial review + A10 100% pairwise agreement = strongest mitigation possible at v5 era. **Story 2.1 retrofit catalog additions:** 9 mechanism (i) cells (shared template) + 2 mechanism (ii) cells (per-workflow patches) = 11 cells via shared template + 2 per-workflow patches; combined with A24 retrofit candidates R7-V1 + R7-V2 = total 13 R7-pacing retrofit cells (mechanism i: 9; mechanism ii: 2; lean-persona oc-1-1 #4: 1; pre-existing A24 mechanism i: 2 from assumption-mapping + hypothesis-engineering already counted). **Story 2.3 Publication Gate (per §A41-9):** A26 = 1 portfolio audit (Vortex HC-cluster N=9). Combined with A24 (Vortex full N=4) + A39 (Gyre N=4 provisional) = ≥2 portfolio audits per §A41-9 threshold met. Publication Gate prerequisites: cell-centric retrofit completion remains gating per FR17. **Doctor smoke-check:** passes (only pre-existing errors — team-factory + version drift; no new errors caused by report file). **§9 Rubric Ambiguities Surfaced:** §9.1-§9.5 carry-forward from dossier (resolved by A46 v5.1 amendment for forward audits); §9.6 NEW (R5 strict-vs-lenient — operationally divisive per A10 calibration signal). **Total atomic edits across A26 lifecycle:** spec authoring + V-pass 13 patches + 3-layer pre-exec convergence (BH+EC+AA APPROVE-WITH-PATCHES) + dossier 7 patches + Task 5 execution (3 parallel scoring agents) + A10 100% pairwise + report assembly = ~30 atomic operations. Story file: [oc-vortex-hc-schema-pattern-audit-a26.md](../implementation-artifacts/oc-vortex-hc-schema-pattern-audit-a26.md). Sample-cell dossier: [oc-vortex-hc-schema-pattern-audit-a26-sample-cells.md](../implementation-artifacts/oc-vortex-hc-schema-pattern-audit-a26-sample-cells.md). Final audit report: [convoke-report-operator-covenant-audit-vortex-hc-cluster-2026-04-26.md](convoke-report-operator-covenant-audit-vortex-hc-cluster-2026-04-26.md). | 2026-04-26 | 1.12 | vortex |\n| A46 | **§A41-2 stated-scope clarification — single-rule amendment (sub-version v5.0 → v5.1).** Compliance Checklist §A41-2 amended with explicit **Scope paragraph** restricting hybrid counting (≤3 sub-fields → 1 compound; ≥4 → N concepts) to **HC/GC contract-schema enumerations only** (HC1/HC2/HC3/HC4 frontmatter + body sub-sections; GC1/GC2/GC3 contract sub-fields). Out-of-scope structures explicitly excluded with examples: (a) markdown tables used as operator-input forms; (b) category checklists / option enumerations not under contract sub-fields; (c) sentence templates with inline `[bracketed]` placeholders (count as 1 compound regardless of placeholder count); (d) cross-workflow named references in prose. Out-of-scope structures fall under §2.6 general novel-concept rubric (1 compound charitably / N strict). **Threshold rule UNCHANGED** (≤3 → 1 compound; ≥4 → N concepts; structure-count fixes the reading). In-scope/out-of-scope examples block added (4 in-scope: A39 §4.2 GC1 Stack Profile + A26 dossier Cell A HC4 frontmatter + HC4 body + hypothetical HC2 ≤3-sub-fields; 4 out-of-scope: A26 dossier Cell A behavior-observation table + Cross-workflow Wade refs + Cell C Riskiest Value Assumption checklist + Cell C Value Hypothesis Statement template). **Origin:** A26 pre-execution 3-layer review 2026-04-26 (Blind Hunter H2 + Edge Case Hunter C1+C2 + Acceptance Auditor MED #6 convergent finding) — the 4 out-of-scope structures were each being mis-counted under §A41-2 in A26 dossier's first-pass verdicts; A26 dossier patched to restrict scope with §9.1 forward-propagation note flagging the need for formal Compliance Checklist amendment. A46 is that amendment. **Forward-only:** v5.1+ audits (audit `created` ≥ A46 ship 2026-04-26 git-commit timestamp) apply amended rule; pre-A46 audits (oc-1-1, A24, A39, A25, A44, A26-as-of-A46-ship) stay locked at original §A41-2 reading per §A41-13 + G4 mitigation gate. **A26 mid-execution interaction (PAD 1):** A26 ships under v5.0 per §A41-13 mid-execution-stays-locked rule; A26 dossier's §9.1 footnote stands as historical record of when the ambiguity was caught. Forward audits (Forge / Helm / future Vortex re-audits) cite A46 directly. **Pre-execution review (PAD 2 → V-pass + R1 only — narrow-scope rigor per A44 retro lesson):** V-pass single-layer Acceptance Auditor + R1 3-layer parallel (Blind Hunter + Edge Case Hunter + Acceptance Auditor); pre-execution adversarial review NOT triggered unless V-pass surfaces ≥3 HIGH findings. **V-pass (single Acceptance Auditor):** 3 patches applied — CRITICAL-1 (a45.md → a46.md filename in Output Files), HIGH-1 (AC1 phrasing \"immediately following\" → \"positioned after the threshold rule paragraph\"), HIGH-2 (Scope paragraph extended with edge-case clause for non-enumerated structures + future A47+ extensibility note). 2 HIGH findings (< 3 threshold) → pre-exec NOT escalated per PAD 2 contingency. **R1 (3-layer parallel BH + EC + AA):** 4 patches applied — EC CRITICAL-1 (nested-object frontmatter sub-keys: count root-level field once, not nested keys), EC CRITICAL-2 (array-valued fields: count once regardless of array length), EC CRITICAL-3 (Steps Overview tables + workflow-root file catalogs explicitly out-of-scope, count via §2.6), BH framing-honesty patch (Scope paragraph framed as material scope restriction, not \"clarification of original intent\"; A26-empirical origin of carve-outs disclosed). **AA verdict: APPROVE** (all 9 ACs PASS; cross-rule coherence with §A41-1, §A41-3, §A41-5, §A41-13, §A41-14 verified sound). **R2 NOT triggered** per code-review-convergence rule (R1 patches were content clarifications + 1 framing patch; no structural rewrites; no new HIGH-severity contradictions). **Total atomic patches: 7 across V-pass + R1.** **COI:** auditor-side methodology-frame COI 3-deep (Claude authored §A41-2 original rule in A41+A42 ship 2026-04-25; A26 pre-exec dossier that surfaced ambiguity 2026-04-26; A46 amendment 2026-04-26). Self-serving-Scope-paragraph risk explicitly tasked to R1 Edge Case Hunter (find edge cases the Scope paragraph doesn't cover but should — XML attribute lists, JSON key enumerations, nested-object sub-keys, etc.). **Worst-case risk:** Scope paragraph too narrow → future audits encounter out-of-scope structure not covered by examples → revert to ad-hoc judgment until A47+ extension. Forward-only application makes this recoverable for v5.2+ without invalidating A46 verdicts. **ID note:** A45 was already allocated to \"AC-template prose-link rule for 'no broken links' ACs\" (§2.3 Fast Lane row) before this amendment was named; renamed to A46 to avoid collision. Story file: [oc-a41-2-scope-clarification-a46.md](../implementation-artifacts/oc-a41-2-scope-clarification-a46.md). Compliance Checklist amendment: [convoke-spec-covenant-compliance-checklist.md](convoke-spec-covenant-compliance-checklist.md) §A41-2 body + §Revisions row. | 2026-04-26 | 0.25 | convoke |\n| A44 | **Layer 1 + operator-facing semantics rework — supersedes A35+A36 reverts; ~57 atomic patches across V-pass + pre-exec + R1 rounds (full A41+A42 rigor).** New §A41-14 sub-section added to Compliance Checklist `## A41-Clarifications` (between §A41-13 and `## Revisions`); 3 cross-references added at §\"Three-layer audit scope\" (§2.4 Layer 1 5-category amendment), §\"Operator-facing vs agent-facing text\" (echo-test pointer), §\"Workflow-inherited concepts\" (§2.6 standalone-workflow independence); §Revisions row added. **§A41-14 codifies 5-category workflow-root file classification** (standalone-workflow / agent-only template / agent-only SKILL.md / incomplete placeholder / structural anomaly) grounded in filesystem survey of `_bmad/bme/` (2026-04-25: 7 standalone-workflows verified via `grep -r 'type: single-file'`, 19 templates, 6 SKILL.md, 9 placeholders, 1 anomaly = 42 files), **echo-test for operator-facing-vs-agent-facing classification** with 8 enumerated boundary cases (frontmatter, YAML comments, HTML comments, `` tags, fenced code blocks with `>`, `Note:` blocks, Steps Overview tables, multi-line operator prompts mixed-concern + nested agent blocks), **§2.6 inheritance rules per category** (standalone-workflows independent — concept budget computed fresh, NOT aggregated with parent workflow.md; reference-dependencies permitted with audit flag), **catch-all rule** for files not matching 5 categories (flag in §9 Rubric Ambiguities), **multi-criteria precedence rule** (status > type > naming, with deferred+excluded conflict resolution), **case-sensitivity rule** + dotfile exclusion, **cross-workflow audit-report aggregation template** (side-by-side per-file headers per A25 v3/v4 precedent — NOT summed; skill-level worst-case aggregation across files), **cascade termination interaction with §A41-11** (per-file at Layer 1; siblings not auto-included; per-file T1 delta tracking — no net-zero terminations), **forward-only application for v5+ audits** with sub-day version-pinning rule (use git-commit timestamp of A44's Checklist amendment as v5 cutover) and verdict-lock + reasoning-lock for pre-A44 audits (v5+ caveats may contextualize but not invalidate). **A35+A36 supersession:** A44 corrects A35+A36's failure mode (naive co-location heuristic — `validate.md` files were assumed sibling companions when they are actually independent standalone workflows per `type: single-file` frontmatter). A44 is evidence-grounded (filesystem survey before spec; categorization rules cite frontmatter content + grep results). **Critical R1 finding (Edge Case Hunter empirical verification):** P44 corrected `empathy-map/validate.md` operator-visible concept count from spec's claim of 4 to actual 5 (Validation, Evidence Sources, Specificity, Actionability, Empirical Grounding); inheritance-independence logic unchanged (5 ≠ 8 aggregate). **Pre-execution review (Option A full A41+A42 rigor):** V-pass (1 layer Acceptance Auditor, 21 patches) + 3-layer pre-exec adversarial review (Blind Hunter + Edge Case Hunter + Acceptance Auditor in parallel; 16 HIGH + 14 MED + 15 LOW raw → 12 HIGH + 10 MED = 22 patches applied + 1 typo correction \"8 → 7 standalone-workflows\"). **Post-execution R1 review (3-layer parallel):** 14 HIGH + 15 MED + 16 LOW raw → 14 patches applied (P44 empirical correction + P45 sub-day timestamp + P46 verdict-lock semantic + P47 categories-as-primary reframing + P48 deferred+excluded resolution + P49 catch-all × anomaly overlap + P50 §A41-3 ordering + P51 skill-level verdict aggregation + P52 per-file T1 delta + P53 reference-dependency format + P54 prose marker context + P55 dotfile exclusion + P56 nested agent blocks + P57 non-comment line counting). **R2 NOT triggered per code-review-convergence rule** (R1 patches were content clarifications + 1 empirical correction; no structural changes; no new HIGH-severity contradictions introduced). **Acceptance Auditor verdict:** ✓ APPROVE — all 12 ACs verified COMPLETE; cross-coherence with §A41-1..§A41-13 sound; §Revisions row format matches A41+A42 precedent; COI mitigation credible. **PAD 1 (review depth):** RESOLVED → Option A (full A41+A42 rigor) given A35+A36 prior failure. **PAD 2 (numbering):** RESOLVED → §A41-14 (slot verified open). **COI:** auditor methodology-frame COI (Claude authored A44 spec + Compliance Checklist amendment in same session); pre-exec 3-layer adversarial review + post-exec R1 3-layer review = binding mitigation. **Forward-only application makes A44 irrevocable** for pre-A44 audits if external parties object post-ship; v5+ rules can be amended via future methodology revision (A45+) for prospective audits. **Worst-case risk:** echo-test misclassification could systematically affect v5+ audits — recommend testing against ≥3 real workflow files in next v5+ audit application. ~16 LOW findings deferred (operational clarity / future-proofing): audit treatment enforcement, case-sensitivity portability, normal-path interpretation refinement, `_deprecated/` path special handling, structural-anomaly N=1 deprecation rule, external-perspective check for echo-test bias, workflow-only directory file-by-file ls verification, markdown table parser robustness, A39 provisional documentation, mid-execution audit completion edge case, survey grep commands embedded for reproducibility, §A41-1 / §A41-12 cross-reference to §A41-14 single-skill audit interaction, pre-A44 audit reports update with §A41-14 cross-reference. Story file: [oc-layer1-operator-facing-rework-a44.md](../implementation-artifacts/oc-layer1-operator-facing-rework-a44.md) (status: done — R1 convergence). Compliance Checklist amendments: [convoke-spec-covenant-compliance-checklist.md](convoke-spec-covenant-compliance-checklist.md) §A41-14 + 3 cross-references + §Revisions row. | 2026-04-25 | 1.4 | convoke |\n| A25 | **Decision-support archetype audit supplement (calibration-case per §A41-12) — A10 GATE CLEARED at 3/3.** Locked-methodology application of canonical OC-R1..OC-R7 (Compliance Checklist lines 90-96) to `bmad-portfolio-status/step-01-scan.md` (1 skill × 7 rights = 7 cells) per [convoke-report-operator-covenant-audit-decision-support-supplement-2026-04-25.md](convoke-report-operator-covenant-audit-decision-support-supplement-2026-04-25.md). **Headline:** 4 N/A vacuous (R1/R2/R3/R5 — step-01 has no operator-decision branches), 3 PASS evaluable (R4 completeness + R6 next-action + R7 pacing reading-dependent per §A41-5). **A10 outcome:** 3/3 pairwise reviewer agreement under canonical rights — significantly better than A39's 1/3 (gate cleared at 100% per §A41-6 escape-clause cell selection: OC-R7 expected-FAIL + OC-R4 expected-PASS + OC-R6 expected-PASS, no borderline cells in matrix). **Cross-audit aggregate (per AC9 P4 — side-by-side, NOT summed):** decision-support archetype N=2 achieved (was 1 with enhance-backlog-only); single-sample-with-COI dependency **broken on archetype-diversity dimension** (decision-support for backlog management vs portfolio prioritization — distinct functions); operator-author dependency persists (both samples Amalik-authored — disclosed §8 Tier-0 per §A41-10). **Cross-audit insight:** OC-R7 verdict diverges between samples — enhance-backlog FAIL on qualify-menu density vs A25 PASS on auto-transit display step (no operator-input boundary at step-01 per §2.6 interaction-round semantics). Archetype-level signal: R7 violations cluster in operator-decision-rich UX (menus/forms), not in display-only UX. Actionable for Epic 2 Story 2.1 retrofit prioritization. **Methodology drift caught mid-execution:** spec V-pass R1 (10 patches P1-P10) used non-canonical 7-rights list (Right to revoke / Right to a sound mental model / Right to non-blocking failure are NOT in the Covenant); halted at execution time, P11 patch corrected to canonical OC-R1..OC-R7, re-scored 7 cells, re-ran A10 with canonical rights — gate cleared on first canonical pass. **Misprediction logged (per §A41-6 calibration-signal rule):** main auditor pre-gate predicted OC-R7 FAIL under strict per-step concept counting; both blind reviewers correctly identified §2.6 interaction-round semantics make step-01 OC-R7 budget moot; verdict committed to PASS reading-dependent per §A41-5, strict alternative + §9.1 ambiguity logged for §A41 future revision. **2 rubric ambiguities surfaced (§9):** (9.1) OC-R7 interaction-round vs per-step semantics for display-only steps; (9.2) §A41-9 portfolio-vs-calibration-audit Publication Gate counting clarification needed. **Gate-counting status:** PENDING §A41-9 clarification — does §A41-9 admit single-skill calibration-case audits toward the Publication Gate's ≥2-portfolio threshold, or only multi-skill portfolio audits? **Retrofit candidates from A25:** NONE (3/3 PASS on evaluable cells; per A25 calibration-case scope, no archetype-level T1 trigger). **convoke-doctor gate:** passes (only 2 pre-existing errors — BUG-3 add-team + BUG-4 version drift — neither caused by A25 file). **COI:** auditor-side methodology-frame COI (Claude authored A25 spec + report + §A41-Clarifications all in same session — meta-COI flagged) + operator-author COI (Amalik authored both samples). Story file: [oc-decision-support-archetype-audit-a25.md](../implementation-artifacts/oc-decision-support-archetype-audit-a25.md) (status: V-pass R2 complete + executed; 11 spec patches P1-P11 across V-pass rounds). | 2026-04-25 | 3.2 | convoke |\n| A41+A42 | **Publication Gate Definitional Rigor (A41) + Covenant Epic Cell-Centric Refactor (A42) — bundled.** Methodology-revision shipping 13 Pre-Author Decisions + **13** net-new Compliance Checklist clarifications (§A41-1..§A41-13 — count updated from 10 per R2 review; §A41-11 cascade termination + §A41-12 A29 single-skill exemption + §A41-13 cell-mechanism naming stability added in R1 patches) + 16-surface-point Epic refactor from skill-centric/right-centric to cell-centric retrofit semantics + 6 sibling-artifact forward-pointer markers. **Resolves 5 HIGH + 4 MEDIUM A40 R2 findings + 6 A39 R2/R3 ambiguities** *(count corrected from 7 to 6 per R1 review BH-M4 — A39 R1 surfaced 5 ambiguities + R2 added 1 implicit-wait composition rule = 6, not 7).* Locks: cell-vs-right architectural decision (CELL-CENTRIC per A24 §5 team × Right precedent + A39 cell-mechanism naming); A10 metric (pairwise A-vs-B blind only); version-pinning algorithm (v3 pre-A41, v4 post-A41); A39 forward-only application (no retroactive credit; v4+ refresh path); compound-counting hybrid rule (≤3 sub-fields = 1, ≥4 = N); R1 strict-per-Loom for enumerated-options menus; vacuous-PASS N_effective semantics; OC-R5 strictness convergence forward-only; reading-dependent verdict structurally distinct from borderline IF (a)/(b)/(c) conditions hold; A10 cell selection requires reading-dependent or borderline expected-PASS; implicit-wait + downstream-explicit-wait composition requires consumption-test; A28 v2 ≥2 steps default for Production-readiness archetypes; portfolio audit definition + cross-cutting exclusion rule; **COI Mitigation Tier Taxonomy (Tier-0 disclosure-only / Tier-1 blind-sub-reviewers / Tier-2 external-review)** with explicit Publication Gate eligibility rules. **Pre-execution review history:** V-pass (1 layer, 11 patches: 2 critical + 4 enhancement + 5 minor) + 3-layer adversarial review (Blind Hunter + Edge Case Hunter + Acceptance Auditor; 13 HIGH + 12 MED + 5 LOW after dedup; ~22 patches applied, including 2 new PADs added to authorize previously un-PAD'd methodology rules). **Post-execution review history:** R1 (3 layers, 12 HIGH + 12 MED + 10 LOW after dedup; ~25 R1 patches applied — added §A41-11 Cascade Termination + §A41-12 A29 single-skill exemption + §A41-13 cell-mechanism naming stability + AC7 A39 status revert + FR17 COI verbatim alignment + cascade cross-ref fix + 3 example bugs fixed + heading rename + §Revisions v4 row); R2 minimal (1 Edge Case Hunter, focused on R1-patch-induced contradictions per A39 R2 precedent — verdict CONVERGED-with-R3-recommendations); R3 = 8 patches applied directly (Epic→§A41-13 xref + §A41-3 deferral-resolution mechanism + 10→13 count updates across spec/backlog/preamble + FR17/Story 2.3 \"each individually\" verbatim + §A41-13 PAD-1-extension tag). **Total ~66 atomic patches across V-pass + pre-exec + R1 + R2 + R3 review rounds.** Pre-exec review caught what V-pass missed: meta-COI (author writing rules governing own prior work); methodology authority gaps (AC4 COI tiers + AC2 item 8 A28 v2 lacked PAD authority — promoted to PADs 12+13); 4 wrong file:line citations; insertion-point geographically impossible; AC1 surface-points 9→16 expansion. R1 caught 12 HIGH including AC2 item 6 (A29 single-skill exemption) silently dropped + AC7 (A39 NO CHANGE) overstepped + 3 fabricated/contradictory examples. R2 caught 4 stale-count contradictions (10 vs 13 sub-subsections) + 3 partial R1 fixes. **Downstream consumers:** A39 Gyre Covenant audit stays in `done — provisional A10` per PAD 4 forward-only (A41 specifies forward rules; doesn't retroactively bless A39's Tier-1-attempted-but-failed mitigation). Path to A39 clearance: v4+ refresh under A41-clarified rubric achieving Tier-1 clearance OR Tier-2 external review per §A41-10. Future Gyre/Forge/Helm v4+ audits use A41 rubric directly. **A39-D2 + A39-D4 RESOLVED** (reading-dependent partial-credit + A10 cell selection borderline). **A39-D1 + A39-D3 REMAIN OPEN** (≤2-sentence cap + Scout R6 re-eval — pending v4+ refresh; A41 did NOT add methodology amendments for these). **COI:** auditor-side methodology-frame COI (Claude authored both A39 spec + A41+A42 spec) + operator-author COI (Amalik authored Convoke v3.0 module structure audited in A39); pre-exec review explicitly flagged this meta-COI as BH-H6. **Story file:** [oc-publication-gate-rigor-a41-a42.md](../implementation-artifacts/oc-publication-gate-rigor-a41-a42.md) (status `ready-for-dev` post-pre-exec patches; execution + post-exec R1 review proceed in same session). **Unblocks:** Epic 2 Story 2.3 Publication Gate operational evaluability — gate now mechanically clearable per A41 §A41-9 (portfolio audit definition) + §A41-10 (COI mitigation tier eligibility). | 2026-04-25 | 1.4 + 1.8 = 3.2 | convoke |\n| A39 | **Gyre Covenant audit (provisional — A10 GATE NOT CLEARED; R1+R2 code reviews applied + Coach R5 verdict overturn cascade)** — locked-methodology application (A10 + A28/A29 Selection Discipline) to 4 Gyre workflows (Scout/stack-detection step-01, Atlas/model-generation step-01, Lens/gap-analysis step-01, Coach/model-review step-01) × 7 Operator Rights = 28 cells per [convoke-report-operator-covenant-audit-gyre-2026-04-25.md](convoke-report-operator-covenant-audit-gyre-2026-04-25.md). **Provisional headline (post-R2):** T1 *would* fire on TWO rights at 50% compliance each: **Right to a default** (2/4 — Scout multi-service + Coach Review Mode menu) AND **Right to pause** (2/4 — Scout single-service auto-decide + Coach §4 dangling deferred-review prompt; Coach R5 verdict overturned PASS → FAIL in R2 per file evidence verification — the deferred-review prompt at line 60 is verifiably dangling, no halt marker, §5 wait fires unconditionally; canonical \"prompt-without-wait\" R5 FAIL pattern; original PASS rested on a structurally false composition claim now corrected). All 4 other rights compliant under main audit reading: R2/R3/R4/R6 100% explicit, R7 100% under broader §2.6 reading (reading-dependent — strict reading would fire T1 on R7 too at 75% fail rate). **PASS taxonomy (post-R2):** of 24 PASS cells, 17 explicit + 4 vacuous (Atlas/Lens R1+R5) + 3 reading-dependent (Scout/Atlas/Coach R7); 4 FAIL. **A10 outcome:** 1/3 pairwise A-vs-B agreement (the only A10-grounded metric per oc-1-1 §2.5; R2 patch reverted R1's non-A10-grounded alternatives). A10 failure validates §9 ambiguities **#1 + #4** as A10-tested-divisive; #2 + #3 + #5 are methodology-level surfacing only. **Retrofit scope additions PROPOSED (NOT committed):** R1-G1 Scout multi-service default-suggestion + R1-G2 Coach Review Mode default-suggestion + R5-G1 Coach §4 dangling-prompt halt-and-wait + R5-G2 Scout single-service-confirm prompt = **4 candidate Epic 2 Story 2.1 retrofit cells** (was 2 pre-R2; +2 from R5 cascade). Net delta vs oc-1-1 in Gyre retrofits overall: +1 cell (R1-G1 supersedes #10, R5-G1 supersedes #11, R1-G2 + R5-G2 net-new but R5-G2 was previously dropped from retrofit per pre-R2 dilution argument; net = +1 per R2 patch P13 corrected math). **5 rubric ambiguities (A41 inputs):** (1) compound-concept counting for GC contracts; (2) OC-R5 strictness divergence; (3) vacuous-PASS methodology status; (4) R1 rubric application to enumerated-options menus; (5) Discovery vs Production-readiness archetype distinction. Plus **R2 added: (6) implicit-wait + downstream-explicit-wait composition rule needs explicit consumption-relationship test** (per Coach R5 overturn — the previously-cited composition pattern needs a \"does downstream wait halt for upstream prompt's specific response?\" test to prevent future composition-claim drift). **Gate-counting-status:** PENDING A41 + v4+ A10 clearance. **COI status (R2 simplified):** auditor-side = partial mitigation (A10 sub-reviewers in place; gate failed); operator-author = disclosure-only mitigation (no external check) — all 4 step-01 files authored by operator (Amalik) 2026-03-21; A41 should specify external-check requirement type. *(R2 patch dropped earlier \"tier-0/tier-1+\" vocabulary as undefined.)* **Cross-team observation:** Gyre does NOT replicate A24's Vortex HC-schema-at-step-01 pacing pattern under broader reading; DOES replicate under strict reading at 75% fail rate. **Code review history (final):** Round 1 = 14 patches (content-only) + 4 deferred + 3 dismissed + 3 DNs surfaced; Round 2 = 16 patches (revert + surface-completeness + mechanical) + Coach R5 verdict overturn cascade (~6 cell-level edits); Round 3 = 1 patch (R2-P1 residual at §8 G1) — **CONVERGED**, R4 not recommended. Total: 31 atomic edits across 3 review rounds. Story file: [oc-gyre-covenant-audit-a39.md](../implementation-artifacts/oc-gyre-covenant-audit-a39.md) (status: **done — provisional A10 post-R3 sanity-check**). Full review findings logged in story spec §Review Findings (R1 + R2 + R3). Spec authored + V-pass + execution + R1 + R2 + R3 all completed 2026-04-25 same session. | 2026-04-25 | 2.1 | gyre |\n| BUG-6 | **Story 3.1 skill-dir test-fixture lag — RESOLVED.** 8 pre-existing integration test failures discovered at Story 3.4 dev-story Task 0.1 baseline gate. Story 3.1 migrated Vortex agents from flat `.md` files to `/SKILL.md` skill-dirs but did not update integration test fixtures referencing the old layout. **Failures (8):** `tests/integration/fresh-install.test.js` (2 — \"creates agent files in the correct location\" + \"skill files reference correct agent path\"); `tests/integration/convoke-doctor.test.js` (4 — \"empty agent files\" + \"excluded_agents (U8) info-line\" + \"governance softWarning exit-code\" exit + summary line); `tests/integration/upgrade-cli-e2e.test.js` (2 — `assertPostUpgradeState()` iterates `AGENT_FILES` legacy export, both top-level + second-update-cycle paths). **Fix:** mechanical path-expectation updates across 3 test files. (a) `fresh-install.test.js`: 4 sampled-agent paths `.md` → `/SKILL.md` in \"creates agent files\" test; 1 wrapper-content reference; 4 vacuously-passing references in \"agent content matches package source\" describe block (was silently skipping via `if (fs.existsSync(srcPath))` guard; now actually exercises byte-comparison). (b) `convoke-doctor.test.js`: 3 fixture-creation loops switched from flat-file write to `ensureDir(/) + writeFile(/SKILL.md)`; \"empty agent files\" test changed import from `AGENT_FILES` to `AGENT_IDS`. (c) `upgrade-cli-e2e.test.js`: import switched `AGENT_FILES` (legacy) → `VORTEX_SKILL_PATHS` (post-3.1 export); loop iterator + error message updated. **0 production code touched.** Surfaced during `/bmad-dev-story v63-3-4` Task 0.1 (per Task 0.1 spec: \"If any test fails, HALT and triage — Story 3.4 starts on green or it doesn't start\"). Side-commit handled off Story 3.4 branch per Story 3.3's R2-A1 + BUG-5 pattern — keeps Story 3.4 scope-pure (Story 3.4 itself is FR22 dual-distribution parity verification; touching install-related test fixtures crosses AC7 boundary). Full gate: `npm run test:integration` 79/8 → 87/0 (+8 newly passing, 0 regressions); `npm test` unit suite unchanged at 1423/0/1; lint clean (test files only). Story 3.4 unblocked for Task 0.1 retry post-commit. RICE 5.6 (R:7 — every dev running `npm run test:integration` was hitting these; I:2 — green-baseline restoration; CF:80% — mechanical fix verified green; E:2 — 30min draft + 1 commit). | 2026-04-25 | 5.6 | convoke |\n| BUG-5 | **v3.0.x chain-walker non-determinism in `registry.js` — RESOLVED via Path A (delete dead parallel entry).** Pre-fix: `getMigrationsFor('3.0.5')` had two `fromVersion: '3.0.x'` entries — `3.0.x-to-3.1.0` (taxonomy) and `3.0.x-to-4.0.0` (v6.3 direct-load); Array.find-style `for...of/break` selected the first registry-order match. Documented as \"silent miss of 4.0 breaking migration\" — actual mechanism was different and worse: chain-walker correctly reached 4.0 via `3.0.x-to-3.1.0 → 3.1.x-to-4.0.0`, but a registry reorder would silently route 3.0.x users via the dead `3.0.x-to-4.0.0` entry, **bypassing the artifact-governance taxonomy seed**. Story 1A.4 D2 added all three parallel entries (3.0.x/3.1.x/3.2.x) for \"completeness\" without awareness of the taxonomy-skip footgun. **Fix (Path A):** deleted the dead `3.0.x-to-4.0.0` registry entry + module file (3.0.x users reach 4.0 via the existing 3.1.0 hop, applying both migrations); rewrote registry.js comment block to document the chain-via-taxonomy intent + pin INVARIANT; added invariant test in `registry.test.js` (`Registry invariants > at most one migration per fromVersion (BUG-5 guard)`); redirected sibling comment refs in 3.1.x/3.2.x migration files to point at `3.3.x-to-4.0.0.js` base; tightened existing chain test description from \"(parallel entry for 3.0.x users)\" to \"(chain via 3.1.x for taxonomy)\"; tightened registry.js:82 description on `3.0.x-to-3.1.0` to mark it as the required hop. Round 1 review (Blind+Edge+Auditor): 0 HIGH after triage (all 3 Blind Hunter HIGHs disprovable on cross-reference — sibling files require `'./3.3.x-to-4.0.0'` not the deleted file; chain still routes 3.0.x correctly; v4.0 hasn't shipped so no user has applied the now-deleted migration). 4 patches applied this round (P1 BUG-5 row → §2.5; P2 Change Log entry; P3 test description rename; P4 registry:82 comment tighten). 4 defers logged to `deferred-work.md`: D-A1 broaden invariant via `matchesVersionRange` (currently fromVersion-equality only catches the BUG-5 class), D-A2 `registry.MIGRATIONS` mutation safety in tests, D-A3 phantom `migration_history` reference (theoretical — v4.0 unshipped), D-A4 doc-nit phrasing tweaks. Convergence at Round 1; Round 2 not triggered (content-only patches). Full gate: `npm test` 1424 tests / 1423 pass / 1 pre-existing skip; +1 test (BUG-5 guard); lint clean. Highest-priority Bug pre-fix per RICE 7.2 (R:3 I:3 CF:80% E:1) — exactly the catastrophic-silent-failure class 4.0 release gating exists to prevent. | 2026-04-25 | 7.2 | convoke |\n| I71 | **Migration ADR phase — narrow `git add` scope to ADR paths only** — `scripts/migrate-artifacts.js:397-404` + `scripts/lib/artifact-utils.js:2112` amended. Pre-I71: broad `git add _bmad-output/planning-artifacts/` staged every modified/untracked file under that dir; BUG-2 fix amplified the consequence (diff-check sees unrelated staged changes and commits them under the \"chore: generate governance convention ADR\" message silently). Post-I71: stages only `adrPath` + (when applicable) the superseded old ADR path. `supersedePreviousADR` return-contract changed from `true`/`false` to `oldADRPath`/`false` to enable the caller to narrow the stage set — strict `assert.equal(result, false)` test preserved (not-found case unchanged); no other callers exist to break. `git add --` end-of-options separator defensively guards against dash-prefixed filenames. **2 rounds of code review: 0 HIGH, 0 patches needed** — Round 1 ad-hoc pass (5 Blind Hunter concerns all disproved by Edge Case Hunter's project-read verification — absolute-paths-with-cwd safe, return-contract single-callsite, duplicates impossible with hardcoded filenames, sibling artifacts written in separate injection phase, falsy-preservation on non-empty paths). Round 2 formal skill pass validated convergence: same 0-HIGH outcome + 1 new defer (D2 — BUG-2 spec `spec-bug-2-adr-idempotent-noop-commit.md:104` had a stale `[Review][Defer]` entry marking the narrowing as \"Not in scope\"; post-I71 this item is resolved). D2 was fixed **directly at source** (BUG-2 spec line 104 annotated `[Defer→Resolved]` with I71 closure reference) rather than logging a defer about a defer — cleaner closure and avoids writing to `deferred-work.md` concurrently with parallel v6.3 track session. Convergence reached both rounds. 1 pre-existing defer logged: stale doc reference in shipped-story historical artifact `_bmad-output/implementation-artifacts/ag-3-4-adr-supersession.md:41` still mentions old broad-stage pattern — not load-bearing per doc-immutability convention. Full gate: `npm test` 1188/1188 pass; `tests/integration/migrate-artifacts-idempotency.test.js` 3/3 pass (T4 idempotency unaffected); `tests/lib/migration-execution.test.js` 79/79 pass (supersedePreviousADR return-contract change preserves all existing assertions). Ship count today: 3. | 2026-04-21 | 3.2 | convoke |\n| I69 + I70 | **`portfolio-engine.js` CLI argument validation bundle** — two silent-failure patterns fixed in `scripts/lib/portfolio/portfolio-engine.js:465-497`. **I69:** `--sort ` now validates against whitelist (`alpha`, `last-activity`); prints valid values + exit(2) on invalid or missing. **I70:** `--filter` now requires a value (via `startsWith('--')` flag-discrimination to preserve legitimate single-dash values like `-legacy`); exit(2) + stderr on missing. **2 rounds of code review applied 2 MEDIUM patches (0 HIGH):** Round 1 ad-hoc patch corrected prefix-asymmetry regression (initial `startsWith('-')` rejected legitimate single-dash filter values; corrected to `startsWith('--')` for filter, whitelist-only for sort). Round 2 formal skill pass applied P1 — `--filter` error message disambiguation: split undefined-case from flag-like-value case. User passing `--filter --markdown` now sees `\"--filter requires a value; got '--markdown' which looks like a flag. Quote the value if it must start with '--'.\"` rather than generic `\"--filter requires a value.\"`. Round 2 patch was content-only (text + split conditional, no new files / renamed functions / altered control flow) → Round 3 not eligible per convergence rule. 6 LOW defers logged: equals-form `--sort=value` not supported (pre-existing), duplicate flags silently use first (pre-existing), empty-string/whitespace/flag-like single-dash filter accepted (minor UX), glob-star handling (pre-existing), skill wrapper operator-typed prefix error UX (out of scope), magic number exit(2) (style). Full gate: `node --test tests/lib/portfolio-engine.test.js` 59/59 pass both rounds; manual smoke tests confirm all exit-code paths including new disambiguated message. | 2026-04-21 | 2.7 + 2.7 | enhance |\n| A30 | Covenant Operator Epic 2 T1/T2 threshold boundary semantics shipped — `convoke-epic-operator-covenant.md` §Retrofit Trigger Rule gained a \"Threshold boundary semantics\" paragraph (after T1/T2 definitions) clarifying strict-less-than intent: exactly 70% (or 75%) does NOT fire — measurement must drop below the threshold. Concrete example: at N=10 audited skills, 7/10 PASS = 70.0% does NOT fire T1; 6/10 = 60.0% fires. Resolution path (b) chosen over path (a) — preserves existing `<` symbol throughout T1/T2 and codifies intent rather than flipping to `≤`. Originally bundled with A42+A43; A42 reverted post-Round-1 review (rescoped — see Change Log 2026-04-25), A43 shipped clean alongside A30. Round 1 review: 0 HIGH on A30 specifically, 2 LOW (N=10 example doesn't anchor to v1's N=4 baseline scale; example doesn't explicitly cite team×Right cell context — both non-load-bearing). Namespace: convoke `_bmad-output/planning-artifacts/` only, no code. | 2026-04-25 | 1.8 | convoke |\n| A43 | Epic 2 Story 2.3 secondary-channel approval authority defined — `convoke-epic-operator-covenant.md` Story 2.3 cleared-path AC amended to state blog-post publication is \"optional and at operator discretion — no additional approval gate beyond the Publication Gate already cleared above (secondary channel)\". Resolution path (a) chosen — operator is sole approval authority in Convoke's operating model; no second-party gate exists, so an \"additional approval\" requirement was structurally vacuous. Pre-amendment AC said \"requires separate approval\" without specifying WHO, leaving a governance loophole. Bundled-shipped with A30 (Round 1 review: 0 HIGH on A43; Blind Hunter raised a context-blind HIGH on the \"approval gate weakening\" framing — disproved by Edge Case + Acceptance Auditor passes confirming the change matches operator's resolution + Convoke's actual operating model). Namespace: convoke `_bmad-output/planning-artifacts/` only, no code. | 2026-04-25 | 1.4 | convoke |\n| A40 | Publication Gate coverage-breadth amendment — Epic 2 FR17 + dependency bullet + Story 2.1 AC + Story 2.3 Given-cleared/not-cleared now require BOTH (a) Story 2.1 retrofit completion AND (b) at least two audits covering distinct portfolios. Closes Victor's Blue Ocean standard gap (one-team publication claim is methodologically weak) and user-level trust standard (no over-generalization from single-team evidence). **Shipped as minimal amendment only.** Round 1 code review applied 9 patches adding definitional rigor (~300 words on \"portfolio audit\", \"locked methodology\", A10 scope, scope-of-gate statement). Round 2 code review caught 5 HIGH findings caused *by* the Round 1 patches (contradiction in \"locked methodology\" framing; A10 mis-scoped as portfolio-gate when A10 is skill-scoped; `convoke` cross-cutting portfolio satisfies gate trivially; \"substantially change\" undefined loophole; inconsistency across hunks) + 4 MEDIUM (gate-clear inconsistency 439/451 vs 403/FR17, \"no regressions\" undefined, retrofit cascade livelock, A29 single-skill exemption). Per `code-review-convergence` rule spirit — stop-patching-and-defer when review surfaces scope creep — Round 1 definitional expansions were reverted; minimal amendment shipped. Operational definitions deferred to **A41** (Publication Gate definitional rigor) as scoped follow-up. 4 Round-1 defers logged to `deferred-work.md`: \"worst-scoring rights\" undefined (pre-existing), rationale parentheticals style (pre-existing pattern), secondary-channel approval loophole (pre-existing), T1/T2 cascade interaction with ≥2 portfolio audits (scope follow-up). Namespace: convoke `_bmad-output/planning-artifacts/` only. | 2026-04-21 | 2.7 | convoke |\n| A33 | Covenant Checklist §2.6 glossary amendment — workflow.md-vs-step-01 scope [rescored 2026-04-19: 2.4→4.8]. Four new paragraphs appended to §2.6 \"Workflow-inherited concepts\": (1) **Workflow.md as \"earlier step\"** — concepts introduced in `workflow.md` (§2.4 Layer 1) count as pre-existing for all step files within the same workflow; (2) **Scope: operator-visible only** — inheritance applies to operator-visible workflow.md content only (concepts in `MANDATORY EXECUTION RULES` / `YOUR ROLE:` agent-facing blocks are neither counted at Layer 1 nor inherited), consistent with §\"Operator-facing vs agent-facing text\"; (3) **Inheritance unconditional w.r.t. Layer 1's own verdict** — even if workflow.md's Layer 1 OC-R7 verdict is FAIL, its operator-visible concepts remain pre-existing for step cells; §2.4 worst-case aggregation already captures composition at skill level; (4) **Anti-escape-hatch clause** — rule governs re-introduction not total budget; workflow.md's own operator-visible content must still pass OC-R7 at Layer 1 under existing §2.6 rules, no new threshold introduced. Resolves §9 ambiguity #5 from the 2026-04-19 Vortex audit (empathy-map step-01 reading-dependent PASS). Broader reading codified from natural reviewer behavior during the A24 A10 reproducibility gate (§7.1). Winston consultation 2026-04-20 rejected Option B (narrower reading) on four grounds: mismatches operator cognitive model; inconsistent with §2.4 Layer 1 classification; fights natural reviewer behavior; creates a compositional artifact. Round 1 adversarial review (Blind Hunter + Edge Case Hunter + Acceptance Auditor) surfaced 2 pre-flagged Ask-First intent-gaps (MANDATORY EXECUTION RULES scope; FAILing-Layer-1 inheritance) + 2 bad_spec findings (within-workflow qualifier; anti-escape-hatch grounding) + 8 defers; all resolved inline on pragmatic path (IG1 = operator-visible only; IG2 = unconditional inheritance). Audit report §9 ambiguity #5 annotated with resolution pointer. Namespace: convoke `_bmad-output/planning-artifacts/` only, no code. | 2026-04-20 | 4.8 | convoke |\n| A29 | Covenant audit Skill Selection rule — shipped as part of the `## Selection Discipline` bundle in the Compliance Checklist. Auditor MUST declare (1) structural dimensions relevant to audit scope, (2) per-pick classification inline in the report's scope section, (3) selection intent — **independent verification** (default; ≥1 variation required on primary dimension) vs **pattern verification** (homogeneous picks allowed; Executive Summary carries disclaimer) vs **mixed audit** (pattern cluster + independent variation; per-cell labels required). Winston-driven reframe: A24 was a correctly-motivated mixed audit (picks 1+3 twins for HC-contract pattern verification; pick 2 empathy-map as independent variation with template+validate scaffolding) that lacked a declaration vocabulary; A29 provides that vocabulary. Epic 2 Story 2.1 updated with retroactive A24 classification paragraph (forward-only application; retrofit scope unchanged). Round 1 adversarial review caught 2 HIGH findings on the initial re-labeling and triggered a correction to classify A24 as mixed, not pure pattern-verification. Namespace: convoke `_bmad-output/planning-artifacts/` only, no code. | 2026-04-20 | 4.8 | convoke |\n| A28 | Covenant audit Step Selection rule — shipped as part of the `## Selection Discipline` bundle. Each picked skill's audit MUST cover ≥2 steps OR explicitly scope to a single step with documented rationale — silent single-step is a methodology gap. Rationale examples accepted: scope-matching a prior single-step audit for cross-audit comparability; later steps run headless (no operator-facing surface). Circular rationale like \"step-01 is the highest-concept-density step\" explicitly forbidden — such claims presuppose multi-step evidence A28 is trying to skip. | 2026-04-20 | 3.2 | convoke |\n| BUG-2 | ADR generation idempotent no-op commit — `scripts/migrate-artifacts.js:398-404` no longer downgrades a legitimate re-run to a misleading `\"ADR generation failed\"` warning. Root cause: on re-run with byte-identical ADR content (same date + same stats), `git add` stages nothing and `git commit` errors with `\"nothing to commit\"`; the outer catch previously caught that and warned with exit 0. Fix (Winston path b — detect-and-skip no-op): after `git add`, probe `git diff --cached --quiet` with `err.status === 1` discrimination; on no-staged-diff log `\"ADR already current: (no changes to commit)\"`, on staged changes run the existing commit + log `\"ADR generated: \"`. Rejected path a (`--allow-empty` — pollutes git history) and path c (monotonic counter in ADR content — defeats idempotency). Aligns with existing check-then-act pattern in `supersedePreviousADR` (`scripts/lib/artifact-utils.js:2104`). Outer try/catch preserved so real ADR failures still degrade gracefully. T4 test suite updated: `ALLOWED_WARNING_PATTERNS` tightened to only the legitimate first-run \"Previous ADR not found\" warning (the two byte-identical-ADR allow-list patterns removed — their appearance now signals a genuine regression); positive `assert.match(result.stdout, /ADR already current/)` in test 3 locks in the no-op branch. 2 rounds of review applied 4 patches (0 HIGH): Round 1 discriminated `err.status === 1` from other git errors, added positive stdout assertion; Round 2 corrected comment inaccuracies (git's `--quiet` contract is \"non-0, non-1 = error\", not \">1\"; rethrown errors surface underlying messages but outer catch still prefixes \"ADR generation failed:\"). Convergence at Round 2 — comment-only patches, no structural changes → no Round 3 eligible. Full gate: `npm test` 1178/1178, T4 3/3. 2 items deferred: broad `git add _bmad-output/planning-artifacts/` can sweep unrelated staged changes (pre-existing; failure mode shifted from loud-error to silent-sweep post-fix), TOCTOU window between `git add`/`git diff`/`git commit` on concurrent invocations. 1 follow-up logged: **IN-63** (cross-day ADR filename collision — same stats on a different day produces two ADR files with byte-identical bodies apart from `**Date:**`). | 2026-04-20 | 5.4 | convoke |\n| I67 | Cross-platform `npm test` script glob expansion resolved — new `scripts/test-runner.js` (45 lines, no deps) recursively discovers `*.test.js` under each given root (skips `node_modules` + dot-prefixed dirs) and invokes `node --test` via `process.execPath` with the explicit file list. 4 `package.json` scripts rewired (`test`, `test:p0`, `test:integration`, `test:coverage`). Cross-platform by construction — works on cmd.exe, PowerShell, bash, zsh without any shell-glob expansion. **Architectural pivot mid-flight**: Winston's first-pass (path a1 — `node --test ` native recursion) failed empirically on Node <22.6 (dir-arg recursion was added 22.6.0); caught by pre-commit verification, Winston re-consulted, pivoted to path a2 (helper). 2 review rounds applied 7 patches total: oneshot pre-commit (3 patches — `process.execPath` over bare `node`, try/catch around `readdirSync`, signal-aware exit) → formal Round 1 adversarial (4 patches — `node_modules`/dot-dir skiplist + doc note on recursion semantics, `result.error` spawn-failure check, ENOTDIR ergonomic error when a file is passed as root, `128 + signum` POSIX signal exit). Convergence at Round 1 (0 HIGH). Full gate: `npm test` 1178/1178, `npm run test:integration` 85/85, `npm run test:p0` 642/642, `npm run test:coverage` 1905/1905 + 90.56% line coverage. 2 follow-ups logged: **IN-64** (add `windows-latest` to CI matrix) + **IN-65** (reconsider `engines: \">=22.6.0\"` during Convoke 4.0 — would delete this helper entirely via native dir-args). | 2026-04-20 | 4.2 | convoke |\n| A12 | Covenant OC-R7 doc-mapping double-count fix — clarifies that doc rule uses cumulative vocabulary (concepts introduced in earlier Covenant sections are pre-existing for later sections) and that example/anti-pattern illustrations don't count as novel if they illustrate an already-introduced concept. Code review Round 1 applied 3 follow-up patches (softened shipping claim, added Covenant preamble authoring contract, closed illustration loophole). Narrows OC-R7 failure surface; Section 1 passability depends on preamble contract. | 2026-04-18 | 6.3 | convoke |\n| A24 | Vortex audit expansion (IN-12) — v2 Covenant audit refresh scored 3 additional Vortex workflows (assumption-mapping, empathy-map, hypothesis-engineering) at step-01 under oc-1-1 §2.3 / §2.4 / §2.6 methodology verbatim. **T1 FIRES for Vortex × Right to pacing** at 25% compliance (1/4 PASS, N=4 ≥ 3 floor). 2 new retrofit cells added to Epic 2 Story 2.1 scope (assumption-mapping + hypothesis-engineering step-01), on top of carried-forward lean-persona retrofit #4. Shared architectural pattern identified: HC-schema-at-step-01 dumps 6-9 novel concepts in a single round, likely Vortex-wide. Report: `convoke-report-operator-covenant-audit-vortex-2026-04-19.md`. Single-reviewer limitation declared per A10 reproducibility gate; T1-FIRES is provisional pending 3-cell reproducibility pass. | 2026-04-19 | 2.4 | vortex |\n| A27 | Staleness pre-flight — Phase 1 — new `project-context.md` rule `staleness-preflight-for-backlog-pickup` with concrete evidence footer (3 drift events from 2026-04-19). Rule defines **four** checks (existence, dependency, code-anchor validity, semantic-anchor) with GREEN/YELLOW/RED verdict semantics + per-check examples. Four exemption classes: age (≤3 days), trigger-blocked (defer until unblock), parallel-tracks (no age exemption), no-cited-surface (structural). Cross-references sibling rule `spec-verify-referenced-files` for Check #3. Forward-looking note: I62 unblocks on ≥3 applications + ≥1 drift OR 2 weeks elapsed. 1 round of code review applied 11 patches — all HIGH/MEDIUM findings patched including dogfood catch: Round 1 caught THIS ship's own paper-trail drift (initial ship-record claimed a `bmad-help` reminder that had been reverted due to `.claude/` being gitignored — see Change Log correction). Shipped as rule-only; `bmad-help` integration deferred to Phase 3 (I63). | 2026-04-19 | 5.4 | convoke |\n| I64 | `runScript` helper (`tests/helpers.js:153`) return-shape hardened for `execFile` timeouts. Pre-I64: timeouts left `err.code = null`, which leaked out as `exitCode: null` and caused opaque `null !== 0` diagnostics in any CLI-integration test hitting a timeout (pre-existing bug surfaced by T4 Round 1 warning-guard). Post-I64: `exitCode` is always a finite integer (coerces null-but-errored to 1); two new fields `timedOut` (true iff execFile killed child for exceeding `timeout`) and `signal` (kill signal e.g. `'SIGTERM'`, else null) surface distinct timeout semantics so callers get actionable failure messages. Return shape documented in JSDoc contract. New `tests/unit/helpers.test.js` (4 tests) locks the contract: clean exit → exitCode 0 / timedOut false / signal null; non-zero exit → exitCode propagated / timedOut false; 200ms-timeout on hang script → timedOut true / signal SIGTERM / exitCode is finite integer ≠ 0; shape-test asserts all 5 keys present. Full gate: 1177 unit (+4) / 85 integration. First application of A27 staleness pre-flight — all 4 checks GREEN. | 2026-04-19 | 4.5 | convoke |\n| T4 | Migration idempotency CLI test — new `tests/integration/migrate-artifacts-idempotency.test.js` exercises `convoke-migrate --apply --force` against a real git-initialized fixture. After 1 round of code review (6 patches, 3 HIGH): hermetic `git()` helper (timeout + inline `-c core.hooksPath=/dev/null` / `commit.gpgsign=false` / `GIT_TERMINAL_PROMPT=0` — can't hang on polluted global config), tests 2+3 merged to drop cross-test state coupling, speculative stdout regex replaced with commit-count equality as the hard idempotency proof, tight `delta >= 2 && delta <= 3` bound on third-run commits, new `assertNoUnexpectedWarnings` guard with curated allow-list. Final: 3 tests covering first-run rename + commits, second-run no-op (exit 0 + zero new commits), third-run resumes on added ungoverned file. Convergence at Round 1 (no production code touched). 5 items deferred: migration meta-artifact re-flagging (original finding), **ADR byte-identical bug** (surfaced by Round 1 warning-guard — real bug), `runScript` null exitCode on timeout (pre-existing helper bug), 5-commit scan boundary, missing zero-ungoverned baseline test. | 2026-04-19 | 2.4 | convoke |\n| I50 | `--quiet` / `-q` flag shipped for `convoke-export` — suppresses per-skill success + skip lines on stdout; failures (stderr) and the single-line summary still emit. Threaded through `makeReporter({ quiet })` at `scripts/portability/convoke-export.js:166`; flag parsed at `:71`; help text updated. Batch dry-run output drops from 50 lines → 1. 6 new integration tests in `tests/lib/portability-cli-entry-point.test.js` covering: per-skill suppression on batch, `-q` alias, summary preservation, single-skill-mode suppression, help-text documentation, and `--quietz`-style unknown-flag rejection. Deferred through 4 SP-Epic retros (SP Epic 2 A3 → 3 → 4 → 5) — finally resolved. 1 round of code review applied 4 patches (0 HIGH): empty-batch \"Nothing to export\" now respects `--quiet` via new `reporter.isQuiet()` accessor; `--output`/`--tier` value-guards tightened from `--`-prefix to `-`-prefix (pre-existing bug widened by I50's short-flag intro); brittle `noisyLines.length > 5` replaced with relative `> quietLines.length`; `-q` alias test gained stderr-parity assertion. Convergence at Round 1. | 2026-04-19 | 2.7 | enhance |\n| T3 | End-to-end update CLI test — new `tests/integration/upgrade-cli-e2e.test.js` exercises the real `convoke-update --yes` child-process flow against a v1.7.x fixture (spans the 1.7 → 2.0 rename + 2.0 → 3.1 migrations). 4 tests: fresh-upgrade exit-0, full post-state verification (all AGENT_FILES + WORKFLOW_NAMES + skill wrappers for Vortex/Gyre/EXTRA_BME + agent-manifest.csv + version-stamped config + deprecated-agent cleanup), and a second invocation hitting refresh-only/up-to-date. Closes the gap the existing library-level upgrade tests + dry-run CLI smoke test left open. 3 items deferred to `deferred-work.md` (npm pack real install, user-authored custom agents, interactive prompt mode). | 2026-04-19 | 2.7 | convoke |\n| D8 | `_bmad/bme/README.md` now lists `config.yaml` under a new `## Files at _bmad/bme/ root` section — sits between Submodules (directories) and \"When to add here vs upstream\". Contributor orientation no longer misses the config file. Semantic separation preserved (Submodules stays directories-only). 1 round of code review applied 2 patches (both hunters converged on MEDIUM: initial \"Applies to the submodules above\" implied a cascade that doesn't exist — reworded as \"sibling, not a parent\" with code-path citation; \"Alongside this README\" lead-in added for root-files completeness). Convergence at Round 1 (0 HIGH). | 2026-04-19 | 7.5 | convoke |\n| D9 | `docs/README.md` created as docs index with Covenant pointer as the featured callout — AC #3's 4th discovery path now real. Contents table enumerates the 6 existing contributor-facing docs; cross-refs to repo README, bme README, and `project-context.md`. oc-1-5 Dev Notes `[Review][Defer]` line retired → `[Defer→Resolved]`. 1 round of code review applied 5 patches (broaden Covenant trigger, dogfood `derive-counts-from-source` on hardcoded counts, trim `development.md` description accuracy, close oc-1-5 paper trail, remove invented \"supporting BME specialists\" category). Convergence at Round 1 (0 HIGH). | 2026-04-19 | 9.0 | convoke |\n| A10 | Reproducibility gate for multi-skill Covenant audits — new §Reproducibility gate in Compliance Checklist spec. v2+ audits cover ≥3 cells (expected-PASS + expected-FAIL + borderline with hardness test), explicit 5-step audit sequence, threshold 100% at N=3-4 / ≥80% at N≥5, four-path failure-mode (revise / DISPUTED-exclude with N-recomputation / methodology-invalid / shrink-scope), three-way disagreement handling, gate-size-fixed-at-selection guard against N-inflation. 2 rounds of code review applied 9 patches (incl. 3 HIGH in Round 2: §10.5 factual correction, sequencing circularity resolved, DISPUTED-exclusion N recomputation). v1 audit §2.5, §10.2, §10.5 amended. 6 items deferred. | 2026-04-18 | 2.7 | convoke |\n| A5 | Research stories must use mechanical search protocol — new `project-context.md` rule `mechanical-research-enumeration`. Catalog/audit/inventory deliverables must enumerate via grep/glob, raw output as evidence. Origin: AG Epic 7 retro A1, Story 7.3 recurrence. | 2026-04-18 | 2.8 | convoke |\n| A15 | OC-R6 external-declared escape hatch — sixth Compliance Status value `N/A — external-declared ()` for skills wrapping git/npm/docker/etc. whose stderr they can't rewrite. Worst-case aggregation carve-out. OC-R0 row now requires `(internal)/(external)` qualifier per L3 entry. Required evidence-note template `Layers: L1 PASS (), L2 PASS (), L3 external-declared ()` with concrete evidence refs. Two-step parser validation (regex + rule-ID scope), anti-regex-folding justification, tiebreaker vs `out-of-scope`. 2 rounds of code review applied 7 patches. 4 items deferred. | 2026-04-18 | 3.2 | convoke |\n| U8 | Respect user agent exclusions on update — new `excluded_agents: []` field in Vortex + Gyre `config.yaml` with `readExcludedAgents()` helper. `mergeConfig` filters excluded from `merged.agents`; `refresh-installation` skips agent-file copy, user-guide copy, skill-wrapper generation, and manifest rows for excluded agents. `validator` + `convoke-doctor` honor exclusions. 2 rounds of code review applied 9 patches (HIGH: manifest drift; MEDIUM: falsy-updates filter bypass, user-guide skip, IO error discrimination). 14 new tests; 6 items deferred. | 2026-04-18 | 3.2 | convoke |\n| U7 | Changelog surface during `convoke-update` — new `changelog-reader.js` parses Keep-a-Changelog headers (incl. pre-release), pre-prompt \"What's New\" block in refresh-only + upgrade paths. Code review Round 1 applied 4 patches (taxonomy guard, broadened HEADER_RE + semver post-filter, fenced-code tracking, integration tests). 15 tests added; 6 items deferred. | 2026-04-18 | 4.3 | convoke |\n| BUG-1 | `generateGovernanceADR` now derives platform + artifact-type counts and lists from taxonomy (was hardcoded \"(21)\" / \"(8)\"). Fix + 1 new test asserting custom taxonomy reflected. | 2026-04-18 | 2.7 | convoke |\n| I49 | Process uniformity — 4 rules added to project-context.md: derive-counts-from-source, shared-test-constants, catch-all-phase-review, spec-verify-referenced-files. | 2026-04-18 | 4.3 | convoke |\n| P10 | Capability Evaluation Framework operationalized — moved from archive to planning-artifacts, referenced from lifecycle §1.2 + project-context.md rule. | 2026-04-18 | 5.6 | helm |\n| P11 | Friction log template operationalized — moved from archive to planning-artifacts, linked as CEF input feed. | 2026-04-18 | 5.6 | helm |\n| A7 | Review convergence rule — R1 mandatory, R2 if HIGH, R3 if structural, no R4. Encoded in project-context.md + step-04-present.md (both source and installed). | 2026-04-18 | 6.4 | convoke |\n| T6 | Python test execution in CI — `python-test` job, 5 files, 116+ tests, publish gate updated. Resolves Gyre DL-001 blocker. | 2026-04-17 | 14.4 | convoke |\n| I43 | Doctor validates all 12 bme agent skill wrappers — `checkAgentSkillWrappers()`. Closes F6+F20+F21 GAPs. | 2026-04-17 | 6.4 | convoke |\n| T7 | Python linting in CI — ruff added to `python-test` job. `ruff.toml` config, 40 auto-fixes, 3 manual fixes. | 2026-04-17 | 2.4 | convoke |\n| T8 | PEP 723 standardized — `pyyaml>=6.0` pinning, syntax fix, `>=3.9` version, 2 missing blocks added. 24/24 files covered. | 2026-04-17 | 1.6 | convoke |\n| I14 | Artifact Governance — naming convention, taxonomies, migration skill (7 epics) | 2026-04-10 | 3.2 | convoke |\n| P15 | Portfolio skill — cross-initiative visibility, WIP radar, context re-entry | 2026-04-10 | 1.7 | convoke |\n| P16 | Standalone skills repository (49 skills, 86 tests) | 2026-04-10 | 4.2 | enhance |\n| P17 | Skill portability metadata schema | 2026-04-10 | 2.8 | enhance |\n| P18 | LLM-agnostic skill exporter CLI (`convoke-export`) | 2026-04-10 | 1.9 | enhance |\n| P19 | Intent-based skill catalog generator | 2026-04-10 | 1.9 | enhance |\n| P20 | Multi-platform adapter generation (Claude Code, Copilot, Cursor) | 2026-04-10 | 1.8 | enhance |\n| I29 | YAML comment preservation on module config version stamp | 2026-04-10 | 1.2 | convoke |\n| I30 | `acContent.version` unguarded against `undefined` (`assertVersion` guard) | 2026-04-10 | 9.6 | convoke |\n| I31 | `convoke-doctor` validates skill wrappers (`checkModuleSkillWrappers`) | 2026-04-10 | 3.2 | convoke |\n| I32 | Orphan skill-wrapper cleanup (`cleanupOrphanWorkflowWrappers`) | 2026-04-10 | 1.0 | convoke |\n| I34 | Validator/refresh contract audit (25-row catalogue) | 2026-04-10 | 2.4 | convoke |\n| P14 | Team Factory — Guided Team Creation Workflow (3 epics, 16 stories, 156 tests) | 2026-03-25 | 3.6 | loom |\n| I4 | BMAD v6.2.1 convention alignment (3 specs) | 2026-03-25 | 2.0 | convoke |\n| P1 | Gyre team — Operational Readiness (4 epics, 25 stories, 4 agents) | 2026-03-24 | 3.6 | gyre |\n| P4 | Enhance module — BME section with RICE initiatives backlog skill | 2026-03-16 | 2.8 | enhance |\n| S4 | Migrate to skills format & native module compliance (v2.2.0) | 2026-03-14 | 3.6 | convoke |\n| S3 *(original)* | Install BME slash commands with Vortex | 2026-03-14 | 8.0 | convoke |\n| D7 | Fix ASCII art banner and Vortex stream diagram (v2.0.1) | 2026-03-09 | 8.1 | convoke |\n| D5 | Problem-framing sentence in README (v2.0.1) | 2026-03-09 | 8.1 | convoke |\n| D1 | Workflow list in README or docs (v2.0.1) | 2026-03-09 | 5.6 | convoke |\n| U5 | `postinstall.js` npx command fix (v2.0.1) | 2026-03-09 | 4.0 | convoke |\n| U1 | Check migration history before delta execution (v2.0.1) | 2026-03-09 | 3.2 | convoke |\n\n**ID collision note:** The current S3 (One-command standalone install) reuses an ID previously assigned to a completed item (\"Install BME slash commands with Vortex\", 2026-03-14). Original S3 preserved above as `S3 *(original)*` for audit. Future ID assignment should avoid reuse.\n\n---\n\n## Appendix: Initiative Details\n\nFull descriptions for items in §2.4 whose table row is a one-liner.\n\n### U10+P23+A8+A9 — BMAD v6.3.0 Adoption (Convoke 4.0)\n\n**Stage:** In Sprint | **Portfolio:** convoke | **RICE:** 2.3 (U10 dominant)\n\n**Planning artifacts (complete):**\n\n- Briefing: `briefing-bmad-v6.3-adoption.md`\n- PRD (sharded, 14 files): `convoke-prd-bmad-v6.3-adoption/index.md` — validated 5/5 across 12 systematic checks\n- Architecture: `convoke-arch-bmad-v6.3-adoption.md` — 8 decisions, 16 failure modes\n- PRD Validation Report: `convoke-report-prd-validation-bmad-v6.3-adoption.md`\n- Implementation Readiness: `convoke-report-implementation-readiness-bmad-v6.3-adoption.md`\n- Epic Breakdown: `convoke-epic-bmad-v6.3-adoption.md` — 28 stories, 50/50 FRs mapped, 5 sprints\n\n**Sub-workstreams (absorbed into epics):**\n\n- **WS1 (U10):** Direct-load migration — retire `bmad-init`, migrate ~25 agent SKILL.md files. Epic 1A.\n- **WS2 (P23):** Marketplace publication — `.claude-plugin/marketplace.json`, registry PR. Epic 3.\n- **WS3 (A8):** Upstream Amelia consolidation — remove Bob/Quinn/Barry. Epic 1B.\n- **WS4 (A9):** Extensions compatibility governance — `bmm-dependencies.csv` registry. Epic 2.\n\n### P9 — Forge team (Domain Knowledge Extraction / KORE)\n\n**Stage:** In Pipeline (Blocked on Gate 1) | **Portfolio:** forge | **RICE:** 3.0\n\n**Planning artifacts:**\n\n- Vortex Discovery (complete, all 7 streams, 9 artifacts in `_bmad-output/vortex-artifacts/`)\n- Epic breakdown (partial): `epics-forge-phase-a.md`\n- Ecosystem vision: `convoke-vision-ecosystem.md`\n- Forge-Gyre handoff contract: `forge-gyre-handoff-contract.md`\n\n**Missing (to reach Ready):** Formal PRD, Architecture, PRD Validation report, IR report.\n\n**Blocker:** Gate 1 (shadow engagement) — 6-week concierge+A/B experiment on brownfield engagement validates KORE methodology before Phase A build. Team Factory (loom) is ready to scaffold when Gate 1 passes.\n\n**Key artifacts from discovery:** scope decision (4.65/5), 2 lean personas, HC2-HC6 chain, 15 signals, 6 anomaly patterns, 4 decision gates. Phase A targets Silo (Survey) + Rune (Excavate).\n\n### P12 — Enhance framework (Team Module Generator / BMB)\n\n**Stage:** Qualified | **Portfolio:** enhance | **RICE:** 3.2\n\n**Planning artifacts:** ADR `adr-enhance-gyre-build-sequencing.md` (sequencing decision only, not feature PRD).\n\n**Missing (to reach Ready):** Brief, PRD, Architecture, PRD Validation, IR, Epics.\n\n**Scope hint:** Meta-tool generating new Convoke team modules from templates. 6-step workflow (Discovery, Agent Design, Contract Design, Workflow Design, Integration, Validation). Extracts templates from Vortex + Gyre (two proven reference modules). **MVP = Structural tier** (parameterized XML activation protocol — no LLM-generated content).\n\n**Note:** This initiative is often cited as the reusable pattern for future teams (Forge). Its planning quality directly impacts downstream initiative velocity.\n\n### S3 — One-command standalone install\n\n**Stage:** Qualified | **Portfolio:** convoke | **RICE:** 4.0\n\n**Planning artifacts:** `docs/standalone-decoupling-strategy.md` (strategy, not PRD).\n\n**Missing:** Brief, PRD, Architecture, PRD Validation, IR, Epics.\n\n**Scope hint:** Replace two-step flow (`npm install -g` + `convoke-install`) with single `npx convoke-agents init`. Subsumes S1 (interactive questions) and S2 (simplified entry point). Unified `convoke-install` with flags for global-install users.\n\n### P21 — Convoke Operator Covenant\n\n**Stage:** Epic 1 ✓ (shipped 2026-04-19) | Epic 2 deferred | **Portfolio:** convoke | **RICE:** 9.0\n\n**Origin:** Party mode session 2026-04-18 (Sally, John, Loom Master, Winston, Paige, Bob, Dr. Quinn, Victor). Renamed from \"Convoke Experience Contract\" during that session. Qualified 2026-04-18 by Winston (per §1.2 shortcut rule).\n\n**Planning artifacts (Epic 1 complete):**\n- Candidate doc `loom-note-backlog-candidate-experience-contract.md` (pre-rename, archival)\n- Epic spec `convoke-epic-operator-covenant.md` — `status: ready-for-sprint-planning`, two epics defined (Epic 1: Define; Epic 2: Adopt + Publish)\n- Covenant reference doc `convoke-covenant-operator.md` (axiom + 7 Operator Rights + scar stories + JTBD + audience guidance)\n- Compliance Checklist `convoke-spec-covenant-compliance-checklist.md` (OC-R0..OC-R7 + 3-layer audit scope + 6 status values + reproducibility gate via Selection Discipline: Skill / Step / Cell)\n- Baseline audit `convoke-report-operator-covenant-audit-2026-04-18.md` (calibration cases: Migration + Portfolio; methodology locked)\n- Vortex audit `convoke-report-operator-covenant-audit-vortex-2026-04-19.md` (extended methodology)\n- Epic 1 retrospective `oc-epic-1-retro-2026-04-19.md` (7 action items)\n- Stories `oc-1-1`..`oc-1-5` all shipped 2026-04-19\n\n**Missing (to reach Epic 2 Ready):** Epic 2 Sprint Planning — blocked on IN-12 Vortex re-audit outcome + external Phase 3 Loom Add Skill workflow for Story 2.2.\n\n**Scope hint (two-epic architecture):**\n\n1. **Epic 1 — Define the Covenant (✓ shipped 2026-04-19):** Two-artifact structure (Covenant reference + Compliance Checklist). Self-compliance gated (Covenant document passes its own Checklist before shipping). Audit methodology locked with calibration cases (Migration + Portfolio as known violators). Adoption surface coverage in contributor-facing docs (bme module README, agent-builder skill intro, CLAUDE.md rule `covenant-compliance-for-convoke-skills`).\n\n2. **Epic 2 — Adopt and Publish (deferred):**\n - Story 2.1: Retrofit bottleneck rights — A5 trigger rule locked (T1 concentrated < 70% cell at N ≥ 3; T2 systemic < 75% overall or any Right < 70%). v1 baseline doesn't fire either trigger — Epic 2 correctly deferred pending IN-12 Vortex re-audit.\n - Story 2.2: Wire Compliance Checklist into Loom Add Skill workflow (Phase 3 dependency — blocked on external P12/Loom work).\n - Story 2.3: Publication Gate — publish Covenant as external positioning material. Blocked on Story 2.1 completing bottleneck-rights retrofits (don't publish a covenant you can't keep).\n\n**Strategic positioning (Blue Ocean wedge):** Competitors (CrewAI, LangGraph, AutoGen, Agentic Mesh) compete on capability density. Convoke competes on operator experience as a first-class architectural concern. The Covenant + Checklist are internal quality gates that *become external launch material* once the methodology earns credibility through audit. Impact scored I:2 pre-publication (internal compliance value); re-score trigger `I:2 → I:3` fires when Story 2.3 publishes.\n\n**Dependencies and triggers:**\n- Epic 2 Story 2.2 blocked on external Phase 3 Loom Add Skill workflow (P12/Loom team factory — separate initiative).\n- P24 (relocate Covenant + Checklist out of `_bmad-output/planning-artifacts/`) is a soft prerequisite for Story 2.3 Publication — can't publish pointing at a workflow-output path.\n- IN-12 (Vortex re-audit) pending — if re-audit fires T1/T2 trigger, Epic 2 Story 2.1 retrofit scope expands.\n\n**Axiom:** \"The operator is the resolver.\"\n\n**JTBD:** Operators don't hire Convoke to produce output. They hire Convoke to feel in control of decisions they don't fully understand.\n\n### U9 — Module-aware refresh and validation\n\n**Stage:** Qualified | **Portfolio:** convoke | **RICE:** 2.1\n\n**Missing:** Brief, PRD, Architecture, PRD Validation, IR, Epics.\n\n**Scope hint:** Create `_bmad/_config/modules-manifest.yaml` as explicit module registry (installed modules + version + enabled flag). Make `refreshInstallation()` and validator conditional on manifest. Update installers to register modules. Backward-compat migration auto-generates manifest from filesystem state.\n\n### P3 — Team installer architecture\n\n**Stage:** Qualified | **Portfolio:** convoke | **RICE:** 1.2\n\n**Missing:** Brief, PRD, Architecture, PRD Validation, IR, Epics.\n\n**Scope hint:** Generalize `convoke-install-vortex` to `convoke-install `. Installer understands `bmad-skill-manifest.yaml` (v6.2.0 convention). Related to S3 (possibly absorbable).\n\n### P13 — Vortex redesign (align to Enhance patterns)\n\n**Stage:** Qualified (Blocked on P12) | **Portfolio:** vortex | **RICE:** 2.5\n\n**Blocker:** Depends on P12 Enhance template lock (Phase 4 of ADR-001).\n\n**Missing:** Brief, PRD, Architecture, PRD Validation, IR, Epics.\n\n**Scope hint:** Retroactively align Vortex to Enhance-codified patterns. Vortex *consumes* Enhance templates for validation — must not feed them.\n\n### P7 — ML/AI Engineering team exploration\n\n**Stage:** Qualified (needs discovery) | **Portfolio:** *(pending)* | **RICE:** 1.2\n\n**Missing:** Everything — starts with Vortex discovery.\n\n**Scope hint:** Discovery spike to determine team-vs-skill question for ML/AI domain. Evaluate through Capability Evaluation Framework (P10) before committing form factor. Options: new team (3-4 agents) vs. Enhance-style skills.\n\n### P8 — Governance & Support skill set\n\n**Stage:** Qualified (needs discovery) | **Portfolio:** helm | **RICE:** 0.5\n\n**Missing:** Everything — starts with discovery.\n\n**Scope hint:** Transversal advisory skills (compliance, coaching, change management). \"Review and advise\" pattern — not a team but cross-cutting capability. Skills for PM (compliance), SM (coaching), Architect (change management).\n\n### P2 — Multi-module collaboration workflows\n\n**Stage:** Qualified (Unblocked by P1) | **Portfolio:** convoke | **RICE:** 0.4\n\n**Missing:** Brief, PRD, Architecture, PRD Validation, IR, Epics.\n\n**Scope hint:** Cross-module handoffs and routing between Teams (Vortex, Gyre) and Skills (Enhance). Example: Enhance backlog feeding Vortex discovery.\n\n### ILE-1 — Initiative Lifecycle Engine\n\n**Stage:** Ready for Sprint | **Portfolio:** helm | **RICE:** 2.7\n\n**Origin:** Party mode session 2026-04-12 (John, Winston, Amalik). Qualified 2026-04-15 by John+Winston (per §1.2 shortcut rule).\n\n**Planning artifacts (complete):** Brief (B) + distillate; PRD (P); pre-Architecture IR; Architecture (A) — 8 ADRs + 24 patterns + complete project tree + validation; Epics (E) — 6 epics × 67 stories, 63/63 FR coverage; post-Architecture+Epics IR (IR✓) — `convoke-report-implementation-readiness-initiative-lifecycle-engine-post-epics.md` shipped 2026-04-19, verdict **FULL READY** (0 critical issues, 0 major issues, 0 blocking concerns across all 5 validation categories).\n\n**Missing (to reach Ready):** none. **Ready for Sprint 0 execution.**\n\n**Scope hint (three workstreams):**\n\n1. **Rework existing skills as views on a shared model.**\n - `bmad-enhance-initiatives-backlog` becomes the **write surface** (lifecycle-aware, lane-aware) — already reworked in 2026-04-15 session as v2.0.0; data model still implicit\n - `bmad-portfolio-status` becomes the **read surface** (cross-initiative dashboard, pipeline completeness, WIP signals)\n - `bmad-migrate-artifacts` feeds the shared model (artifact creation auto-advances pipeline stage)\n - All three need a **shared data layer** (structured source + generated markdown views)\n\n2. **Enhance with new capabilities:**\n - Kanban view (columns = lifecycle stages, rows = initiatives, WIP limits)\n - Backlog-portfolio integration (creating a PRD auto-advances stage)\n - Pipeline completeness dashboard (live \"what artifacts exist?\" computed from disk)\n\n3. **Reactive behaviors layer:**\n - New initiative logged → orphan intake scan suggests attachment\n - Artifact created → pipeline stage auto-advances\n - Sprint closes → staleness detector flags broken file references\n - RICE rescore requested → pulls current context (recent ships, adjacent changes)\n - Epic completed → close absorbed items + unblock dependent items\n\n**Why helm (portfolio):** This is strategic governance tooling. Per §1.4 taxonomy, helm covers strategic governance — this is its flagship feature. Helm doesn't exist as a built team yet, but initiatives can attach to portfolio items that aren't yet scaffolded (precedent: P9 attached to forge before Forge team exists).\n\n**Why Initiative (lane):** Multi-module (3 skills + new shared layer), architectural (shared data model + reactive behaviors), user-facing (kanban + new commands), substantial scope (three workstreams). All §1.3 Initiative triggers fire.\n\n**Risk note:** Portfolio attachment (helm) is a current-best-fit, not a final answer. If WS3 planning surfaces a better home (e.g., a new \"governance\" portfolio item), revisit per §1.4 growth rule.\n\n**Scope precedents already absorbed (do not duplicate in pipeline):**\n- WS1 (process rules + restructure) and WS2 (retroactive review) — already executed as spikes on 2026-04-15 (Pass 1 and Pass 2 of the lifecycle backlog)\n- The skill rework of `bmad-enhance-initiatives-backlog` v2.0.0 — already shipped 2026-04-15, but only the write surface; the shared data model and integration with the other two skills remain\n\n---\n\n## Change Log\n\n| Date | Change |\n|------|--------|\n| 2026-06-28 | **Triage by Winston: 3 intakes logged from the codebase audit, all qualified.** Source: [`docs/codebase-audit-2026-06-27.md`](../../docs/codebase-audit-2026-06-27.md) (reconciliation + intent-reconstruction + confidence-checks pass). **Logged IN-166..IN-168; qualified 3 (Bug: 1, Fast: 1, Initiative: 1):** **BUG-8** migration rollback can't restore the rewritten skills (R6 I2 C90% E4 = **2.7**; release-blocker for 4.0; reproduced by construction); **I114** salvage `install-scope-check.js` to CI + fix #31 matcher (R4 I1 C80% E2 = **1.6**); **P58** base-layer consolidation Initiative (R5 I1 C60% E6 = **0.5**; post-4.0; Brief authored). Raw intakes: 0. Dropped: 0. No new portfolio proposals (all `convoke`). **Overlap dispositions:** BUG-8 vs I81 (backup overwrite-clobber) — distinct, kept new; P58 vs I54/IN-10 (one-constant dedup) — broader, kept new. **Append-without-resort** per convention (full lane re-sort deferred to `[R] Review`). Dev-ready artifacts pre-authored: `bug-high2-migration-backup-rollback-scope.md`, `fast-install-scope-check-ci-salvage.md` (both `implementation-artifacts/`), `convoke-brief-base-layer-consolidation.md` (`planning-artifacts/`). Operator (Amalik) approved (`k`). |\n| 2026-06-28 | **Codebase audit reconciliation — OQ-1 captured against I113 (Winston).** A deep codebase audit (8-reviewer workflow → adversarial verify → reconciliation → intent reconstruction; [`docs/codebase-audit-2026-06-27.md`](../../docs/codebase-audit-2026-06-27.md)) surfaced an **internal contradiction in the v4.1 architecture**: AD1 says cadence state is \"read via the config-loader,\" but AD8 / Component Boundaries say \"only `cadence-state.js` reads/writes `cadence.yaml` — no other module touches the file directly.\" Compounded by the frozen `config-loader.js` API hardcoding the filename `config.yaml` (cannot read `cadence.yaml` without a Story-1A.2-AC9 spec amendment). Recorded as **Open Question OQ-1** inline at [arch §AD1](convoke-arch-bmad-v6.4-v6.8-absorption.md) (recommendation leans: `cadence-state.js` owns I/O + delegates to config-loader's read internals). **Resolve at v4.1 sprint-planning — blocks E4 Story 1.1.** No RICE change to I113 — intra-initiative arch refinement, not a new lane item. Also confirmed via the audit: `config-loader.js` is NOT muda (reserved for E4 cadence reads) and the PF1 battery is the unobtained v4.0 behavioral-equivalence gate (FR36-40) — both KEPT, not deleted. Operator (Amalik) approved the writes. |\n| 2026-06-21 | **I113 Epics ✓ — ready-for-sprint (Winston).** Authored [`convoke-epic-bmad-v6.4-v6.8-absorption.md`](convoke-epic-bmad-v6.4-v6.8-absorption.md): **4 epics / 20 stories** — E1 Managed Currency & Cadence Floor (10 stories, AD1-AD9 sequenced), E2 Schema Conformance (3), E3 Enforced Covenant (4, `blocked-on: external A8 Epic 1B`), E4 Marketplace (3, Phase-2). All 26 FRs covered; backward-only deps; Graph-of-Thoughts + sizing party hardened the structure (split absorption story, AD3 as explicit shared story, E7/1B risk flagged). I113: In Pipeline → **ready-for-sprint**. **Next gate: sprint-planning when v4.0 ships** (still `depends: I97 close`). |\n| 2026-06-21 | **I113 advanced to In Pipeline (Winston) — PRD ✓ + Arch ✓.** Authored [`convoke-prd-bmad-v6.4-v6.8-absorption.md`](convoke-prd-bmad-v6.4-v6.8-absorption.md) (26 FR, 14 NFR, 5 user journeys, scope ratified **MVP = E2+E4+E7**, E1 Phase-2 fast-follow, E3/E5/E6 → v4.2) and [`convoke-arch-bmad-v6.4-v6.8-absorption.md`](convoke-arch-bmad-v6.4-v6.8-absorption.md) (AD1-AD9, READY, HIGH confidence). Architecture First-Principles surfaced the **absorption ternary** (declaration-only / conformance-required / breaking — correcting the PRD's naive compat-only-vs-breaking binary; E2 itself is the Class-B counterexample); reconciled back into PRD FR6/NFR10/MO2 same session. I113 status: Qualified → **In Pipeline**. **Next gate: create-epics for the MVP (E2/E4/E7).** Still `depends: I97 close (v4.0 ship)` — planning-ahead, not implementation-ready. |\n| 2026-06-21 | **E7 spike resolved (Winston).** Investigated `BMAD-METHOD@v6.8.0` source (identical guardrail text across 30 files). Verdict **Option A — agent-internal self-confirmation** (canonical directive \"confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed\" — aimed at the agent, no human pause). E7 gate **cleared → adopt wholesale, no OC-R7 pacing risk.** Scope correction recorded in [ADR-001](adr/v4-1/adr-001-guardrails-covenant-enforcement.md) Spike Resolution: v6.8 enforces *activation-sequence* fidelity only, not mid-workflow pause — so E7 is Convoke-authored extension of the self-confirm discipline to OC-R5 decision points, not a drop-in of a v6.8 component. I113 E7 note updated. |\n| 2026-06-21 | **Triage by Winston: v6.8.0 absorbed into v4.1 (I113); E7 added.** Source: CA + IR architecture session 2026-06-21 (operator request \"look at the latest BMAD Method releases and see how it impacts Convoke\"). Confirmed upstream head **v6.8.0** (2026-05-25; still head as of 2026-06-21 — Convoke now **N-6** from v6.3 baseline). **1 intake logged (IN-165)** → updates existing **I113** (no new lane item — refinement of an already-qualified Initiative). I113 retitled v6.4-**v6.8**; scope **6→7 epics** (added **E7** — activation-guardrails adoption as Operator Covenant enforcement substrate, [ADR-001](adr/v4-1/adr-001-guardrails-covenant-enforcement.md)). **Key finding:** v6.8 activation guardrails are *orthogonal* to the Operator Covenant (agent↔author vs workflow↔operator) and *reinforce* OC-R5 (pause) — an enforcement substrate, not a competitor. **RICE held at 1.5** (R:10 I:3 CF:50% E:10) — no rescore: Effort already honest-scoped at ceiling and Impact at ceiling; E7's spike-dependent unknown is the class CF:50% already accounts for (E3/E5/E6→E7); E7 strengthens the differentiator the I:3 cumulative-value rationale already credits. **Constraints recorded on I113:** E7 gated on agent-internal-vs-operator-facing spike (operator-facing gate adopted verbatim would self-violate OC-R7 pacing); E7 retrofit `sequence-after: A8 Epic 1B`. IR decoupling memo ([convoke-report-implementation-readiness-e7-decoupling-2026-06-21.md](convoke-report-implementation-readiness-e7-decoupling-2026-06-21.md)) confirms **4.0 ship unaffected**. **Append-without-resort** per convention (full lane re-merge deferred to `[R] Review`). Operator (Amalik) approved the writes. |\n| 2026-05-25 | **Triage by Winston: v4.1 catch-up Initiative qualification (post-D16 decision).** Source: Option F decision recorded in [convoke-note-v6-3-resequencing-and-v4-1-catchup-2026-05-25.md](convoke-note-v6-3-resequencing-and-v4-1-catchup-2026-05-25.md) (D16 authoring, this session). 1 intake logged (IN-164) → Initiative Lane (I113). **Party-mode RICE calibration** invoked: original Winston proposal R:10 I:2 CF:60% E:9 = 1.3; John (PM) pushed I:2 → I:3 (cumulative value across marketplace + N-cadence + Web Bundles is game-changing even if no single epic is); Bob (SM) pushed E:9 → E:10 + CF:60% → CF:50% (spike-dependent unknowns in E3/E5/E6); consensus landed at **R:10 I:3 CF:50% E:10 = 1.5**. Initiative-Lane mid-position: lands below I97 (3.0, in-flight v4.0 work) — appropriate future-discount via lower Confidence. **Successor relationship with I97 explicit:** v4.1 E1 absorbs what was framed as I97 E5+E6 (marketplace re-submission); A8 stays out of v4.1 scope (Epic 1B Amelia → v4.0.1 patch per 2026-04-28 path-lock). **Append-without-resort** per established convention (full lane re-merge deferred to `[R] Review` mode). No PRD/Arch yet — Stage: Qualified. **Next step:** start v4.1 work post-v4.0 ship; first action probably E4 (release channels) or E1 (marketplace structural restructure inherits existing I97 plan). |\n| 2026-05-25 | **Triage by Winston: release-readiness probe findings.** Source: 2026-05-25 release-readiness probe after v63-4-5 + v63-5b-3 pickup attempt revealed both stories release-time-deferred and gated on stalled v63-4-3. 4 intakes logged (IN-160 → IN-163) and qualified into Fast Lane (4) / Bug Lane (0) / Initiative Lane (0). New IDs by score: **D16 (6.0 — v6.3 release re-sequencing decision artifact)**, D14 (2.1 — PF1 resumption checklist/state-snapshot for stalled v63-4-3), D13 (1.8 — v63-4-5 Task 0.4 spec wording fix `3.x-to-4.0.js` → chain-walker), D15 (1.2 — author v63-1B-{1,2,3} story specs for A8 parent). **Correction made during extraction:** Finding 1 initial framing (\"missing 3.x-to-4.0.js migration script\") was corrected after `ls scripts/update/migrations/` verified the chain-walker scripts (`3.{0,1,2,3}.x` files) DO exist post-BUG-5 ship 2026-04-25 — so the actual finding is a spec-wording defect in v63-4-5 Task 0.4, not a missing implementation. **Top of Fast Lane unchanged:** A47 (12.0) still tops; D16 (6.0) is the highest of this batch and would land 3rd-highest in the lane behind A47, I103/I104 (10.8 ea.), T25 (8.0) if the lane were resorted. **Re-sort note:** appended at end of §2.3 per established 2026-05-25 CI/CD triage convention; full-lane re-merge deferred to `[R] Review` mode. **Critical-path observation:** D16 + D14 directly address v6.3 ship blocker (PF1 stall); D15 + D13 are spec-debt cleanup. Operator can pick up D16 (~30 min decision doc) to unblock release planning before resuming v63-4-3 PF1 work itself. |\n| 2026-05-25 | **Triage by Winston: CI/CD review findings.** Source: parallel Winston (Architect) + Quinn (QA) review of GitHub Actions / npm-script / project-context CI surface, 2026-05-25. 15 intakes logged (IN-143 → IN-157) and qualified into Fast Lane (15) / Bug Lane (0) / Initiative Lane (0). New IDs by score: A47 (12.0 — pipefail rule into project-context.md), I103 (10.8 — pipefail workflow shell), I104 (10.8 — lint `--max-warnings 0`), T25 (8.0 — install-tarball smoke), I105 (3.2 — required-status/branch-protection/notifications), T28 (3.2 — python-test pytest discovery), T26 (2.1 — per-file c8 threshold), T27 (1.6 — burn-in re-shape), I106 (1.6 — matrix consistency), I110 (1.6 — version-sync gate), I108 (1.4 — badges.yml safety), I102 (1.2 — coverage job concern-split), I111 (0.9 — failure-artifact narrowing), I109 (0.7 — package.json self-dep), I107 (0.35 — shared install artifact). **Top of Fast Lane is now A47 (12.0)** — supersedes prior top U15 (4.8). **T25 (install-smoke at 8.0)** is now the highest-reach (R:10) item in the lane. **Re-sort note:** new rows appended at end of §2.3 in batch-internal RICE order; full-lane re-merge with existing pre-2026-05-25 cluster (lines 380-527, already in two-cluster drift state from prior triage sessions) deferred — invoke `[R] Review` mode to consolidate when convenient. **Provenance:** review verdict was \"CI is over-engineered on duplication/ceremony, under-engineered on what matters for an npm library; 4-day 2026-05-01→05 red was a gate-placement + visibility + verification-script problem, not a code-quality problem.\" Top-3 fix-first per review synthesis: A47+I103 (pipefail pair), I104 (lint `--max-warnings 0`), T25 (install-smoke). |\n| 2026-04-29 | **I97 personality rubric pre-test FULLY COMPLETE (Round 2 — Isla + Mila + Wade + Noah + Max).** Operator captured transcripts against existing 4.0 agents using fixtures at `tests/migration/personality-preservation/fixtures/{discovery-empathy-expert,research-convergence-specialist,lean-experiments-specialist,production-intelligence-specialist,learning-decision-expert}/`. Each agent: 7 fixed-prompts (FP1-FP7) + unscripted scenario T1-T7 with natural closure. **Scoring outcome: 35/35 cells = 4 (Clearly Preserved); zero refinement iterations required.** Rubric status `partially-calibrated → calibrated`. Combined with Round 1 (Emma + Liam): **49/49 total cells** scored 4 across both rounds with zero refinements. Pre-test gate FULLY SATISFIED — Story 1.x dev unblocked. **5 new reviewer cues recorded** (in addition to 3 from Round 1, total 8 cues): (4) meta-pattern awareness confirmed across all 7 agents (robust cross-agent property strengthens future-enhancement case); (5) meta-system Vortex-role-split awareness articulated by Noah T7 (cross-agent design awareness — verify during E1 cross-agent integration testing); (6) Wade's pedagogical scaling under PM-pressure adapts framing rigor without abandoning principles (Story 2.4 reviewer cue); (7) Mila's bias-naming under deadline pressure (Story 2.3 reviewer cue — agreeable-Mila who silently goes along would *fail* D3); (8) Isla's progressive-discovery ladder under constraint (Story 2.2 reviewer cue — full-interview-pushing post-migration Isla would be *less* preserved). Scoring sheet: [`convoke-pretest-personality-rubric-scoring-sheet-round-2.md`](convoke-pretest-personality-rubric-scoring-sheet-round-2.md). Memory updated: `project_marketplace_structural_adoption.md` reflects fully-calibrated state. **I97 planning track + pre-test gate complete.** Next: sprint planning (Bob SP capability) when ready. |\n| 2026-04-29 | **I97 personality rubric pre-test (Emma + Liam dissimilar pair) executed and scored.** Operator captured transcripts against existing 4.0 agents using fixtures at `tests/migration/personality-preservation/fixtures/{contextualization-expert,hypothesis-engineer}/`. Emma fixed-prompt: 7/7 prompts (EM-FP1..FP7); Emma scenario: T1-T7 natural closure. Liam fixed-prompt: 7/7 prompts (LI-FP1..FP7); Liam scenario: T1-T6 natural closure. **Scoring outcome: 14/14 cells = 4 (Clearly Preserved); zero refinement iterations required.** Rubric instrument validity confirmed on dissimilar pair: dimensions well-defined, evidence sources sufficient, per-agent fingerprints accurate. Status transitions: rubric `draft → partially-calibrated`; scoring sheet status `in-progress → partial-pass`. Three observations recorded for downstream E1 use (not refinements): (1) meta-pattern awareness exhibited by both agents — strong personality signal, candidate future enhancement at I98/I99; (2) operator-preference signal vs principle-violation signal must be distinguished by E1 reviewers (lean response style ≠ degraded principle adherence); (3) intellectual-honesty-on-Bayesian (Liam scenario T6) calibrates expectation that D3 principle adherence includes intellectual honesty, not stubbornness — important reviewer cue for Story 2.7. Scoring sheet: [`convoke-pretest-personality-rubric-scoring-sheet.md`](convoke-pretest-personality-rubric-scoring-sheet.md). **Remaining pre-test: 5 agents (Isla, Mila, Wade, Noah, Max) before Story 1.x dev kicks off in I97 E1.** Estimated ~2.5 hr total now that rubric is validated. Memory updated: `project_marketplace_structural_adoption.md` reflects partially-calibrated state. |\n| 2026-04-28 | **I97 Epic spec authored (John PM via bmad-create-epics-and-stories workflow).** Artifact: [`convoke-epic-bmad-v63-source-format-adoption.md`](convoke-epic-bmad-v63-source-format-adoption.md) (status: ready-for-sprint). 4-step workflow executed: Step 1 validate prerequisites + extract requirements (32 FRs, 19 NFRs, 5 ADRs, rubric, project-context.md, memory all loaded) → Step 2 design epics (initial 5-epic PRD frame refined via 5-issue pre-mortem + 7-refinement party mode = 12 refinements; produced 6 epics with E5 split into operator-controllable E5 vs reviewer-dependent E6 trickle epic; Failure Handling Pattern with 5 modes documented at Epic 2 header) → Step 3 create stories (17 stories total; refined via shorthand-challenge pass + 6-refinement story-party-mode = 11 more refinements: capability counts grounded per agent — Emma=4, Wade=5, Mila=3, Isla=4, Noah=3, Max=4, Liam=3; per-agent annotation blocks added to stories 2.2-2.7 with variance commentary; migration sequencing Emma→Wade/Mila→Isla/Noah/Max→Liam; FR Coverage Map appended) → Step 4 final validation (FR Coverage ✓ all 32 / Architecture Implementation ✓ N/A starter, ADRs all cited / Story Quality ✓ single-dev-pickup-able / Epic Structure ✓ operator-value framing with natural dependency flow E1→E2→(E3‖E4)→E5→E6 trickle / Dependency ✓ zero forward, backward only). **23 total refinements integrated** across 4 elicitation passes (5 pre-mortem + 7 epic-party-mode + 5 shorthand-challenge + 6 story-party-mode). Decision 3 (per-Right Covenant matrix) authored as part of Epic 4 spec at sprint planning time per ADR-005. I97 row updated: stage **In Pipeline (PRD ✓; Arch ✓; Epics next) → In Pipeline (PRD ✓; Arch ✓; Epics ✓; ready-for-sprint)**. Memory updated: `project_marketplace_structural_adoption.md` reflects post-Epic-spec state. **Next operator action:** invoke `bmad-sprint-planning` (Bob SM SP capability) to sequence stories per architecture migration order. Pre-test rubric against 4.0 agents (Emma + Liam dissimilar pair) remains gated before Story 1.x dev kicks off (separable session). |\n| 2026-04-28 | **I97 personality preservation operator scoring rubric authored (Winston).** Artifact: [`convoke-spec-personality-preservation-rubric.md`](convoke-spec-personality-preservation-rubric.md) (~250 lines, status: draft). 7 scoring dimensions (role conveyance, communication style match, principle adherence, conversational signals, failure handling, cross-turn coherence, output format consistency); 4-point graded scale (Clearly Preserved 4 / Mostly Preserved 3 / Questionable 2 / Degraded 1) with FR23-binary mapping (score 1 blocks merge); per-agent personality fingerprints for all 7 Vortex agents (Emma curious-clarifying / Isla empathy-driven / Mila synthesis / Liam hypothesis-challenge / Wade smallest-experiment / Noah evidence-from-production / Max decision-frame); pre-test process documented (~3-4 operator hours; capture baseline → score → calibrate; rubric status transitions draft → calibrated when 7 agents score 4 across 7 dimensions on 4.0 baseline). Implements PRD Improvement 2 + FR23 + ADR-003 personality verification harness consumption. Reusable for I98 (Gyre) and I99 (Team Factory) per NFR18 (template structure portable; only per-agent fingerprints migration-specific). **Pre-test pending** (separate operator-time session before E1 starts). Memory updated. |\n| 2026-04-28 | **I97 ADRs authored (5 documents at `_bmad-output/planning-artifacts/adr/i97/`).** ADR-001 Naming Convention Reconciliation (Hybrid: internal canonical `bmad-bme-agent-{first-name}` + slash-command compat aliases `bmad-agent-bme-{role}`, status: accepted) — derives D1; ADR-002 Conversion Tooling Architecture (BMB-canonical with documented manual-fixup contract, status: accepted) — derives D2; ADR-003 Verification Harness Architecture (three separate harnesses with shared fixture pattern, status: accepted) — derives D3; ADR-004 Atomic-by-Agent Commit + Function-Named Migration Tooling Namespace (`scripts/migration/format-conversion/`, status: accepted) — derives D5; ADR-005 Covenant Baseline-Validity Policy (per-Right judgment, status: proposed → accepted at Epic 4 spec authoring) — derives D6. ~3,800 words across 5 ADRs; each cites architecture document, PRD, and sibling ADRs. Memory updated: `project_marketplace_structural_adoption.md` reflects post-ADR state. **Next operator action:** invoke `bmad-create-epics-and-stories` (Bob SM) to translate 32 FRs into 5 epics + ~10-15 stories per PRD MVP scope; Decision 3 (per-Right Covenant matrix per ADR-005) authored as part of Epic 4 spec at sprint planning time. |\n| 2026-04-28 | **I97 Architecture authored (Winston via bmad-create-architecture workflow).** Architecture: [`convoke-arch-bmad-v63-source-format-adoption.md`](convoke-arch-bmad-v63-source-format-adoption.md) (932 lines, status: complete). 8-step workflow executed: init + project context analysis (6 cross-cutting concerns mapped) + starter template (N/A for migration) + 6 core architectural decisions (D1-D6) + implementation patterns (6 categories + 8 anti-patterns + per-agent PR checklist with 12 items + per-agent dev cycle with 16 steps) + project structure & boundaries (consolidated post-migration repo tree + FR/NFR cluster mapping + integration points + data flow) + validation (all coherence/coverage/readiness checks PASS, 0 critical gaps) + completion. **6 architectural decisions made:** D1 hybrid naming (resolves PRD Decision 2: internal canonical `bmad-bme-agent-{first-name}` + slash-command compat aliases `bmad-agent-bme-{role}`); D2 BMB-canonical conversion + manual fixup checklist; D3 three verification harnesses with shared fixture pattern; D4 reference integrity as CI merge gate; D5 atomic-by-agent commits + function-named tooling namespace `scripts/migration/format-conversion/` (NFR18 reusable for I98/I99); D6 per-Right Covenant baseline-validity policy (Epic 4 authors per-Right matrix). **5 ADRs scoped** (ADR-001..005 mapped to D1, D2, D3, D5, D6; D4 mechanical not ADR-worthy). I97 row updated: stage **In Pipeline (PRD ✓) → In Pipeline (PRD ✓; Arch ✓; Epics next)**. Memory updated: `project_marketplace_structural_adoption.md` reflects post-Architecture state. **Next operator action:** invoke `bmad-create-epics-and-stories` (Bob SM) to translate 32 FRs into 5 epics + ~10-15 stories per PRD MVP scope; concurrent: author 5 ADRs at `_bmad-output/planning-artifacts/adr/i97/`. |\n| 2026-04-28 | **I97 PRD authored + validated (John PM workflow + bmad-validate-prd workflow).** PRD: [`convoke-prd-bmad-v63-source-format-adoption.md`](convoke-prd-bmad-v63-source-format-adoption.md) (498 lines, 32 FRs, 19 NFRs, ready-for-validation status). Validation report: [`convoke-report-prd-validation-bmad-v63-source-format-adoption.md`](convoke-report-prd-validation-bmad-v63-source-format-adoption.md). **All 11 validation checks PASS** (Format ✓, Density 0/0, Brief N/A, Measurability 0/51, Traceability 0 orphans, Leakage 0, Domain N/A, Project-Type custom-checklist PASS, SMART 94% all-≥4 avg 4.7/5, Holistic 5/5 Excellent, Completeness 100%). 0 critical issues, 0 warnings. 3 non-blocking improvements identified for Architecture phase: (1) resolve Decision 2 (naming convention) before Architecture; (2) author personality-preservation operator scoring rubric upfront (FR23); (3) add `migration_initiative` row to `project-types.csv` for future I98/I99 migration PRDs. I97 row updated: stage **Backlog → In Pipeline (PRD ✓)**. PRD authoring details: Step 1 init + Step 2 classification (4 enhancement passes: first principles + party mode-1 with Winston/Murat/Saga + pre-mortem + party mode-2 with Mary/Maya/Liam — produced 9 concrete refinements: bifurcated complexity execution-vs-assurance, dual-channel acceptance, segment ratio honesty constraint, audit-state implications, compliance-grade-not-positioning-grade scope marker, falsifiability disconfirmation thresholds for all 4 outcomes, personality preservation operationalized via two methods, Pattern-C-friendly factoring constraint, adoption-NOT-success-criterion boundary). Memory updated: `project_marketplace_structural_adoption.md` reflects PRD-ratified state. |\n| 2026-04-28 | **Triage by Winston: Logged 4 intakes (IN-139..IN-142). Qualified 4 (Bug: 0, Fast: 3, Initiative: 1).** Source: [`../implementation-artifacts/spike-marketplace-packaging-delta.md`](../implementation-artifacts/spike-marketplace-packaging-delta.md) — BMAD marketplace PR #9 rejected 2026-04-27 + BMB conversion evaluation 2026-04-28 (`bmad-agent-builder` against `_bmad/bme/_vortex/agents/contextualization-expert/`) surfaced source-format gap (v5 XML-in-markdown vs v6.3+ outcome-based markdown). New Initiative Lane row **I97 — BMAD v6.3+ source format adoption (Convoke 4.0 packaging-contract)** at score 3.0 (R:10 I:3 CF:80% E:8) inserted between P9 (3.0, CF 90% wins tiebreak) and ILE-1 (2.7); descending-score property holds locally. Bundles-with: U10+P23+A8+A9 (sibling v6.3 adoption). **I95 re-scoped same session:** check #1 (Vortex agents in `_bmad/config.toml` post-install) absorbed into I97 Epic 5 (smoke-test); checks #2 + #3 + minor adoption remain independent and unblocked on I95 row. **Pattern A (workflow-as-reference) chosen** 2026-04-28; **Pattern C (workflow-as-skill + agent-as-orchestrator) deferred** to marketplace-traction / BMAD-roadmap / UX-research trigger per `project_marketplace_structural_adoption.md` memory file. Three new Fast Lane rows: **I98 Gyre marketplace structural compliance gap** (forward-looking, R:4 I:2 CF:60% E:7 = 0.7, gyre); **I99 Team Factory marketplace structural compliance gap** (speculative-eligibility, R:2 I:1 CF:50% E:4 = 0.25, loom); **I100 Module-help.csv Convoke schema extension standard** (covenant-adjacent, R:5 I:1 CF:60% E:2 = 1.5, convoke). Fast-lane append-then-batch-sort precedent retained (I98/I99/I100 appended at end of lane after I95, full re-sort deferred per I96 ship convention). Decision sub-items absorbed into I97 epic specs: naming-convention reconciliation → Epic 3 scope; Covenant preservation policy → Epic 4 scope. Memory update: new file `project_marketplace_structural_adoption.md` + MEMORY.md index entry. **No raw intakes, no Bug Lane changes, no §2.5 transfers.** |\n| 2026-04-27 | **I96 added to Fast Lane via Story 5B.2 retrospective feedback loop (FR50 provenance).** New entry: Sprint 0 anti-pattern registry consultation checklist for future Convoke major releases (R:4 I:1 CF:80% E:1 = **3.2**, convoke). Triggered by L1 hypothesis observation in `_bmad-output/implementation-artifacts/v63-retrospective-bmad-v6.3-adoption.md` — L1 is the only PRD hypothesis with no PRD-cited observation-window (CM-1 V-pass), so its falsification surface (\"registry exists but is never consulted\" per `convoke-prd-bmad-v6.3-adoption/innovation-novel-patterns.md:64`) is currently load-bearing on operator memory. I96 codifies registry-consultation discipline at Sprint 0 of v4.x + v6.4 release planning. Provenance tag: `provenance: v63-5b-2-retrospective` placed in Dependencies column per the established free-form-tag convention (existing tags include `deferred-from:`, `bundles-with:`, `sibling:`, `origin:` — schema is OPEN; no schema amendment needed per Story 5B.2 EO-1 V-pass pre-flight). Bundles-with: Story 5A.2 playbook section (d)/(e) population at Story 5B.3 (the playbook IS the natural carrier per PRD L102 cross-cutting mitigation). Source artifact: `convoke-anti-patterns.md` ships at this story (10 anti-patterns initial population per AC2). No raw intakes, no Bug Lane changes, no Initiative Lane changes. Lane re-sort: I96 inserted at 3.2 score-tier between I80 (4.5) and I92 (2.1); descending-score property holds locally (full Fast-Lane re-sort deferred per append-then-batch-sort precedent). ID note: I95 was already taken (BMAD v6.4 compatibility row, party mode 2026-04-26); I96 is the next free I-series number. **Future operators:** entries with `provenance: v63-5b-2-retrospective` originate from this retrospective; future retrospectives extend this provenance family by tagging their findings with `provenance: v63--retrospective`. The provenance tag enables \"which backlog items came from which retrospective\" audits — load-bearing accountability surface for L1 hypothesis validation per Story 5B.2 Decision 5. |\n| 2026-04-26 | **I95 added to Fast Lane (party mode: Winston, John, Amalik) — BMAD v6.4.0/v6.5.0 compatibility recon + minor adoption.** Bundled pre-4.0-ship smoke test (3 empirical checks against test install: Vortex agents in `_bmad/config.toml` post-marketplace install via PluginResolver Strategy 5 / Path C; `_gyre/config.yaml` post-install state; `add-team` workflow loader tolerance) + `marketplace.json` `channel: stable` declaration per v6.4. **Watch-list (no row):** v6.5 `.agents/skills/` cross-tool standard for portability segment; v6.4 customize.toml framework declined as BMM-internal. **Memory updated:** two-product framing (60/40 BMAD-addon vs Vortex Standalone) pinned in `project_two_product_framing.md`; N-1 cadence policy proposed (4-6 wk lag behind upstream BMAD stable). Source: `_bmad-output/implementation-artifacts/spike-bmad-interop-findings.md` — read-only desk research on bmad-method 6.3/6.4/6.5 npm tarballs + cross-reference with peer-session operability test. RICE 2.0 (R:5 I:1 CF:80% E:2). Sibling: BUG-3 (empirical check #3 settles BUG-3's lenient-vs-strict loader question). Self-correction logged in spike note: earlier-session over-statement of architectural risk + retracted `_bmad/custom/bme/` migration recommendation (bme/ is peer module per cis/tea/wds, not customization). |\n| 2026-04-26 | **I92 + I93 + I94 added to Fast Lane (party mode: John, Winston, Amalik).** I92: backlog & deferred-work reorganization, scope expanded mid-session to include the **maintenance protocol** (row brevity standard, dedup check, merge-candidate search, functional-goal tagging, deferred→backlog transfer rules) — not just one-off taxonomy switch. I93 (blocked on I92): promote that protocol to a `bmad-enhance-initiatives-backlog` skill mode (Reframe/Goal-View) — Convoke eats own dog food via I92 first, then ships method as a feature. I94: new slash-command skill for parallel-track collision detection (green/amber/red list against named other-branch). I92 sequencing-pref: after v6.3 Epic 3. **Companion principle drafted + approved** for `project-context.md` (`prefer-bmad-channels-over-freeform-claude`) — commit deferred to post-v6.3 because a parallel Claude track is mid-execution on Epic 3 work; mid-flight rule injection could cause inconsistent behavior between in-flight agents (self-applied I94 logic). Draft parked at `_bmad-output/planning-artifacts/draft-project-context-rule-prefer-bmad-channels.md`. Self-aware: this very change-log row violates the brevity standard I92 will define — kept as-is for now, will be retroactively trimmed in I92's pass. |\n| 2026-04-25 | **A44 shipped — Layer 1 + operator-facing semantics rework (supersedes A35+A36 reverts); ~57 atomic patches across V-pass + pre-exec + R1 rounds (full A41+A42 rigor per Option A choice).** Compliance Checklist amended: new §A41-14 sub-section (5-category workflow-root file classification + echo-test for operator-facing-vs-agent-facing + §2.6 inheritance rules per category + catch-all rule + multi-criteria precedence + case-sensitivity rule + cross-workflow audit-report aggregation template + §A41-11 cascade interaction + forward-only application for v5+ audits with sub-day version-pinning + verdict-lock + reasoning-lock); 3 cross-references at §\"Three-layer audit scope\" / §\"Operator-facing vs agent-facing text\" / §\"Workflow-inherited concepts\"; §Revisions row added. **Filesystem survey (mechanical-research-enumeration rule per project-context.md):** 48 workflow directories surveyed; 57 workflow-root files; 5 categories enumerated (7 standalone-workflows verified via `grep -r 'type: single-file'`, 19 templates, 6 SKILL.md, 9 incomplete placeholders, 1 structural anomaly = 42 categorized + 16 workflow-only directories outside §A41-14 scope). **Critical R1 finding:** Edge Case Hunter empirically re-counted `empathy-map/validate.md` operator-visible concepts and found 5 (not 4 as spec claimed); P44 corrected the example inline + §Revisions row. Inheritance-independence logic unchanged (5 ≠ 8 aggregate). **Pre-execution review (Option A rigor):** V-pass (1 layer Acceptance Auditor, 21 patches: 5 CRITICAL + 5 ENHANCEMENT + 3 MINOR + 2 PAD escalations + 6 surface gaps) + 3-layer pre-exec adversarial review (Blind Hunter + Edge Case Hunter + Acceptance Auditor in parallel; 16 HIGH + 14 MED + 15 LOW raw → 12 HIGH + 10 MED = 22 patches applied + 1 typo correction). 43 atomic spec patches across V-pass + pre-exec rounds. **Post-execution R1 review (3-layer parallel):** 14 HIGH + 15 MED + 16 LOW raw → 14 patches applied (P44 empirical correction + P45 sub-day timestamp + P46 verdict-lock semantic + P47 categories-as-primary reframing + P48 deferred+excluded resolution + P49 catch-all × anomaly overlap + P50 §A41-3 ordering + P51 skill-level verdict aggregation + P52 per-file T1 delta + P53 reference-dependency format + P54 prose marker context + P55 dotfile exclusion + P56 nested agent blocks + P57 non-comment line counting). **R2 NOT triggered per code-review-convergence rule** (R1 patches content-only + empirical correction; no structural changes). **Acceptance Auditor verdict:** ✓ APPROVE — all 12 ACs verified COMPLETE; cross-coherence with §A41-1..§A41-13 sound; §Revisions row format matches A41+A42 precedent. **A35+A36 supersession:** A44 corrects the naive co-location heuristic that caused A35+A36 reverts (validate.md files are independent standalone workflows per `type: single-file` frontmatter, NOT sibling companions); A44 is evidence-grounded (filesystem survey BEFORE spec). **PAD 1 (review depth):** RESOLVED → Option A (full A41+A42 rigor) given A35+A36 prior failure; honest assessment that Option B may have been sufficient for narrower scope but Option A provides defense-in-depth at acceptable cost. **PAD 2 (numbering):** RESOLVED → §A41-14 (slot verified open before insertion). **COI:** auditor methodology-frame COI (Claude authored A44 spec + Compliance Checklist amendment in same session); pre-exec 3-layer + post-exec R1 3-layer = binding mitigation. **Forward-only application makes A44 irrevocable** for pre-A44 audits (v3/v4-locked stays locked); v5+ rules can be amended via future methodology revision (A45+) for prospective audits. **Worst-case risk:** echo-test misclassification could systematically affect v5+ audits — recommend testing against ≥3 real workflow files in next v5+ audit application; ~16 LOW findings deferred (operational clarity / future-proofing). A44 row moved §2.3 Fast Lane → §2.5 Completed. Ship count today: 5 (BUG-5 + BUG-6 + A30+A43 + A25 + A44). Total Operator Covenant work shipped today: 4 methodology amendments (BUG-5 was code; A30+A43+A25+A44 are Covenant). Meta: Option A (full A41+A42 rigor) confirmed appropriate — Edge Case Hunter's empirical empathy-map verification caught a P44 factual error that Option B (V-pass + R1) would have missed at the V-pass stage; the post-exec R1 layer specifically catches what other rounds cannot. Demonstrates the value of multi-layer review for methodology-revision specs. |\n| 2026-04-25 | **A25 shipped — decision-support archetype calibration-case audit; A10 GATE CLEARED at 3/3 (vs A39's 1/3).** Locked-methodology application of canonical OC-R1..OC-R7 (Compliance Checklist lines 90-96) to `bmad-portfolio-status/step-01-scan.md` (1 skill × 7 rights = 7 cells per [convoke-report-operator-covenant-audit-decision-support-supplement-2026-04-25.md](convoke-report-operator-covenant-audit-decision-support-supplement-2026-04-25.md)). **Pre-execution V-pass R1 (10 patches P1-P10):** parallel adversarial + edge-case review caught AC12 false-claim (both samples Amalik-authored, not different authors), AC9 cross-audit version-mismatch (v3 N_total + v4 N_effective incommensurable — must be side-by-side not summed), AC10 PAD 2 spec-lock violation (resolved at V-pass to Option A: execute A10), AC4 missing fallback for step-01 representativeness invalidation, AC3 §A41-12 invocation reframed as Calibration-Case Audit (not Targeted Gap-Fill), AC11 specified §A41-9 as the blocking gate-counting rule. **Mid-execution methodology drift caught (P11):** spec used non-canonical 7-rights list (Right to revoke / Right to a sound mental model / Right to non-blocking failure are NOT in the Covenant); halted, surfaced to operator (Option 1: correct + re-execute), P11 patch replaced with canonical OC-R1..OC-R7, re-scored 7 cells, re-ran A10 with canonical rights — A10 cleared on first canonical pass. **Cell verdicts (canonical):** 4 N/A vacuous (R1/R2/R3/R5 — step-01 has no operator-decision branches), 3 PASS evaluable (R4/R6/R7 reading-dependent). **A10 R2 outcome:** 3/3 pairwise reviewer agreement on §A41-6 escape-clause cell selection (OC-R7 expected-FAIL + OC-R4 + OC-R6 — no borderline cells in matrix). **Misprediction logged per §A41-6:** main auditor predicted OC-R7 FAIL under strict per-step counting; both blind reviewers identified §2.6 interaction-round semantics make step-01 OC-R7 vacuous; verdict committed PASS reading-dependent + §9.1 ambiguity logged. **Cross-audit aggregate:** decision-support archetype N=2 achieved (was 1); single-sample-with-COI dependency broken on archetype-diversity dimension (decision-support for backlog management vs portfolio prioritization — distinct functions); operator-author dependency persists (both Amalik-authored — Tier-0 disclosure-only per §A41-10). **Cross-audit insight (§6.1):** OC-R7 verdict diverges between samples — enhance-backlog FAIL on qualify-menu density vs A25 PASS on auto-transit display step; archetype-level signal: R7 violations cluster in operator-decision-rich UX (menus/forms), not in display-only UX — actionable for Epic 2 Story 2.1 retrofit prioritization. **2 rubric ambiguities surfaced for future §A41 revision:** (9.1) OC-R7 interaction-round vs per-step semantics for display-only steps; (9.2) §A41-9 portfolio-vs-calibration-audit Publication Gate counting clarification. **Retrofit candidates from A25: NONE** (3/3 PASS on evaluable cells; calibration-case scope means no archetype-level T1 trigger). **convoke-doctor gate clean** (only pre-existing BUG-3 + BUG-4; A25 file passes). **COI:** auditor methodology-frame COI (Claude authored A25 spec + report + §A41-Clarifications same session) + operator-author COI (Amalik both samples). A25 row moved §2.3 Fast Lane → §2.5 Completed. Ship count today: 4 (BUG-5 + BUG-6 + A30 + A43 earlier; A25 now). Meta: clean execution-time methodology-error catch-and-fix demonstrates the audit framework is genuinely robust — V-pass missed the rights-list error, but execution surfaced it via the auditor's own confusion when asked to map cells to spec rights; corrective patch + re-execution converged at 3/3 A10 vs A39's 1/3 (cleaner rubric application on canonical rights). |\n| 2026-04-25 | **Triage by Winston: deferred-work.md re-triage — 4 raw intakes logged (IN-135..IN-138), 0 lane rows added.** Re-run after the prior 2026-04-25 Triage sweep (IN-117..IN-134) was found to have missed correct dedup baseline on initial extraction. Re-extraction against IN-89..IN-134 + Fast Lane IDs T16..T24, I76..I91, U15..U18, A45, BUG-3..BUG-5, D11, D12, I58 confirmed full absorption of all v63-1a-*, v63-2-*, v63-3-1, v63-3-2, lint-1-1, mig-test-1-1 deferreds. **True net-new: 4 items only**, all routed as raw intakes (no lane) per qualifier judgment: **IN-135** marketplace.json `module_definition` field gap (Story 3.1 follow-up — pickup at next 3.1 re-engagement); **IN-136** PluginResolver re-verification (blocked on upstream BMAD marketplace CLI); **IN-137** A39 D-A1 ≤2-sentence cap for compound-mechanism cells (methodology decision deferred to v4+ Covenant refresh); **IN-138** A39 D-A3 Scout R6 re-eval auto-decide branch (methodology decision deferred to v4+ refresh). **Confirmed cosmetic-only / no-action:** v63-3-3 R1+R2 (6 validation-log doc nits), v63-3-4 R1+R2 (24 defensive/cosmetic items), BUG-5 D-A1..D-A4 (4 speculative). Bug Lane: 0 new. Fast Lane: 0 new. Initiative Lane: 0 new. Dropped: 0. No new portfolio proposals. Source artifact (deferred-work.md) preserved unchanged. Meta: prior sweep's IN-117..IN-134 + corresponding Fast Lane qualifications were sufficient — re-triage confirms the dedup miss did not cause artifact loss; the original missing items surface here as 4 net-new tracking entries to close audit completeness. |\n| 2026-04-25 | **BUG-6 shipped — Story 3.1 skill-dir test-fixture lag.** Side-fix discovered at Story 3.4 dev-story Task 0.1 baseline gate (`/bmad-dev-story v63-3-4` HALT — 8 pre-existing integration test failures). Story 3.1 migrated Vortex agents from flat `.md` → `/SKILL.md` skill-dirs but did not propagate the layout shift to integration test fixtures. Mechanical path-expectation updates across 3 test files: `tests/integration/fresh-install.test.js` (5 path constants in failing tests + 4 vacuously-passing references in agent-content-matches-package-source describe block now actually exercise byte-comparison), `tests/integration/convoke-doctor.test.js` (3 fixture-creation loops switched from flat-file write to `ensureDir + SKILL.md` write; \"empty agent files\" test changed import from `AGENT_FILES` legacy → `AGENT_IDS`), `tests/integration/upgrade-cli-e2e.test.js` (import switched `AGENT_FILES` → `VORTEX_SKILL_PATHS` post-3.1 export; loop iterator + error message updated). 0 production code touched. Verified: `npm run test:integration` 79/8/0 → 87/0/0 (+8 newly passing, 0 regressions); `npm test` unit suite 1423/0/1 unchanged. Side-commit handled off Story 3.4 branch per Story 3.3's R2-A1 + BUG-5 pattern — keeps Story 3.4 scope-pure. RICE 5.6 (R:7 every-dev I:2 baseline-restoration CF:80% E:2). Story 3.4 unblocked for Task 0.1 retry post-commit. Bug Lane drops to 2 rows (BUG-3 + BUG-4 remain). |\n| 2026-04-25 | **BUG-5 shipped (Path A — delete dead parallel entry + add invariant test).** Highest-priority Bug in Convoke history (RICE 7.2) closed. `scripts/update/migrations/3.0.x-to-4.0.0.js` deleted; registry entry removed at `registry.js:95-101`; comment block rewritten to document chain-via-taxonomy intent and pin the \"at most one entry per fromVersion\" invariant. New test `Registry invariants > at most one migration per fromVersion (BUG-5 guard)` added to `tests/unit/registry.test.js` (+20 LOC); existing chain test at line 150-156 description tightened from \"(parallel entry for 3.0.x users)\" to \"(chain via 3.1.x for taxonomy)\"; sibling comment refs in `3.1.x-to-4.0.0.js` + `3.2.x-to-4.0.0.js` redirected from deleted `3.0.x-to-4.0.0.js` to `3.3.x-to-4.0.0.js` base + standalone rationale text; `registry.js:82` description on `3.0.x-to-3.1.0` tightened to mark it as required hop (was misleadingly framed as \"parallel entry\"). Round 1 review (Blind + Edge Case + Acceptance Auditor in parallel) surfaced 3 Blind Hunter HIGHs **all disprovable** on cross-reference verification (sibling files require `'./3.3.x-to-4.0.0'` not the deleted file; `getMigrationsFor('3.0.5')` chain still reaches 4.0 via 3.1.0 hop; v4.0 not yet shipped so no real user has the deleted migration name in `migration_history`). 0 HIGH after triage → convergence at Round 1; Round 2 not triggered (content-only patches). 4 patches applied: P1 BUG-5 row moved §2.2 → §2.5; P2 this Change Log entry; P3 chain-test description rename; P4 registry:82 comment tighten. 4 defers logged to `deferred-work.md` (D-A1 broaden invariant via `matchesVersionRange` for forward-defense against `'3.0.0'` exact + `'3.0.x'` wildcard collision; D-A2 `registry.MIGRATIONS` mutation safety in tests; D-A3 phantom `migration_history` for hypothetical pre-shipped 3.0.x users; D-A4 doc-nit phrasing tweaks from Blind Hunter). Story 1A.4 D2 partially undone: original \"completeness\" framing assumed 3.0.x/3.1.x/3.2.x wrappers were chain-equivalent — they are NOT for 3.0.x specifically (taxonomy migration must seed first). Per Convoke's doc-immutability convention, Story 1A.4 spec artifact is NOT amended; this Change Log entry is the canonical traceability record for the partial-undo. Full gate: `npm test` 1424 tests / 1423 pass / 1 pre-existing skip (+1 test from BUG-5 guard); `npm run lint` clean. Final diff: +32 / -30 across 5 files (1 deletion). Bug Lane drops to 2 rows (BUG-3 + BUG-4 remain). Ship count today: 3 (A30 + A43 earlier + BUG-5). Meta: cleanest convergence-at-Round-1 outcome of the day — code (vs. methodology-spec) ships clean when scope is bounded; same pattern as I71 / I69+I70 yesterday. |\n| 2026-04-25 | **Triage by Winston: deferred-work.md sweep — 18 intakes logged (IN-117..IN-134), 18 lane rows added.** Source: `_bmad-output/implementation-artifacts/deferred-work.md`, focused on 5 unprocessed review sections post-2026-04-23 sweep: v63-2-2 R1+R2 (5 defers), v63-2-3 R1+R2 (7), v63-2-4 R1+R2 (17), v63-3-1 R1+R2 (18), v63-3-2 R1+R2 (14). Total candidates: 61. **Gate 1 disposition:** 41 marked defer-OK (kept in deferred-work.md as audit trail per pre-existing \"fix until observed\" / speculative / cosmetic-only classifications); 20 promoted as Intake candidates; 2 bundles formed at qualify time (B1 = #4+#5 H1 test isolation; B2 = #14+#19 `--dry-run` UX) → **18 final intakes**. **Fast Lane: 18 new rows** (all `convoke` portfolio, all Backlog status). Top items by RICE: T19 npm pack JSON shape (4.8), I81 backup overwrite clobbers (4.2), I82 readdirSync deterministic order (3.6), I83 _tripleKey normalization (2.8), I84 _agentManifestPath allowlist (2.8), U18 `--dry-run` UX bundle (2.4), I85 .claude/skills/ files[] cleanup (2.1). 5 refresh-installation findings (I81/I88/I89/I90/I91) cluster on `scripts/update/lib/refresh-installation.js` — kept as separate intakes (different root causes; not amenable to single-fix bundle), but candidates for sprint-time PR bundling. Bug Lane: 0 new. Initiative Lane: 0 new. Raw intakes: 0. Dropped: 0. No new portfolio proposals. Lane re-sort: 18 items appended at Fast Lane bottom — full sort deferred per Convoke's append-then-batch-sort precedent (see 2026-04-23 + 2026-04-19 entries). Source artifact (deferred-work.md) preserved unchanged — remains audit trail for review-time defer decisions; this Triage represents §2.1 Intake projection of unprocessed defers into the lifecycle backlog. |\n| 2026-04-25 | **A30 + A43 shipped (minimal bundle) + A42 rescoped after Round 1 review.** Bundle ship attempted A30 + A42 + A43 to `convoke-epic-operator-covenant.md` per party-mode plan (John + Winston, 2026-04-25): A30 boundary semantics (strict-less-than example for T1/T2 thresholds), A42 wording unification across FR15/FR17/Story 2.1 AC #1 + Epic 2 dep bullet, A43 secondary-channel approval as operator-only. **Round 1 code review (Blind Hunter + Edge Case Hunter + Acceptance Auditor) surfaced 3 HIGH + 4 MEDIUM findings on A42 specifically:** (1) NFR8 (line 95) still reads \"highest violation counts\" (skill-centric, contradicts amended FR15); (2) Epic 2 user outcomes (line 190) still read \"skills with highest violation counts\"; (3) FR15-amended (\"triggered cells\") vs FR17-amended (\"all bottleneck rights\") cell-vs-right unit mismatch (architectural incoherence overlapping A41 territory); plus MEDIUMs on Story 2.1 title/body still skill-centric, Story 2.1 AC #2 still cross-products skills × rights, v1 baseline audit doc hardcodes ≥50% threshold, Story 2.1 AC #1 unit confusion (rights \"fire T1\" but T1 is cell-defined). A30 + A43 verified clean (5 LOW findings only, none load-bearing); A41 scope confirmed intact (no pre-emption). **Per `code-review-convergence` rule** (third Option-B resolution this month — pattern: A40 minimal 2026-04-21, A35+A36 reverted 2026-04-21, A42 partial 2026-04-25), reverted A42's 4 edits (FR15, FR17, Epic 2 dep bullet, Story 2.1 AC #1); kept A30 + A43 ship. Final diff: +3 / -1 in `convoke-epic-operator-covenant.md` (A30 boundary-semantics paragraph after T1/T2 + A43 operator-discretion clause in Story 2.3 cleared AC). **A42 rescoped:** RICE 1.6 → 1.8 (R:2→3, I:0.5→2, CF:80%→60%, E:0.5→2); description expanded to enumerate 9 surface points across 3 files + flag architectural cell-vs-right decision; **bundles-with A41**. Lane re-sort deferred per append-then-batch-sort precedent. Ship count today: 2 (A30 + A43). Meta: third clean Option-B in three weeks reaffirms `code-review-convergence` as Convoke's load-bearing scope-discipline rule — Round 1 review catches partial-unification incompleteness exactly as it caught A40's definitional cascade. Compounding pattern: methodology-spec amendments need full surface-area audit before scoping; per-item RICE estimation under-counts when unification touches >3 surfaces. |\n| 2026-04-24 | **Manual Fast Lane re-sort by Winston** — absorbed the 19 newly-appended Fast Lane items from the 2026-04-23 Triage into their correct CF-tiebreaker-correct sort positions, plus moved I58 from 0.3-tier (stale) to 0.5-tier (matches its rescored value). Insertions: U15 (4.8) at top + T18 (2.7), I79 (2.4) interleaved into 2.4 tier; U17/I76 at 2.3 tier head; U16/T16 at 2.0 tier head; T14 at 1.4 tier head + I77/A45 mid-tier; I78/I73 at 1.2 tier CF-80% head + T17 at CF-60%; I80/D12/T13 at 0.9 tier head; I75/I74 at 0.8 tier head; T15 at 0.4 tier head; D11 at 0.15 tier head; I58 moved into 0.5 tier (between I11 and I13 per CF-70% positioning). Pre-existing CF-tiebreak drift in 0.9/1.1/1.2 tiers (e.g., A11 60% before I33 70%, P22 70% before A14 80%) deliberately PRESERVED — fixing it was out of scope for this re-sort, would need a Review walk to justify per-item changes. No RICE rescoring this pass — pure positional re-sort. Gate: 126 Fast Lane rows confirmed (107 prior + 19 absorbed); descending-score property holds (single false-positive sort-violation report due to A45's regex-containing description fooling awk's column splitter — verified A45 score is 1.4). Bug Lane (3 items) and Initiative Lane (14 items) untouched. Performed via direct Edit operations rather than Review-mode walkthrough — Review mode only re-sorts items whose RICE changes, which would have required artificial CF bumps on the 19 new items. Manual edit was the lower-friction correct path for a positional-only fix. |\n| 2026-04-23 | **Triage by Winston: deferred-work.md sweep — 34 intakes logged (IN-83..IN-116), 23 lane rows added.** Source: `_bmad-output/implementation-artifacts/deferred-work.md`, focused on 6 unprocessed review sections (v63-1a-1, v63-1a-2, v63-1a-6, v63-2-1, lint-1-1, mig-test-1-1) — historical sections from 2026-04-08 through 2026-04-21 verified already-triaged into existing IN-* / shipped items via Source-column spot-check. Pre-flight: URGENT phantom-test recurrence call-out (2026-04-09) verified RESOLVED by I67 ship + standalone test pass — logged as IN-116 [DROPPED]. **Bug Lane: 3 new rows.** **BUG-5** v3.0.x chain-walker non-determinism in `registry.js` (R:3 I:3 CF:80% E:1 = **7.2** — highest-priority Bug in Convoke history; silent miss of 4.0 breaking migration on real users). **BUG-4** convoke-doctor cross-module version drift (R:4 I:2 CF:80% E:2 = **3.2**, sibling: I39+I46, linked: U9). **BUG-3** convoke-doctor `_team-factory` missing `add-team` workflow (R:4 I:2 CF:70% E:2 = **2.8**, portfolio loom, linked: P25). **Fast Lane: 20 new rows** including new top-of-lane **U15** one-shot 4.0 deprecation notice (R:6 I:1 CF:80% E:1 = **4.8**). Other notable scores: T18 upgrade.test.js compliance sweep (2.7), I79 lint-touched.js helper (2.4), I76 dynamic GitHub URL helper (2.3), U17 path-rewrite utility (2.3), T16 loader hardening + edge-case test surface bundle (2.0, absorbs 7 individual loader items), U16 bmad-dev-story checklist refresh (2.0). 2 sub-bundles formed: **T16** absorbs IN-92/93/95/96/97/98/106 (loader hardening); **T18** absorbs IN-112/113/114 (test compliance sweep). **Merged into existing**: IN-101 (`yaml` vs `js-yaml` convergence) → broadens **I58** scope to cover all `scripts/update/lib/` (rescored 0.3 → 0.5; description amended). **Dropped**: 1 (IN-116 phantom-test verified resolved). Lane re-sort: U15 inserted at top of Fast Lane (4.8 > A25 3.2); remaining 19 Fast Lane items appended at table bottom — full sort deferred to next Review-mode pass per Convoke's append-then-batch-sort precedent (see 2026-04-19 + 2026-04-20 entries). Bug Lane sorted in-place. Qualifier: Winston. No new portfolio proposals. Source artifact (deferred-work.md) preserved unchanged — it remains the audit trail for review-time defer decisions; this Triage represents the §2.1 Intake projection of those defers into the lifecycle backlog. |\n| 2026-04-21 | **I71 Round 2 formal review (post-ship validation) + D2 resolved directly at source.** User invoked `/bmad-code-review` formally after the ad-hoc Round 1 ship. Round 2 re-validated convergence: 0 HIGH (all 5 Blind Hunter concerns disproved by Edge Case Hunter's project-read verification, same outcome as Round 1), 0 patches needed. 1 new defer surfaced (**D2** — `spec-bug-2-adr-idempotent-noop-commit.md:104` marked the broad-stage narrowing as \"Not in scope\" / deferred; post-I71 this deferred item is resolved but spec didn't reflect closure). **D2 fixed directly at source** — BUG-2 spec line 104 annotated `[Defer→Resolved]` with I71 closure reference + explanation — rather than logging a defer-about-a-defer in `deferred-work.md`. This also avoided concurrent writes with the parallel v6.3 track session actively editing `deferred-work.md` (Story 1A.1 + 1A.2 defers) — parallel-tracks drift side-stepped. Per `code-review-convergence` rule, Round 2 discretionary (Round 1 had 0 HIGH); Round 3 not eligible (no patches → no structural changes). §2.5 I71 entry updated to reflect 2 rounds. No ship count change — Round 2 hardens an existing ship. Meta: the direct-fix-at-source pattern (for defers that point to stale doc references) is a cleaner discipline than the defer-about-a-defer default; consider promoting to a retrospective item if this pattern recurs. |\n| 2026-04-21 | **I71 shipped.** `scripts/migrate-artifacts.js:397-404` + `scripts/lib/artifact-utils.js:2112` — migration ADR phase now narrows `git add` scope to the paths it actually writes (new ADR + optional superseded old ADR), instead of the broad `git add _bmad-output/planning-artifacts/` that pre-I71 silently absorbed unrelated staged/modified files into the ADR commit. `supersedePreviousADR` return contract extended from `true`/`false` to `oldADRPath`/`false` — single callsite, no API break, existing test assertion `assert.equal(result, false)` preserved (not-found path unchanged). `git add --` end-of-options separator added defensively against dash-prefixed filenames. 1 round of code review: 0 HIGH, 0 patches needed — all 5 Blind Hunter concerns disproved by Edge Case Hunter's project-read verification. Convergence at Round 1. 1 LOW defer (stale doc reference in shipped historical artifact `ag-3-4-adr-supersession.md:41` — not load-bearing, doc-immutability convention preserves). Full gate: 1188/1188 unit tests pass, T4 integration 3/3 pass, migration-execution 79/79 pass. I71 moved Fast Lane → §2.5 Completed. Ship count today: 3 (A40 minimal + I69+I70 bundle + I71). Meta: third clean-shipping pattern today — confirms that **correctness-risk code ships clean when scope is bounded and the change is structurally small**, while methodology-spec amendments need more architectural investigation (caught earlier today via Option B on A40 and A35+A36). |\n| 2026-04-21 | **I69 + I70 Round 2 formal review (post-ship validation) + P1 patch applied.** User invoked `/bmad-code-review` formally after the ad-hoc Round 1 ship earlier this session. Round 2 found 0 HIGH, 5 MEDIUM, 6 LOW (mostly pre-existing / out of scope). Per `code-review-convergence` rule Round 1 had 0 HIGH so Round 2 was discretionary; user chose to apply 1 MEDIUM patch (P1 — `--filter` error message disambiguation). Pre-patch `--filter --markdown` printed generic `\"--filter requires a value.\"` which was misleading (the user DID provide an argument). Post-patch prints `\"--filter requires a value; got '--markdown' which looks like a flag. Quote the value if it must start with '--'.\"` — accurate and actionable. Content-only change (text + split conditional); Round 3 not eligible per rule. §2.5 I69+I70 entry updated to reflect 2 rounds. 6 LOW defers logged to `deferred-work.md` (equals-form, duplicate flags, empty/whitespace/single-dash filter acceptance, glob-star, skill wrapper UX, magic number exit code). Full gate: 59/59 portfolio-engine tests pass. Ship count today: 2 (unchanged — Round 2 doesn't add a new ship, it hardens the existing one). Meta note: clean example of the rule's intended operation — discretionary Round 2, zero-HIGH convergence, single-patch content-only hardening, immediate defer of UX-polish remainder to future work. |\n| 2026-04-21 | **I69 + I70 shipped as a bundle.** `scripts/lib/portfolio/portfolio-engine.js` CLI argument validation: `--sort ` now validates against whitelist (`alpha`, `last-activity`) with accurate error message listing valid values + exit(2); `--filter` now requires a value (preserves legitimate single-dash values like `-legacy` via `startsWith('--')` flag-discrimination). 1 round of code review applied 1 MEDIUM patch correcting a prefix-asymmetry regression — initial `startsWith('-')` check rejected legitimate filter values starting with single-dash, corrected to `startsWith('--')` matching pre-patch behavior for legitimate values while still catching `--filter --other-flag` (no value, next arg is flag) pattern. Convergence at Round 1 (0 HIGH findings). 4 LOW defers logged to `deferred-work.md`: equals-form `--sort=value` (pre-existing), duplicate flags precedence (pre-existing), asymmetric error message format (UX), `process.exit(2)` testability (structural). Full gate: `node --test tests/lib/portfolio-engine.test.js` 59/59 pass; manual smoke tests confirm all exit-code paths. Ship count today: 2 (A40 + I69+I70 bundle). Both I69 and I70 moved Fast Lane → §2.5 Completed. Meta: first clean ship of the day after two Option-B reversions (A40 minimal + A35+A36 reverted) — confirming Winston's earlier read that code (not methodology-spec) was the right confidence-rebuild move. |\n| 2026-04-21 | **A35+A36 bundle attempted, reverted after Round 1 review; combined rework tracked as A44.** Bundle ship attempt: 3 edits to `convoke-spec-covenant-compliance-checklist.md` — §2.4 Layer 1 extension to workflow-root companions (A36), §Operator-facing vs agent-facing text expansion with semantic test + enumerations (A35), Revisions row. **Round 1 code review surfaced 5 HIGH + 6 MEDIUM findings**, critical being Edge Case Hunter HIGH: `empathy-map/validate.md` is a *standalone workflow* (frontmatter `workflow: validate-empathy-map, type: single-file`, never `Read` from parent workflow.md) — A36's \"sibling companion\" framing is architecturally wrong. Additional HIGHs: Blind Hunter found circular Layer 1 definition (enumeration requires semantic test first), \"e.g. + or similar\" masking the rule, contradiction between §2.4 (conditional) and §Operator-facing (unconditional) on companion classification; Edge Case found retroactive invalidation of Vortex audit §4.2 with no grandfather clause, §2.6 inheritance silently expanded. **Per `code-review-convergence` rule spirit** (same Option B pattern as A40 earlier today), reverted both edits rather than patch-forward through architectural rework. Checklist restored to pre-A35/A36 state (zero diff vs HEAD). **A35 + A36 removed from Fast Lane**; combined rework logged as **A44** (Layer 1 + operator-facing text correct semantics, R:3 I:2 CF:70% E:3 = **1.4**, portfolio convoke). A44 scope: (1) filesystem survey of workflow-root files across all modules; (2) categorization (standalone workflow / step-loaded template / operator-read doc / agent-only); (3) §2.4 amendment based on categorization; (4) §Operator-facing amendment with properly-scoped enumerations; (5) §2.6 inheritance implications; (6) retroactive audit handling; (7) \"normal execution path\" definition. **IN-82** logged as Intake → A44 (supersedes IN-66/A35 + IN-67/A36 origin intakes). 4 adjacent-scope findings deferred to `deferred-work.md` (`_deprecated/` subtree, README-like files, multi-step Read attribution, A10 Cell Selection semantic effect). Second Option-B resolution today — Convoke's `code-review-convergence` rule continues operating as intended: scope-creep caught at Round 1, extracted to proper follow-up rather than forced through. |\n| 2026-04-21 | **Triage by Winston: deferred-work.md promote-now sweep — 6 intakes logged (IN-76..IN-81), all qualified to Fast Lane.** Cross-referenced all `deferred-work.md` sections against current backlog; most items were already tracked (A33/A15+A5+A10/U8/BUG-1+U7/T4 defers → existing A##/I##/T## rows) or correctly parked as speculative. **6 promote candidates found** not currently in backlog: **I71** Migration ADR phase `git add` scope narrowing (R:4 I:1 CF:80% E:1 = **3.2**, convoke — top-of-Fast-Lane tier ties with A35/A25; correctness risk per BUG-2 deferred analysis). **I69** `portfolio-engine --sort ` validation (R:3 I:0.5 CF:90% E:0.5 = **2.7**, enhance; bundles-with I70). **I70** `portfolio-engine --filter` without-value validation (R:3 I:0.5 CF:90% E:0.5 = **2.7**, enhance; bundles-with I69). **A42** Covenant Epic \"worst-scoring rights\" threshold definition (R:2 I:0.5 CF:80% E:0.5 = **1.6**, convoke; sibling to A30). **A43** Story 2.3 secondary-channel blog-post approval authority governance gap (R:2 I:0.5 CF:70% E:0.5 = **1.4**, convoke). **I72** `portfolio-engine --markdown` terminal-style interleaving structural fix (R:3 I:0.5 CF:80% E:1 = **1.2**, enhance). Raw intakes: 0. Dropped: 0. No new portfolio proposals. Lanes re-sorted: Fast Lane (I71 inserted at 3.2 tier before A35; I69+I70 inserted at new 2.7 tier between I62 2.8 and A36 2.4; A42 inserted at 1.6 before A19; A43 inserted at 1.4 between I9 and A41; I72 inserted at 1.2 between I5 and I65). Bundle observations: I69+I70 are single-PR candidates (same file, same pattern, ~1 hour combined). A42 + A43 are both Covenant Epic spec touch-ups (could bundle with A30). I71 is standalone. I72 is structural refactor, its own scope. Items correctly kept deferred in deferred-work.md: rationale parentheticals style, TOCTOU on concurrent migrations (speculative), `__dirname` under Yarn PnP (speculative), changelog verbose-gating (speculative), T3 real-npm-pack/custom-agents/interactive-prompt (all \"split if observed\"), IN-12 intake-to-shipped retrospective material, Windows execSync resolved in Round 1. Second application of `staleness-preflight-for-backlog-pickup` rule principle — systematic deferred-work.md audit caught scope drift before it caused downstream pickup problems. |\n| 2026-04-21 | **A40 shipped (minimal amendment) + A41 qualified as scoped follow-up.** Publication Gate in `convoke-epic-operator-covenant.md` amended at 5 locations (FR17 + Epic 2 dependency bullet + Story 2.1 AC + Story 2.3 Given-cleared/not-cleared) to require BOTH (a) Story 2.1 retrofit completion AND (b) at least two audits covering distinct portfolios. **2-round review story:** Round 1 applied 9 patches adding ~300 words of definitional rigor (portfolio audit = report with A10 sampling depth / locked methodology = current Checklist version / scope statement about no Checklist+Covenant amendment needed / etc.). Round 2 found the Round 1 patches themselves introduced 5 HIGH findings — \"locked methodology + current at evaluation time\" is a contradiction in terms; A10 is skill-scoped not portfolio-scoped (gate unsatisfiable for single-skill portfolios); `convoke` portfolio is cross-cutting (trivially satisfies coverage-breadth); \"substantially change audit criteria\" undefined loophole; inconsistency across hunks — plus 4 MEDIUM. Per `code-review-convergence` rule spirit, **stop-patching-and-defer** chosen (Option B) over patch-forward: Round 1 definitional expansions were reverted to minimal form; the core amendment (BOTH + ≥2 distinct-portfolio audits) shipped standalone. **A41** (Publication Gate definitional rigor, Fast Lane, RICE 1.4, portfolio convoke, R:3 I:2 CF:70% E:3) logged to resolve Round 2's 5 HIGH + 4 MEDIUM findings as its own scoped work — define \"portfolio audit\" at correct (skill-level) granularity, handle `convoke` cross-cutting exclusion, replace \"locked methodology + current at evaluation\" with a single coherent concept, define \"no regressions\" baseline, cap retrofit cascade, handle A29 single-skill exemption, align lines 439/451 AC with FR17/Story 2.1. **IN-75** logged as Intake → A41. 4 Round-1 defers written to `deferred-work.md` (\"worst-scoring rights\" pre-existing, rationale parentheticals style, secondary-channel approval loophole, T1/T2 cascade with ≥2 portfolio audits). A40 moved Fast Lane → §2.5 Completed. Meta: this ship is Convoke's clearest example to date of `code-review-convergence` rule operating as intended — Round 2 findings were the stop signal, not the trigger for more patches. Scope-creep caught and extracted to follow-up rather than absorbed into the original ship. Ship count today: 1. |\n| 2026-04-21 | **Triage by Winston: Logged 2 intakes (IN-73, IN-74) from party mode (John + Winston, P21 next-best-move discussion).** Qualified 2 to Fast Lane — **A39** Gyre Covenant audit (locked-methodology application to 4 Gyre agents × 7 rights = 28 cells; required for Publication Gate coverage-breadth minimum), R:4 I:2 CF:80% E:3 = **2.1**, portfolio gyre. **A40** Epic 2 Publication Gate scope bug (gate today enforces retrofit completion only; amend to require ≥2 team audits), R:3 I:1 CF:90% E:1 = **2.7**, portfolio convoke. A39 bundles-with A40 (Gyre audit produces the second-team evidence; gate amendment codifies the coverage requirement — both needed before Story 2.3 Publication can unlock). Raw intakes: 0. Dropped: 0. 1 observation set aside (covenant-compliance rule demand-signal check, `git log + PR scan` ~10 min) — operator may escalate later if they choose to run it. Lanes re-sorted: Fast Lane (A40 inserted at 2.7 between I62 2.8 and A36 2.4; A39 inserted at 2.1 tier before D2 via CF-desc tiebreak). Party outcome: P21's \"next best move\" resolved to \"evidence gather before Epic 2 sprints\" — Gyre audit + gate amendment prerequisites surface before Story 2.1 becomes actionable. |\n| 2026-04-21 | **Triage by Winston: Logged 2 intakes (IN-71, IN-72) from post-Review gap analysis.** Qualified 2 — Initiative Lane: **P25** Team Factory Phase 3 (add-agent + add-skill extension workflows, TF-FR25+TF-FR26), R:4 I:2 CF:60% E:7 = **0.7**, portfolio loom, qualified-but-parked pending P21 Story 2.2 activation; formalizes the previously-informal \"external Phase 3 Loom Add Skill\" blocker label. Fast Lane: **I68** P14 §2.5 Completed entry correction (claims \"3 epics, 16 stories\" but Phase 3 unshipped per `_bmad/bme/_team-factory/workflows/step-00-route.md:42-48`), R:2 I:0.5 CF:100% E:1 = **1.0**, portfolio loom. Both findings deferred-from Post-Review cleanup pass 2026-04-21. Raw intakes: 0. Dropped: 0. No new portfolio proposals. Lanes re-sorted: Fast Lane (I68 inserted at 1.0 tier, CF:100% tiebreaks before I28 CF:80%), Initiative Lane (P25 inserted between P7 1.2 and P8 0.5). P25 unblocks-semantically: P21 Story 2.2. I68 bundles-with P25 (scope-of-completion fix is the data-integrity counterpart to the new trackable initiative). Also completes the \"Team Factory Phase 3 gap\" post-Review queue item surfaced during P12 Dependencies review earlier this session. |\n| 2026-04-21 | **§3 Appendix RICE sweep by Winston (follow-up to prose cleanup).** Scanned all 12 Appendix entries for RICE-vs-row lag. Fixed 3 lags: **S3** Appendix RICE 3.6 → **4.0** (lag from today's Review pass); **U9** Appendix RICE 1.9 → **2.1** (lag from 2026-04-19 rescore); **ILE-1** Appendix RICE 2.0 → **2.7** (lag from 2026-04-19 rescore). 9 entries matched (U10+P23+A8+A9, P9, P12, P21 [just rewritten], P3, P13, P7, P8, P2). All Stage cells across Appendix match their row counterparts — no Stage drift detected this pass. Zero RICE scoring changes (pure cross-reference synchronization). The pattern is clear: §2.4 Initiative Lane row updates are immediate per Review/Triage, but §3 Appendix narrative entries are manually kept in sync — a known ergonomic gap. If this sweep repeats, consider either a validator (flag Appendix RICE != row RICE) or demoting the Appendix to pointer-only references into the lane row. Deferred as a potential future backlog item pending evidence this recurs. |\n| 2026-04-21 | **Prose cleanup by Winston: backlog narrative sections reconciled to post-Epic-1 state.** Six items executed in order: (1) **§3 Appendix P21 entry rewritten** — title \"Experience Contract\" → \"Operator Covenant\", Stage \"Qualified\" → \"Epic 1 ✓ \\| Epic 2 deferred\", RICE 4.8 → 9.0, full artifact enumeration (Epic file + Covenant + Checklist + 2 audits + retro + 5 stories), two-epic scope expanded with Publication-Gate rationale, strategic positioning (Blue Ocean wedge), axiom + JTBD. (2) **§1 Notes paragraph (line 433)** — removed P21 from \"Qualified with no planning artifacts\" list; added dedicated P21 bullet referencing Epic file status. (3) **P12 Dependencies review** — no edit needed (forward-pointer convention per backlog-format-spec §Dependency Notation); verified \"Phase 3 Loom Add Skill\" (P21 Story 2.2 blocker) refers to **Loom Team Factory Phase 3** (TF-FR25/26 per `loom-epic.md:84-87`), not P12/BMB. Gap surfaced: Team Factory Phase 3 is a real blocker with no Initiative Lane row — queued for Triage intake when Story 2.2 is prioritized. (4) **v6.3 Adoption Architecture verified** at `convoke-arch-bmad-v6.3-adoption.md` (status: complete, completedAt: 2026-04-12); row A indicator correct; updated stale one-line hook in memory MEMORY.md. (5) **P24 soft-prereq wiring for P21 Story 2.3** — appended sequencing-pref sentence to P24 Description (\"external publication shouldn't point at workflow-output path\"); P21 Appendix also captures reciprocal linkage. (6) **U9 → P3 sequencing wiring** — appended to P3 Description that U9 shipping first drops P3 E:4 → E:2 (manifest reader pre-exists); on-ship-of-U9, re-score P3. Zero RICE changes in this pass (prose and cross-reference only). Additional drift surfaced and queued (not fixed this pass): ILE-1 Appendix shows RICE 2.0 but row is 2.7 — likely same lag pattern across other Appendix entries; next sweep should check all 12 entries. |\n| 2026-04-20 | **Review by Winston: Initiative Lane rescoring pass (stage/dependency drift triage).** Rescored **2 items** — Bug: 0, Fast: 0, Initiative: 2. Confirmed: 11, skipped: 0. **P21** R:9→10 CF:80%→90% E:3→2 (score **4.8→9.0**, party-mode consensus: Winston + Bob + John + Victor — Reach ceiling realized via CLAUDE.md rule wiring of `covenant-compliance-for-convoke-skills`; Confidence uplift from 2 audit runs + 5 stories + retro; Effort rebased to Epic-2-remaining). **S3** R:9→10 (score **3.6→4.0**, Reach ceiling — every first-time Convoke installer). Lanes re-sorted: Initiative Lane (no row reorder — P21 stayed #1, S3 stayed #2; scores only). Staleness pre-flight observation: §2.4 row for P21 was already current post-Epic-1-ship (Stage, Artifacts, Dependencies all reflect 2026-04-19 state). Drift surfaced is **downstream** — §3 Appendix P21 entry (lines 581-589) still reads \"Experience Contract / Qualified / no artifacts\" + §1 Notes paragraph (line 433) still lists P21 in the \"Qualified with no planning artifacts\" group. Post-Review prose cleanup queued: §3 Appendix rewrite, §1 Notes fix, P12 Dependencies review, v6.3 Architecture artifact verification, P24↔P21-Story-2.3 soft-prereq wiring, U9→P3 sequencing wiring. **First real-drift hit** counting toward I62 unblock trigger (staleness-preflight-for-backlog-pickup applications ≥ 3). |\n| 2026-04-20 | **Triage by Winston: Logged 5 intakes (IN-66..IN-70) from code review Round 2 of A33.** Qualified 4 to Fast Lane: **A35** (operator-visible boundary formalization in Checklist §171, R:4 I:1 CF:80% E:1 = **3.2**), **A36** (sibling files `template.md`/`validate.md` escape §2.4 Layer 1/2 enumeration, R:3 I:1 CF:80% E:1 = **2.4**), **A38** (cross-module + cross-workflow concept inheritance rule, R:4 I:1 CF:70% E:2 = **1.4**), **A37** (step-01 workflow.md-Read echo re-introduction-or-fresh semantics, R:2 I:0.5 CF:70% E:1 = **0.7**). All four delegated from A33's `` Ask-First deferrals — none re-surface IG1/IG2 (those resolved at Round 1). 2 findings absorbed into existing **A13** (OC-R7 concept-counting) as concrete sub-examples: Steps Overview bullet headers + alias/parenthetical expansion — no new intake, A13 description extended. 1 dropped: **IN-70** (new FAIL surfaces at dense Layer 1 workflows like assumption-mapping) — already captured in Epic 2 Story 2.1 retrofit scope; logged as `[DROPPED]` for audit trail. Bundling observation: A35 + A36 cover distinct §171 + §2.4 scope surfaces both introduced/load-bearing by A33; A38 is a separate rule space; A37 is narrow-edge. Raw intakes: 0. New portfolio proposals: 0. Qualifier: Winston. |\n| 2026-04-20 | **A33 shipped.** Compliance Checklist §2.6 \"Workflow-inherited concepts\" extended with **four** new paragraphs (expanded from initial two during Round 1 review) closing the workflow.md-vs-step-01 scope silence: (1) **Workflow.md as \"earlier step\"** canonicalizes broader reading (workflow.md concepts pre-existing for all step files *within the same workflow*); (2) **Scope: operator-visible only** — inheritance restricted to operator-visible portions per §\"Operator-facing vs agent-facing text\" (IG1 decision); (3) **Inheritance unconditional** w.r.t. Layer 1's own verdict — §2.4 worst-case aggregation already captures composition (IG2 decision); (4) **Anti-escape-hatch clause** — rule governs re-introduction only, no new threshold, workflow.md still subject to OC-R7 at Layer 1 under existing §2.6 rules. Winston consultation 2026-04-20 selected broader reading over narrower on four grounds (operator cognitive model / §2.4 Layer 1 consistency / natural reviewer behavior / avoids compositional artifact). Broader reading was already reproducibility-validated in audit §7.1. **Round 1 adversarial review (Blind Hunter + Edge Case Hunter + Acceptance Auditor)** surfaced 2 Ask-First intent-gaps (pre-flagged in spec `` Ask-First clause) + 2 bad_spec findings + 2 patches + 10 defers; all four HIGH/MEDIUM findings resolved inline via pragmatic-path amendments (IG1 = operator-visible only; IG2 = unconditional inheritance; BS1 = anti-escape-hatch grounded in existing §2.6 rules; BS2 = \"within the same workflow\" qualifier restored). Propagations: (a) audit report §9 ambiguity #5 annotated **Resolved 2026-04-20 via A33**; (b) Checklist Revisions row (2026-04-20, rule-content-edit) reflects four-paragraph amendment; (c) A33 moved Fast Lane → §2.5 Completed (rescore history preserved: 2.4→4.8 per 2026-04-19 rescoring pass). Ship count today: 5. |\n| 2026-04-20 | **A28 + A29 bundle-shipped.** Compliance Checklist's former `## Reproducibility gate (multi-skill audits)` section restructured into `## Selection Discipline` parent with three subsections reflecting three orthogonal selection layers: **§Skill Selection** (A29, new — declare dimensions + per-pick classification + selection intent [independent verification / pattern verification / mixed audit]), **§Step Selection** (A28, new — ≥2 steps per picked skill OR documented single-step scoping), **§Cell Selection** (A10 content preserved verbatim under new header). Winston consultation reframed A29 from \"forbid similar picks\" to \"require pre-registered intent.\" Epic 2 Story 2.1 amended with \"A24 status under new Selection Discipline\" paragraph classifying A24 as a **mixed audit**: picks 1 and 3 (assumption-mapping + hypothesis-engineering, both lacking template+validate scaffolding) form the pattern-verification cluster for the HC-contract-at-step-01 pattern; pick 2 (empathy-map, has scaffolding) is the independent variation. R7-V1/R7-V2 retrofits represent the same shared architectural pattern in two workflows (the twin cluster), not two independent datapoints; empathy-map PASSES pacing with no retrofit needed. T1 firing math unaffected by the pattern-dedup reclassification. Retrofit scope unchanged (forward-only). **Round 1 adversarial review caught 2 HIGH findings** on the initial A24 re-labeling (Winston's handoff brief incorrectly identified twins as picks 2+3 and flattened the mixed audit to pure pattern-verification); corrected by reading the A24 report §2 directly, which explicitly documents empathy-map as having template+validate scaffolding while the other two picks lack it. 7 patches applied covering all 9 findings (the 4 A24-reframing findings folded into one combined Epic paragraph rewrite; A28 rationale example de-circularized; backlog combined row split into two separate rows; Revisions entry moved to end of table; propagated A24 mixed-audit correction into backlog + checklist Revisions). 2 dismissed (overlapping \"Applies to:\" wording in sibling subsections — non-blocking, subsections self-contained by design; A29 primary-dimension tiebreaker — consistent with declared declarative-not-prescriptive posture). Convergence rule: Round 1 had HIGH → Round 2 eligible; HIGH patches were content-only (no structural changes), so Round 2 runs only at operator discretion. Out of scope: A33 glossary (separate concern), A24 retroactive re-audit (A26 is the independent-verification path). A28 + A29 moved Fast Lane → §2.5 Completed. Ship count today: 4. |\n| 2026-04-20 | **BUG-2 shipped.** `scripts/migrate-artifacts.js` ADR phase now idempotent: on re-run with byte-identical content, `git diff --cached --quiet` detects the empty staged tree and logs `\"ADR already current\"` instead of taking the commit path that previously errored into a misleading `\"ADR generation failed\"` warning. Path b adopted per Winston consultation — paths a (`--allow-empty`, history pollution) and c (monotonic counter, defeats idempotency) rejected. T4 `ALLOWED_WARNING_PATTERNS` tightened to the single legitimate first-run warning; positive stdout assertion added on test 3 to lock in the no-op branch. 2 review rounds, 4 patches (0 HIGH): Round 1 discriminated `err.status === 1` from genuine git errors + positive stdout check; Round 2 corrected two comment inaccuracies (git's `--quiet` contract is \"non-0, non-1 = error\" not \">1\"; rethrown errors surface the underlying message but the outer catch still prefixes \"ADR generation failed:\"). Convergence at Round 2 (comment-only patches, no Round 3 eligible). Full gate: `npm test` 1178/1178, T4 3/3. 2 deferred: broad `git add _bmad-output/planning-artifacts/` (failure-mode shifted loud→silent post-fix) + TOCTOU on concurrent invocations. **IN-63** logged (cross-day filename collision). BUG-2 moved Bug Lane → §2.5 Completed; Bug Lane now empty. Ship count today: 2. |\n| 2026-04-20 | **I67 shipped.** New `scripts/test-runner.js` (45 lines, zero deps) replaces POSIX shell globs in `package.json` test scripts. For each passed root dir it recursively collects `*.test.js` files (skipping `node_modules` + dot-prefixed dirs) and invokes `node --test` via `process.execPath` with the explicit file list. 4 scripts rewired (`test`, `test:p0`, `test:integration`, `test:coverage`). **Architectural pivot caught pre-commit.** Winston's first-pass recommendation (path a1 — `node --test ` native recursion) failed empirically on Node <22.6 when Amelia ran the verification gate; `node --test tests/unit/` treats the path as a single test file, not a directory to recurse (dir-arg recursion was added 22.6.0). Amelia reverted, re-consulted Winston, pivoted to path a2 (helper script). Lesson: when an architectural call rests on a specific runtime contract, cite the version that introduced it. 2 review rounds: pre-commit oneshot (3 patches — `process.execPath` over bare `node`, try/catch around `readdirSync`, signal-aware exit) → formal Round 1 adversarial (4 patches — `node_modules`/dot-dir skiplist + doc note on recursion semantics, `result.error` spawn-failure check, ENOTDIR ergonomic error when a file is passed as root, `128 + signum` POSIX signal exit). Convergence at Round 1 (0 HIGH). Full gate green: `npm test` 1178/1178, `test:integration` 85/85, `test:p0` 642/642, `test:coverage` 1905/1905 + 90.56% line coverage. 2 follow-ups logged: **IN-64** (add `windows-latest` to CI matrix to lock in cross-platform) + **IN-65** (reconsider `engines: \">=22.6.0\"` during Convoke 4.0 — bumping the floor restores native dir-args and deletes this helper entirely). I67 moved Fast Lane → §2.5 Completed. Ship count today: 1. |\n| 2026-04-19 | **Review by Winston: targeted 1.6-1.8 Fast Lane drift-tier pass (Path A — walked all 13 items).** Rescored 3 items: **A6** CF:70→90 1.8→**2.3** (pattern validated via I49/badges-json/dynamic-shields ships today); **A28** I:0.5→1 1.6→**3.2** (weights A26-unblocking methodology gate, parallel to A29/A33); **A25** I:1 1.6→**3.2** (decision-support archetype expansion unblocks v2 Covenant coverage, methodology-compounding). Confirmed K on 10: I60, A30, I7, I23, A19, A31, D6, I18, I36, A16 (I7/I23/A16 pre-confirmed in top-25 walk earlier same session). Applied lane re-sort to the full 1.0-4.8 tier in one atomic edit (A25/A28 jumped to rank 4-5; A6 joined 2.3 tier; 1.8 + 1.6 cohorts moved up above 1.2 items — pre-existing drift cleared). Also moved A13/A14/A16 (pre-existing drift at 1.17/1.2/1.8 scores sitting far down) to their correct sort positions. Fast Lane is now correctly sorted from 4.8 down to 1.0. Skipped: 0. Unvisited: 0. Minor tiebreak note: A14 (1.2 CF 80%) sits after P22 (1.2 CF 70%) pending a future CF-ordering sweep within the 1.2 tier — non-material. |\n| 2026-04-19 | **Review by Winston: Rescored 8 items across 3 lanes (Top-25 by score, tiebreak CF-desc then lane Bug>Init>Fast).** Bug: 1 (**BUG-2** I:1→2, 2.7→**5.4** — bug Break-class impact floor applied; new top of whole matrix). Fast: 5 (**I67** CF:60→70 3.6→**4.2** deterministic Windows failure mode; **A33** I:0.5→1 2.4→**4.8** weights A26-unblocking methodology gate; **A29** I:0.5→1 2.4→**4.8** parallel reasoning to A33; **I2** R:6→4 I:1→0.5 2.4→**0.8** \"manual publish worked fine for 3.3.0\"; **I1** I:2→1 1.8→**0.9** consistency with I2 downgrade). Initiative: 2 (**ILE-1** CF:60→80 2.0→**2.7** reflects IR+architecture+deps cleared; **U9** CF:70→80 1.9→**2.1** U7/U8 de-risked the pattern). Confirmed: 17. Skipped: 0. Lanes re-sorted: Fast (partial — rescored items moved to correct sort position; pre-existing drift at 1.6-1.8 tier preserved per step-r-03 minimal-diff discipline), Initiative (ILE-1 moved up to position after P9). Bug Lane un-sorted (only 1 item). Top-of-matrix shift: BUG-2 5.4 now leads P21 4.8; A33+A29 climbed to top of Fast Lane. |\n| 2026-04-19 | **Triage by Winston: Qualified 1 existing intake (IN-43 → A26 Vortex-wide HC-schema-at-step-01 pattern audit).** Intake was logged 2026-04-19 during A24 Round 1 code review (Blind Hunter flagged as unsourced speculation in A24 report §6.2) but not previously triaged. Qualified to **Fast Lane**, portfolio **vortex**, RICE **R:4 I:2 CF:70% E:5 = 1.12**. Rationale: I=2 weights the downstream Epic 2 Story 2.3 Publication-Gate enablement (broader Covenant coverage evidence); CF=70% reflects high methodology confidence (A10-validated) but residual uncertainty about pattern extension to all 8 candidate workflows; E=5 projects ~2 sessions (slightly larger than A24's 3-workflow scope). Qualifier COI note: Winston recommended A26 in-session before qualifying it; bias disclosed at qualification time. No new intakes this pass. Raw intakes: 0. Dropped: 0. Fast Lane has accumulated sort drift from prior sessions (A13/A14 out of position); flagged for a Review-mode rescoring sweep. |\n| 2026-04-19 | **Triage by Winston: Logged 6 intakes (IN-57 through IN-62) from deferred-work.md pass + qualified all 6 to Fast Lane.** Pulled 3 untriaged items from T4 ship deferrals + 3 from Story B.4 (portfolio-rules Jest→node:test) deferrals that outlived the C1 phantom-test recovery initiative. Qualified items: **I67** (cross-platform `npm test` glob — Windows break risk, score **3.6**, new top-of-Fast Lane); **I66** (migration scanner 5-commit boundary, 1.2); **T9** (zero-ungoverned baseline idempotency test, 0.9); **T12** (UTC-midnight `git-recency-rule` flake, 0.8); **T10** (T4 test 4 unstaged-file variant, 0.4); **T11** (`cpMock?.restore()` defensive-chain rollout, 0.2). 32 overlapping items detected (IN-10..IN-56 already logged or shipped) — skipped per overlap resolution. 7 observations retained as \"too speculative / defer until observed\" (T3 npm-pack / interactive prompt; BUG-1/U7 `__dirname` fragility; BUG-1/U7 verbose-gating; T4 Windows execSync already resolved). Raw intakes: 0. Dropped: 1 (IN-12 intake-to-shipped governance smell — retrospective candidate, no deliverable). Applied staleness pre-flight (A27): all 6 new items GREEN on existence/dependency/code-anchor/semantic-anchor. |\n| 2026-04-19 | **I64 shipped.** `runScript` helper (`tests/helpers.js:153`) now returns `{ exitCode, stdout, stderr, timedOut, signal }` with `exitCode` guaranteed to be a finite integer (null-but-errored coerced to 1). Pre-I64, `execFile` timeouts left `err.code = null` and leaked out as `exitCode: null`, producing opaque `null !== 0` test diagnostics — the exact pain T4 Round 1's warning-guard surfaced. New `tests/unit/helpers.test.js` (4 tests) locks the contract: clean exit / non-zero exit / 200ms-timeout-on-hang / result-shape. Full gate: 1177 unit (+4) / 85 integration. **Staleness pre-flight run on I64 (first application of A27): GREEN on all 4 checks** — Existence ✓ (`tests/helpers.js:153` + `scripts/portability/convoke-export.js:166` caller class unchanged), Dependency ✓ (execFile semantics unchanged — A27 rule touched spec only, not Node runtime), Code-anchor ✓ (intake cited `runScript` + `err.code === null`; both verified in current HEAD), Semantic-anchor ✓ (no rubric/rule drift since intake 2026-04-19). No drift detected — pre-flight itself was completed in <30s. I64 moved Fast Lane → §2.5 Completed. Ship count today: 13. |\n| 2026-04-19 | **A27 code review — 1 round, convergence reached.** 11 patches applied (4 HIGH, 5 MEDIUM, 2 LOW): **P1** corrected paper-trail — initial ship-record claimed a `bmad-help` workflow-step reminder was added, but that edit was reverted because `.claude/skills/` is gitignored (local-only, doesn't ship to other users); rule is now ship-as-rule-only, `bmad-help` integration properly deferred to I63 Phase 3. **P2** added cross-reference to sibling rule `spec-verify-referenced-files` — Check #3 is a pickup-time application of that existing authoring/ready-gate rule; operators don't double-execute. **P3** added \"no-cited-surface\" exemption for items like `gh auth` / `NPM_TOKEN` setup where checks have no surface — exempt by construction. **P4** softened `IN-53..IN-56 → A31..A34` prose to \"four intakes logged with lane-ID pointers\" — macro-claim preserved. **P5** added \"OR 2 weeks elapsed\" escape hatch to rule text (aligning with triage Change Log); specified application-recording substrate (Change Log entries of the form *\"Staleness pre-flight run on item X: GREEN/YELLOW/RED\"*). **P6** added one concrete YELLOW + RED example per check. **P7** clarified trigger-blocked exemption uses full-elapsed-window at unblock (not fresh clock) — deliberate. **P8** added Check #4 (semantic-anchor) for rubric/rule/concept drift — covers the drift class the original three checks missed. **P9** cited 3-day threshold rationale (Convoke drift-to-surface lag ≤24h, 3× multiplier for reviewer-latency slack). **P10** clarified parallel-tracks trigger has no age exemption. **P11** changed RED \"drop it if obsolete\" → \"move to §2.5 Absorbed\" per `backlog-format-spec.md`. **Meta**: review ironically caught A27's own shipping paper-trail drift — the exact class the rule exists to prevent. Convergence at Round 1 (spec-only; no production code; no HIGH findings unresolved). A27 §2.5 Completed row + this Change Log entry reflect accurate shipped scope (rule-only, 4 checks, 4 exemption classes). |\n| 2026-04-19 | **A27 shipped.** New `project-context.md` rule `staleness-preflight-for-backlog-pickup` encoded (rules file now at 15 rules). Rule's \"Why\" section cites 3 concrete drift events from 2026-04-19 — evidence-grounded rather than hypothetical. Forward-looking note cross-references I62 (Phase 2 mechanization, Blocked on evidence from this rule). A27 moved Fast Lane → §2.5 Completed. Ship count today: 12. |\n| 2026-04-19 | **Partial-triage completion: materialized 4 missing Fast Lane rows (A31, A32, A33, A34) from pre-logged intakes IN-53 through IN-56.** Earlier A24 Round 1+2 triage session logged 4 intakes with `→ A31..A34` pointers but never wrote the Fast Lane rows — exactly the drift-risk-under-parallel-tracks pattern Winston's `staleness-preflight-for-backlog-pickup` rule (A27 in backlog) is designed to catch. Winston qualified each from existing intake descriptions: **A31** Epic v1 baseline vs oc-1-1 matrix inconsistency (score 1.6), **A32** R6 rubric at intake-only steps (1.1), **A33** §2.6 glossary workflow.md-vs-step-01 scope (2.4), **A34** §8.1 Mitigation Gate refinement (0.6, **Blocked** on oc-2-1 kickoff). All 4 already have deferred-from attribution from intake sources. Drift flag: this partial-write would have been invisible without Amalik's \"intakes seem untracked\" callout — reinforcing case for Phase 2 Preflight step file (I62). |\n| 2026-04-19 | **Triage by Winston: Logged 6 intakes (IN-47 through IN-52) from deferred-work.md promote-now pass + qualified all 6.** Cross-referenced deferred items against backlog to find items that were real/actionable but never triaged. 3 from T4 Round 1 review: **BUG-2** (ADR byte-identical bug — first Bug Lane entry since BUG-1 shipped, score 2.7), **I64** (runScript helper null exitCode on timeout — score 4.5, new Fast Lane #2 behind A27), **I65** (migration meta-artifact re-flagging — score 1.2). 3 from A24 Round 1 review: **A28** (step-01 sampling-bias rule for future Vortex audits, score 1.6), **A29** (third-workflow structural-diversity criterion, score 2.4), **A30** (Covenant Epic 2 T1 boundary clarity, score 1.8). All deferred-from explicit reviews, all qualified under Winston (Architect) per shortcut rule. Raw intakes: 0. Dropped: 0. Bug Lane back to 1 active entry (note updated). Remaining deferred items in `deferred-work.md` are explicitly \"too speculative\" or \"defer until observed\" — not promote-now candidates. |\n| 2026-04-19 | **Triage by Winston (architect consultation): Logged 3 intakes (IN-44, IN-45, IN-46) + qualified all 3 to Fast Lane.** Staleness pre-flight for backlog pickup — parallel tracks cause silent item drift (today's session hit this twice: A24 shipped in parallel, oc-1-5 deferrals pre-triaged). 3-phase rollout: **A27** Phase 1 — project-context.md rule `staleness-preflight-for-backlog-pickup` + one-line bmad-help reminder (score 5.4, convoke, ready). **I62** Phase 2 — minimal `[P] Preflight` step file in `bmad-enhance-initiatives-backlog` mechanizing the 3 validated checks (score 2.8, enhance, **Blocked**: unblocks when A27 applied ≥3 times AND ≥1 real drift found OR 2 weeks elapsed). **I63** Phase 3 — `bmad-help` decorator calling I62's Preflight (score 2.4, convoke, **Blocked**: unblocks when I62 invoked ≥5 times AND output format stable ≥1 sprint). Design rationale: each phase's evidence informs the next's API — Phase 1 is a convention-test, Phase 2 encodes what Phase 1 learned, Phase 3 wires validated logic into the natural call-site. Trigger criteria prevent premature mechanization and guard against Phase 1 rotting. Raw intakes: 0. Dropped: 0. A27 is the new top of Fast Lane. |\n| 2026-04-19 | **ILE-1 Sprint planning complete.** `bmad-sprint-planning` appended 79 ILE-1 entries to `_bmad-output/implementation-artifacts/sprint-status.yaml` (6 epics × 67 stories × 6 retrospectives). YAML validated; all entries `backlog`/`optional`. Sprint 0 starting point: `ile-1-1-sprint-0-discovery-tasks-verified` [SPIKE]. Convoke portfolio now tracks 46 epics total (39 done, 1 in-progress Team Factory E2, 6 newly added ILE-1). Next pipeline step: `bmad-create-story` generates the story-1.1 context file; SM-Dev-Review cycle begins. |\n| 2026-04-19 | **ILE-1 Post-Architecture+Epics IR gate — FULL READY.** 6-step `bmad-check-implementation-readiness` workflow delivered `convoke-report-implementation-readiness-initiative-lifecycle-engine-post-epics.md` (status: complete). Verdict: **FULL READY (unconditional)**. 0 critical issues, 0 major issues, 0 blocking concerns across all 5 validation categories: FR coverage 63/63 (100%), NFR coverage 35/36 (97%; NFR27 Growth-deferred), UX alignment three-way verified (PRD ↔ Architecture ↔ Epics), epic quality (all 6 epics deliver user value, all independent), story quality (zero forward dependencies across 67 stories; all Given/When/Then). Pre-Architecture gate's conditions (Architecture + Epics + Epic Coverage) all closed. Sprint-0 prerequisites: 3 discovery tasks handled by Story 1.1 [SPIKE] (≤2 dev sessions, non-blocking). Artifact indicator updated: `B, P, IR(pre-arch), A, E` → `B, P, IR(pre-arch), A, E, IR✓`. Stage updated: `In Pipeline` → **Ready for Sprint**. Next: Sprint 0 kickoff with Story 1.1 [SPIKE] → Story 1.2 (Core Runtime Libraries). |\n| 2026-04-19 | **ILE-1 Epics + Stories complete.** 4-step `bmad-create-epics-and-stories` workflow delivered `convoke-epics-initiative-lifecycle-engine.md` (status: complete). Contents: 6 epics × 67 stories covering all 63 FRs + 35/36 NFRs (NFR27 Growth-deferred). Epic breakdown: E1 Safe Ground (20 stories; install + foundation + empty-state; includes [SPIKE] Story 1.1 for sprint-0 discovery), E2 Intake + Qualifying Gate (10 stories), E3 Portfolio Visibility + Signals (9 stories; data-availability semantics for S1–S4), E4 Reactive + Trust Contract (8 stories; `/ile-sync` operator-recovery), E5 Onboarding + Help + First-Run Integration (9 stories), E6 Safety + Schema Evolution + Release Gate (11 stories). 3 party modes + 1 focused elicitation (Path A NFR coverage + Path B story sizing splits) across 4 workflow steps. Added 3 new stories for NFR coverage (1.15 security static analysis NFR5/6/7/8, 1.16 LOC budget NFR15, 6.11 log format stability NFR26) + split Stories 1.13/1.14/2.4 for dev-agent sizing + Story 5.9 first-run integration cohesion. Revised sprint baseline: 7 sprints (was 5–7), within PRD 3–10 range; Epic-1 spans Sprints 0+1+early-2 with Epic-2 parallelizing mid-Sprint 1. All 5 validation checks passed (FR coverage 63/63, NFR coverage 35/36, architecture compliance, story quality, epic independence, dependency integrity). Artifact indicator updated: `B, P, IR(pre-arch), A` → `B, P, IR(pre-arch), A, E`. **Next pipeline step: post-Architecture+Epics IR gate, then Sprint 0 execution starting with Story 1.1 [SPIKE].** |\n| 2026-04-19 | **P21 Epic 1 (Convoke Operator Covenant — Define the Covenant) shipped.** 5/5 stories done: `oc-1-1` Covenant Audit (82% baseline compliance, no bottleneck), `oc-1-2` Taxonomy Extension (new `covenant` artifact_type), `oc-1-3` Checklist Derivation (OC-R0..OC-R7 + 3-layer audit scope + 6 status values + reproducibility gate), `oc-1-4` Covenant Authoring (axiom + 11-term vocabulary + §6 Seven Operator Rights + compliance protocol), `oc-1-5` Adoption Surface (4/4 discovery-path coverage after D9 retroactively closed the docs/ gap). Retrospective shipped `oc-epic-1-retro-2026-04-19.md` with 7 action items. **A5 (Retrofit Trigger Rule) locked in Epic file:** T1 concentrated (< 70% in any team × Right cell at N ≥ 3) or T2 systemic (overall < 75% or any Right < 70%). v1 baseline doesn't fire either trigger — Epic 2 correctly deferred. **P21 row updated:** description renamed \"Experience Contract\" → \"Operator Covenant\"; Stage \"Qualified\" → \"Epic 1 ✓ \\| Epic 2 deferred\"; Artifacts \"Candidate doc\" → \"B, P, E1✓\". **Epic 2 remains deferred** pending IN-12 Vortex re-audit (next) and external Phase 3 Loom Add Skill workflow. |\n| 2026-04-19 | **ILE-1 Architecture complete.** 8-step `bmad-create-architecture` workflow delivered `convoke-arch-initiative-lifecycle-engine.md` (status: complete). Contents: 8 ADRs (data substrate=in-memory-per-invocation / concurrency=per-backlog lock w/ heartbeat+tiered-staleness / error-enforcement=runtime registry+test backstop / event model=explicit+intra-skill triggers / proposal lifecycle=inline+batch-UX / migration trigger=preamble / observability=full-scan+intra-invocation memoization / BMAD compat=v6.3-gated); ISWC + Crash Recovery Model extracted as first-class cross-cutting concepts; 24 implementation-pattern decisions + 3 missing patterns (logger, paths API, AsyncLocalStorage+env-envelope) + 6 final-coherence refinements; Hybrid LLM-Host Invocation Model (fat-script entries + env var envelope with 30-min TTL); complete project tree with every file named; 26 enforceable N-row compliance tests; uninstall spec with archived-log preservation + re-install behavior. 4 party modes + 3 focused elicitations + final validation. 4 gaps identified with resolutions; 5 sprint-0 discovery tasks. READY FOR IMPLEMENTATION (HIGH confidence). Artifact indicator updated: `B, P, IR(pre-arch)` → `B, P, IR(pre-arch), A`. **Next pipeline step: Epics (+ post-Architecture IR).** |\n| 2026-04-19 | **T4 code review — 1 round, convergence reached.** 6 patches applied (3 HIGH, all test-side): **P1** hermetic `git()` helper (execFileSync + argv array, 15s timeout, inline `-c core.hooksPath=/dev/null` / `commit.gpgsign=false`, `GIT_TERMINAL_PROMPT=0`) — test can no longer hang on user's global git hooks/signing config. **P2** tests 2+3 merged into a single no-op test; no cross-test state coupling; each test reads commit counts fresh. **P3** speculative stdout regex dropped in favor of commit-count equality as the hard idempotency proof. **P4** tight `delta >= 2 && delta <= 3` commit-count bound on third run with inline rationale. **P5** new `assertNoUnexpectedWarnings` guard — immediately caught a real bug predicted by Edge Case Hunter: **ADR generation silently fails on re-run with byte-identical content** (git commit fails on empty tree, warning emitted, exit still 0). Logged to `deferred-work.md` with 3 fix-path options. **P6** misleading comment removed. Also: `gitLogCount` defensive `Number.isInteger` guard. Integration gate 85/85 (was 86; test count dropped by 1 due to P2 merge). 5 items deferred: ADR byte-identical bug (new), `runScript` null exitCode on timeout (pre-existing helper), 5-commit scan boundary, zero-ungoverned baseline test, test-4 git-state over-specification. |\n| 2026-04-19 | **T4 shipped.** New `tests/integration/migrate-artifacts-idempotency.test.js` closes the CLI-level idempotency gap for `convoke-migrate --apply --force`. 4 new tests: (1) first run renames ungoverned `prd-gyre.md` → `gyre-prd.md` + creates migration commits; (2) second run exits 0 with a no-op message; (3) **no-new-commits proof** — the hard idempotency guarantee (second-run HEAD unchanged); (4) third run after adding a new ungoverned file resumes migration correctly. Integration suite 86/86 green (+4). **Surfaced a latent UX bug**: the migration's own meta-artifacts (`adr-artifact-governance-convention-*.md` + `artifact-rename-map.md`) get flagged as ungoverned on re-run because their filenames don't match the `{initiative}-{artifact_type}` convention — functional idempotency still holds but the CLI emits `\"Nothing to rename\"` instead of the cleaner `\"Nothing to migrate\"`. Logged to `deferred-work.md` under \"Deferred from: scope of T4\" with two fix-path proposals (inject frontmatter on creation OR add to inference exclusion list). T4 moved Fast Lane → §2.5 Completed. |\n| 2026-04-19 | **I50 code review — 1 round, convergence reached.** 4 patches applied (0 HIGH): **P1** empty-batch path bypassed `--quiet` (pre-existing bug exposed by I50) — added `reporter.isQuiet()` accessor; `runBatch` now suppresses the `\"Nothing to export\"` message in quiet mode. **P2** parser value-guards at `--output`/`--tier` accepted `-`-prefixed tokens as values (pre-existing latent parser bug widened by I50 introducing the first short flag) — tightened from `.startsWith('--')` to `.startsWith('-')`. **P3** brittle `noisyLines.length > 5` replaced with relative `> quietLines.length` — survives manifest shrinkage. **P4** `-q` alias test gained stderr-parity assertion. Tests 1173/1173 green. Hunter dedup: 5 of Blind's 10 findings were false positives (diff-only constraint) resolved by Edge Case's repo read-access. 0 deferred. |\n| 2026-04-19 | **I50 shipped.** `--quiet` / `-q` flag added to `convoke-export` CLI. `makeReporter({ quiet })` in `scripts/portability/convoke-export.js:166` threads through a per-skill output gate: success/skip lines on stdout are suppressed when the flag is set, while failure lines on stderr and the single-line summary are preserved. Useful in CI / scripted pipelines where per-skill chatter drowns real signal. Batch dry-run output on `--all` drops from 50 lines → 1. 6 new integration tests (`tests/lib/portability-cli-entry-point.test.js`). Full gate 1173/1173 green (+6). Item was deferred through 4 consecutive SP-Epic retros (2 → 3 → 4 → 5) — finally resolved. I50 moved Fast Lane → §2.5 Completed. |\n| 2026-04-19 | **T3 shipped.** New `tests/integration/upgrade-cli-e2e.test.js` closes the CLI-level non-dry-run upgrade gap (existing `upgrade.test.js` uses the library `refreshInstallation()` API; existing `cli-entry-points.test.js` only runs `convoke-update --dry-run` as a smoke test). 4 new integration tests: (1) v1.7.x seeded fixture + `convoke-update --yes` via `runScript` child process exits 0, (2) full post-state verification against the registry (all AGENT_FILES + WORKFLOW_NAMES + skill wrappers for AGENTS/GYRE_AGENTS/EXTRA_BME_AGENTS + agent-manifest.csv + version-stamped config + deprecated-agent cleanup), (3) second invocation falls through to refresh-only/up-to-date path and still exits 0, (4) installation state remains valid after the second update cycle. Full suite: 1167 unit + 82 integration (+4 T3) = 1253 tests green. 3 items deferred to `deferred-work.md` (real `npm pack` fetch, user-authored custom agents, interactive prompt mode). T3 moved Fast Lane → §2.5 Completed. |\n| 2026-04-19 | **D8 code review — 1 round, convergence reached.** 2 patches applied (0 HIGH): P1 (MEDIUM, both hunters converged) — \"Applies to the submodules above\" was factually wrong (each submodule ships its own `config.yaml`; verified via `scripts/convoke-doctor.js:105-136` + `scripts/update/lib/refresh-installation.js` only reading submodule configs). Reworded as \"sibling, not a parent\" with explicit code-path citation. P2 (LOW) — \"Alongside this README\" lead-in added to acknowledge the README itself is also at root. 0 deferred. |\n| 2026-04-19 | **D8 shipped.** `_bmad/bme/README.md` now has a `## Files at _bmad/bme/ root` section listing `config.yaml` with a one-line description (operator name, languages, output folder; preserved across updates). Placed between the Submodules table (directories-only) and the \"When to add here vs upstream\" guidance — semantic separation preserved. Closes oc-1-5 `[Review][Defer]` follow-up #1 (bme/README config.yaml omission). D8 moved Fast Lane → §2.5 Completed. |\n| 2026-04-19 | **D9 code review — 1 round, convergence reached.** 5 patches applied (0 HIGH, all MEDIUM/LOW): Covenant callout trigger broadened from authoring-only to \"authoring, reviewing, or extending\" with explicit planner/reviewer acknowledgment; hardcoded counts removed (dogfoods A5 `mechanical-research-enumeration` + `derive-counts-from-source` rules shipped earlier today) — \"Vortex (7 streams) / Gyre (4 agents) / seven Operator Rights\" → role-based phrasing; `development.md` description trimmed for accuracy (doesn't cover skill patterns per Edge Case verification); oc-1-5 `[Review][Defer]` line for this exact gap marked `[Defer→Resolved]` with D9 closure reference; invented \"supporting BME specialists\" category removed from `agents.md` description. 0 deferred. |\n| 2026-04-19 | **D9 shipped.** New `docs/README.md` created as the docs index. Covenant pointer featured as the first callout block (mirrors the `README.md` + `_bmad/bme/README.md` convention); Contents table enumerates the 6 existing contributor-facing docs with one-line descriptions; cross-refs the three sibling discovery paths. **AC #3 of oc-1-5 now achieves 4/4 discovery-path coverage** (previously 3/4 with substitution documented). D9 moved Fast Lane → §2.5 Completed. |\n| 2026-04-19 | **Triage by Winston: Logged 10 intakes (IN-33 through IN-42) from code reviews of A15+A5+A10 Rounds 1 and 2.** Qualified 10 to Fast Lane: I60 (A5 story template search-command field, score 1.8), A19 (A5 operational test, 1.6), A18 (A15 OC-R0 evidence-note examples, 0.9), A17 (A10 3-cell gate scaling, 0.7), A21 (N/A-variant disagreement threshold, 0.7), I61 (parser grammar Layers: prefix, 0.35), A20 (A5 retroactive-gap framing, 0.2), A23 (misprediction+DISPUTED edge, 0.15), D10 (Revisions table hygiene, 0.1), A22 (external-declared token namespace collision, 0.1). I60 depends on A19. Raw intakes: 0. Dropped: 0. Note: oc-1-5-adoption-surface deferrals (3 items) were already triaged by a prior session as IN-30/31/32 → D8, D9, P24 — not re-logged. BUG-1+U7 \"too speculative\" deferrals (__dirname, verbose-gating) remain in `deferred-work.md` only. |\n| 2026-04-19 | **Triage by Winston: Logged 3 intakes (IN-30, IN-31, IN-32) from code review of oc-1-5-adoption-surface Round 1.** Qualified 3 total — Fast Lane: D9 (create `docs/README.md` as docs index, score 9.0), D8 (add `config.yaml` to bme/README, 7.5). Initiative Lane: P24 (relocate Covenant + Checklist out of `_bmad-output/planning-artifacts/`, 1.4). Raw intakes: 0. Dropped: 0. All deferred-from oc-1-5 Round 1. Closes Epic 1 (Convoke Operator Covenant) triage. |\n| 2026-04-18 | **A15 + A5 + A10 code review — 2 rounds complete.** Round 1 surfaced 5 HIGH + 9 MEDIUM + 2 LOW; 9 patches applied (A15 evidence-note template + parser two-step validation + disambiguation; A10 threshold rework / four-path failure-mode / borderline hardness / headline-findings definition / misprediction exclusion; audit report §10.5 + §10.2 forward-refs). Round 2 surfaced 3 HIGH + 7 MEDIUM + 3 LOW; 13 patches applied (§10.5 factual correction — Migration + Portfolio DO wrap git; OC-R0 qualifier at point-of-entry; path (d) shrink-scope; explicit 5-step audit sequence; DISPUTED-exclusion N-recomputation; N-inflation guard; three-way disagreement handling; `out-of-scope` tiebreaker; \"grandfathered\" defined; §7 de-dup). 10 items deferred total across both rounds (4 from Round 2, 6 from Round 1). Convergence reached — Round 3 declined per diminishing returns despite allowed structural changes. Total 22 patches across 3 files (`convoke-spec-covenant-compliance-checklist.md`, `convoke-report-operator-covenant-audit-2026-04-18.md`, `project-context.md`). |\n| 2026-04-18 | **A10 shipped.** New `## Reproducibility gate (multi-skill audits)` section in `convoke-spec-covenant-compliance-checklist.md`: v2+ Covenant audits MUST cover ≥3 cells — at least one expected-PASS, one expected-FAIL, one borderline — with blind dual-reviewer verdicts at ≥80% agreement. Adds pre-gate verdict expectation discipline (auditor records predictions before blind review, yielding calibration signal separate from concurrence). Single-skill audits and Story 1.4 self-compliance exempt. v1 audit report §2.5 amended with forward-reference to the formalized rule. Revisions entry added (change type: scope-rule-edit). A10 moved Fast Lane → §2.5 Completed. |\n| 2026-04-18 | **A5 shipped.** New `project-context.md` rule `mechanical-research-enumeration` encoded: research/catalog/audit/inventory deliverables must enumerate via `grep`/`glob`/`rg` rather than section-header eyeballing; raw search output is evidence of completeness. Story specs for research work must include the exact search command. Origin: AG Epic 7 retro A1 (Story 7.3 went through 3 review rounds from non-mechanical enumeration). Complements existing `spec-verify-referenced-files` (same origin, narrower scope). Total `project-context.md` rules: 14. A5 moved Fast Lane → §2.5 Completed. |\n| 2026-04-18 | **A15 shipped.** OC-R6 external-declared escape hatch added to the Compliance Checklist spec. New sixth Compliance Status value `N/A — external-declared ()` applies to OC-R6 only, for skills wrapping externally-owned CLIs (git, npm, docker, ...) whose stderr the skill doesn't rewrite. Worst-case aggregation gains an OC-R6-specific carve-out: Layer 3 excluded when declaration is used, with three mandatory evidence-note preconditions (tool named, OC-R0 enumeration, L1+L2 independently PASS OC-R6). If L1 or L2 would FAIL, cell is FAIL regardless — carve-out does not mask skill-authored violations. Extended parser regex and em-dash normalization anchor; `No partial credit` note updated. 6 spec edits in `convoke-spec-covenant-compliance-checklist.md`; no code changes (pure spec; Loom parser still deferred). A15 moved Fast Lane → §2.5 Completed. |\n| 2026-04-18 | **U8 shipped.** New `excluded_agents: []` field in Vortex + Gyre `config.yaml` with operator-facing comment; new `readExcludedAgents(configPath)` helper in `config-merger.js`; `mergeConfig` filters excluded from `merged.agents`; `refresh-installation` skips agent-file copy + user-guide copy + skill-wrapper generation + manifest rows for excluded agents; `validator.validateAgentFiles` and `convoke-doctor.checkModuleAgents`/`checkAgentSkillWrappers` honor exclusions. 2 rounds of code review applied 9 patches (HIGH: manifest drift; MEDIUM: falsy-updates filter bypass, user-guide skip, IO error discrimination; LOW: hoisted `guide` var, Gyre positive assertion). Full suite 1167/1167 (+14 new tests). U8 moved Fast Lane → §2.5 Completed. |\n| 2026-04-18 | **Triage by Winston: Logged 6 intakes (IN-24, IN-25, IN-26, IN-27, IN-28, IN-29) from code review of U8 Round 1.** Qualified 6 to Fast Lane: I57 (cross-module exclusion-ID validation, score 0.5), I58 (unify YAML parser in `readExcludedAgents`, 0.3), U14 (honor exclusion in dev-mode skill wrapper generation, 0.25), I59 (dedup duplicate `excluded_agents`, 0.25), U13 (extend `excluded_agents` to `EXTRA_BME_AGENTS`, 0.2), U12 (inject `excluded_agents` comment on upgrade, 0.1). All deferred-from U8 Round 1. Raw intakes: 0. Dropped: 0. |\n| 2026-04-18 | **A12 shipped + Round 1 code-review follow-up.** Initial A12 fix applied (cumulative vocabulary + illustration carve-out). Round 1 code review surfaced 3 HIGH findings: (H1) Section 1 still exceeds budget in statement alone; (H2) illustration/introduction adjudication subjective; (H3) shipping claim overstated. Follow-up patches applied inline: softened Revisions claim to \"narrows surface\", added Covenant preamble authoring contract (preamble MUST pre-introduce 9 foundational terms: `default`, `fallback`, `override`, `unresolvable state`, `exclusion`, `decision point`, `interaction round`, `concept budget`, `scope`), closed illustration loophole (new domain nouns inside illustrations still count). A12 + follow-up moved Fast Lane → §2.5 Completed (shipped 2026-04-18, score 6.3). Story 1.4 authoring contract now explicit. |\n| 2026-04-18 | **Triage by Winston: Logged 5 intakes (IN-19, IN-20, IN-21, IN-22, IN-23) from code review of oc-1-3-checklist-derivation Round 3.** Qualified 5 to Fast Lane: A12 (Covenant OC-R7 doc-mapping double-count fix — score 6.3, blocks Story 1.4), A15 (Layer 3 uncontrollable stderr escape hatch — score 3.2), A16 (workflow-inherited concepts bidirectional rule — score 1.8), A14 (conditional-surface N/A variant — score 1.2), A13 (compound-concept counting rules — score 1.17). Per no-R4 convergence rule — remaining Round 3 findings triaged to backlog. ⚠️ A12 blocks Story 1.4. |\n| 2026-04-18 | **Triage by Amalik: Logged 3 intakes (IN-16, IN-17, IN-18) from code review of BUG-1+U7 Round 1.** Qualified 3 to Fast Lane: U11 (compareVersions semver-aware pre-release handling, score 0.9), I56 (render `taxonomy.initiatives.user` in ADR, score 0.8), I55 (validate non-empty taxonomy arrays, score 0.2). All deferred-from BUG-1+U7 Round 1. Other deferred items (D1=I54 duplicate, D5 __dirname fragility, D6 verbose-gating) remain in `deferred-work.md` only — too speculative for intake qualification. |\n| 2026-04-18 | **U7 shipped.** New `scripts/update/lib/changelog-reader.js` (pure parser, Keep-a-Changelog headers incl. pre-release, fenced-code-aware, semver post-filter). Wired into `convoke-update.js` via `printChangelog()` helper — \"What's New\" block surfaces before the confirm prompt in both refresh-only and upgrade branches. Code review Round 1 applied 4 patches (taxonomy guard in `generateGovernanceADR`, broadened HEADER_RE, fenced-code tracking, integration tests). Full suite 1142/1142 (+16 new tests). U7 moved Fast Lane → §2.5 Completed. |\n| 2026-04-18 | **ILE-1 PRD complete.** 12-step PRD workflow delivered `convoke-prd-initiative-lifecycle-engine.md`: Executive Summary, Project Classification (developer_tool / capability-layer / portfolio-and-program-management / high / brownfield), Success Criteria (3 user success + business success + L1-L2 leading + M1-M4 outcomes + 4 falsification + 2 kill criteria w/ diagnostic + 4 TACs + 4 observability signals), Product Scope (MVP 6 items + Growth + Vision), 8 User Journeys + requirements summary + open questions + UX risk, Domain Requirements, Innovation (Christensen-honest framing + 3 positioning framings + 4 feature claims + 2-tier validation + month-3/6 reviews + 3-question kill diagnostic), Project-Type Requirements (13 subsections incl. Error Contract w/ 20 seed codes), Project Scoping & Phased Development (ship-essential vs thesis-essential + dependency graph + 5-7 sprint baseline + 4-tier contingency + descope governance), 63 FRs across 9 capability areas, 36 NFRs across 9 categories. 10 rounds of elicitation + multiple party-mode reviews. Stage: In Pipeline; artifacts: B, P. Next pipeline step: Architecture. |\n| 2026-04-18 | **BUG-1 shipped.** `generateGovernanceADR` (`scripts/lib/artifact-utils.js:2001`) now accepts `taxonomy` param and derives platform + artifact-type counts/lists from it (was hardcoded \"(8)\" and \"(21)\"); call site `scripts/migrate-artifacts.js:384` passes the already-loaded taxonomy through. Tests updated (`tests/lib/migration-execution.test.js:1210`) — 1 new case asserts custom taxonomy is reflected in output, not hardcoded. Full suite 1126/1126 green. BUG-1 moved Bug Lane → §2.5 Completed; Bug Lane empty again. |\n| 2026-04-18 | **Triage by Winston: Logged 4 intakes (IN-12, IN-13, IN-14, IN-15) from code review of oc-1-1-covenant-audit Round 3.** Qualified 4 to Fast Lane: A10 (reproducibility ≥3 cells for v2 audits, score 2.7), A8 (Vortex audit expansion, score 2.4), A9 (decision-support archetype addition, score 1.6), A11 (Migration scar evidence grounding, score 0.9). All deferred-from oc-1-1 Round 3 per code-review-convergence no-R4 rule. Raw intakes: 0. Dropped: 0. |\n| 2026-04-19 | **Correction: A8/A9 ID collision with v6.3 Adoption.** IN-12→A8 and IN-13→A9 assignments from 2026-04-18 triage collided with existing v6.3 A8 (Amelia consolidation WS3) and A9 (Extensions compatibility governance WS4). IN-12 renamed A8 → **A24**; IN-13 renamed A9 → **A25**. Both collisions resolved. |\n| 2026-04-19 | **A24 shipped (Vortex audit expansion / IN-12).** v2 Covenant audit refresh: 3 new Vortex workflows (assumption-mapping, empathy-map, hypothesis-engineering) scored at step-01 = 21 cells. **T1 FIRES for Vortex × Right to pacing** (25% compliance, 1/4 PASS at N=4 Vortex-audited skills; provisional at initial ship, validated later same day — see next entry). Vortex team compliance 25/28 cells (89%). Per-right fail counts: R1 0/4, R2 0/4, R3 0/4, R4 0/4, R5 0/4, R6 0/4 (all 100%); **R7 pacing 3/4 (25%)** — sole concentrated bottleneck. Empathy-map PASS reading-dependent per §9 ambiguity #5 (broader §2.6 reading PASS, narrower FAIL — T1 fires either way). 2 new retrofit cells flagged for Epic 2 Story 2.1 scope: assumption-mapping step-01 + hypothesis-engineering step-01 (shared HC-schema-at-step-01 anti-pattern). Report: `convoke-report-operator-covenant-audit-vortex-2026-04-19.md`. Code review Round 1 applied 14 patches + 3 decision resolutions + 4 defers. Round 2 applied 16 additional patches + 2 decision resolutions + 4 new backlog intakes IN-53/54/55/56. |\n| 2026-04-19 | **A24 A10 reproducibility gate cleared — T1-FIRES verdict non-provisional.** 2 independent LLM reviewers scored 3 cells blind per A10 composition (expected-PASS + expected-FAIL + borderline): Cell 1 `hypothesis-engineering` × R3 rationale PASS/PASS; Cell 2 `assumption-mapping` × R7 pacing FAIL/FAIL; Cell 3 `empathy-map` × R7 pacing PASS/PASS. **3/3 = 100% agreement**, meets A10 threshold at N=3. §8.1 G1 (retrofit scoping block) + G2 (independent FAIL cell verification) both ✓ satisfied. 2 new retrofit cells now eligible for Epic 2 Story 2.1 commitments (pending Epic 2 ratification). Cell 2 reviewer counts converged on 6-7 novel concepts (charitable compound-grouping), not strict sub-field counting; §4.1/§4.3 evidence notes revised to reviewer-validated counts (strict alternative preserved in §4.4 Notes). Cell 3 reviewers independently applied the broader §2.6 reading — §9 ambiguity #5 did not operationally surface; §4.2 PASS verdict is reproducibility-validated. Same-model LLM-reviewer limit (oc-1-1 §2.5) retained as honest caveat. A24 status: **shipped (non-provisional)**. |\n| 2026-04-18 | **Triage by Winston: Logged 2 intakes (IN-10, IN-11) from code review of oc-1-2-taxonomy-extension Round 1.** Qualified 2: Bug Lane 1 (BUG-1 — `generateGovernanceADR` hardcoded type count, score 2.7), Fast Lane 1 (I54 — `DEFAULT_ARTIFACT_TYPES` refactor to single source, score 0.9). Raw intakes: 0. Dropped: 0. I54 cross-references A6 (Structured-source for count-sensitive deliverables) as a related item. Bug Lane first-populated (previously empty). |\n| 2026-04-18 | **ILE-1 Brief complete.** Product brief authored at `convoke-brief-initiative-lifecycle-engine.md` + detail pack at `convoke-brief-initiative-lifecycle-engine-distillate.md`. Stage advanced Qualified → In Pipeline. Artifact indicator updated: `—` → `B` (Brief). Positioning established as \"Portfolio-as-Code.\" Co-primary personas: consulting team lead + solo practitioner. Success criteria: <60s context re-entry, portfolio health without altitude change, findings auto-land in correct lane. V1 scope locked (shared model + lifecycle-aware portfolio + kanban + reactive behaviors + pipeline dashboard + skill integration). Data model decision deferred to Architecture. **Next pipeline step: PRD.** |\n| 2026-04-18 | **I49 shipped.** 4 rules added to `project-context.md`: `derive-counts-from-source` (no hardcoded counts — compute from source data), `shared-test-constants` (import from shared files like `test-constants.js`, don't duplicate), `catch-all-phase-review` (review catch-all matcher output for false positives before shipping), `spec-verify-referenced-files` (existence-check all file paths in specs before dev starts). Path-safety was already covered by existing rule. Total project-context.md rules: 13. Origin: SP Epic 5 retro A1. |\n| 2026-04-18 | **P10+P11 shipped.** Capability Evaluation Framework and Friction Log Template moved from `_archive/exploratory/` to `planning-artifacts/` with governance naming. Framework referenced from lifecycle §1.2 qualifying gate (capability-type intakes must run decision tree). Friction log linked as required input feed. `project-context.md` rule `capability-form-factor-evaluation` added. `lifecycle-process-spec.md` template updated with same gate rule. Archive INDEX.md entries annotated with move dates. |\n| 2026-04-18 | **A7 shipped.** Review convergence rule encoded in two locations: `project-context.md` (Rule: `code-review-convergence` — R1 mandatory, R2 only if HIGH, R3 only if structural changes, no R4, remainder deferred to backlog) and `bmad-code-review` step-04-present.md section 7 (enforcement logic: round counting via `### Review Findings` subsections, stopping criteria gate before offering re-run option). Both source (`_bmad/bmm/4-implementation/`) and installed (`.claude/skills/`) copies updated. Origin: ag-epic-7 retro Action Item #3. |\n| 2026-04-17 | **Shipped items moved to §2.5.** T6, I43, T7, T8 moved from §2.3 Fast Lane to §2.5 Completed per format spec. |\n| 2026-04-15 | **WS1 spike: `bmad-enhance-initiatives-backlog` skill reworked to v2.0.0.** 14 files rewritten (workflow.md, 11 step files, SKILL.md) + 2 new templates (backlog-format-spec.md rewrite, lifecycle-process-spec.md new). Three modes updated: Triage now logs to Intakes then runs qualifying gate (lane + portfolio + RICE); Review is lane-aware with scope selection; Create emits Part 1 verbatim from template. Step renames: step-t-03-score → step-t-03-qualify, step-c-03-score → step-c-03-qualify, step-c-04-prioritize → step-c-04-generate. |\n| 2026-04-17 | **I43 shipped.** `checkAgentSkillWrappers()` added to `convoke-doctor.js`. Validates all 12 bme agent skill wrappers (7 Vortex + 4 Gyre + 1 team-factory) at `.claude/skills/bmad-agent-bme-{id}/SKILL.md`. Imports AGENTS/GYRE_AGENTS/EXTRA_BME_AGENTS from agent-registry.js. Mirrors I31 pattern. Verified: passes with all 12 present, fails with clear diagnostic when any missing. All 1,123 tests pass. Closes F6+F20+F21 GAPs from ag-7-3 contract audit. |\n| 2026-04-17 | **T7 shipped.** Ruff linting added to CI (`python-test` job, piggybacked on T6). Config: `ruff.toml` (line-length 120, select E/W/F/I/N/UP, per-file E501 ignores for HTML generators + data-heavy files). 40 auto-fixes applied (import sorting, unused imports, redundant open modes). 3 manual fixes (f-string refactor in analyze_sources.py × 2, unused variable in test-merge-help-csv.py). All 116 tests pass post-fix. |\n| 2026-04-17 | **T8 shipped.** PEP 723 standardized across all 24 Python files. Fixes: `\"pyyaml\"` → `\"pyyaml>=6.0\"` (4 files), `# ///` syntax → standard `# ` content lines (2 distillator files), `>=3.10` → `>=3.9` (2 bmad-init files), added missing metadata blocks (2 test files). 22→24 files now have consistent PEP 723 blocks. |\n| 2026-04-17 | **T6 shipped.** Python test execution added to CI (`python-test` job in ci.yml). 5 test files, ~116 tests across BMB (merge-config, merge-help-csv, cleanup-legacy) and Core (bmad_init, analyze_sources). Publish gate updated to require `python-test`. Resolves Gyre DL-001 blocker. CI green. |\n| 2026-04-17 | **Rescore I33** (Workflow-name namespace collision risk): 0.4 → 0.9. R:4→4, I:0.5→1, C:60%→70%, E:3→3. Rationale: I32 shipped active orphan deletion (two-strategy matching) which increased collision blast radius from overwrite-only to overwrite + cleanup deletes. Moved from rank ~78 to 0.9 block (after I52, before I39). Fast Lane re-sorted within 0.9 tiebreak (C:90% before C:70%). |\n| 2026-04-15 | **Dependencies column added** to all three lane tables (§2.2 Bug, §2.3 Fast, §2.4 Initiative). Notation rules added to backlog-format-spec.md: comma-separated IDs, cross-lane allowed, `—` for none, `✓ID` for shipped deps, `bundles-with: ID` for paired items, `external: short-desc` for non-backlog blockers. Bulk-added `—` to all existing rows; populated meaningful dependencies on ~13 items (Initiative: P9, P13, v6.3, ILE-1, P3, P2; Fast: T7, T8, I43, I44, I45, I46, I47, I48, I15, I39, I33). Format spec column counts updated: Bug 11, Fast 10, Initiative 11. |\n| 2026-04-15 | **Qualifying gate run on IN-9.** Qualifier: John+Winston (per §1.2 shortcut rule). Lane: Initiative. Portfolio: helm (current-best-fit, revisitable). RICE: R:9 I:3 C:60% E:8 = 2.0. New row added to §2.4 Initiative Lane as **ILE-1** (Initiative Lifecycle Engine). Intake row IN-9 in §2.1 cross-referenced via `→ ILE-1` per §1.1 audit-trail rule. Appendix entry added with three-workstream scope hint and precedent notes (WS1+WS2 already executed as spikes; skill rework v2.0.0 partially shipped). Initiative Lane re-sorted: ILE-1 (2.0) sits between v6.3 Adoption (2.3) and U9 (1.9). |\n| 2026-04-12 | **Pass 1 + Pass 2 complete.** Document created from `convoke-note-initiatives-backlog.md` retroactive review. All 88 items classified across three lanes per lifecycle process established in party mode session (John, Winston, Amalik). Supersedes `convoke-note-initiatives-backlog.md`. Intakes: 9 (was 8 \"exploration candidates\" + 1 new meta-initiative IN-9). Bug Lane: 0. Fast Lane: 65. Initiative Lane: 11 (4 absorbed into v6.3, 7 standalone). Absorbed/Archived: 27 (4 absorbed into v6.3 Epic, 2 absorbed into S3, 21 completed). S1/S2 folded into S3. Original IDs preserved for traceability. |\n"}}}}