Skip to content

feat: Batch update support for plan review and updates (v0.7.0)#28

Merged
djm81 merged 11 commits intomainfrom
dev
Nov 22, 2025
Merged

feat: Batch update support for plan review and updates (v0.7.0)#28
djm81 merged 11 commits intomainfrom
dev

Conversation

@djm81
Copy link
Copy Markdown
Collaborator

@djm81 djm81 commented Nov 20, 2025

Summary

This PR adds batch update support for plan review and updates, enabling efficient bulk updates via file upload for Copilot LLM enrichment workflows.

Changes

Added

  • Batch Update Support for Plan Updates

    • New --batch-updates option for specfact plan update-feature command
    • New --batch-updates option for specfact plan update-story command
    • Supports JSON and YAML file formats for bulk updates
    • Preferred workflow for Copilot LLM enrichment when multiple features/stories need refinement
  • Enhanced Plan Review with Detailed Findings Output

    • New --list-findings option for specfact plan review command
    • Outputs all ambiguities and findings in structured format (JSON/YAML) or as table (interactive mode)
    • New --findings-format option to specify output format (json, yaml, table)
    • Preferred for bulk update workflow in Copilot mode
  • Comprehensive E2E Test Suite for Batch Updates

    • New tests/e2e/test_plan_review_batch_updates.py with comprehensive test coverage
    • Tests for interactive and non-interactive plan review workflows
    • Tests for batch feature updates via file upload
    • Tests for batch story updates via file upload
    • Tests for findings output in different formats (JSON, YAML, table)
    • All tests passing with full coverage of batch update functionality

Changed

  • Plan Review Command Refactoring

    • Refactored review function to reduce complexity by extracting helper functions
    • Improved code maintainability and reduced cyclomatic complexity
  • Documentation Updates

    • Updated docs/reference/commands.md with batch update documentation
    • Updated prompt templates to prefer batch update workflow
    • Enhanced examples with batch update file formats

Fixed

  • Type Checking Errors
    • Fixed missing scenarios and contracts parameters in Story constructor calls
    • Fixed contract decorator parameter handling in helper functions

Testing

  • All e2e tests passing
  • Format, lint, and type checks passing
  • No breaking changes

Version

  • Updated to v0.7.0

cursoragent and others added 6 commits November 18, 2025 13:31
Co-authored-by: dominikus.nold <dominikus.nold@web.de>
- Add --batch-updates option to plan update-feature command
- Add --batch-updates option to plan update-story command
- Add --list-findings option to plan review command with structured output
- Refactor review function to reduce complexity
- Add comprehensive e2e tests for batch updates
- Update documentation and prompts to prefer batch updates
- Update version to 0.7.0
…itioning

- Updated all examples and guides with CLI-first messaging
- Added Integration Showcases references throughout documentation
- Emphasized integration diversity (VS Code, Cursor, GitHub Actions, pre-commit)
- Updated brownfield showcase examples with integration workflow sections
- Updated platform-frontend CMS to link to Integration Showcases README
- Reviewed and aligned all brownfield documentation for CLI-first approach
- Updated version to 0.7.1

Files updated:
- All docs/examples/ files (6 files)
- All docs/guides/ files (6 files)
- docs/reference/directory-structure.md
- platform-frontend/iac/scripts/payload-content-helper.js
- Version files: pyproject.toml, setup.py, src/__init__.py, src/specfact_cli/__init__.py
- CHANGELOG.md with comprehensive 0.7.1 entry
@djm81
Copy link
Copy Markdown
Collaborator Author

djm81 commented Nov 22, 2025

Additional Changes (v0.7.1)

This PR now also includes comprehensive documentation alignment with CLI-first, integration-focused positioning:

Documentation Updates

  • Examples Folder (6 files): Added CLI-first messaging and Integration Showcases references
  • Guides Folder (6 files): Added CLI-first messaging and Integration Showcases references
  • Reference Documentation: Updated directory-structure.md with CLI-first messaging
  • Platform Frontend: Updated CMS to link "CLI Integrations" to Integration Showcases README

Version Update

  • Bumped version to 0.7.1 (from 0.7.0)
  • Updated all version files: pyproject.toml, setup.py, src/init.py, src/specfact_cli/init.py
  • Added comprehensive CHANGELOG.md entry for 0.7.1

Alignment Achieved

All documentation now consistently emphasizes:

  • ✅ CLI-first approach (works offline, no account, no vendor lock-in)
  • ✅ Integration diversity (VS Code, Cursor, GitHub Actions, pre-commit hooks)
  • ✅ Real examples (Integration Showcases with bugs fixed)
  • ✅ Existing workflows (no new platform to learn)

Note: This completes the documentation review flagged in the Go-to-Market Repositioning Plan.

- Fixed basedpyright warnings for repo_path.exists() in contract decorators
- Added isinstance() type guard to properly narrow Path | None types
- Updated Example 3 validation status to FULLY VALIDATED (CI/CD workflow verified in production)
- Updated documentation to reflect Example 3 is validated in specfact-cli repository CI/CD

