问题描述
Anws 当前使用 .anws/v{N} 作为内部开发版本号,由 /genesis 自动递增(v1 → v2 → ... → v7)。这个 v{N} 表达的是架构文档的演进代数——每次 /genesis 都会新建一个版本目录。
但在实际使用中,这个内部版本号与用户项目的实际发布版本号(如 1.0.0、2.3.1)完全脱节,导致以下问题:
- 无法追溯:一个
.anws/v{N} 对应用户发布的哪个软件版本?反之亦然——用户发布了 v2.3.1,对应的设计文档在哪个 v{N} 里?目前只能靠人脑记忆
- 映射关系不存在:一次
/genesis 产出的文档可能横跨用户多个实际 release,也可能只是架构层面的重构从未对应任何发布——没有数据结构来记录这些关系
- CHANGELOG 无法对应:
06_CHANGELOG.md 记录的是架构/文档层面的变更,与用户面向最终用户的 release notes 无法关联
- 团队协作混乱:多人协作时,没有人能快速回答"这个 release 对应的 specs 在哪个 v{N}"
期望方案
建立一个版本映射文件(例如 .anws/version-map.json),让用户可以将内部开发版本号 v{N} 映射到自己项目的实际发布版本号。
数据结构示意
{
"mappings": [
{
"anws_version": "v7",
"release_version": "2.3.1",
"description": "多目标 IDE 矩阵扩展",
"date": "2026-04-01"
},
{
"anws_version": "v6",
"release_version": "2.2.0",
"description": "canonical resource model",
"date": "2026-03-15"
}
],
"current_anws_version": "v7"
}
核心需求
- 支持用户自定义映射:将任意
.anws/v{N} 映射到用户项目的 semver 版本号
- 支持多对一映射(多个架构版本可能对应同一个 release)或一对一映射
- 提供基本查询能力(通过 CLI 或工作流):给定 release 版本号,查到对应的
v{N},反之亦然
- 映射文件由用户显式维护,不由
/genesis 自动创建(避免错误假设)
- 不破坏现有的 Copy & Evolve 版本语义
非目标
- 不要求
/genesis 自动猜测用户 release 版本号
- 不要求与 git tag 强制关联
受益场景
- 团队回溯:查"v2.3.1 发布时的设计文档在哪"
- 新人上手:快速理解"当前线上版本对应哪份架构文档"
- 审计/合规:保留设计文档与实际发布之间的可追溯链路
问题描述
Anws 当前使用
.anws/v{N}作为内部开发版本号,由/genesis自动递增(v1 → v2 → ... → v7)。这个v{N}表达的是架构文档的演进代数——每次/genesis都会新建一个版本目录。但在实际使用中,这个内部版本号与用户项目的实际发布版本号(如
1.0.0、2.3.1)完全脱节,导致以下问题:.anws/v{N}对应用户发布的哪个软件版本?反之亦然——用户发布了v2.3.1,对应的设计文档在哪个v{N}里?目前只能靠人脑记忆/genesis产出的文档可能横跨用户多个实际 release,也可能只是架构层面的重构从未对应任何发布——没有数据结构来记录这些关系06_CHANGELOG.md记录的是架构/文档层面的变更,与用户面向最终用户的 release notes 无法关联期望方案
建立一个版本映射文件(例如
.anws/version-map.json),让用户可以将内部开发版本号v{N}映射到自己项目的实际发布版本号。数据结构示意
{ "mappings": [ { "anws_version": "v7", "release_version": "2.3.1", "description": "多目标 IDE 矩阵扩展", "date": "2026-04-01" }, { "anws_version": "v6", "release_version": "2.2.0", "description": "canonical resource model", "date": "2026-03-15" } ], "current_anws_version": "v7" }核心需求
.anws/v{N}映射到用户项目的 semver 版本号v{N},反之亦然/genesis自动创建(避免错误假设)非目标
/genesis自动猜测用户 release 版本号受益场景