HL β TFW-6: Versioning, Changelog, and tfw-update Workflow¶
Date: 2026-03-12 Author: Coordinator (AI) Status: π΅ HL β Awaiting review (v2 β post-discussion)
1. Vision¶
TFW is a living framework. The starter repo (trace-first-starter) evolves β new templates, new workflows, convention changes, bug fixes. But downstream projects that forked or copied .tfw/ have no mechanism to know what changed, what version they're on, or how to safely update.
This task introduces:
- Semantic versioning for the TFW framework itself.
- A CHANGELOG that documents every release.
- A tfw-update workflow β a structured process for downstream projects to compare their .tfw/ against upstream and apply updates safely.
- A tfw-release workflow β a canonical process for cutting framework versions (general rules applicable to any project that versions its outputs).
- A RELEASE.md artifact β optional, project-specific release context (like KNOWLEDGE.md). Template provides guided questions; each project fills it with its own release strategy.
"If you can't tell what version you're running, you can't tell what's missing."
2. Current State (As-Is)¶
| Aspect | Status |
|---|---|
| Version tracking | β None β .tfw/README.md mentions "v3" in prose, no machine-readable version |
| Changelog | β None β evolution history is narrative in .tfw/README.md Β§Evolution |
| Update mechanism | β None β manual diff of entire .tfw/ directory |
| Release process | β None β no workflow for cutting versions |
| Release context | β None β no project-level release strategy document |
| Downstream awareness | β β forked projects have no way to know upstream changed |
| Adapter sync | β β .agent/workflows/ are copies of .tfw/workflows/, no version check |
Files Involved (current)¶
| File | Role | Relevant? |
|---|---|---|
.tfw/README.md |
Philosophy + evolution narrative (v1βv2βv3) | Version info buried in prose |
.tfw/PROJECT_CONFIG.yaml |
Per-project config | No version field |
.tfw/conventions.md |
Rules, required artifacts | No RELEASE.md entry |
.tfw/init.md |
Setup guide | Describes copying .tfw/, no update/release guidance |
.agent/workflows/ |
Antigravity adapter copies | Copies of .tfw/workflows/ β can drift |
3. Target State (To-Be)¶
| Aspect | Target |
|---|---|
| Version tracking | VERSION file in .tfw/ with semver (MAJOR.MINOR.PATCH) |
| Changelog | CHANGELOG.md in .tfw/ β structured, per-version, with categories |
| Project version tracking | tfw_version field in .tfw/PROJECT_CONFIG.yaml records installed version |
| Update workflow | .tfw/workflows/update.md β step-by-step upgrade process for downstream projects |
| Release workflow | .tfw/workflows/release.md β canonical release process (general, any project) |
| Release context | RELEASE.md (root, optional) β project-specific release strategy. Template in .tfw/templates/RELEASE.md |
| Adapter workflows | .agent/workflows/tfw-update.md + .agent/workflows/tfw-release.md |
| Docs integration | init.md mentions versioning + RELEASE.md; KNOWLEDGE.md updated |
Version Scheme¶
MAJOR.MINOR.PATCH
- MAJOR β breaking changes to conventions, templates, or workflow structure (requires manual migration)
- MINOR β new workflows, new templates, new optional features (backward-compatible)
- PATCH β fixes, clarifications, typos in existing files
CHANGELOG Format¶
# TFW Changelog
## [0.3.1] β 2026-03-12
### Added
- `CHANGELOG.md` β version history
- `VERSION` file β machine-readable version
- `tfw-release` workflow β canonical release process
- `tfw-update` workflow β structured upgrade process
- `RELEASE.md` template β optional release context artifact
### Changed
- `PROJECT_CONFIG.yaml` β added `tfw_version` field
- `init.md` β added version tracking and release guidance
Categories: Added, Changed, Deprecated, Removed, Fixed.
RELEASE.md Design¶
Template (.tfw/templates/RELEASE.md) β a scaffold with guiding questions:
- What does a "release" mean for this project?
- Who consumes the releases?
- What triggers a release?
- What version scheme does the project use?
- Pre-release checklist items
This project's instance β fully populated with TFW framework release context:
- Audience: downstream TFW projects
- Trigger: accumulated .tfw/ changes ready to ship
- Scheme: semver
- Checklist: Task Board scan β version bump β CHANGELOG β git tag
tfw-release Workflow (canonical, general)¶
Lives in .tfw/workflows/release.md. General steps applicable to any project:
- Read
RELEASE.mdfor project-specific context - Review what changed since last release (Task Board, git log, RF files)
- Decide version bump type (consulting
RELEASE.mdstrategy) - Update changelog
- Update version marker
- Tag/commit
tfw-update Workflow (canonical, for downstream consumers)¶
Lives in .tfw/workflows/update.md. For projects consuming TFW:
- Read current version from
PROJECT_CONFIG.yamlβtfw_version - Read target version from upstream
.tfw/VERSION - Show CHANGELOG diff β all entries between current and target
- Categorize changes:
- π’ Auto-apply β new files, new workflows (no project customization risk)
- π‘ Manual merge β changed templates, conventions (project may have customized)
- π΄ Breaking β removed/renamed files, structural changes
- Generate update checklist β concrete file-by-file actions
- Update
tfw_versioninPROJECT_CONFIG.yamlafter completion - Re-sync adapter copies (
.agent/workflows/etc.) from.tfw/workflows/
4. Phases¶
Phase A: Core Versioning Infrastructure π΄¶
- Create
.tfw/VERSIONfile with initial version0.3.0 - Create
.tfw/CHANGELOG.mdwith retroactive entries for v1, v2, v3 - Add
tfw_versionfield to.tfw/PROJECT_CONFIG.yaml - Create
.tfw/templates/RELEASE.mdβ scaffold template with guiding questions - Create
RELEASE.md(root) β fully populated for this project - Update
.tfw/init.mdβ sections on version tracking + RELEASE.md mention
Phase B: Workflows π΄¶
- Create
.tfw/workflows/release.mdβ canonical release workflow - Create
.tfw/workflows/update.mdβ canonical update workflow - Create
.agent/workflows/tfw-release.mdβ Antigravity adapter - Create
.agent/workflows/tfw-update.mdβ Antigravity adapter - Update
.tfw/conventions.mdΒ§8 Workflows table β add release + update entries - Update
.tfw/conventions.mdΒ§2 Required Artifacts β mention RELEASE.md as optional - Update
.tfw/glossary.mdβ version-related terms + RELEASE.md entry
Phase C: Documentation & Traces π‘¶
- Update
KNOWLEDGE.mdβ new D-records (version scheme, release/update workflows, RELEASE.md design) - Update
.tfw/README.mdΒ§Canonical Workflows β mention release + update - Update root
README.mdβ mention versioning in "What's Inside"
5. Definition of Done (DoD)¶
- β
1.
.tfw/VERSIONexists with valid semver - β
2.
.tfw/CHANGELOG.mdexists with retroactive history and current release - β
3.
PROJECT_CONFIG.yamlhastfw_versionfield - β
4.
.tfw/templates/RELEASE.mdexists with guiding scaffold - β
5.
RELEASE.md(root) populated for this project - β
6.
.tfw/workflows/release.mdexists with general release process - β
7.
.tfw/workflows/update.mdexists with complete update process - β
8.
.agent/workflows/tfw-release.md+.agent/workflows/tfw-update.mdexist - β
9.
init.mddocuments version tracking and RELEASE.md during setup - β
10.
KNOWLEDGE.mdupdated with version-related decisions - β 11. All existing files pass consistency check (no broken cross-references)
6. Definition of Failure (DoF)¶
- β 1. Version scheme is too complex β more than 3 numbers or requires tooling to parse
- β 2. CHANGELOG becomes bureaucratic overhead β entries take more than 2 minutes to write
- β 3. Workflows require scripting/tooling β must be pure Markdown instructions
- β 4. RELEASE.md template confuses users about whether they need it β must clearly state "optional"
On failure: Simplify. Version can be a single number. CHANGELOG can be a flat list. RELEASE.md scaffold can be 5 lines.
7. Principles¶
- Plain text, no tooling β VERSION is a text file, CHANGELOG is Markdown. No scripts needed to read or compare.
- Retroactive completeness β CHANGELOG covers v1, v2, v3 history so the record is complete from day one.
- Downstream safety β tfw-update MUST distinguish between files safe to overwrite and files the project has customized. Never silently destroy project-specific changes.
- Optional over mandatory β RELEASE.md is optional (like KNOWLEDGE.md). Projects that don't do releases skip it. No overhead.
- General over specific β tfw-release workflow contains general release steps. Project-specific context lives in RELEASE.md, not in the workflow.
- Adapter parity β every canonical workflow in
.tfw/workflows/gets a corresponding adapter copy.
8. Dependencies¶
| Dependency | Status |
|---|---|
| TFW-4 (framework cleanup) | π‘ TS β in progress but not blocking |
| TFW-5 (KNOWLEDGE + tfw-docs) | β DONE |
9. Risks¶
| Risk | Probability | Impact | Mitigation |
|---|---|---|---|
| Retroactive CHANGELOG inaccurate | Medium | Low | Cross-check with .tfw/README.md Β§Evolution and task RFs |
Projects forget to update tfw_version |
Medium | Medium | tfw-update workflow includes version bump as final step |
| RELEASE.md template too vague | Medium | Low | Populate this project's RELEASE.md as a real example; link from template |
| Breaking changes hard to communicate | Low | High | CHANGELOG uses clear ### Breaking section; tfw-update flags π΄ items |
HL β TFW-6: Versioning, Changelog, and tfw-update Workflow | 2026-03-12 (v2)