Fixes type checking errors reported in GitHub Actions workflow:
- constitution_evidence_extractor.py:65:53 - Type of "exists" is unknown
- Fixed in all three methods: extract_article_vii_evidence, extract_article_viii_evidence, extract_article_ix_evidence

Example 3 Status Update:
- Changed from "COMMANDS VERIFIED" to "FULLY VALIDATED"
- Validated in production CI/CD (specfact-cli PR #28)
- Workflow successfully runs specfact repro and blocks PRs when validation fails
@djm81
Copy link
Copy Markdown
Collaborator Author

djm81 commented Nov 22, 2025

Type Checking Fix (v0.7.1)

Fixed type checking errors that were causing CI/CD validation to fail:

Fixed Issues

  • constitution_evidence_extractor.py: Fixed basedpyright warnings for `repo_path.exists()` in contract decorators
    • Added `isinstance(repo_path, Path)` type guard to properly narrow `Path | None` types
    • Fixed in all three methods: `extract_article_vii_evidence`, `extract_article_viii_evidence`, `extract_article_ix_evidence`

Example 3 Status Update

  • Example 3: GitHub Actions - Now FULLY VALIDATED (was "COMMANDS VERIFIED")
  • Validated in production CI/CD: specfact-cli PR #28
  • Workflow successfully runs `specfact repro` and blocks PRs when validation fails
  • Type checking errors are now properly detected and reported

Validation Progress

  • Overall Progress: 80% complete (4/5 fully validated, 1/5 pending)
  • ✅ Example 1: VS Code Integration - FULLY VALIDATED
  • ✅ Example 2: Cursor Integration - FULLY VALIDATED
  • ✅ Example 3: GitHub Actions - FULLY VALIDATED (CI/CD workflow verified)
  • ✅ Example 4: Pre-commit Hook - FULLY VALIDATED
  • ⏳ Example 5: Agentic Workflows - PENDING VALIDATION

The CI/CD workflow now passes type checking and successfully validates code changes in GitHub Actions.

@djm81 djm81 merged commit 29f9505 into main Nov 22, 2025
2 of 3 checks passed
djm81 added a commit that referenced this pull request Nov 22, 2025
…29)

* Build: Include resources in sdist and wheel builds

Co-authored-by: dominikus.nold <dominikus.nold@web.de>

