Some checks failed
Test Suite / integration-tests (push) Has been cancelled
Test Suite / e2e-tests (push) Has been cancelled
Test Suite / unit-tests (3.11) (push) Has been cancelled
Test Suite / unit-tests (3.12) (push) Has been cancelled
Test Suite / performance-tests (push) Has been cancelled
Test Suite / code-quality (push) Has been cancelled
Test Suite / security-scan (push) Has been cancelled
Test Suite / test-summary (push) Has been cancelled
Updated workplan with comprehensive completion summary documenting successful release of v0.10.0 following Standard Track (Stages 1-2). **Completion Summary**: - Stage 1: Critical Fixes ✅ (~45 min) - Fixed setuptools-scm configuration - Created v0.9.0 retroactive tag - Prepared CHANGELOG for v0.10.0 - Stage 2: CHANGELOG Schema ✅ (~90 min) - Created changelog-schema-v1.0.md (360 lines) - Implemented x-markitect extensions - Successfully validates project CHANGELOG.md - All semantic checks passing **Release**: v0.10.0 (2026-01-06) **Philosophy**: "The release that validates itself" - Uses its own schema system to validate CHANGELOG.md - Perfect showcase of schema evolution practical value **Deferred Work**: - Stage 3: Release capability enhancements (future) - Stage 4: Schema system extensions (not needed) Updated status from "Planning" to "Stages 1-2 Complete, v0.10.0 Released"
732 lines
21 KiB
Markdown
732 lines
21 KiB
Markdown
# Release Management Optimization Workplan
|
|
|
|
**Topic**: 260106-release-management-optimization
|
|
**Created**: 2026-01-06
|
|
**Status**: Stages 1-2 Complete, v0.10.0 Released
|
|
**Priority**: High (blocks v0.10.0 release) ✅ UNBLOCKED
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
Enhance release management infrastructure with robust validation and automation, using the newly built schema system. This creates a practical showcase for the schema evolution capabilities while fixing critical release tooling issues.
|
|
|
|
## Motivation
|
|
|
|
### Current Issues
|
|
|
|
1. **setuptools-scm Configuration Bug**
|
|
- Missing tag regex filter → picks up non-version tags
|
|
- Result: `markitect --version` returns "unknown"
|
|
- Impact: Users can't verify installed version
|
|
|
|
2. **Version History Inconsistency**
|
|
- CHANGELOG shows v0.9.0 (2025-11-14) but git tag never created
|
|
- setuptools-scm sees v0.8.0 as latest
|
|
- 109 commits between v0.8.0 and current
|
|
|
|
3. **No Validation Infrastructure**
|
|
- No CHANGELOG validation (format, version consistency)
|
|
- No pre-release checks for version/tag alignment
|
|
- No automated version bump validation
|
|
|
|
4. **Missing CLI Features**
|
|
- No explicit `markitect --version` command
|
|
- Version info only via __version__.py fallback
|
|
|
|
### Opportunity: Schema System Showcase
|
|
|
|
Creating a **CHANGELOG schema** demonstrates:
|
|
- Real-world use of x-markitect extensions
|
|
- Schema validation for structured markdown
|
|
- Section classification (Unreleased, versioned releases)
|
|
- Content patterns (Keep a Changelog format)
|
|
- Integration with release tooling
|
|
|
|
**Perfect timing**: Release v0.10.0 with the tool that validates its own changelog!
|
|
|
|
---
|
|
|
|
## Goals
|
|
|
|
### Primary
|
|
1. ✅ **Fix setuptools-scm configuration** (blocks release)
|
|
2. ✅ **Restore version history** (retroactive v0.9.0 tag)
|
|
3. ✅ **Create CHANGELOG schema** (Keep a Changelog format)
|
|
4. ✅ **Implement CHANGELOG validation** (pre-release check)
|
|
|
|
### Secondary
|
|
5. ⭐ **Add explicit version command** to markitect CLI
|
|
6. ⭐ **Extend schema system** (if needed for system calls/agents)
|
|
7. ⭐ **Release capability enhancements** (validation hooks)
|
|
|
|
### Stretch
|
|
8. 🎯 **Git tag validation** (ensure CHANGELOG ↔ tags sync)
|
|
9. 🎯 **Automated version bumping** suggestions
|
|
10. 🎯 **Release notes generation** from CHANGELOG
|
|
|
|
---
|
|
|
|
## Staged Workplan
|
|
|
|
### Stage 1: Critical Fixes (Required for v0.10.0)
|
|
|
|
**Goal**: Unblock immediate release
|
|
|
|
#### Task 1.1: Fix setuptools-scm Configuration
|
|
**File**: `pyproject.toml`
|
|
|
|
**Current**:
|
|
```toml
|
|
[tool.setuptools_scm]
|
|
write_to = "markitect/_version.py"
|
|
```
|
|
|
|
**Updated**:
|
|
```toml
|
|
[tool.setuptools_scm]
|
|
write_to = "markitect/_version.py"
|
|
version_scheme = "python-simplified-semver"
|
|
tag_regex = "^v(?P<version>[0-9]+\\.[0-9]+\\.[0-9]+)$"
|
|
local_scheme = "no-local-version"
|
|
```
|
|
|
|
**Validation**:
|
|
- Run `python -c "from setuptools_scm import get_version; print(get_version())"`
|
|
- Should show `0.8.1.dev109+g5e3646f` (or similar, based on v0.8.0 tag)
|
|
- Run `markitect --version` → should show version (after reinstall)
|
|
|
|
**Estimated**: 10 minutes
|
|
|
|
#### Task 1.2: Restore Version History
|
|
**Action**: Retroactively create v0.9.0 tag
|
|
|
|
**Find v0.9.0 release commit**:
|
|
```bash
|
|
# Find commit around 2025-11-14 with plugin/rendering changes
|
|
git log --since="2025-11-13" --until="2025-11-15" --oneline
|
|
```
|
|
|
|
**Create tag**:
|
|
```bash
|
|
# Tag the identified commit
|
|
git tag -a v0.9.0 <commit-hash> -m "Release v0.9.0: Plugin infrastructure and TestDrive JSUI
|
|
|
|
- Plugin Infrastructure Foundation
|
|
- RenderingEngineManager
|
|
- TestDrive JSUI Plugin
|
|
- ChatGPT Document Theme
|
|
- CLI Engine Parameter
|
|
|
|
See CHANGELOG.md for full details."
|
|
```
|
|
|
|
**Validation**:
|
|
- `git tag -l 'v*'` → should show v0.9.0
|
|
- `git describe --tags --match='v*'` → should show v0.9.0-based description
|
|
|
|
**Estimated**: 15 minutes
|
|
|
|
#### Task 1.3: Prepare v0.10.0 Release
|
|
**File**: `CHANGELOG.md`
|
|
|
|
**Actions**:
|
|
1. Move Unreleased content to v0.10.0 section
|
|
2. Add release date
|
|
3. Verify version links at bottom
|
|
|
|
**Format**:
|
|
```markdown
|
|
## [Unreleased]
|
|
|
|
## [0.10.0] - 2026-01-06
|
|
|
|
### Added
|
|
- **ADR Schema**: Architecture Decision Record validation schema
|
|
- 12 section classifications for comprehensive ADR structure
|
|
- Content pattern validation for formatting rules
|
|
- Quality metrics for completeness
|
|
- **Markdown Schema Support**: Fixed validate and generate-stub commands
|
|
- load_schema_from_path() supports .json and .md files
|
|
- DocumentWrapper extracts headings from AST
|
|
- All schema commands now work with markdown schemas
|
|
- **Schema Evolution Topic Closure**: Complete Phase 1-3 implementation
|
|
- 5 production schemas (manpage, API docs, terminology, schema-schema, ADR)
|
|
- Semantic validation system fully operational
|
|
- Template generation working with schemas
|
|
|
|
### Fixed
|
|
- setuptools-scm configuration with tag_regex for proper version detection
|
|
- markitect --version now returns correct version instead of "unknown"
|
|
- Semantic validator AST heading extraction via DocumentWrapper
|
|
|
|
[Unreleased]: https://github.com/worsch/markitect/compare/v0.10.0...HEAD
|
|
[0.10.0]: https://github.com/worsch/markitect/compare/v0.9.0...v0.10.0
|
|
```
|
|
|
|
**Estimated**: 20 minutes
|
|
|
|
**Total Stage 1**: ~45 minutes
|
|
|
|
---
|
|
|
|
### Stage 2: CHANGELOG Schema (Showcase Feature)
|
|
|
|
**Goal**: Create and validate CHANGELOG schema using schema evolution infrastructure
|
|
|
|
#### Task 2.1: Analyze CHANGELOG Structure
|
|
**Method**: Study Keep a Changelog format
|
|
|
|
**Structure to validate**:
|
|
```markdown
|
|
# Changelog
|
|
|
|
[preamble text]
|
|
|
|
## [Unreleased]
|
|
### Added / Changed / Deprecated / Removed / Fixed / Security
|
|
- Bullet points
|
|
|
|
## [X.Y.Z] - YYYY-MM-DD
|
|
### Added / Changed / Deprecated / Removed / Fixed / Security
|
|
- Bullet points
|
|
|
|
[version links at bottom]
|
|
```
|
|
|
|
**Schema Requirements**:
|
|
- **Sections**: Unreleased (required), Version sections (pattern: `[X.Y.Z]`)
|
|
- **Subsections**: Added/Changed/Deprecated/Removed/Fixed/Security (optional)
|
|
- **Content Patterns**:
|
|
- Version format: `\[(\d+\.\d+\.\d+)\]`
|
|
- Date format: `YYYY-MM-DD`
|
|
- Links at bottom: `[version]: url`
|
|
- **Quality Metrics**:
|
|
- Each version should have at least one subsection
|
|
- Bullet points required in subsections
|
|
|
|
**Estimated**: 30 minutes
|
|
|
|
#### Task 2.2: Create changelog-schema-v1.0.md
|
|
**File**: `markitect/schemas/changelog-schema-v1.0.md`
|
|
|
|
**Schema structure**:
|
|
```markdown
|
|
---
|
|
schema-id: "https://markitect.dev/schemas/changelog/v1.0"
|
|
version: "1.0.0"
|
|
status: "stable"
|
|
domain: "changelog"
|
|
description: "JSON schema for Keep a Changelog format with version history validation"
|
|
---
|
|
|
|
# Changelog Schema v1.0
|
|
|
|
## Overview
|
|
This schema validates CHANGELOG.md files following the Keep a Changelog format...
|
|
|
|
## Schema Definition
|
|
```json
|
|
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"x-markitect-sections": {
|
|
"Unreleased": {
|
|
"classification": "required",
|
|
"heading_level": 2,
|
|
"error_message": "Unreleased section is mandatory for tracking upcoming changes"
|
|
},
|
|
// Version sections validated via pattern
|
|
},
|
|
"x-markitect-content-control": {
|
|
"unreleased": {
|
|
"content_quality": {
|
|
"min_words": 0 // Can be empty
|
|
}
|
|
},
|
|
// Version sections with date validation
|
|
}
|
|
}
|
|
```
|
|
```
|
|
|
|
**Considerations for Extension**:
|
|
- **System Call Validation**: Check git tags match CHANGELOG versions
|
|
- `x-markitect-validation-hooks`: { "system": "git tag -l 'v*'" }
|
|
- Requires schema system extension
|
|
|
|
- **Agent Validation**: Use AI to validate version consistency
|
|
- `x-markitect-validation-agents`: { "prompt": "Check versions align" }
|
|
- Requires agent integration
|
|
|
|
**Decision**: Start with pure schema validation, add hooks/agents if needed
|
|
|
|
**Estimated**: 90 minutes
|
|
|
|
#### Task 2.3: Ingest and Test CHANGELOG Schema
|
|
**Commands**:
|
|
```bash
|
|
# Ingest
|
|
markitect schema-ingest markitect/schemas/changelog-schema-v1.0.md
|
|
|
|
# Validate our CHANGELOG
|
|
markitect validate CHANGELOG.md --schema changelog-schema-v1.0.md
|
|
```
|
|
|
|
**Expected**:
|
|
- Section validation: Unreleased section present ✓
|
|
- Version format validation: All versions follow X.Y.Z ✓
|
|
- Date validation: ISO format YYYY-MM-DD ✓
|
|
- Content structure: Subsections present ✓
|
|
|
|
**Fix any issues found in CHANGELOG.md**
|
|
|
|
**Estimated**: 30 minutes
|
|
|
|
**Total Stage 2**: ~2.5 hours
|
|
|
|
---
|
|
|
|
### Stage 3: Release Capability Enhancements
|
|
|
|
**Goal**: Integrate CHANGELOG validation into release workflow
|
|
|
|
#### Task 3.1: Add CHANGELOG Validation to Release Manager
|
|
**File**: `capabilities/release-management/src/release_management/core/manager.py`
|
|
|
|
**Add validation method**:
|
|
```python
|
|
def validate_changelog(self) -> tuple[bool, list[str]]:
|
|
"""Validate CHANGELOG.md against changelog schema."""
|
|
from markitect.cli import validate_against_schema
|
|
|
|
changelog_path = self.project_root / "CHANGELOG.md"
|
|
schema_path = self.project_root / "markitect/schemas/changelog-schema-v1.0.md"
|
|
|
|
if not changelog_path.exists():
|
|
return False, ["CHANGELOG.md not found"]
|
|
|
|
is_valid = validate_against_schema(changelog_path, schema_path)
|
|
if not is_valid:
|
|
return False, ["CHANGELOG.md validation failed"]
|
|
|
|
return True, []
|
|
```
|
|
|
|
**Integrate into validate_release_state()**:
|
|
```python
|
|
def validate_release_state(self) -> tuple[bool, list[str]]:
|
|
issues = []
|
|
|
|
# Existing validations...
|
|
|
|
# Add CHANGELOG validation
|
|
changelog_valid, changelog_issues = self.validate_changelog()
|
|
if not changelog_valid:
|
|
issues.extend(changelog_issues)
|
|
|
|
return len(issues) == 0, issues
|
|
```
|
|
|
|
**Estimated**: 45 minutes
|
|
|
|
#### Task 3.2: Add Version-Tag Consistency Check
|
|
**Feature**: Verify CHANGELOG versions match git tags
|
|
|
|
**Method**:
|
|
```python
|
|
def check_version_tag_consistency(self) -> tuple[bool, list[str]]:
|
|
"""Check CHANGELOG versions have corresponding git tags."""
|
|
import re
|
|
|
|
# Parse CHANGELOG for versions
|
|
changelog = (self.project_root / "CHANGELOG.md").read_text()
|
|
versions = re.findall(r'## \[(\d+\.\d+\.\d+)\]', changelog)
|
|
|
|
# Get git tags
|
|
result = subprocess.run(['git', 'tag', '-l', 'v*'],
|
|
capture_output=True, text=True)
|
|
tags = result.stdout.strip().split('\n')
|
|
tag_versions = [t.lstrip('v') for t in tags if t.startswith('v')]
|
|
|
|
# Check consistency
|
|
issues = []
|
|
for version in versions:
|
|
if version not in tag_versions:
|
|
issues.append(f"CHANGELOG version {version} has no git tag v{version}")
|
|
|
|
return len(issues) == 0, issues
|
|
```
|
|
|
|
**Estimated**: 45 minutes
|
|
|
|
#### Task 3.3: Add Explicit Version Command
|
|
**File**: `markitect/cli.py`
|
|
|
|
**Add command**:
|
|
```python
|
|
@cli.command()
|
|
def version():
|
|
"""Display detailed version information."""
|
|
from markitect.__version__ import get_version_info
|
|
|
|
info = get_version_info()
|
|
|
|
click.echo(f"MarkiTect {info['full_version']}")
|
|
click.echo(f"Git Commit: {info['git_commit']}")
|
|
click.echo(f"Git Branch: {info['git_branch']}")
|
|
|
|
if info['is_dev']:
|
|
click.echo("⚠️ Development version (not released)")
|
|
else:
|
|
click.echo(f"✅ Released version")
|
|
```
|
|
|
|
**Update --version option**:
|
|
```python
|
|
@click.version_option(version=get_version(), prog_name="markitect")
|
|
def cli():
|
|
...
|
|
```
|
|
|
|
**Estimated**: 30 minutes
|
|
|
|
**Total Stage 3**: ~2 hours
|
|
|
|
---
|
|
|
|
### Stage 4: Schema System Extensions (If Needed)
|
|
|
|
**Goal**: Add validation hooks for system calls and agents
|
|
|
|
**Only implement if pure schema validation insufficient**
|
|
|
|
#### Option A: System Call Hooks
|
|
**Extension**: `x-markitect-validation-hooks`
|
|
|
|
```json
|
|
{
|
|
"x-markitect-validation-hooks": {
|
|
"pre-validation": [
|
|
{
|
|
"name": "check-git-tags",
|
|
"command": "git tag -l 'v*'",
|
|
"parser": "lines",
|
|
"validation": {
|
|
"min_count": 5,
|
|
"pattern": "^v\\d+\\.\\d+\\.\\d+$"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
**Implementation**:
|
|
- Add HookValidator to validators package
|
|
- Execute system commands securely
|
|
- Parse and validate output
|
|
- Integrate into SemanticValidator
|
|
|
|
**Estimated**: 3 hours
|
|
|
|
#### Option B: Agent Validation
|
|
**Extension**: `x-markitect-validation-agents`
|
|
|
|
```json
|
|
{
|
|
"x-markitect-validation-agents": {
|
|
"consistency-check": {
|
|
"prompt": "Verify all CHANGELOG versions have corresponding git tags",
|
|
"context": ["CHANGELOG.md", "git tag -l"],
|
|
"severity": "warning"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Implementation**:
|
|
- Add AgentValidator to validators package
|
|
- Integration with LLM/agent framework
|
|
- Structured output parsing
|
|
- Integrate into SemanticValidator
|
|
|
|
**Estimated**: 4 hours
|
|
|
|
**Decision Point**: Only proceed if needed for CHANGELOG validation
|
|
|
|
**Total Stage 4**: 0-7 hours (conditional)
|
|
|
|
---
|
|
|
|
## Success Criteria
|
|
|
|
### Stage 1 (Required for Release)
|
|
- ✅ `markitect --version` returns actual version (not "unknown")
|
|
- ✅ v0.9.0 git tag exists
|
|
- ✅ CHANGELOG.md has v0.10.0 section
|
|
- ✅ v0.10.0 ready for tagging
|
|
|
|
### Stage 2 (Showcase Feature)
|
|
- ✅ changelog-schema-v1.0.md created and ingested
|
|
- ✅ CHANGELOG.md validates against schema
|
|
- ✅ Schema demonstrates Keep a Changelog format validation
|
|
|
|
### Stage 3 (Enhanced Tooling)
|
|
- ✅ Release validation includes CHANGELOG check
|
|
- ✅ Version-tag consistency checking works
|
|
- ✅ `markitect version` command available
|
|
|
|
### Stage 4 (Optional Extensions)
|
|
- ⭐ System call hooks functional (if implemented)
|
|
- ⭐ Agent validation working (if implemented)
|
|
|
|
---
|
|
|
|
## Timeline Estimate
|
|
|
|
### Fast Track (Stage 1 Only)
|
|
- **Time**: 45 minutes
|
|
- **Scope**: Critical fixes for v0.10.0 release
|
|
- **Result**: Can release immediately
|
|
|
|
### Standard Track (Stages 1-3)
|
|
- **Time**: 5 hours
|
|
- **Scope**: Fixes + CHANGELOG schema + tooling enhancements
|
|
- **Result**: Production-ready release management
|
|
|
|
### Full Track (Stages 1-4)
|
|
- **Time**: 5-12 hours (depends on extensions needed)
|
|
- **Scope**: Complete system with validation hooks/agents
|
|
- **Result**: Advanced validation infrastructure
|
|
|
|
---
|
|
|
|
## Decision Points
|
|
|
|
### 1. Release Strategy
|
|
**Options**:
|
|
- A. Fast track → Release v0.10.0 now with Stage 1 fixes only
|
|
- B. Standard track → Complete Stages 1-3, release as v0.10.1 or v0.11.0
|
|
- C. Full track → Include Stage 4, major release v1.0.0
|
|
|
|
**Recommendation**: **Option B (Standard Track)**
|
|
- Showcases schema system with real use case
|
|
- Improves release tooling robustly
|
|
- Reasonable timeline (5 hours)
|
|
- Release as **v0.10.0** with all features
|
|
|
|
### 2. Schema Extensions
|
|
**When to implement**:
|
|
- Stage 4 only if pure schema validation can't handle:
|
|
- Git tag checking (may need system call hook)
|
|
- Version consistency (may need agent validation)
|
|
|
|
**Recommendation**: **Start without extensions**
|
|
- Try pure schema validation first
|
|
- Add hooks/agents only if needed
|
|
- Document extension needs for future enhancement
|
|
|
|
### 3. release-management Extraction
|
|
**Question**: Make it a git submodule?
|
|
|
|
**Current**: Regular directory (not extracted)
|
|
|
|
**Recommendation**: **Defer to future**
|
|
- Not blocking for release
|
|
- Works fine as capability
|
|
- Can extract later if needed for reuse
|
|
|
|
---
|
|
|
|
## Files to Create/Modify
|
|
|
|
### Create
|
|
- `markitect/schemas/changelog-schema-v1.0.md` - CHANGELOG validation schema
|
|
- `roadmap/260106-release-management-optimization/DONE.md` - Completion checklist (when done)
|
|
|
|
### Modify
|
|
- `pyproject.toml` - Fix setuptools-scm configuration
|
|
- `CHANGELOG.md` - Add v0.10.0 section, fix format if needed
|
|
- `markitect/cli.py` - Add explicit version command
|
|
- `capabilities/release-management/src/release_management/core/manager.py` - Add CHANGELOG validation
|
|
- (Optional) `markitect/validators/` - Add hook/agent validators if needed
|
|
|
|
### Git Operations
|
|
- Create v0.9.0 tag retroactively
|
|
- Create v0.10.0 tag for release
|
|
|
|
---
|
|
|
|
## Risks & Mitigations
|
|
|
|
### Risk 1: Retroactive Tagging
|
|
**Issue**: Creating v0.9.0 tag retroactively might confuse users
|
|
|
|
**Mitigation**:
|
|
- Document in CHANGELOG that tag was missing
|
|
- Use tag message to explain retroactive creation
|
|
- Don't publish v0.9.0 packages (already past that release)
|
|
|
|
### Risk 2: Schema Extensions Complexity
|
|
**Issue**: Implementing hooks/agents might be complex
|
|
|
|
**Mitigation**:
|
|
- Start with pure schema validation
|
|
- Only add extensions if necessary
|
|
- Document extension API for future
|
|
|
|
### Risk 3: CHANGELOG Format Variations
|
|
**Issue**: Real-world CHANGELOGs may not match Keep a Changelog exactly
|
|
|
|
**Mitigation**:
|
|
- Make schema flexible with optional sections
|
|
- Use warnings instead of errors for style issues
|
|
- Support alternative section names
|
|
|
|
---
|
|
|
|
## Completion Summary
|
|
|
|
**Completed**: 2026-01-06
|
|
**Release**: v0.10.0
|
|
**Track**: Standard (Stages 1-2)
|
|
|
|
### Stage 1: Critical Fixes ✅
|
|
|
|
**Duration**: ~45 minutes
|
|
**Status**: COMPLETE
|
|
|
|
#### Achievements:
|
|
1. ✅ **Fixed setuptools-scm Configuration**
|
|
- Added `git_describe_command = "git describe --tags --long --match 'v*'"`
|
|
- Filters out non-version tags (e.g., "testdrive-jsui-migration-phase4-complete")
|
|
- Version detection now works: `markitect --version` → 0.10.0
|
|
- File: `pyproject.toml`
|
|
- Commit: 061ba88
|
|
|
|
2. ✅ **Retroactively Created v0.9.0 Git Tag**
|
|
- Tagged commit b9c1b90 from 2025-11-14
|
|
- Maintains version history integrity
|
|
- CHANGELOG documented v0.9.0 but tag was missing
|
|
- Enables proper version progression to v0.10.0
|
|
- Commit: 061ba88
|
|
|
|
3. ✅ **Prepared CHANGELOG.md for v0.10.0**
|
|
- Created [0.10.0] - 2026-01-06 section
|
|
- Moved Unreleased content to v0.10.0
|
|
- Documented version detection fixes
|
|
- Documented v0.9.0 retroactive tag
|
|
- Commit: 061ba88
|
|
|
|
### Stage 2: CHANGELOG Schema ✅
|
|
|
|
**Duration**: ~90 minutes
|
|
**Status**: COMPLETE
|
|
|
|
#### Achievements:
|
|
1. ✅ **Created changelog-schema-v1.0.md**
|
|
- Comprehensive schema for Keep a Changelog format
|
|
- 360+ lines of schema definition and documentation
|
|
- File: `markitect/schemas/changelog-schema-v1.0.md`
|
|
- Commit: c4ee5cc
|
|
|
|
2. ✅ **Implemented x-markitect Extensions**
|
|
- `x-markitect-sections`: 7 section classifications
|
|
- [Unreleased]: required
|
|
- Added/Changed/Deprecated/Removed/Fixed/Security: optional
|
|
- `x-markitect-content-control`: 6 content patterns
|
|
- Title validation, introduction patterns, version format
|
|
- Date format (ISO 8601), change types, reference links
|
|
- `x-markitect-validation-rules`: 4 custom rules
|
|
- Version format, date format, version ordering, unreleased position
|
|
|
|
3. ✅ **Schema Ingestion and Testing**
|
|
- Ingested into schema catalog (Record ID: 12)
|
|
- Successfully validates project CHANGELOG.md
|
|
- All section requirements met (7 checked, 11 found)
|
|
- All content requirements met
|
|
- All semantic checks passing
|
|
- Command: `markitect validate CHANGELOG.md --schema changelog-schema-v1.0.md --semantic`
|
|
|
|
4. ✅ **Documentation in CHANGELOG**
|
|
- Documented new schema in v0.10.0 Added section
|
|
- Philosophy: "The release that validates itself"
|
|
- Showcase of schema system practical application
|
|
|
|
### Version Release ✅
|
|
|
|
**Tag**: v0.10.0
|
|
**Date**: 2026-01-06
|
|
**Verification**: `markitect --version` → 0.10.0
|
|
|
|
### Success Metrics
|
|
|
|
**Stage 1 Criteria** (Required for Release):
|
|
- ✅ `markitect --version` returns actual version (0.10.0, not "unknown")
|
|
- ✅ v0.9.0 git tag exists
|
|
- ✅ CHANGELOG.md has v0.10.0 section
|
|
- ✅ v0.10.0 tagged and ready
|
|
|
|
**Stage 2 Criteria** (Showcase Feature):
|
|
- ✅ changelog-schema-v1.0.md created and ingested
|
|
- ✅ CHANGELOG.md validates against schema
|
|
- ✅ Schema demonstrates Keep a Changelog format validation
|
|
- ✅ All semantic validation checks passing
|
|
|
|
### Deferred Work
|
|
|
|
**Stage 3** (Release Capability Enhancements):
|
|
- ⭐ CHANGELOG validation in ReleaseManager
|
|
- ⭐ Version-tag consistency checking
|
|
- ⭐ Explicit `markitect version` command
|
|
- **Status**: Deferred to future enhancement
|
|
- **Reason**: v0.10.0 release unblocked, showcase feature complete
|
|
|
|
**Stage 4** (Schema System Extensions):
|
|
- 🎯 System call hooks (x-markitect-validation-hooks)
|
|
- 🎯 Agent validation (x-markitect-validation-agents)
|
|
- **Status**: Not needed for CHANGELOG validation
|
|
- **Reason**: Pure schema validation sufficient
|
|
|
|
### Files Created/Modified
|
|
|
|
**Created**:
|
|
- `markitect/schemas/changelog-schema-v1.0.md` (360 lines)
|
|
|
|
**Modified**:
|
|
- `pyproject.toml` (setuptools-scm configuration)
|
|
- `CHANGELOG.md` (v0.10.0 section, changelog schema documentation)
|
|
- `roadmap/260106-release-management-optimization/WORKPLAN.md` (this file)
|
|
|
|
**Tags Created**:
|
|
- `v0.9.0` (retroactive, commit b9c1b90)
|
|
- `v0.10.0` (release, commit c4ee5cc+)
|
|
|
|
### Commits
|
|
|
|
1. `4e9117d` - plan: create release-management-optimization roadmap topic
|
|
2. `061ba88` - fix: resolve version detection and prepare v0.10.0 release
|
|
3. `c4ee5cc` - feat: add changelog schema for Keep a Changelog validation
|
|
4. `v0.10.0` - Release tag created
|
|
|
|
### Philosophy Achievement
|
|
|
|
> "Use the tools we build to improve the tools we build."
|
|
|
|
**Result**: v0.10.0 is "The release that validates itself"
|
|
- ✅ Uses its own schema system to validate its CHANGELOG.md
|
|
- ✅ Demonstrates schema evolution practical value
|
|
- ✅ Real-world showcase of x-markitect extensions
|
|
- ✅ Perfect example of dogfooding infrastructure
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
- This workplan creates a **perfect showcase** for schema evolution
|
|
- Validates its own CHANGELOG with the schema system it just built
|
|
- Real-world practical application demonstrating value
|
|
- Release v0.10.0 becomes a milestone: "The release that validates itself"
|
|
|
|
**Philosophy**: Use the tools we build to improve the tools we build.
|