mirror of
https://github.com/codestable/CodeStable.git
synced 2026-09-19 09:03:09 +08:00
fix(skills): bound project lesson validation
This commit is contained in:
@@ -61,12 +61,14 @@ canonical guard/knowledge 才是稳定归宿。
|
||||
|
||||
### 开工:有效命中必须说明影响
|
||||
|
||||
只有 scope 符合、未退役、经当前代码/测试/canonical 文档核实,并真实改变计划或验证的条目才算
|
||||
有效命中。四个 task skill 必须报告:`经验命中:{path}({status});核验:{fact};影响:
|
||||
应用前 read-repair 只做一次有界、最低成本的定向核实,优先读取已有代码、测试或 canonical 文档;
|
||||
不得仅为核实 lesson 运行大范围测试或反复复现。一次定向核实仍不足时跳过该 lesson,不阻塞正常任务。
|
||||
只有 scope 符合、未退役、当前事实成立,并真实改变计划或验证,或明确排除一个具体且合理的错误路径
|
||||
的条目才算有效命中。四个 task skill 必须报告:`经验命中:{path}({status});核验:{fact};影响:
|
||||
{plan_or_check}`。纯关键词碰撞不报告为有效命中,也不能把“读过”冒充“采用”。
|
||||
|
||||
应用前 read-repair:`retired` 不应用;`observed` / `validated` 先核实再用;只是相关但没有改变
|
||||
行为时不制造复用证据;当前事实明确反证时立即停止应用并走窄退役,证据不足时不猜。
|
||||
`retired` 不应用;`observed` / `validated` 经上述核实再用;只是相关但没有改变行为时不制造复用证据;
|
||||
当前事实明确反证时立即停止应用并走窄退役,证据不足时不猜。
|
||||
|
||||
### 任务中:静默识别晶化时刻
|
||||
|
||||
@@ -110,7 +112,7 @@ date: YYYY-MM-DD
|
||||
| status | 判据 |
|
||||
|---|---|
|
||||
| `observed` | 单次任务有证据,尚未在独立后续任务验证 |
|
||||
| `validated` | 非创建该 lesson 的任务和 agent invocation 中有效命中,真实改善行为并验证成功 |
|
||||
| `validated` | 非创建该 lesson 的任务和 agent invocation 中有效命中,真实改善行为并验证成功;具体表现为改变计划或验证,或明确排除一个具体且合理的错误路径 |
|
||||
| `retired` | 被事实反证、范围完全失效或已被更强 owner 替代;不得应用且不再复活原结论 |
|
||||
|
||||
旧 lesson 缺 `status` 按 `observed` 读取,不批量迁移;只有真实状态变化或 `cs-keep` 本来就要更新
|
||||
@@ -119,7 +121,8 @@ date: YYYY-MM-DD
|
||||
创建、改写规则/scope、晋升、删除与跨项目反馈仍须用户显式 `cs-keep` 诉求、接受普通候选,或
|
||||
Epic 最终毕业 gate。为实现不中断的 read-repair,仅对已有且有效命中的 lesson 开放两种窄维护:
|
||||
|
||||
- `observed -> validated`:独立后续任务确实采用并验证成功,只补一次代表性证据;
|
||||
- `observed -> validated`:独立后续任务确实采用并验证成功,只补一次代表性证据;必须记录 lesson
|
||||
实际改变的计划或验证,或明确排除的具体且合理错误路径,以及本次通过的验收证据;
|
||||
- `observed|validated -> retired`:当前仓库事实直接反证,只写原因与替代/反证指针。
|
||||
|
||||
窄维护不新建事实、不改规则、不扩 scope、不新增 gate,随当次代码、证据和游标进入同一语义原子
|
||||
@@ -199,8 +202,10 @@ README 精简结构、全部 Markdown ≤300、plugin/package/distribution tests
|
||||
|
||||
## 验收标准
|
||||
|
||||
- 四 task skills 对有效命中报告路径、核验与具体影响;候选静默、普通最多一条、Epic 最终处理。
|
||||
- 三态可解析且按需迁移;退役不再应用,validated 稳定命中无 churn,机械化与单一 owner 优先。
|
||||
- 四 task skills 的 read-repair 有界且不阻塞正常任务;有效命中报告路径、核验与具体影响,并允许
|
||||
“明确排除具体且合理的错误路径”作为真实影响;候选静默、普通最多一条、Epic 最终处理。
|
||||
- 三态可解析且按需迁移;validated 记录具体行为变化与本次通过的验收证据,退役不再应用,稳定命中
|
||||
无 churn,机械化与单一 owner 优先。
|
||||
- 新 lesson 与跨项目分享保持显式授权;无 transcript、feedback runtime、global lessons 或新 skill。
|
||||
- paired 单测证明四类 invocation 独立、B prompt 相同、只有 lesson 差异、半 pair 不完成、成本不低估。
|
||||
- 冻结实验在两个 model family 上以非 `[underpowered]` 证据满足 verdict;否则本 Epic 保持未完成。
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
epic: ../epics/cs-continuous-learning-lifecycle.md
|
||||
phase: executing
|
||||
approved_revision: 4b0b8e8e0596e7ee42611864843512ecd9402970bb3682b5605f0dc0f8dcf01a
|
||||
approved_revision: 44ae22f3cc8cb675686a143bf0deff5a06bd7231ceb8f92274042e0a4bcd17e7
|
||||
current_item: LEARN-3
|
||||
next_action: wait for fresh owner authorization before any real probe; do not resume the interrupted checkpoint
|
||||
blocked_by: null
|
||||
@@ -265,3 +265,13 @@ remote_publish: each-milestone
|
||||
后续真实 probe 与新 identity calibration 均等待 owner 逐次显式授权,不恢复中断 checkpoint。
|
||||
- pipeline 输入已重置为 `prepared-awaiting-commit` / probe pending / `real_llm_runs_started=false`;该字段只
|
||||
描述尚未运行的新 source。真实 probe、CLI 或 calibration 均须 owner 重新逐次授权,本流程不自动执行。
|
||||
- owner 批准持续学习契约澄清方向:read-repair 只做一次有界、最低成本的定向核实且不得为 lesson
|
||||
反复复现或运行大范围测试;排除具体且合理的错误路径也算真实影响;`validated` 必须记录行为变化与
|
||||
本次通过的验收证据。稳定契约已同步回永久 Epic,按 lifecycle 重置批准 revision 并等待 fresh review
|
||||
后的 owner 确认;目标、范围、验收阈值与子项定义未改变。
|
||||
- 契约 tests-first 先得 `5 failed, 35 passed`,同步 5 个 shipped Skill、ADR-006 与中英文 WORKFLOW 后
|
||||
转为 `40 passed`;连同分发/package 测试为 `75 passed, 1 skipped`,plugin checker 通过。freeze 仍为
|
||||
prepared/pending/false,33 inputs / 26 external inputs 逐项匹配,未执行真实 CLI、probe 或模型运行。
|
||||
- 契约澄清 fresh review:Paseo `c06c2e6a`,Opus 5 / high / plan,冻结 patch `2ccbaf55...d9619`、
|
||||
tree `649332c7...293b02`;`0 blocking / 0 important / 3 nit`,新永久 Epic hash
|
||||
`44ae22f3...d17e7` 可确认。owner 随后正式确认该 revision;三条 nit 均为可选措辞粒度,不影响合入。
|
||||
|
||||
+10
-7
@@ -90,16 +90,19 @@ a durable record; remove it when complete unless the owner asks to retain it.
|
||||
|
||||
## Project-Local Continuous Learning
|
||||
|
||||
- Each task skill observes silently during the task. It reports
|
||||
`lesson hit: {path} ({status}); check: {fact}; impact: {plan_or_check}` only after current code, tests, or
|
||||
canonical docs confirm the lesson and it actually changes the plan or verification; keyword overlap alone is
|
||||
not reuse.
|
||||
- Each task skill observes silently during the task. Read-repair performs one bounded, lowest-cost targeted check
|
||||
against existing code, tests, or canonical docs; it must not run broad tests or repeat reproductions solely to
|
||||
verify a lesson. If that check is insufficient, it skips the lesson without blocking the task. It reports
|
||||
`lesson hit: {path} ({status}); check: {fact}; impact: {plan_or_check}` only when current facts hold and the
|
||||
lesson changes the plan or verification, or explicitly rules out a concrete, plausible wrong path; keyword
|
||||
overlap alone is not reuse.
|
||||
- A crystallization candidate exists only in the current session. Ordinary work shows at most one candidate and
|
||||
stays quiet without a strong signal. Epic items add no pause: each may place one deduplicated candidate in the
|
||||
existing cursor evidence, and the final graduation list handles them together.
|
||||
- The lesson lifecycle is observed / validated / retired. A new lesson starts observed, reaches validated only
|
||||
after successful use in an independent later task, and becomes retired when facts contradict it, its scope
|
||||
expires, or a stronger owner exists.
|
||||
- The lesson lifecycle is observed / validated / retired. A new lesson starts observed and reaches validated only
|
||||
after successful use in an independent later task that records the lesson-caused plan or verification change,
|
||||
or the concrete plausible wrong path it ruled out, together with the task's passing acceptance evidence. It
|
||||
becomes retired when facts contradict it, its scope expires, or a stronger owner exists.
|
||||
- Read-repair permits only narrow state maintenance on an existing matched lesson; stable validated hits create
|
||||
no file churn. New lessons still require explicit authorization, as do rule/scope rewrites, promotion, deletion,
|
||||
and cross-project sharing; none may be inferred from task-execution authorization.
|
||||
|
||||
+6
-4
@@ -56,13 +56,15 @@ bug / 行为异常 -> cs-issue ----------> cs-review(高风险或按需)
|
||||
|
||||
## 项目内持续学习
|
||||
|
||||
- 四个 task skill 在任务内静默观察,只把经当前代码、测试或 canonical 文档核实且真实改变计划或
|
||||
验证的 lesson 报告为 `经验命中:{path}({status});核验:{fact};影响:{plan_or_check}`;
|
||||
纯关键词碰撞不算复用。
|
||||
- 四个 task skill 在任务内静默观察。lesson 只做一次有界、最低成本的定向核实,不为此运行大范围
|
||||
测试或反复复现;仍不足时跳过,不阻塞正常任务。只有当前事实成立,且真实改变计划或验证,或
|
||||
明确排除一个具体且合理的错误路径时,才报告为
|
||||
`经验命中:{path}({status});核验:{fact};影响:{plan_or_check}`;纯关键词碰撞不算复用。
|
||||
- 晶化候选只存在于当前会话内。普通任务最多展示一条最高价值候选,无强信号就不显示;
|
||||
Epic 子项不新增暂停,每项最多把一条去重候选写入既有游标证据区,最终毕业清单统一处理。
|
||||
- lesson 生命周期为 observed / validated / retired。新条目从 observed 开始,只有独立后续任务中
|
||||
的有效命中和成功验证才能进入 validated;事实反证、scope 失效或已有更强 owner 时进入 retired。
|
||||
的有效命中和成功验证才能进入 validated,并须记录实际行为变化与本次通过的验收证据;事实反证、
|
||||
scope 失效或已有更强 owner 时进入 retired。
|
||||
- read-repair 只允许已有命中条目的窄状态维护;稳定 validated 命中不写文件。
|
||||
新 lesson 仍需显式授权,规则/scope 改写、晋升、删除和跨项目分享也不能从任务执行授权中推断。
|
||||
- 机械 guard 优先:能在当前任务范围内落成测试、checker、lint、类型或 helper 的错误,不再写重复
|
||||
|
||||
@@ -75,7 +75,7 @@ canonical owner。网络波动、拼写、活动记录、泛化口号和已被
|
||||
| status | 判据 |
|
||||
|---|---|
|
||||
| `observed` | 单次任务有证据,尚未在独立后续任务验证 |
|
||||
| `validated` | 非创建该 lesson 的后续任务和 agent invocation 中有效命中,真实改善行为并验证成功 |
|
||||
| `validated` | 非创建该 lesson 的后续任务和 agent invocation 中有效命中,真实改善行为并验证成功;具体表现为改变计划或验证,或明确排除一个具体且合理的错误路径 |
|
||||
| `retired` | 被仓库事实反证、范围完全失效,或已被更强 owner 替代;不得再应用 |
|
||||
|
||||
旧 lesson 缺少 `status` 时按 `observed` 读取,不批量迁移;只有真实状态变化或 `cs-keep` 本来就要
|
||||
@@ -83,8 +83,10 @@ canonical owner。网络波动、拼写、活动记录、泛化口号和已被
|
||||
|
||||
### Read-repair 与窄维护授权
|
||||
|
||||
task skill 应用 lesson 前必须 read-repair:`retired` 不应用;`observed` / `validated` 先用当前代码、
|
||||
测试或 canonical 文档核实。只有条目 scope 符合、事实仍成立且真实改变计划或验证时,才报告
|
||||
task skill 应用 lesson 前必须 read-repair:`retired` 不应用;`observed` / `validated` 只做一次有界、最低成本的定向核实,
|
||||
优先读取已有代码、测试或 canonical 文档;不得仅为核实 lesson 运行大范围测试
|
||||
或反复复现。一次定向核实仍不足时跳过该 lesson,不阻塞正常任务。只有条目 scope 符合、事实仍成立,
|
||||
且真实改变计划或验证,或明确排除一个具体且合理的错误路径时,才报告
|
||||
`经验命中:{path}({status});核验:{fact};影响:{plan_or_check}`;纯关键词碰撞或只是读过不算
|
||||
有效命中。
|
||||
|
||||
@@ -92,7 +94,8 @@ task skill 应用 lesson 前必须 read-repair:`retired` 不应用;`observed
|
||||
普通任务候选,或 Epic 最终毕业 gate。为使 read-repair 不中断任务,仅对已有且有效命中的 lesson
|
||||
开放两种无需新增确认的窄维护:
|
||||
|
||||
- `observed -> validated`:独立后续任务确实采用并验证成功,只补一次代表性证据;
|
||||
- `observed -> validated`:独立后续任务确实采用并验证成功,只补一次代表性证据;必须记录 lesson
|
||||
实际改变的计划或验证,或明确排除的具体且合理错误路径,以及本次通过的验收证据;
|
||||
- `observed|validated -> retired`:当前仓库事实直接反证,或发现已有 canonical owner,只写退役原因
|
||||
与替代/反证指针。
|
||||
|
||||
|
||||
@@ -59,8 +59,9 @@ Only active cross-session state uses a temporary work cursor. Ordinary work reli
|
||||
## Experience Evolves Through Verification
|
||||
|
||||
Experience is not an activity log. CodeStable silently recognizes crystallization moments that truly change a
|
||||
plan, root cause, or verification, and keeps a candidate only when it has evidence, applies beyond the exact diff,
|
||||
and has no stronger owner. Without a strong signal, completion gains no extra ritual.
|
||||
plan, root cause, or verification, or explicitly rules out a concrete, plausible wrong path. It keeps a candidate
|
||||
only when it has evidence, applies beyond the exact diff, and has no stronger owner. Without a strong signal,
|
||||
completion gains no extra ritual.
|
||||
|
||||
A lesson is staging, not a permanent archive. An independent later task validates it; changed facts retire it;
|
||||
and mechanizable failures move into tests or checkers. The project accumulates methods that reduce failure instead
|
||||
|
||||
@@ -56,8 +56,8 @@ CodeStable 坚持一个事实只有一个 canonical owner:稳定产品事实
|
||||
|
||||
## 经验通过验证演化
|
||||
|
||||
经验不是活动日志。CodeStable 在任务中静默识别真正改变方案、根因或验证的晶化时刻,只把有证据、
|
||||
适用于本次精确 diff 之外且尚无更强 owner 的结论作为候选。没有强信号时不增加收尾仪式。
|
||||
经验不是活动日志。CodeStable 在任务中静默识别真正改变方案、根因或验证,或明确排除一个具体且合理的错误路径
|
||||
的晶化时刻,只把有证据、适用于本次精确 diff 之外且尚无更强 owner 的结论作为候选。没有强信号时不增加收尾仪式。
|
||||
|
||||
lesson 是 staging,不是永久档案。它先被观察,再由独立后续任务验证;事实变化时会退役,能机械化
|
||||
时则进入测试或 checker。这样项目积累的是降低失败率的方法,而不是不断增长的文字规则。
|
||||
|
||||
@@ -61,11 +61,11 @@
|
||||
".claude/skills/eval-cs-skill/scripts/scorers/learning_transfer.py": "d34ba315c065b880c0043af94a9ca87bd275d7b18e4ee3d8346858d33fdbebce",
|
||||
".claude/skills/eval-cs-skill/scripts/sequence.py": "c4059892481527bce85964b80375f23524b4427b3d879fa84e7b99c821e958b5",
|
||||
"experiments/seeds/dispatchboard-learning/build-seed.py": "4c7f7090abe69aca0b6be2a3568c85a91345374a4879f94da9f6704f028689b1",
|
||||
"plugins/codestable/skills/cs-epic/SKILL.md": "4f67e0efc6aa446eceaf3e57bf31b4fcc18af7ba87ce927be6b4bbb0d35407aa",
|
||||
"plugins/codestable/skills/cs-feat/SKILL.md": "54261caf4d0cb8f01b225c3041d41476691efbaa29a5390e7f9887c9cbfb70ff",
|
||||
"plugins/codestable/skills/cs-issue/SKILL.md": "203ca2710355a56a12236c2d55f57e7264b744be4f13edd633af4f352be1b707",
|
||||
"plugins/codestable/skills/cs-keep/SKILL.md": "3d2d2cbb0114b963b1847f3d2caaa2d58db193cbf1cf38039d5b52044d3dd6ca",
|
||||
"plugins/codestable/skills/cs-refactor/SKILL.md": "a225c692ce7776f9305b14cbb7c424656304cbe2b59c0a70aeedb3802e5b01b8"
|
||||
"plugins/codestable/skills/cs-epic/SKILL.md": "e3f4c89ce04e41db022935bf251a012fe2cf613226d24f339569ef9d65e510dd",
|
||||
"plugins/codestable/skills/cs-feat/SKILL.md": "df8d3de6f7bb4925024f24d93290c9a644bf24b2359588eeee51cc57ce9c7047",
|
||||
"plugins/codestable/skills/cs-issue/SKILL.md": "fa36e43ff0785e13fcfdc222fd87b15fb22a38bbb5e9872c338a401a1320e88a",
|
||||
"plugins/codestable/skills/cs-keep/SKILL.md": "1d8f56aae90ab45b0ab966ae15c42d8d958e1a3a1a29ca2e196871afda90354d",
|
||||
"plugins/codestable/skills/cs-refactor/SKILL.md": "a3b5e29ae6919969e659799faed8513dbd8dad7b3713cee09aae1edcf35e7871"
|
||||
},
|
||||
"inputs": {
|
||||
"_asset_mutations.py": "fe952ddc35ddc1fd0976627043383f9b4d4ec05fd8202ac5fe963bdd0b904210",
|
||||
|
||||
@@ -20,8 +20,10 @@ argument-hint: "[大需求描述]"
|
||||
|
||||
## 持续学习
|
||||
|
||||
检索到 lesson 后先做 read-repair。只有 scope 符合、未退役、经当前代码/测试/canonical 文档核实,
|
||||
并真实改变计划或验证的条目才算有效命中;按
|
||||
检索到 lesson 后先做 read-repair。只做一次有界、最低成本的定向核实,优先读取已有代码、测试或
|
||||
canonical 文档;不得仅为核实 lesson 运行大范围测试或反复复现。仍不足时跳过该 lesson,不阻塞正常任务。
|
||||
只有 scope 符合、未退役、当前事实成立,并真实改变计划或验证,或明确排除一个具体且合理的错误路径
|
||||
的条目才算有效命中;按
|
||||
`经验命中:{path}({status});核验:{fact};影响:{plan_or_check}` 报告。`retired` 不应用;
|
||||
`observed` / `validated` 先核实再用;旧 lesson 缺 `status` 按 `observed` 读取,不批量迁移。只是相关
|
||||
但没有改变行为时不制造复用证据;当前事实明确反证时立即停止应用,证据不足时不猜。
|
||||
@@ -36,7 +38,8 @@ owner。网络波动、拼写、泛化口号、活动记录,以及已被机械
|
||||
|
||||
创建、改写规则/scope、晋升、删除与跨项目反馈仍须用户显式授权。为不中断 read-repair,仅对已有且
|
||||
有效命中的 lesson 开放两种窄维护:`observed -> validated` 仅在独立后续任务确实采用并验证成功时
|
||||
发生,只补一次代表性证据;`observed|validated -> retired` 仅在当前仓库事实直接反证或发现已有
|
||||
发生,只补一次代表性证据;必须记录 lesson 实际改变的计划或验证,或明确排除的具体且合理错误路径,
|
||||
以及本次通过的验收证据。`observed|validated -> retired` 仅在当前仓库事实直接反证或发现已有
|
||||
canonical owner 时发生,只写原因与替代/反证指针。窄维护不新建事实、不改规则、不扩 scope、不新增
|
||||
gate,随当次代码、证据和
|
||||
游标进入同一语义原子 milestone;稳定 validated 命中不写文件。需要改写结论或证据不足时只给
|
||||
|
||||
@@ -20,8 +20,10 @@ argument-hint: "[功能描述]"
|
||||
|
||||
## 持续学习
|
||||
|
||||
检索到 lesson 后先做 read-repair。只有 scope 符合、未退役、经当前代码/测试/canonical 文档核实,
|
||||
并真实改变计划或验证的条目才算有效命中;按
|
||||
检索到 lesson 后先做 read-repair。只做一次有界、最低成本的定向核实,优先读取已有代码、测试或
|
||||
canonical 文档;不得仅为核实 lesson 运行大范围测试或反复复现。仍不足时跳过该 lesson,不阻塞正常任务。
|
||||
只有 scope 符合、未退役、当前事实成立,并真实改变计划或验证,或明确排除一个具体且合理的错误路径
|
||||
的条目才算有效命中;按
|
||||
`经验命中:{path}({status});核验:{fact};影响:{plan_or_check}` 报告。`retired` 不应用;
|
||||
`observed` / `validated` 先核实再用;旧 lesson 缺 `status` 按 `observed` 读取,不批量迁移。只是相关
|
||||
但没有改变行为时不制造复用证据;当前事实明确反证时立即停止应用,证据不足时不猜。
|
||||
@@ -36,7 +38,8 @@ owner。网络波动、拼写、泛化口号、活动记录,以及已被机械
|
||||
|
||||
创建、改写规则/scope、晋升、删除与跨项目反馈仍须用户显式授权。为不中断 read-repair,仅对已有且
|
||||
有效命中的 lesson 开放两种窄维护:`observed -> validated` 仅在独立后续任务确实采用并验证成功时
|
||||
发生,只补一次代表性证据;`observed|validated -> retired` 仅在当前仓库事实直接反证或发现已有
|
||||
发生,只补一次代表性证据;必须记录 lesson 实际改变的计划或验证,或明确排除的具体且合理错误路径,
|
||||
以及本次通过的验收证据。`observed|validated -> retired` 仅在当前仓库事实直接反证或发现已有
|
||||
canonical owner 时发生,只写原因与替代/反证指针。窄维护不新建事实、不改规则、不扩 scope、不新增
|
||||
gate,随当次代码、证据和
|
||||
游标进入同一语义原子 milestone;稳定 validated 命中不写文件。需要改写结论或证据不足时只给
|
||||
|
||||
@@ -18,8 +18,10 @@ argument-hint: "[问题描述]"
|
||||
|
||||
## 持续学习
|
||||
|
||||
检索到 lesson 后先做 read-repair。只有 scope 符合、未退役、经当前代码/测试/canonical 文档核实,
|
||||
并真实改变计划或验证的条目才算有效命中;按
|
||||
检索到 lesson 后先做 read-repair。只做一次有界、最低成本的定向核实,优先读取已有代码、测试或
|
||||
canonical 文档;不得仅为核实 lesson 运行大范围测试或反复复现。仍不足时跳过该 lesson,不阻塞正常任务。
|
||||
只有 scope 符合、未退役、当前事实成立,并真实改变计划或验证,或明确排除一个具体且合理的错误路径
|
||||
的条目才算有效命中;按
|
||||
`经验命中:{path}({status});核验:{fact};影响:{plan_or_check}` 报告。`retired` 不应用;
|
||||
`observed` / `validated` 先核实再用;旧 lesson 缺 `status` 按 `observed` 读取,不批量迁移。只是相关
|
||||
但没有改变行为时不制造复用证据;当前事实明确反证时立即停止应用,证据不足时不猜。
|
||||
@@ -34,7 +36,8 @@ owner。网络波动、拼写、泛化口号、活动记录,以及已被机械
|
||||
|
||||
创建、改写规则/scope、晋升、删除与跨项目反馈仍须用户显式授权。为不中断 read-repair,仅对已有且
|
||||
有效命中的 lesson 开放两种窄维护:`observed -> validated` 仅在独立后续任务确实采用并验证成功时
|
||||
发生,只补一次代表性证据;`observed|validated -> retired` 仅在当前仓库事实直接反证或发现已有
|
||||
发生,只补一次代表性证据;必须记录 lesson 实际改变的计划或验证,或明确排除的具体且合理错误路径,
|
||||
以及本次通过的验收证据。`observed|validated -> retired` 仅在当前仓库事实直接反证或发现已有
|
||||
canonical owner 时发生,只写原因与替代/反证指针。窄维护不新建事实、不改规则、不扩 scope、不新增
|
||||
gate,随当次代码、证据和
|
||||
游标进入同一语义原子 milestone;稳定 validated 命中不写文件。需要改写结论或证据不足时只给
|
||||
|
||||
@@ -56,13 +56,13 @@ date: YYYY-MM-DD
|
||||
| status | 判据 |
|
||||
|---|---|
|
||||
| `observed` | 单次任务已有证据,尚未在独立后续任务验证 |
|
||||
| `validated` | 非创建该 lesson 的任务和 agent invocation 中有效命中,真实改善行为并验证成功 |
|
||||
| `validated` | 非创建该 lesson 的任务和 agent invocation 中有效命中,真实改善行为并验证成功;具体表现为改变计划或验证,或明确排除一个具体且合理的错误路径 |
|
||||
| `retired` | 被仓库事实反证、scope 完全失效或已有更强 canonical owner;不得应用且不再复活原结论 |
|
||||
|
||||
- 新 lesson 一律从 `observed` 开始;不能把创建该 lesson 的同一任务自证为 validated,也不因命中
|
||||
次数或模型自评晋级。
|
||||
- 旧 lesson 缺 `status` 按 `observed` 读取,不批量迁移;只在真实状态变化或本来就要更新时补字段。
|
||||
- `observed -> validated` 只在独立后续任务确实采用并验证成功时发生,并只补一次代表性证据。
|
||||
- `observed -> validated` 只在独立后续任务确实采用并验证成功时发生,并只补一次代表性证据;必须记录 lesson 实际改变的计划或验证,或明确排除的具体且合理错误路径,以及本次通过的验收证据。
|
||||
- `observed|validated -> retired` 只写反证/替代原因与指针。retired 条目上的新结论必须另建 observed
|
||||
lesson,不继承旧条目的 validated 身份。
|
||||
- 稳定 validated 命中不产生文件 churn。不得保存原始对话、逐次命中日志或无限 evidence history。
|
||||
|
||||
@@ -17,8 +17,10 @@ argument-hint: "[重构目标]"
|
||||
|
||||
## 持续学习
|
||||
|
||||
检索到 lesson 后先做 read-repair。只有 scope 符合、未退役、经当前代码/测试/canonical 文档核实,
|
||||
并真实改变计划或验证的条目才算有效命中;按
|
||||
检索到 lesson 后先做 read-repair。只做一次有界、最低成本的定向核实,优先读取已有代码、测试或
|
||||
canonical 文档;不得仅为核实 lesson 运行大范围测试或反复复现。仍不足时跳过该 lesson,不阻塞正常任务。
|
||||
只有 scope 符合、未退役、当前事实成立,并真实改变计划或验证,或明确排除一个具体且合理的错误路径
|
||||
的条目才算有效命中;按
|
||||
`经验命中:{path}({status});核验:{fact};影响:{plan_or_check}` 报告。`retired` 不应用;
|
||||
`observed` / `validated` 先核实再用;旧 lesson 缺 `status` 按 `observed` 读取,不批量迁移。只是相关
|
||||
但没有改变行为时不制造复用证据;当前事实明确反证时立即停止应用,证据不足时不猜。
|
||||
@@ -33,7 +35,8 @@ owner。网络波动、拼写、泛化口号、活动记录,以及已被机械
|
||||
|
||||
创建、改写规则/scope、晋升、删除与跨项目反馈仍须用户显式授权。为不中断 read-repair,仅对已有且
|
||||
有效命中的 lesson 开放两种窄维护:`observed -> validated` 仅在独立后续任务确实采用并验证成功时
|
||||
发生,只补一次代表性证据;`observed|validated -> retired` 仅在当前仓库事实直接反证或发现已有
|
||||
发生,只补一次代表性证据;必须记录 lesson 实际改变的计划或验证,或明确排除的具体且合理错误路径,
|
||||
以及本次通过的验收证据。`observed|validated -> retired` 仅在当前仓库事实直接反证或发现已有
|
||||
canonical owner 时发生,只写原因与替代/反证指针。窄维护不新建事实、不改规则、不扩 scope、不新增
|
||||
gate,随当次代码、证据和
|
||||
游标进入同一语义原子 milestone;稳定 validated 命中不写文件。需要改写结论或证据不足时只给
|
||||
|
||||
@@ -31,7 +31,11 @@ LESSON_READ_REPAIR_CONTRACT = {
|
||||
"旧 lesson 缺 `status` 按 `observed` 读取",
|
||||
"`retired` 不应用",
|
||||
"`observed` / `validated` 先核实再用",
|
||||
"只做一次有界、最低成本的定向核实",
|
||||
"不得仅为核实 lesson 运行大范围测试或反复复现",
|
||||
"仍不足时跳过该 lesson,不阻塞正常任务",
|
||||
"只是相关但没有改变行为时不制造复用证据",
|
||||
"明确排除一个具体且合理的错误路径",
|
||||
"当前事实明确反证时立即停止应用",
|
||||
"证据不足时不猜",
|
||||
}
|
||||
@@ -60,6 +64,8 @@ NARROW_LESSON_MAINTENANCE_CONTRACT = {
|
||||
"`observed -> validated`",
|
||||
"独立后续任务确实采用并验证成功",
|
||||
"只补一次代表性证据",
|
||||
"必须记录 lesson 实际改变的计划或验证",
|
||||
"本次通过的验收证据",
|
||||
"`observed|validated -> retired`",
|
||||
"当前仓库事实直接反证",
|
||||
"发现已有 canonical owner",
|
||||
@@ -380,6 +386,9 @@ def test_keep_owns_the_three_state_lesson_lifecycle() -> None:
|
||||
"`validated`",
|
||||
"非创建该 lesson 的任务和 agent invocation 中有效命中",
|
||||
"真实改善行为并验证成功",
|
||||
"明确排除一个具体且合理的错误路径",
|
||||
"必须记录 lesson 实际改变的计划或验证",
|
||||
"本次通过的验收证据",
|
||||
"`retired`",
|
||||
"不得应用且不再复活原结论",
|
||||
"旧 lesson 缺 `status` 按 `observed` 读取",
|
||||
|
||||
@@ -99,16 +99,21 @@ def test_v1_feedback_promoter_is_explicitly_legacy_only() -> None:
|
||||
|
||||
def test_project_learning_lifecycle_is_an_accepted_narrow_staging_contract() -> None:
|
||||
adr6 = ROOT / "docs/adr/006-project-learning-lifecycle.md"
|
||||
epic = ROOT / ".codestable/epics/cs-continuous-learning-lifecycle.md"
|
||||
|
||||
assert adr6.is_file()
|
||||
assert epic.is_file()
|
||||
assert _frontmatter(adr6)["status"] == "Accepted"
|
||||
text = adr6.read_text(encoding="utf-8")
|
||||
for anchor in (
|
||||
"在任务中静默观察",
|
||||
"最多保留 3 条候选",
|
||||
"read-repair",
|
||||
"一次有界、最低成本的定向核实",
|
||||
"具体且合理的错误路径",
|
||||
"必须优先机械化",
|
||||
"`observed -> validated`",
|
||||
"本次通过的验收证据",
|
||||
"`observed|validated -> retired`",
|
||||
"显式授权",
|
||||
"feedback runtime",
|
||||
@@ -120,6 +125,14 @@ def test_project_learning_lifecycle_is_an_accepted_narrow_staging_contract() ->
|
||||
):
|
||||
assert anchor in text
|
||||
|
||||
epic_text = epic.read_text(encoding="utf-8")
|
||||
for anchor in (
|
||||
"一次有界、最低成本的定向核实",
|
||||
"明确排除一个具体且合理的错误路径",
|
||||
"本次通过的验收证据",
|
||||
):
|
||||
assert anchor in epic_text
|
||||
|
||||
|
||||
def test_project_learning_does_not_restore_feedback_or_global_runtime_state() -> None:
|
||||
active_skills = {
|
||||
|
||||
@@ -496,6 +496,9 @@ def test_project_learning_lifecycle_is_bilingual_and_low_interruption() -> None:
|
||||
for anchor in (
|
||||
"任务内静默观察",
|
||||
"经验命中:{path}({status});核验:{fact};影响:{plan_or_check}",
|
||||
"一次有界、最低成本的定向核实",
|
||||
"明确排除一个具体且合理的错误路径",
|
||||
"本次通过的验收证据",
|
||||
"observed / validated / retired",
|
||||
"普通任务最多展示一条",
|
||||
"Epic 子项不新增暂停",
|
||||
@@ -507,6 +510,9 @@ def test_project_learning_lifecycle_is_bilingual_and_low_interruption() -> None:
|
||||
for anchor in (
|
||||
"observes silently during the task",
|
||||
"lesson hit: {path} ({status}); check: {fact}; impact: {plan_or_check}",
|
||||
"one bounded, lowest-cost targeted check",
|
||||
"explicitly rules out a concrete, plausible wrong path",
|
||||
"the task's passing acceptance evidence",
|
||||
"observed / validated / retired",
|
||||
"at most one candidate",
|
||||
"Epic items add no pause",
|
||||
@@ -520,6 +526,12 @@ def test_project_learning_lifecycle_is_bilingual_and_low_interruption() -> None:
|
||||
("README.md", "README.en.md", "边做边识别晶化时刻", "recognizes crystallization moments while working"),
|
||||
("SKILL_CATALOG.md", "SKILL_CATALOG.en.md", "observed / validated / retired", "observed / validated / retired"),
|
||||
("docs/why-codestable.md", "docs/why-codestable.en.md", "经验不是活动日志", "Experience is not an activity log"),
|
||||
(
|
||||
"docs/why-codestable.md",
|
||||
"docs/why-codestable.en.md",
|
||||
"排除一个具体且合理的错误路径",
|
||||
"rules out a concrete, plausible wrong path",
|
||||
),
|
||||
)
|
||||
for zh_path, en_path, zh_anchor, en_anchor in public_pairs:
|
||||
assert _contains_contract(_read(zh_path), zh_anchor)
|
||||
|
||||
Reference in New Issue
Block a user