Skip to content

feat(backlog): add backlog add for interactive issue creation#289

Merged
djm81 merged 9 commits intodevfrom
feature/backlog-core-02-interactive-issue-creation
Feb 22, 2026
Merged

feat(backlog): add backlog add for interactive issue creation#289
djm81 merged 9 commits intodevfrom
feature/backlog-core-02-interactive-issue-creation

Conversation

@djm81
Copy link
Copy Markdown
Collaborator

@djm81 djm81 commented Feb 21, 2026

Description

This PR delivers backlog interactive issue creation and provider-aware mapping setup for backlog workflows.

Summary:

  • Adds specfact backlog add with interactive and non-interactive creation flow, hierarchy validation, DoR checks, sprint/iteration selection, parent selection, and provider-aware payload mapping.
  • Extends adapters with unified create_issue(project_id, payload) and centralized retry policy behavior for write operations.
  • Adds specfact backlog init-config and expands specfact backlog map-fields to multi-provider setup (ado, github) with canonical persistence in .specfact/backlog-config.yaml.
  • Enhances GitHub creation flow with native sub-issue parent linking and optional issue type / ProjectV2 type mapping support.
  • Updates docs and changelog for 0.36.0.

Fixes #173

New Features #173

Contract References:

  • BacklogAdapterMixin.create_issue(...) contract extension.
  • GitHubAdapter.create_issue(...) and AdoAdapter.create_issue(...) contract-enforced provider implementations.

Type of Change

Please check all that apply:

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📚 Documentation update
  • 🔒 Contract enforcement (adding/updating @icontract decorators)
  • 🧪 Test enhancement (scenario tests, property-based tests)
  • 🔧 Refactoring (code improvement without functionality change)

Contract-First Testing Evidence

Required for all changes affecting CLI commands or public APIs:

Contract Validation

  • Runtime contracts added/updated (@icontract decorators on public APIs)
  • Type checking enforced (@beartype decorators applied)
  • CrossHair exploration completed: hatch run contract-test-exploration
  • Contract violations reviewed and addressed

Test Execution

  • Contract validation: hatch run contract-test-contracts
  • Contract exploration: hatch run contract-test-exploration
  • Scenario tests: hatch run contract-test-scenarios
  • Full test suite: hatch run contract-test-full

Test Quality

  • CLI commands tested with typer test client
  • Edge cases covered with Hypothesis property tests
  • Error handling tested with invalid inputs
  • Rich console output verified manually or with snapshots

How Has This Been Tested?

Contract-First Approach: Added/updated contracts and adapter APIs first-class, then validated via unit/regression tests and project quality gates.

Manual Testing

  • Tested CLI commands manually
  • Verified rich console output
  • Tested with different input scenarios
  • Checked error messages for clarity

Automated Testing

  • Contract validation passes
  • Property-based tests cover edge cases
  • Scenario tests cover user workflows
  • All existing tests still pass

Test Environment

  • Python version: 3.11+
  • OS: Linux

Checklist

  • My code follows the style guidelines (PEP 8, ruff format, isort)
  • I have performed a self-review of my code
  • I have added/updated contracts (@icontract, @beartype)
  • I have added/updated docstrings (Google style)
  • I have made corresponding changes to documentation
  • My changes generate no new warnings (basedpyright, ruff, pylint)
  • All tests pass locally
  • I have added tests that prove my fix/feature works
  • Any dependent changes have been merged

Quality Gates Status

  • Type checking ✅ (hatch run type-check)
  • Linting ✅ (hatch run lint)
  • Contract validation ✅ (hatch run contract-test-contracts)
  • Contract exploration ✅ (hatch run contract-test-exploration)
  • Scenario tests ✅ (hatch run contract-test-scenarios)

Screenshots/Recordings (if applicable)

CLI-focused change; no screenshots attached.


Note

Medium Risk
Introduces new provider write paths (GitHub/ADO issue creation, GraphQL mutations) and shared retry behavior; mistakes could create incorrect or duplicate backlog items despite test coverage.

Overview
Adds interactive backlog item creation via new specfact backlog add, including non-interactive mode, multiline body/AC capture, priority/story points, DoR validation, sprint/iteration selection (ADO), and parent selection with configurable creation_hierarchy validation.

Extends the backlog adapter contract with create_issue() and implements it for GitHub and Azure DevOps, adds centralized retry behavior for write operations (duplicate-safe for non-idempotent calls), and enhances GitHub creates with native parent sub-issue linking plus optional Issue Type / ProjectV2 Type field updates from .specfact/backlog-config.yaml or custom config.

Introduces backlog-scoped config loading from .specfact/backlog-config.yaml, adds specfact backlog init-config, expands backlog map-fields into a multi-provider guided flow with canonical persistence, updates docs/command reference, and bumps version to 0.36.0 with new tests covering the added flows.

Written by Cursor Bugbot for commit f9c531b. This will update automatically on new commits. Configure here.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

devops-backlog DevOps Agile Backlog integrations marketplace Module marketplace features module-system Module system and registry

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[Change] Add backlog add (interactive issue creation)

1 participant