feat: implement modular capability system with automatic discovery

- Move release management to capabilities/release-management/ with complete Makefile
- Create automatic capability discovery system in scripts/capability_discovery.mk
- Add capability-manager subagent for managing modular architecture
- Implement target delegation system enabling capability-name-target patterns
- Create Makefiles for markitect-content, markitect-utils, and issue-facade capabilities
- Remove legacy release management code and documentation from main project
- Update main Makefile to use capability discovery and delegation
- Add comprehensive capability status, help, and management targets

The capability system provides:
- Automatic discovery of capabilities with Makefiles
- Clean target delegation without conflicts
- Modular architecture following established patterns
- Comprehensive help and status reporting
- Zero-conflict capability integration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-09 01:29:15 +01:00
parent d505c15d40
commit d0ffdc057c
38 changed files with 3978 additions and 1361 deletions

114
Makefile
View File

@@ -1,7 +1,10 @@
# MarkiTect - Advanced Markdown Engine
# Makefile for common development tasks
.PHONY: help setup install install-dev uninstall install-home install-home-venv install-user-deps install-force-deps install-deps-venv install-system-deps list-deps setup-dev test build clean update status lint format check-deps venv-status update-digest add-diary-entry test-status test-new test-coverage test-arch test-foundation test-infrastructure test-integration test-domain test-service test-application test-presentation test-quick test-layers test-random test-random-seed test-random-repeat test-install-randomly test-clean test-tdd test-changed test-module test-cache-clean test-efficient cli-help release-status release-validate release-prepare release-build release-publish release-dry-run chaos-validate chaos-matrix chaos-inject chaos-report cost-help
# Include capability discovery system
include scripts/capability_discovery.mk
.PHONY: help setup install install-dev uninstall install-home install-home-venv install-user-deps install-force-deps install-deps-venv install-system-deps list-deps setup-dev test build clean update status lint format check-deps venv-status update-digest add-diary-entry test-status test-new test-coverage test-arch test-foundation test-infrastructure test-integration test-domain test-service test-application test-presentation test-quick test-layers test-random test-random-seed test-random-repeat test-install-randomly test-clean test-tdd test-changed test-module test-cache-clean test-efficient cli-help chaos-validate chaos-matrix chaos-inject chaos-report cost-help
# Default target
help:
@@ -26,8 +29,7 @@ help:
@echo ""
@echo "Development:"
@echo " test - Run core tests (excluding capability-specific tests)"
@echo " test-capabilities - Run all capability-specific tests"
@echo " test-capability-* - Run specific capability tests (content, utils, finance, etc.)"
@echo " test-capabilities - Run all capability tests (delegated to capabilities)"
@echo " test-status - Show test status summary without re-running"
@echo " test-new - Create new test file template"
@echo " test-coverage - Analyze test coverage"
@@ -36,16 +38,15 @@ help:
@echo " lint - Run code linting"
@echo " format - Format code"
@echo ""
@echo "Release Management (setuptools-scm):"
@echo " release-status - Show current release status"
@echo " release-validate - Validate repository for release"
@echo " release-build - Build release packages (version auto-detected)"
@echo " release-tag VERSION=x.y.z - Create release git tag"
@echo " release-publish VERSION=x.y.z - Complete release workflow (tag + build)"
@echo " release-publish-gitea VERSION=x.y.z - Release + upload to Gitea registry"
@echo " release-upload-gitea - Upload existing packages to Gitea registry"
@echo " release-registry - Show Gitea package registry information"
@echo " release-dry-run VERSION=x.y.z - Test release workflow"
@echo "Capabilities & Extensions:"
@echo " capabilities-list List all available capabilities"
@echo " capabilities-help Show help for all capabilities"
@echo " capabilities-status Show capability status"
@echo ""
@echo "Release Management (via capability):"
@echo " release-status Show current release status"
@echo " release-publish-gitea VERSION=x.y.z Complete release + Gitea upload"
@echo " Run 'make capabilities-help' for all release commands"
@echo ""
@echo "Chaos Engineering:"
@echo " chaos-validate - Run architectural independence validation"
@@ -384,32 +385,12 @@ test: $(VENV)/bin/activate
fi
# Capability-Specific Test Targets
test-capabilities: test-capability-content test-capability-utils test-capability-finance test-capability-query test-capability-graphql test-capability-plugins
# Delegate to capability discovery system for testing capabilities
test-capabilities: capabilities-test
@echo "✅ All capability tests completed"
test-capability-content: $(VENV)/bin/activate
@echo "🧪 Running markitect-content capability tests..."
@cd capabilities/markitect-content && python -m pytest tests/ -v
test-capability-utils: $(VENV)/bin/activate
@echo "🧪 Running markitect-utils capability tests..."
@cd capabilities/markitect-utils && python -m pytest tests/ -v
test-capability-finance: $(VENV)/bin/activate
@echo "🧪 Running finance capability tests..."
@PYTHONPATH=. $(VENV_PYTHON) -m pytest markitect/finance/tests/ -v
test-capability-query: $(VENV)/bin/activate
@echo "🧪 Running query paradigms capability tests..."
@PYTHONPATH=. $(VENV_PYTHON) -m pytest markitect/query_paradigms/tests/ -v
test-capability-graphql: $(VENV)/bin/activate
@echo "🧪 Running GraphQL capability tests..."
@PYTHONPATH=. $(VENV_PYTHON) -m pytest markitect/graphql/tests/ -v
test-capability-plugins: $(VENV)/bin/activate
@echo "🧪 Running plugins capability tests..."
@PYTHONPATH=. $(VENV_PYTHON) -m pytest markitect/plugins/tests/ -v
# Legacy test-capability-* targets are now handled by capability delegation
# Use 'make capability-name-test' instead (e.g., 'make markitect-content-test')
# TDD8 Workflow Optimized Test Targets (Issue #57)
@@ -502,62 +483,9 @@ package: $(VENV)/bin/activate
@echo "✅ Packages built successfully:"
@ls -lah dist/ 2>/dev/null || echo " No packages found"
# Release management (setuptools-scm)
release-status:
@echo "🔍 Checking release status (setuptools-scm)..."
$(VENV_PYTHON) release.py status
release-validate:
@echo "✅ Validating release readiness..."
$(VENV_PYTHON) release.py validate
release-build:
@echo "📦 Building release packages (version auto-detected by setuptools-scm)..."
$(VENV_PYTHON) release.py build
release-tag:
@echo "🏷️ Creating release git tag..."
@if [ -z "$(VERSION)" ]; then \
echo "❌ Usage: make release-tag VERSION=1.0.0"; \
echo " This creates a git tag that setuptools-scm will use for versioning"; \
exit 1; \
fi
$(VENV_PYTHON) release.py tag --version $(VERSION)
release-publish:
@echo "📢 Publishing complete release (setuptools-scm workflow)..."
@if [ -z "$(VERSION)" ]; then \
echo "❌ Usage: make release-publish VERSION=1.0.0"; \
echo " This creates git tag + builds packages automatically"; \
exit 1; \
fi
$(VENV_PYTHON) release.py publish --version $(VERSION)
release-dry-run:
@echo "🧪 Dry run release workflow..."
@if [ -z "$(VERSION)" ]; then \
echo "❌ Usage: make release-dry-run VERSION=1.0.0"; \
echo " This tests the tag + build workflow without making changes"; \
exit 1; \
fi
$(VENV_PYTHON) release.py publish --version $(VERSION) --dry-run
release-publish-gitea:
@echo "🚀 Publishing complete release with Gitea upload..."
@if [ -z "$(VERSION)" ]; then \
echo "❌ Usage: make release-publish-gitea VERSION=1.0.0"; \
echo " This creates git tag + builds packages + uploads to Gitea"; \
exit 1; \
fi
$(VENV_PYTHON) release.py publish --version $(VERSION) --to-gitea
release-upload-gitea:
@echo "📡 Uploading packages to Gitea registry..."
$(VENV_PYTHON) release.py upload
release-registry:
@echo "📦 Gitea package registry information..."
$(VENV_PYTHON) release.py registry
# Release management targets are provided by capabilities/release-management/Makefile
# All capability targets are automatically discovered and available via delegation
# Run 'make capabilities-help' to see all available capability commands
# Chaos Engineering targets
chaos-validate: