docs: add DevHarness upgrade baseline guidance (#16)
This commit is contained in:
@@ -42,6 +42,7 @@ CORE_DOCUMENT_REQUIREMENTS = {
|
|||||||
),
|
),
|
||||||
"docs/00-project-profile.md": (
|
"docs/00-project-profile.md": (
|
||||||
"## 基本信息",
|
"## 基本信息",
|
||||||
|
"## DevHarness 来源与基线",
|
||||||
"## 子项目与交付单元",
|
"## 子项目与交付单元",
|
||||||
"## 技术栈与运行环境",
|
"## 技术栈与运行环境",
|
||||||
"## 阅读入口",
|
"## 阅读入口",
|
||||||
@@ -105,6 +106,9 @@ CORE_DOCUMENT_REQUIREMENTS = {
|
|||||||
"### 可以考虑拆仓",
|
"### 可以考虑拆仓",
|
||||||
"### 保持单仓库时的最小规则",
|
"### 保持单仓库时的最小规则",
|
||||||
"## 增量接入顺序",
|
"## 增量接入顺序",
|
||||||
|
"## 后续升级",
|
||||||
|
"### 升级步骤",
|
||||||
|
"### 可复制升级指令",
|
||||||
"## 冲突处理和停止条件",
|
"## 冲突处理和停止条件",
|
||||||
"## 可复制 Agent 指令",
|
"## 可复制 Agent 指令",
|
||||||
"### 只分析",
|
"### 只分析",
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||||
wiki_page: Project-Profile
|
wiki_page: Project-Profile
|
||||||
wiki_url: http://ilaer.eicp.net:8418/opc/dev_harness/wiki/Project-Profile.-
|
wiki_url: http://ilaer.eicp.net:8418/opc/dev_harness/wiki/Project-Profile.-
|
||||||
wiki_revision: 62d1251f807f7d1b60017790c35d46186ffb9617
|
wiki_revision: 16456d6ed083197759d553b1033e3e5c8a6b8932
|
||||||
synchronized_at: 2026-08-16T11:18:50Z
|
synchronized_at: 2026-08-16T11:49:52Z
|
||||||
<!-- gitea-wiki-mirror:end -->
|
<!-- gitea-wiki-mirror:end -->
|
||||||
|
|
||||||
# 项目档案
|
# 项目档案
|
||||||
@@ -23,6 +23,19 @@ synchronized_at: 2026-08-16T11:18:50Z
|
|||||||
| 主要维护者 | `ila` |
|
| 主要维护者 | `ila` |
|
||||||
| 文档适用范围 | 默认分支当前版本;具体镜像 revision 见每个本地文件头 |
|
| 文档适用范围 | 默认分支当前版本;具体镜像 revision 见每个本地文件头 |
|
||||||
|
|
||||||
|
## DevHarness 来源与基线
|
||||||
|
|
||||||
|
每个采用 DevHarness 的业务项目都必须填写本节。它记录的是所采用的 DevHarness 上游版本,不是业务项目自己的提交。不得使用“最新版本”“当前 main”等动态描述代替完整提交哈希。
|
||||||
|
|
||||||
|
| 项目 | 内容 |
|
||||||
|
|---|---|
|
||||||
|
| DevHarness 来源仓库 | `http://ilaer.eicp.net:8418/opc/dev_harness` |
|
||||||
|
| 当前基线提交 | 本仓库是 DevHarness 上游源模板,不适用;复制到业务项目后必须替换为实际采用的完整提交哈希 |
|
||||||
|
| 最后接入或升级日期 | 2026-08-16 |
|
||||||
|
| 项目适配说明 | 本仓库维护源模板;业务项目填写保留、改写或未采用的 Harness 规则与工具 |
|
||||||
|
|
||||||
|
首次接入和后续升级都必须在目标项目工单中记录旧基线、新基线和差异分类。升级验收通过后,目标项目应把“当前基线提交”和日期更新为已采用的上游提交;未完成或已回退的升级不得更新基线。
|
||||||
|
|
||||||
## 子项目与交付单元
|
## 子项目与交付单元
|
||||||
|
|
||||||
“子项目”是仓库中具有明确职责和规则边界的应用或模块;“交付单元”是能够独立构建、测试、版本化或发布的程序、服务、库或文档包。一个子项目可以对应一个交付单元,也可以包含多个交付单元。
|
“子项目”是仓库中具有明确职责和规则边界的应用或模块;“交付单元”是能够独立构建、测试、版本化或发布的程序、服务、库或文档包。一个子项目可以对应一个交付单元,也可以包含多个交付单元。
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||||
wiki_page: Existing-Project-Adoption-Guide
|
wiki_page: Existing-Project-Adoption-Guide
|
||||||
wiki_url: http://ilaer.eicp.net:8418/opc/dev_harness/wiki/Existing-Project-Adoption-Guide.-
|
wiki_url: http://ilaer.eicp.net:8418/opc/dev_harness/wiki/Existing-Project-Adoption-Guide.-
|
||||||
wiki_revision: 5c187a1d1cc215c632fcc26b2a4c6df735af5d92
|
wiki_revision: 2ef3d7cd26874f652e9bfab2a5c2f6c8273ab7ac
|
||||||
synchronized_at: 2026-08-10T11:03:05Z
|
synchronized_at: 2026-08-16T11:50:18Z
|
||||||
<!-- gitea-wiki-mirror:end -->
|
<!-- gitea-wiki-mirror:end -->
|
||||||
|
|
||||||
# 已有项目接入 DevHarness 指南
|
# 已有项目接入 DevHarness 指南
|
||||||
@@ -133,6 +133,41 @@ Agent 在提出方案前只读检查:
|
|||||||
|
|
||||||
提交只包含当前接入工单相关文件。记录测试、未验证部分、Wiki revision 和提交哈希,创建任务归档并保持工单“待验收”,等待用户明确验收后再关闭。
|
提交只包含当前接入工单相关文件。记录测试、未验证部分、Wiki revision 和提交哈希,创建任务归档并保持工单“待验收”,等待用户明确验收后再关闭。
|
||||||
|
|
||||||
|
## 后续升级
|
||||||
|
|
||||||
|
已接入的项目必须以 Project-Profile 中记录的 DevHarness 来源和当前基线为起点升级,不得重新复制整个模板,也不得用“最新版本”代替可复现的目标提交。
|
||||||
|
|
||||||
|
### 升级步骤
|
||||||
|
|
||||||
|
1. 读取目标项目的 Project-Profile,确认 DevHarness 来源仓库、当前基线完整提交、最后升级日期和项目适配说明;字段缺失时先补齐可验证事实,无法确认则停止。
|
||||||
|
2. 选择一个明确、已审阅的 DevHarness 目标提交,记录旧基线和新基线。先比较两个上游提交之间的变化,再判断这些变化如何作用于目标项目。
|
||||||
|
3. 只读比较与 Harness 有关的 `AGENTS.md`、`CLAUDE.md`、工单模板、`dev_scripts/`、Harness 测试和核心 Wiki 结构,把差异分为“直接采用、按项目改写、冲突待确认、不采用”。不得把 DevHarness 的项目事实、工单或任务归档带入目标项目。
|
||||||
|
4. 在目标项目建立单元任务工单,写明升级范围、差异分类、项目专用规则、风险、回退、验证和文档影响。会改变产品行为的内容必须拆成独立任务。
|
||||||
|
5. 按工单最小合并,保留目标项目更具体的业务、安全、权限和目录规则,以及 Git 历史和无关工作区修改。无法判断哪一方规则有效时停止并等待负责人确认。
|
||||||
|
6. 长期文档先更新目标项目 Wiki,读取确认后再同步目标项目的核心 `docs/` 镜像;不得用 DevHarness 的本地镜像覆盖目标项目文档。
|
||||||
|
7. 执行目标项目规定的必要检查和受影响测试,提交并回写证据。工单保持“待验收”。
|
||||||
|
8. 用户验收通过后,确认目标项目 Project-Profile 已记录新 DevHarness 基线完整提交和升级日期,再关闭工单。升级失败或回退时保留旧基线。
|
||||||
|
|
||||||
|
### 升级停止条件
|
||||||
|
|
||||||
|
除本页已有的冲突停止条件外,来源仓库与记录不一致、旧基线不存在、目标提交未明确、差异跨越过大而无法可靠分类,或升级需要覆盖项目专用安全规则时,都必须停止并请求确认。可以把升级拆成多个单元任务,但每个任务都要声明最终采用的同一目标基线。
|
||||||
|
|
||||||
|
### 可复制升级指令
|
||||||
|
|
||||||
|
```text
|
||||||
|
请把当前项目从 Project-Profile 记录的 DevHarness 基线升级到
|
||||||
|
<DevHarness 目标完整提交哈希>。
|
||||||
|
|
||||||
|
先只读比较来源仓库中“旧基线..目标基线”的 Harness 变化和当前项目
|
||||||
|
适配,列出直接采用、按项目改写、冲突待确认和不采用的内容,以及
|
||||||
|
风险、回退、验证和文档影响。不要覆盖项目专用规则、业务文档、Git
|
||||||
|
历史或无关改动,不复制 DevHarness 工单和任务归档。方案确认后在
|
||||||
|
当前项目建单并实施;长期文档先改当前项目 Wiki,再同步本地镜像。
|
||||||
|
工单保持待验收,验收通过后确认 Project-Profile 已记录新基线。
|
||||||
|
```
|
||||||
|
|
||||||
|
路径和目标完整提交哈希必须替换为真实值;目标提交未明确时只分析,不实施。
|
||||||
|
|
||||||
## 冲突处理和停止条件
|
## 冲突处理和停止条件
|
||||||
|
|
||||||
出现以下情况时停止实施并请求负责人确认:
|
出现以下情况时停止实施并请求负责人确认:
|
||||||
|
|||||||
@@ -58,6 +58,18 @@ class CoreDocumentTests(unittest.TestCase):
|
|||||||
self.assertIn(path, CORE_DOCUMENT_REQUIREMENTS)
|
self.assertIn(path, CORE_DOCUMENT_REQUIREMENTS)
|
||||||
self.assertIn("## 可复制 Agent 指令", CORE_DOCUMENT_REQUIREMENTS[path])
|
self.assertIn("## 可复制 Agent 指令", CORE_DOCUMENT_REQUIREMENTS[path])
|
||||||
|
|
||||||
|
def test_existing_project_adoption_requires_upgrade_process(self) -> None:
|
||||||
|
required = CORE_DOCUMENT_REQUIREMENTS[
|
||||||
|
"docs/08-existing-project-adoption.md"
|
||||||
|
]
|
||||||
|
self.assertIn("## 后续升级", required)
|
||||||
|
self.assertIn("### 升级步骤", required)
|
||||||
|
self.assertIn("### 可复制升级指令", required)
|
||||||
|
|
||||||
|
def test_project_profile_requires_dev_harness_baseline(self) -> None:
|
||||||
|
required = CORE_DOCUMENT_REQUIREMENTS["docs/00-project-profile.md"]
|
||||||
|
self.assertIn("## DevHarness 来源与基线", required)
|
||||||
|
|
||||||
def test_new_project_setup_requires_baseline_selection(self) -> None:
|
def test_new_project_setup_requires_baseline_selection(self) -> None:
|
||||||
required = CORE_DOCUMENT_REQUIREMENTS[
|
required = CORE_DOCUMENT_REQUIREMENTS[
|
||||||
"docs/07-new-project-documentation-setup.md"
|
"docs/07-new-project-documentation-setup.md"
|
||||||
|
|||||||
Reference in New Issue
Block a user