* feat: Code2Spec Strategic Plan Phase 0 implementation (v0.6.9) (#26)

* feat: Add JSON/YAML support for plan bundles (#27)

* feat: add batch update support for plan review and updates (v0.7.0)

- Add --batch-updates option to plan update-feature command
- Add --batch-updates option to plan update-story command
- Add --list-findings option to plan review command with structured output
- Refactor review function to reduce complexity
- Add comprehensive e2e tests for batch updates
- Update documentation and prompts to prefer batch updates
- Update version to 0.7.0

* fix: remove whitespace from blank lines and apply formatting

* docs: align all documentation with CLI-first, integration-focused positioning

- Updated all examples and guides with CLI-first messaging
- Added Integration Showcases references throughout documentation
- Emphasized integration diversity (VS Code, Cursor, GitHub Actions, pre-commit)
- Updated brownfield showcase examples with integration workflow sections
- Updated platform-frontend CMS to link to Integration Showcases README
- Reviewed and aligned all brownfield documentation for CLI-first approach
- Updated version to 0.7.1

Files updated:
- All docs/examples/ files (6 files)
- All docs/guides/ files (6 files)
- docs/reference/directory-structure.md
- platform-frontend/iac/scripts/payload-content-helper.js
- Version files: pyproject.toml, setup.py, src/__init__.py, src/specfact_cli/__init__.py
- CHANGELOG.md with comprehensive 0.7.1 entry

* fix: resolve type checking errors in constitution_evidence_extractor

- Fixed basedpyright warnings for repo_path.exists() in contract decorators
- Added isinstance() type guard to properly narrow Path | None types
- Updated Example 3 validation status to FULLY VALIDATED (CI/CD workflow verified in production)
- Updated documentation to reflect Example 3 is validated in specfact-cli repository CI/CD

Fixes type checking errors reported in GitHub Actions workflow:
- constitution_evidence_extractor.py:65:53 - Type of "exists" is unknown
- Fixed in all three methods: extract_article_vii_evidence, extract_article_viii_evidence, extract_article_ix_evidence

Example 3 Status Update:
- Changed from "COMMANDS VERIFIED" to "FULLY VALIDATED"
- Validated in production CI/CD (specfact-cli PR #28)
- Workflow successfully runs specfact repro and blocks PRs when validation fails

* Fix typecheck error

* Fix all type check errors

* Fix type annotations

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Dominikus Nold <dominikus@nold-ai.com>
djm81 added a commit that referenced this pull request Nov 24, 2025
…8.0) (#30)

* Build: Include resources in sdist and wheel builds

Co-authored-by: dominikus.nold <dominikus.nold@web.de>

* feat: Code2Spec Strategic Plan Phase 0 implementation (v0.6.9) (#26)

* feat: Add JSON/YAML support for plan bundles (#27)

* feat: add batch update support for plan review and updates (v0.7.0)

- Add --batch-updates option to plan update-feature command
- Add --batch-updates option to plan update-story command
- Add --list-findings option to plan review command with structured output
- Refactor review function to reduce complexity
- Add comprehensive e2e tests for batch updates
- Update documentation and prompts to prefer batch updates
- Update version to 0.7.0

* fix: remove whitespace from blank lines and apply formatting

* docs: align all documentation with CLI-first, integration-focused positioning

- Updated all examples and guides with CLI-first messaging
- Added Integration Showcases references throughout documentation
- Emphasized integration diversity (VS Code, Cursor, GitHub Actions, pre-commit)
- Updated brownfield showcase examples with integration workflow sections
- Updated platform-frontend CMS to link to Integration Showcases README
- Reviewed and aligned all brownfield documentation for CLI-first approach
- Updated version to 0.7.1

Files updated:
- All docs/examples/ files (6 files)
- All docs/guides/ files (6 files)
- docs/reference/directory-structure.md
- platform-frontend/iac/scripts/payload-content-helper.js
- Version files: pyproject.toml, setup.py, src/__init__.py, src/specfact_cli/__init__.py
- CHANGELOG.md with comprehensive 0.7.1 entry

* fix: resolve type checking errors in constitution_evidence_extractor

- Fixed basedpyright warnings for repo_path.exists() in contract decorators
- Added isinstance() type guard to properly narrow Path | None types
- Updated Example 3 validation status to FULLY VALIDATED (CI/CD workflow verified in production)
- Updated documentation to reflect Example 3 is validated in specfact-cli repository CI/CD

Fixes type checking errors reported in GitHub Actions workflow:
- constitution_evidence_extractor.py:65:53 - Type of "exists" is unknown
- Fixed in all three methods: extract_article_vii_evidence, extract_article_viii_evidence, extract_article_ix_evidence

Example 3 Status Update:
- Changed from "COMMANDS VERIFIED" to "FULLY VALIDATED"
- Validated in production CI/CD (specfact-cli PR #28)
- Workflow successfully runs specfact repro and blocks PRs when validation fails

* Fix typecheck error

* Fix all type check errors

* Fix type annotations

* feat: Phase 4 complete - Contract generation and density scoring

- Add contract density validator (contract_validator.py) with metrics calculation
- Integrate contract density into enforce sdd and plan review commands
- Add contract density metrics display in plan review output
- Fix plan bundle hash persistence in plan harden command
- Add integration test for plan bundle hash persistence
- Update version to 0.8.0
- Update CHANGELOG.md with Phase 4 completion details
- Update end-user documentation with new commands (plan harden, enforce sdd, generate contracts)

Phase 4 Status: ✅ COMPLETE (2025-11-24)
- 4.1 Contract Stub Generator: ✅ Complete
- 4.2 Contract Density Scoring: ✅ Complete (10 unit tests passing)

Test Coverage:
- 10 unit tests for contract density validation
- 1 integration test for hash persistence
- All tests passing

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Dominikus Nold <dominikus@nold-ai.com>
djm81 added a commit that referenced this pull request Nov 30, 2025
* Build: Include resources in sdist and wheel builds

Co-authored-by: dominikus.nold <dominikus.nold@web.de>

* feat: Code2Spec Strategic Plan Phase 0 implementation (v0.6.9) (#26)

* feat: Add JSON/YAML support for plan bundles (#27)

* feat: add batch update support for plan review and updates (v0.7.0)

- Add --batch-updates option to plan update-feature command
- Add --batch-updates option to plan update-story command
- Add --list-findings option to plan review command with structured output
- Refactor review function to reduce complexity
- Add comprehensive e2e tests for batch updates
- Update documentation and prompts to prefer batch updates
- Update version to 0.7.0

* fix: remove whitespace from blank lines and apply formatting

* docs: align all documentation with CLI-first, integration-focused positioning

- Updated all examples and guides with CLI-first messaging
- Added Integration Showcases references throughout documentation
- Emphasized integration diversity (VS Code, Cursor, GitHub Actions, pre-commit)
- Updated brownfield showcase examples with integration workflow sections
- Updated platform-frontend CMS to link to Integration Showcases README
- Reviewed and aligned all brownfield documentation for CLI-first approach
- Updated version to 0.7.1

Files updated:
- All docs/examples/ files (6 files)
- All docs/guides/ files (6 files)
- docs/reference/directory-structure.md
- platform-frontend/iac/scripts/payload-content-helper.js
- Version files: pyproject.toml, setup.py, src/__init__.py, src/specfact_cli/__init__.py
- CHANGELOG.md with comprehensive 0.7.1 entry

* fix: resolve type checking errors in constitution_evidence_extractor

- Fixed basedpyright warnings for repo_path.exists() in contract decorators
- Added isinstance() type guard to properly narrow Path | None types
- Updated Example 3 validation status to FULLY VALIDATED (CI/CD workflow verified in production)
- Updated documentation to reflect Example 3 is validated in specfact-cli repository CI/CD

Fixes type checking errors reported in GitHub Actions workflow:
- constitution_evidence_extractor.py:65:53 - Type of "exists" is unknown
- Fixed in all three methods: extract_article_vii_evidence, extract_article_viii_evidence, extract_article_ix_evidence

Example 3 Status Update:
- Changed from "COMMANDS VERIFIED" to "FULLY VALIDATED"
- Validated in production CI/CD (specfact-cli PR #28)
- Workflow successfully runs specfact repro and blocks PRs when validation fails

* Fix typecheck error

* Fix all type check errors

* Fix type annotations

* feat: Phase 4 complete - Contract generation and density scoring

- Add contract density validator (contract_validator.py) with metrics calculation
- Integrate contract density into enforce sdd and plan review commands
- Add contract density metrics display in plan review output
- Fix plan bundle hash persistence in plan harden command
- Add integration test for plan bundle hash persistence
- Update version to 0.8.0
- Update CHANGELOG.md with Phase 4 completion details
- Update end-user documentation with new commands (plan harden, enforce sdd, generate contracts)

Phase 4 Status: ✅ COMPLETE (2025-11-24)
- 4.1 Contract Stub Generator: ✅ Complete
- 4.2 Contract Density Scoring: ✅ Complete (10 unit tests passing)

Test Coverage:
- 10 unit tests for contract density validation
- 1 integration test for hash persistence
- All tests passing

* feat: Complete Phase 4.1 Bridge Configuration Schema and Add Conflict Detection (#31)

* feat: modular project bundle structure and bridge architecture (v0.9.0)

- Implement modular project bundle structure (Phases 1-3)
  - Directory-based bundles with separated aspects
  - Bundle manifest with dual versioning and checksums
  - Lazy loading for features
  - Format detection and bundle loader/writer

- Implement configurable bridge architecture (Phase 4 partial)
  - Bridge configuration models (adapter-agnostic)
  - Bridge detection and probe (auto-detect tool versions)
  - Bridge-based sync, templates, and watch mode
  - Spec-Kit is one adapter option among many

- Update all commands to use --bundle parameter
  - All commands require explicit bundle name
  - SDD integration updated for modular bundles
  - 68 integration tests passing

- Update documentation to reflect bridge architecture
  - Implementation plans updated with completion status
  - Architecture documentation for adapter-agnostic approach

BREAKING CHANGE: All commands now require --bundle parameter.
Modular format is the only supported format.

* feat: complete Phase 4.1 bridge configuration schema and add conflict detection

- Complete Phase 4.1: Bridge Configuration Schema
  - Add preset methods: preset_speckit_classic(), preset_speckit_modern(), preset_generic_markdown()
  - Add comprehensive tests for all preset methods (5 new tests)
  - All bridge configuration models complete with contract decorators

- Add conflict detection enhancement
  - Warn when overwriting existing files during export_artifact()
  - Warn when updating bundles during import_artifact()
  - Add test_export_artifact_conflict_detection test
  - Improves safety of sync operations

- Update documentation
  - Mark Phase 4.1 as completed (2025-11-26)
  - Mark conflict detection as completed
  - Document deferred items with acceptance criteria
  - Update test counts (84 unit tests passing)

Test Results:
- ✅ 84 unit tests passing (bridge components)
- ✅ All contract tests passing
- ✅ Type checking: 0 errors

Phase 4 Status: ✅ COMPLETE (all 5 sub-phases done)

* fix: update integration tests for new command signatures

- Update generate contracts tests to use --plan with bundle directory
- Update import tests to use 'from-bridge --adapter speckit' instead of 'from-spec-kit'
- Update sync tests to use 'sync bridge --adapter speckit' instead of 'sync spec-kit'
- Update test assertions for modular bundle structure (projects/ instead of plans/)
- Fix SDD path references (sdd/<bundle-name>.yaml instead of sdd.yaml)

Fixes CI failures in:
- test_generate_contracts_creates_files
- test_import_speckit_via_cli_command
- test_bidirectional_sync_with_format_compatibility

* Fix tests

* apply format and lint

* Fix tests

* Fix all test failures

* Fixed type checks

* Update patch version

* Update docs and fix some logic

* Update prompt templates

---------

Co-authored-by: Dominikus Nold <dominikus@nold-ai.com>

* Fix integration test

* feat: update prompt templates with standardized parameter names

- Update all prompt templates to use new standardized parameters:
  - --non-interactive → --no-interactive
  - --format → --output-format
- Updated files:
  - specfact-plan-select.md (45 instances)
  - specfact-plan-promote.md (7 instances)
  - specfact-plan-review.md (4 instances)
  - specfact-plan-compare.md (16 instances + format updates)
- All prompt templates now synchronized with CLI parameter standardization (Phase 1)

Part of CLI Reorganization Phase 1 completion.

* Update prompts and cli order

* feat: CLI reorganization and Specmatic integration (v0.10.0) (#32)

* feat: CLI reorganization and Specmatic integration (v0.10.0)

- Add Specmatic integration with npx support
  - New 'spec' command group for API contract testing
  - Auto-detection of specmatic (direct or npx)
  - Integration with import, enforce, and sync commands
  - Comprehensive test coverage and documentation

- Reorganize CLI commands
  - Move constitution commands to bridge group
  - Remove legacy constitution command (no deprecation period)
  - Reorder commands in logical workflow sequence
  - Remove hello command, show welcome message on no args

- Fix test suite
  - Fix 4 failing e2e tests in test_init_command.py
  - Fix all linter issues (RUF005, RUF059)
  - All 1018 tests passing

- Update version to 0.10.0
  - Sync version across pyproject.toml, __init__.py, setup.py
  - Add comprehensive changelog entry

* Update module version

---------

Co-authored-by: Dominikus Nold <dominikus@nold-ai.com>

* feat: complete CLI reorganization (v0.10.1)

- Phase 1: Parameter standardization complete
  - Standardized all parameter names (--repo, --out, --output-format, --no-interactive, --bundle)
  - Created parameter standard document
  - Added deprecation warnings for old parameter names

- Phase 2: Parameter grouping complete
  - All commands organized with logical parameter groups
  - Help text updated with parameter group documentation
  - Improved discoverability and organization

- Phase 3: Slash command reorganization complete
  - Reduced from 13 to 8 commands with numbered workflow ordering
  - New commands: specfact.01-import through specfact.06-sync
  - Shared CLI enforcement rules created
  - All templates follow consistent structure

- Phase 4: Documentation updates complete
  - All command reference documentation updated
  - All user guides updated with new parameter structure
  - Migration guide expanded with comprehensive changes
  - All examples use consistent --bundle parameter format

BREAKING CHANGE: All commands now require --bundle parameter (no default).
Old parameter names deprecated (3-month transition period).
Slash commands reorganized (old commands deprecated).

Version: 0.10.1

* feat: migration tool test coverage and enhanced analysis features (#33)

* chore: bump version to 0.10.2 and add changelog

- Added SDD Feature Parity Implementation (Phases 1.5, 5.1, 5.2, 5.3)
- Multi-SDD infrastructure with discovery utility
- Task generation from plan bundles and SDD manifests
- Code implementation command for executing tasks
- Idea-to-ship orchestrator for end-to-end workflow
- Fixed enum serialization bug in task generation
- Fixed bundle name validation in orchestrator
- Comprehensive test coverage (26 new tests)

* chore: bump version to 0.11.0

- Fixed test timeout in test_init_handles_missing_templates
- Enhanced error handling in get_package_installation_locations()
- Added skip logic for problematic directories (typeshed stubs)
- Improved test mocking for both utils and commands modules
- Updated version consistently across pyproject.toml, setup.py, and __init__.py files

* feat: add --include-tests flag for configurable test file filtering in relationship mapping

- Add --include-tests flag to import from-code command
- Test files filtered by default for ~30-50% speed improvement
- Rationale: Test files are consumers of production code (one-way dependency)
- Configurable via flag for comprehensive analysis when needed
- Update CHANGELOG.md for version 0.11.1
- Update internal documentation with test file filtering optimization

* fix: resolve max_workers validation, prompt validation, and type checking errors

- Fix ThreadPoolExecutor max_workers must be > 0 in 5 locations
  - graph_analyzer.py: build_dependency_graph()
  - import_cmd.py: contract loading, hash updates, contract extraction
  - code_analyzer.py: file analysis parallelization
- Fix prompt validation test path resolution (4 parent levels)
- Fix prompt glob pattern (specfact-*.md -> specfact.*.md)
- Fix 53 basedpyright errors for missing Feature parameters
- Update version to 0.11.2 and sync across all version files

All 9 previously failing tests now passing.

* Add codeowners

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>

* feat: enhance target user extraction and remove GWT format references (v0.11.3) (#34)

* feat: enhance target user extraction and remove GWT format references

- Refactor target user extraction to prioritize pyproject.toml and README.md over codebase scanning
- Simplify excluded terms list (reduced from 60+ to 14 terms)
- Remove GWT format references from ambiguity scanner questions
- Update question text to clarify acceptance criteria vs OpenAPI contracts
- Fix false positives in user persona extraction (e.g., 'Detecting', 'Data Pipelines')
- Improve README.md extraction to skip use cases, only extract personas

Version bump: 0.11.2 → 0.11.3

* fix: remove invalid forced include for resources/semgrep

- Removed forced include for resources/semgrep (directory doesn't exist at root)
- Semgrep files are in src/specfact_cli/resources/semgrep/ and are automatically included
- Fixes build error: FileNotFoundError: Forced include not found

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Dominikus Nold <dominikus@nold-ai.com>
Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
djm81 added a commit that referenced this pull request Dec 2, 2025
#37)

* Build: Include resources in sdist and wheel builds

Co-authored-by: dominikus.nold <dominikus.nold@web.de>

* feat: Code2Spec Strategic Plan Phase 0 implementation (v0.6.9) (#26)

* feat: Add JSON/YAML support for plan bundles (#27)

* feat: add batch update support for plan review and updates (v0.7.0)

- Add --batch-updates option to plan update-feature command
- Add --batch-updates option to plan update-story command
- Add --list-findings option to plan review command with structured output
- Refactor review function to reduce complexity
- Add comprehensive e2e tests for batch updates
- Update documentation and prompts to prefer batch updates
- Update version to 0.7.0

* fix: remove whitespace from blank lines and apply formatting

* docs: align all documentation with CLI-first, integration-focused positioning

- Updated all examples and guides with CLI-first messaging
- Added Integration Showcases references throughout documentation
- Emphasized integration diversity (VS Code, Cursor, GitHub Actions, pre-commit)
- Updated brownfield showcase examples with integration workflow sections
- Updated platform-frontend CMS to link to Integration Showcases README
- Reviewed and aligned all brownfield documentation for CLI-first approach
- Updated version to 0.7.1

Files updated:
- All docs/examples/ files (6 files)
- All docs/guides/ files (6 files)
- docs/reference/directory-structure.md
- platform-frontend/iac/scripts/payload-content-helper.js
- Version files: pyproject.toml, setup.py, src/__init__.py, src/specfact_cli/__init__.py
- CHANGELOG.md with comprehensive 0.7.1 entry

* fix: resolve type checking errors in constitution_evidence_extractor

- Fixed basedpyright warnings for repo_path.exists() in contract decorators
- Added isinstance() type guard to properly narrow Path | None types
- Updated Example 3 validation status to FULLY VALIDATED (CI/CD workflow verified in production)
- Updated documentation to reflect Example 3 is validated in specfact-cli repository CI/CD

Fixes type checking errors reported in GitHub Actions workflow:
- constitution_evidence_extractor.py:65:53 - Type of "exists" is unknown
- Fixed in all three methods: extract_article_vii_evidence, extract_article_viii_evidence, extract_article_ix_evidence

Example 3 Status Update:
- Changed from "COMMANDS VERIFIED" to "FULLY VALIDATED"
- Validated in production CI/CD (specfact-cli PR #28)
- Workflow successfully runs specfact repro and blocks PRs when validation fails

* Fix typecheck error

* Fix all type check errors

* Fix type annotations

* feat: Phase 4 complete - Contract generation and density scoring

- Add contract density validator (contract_validator.py) with metrics calculation
- Integrate contract density into enforce sdd and plan review commands
- Add contract density metrics display in plan review output
- Fix plan bundle hash persistence in plan harden command
- Add integration test for plan bundle hash persistence
- Update version to 0.8.0
- Update CHANGELOG.md with Phase 4 completion details
- Update end-user documentation with new commands (plan harden, enforce sdd, generate contracts)

Phase 4 Status: ✅ COMPLETE (2025-11-24)
- 4.1 Contract Stub Generator: ✅ Complete
- 4.2 Contract Density Scoring: ✅ Complete (10 unit tests passing)

Test Coverage:
- 10 unit tests for contract density validation
- 1 integration test for hash persistence
- All tests passing

* feat: Complete Phase 4.1 Bridge Configuration Schema and Add Conflict Detection (#31)

* feat: modular project bundle structure and bridge architecture (v0.9.0)

- Implement modular project bundle structure (Phases 1-3)
  - Directory-based bundles with separated aspects
  - Bundle manifest with dual versioning and checksums
  - Lazy loading for features
  - Format detection and bundle loader/writer

- Implement configurable bridge architecture (Phase 4 partial)
  - Bridge configuration models (adapter-agnostic)
  - Bridge detection and probe (auto-detect tool versions)
  - Bridge-based sync, templates, and watch mode
  - Spec-Kit is one adapter option among many

- Update all commands to use --bundle parameter
  - All commands require explicit bundle name
  - SDD integration updated for modular bundles
  - 68 integration tests passing

- Update documentation to reflect bridge architecture
  - Implementation plans updated with completion status
  - Architecture documentation for adapter-agnostic approach

BREAKING CHANGE: All commands now require --bundle parameter.
Modular format is the only supported format.

* feat: complete Phase 4.1 bridge configuration schema and add conflict detection

- Complete Phase 4.1: Bridge Configuration Schema
  - Add preset methods: preset_speckit_classic(), preset_speckit_modern(), preset_generic_markdown()
  - Add comprehensive tests for all preset methods (5 new tests)
  - All bridge configuration models complete with contract decorators

- Add conflict detection enhancement
  - Warn when overwriting existing files during export_artifact()
  - Warn when updating bundles during import_artifact()
  - Add test_export_artifact_conflict_detection test
  - Improves safety of sync operations

- Update documentation
  - Mark Phase 4.1 as completed (2025-11-26)
  - Mark conflict detection as completed
  - Document deferred items with acceptance criteria
  - Update test counts (84 unit tests passing)

Test Results:
- ✅ 84 unit tests passing (bridge components)
- ✅ All contract tests passing
- ✅ Type checking: 0 errors

Phase 4 Status: ✅ COMPLETE (all 5 sub-phases done)

* fix: update integration tests for new command signatures

- Update generate contracts tests to use --plan with bundle directory
- Update import tests to use 'from-bridge --adapter speckit' instead of 'from-spec-kit'
- Update sync tests to use 'sync bridge --adapter speckit' instead of 'sync spec-kit'
- Update test assertions for modular bundle structure (projects/ instead of plans/)
- Fix SDD path references (sdd/<bundle-name>.yaml instead of sdd.yaml)

Fixes CI failures in:
- test_generate_contracts_creates_files
- test_import_speckit_via_cli_command
- test_bidirectional_sync_with_format_compatibility

* Fix tests

* apply format and lint

* Fix tests

* Fix all test failures

* Fixed type checks

* Update patch version

* Update docs and fix some logic

* Update prompt templates

---------

Co-authored-by: Dominikus Nold <dominikus@nold-ai.com>

* Fix integration test

* feat: update prompt templates with standardized parameter names

- Update all prompt templates to use new standardized parameters:
  - --non-interactive → --no-interactive
  - --format → --output-format
- Updated files:
  - specfact-plan-select.md (45 instances)
  - specfact-plan-promote.md (7 instances)
  - specfact-plan-review.md (4 instances)
  - specfact-plan-compare.md (16 instances + format updates)
- All prompt templates now synchronized with CLI parameter standardization (Phase 1)

Part of CLI Reorganization Phase 1 completion.

* Update prompts and cli order

* feat: CLI reorganization and Specmatic integration (v0.10.0) (#32)

* feat: CLI reorganization and Specmatic integration (v0.10.0)

- Add Specmatic integration with npx support
  - New 'spec' command group for API contract testing
  - Auto-detection of specmatic (direct or npx)
  - Integration with import, enforce, and sync commands
  - Comprehensive test coverage and documentation

- Reorganize CLI commands
  - Move constitution commands to bridge group
  - Remove legacy constitution command (no deprecation period)
  - Reorder commands in logical workflow sequence
  - Remove hello command, show welcome message on no args

- Fix test suite
  - Fix 4 failing e2e tests in test_init_command.py
  - Fix all linter issues (RUF005, RUF059)
  - All 1018 tests passing

- Update version to 0.10.0
  - Sync version across pyproject.toml, __init__.py, setup.py
  - Add comprehensive changelog entry

* Update module version

---------

Co-authored-by: Dominikus Nold <dominikus@nold-ai.com>

* feat: complete CLI reorganization (v0.10.1)

- Phase 1: Parameter standardization complete
  - Standardized all parameter names (--repo, --out, --output-format, --no-interactive, --bundle)
  - Created parameter standard document
  - Added deprecation warnings for old parameter names

- Phase 2: Parameter grouping complete
  - All commands organized with logical parameter groups
  - Help text updated with parameter group documentation
  - Improved discoverability and organization

- Phase 3: Slash command reorganization complete
  - Reduced from 13 to 8 commands with numbered workflow ordering
  - New commands: specfact.01-import through specfact.06-sync
  - Shared CLI enforcement rules created
  - All templates follow consistent structure

- Phase 4: Documentation updates complete
  - All command reference documentation updated
  - All user guides updated with new parameter structure
  - Migration guide expanded with comprehensive changes
  - All examples use consistent --bundle parameter format

BREAKING CHANGE: All commands now require --bundle parameter (no default).
Old parameter names deprecated (3-month transition period).
Slash commands reorganized (old commands deprecated).

Version: 0.10.1

* feat: migration tool test coverage and enhanced analysis features (#33)

* chore: bump version to 0.10.2 and add changelog

- Added SDD Feature Parity Implementation (Phases 1.5, 5.1, 5.2, 5.3)
- Multi-SDD infrastructure with discovery utility
- Task generation from plan bundles and SDD manifests
- Code implementation command for executing tasks
- Idea-to-ship orchestrator for end-to-end workflow
- Fixed enum serialization bug in task generation
- Fixed bundle name validation in orchestrator
- Comprehensive test coverage (26 new tests)

* chore: bump version to 0.11.0

- Fixed test timeout in test_init_handles_missing_templates
- Enhanced error handling in get_package_installation_locations()
- Added skip logic for problematic directories (typeshed stubs)
- Improved test mocking for both utils and commands modules
- Updated version consistently across pyproject.toml, setup.py, and __init__.py files

* feat: add --include-tests flag for configurable test file filtering in relationship mapping

- Add --include-tests flag to import from-code command
- Test files filtered by default for ~30-50% speed improvement
- Rationale: Test files are consumers of production code (one-way dependency)
- Configurable via flag for comprehensive analysis when needed
- Update CHANGELOG.md for version 0.11.1
- Update internal documentation with test file filtering optimization

* fix: resolve max_workers validation, prompt validation, and type checking errors

- Fix ThreadPoolExecutor max_workers must be > 0 in 5 locations
  - graph_analyzer.py: build_dependency_graph()
  - import_cmd.py: contract loading, hash updates, contract extraction
  - code_analyzer.py: file analysis parallelization
- Fix prompt validation test path resolution (4 parent levels)
- Fix prompt glob pattern (specfact-*.md -> specfact.*.md)
- Fix 53 basedpyright errors for missing Feature parameters
- Update version to 0.11.2 and sync across all version files

All 9 previously failing tests now passing.

* Add codeowners

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>

* feat: enhance target user extraction and remove GWT format references (v0.11.3) (#34)

* feat: enhance target user extraction and remove GWT format references

- Refactor target user extraction to prioritize pyproject.toml and README.md over codebase scanning
- Simplify excluded terms list (reduced from 60+ to 14 terms)
- Remove GWT format references from ambiguity scanner questions
- Update question text to clarify acceptance criteria vs OpenAPI contracts
- Fix false positives in user persona extraction (e.g., 'Detecting', 'Data Pipelines')
- Improve README.md extraction to skip use cases, only extract personas

Version bump: 0.11.2 → 0.11.3

* fix: remove invalid forced include for resources/semgrep

- Removed forced include for resources/semgrep (directory doesn't exist at root)
- Semgrep files are in src/specfact_cli/resources/semgrep/ and are automatically included
- Fixes build error: FileNotFoundError: Forced include not found

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>

* feat: version 0.11.4 - SDD hash stability, enforce sdd bug fix, prompt optimization

- Fix SDD checksum mismatch by excluding clarifications from hash computation
- Add deterministic feature sorting by key for consistent hash calculation
- Fix enforce sdd command @require decorator to allow None bundle parameter
- Suppress Rich library warnings about ipywidgets in test output
- Optimize all prompt files for token efficiency (822 lines, ~2,872 words)
- Update prompts to reflect active plan fallback functionality
- Add unified progress display utilities with timing information
- Update version to 0.11.4 across all version files

* Improve review template

* fix: resolve Rich Progress display conflicts and contract violations in tests

- Add test mode detection to progress utilities to skip Progress display in tests
- Implement safe Progress display creation with fallback to direct load/save
- Fix icontract @Ensure decorator syntax (lambda result: None -> result is None)
- Add explicit return None statements to satisfy contract requirements
- Fixes 11 failing tests related to LiveError and contract violations

All tests now pass across Python 3.11, 3.12, and 3.13.

* chore: bump version to 0.11.5

- Update version in pyproject.toml, setup.py, src/__init__.py, and src/specfact_cli/__init__.py
- Add CHANGELOG entry for version 0.11.5 documenting test fixes

* style: fix formatting issues

- Remove unnecessary return None statements (use implicit return)
- Fix RET504 error: return directly instead of assigning before return
- All formatting checks now pass

* feat: version 0.11.4 - SDD hash stability, enforce sdd bug fix, prompt optimization (#36)

* feat: version 0.11.4 - SDD hash stability, enforce sdd bug fix, prompt optimization

- Fix SDD checksum mismatch by excluding clarifications from hash computation
- Add deterministic feature sorting by key for consistent hash calculation
- Fix enforce sdd command @require decorator to allow None bundle parameter
- Suppress Rich library warnings about ipywidgets in test output
- Optimize all prompt files for token efficiency (822 lines, ~2,872 words)
- Update prompts to reflect active plan fallback functionality
- Add unified progress display utilities with timing information
- Update version to 0.11.4 across all version files

* Improve review template

* fix: resolve Rich Progress display conflicts and contract violations in tests

- Add test mode detection to progress utilities to skip Progress display in tests
- Implement safe Progress display creation with fallback to direct load/save
- Fix icontract @Ensure decorator syntax (lambda result: None -> result is None)
- Add explicit return None statements to satisfy contract requirements
- Fixes 11 failing tests related to LiveError and contract violations

All tests now pass across Python 3.11, 3.12, and 3.13.

* chore: bump version to 0.11.5

- Update version in pyproject.toml, setup.py, src/__init__.py, and src/specfact_cli/__init__.py
- Add CHANGELOG entry for version 0.11.5 documenting test fixes

* style: fix formatting issues

- Remove unnecessary return None statements (use implicit return)
- Fix RET504 error: return directly instead of assigning before return
- All formatting checks now pass

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Dominikus Nold <dominikus@nold-ai.com>
Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants