Contributing
Contributing to Reflow
Turn one understood release-workflow problem into a focused change with verifiable safety evidence.
make checkCategory
Quick Command
scope -> implement -> validate -> document -> hand offOverviewโ
A Reflow contribution must preserve repository identity, explicit mutation scope, dry-run behavior, confirmation, and actionable failure reporting. Keep unrelated cleanup, release metadata, version changes, and publication out of a focused source change.
Contribution Workflow
Workflow Timeline
Branch and Scope Conventions
Suggested Branch Types
Feature
Bug Fix
Release
Primary Development
Do not commit, tag, push, rewrite history, publish packages or images, replay tags, or modify release metadata merely because source validation passed.
Implementation Standards
Before You Begin
- Keep layers focusedRequired
CLI interaction stays under app/cli; reusable behavior belongs in app/core or the appropriate service.
- Preserve repository identityRequired
Never substitute Reflow's source checkout or a registry image for the selected target repository.
- Protect dry-runRequired
Every mutating path requires evidence that dry-run performs no persistent local or external change.
- Handle errors onceRequired
Present concise remediation at the CLI boundary and keep sensitive or deep diagnostics out of normal output.
- Document public contractsRequired
Synchronize command, option, configuration, safety, migration, and architecture guidance.
Quality Gates
# Focused example
python -m pytest tests/cli/test_repository_targeting.py
# Complete tests and quality checks
python -m pytest
make check
# Hook configuration and tracked-file checks
make pre-commit-validate
make pre-commit-run-staged
make pre-commit-runFinal Review Checklist
Before You Begin
- Scope is coherentRequired
Every changed file supports the stated behavior, tests, or documentation.
- Targets and effects are explicitRequired
Local paths, remote URLs, registries, confirmation, and dry-run behavior remain predictable.
- Tests are isolatedRequired
Tests use temporary repositories, mocks, and deterministic configuration instead of personal state or credentials.
- Quality checks are reportedRequired
Formatting, lint, tests, and relevant builds have explicit outcomes.
- No unapproved release action occurredRequired
Versions, changelogs, tags, pushes, releases, and publication remain untouched unless explicitly scoped.