Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/amalik_convoke-agents.json
T

1 line
350 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"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 (<branch>)` 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 <dir>` 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, `<critical-rules>`, `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 <invalid>` 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:<triple>` 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 `<id>.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/<module>/skills/<name>/` or `_bmad/bme/<module>/workflows/<name>/`, 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 (<branch>)` 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/<id>.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: <triple>` 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 `<id>.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\\/<name>\" 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 <module-name>`)** — **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, `<critical>` 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 `<id>.md` files to `<id>/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 `<id>.md` → `<id>/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(<id>/) + writeFile(<id>/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 <invalid>` 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: <filename> (no changes to commit)\"`, on staged changes run the existing commit + log `\"ADR generated: <filename>\"`. 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 <dir>` 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 (<tool>)` 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 (<ref>), L2 PASS (<ref>), L3 external-declared (<tool>)` 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 <module-name>`. 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-<future-story-id>-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 `<id>.md` → `<id>/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 <invalid>` 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 <invalid>` 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 `<frozen>` 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 `<frozen>` 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 <dir>` 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 (<tool>)` 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"}}}}