Skip to main content

Release Configuration Examples

Purpose: Sample rw-config.yaml files for different release scenarios
Version: 1.0.0
Last Updated: 2026-03-10


๐Ÿšจ Critical Policy Reminderโ€‹

NEVER use manual git commit/push commands! Always use Release Workflow (RW) automation.


Registry Mode Configurationโ€‹

Basic Registry Mode Setupโ€‹

# rw-config.yaml - Registry Mode
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: registry
use_kanban: true
kanban_root: docs/project-management/kanban
epic_doc_pattern: "epics/Epic-{epic}/Epic-{epic}.md"
story_doc_pattern: "epics/Epic-{epic}/Story-{story}-*.md"

Registry Mode with Custom Pathsโ€‹

# rw-config.yaml - Registry Mode (Custom Paths)
version_file: src/myproject/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-archive
scripts_path: scripts/validation
readme_file: README.md
semver_mapping_strategy: registry
use_kanban: true
kanban_root: docs/kanban
epic_doc_pattern: "epics/Epic-{epic}/Epic-{epic}.md"
story_doc_pattern: "epics/Epic-{epic}/Story-{story}-*.md"

Registry Mode without Kanbanโ€‹

# rw-config.yaml - Registry Mode (No Kanban)
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: registry
use_kanban: false

Task-Touch Mode Configurationโ€‹

Basic Task-Touch Mode Setupโ€‹

# rw-config.yaml - Task-Touch Mode
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: task_touch
use_kanban: true
kanban_root: docs/project-management/kanban
epic_doc_pattern: "epics/Epic-{epic}/Epic-{epic}.md"
story_doc_pattern: "epics/Epic-{epic}/Story-{story}-*.md"

Task-Touch Mode with Internal Tagsโ€‹

# rw-config.yaml - Task-Touch Mode (with Internal Tags)
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: task_touch
use_kanban: true
kanban_root: docs/project-management/kanban
epic_doc_pattern: "epics/Epic-{epic}/Epic-{epic}.md"
story_doc_pattern: "epics/Epic-{epic}/Story-{story}-*.md"

# Additional settings for task-touch mode
create_internal_tag: true # Also create internal version tag for traceability

Task-Touch Mode with Custom Pathsโ€‹

# rw-config.yaml - Task-Touch Mode (Custom Paths)
version_file: src/myproject/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-archive
scripts_path: scripts/validation
readme_file: README.md
semver_mapping_strategy: task_touch
use_kanban: true
kanban_root: docs/kanban
epic_doc_pattern: "epics/Epic-{epic}/Epic-{epic}.md"
story_doc_pattern: "epics/Epic-{epic}/Story-{story}-*.md"

Advanced Configuration Examplesโ€‹

Development Environment Configurationโ€‹

# rw-config.yaml - Development Environment
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: registry # Use registry for development
use_kanban: true
kanban_root: docs/project-management/kanban
epic_doc_pattern: "epics/Epic-{epic}/Epic-{epic}.md"
story_doc_pattern: "epics/Epic-{epic}/Story-{story}-*.md"

# Development-specific settings
debug_mode: true
skip_github_release: true # Skip GitHub release in development

Production Environment Configurationโ€‹

# rw-config.yaml - Production Environment
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: task_touch # Use task-touch for production
use_kanban: true
kanban_root: docs/project-management/kanban
epic_doc_pattern: "epics/Epic-{epic}/Epic-{epic}.md"
story_doc_pattern: "epics/Epic-{epic}/Story-{story}-*.md"

# Production-specific settings
create_internal_tag: true # Maintain traceability
require_github_release: true # Require GitHub release
skip_validation: false # Run all validations in production

Minimal Configurationโ€‹

# rw-config.yaml - Minimal Setup
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: registry

Configuration Field Referenceโ€‹

Required Fieldsโ€‹

FieldDescriptionExample
version_filePath to version filesrc/fynd_deals/version.py
main_changelogPath to main changelogCHANGELOG.md
changelog_dirDirectory for changelog archivesdocs/changelog-and-release-notes/changelog-archive
scripts_pathPath to validation scriptspackages/frameworks/workflow mgt/scripts
readme_filePath to README fileREADME.md
semver_mapping_strategySemVer mapping strategyregistry or task_touch

Optional Fieldsโ€‹

FieldDescriptionDefaultExample
use_kanbanEnable Kanban integrationfalsetrue
kanban_rootRoot directory for Kanban docsdocs/project-management/kanbandocs/kanban
epic_doc_patternPattern for Epic documentsepics/Epic-\{epic\}/Epic-\{epic\}.mdepics/Epic-\{epic\}.md
story_doc_patternPattern for Story documentsepics/Epic-\{epic\}/Story-\{story\}-*.mdstories/Story-\{story\}.md
create_internal_tagCreate internal tags in task-touch modefalsetrue
debug_modeEnable debug outputfalsetrue
skip_github_releaseSkip GitHub release creationfalsetrue
require_github_releaseRequire successful GitHub releasefalsetrue
skip_validationSkip validation stepsfalsetrue

