PR #1349 — PM Autonomous Backlog Triaging & Story Formation Engine

The Broader Goal at the End of the Previous PR

Following the cross-harness inter-agent event relay (PR #1348), autonomous growth engine (PR #1347), and model registry (PR #1339), synlynk had mature mechanisms for real-time messaging, public release narratives, and execution capabilities. However, backlog management and story synthesis remained manual: incoming GitHub issues and dynamic task discoveries were either manually converted into stories or left untracked.

Strategic Shifts in This PR (if any)

This PR activates the PM agent's durable loop to autonomously ingest GitHub issues, apply semantic and SHA-256 deduplication, synthesize testable acceptance criteria, assign GOVERNS roles and complexity tiers, and auto-promote ready stories directly into state.db and the TPM execution sweep:

  1. Multi-Layer Deduplication across backlog_items, stories, and merged PR/commit history.
  2. Structured Story Synthesizer generating role assignments (dev, qa, architect, pm, marketing, tpm), complexity tiers (Tier 1/2/3), testable acceptance criteria, and goal mappings.
  3. Dedicated CLI subcommands: synlynk backlog ingest, synlynk backlog triage, synlynk backlog auto-promote.
  4. Seamless integration with synlynk tpm sweep to autonomously promote and sweep ready work.

What This PR Shipped

  1. Backlog Database Schema & Migration (synlynk/db.py):
    • Added backlog_items SQLite table with columns for item_id, title, body, issue_number, gh_issue, author, labels, fingerprint, role, stage, governs_stage, complexity_tier, goal_id, acceptance_criteria, status, and timestamps.
    • Bumped DB migration version to 8 with automated index creation.
  2. Issue Fetching & Deduplication Classifier (synlynk/backlog.py):
    • Implemented fetch_open_github_issues() to query open issues with structured metadata.
    • Built is_duplicate_issue() checking fingerprints, issue numbers, normalized title similarity, and closed PRs / git commits.
  3. Semantic Goal Alignment & Story Synthesizer:
    • Implemented synthesize_story_from_issue() to classify role charters, GOVERNS stages, complexity tiers (1 to 3), extract/synthesize testable acceptance criteria, and associate with active roadmap goals (goal-005ea87d, goal-adb60ccc, goal-ef42902a, goal-6733bbf1, goal-0c4e96ff).
  4. PM Autonomous Triage CLI & Sweep Integration:
    • Exposed synlynk backlog ingest [--sync-github], synlynk backlog triage [--auto-promote], and synlynk backlog auto-promote [--min-tier N].
    • Registered backlog subcommands in COMMAND_TAXONOMY in synlynk/taxonomy.py.
    • Wired auto_promote_backlog() into run_sweep_pass() in synlynk/tpm_sweep.py.
  5. Comprehensive Test Suite:
    • Added unit tests in tests/test_backlog.py covering ingestion, deduplication, synthesis, triage, promotion, and CLI integration.
    • Added verification test test_feat_pm_autonomous_backlog_triaging__story_c70350f9 in tests/test_agent_cli.py.

Brainstorm Visuals Used

  • docs/superpowers/specs/2026-08-31-governs-backlog-automation-design.md (GOVERNS Backlog Architecture & Signal vs. Noise Filter)
  • docs/superpowers/plans/2026-09-02-pm-backlog-triaging-and-story-formation.md (PM Triage & Story Formation Plan)

What This Achieved on the Path to Autonomy

The PM agent can now operate a completely autonomous backlog triaging loop: open issues and newly discovered tasks are ingested, deduplicated, enriched with testable criteria and goal linkages, and promoted to ready status without requiring human intervention.

Strategic Note: The Goal at the End of This PR

Next up is closing the loop on living charter evolution (Issue #1342) and ephemeral swarm runners (Issue #1341), connecting autonomous backlog triaging directly to distributed execution fleets.