Configuration Validationโ€‹

Basic Validation Scriptโ€‹

#!/bin/bash
# validate-config.sh - Basic configuration validation

CONFIG_FILE="rw-config.yaml"

echo "๐Ÿ” Validating $CONFIG_FILE..."

# Check if file exists
if [ ! -f "$CONFIG_FILE" ]; then
echo "โŒ Configuration file not found: $CONFIG_FILE"
exit 1
fi

# Check YAML syntax
if ! python3 -c "import yaml; yaml.safe_load(open('$CONFIG_FILE'))" 2>/dev/null; then
echo "โŒ Invalid YAML syntax in $CONFIG_FILE"
exit 1
fi

# Check required fields
REQUIRED_FIELDS=("version_file" "main_changelog" "changelog_dir" "scripts_path" "readme_file" "semver_mapping_strategy")

for field in "${REQUIRED_FIELDS[@]}"; do
if ! grep -q "^$field:" "$CONFIG_FILE"; then
echo "โŒ Missing required field: $field"
exit 1
fi
done

# Check SemVer strategy
STRATEGY=$(grep "semver_mapping_strategy:" "$CONFIG_FILE" | cut -d: -f2 | tr -d ' ')
if [ "$STRATEGY" != "registry" ] && [ "$STRATEGY" != "task_touch" ]; then
echo "โŒ Invalid semver_mapping_strategy: $STRATEGY (must be 'registry' or 'task_touch')"
exit 1
fi

echo "โœ… Configuration validation passed"
echo "๐Ÿ“‹ Strategy: $STRATEGY"
echo "๐Ÿ“ Version file: $(grep version_file: "$CONFIG_FILE" | cut -d: -f2 | tr -d ' ')"

Advanced Validation Scriptโ€‹

#!/usr/bin/env python3
# validate-config-advanced.py - Advanced configuration validation

import yaml
import os
from pathlib import Path

def validate_config(config_path="rw-config.yaml"):
"""Validate rw-config.yaml with advanced checks"""

print(f"๐Ÿ” Advanced validation of {config_path}...")

# Load configuration
try:
with open(config_path, 'r') as f:
config = yaml.safe_load(f)
except FileNotFoundError:
print(f"โŒ Configuration file not found: {config_path}")
return False
except yaml.YAMLError as e:
print(f"โŒ YAML syntax error: {e}")
return False

# Validate required fields
required_fields = [
'version_file', 'main_changelog', 'changelog_dir',
'scripts_path', 'readme_file', 'semver_mapping_strategy'
]

for field in required_fields:
if field not in config:
print(f"โŒ Missing required field: {field}")
return False

# Validate SemVer strategy
strategy = config['semver_mapping_strategy']
if strategy not in ['registry', 'task_touch']:
print(f"โŒ Invalid semver_mapping_strategy: {strategy}")
return False

# Validate file paths
paths_to_check = [
config['version_file'],
config['main_changelog'],
config['readme_file']
]

for path in paths_to_check:
if not Path(path).exists():
print(f"โš ๏ธ Warning: File does not exist: {path}")

# Validate directory paths
dirs_to_check = [
config['changelog_dir'],
config['scripts_path']
]

for path in dirs_to_check:
if not Path(path).exists():
print(f"โš ๏ธ Warning: Directory does not exist: {path}")

# Validate Kanban configuration if enabled
if config.get('use_kanban', False):
kanban_root = config.get('kanban_root')
if kanban_root and not Path(kanban_root).exists():
print(f"โš ๏ธ Warning: Kanban root directory does not exist: {kanban_root}")

# Print configuration summary
print(f"โœ… Configuration validation passed")
print(f"๐Ÿ“‹ Strategy: {strategy}")
print(f"๐Ÿ“ Version file: {config['version_file']}")
print(f"๐Ÿ“ Main changelog: {config['main_changelog']}")
print(f"๐Ÿ“‚ Changelog dir: {config['changelog_dir']}")
print(f"๐Ÿ”ง Scripts path: {config['scripts_path']}")
print(f"๐Ÿ“– README: {config['readme_file']}")
print(f"๐ŸŽฏ Kanban enabled: {config.get('use_kanban', False)}")

return True

if __name__ == "__main__":
validate_config()

Configuration Migrationโ€‹

Switch from Registry to Task-Touchโ€‹

#!/bin/bash
# migrate-to-task-touch.sh - Migrate configuration to task-touch mode

CONFIG_FILE="rw-config.yaml"

echo "๐Ÿ”„ Migrating to task-touch mode..."

# Backup current configuration
cp "$CONFIG_FILE" "$CONFIG_FILE.backup.$(date +%Y%m%d-%H%M%S)"

# Update SemVer strategy
sed -i.bak 's/semver_mapping_strategy: registry/semver_mapping_strategy: task_touch/' "$CONFIG_FILE"

# Add task-touch specific settings if not present
if ! grep -q "create_internal_tag:" "$CONFIG_FILE"; then
echo "create_internal_tag: true # Also create internal version tag for traceability" >> "$CONFIG_FILE"
fi

echo "โœ… Migration complete"
echo "๐Ÿ“‹ Configuration updated to task-touch mode"
echo "๐Ÿ’พ Backup saved: $CONFIG_FILE.backup.$(date +%Y%m%d-%H%M%S)"

Switch from Task-Touch to Registryโ€‹

#!/bin/bash
# migrate-to-registry.sh - Migrate configuration to registry mode

CONFIG_FILE="rw-config.yaml"

echo "๐Ÿ”„ Migrating to registry mode..."

# Backup current configuration
cp "$CONFIG_FILE" "$CONFIG_FILE.backup.$(date +%Y%m%d-%H%M%S)"

# Update SemVer strategy
sed -i.bak 's/semver_mapping_strategy: task_touch/semver_mapping_strategy: registry/' "$CONFIG_FILE"

# Remove task-touch specific settings
sed -i.bak '/create_internal_tag:/d' "$CONFIG_FILE"

echo "โœ… Migration complete"
echo "๐Ÿ“‹ Configuration updated to registry mode"
echo "๐Ÿ’พ Backup saved: $CONFIG_FILE.backup.$(date +%Y%m%d-%H%M%S)"

Testing Configurationโ€‹

Test Registry Modeโ€‹

#!/bin/bash
# test-registry-mode.sh - Test registry mode configuration

echo "๐Ÿงช Testing registry mode configuration..."

# Set up test configuration
cat > test-rw-config.yaml << EOF
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: registry
EOF

# Test SemVer conversion
python3 -c "
import sys
sys.path.insert(0, 'packages/frameworks/workflow mgt/scripts/version')
from semver_converter import convert_version_string
result = convert_version_string('0.5.1.48+1', 'registry')
print(f'Registry mode conversion: 0.5.1.48+1 โ†’ {result}')
"

# Clean up
rm test-rw-config.yaml

echo "โœ… Registry mode test complete"

Test Task-Touch Modeโ€‹

#!/bin/bash
# test-task-touch-mode.sh - Test task-touch mode configuration

echo "๐Ÿงช Testing task-touch mode configuration..."

# Set up test configuration
cat > test-rw-config.yaml << EOF
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: task_touch
EOF

# Test SemVer conversion
python3 -c "
import sys
sys.path.insert(0, 'packages/frameworks/workflow mgt/scripts/version')
from semver_converter import convert_version_string
result = convert_version_string('0.5.1.48+1', 'task_touch')
print(f'Task-touch mode conversion: 0.5.1.48+1 โ†’ {result}')
"

# Clean up
rm test-rw-config.yaml

echo "โœ… Task-touch mode test complete"

Troubleshooting Configuration Issuesโ€‹

Common Issues and Solutionsโ€‹

Issue: Missing Configuration Fileโ€‹

# Solution: Create default configuration
cat > rw-config.yaml << EOF
version_file: src/fynd_deals/version.py
main_changelog: CHANGELOG.md
changelog_dir: docs/changelog-and-release-notes/changelog-archive
scripts_path: packages/frameworks/workflow mgt/scripts
readme_file: README.md
semver_mapping_strategy: registry
EOF

Issue: Invalid YAML Syntaxโ€‹

# Solution: Validate and fix YAML
python3 -c "
import yaml
try:
with open('rw-config.yaml', 'r') as f:
yaml.safe_load(f)
print('โœ… YAML syntax is valid')
except yaml.YAMLError as e:
print(f'โŒ YAML syntax error: {e}')
print('๐Ÿ’ก Check for indentation, colons, and quotes')
"

Issue: Invalid SemVer Strategyโ€‹

# Solution: Check and fix strategy
STRATEGY=$(grep "semver_mapping_strategy:" rw-config.yaml | cut -d: -f2 | tr -d ' ')
echo "Current strategy: $STRATEGY"

if [ "$STRATEGY" != "registry" ] && [ "$STRATEGY" != "task_touch" ]; then
echo "โŒ Invalid strategy. Fixing to registry..."
sed -i.bak "s/semver_mapping_strategy: .*/semver_mapping_strategy: registry/" rw-config.yaml
fi

Remember: Always test configuration changes in a development environment before applying to production!