@namewta/speculo 0.8.5 → 0.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +4 -3
  2. package/dist/src/structured.js +162 -4
  3. package/dist/src/structured.js.map +1 -1
  4. package/package.json +2 -2
  5. package/template/canonical/canonical-specdev-goal-plan.md +14 -15
  6. package/template/canonical/canonical-specdev-grill-with-docs.md +9 -8
  7. package/template/canonical/canonical-specdev-spec.md +9 -8
  8. package/template/canonical/canonical-specdev-tickets.md +13 -14
  9. package/template/canonical/canonical-specdev-wayfinder.md +7 -7
  10. package/template/commands/status.md +3 -3
  11. package/template/skills/archive-and-consolidate/SKILL.md +19 -14
  12. package/template/workflows/learning/A-archive-and-consolidate/A-archive-and-consolidate.md +38 -0
  13. package/template/workflows/learning/A-archive-and-consolidate/promotion-plan-template.md +23 -0
  14. package/template/workflows/learning/A-assess-and-plan/A-assess-and-plan.md +39 -0
  15. package/template/workflows/learning/A-assess-and-plan/change-status-template.json +28 -0
  16. package/template/workflows/learning/A-assess-and-plan/learning-plan-template.md +28 -0
  17. package/template/workflows/learning/E-eli5/E-eli5.md +37 -0
  18. package/template/workflows/learning/E-eli5/lesson-template.md +31 -0
  19. package/template/workflows/learning/I-init-setup/I-init-setup.md +36 -0
  20. package/template/workflows/learning/I-init-setup/context-index-template.md +6 -0
  21. package/template/workflows/learning/I-init-setup/learner-profile-template.md +17 -0
  22. package/template/workflows/learning/I-init-setup/review-index-template.md +4 -0
  23. package/template/workflows/learning/INDEX.md +26 -0
  24. package/template/workflows/learning/P-practice/P-practice.md +34 -0
  25. package/template/workflows/learning/P-practice/practice-template.md +16 -0
  26. package/template/workflows/learning/Q-quiz/Q-quiz.md +34 -0
  27. package/template/workflows/learning/Q-quiz/quiz-artifact-template.md +16 -0
  28. package/template/workflows/learning/R-review/R-review.md +35 -0
  29. package/template/workflows/learning/R-review/review-template.md +12 -0
  30. package/template/workflows/learning/README.md +121 -0
  31. package/template/workflows/learning/_state/archive/.gitkeep +1 -0
  32. package/template/workflows/learning/_state/changes/.gitkeep +1 -0
  33. package/template/workflows/learning/_state/status.json +6 -0
  34. package/template/workflows/learning/common/rules/artifact-contract.md +27 -0
  35. package/template/workflows/learning/common/rules/assessment-policy.md +7 -0
  36. package/template/workflows/learning/common/rules/knowledge-organization.md +9 -0
  37. package/template/workflows/learning/common/rules/mastery-policy.md +21 -0
  38. package/template/workflows/learning/common/rules/path-reference-contract.md +7 -0
  39. package/template/workflows/learning/common/rules/teaching-policy.md +15 -0
  40. package/template/workflows/learning/common/schemas/change-status.schema.json +41 -0
  41. package/template/workflows/learning/common/schemas/status.schema.json +32 -0
  42. package/template/workflows/learning/common/skills/knowledge-promotion/SKILL.md +46 -0
  43. package/template/workflows/learning/common/skills/knowledge-promotion/domain-index-template.md +6 -0
  44. package/template/workflows/learning/common/skills/knowledge-promotion/domain-overview-template.md +19 -0
  45. package/template/workflows/learning/common/skills/knowledge-promotion/knowledge-template.md +25 -0
  46. package/template/workflows/learning/common/tools/validate-learning.mjs +356 -0
  47. package/template/workflows/learning/runtime-contract.json +11 -0
  48. package/template/workflows/specdev/I-init-setup/I-init-setup.md +1 -1
  49. package/template/workflows/specdev/I-init-setup/config-template.json +2 -2
  50. package/template/workflows/specdev/INDEX.md +2 -2
  51. package/template/workflows/specdev/P-goal-plan/planning-modes.md +1 -1
  52. package/template/workflows/specdev/P-prototype/P-prototype.md +30 -26
  53. package/template/workflows/specdev/P-prototype/design-library/INDEX.md +43 -0
  54. package/template/workflows/specdev/P-prototype/design-library/color-and-theme.md +65 -0
  55. package/template/workflows/specdev/P-prototype/design-library/foundations.md +66 -0
  56. package/template/workflows/specdev/P-prototype/design-library/interaction-patterns.md +61 -0
  57. package/template/workflows/specdev/P-prototype/design-library/product-pattern-index.md +73 -0
  58. package/template/workflows/specdev/P-prototype/design-library/research-provenance.md +54 -0
  59. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/METHODOLOGY.md +90 -0
  60. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/README.md +31 -0
  61. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/data/extended-projects.json +241 -0
  62. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/data/projects.json +253 -0
  63. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/reference/USAGE.md +40 -0
  64. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/reference/design-tokens.css +145 -0
  65. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/report/OPEN_SOURCE_UI_RESEARCH_2026.md +519 -0
  66. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/PROJECT_TEMPLATE.md +29 -0
  67. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/README.md +9 -0
  68. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/claude-code-modern-clients.md +407 -0
  69. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/creative-ai-communication.md +574 -0
  70. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/data-dev-tools.md +432 -0
  71. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/personal-multiplatform-apps.md +185 -0
  72. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/productivity-collaboration.md +398 -0
  73. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/01-dense-ide.html +68 -0
  74. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/02-monochrome-console.html +18 -0
  75. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/03-soft-personal-ai.html +17 -0
  76. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/04-responsive-web.html +14 -0
  77. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/05-mobile-supervisor.html +16 -0
  78. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/06-cross-platform-workspace.html +17 -0
  79. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/07-local-first-content.html +9 -0
  80. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/08-media-first.html +17 -0
  81. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/README.md +49 -0
  82. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/ATTRIBUTION.md +9 -0
  83. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/landscape.jpg +0 -0
  84. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/lucide.js +20494 -0
  85. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/mountain.jpg +0 -0
  86. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/workspace.jpg +0 -0
  87. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/index.html +70 -0
  88. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/package-lock.json +78 -0
  89. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/package.json +12 -0
  90. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/screenshots/index-desktop.png +0 -0
  91. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/scripts/gallery.js +134 -0
  92. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/styles/base.css +795 -0
  93. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/styles/pages.css +533 -0
  94. package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/tests/gallery.spec.js +56 -0
  95. package/template/workflows/specdev/P-prototype/design-library/responsive-and-platforms.md +53 -0
  96. package/template/workflows/specdev/P-prototype/design-library/style-index.md +32 -0
  97. package/template/workflows/specdev/P-prototype/design-package.schema.json +70 -0
  98. package/template/workflows/specdev/P-prototype/design-system-template.md +366 -0
  99. package/template/workflows/specdev/P-prototype/detect-existing-style.md +53 -0
  100. package/template/workflows/specdev/P-prototype/generate-design-package.md +50 -0
  101. package/template/workflows/specdev/P-prototype/style-selection-protocol.md +41 -0
  102. package/template/workflows/specdev/P-prototype/tools/materialize-prototype.mjs +126 -0
  103. package/template/workflows/specdev/P-prototype/tools/validate-design-package.mjs +155 -0
  104. package/template/workflows/specdev/README.md +12 -11
  105. package/template/workflows/specdev/T-triage/T-triage.md +1 -1
  106. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +1 -1
  107. package/template/workflows/specdev/common/README.md +2 -2
  108. package/template/workflows/specdev/common/rules/artifact-contract.md +3 -2
  109. package/template/workflows/specdev/common/schemas/config.schema.json +4 -4
  110. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +4 -4
  111. package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +1 -3
  112. package/template/workflows/specdev/common/tools/validate-specdev.mjs +83 -92
  113. package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +0 -1968
  114. package/template/workflows/specdev/E-eli5/E-eli5.md +0 -97
  115. package/template/workflows/specdev/E-engineering-cognitive-mentor/E-engineering-cognitive-mentor.md +0 -254
  116. package/template/workflows/specdev/E-engineering-cognitive-mentor/architecture-guidance.md +0 -90
  117. package/template/workflows/specdev/E-engineering-cognitive-mentor/bug-guidance.md +0 -80
  118. package/template/workflows/specdev/E-engineering-cognitive-mentor/codebase-guidance.md +0 -107
  119. package/template/workflows/specdev/E-engineering-cognitive-mentor/comprehension-and-closure.md +0 -95
  120. package/template/workflows/specdev/E-engineering-cognitive-mentor/domain-learning-guidance.md +0 -62
  121. package/template/workflows/specdev/E-engineering-cognitive-mentor/evidence-and-options.md +0 -132
  122. package/template/workflows/specdev/E-engineering-cognitive-mentor/interaction-protocol.md +0 -116
  123. package/template/workflows/specdev/E-engineering-cognitive-mentor/mentor-report-template.md +0 -135
  124. package/template/workflows/specdev/E-engineering-cognitive-mentor/mode-routing.md +0 -47
  125. package/template/workflows/specdev/E-engineering-cognitive-mentor/persistence-and-resume.md +0 -132
  126. package/template/workflows/specdev/E-engineering-cognitive-mentor/requirements-guidance.md +0 -92
  127. package/template/workflows/specdev/P-prototype/logic-prototype.md +0 -24
  128. package/template/workflows/specdev/P-prototype/prototype-record-template.md +0 -46
  129. package/template/workflows/specdev/P-prototype/ui-prototype.md +0 -21
  130. package/template/workflows/specdev/common/schemas/prototype-record.schema.json +0 -24
@@ -49,7 +49,7 @@ Wayfinder 默认进行**规划**:每个 Ticket 解决一个决策,当地图
49
49
  每个 Ticket 要么是 **HITL**,与一个代表自己发言的人类一起工作;要么是 **AFK**,由 Agent 独立驱动。HITL Ticket 只能通过实时交流解决,Agent 绝不代替人类一方发言。
50
50
 
51
51
  - **Research(AFK)**:阅读文档、第三方 API 或知识库等资源,揭示某个决策等待的事实。调用 下方 `<research>` 标签。当需要当前工作目录之外的知识时使用。
52
- - **Prototype(HITL)**:调用 “原型阶段” 回答一个 UI/逻辑问题,并把 record、临时 branch/worktree 和运行 URL 链接为 solution comment 资产;P 不实现目的地。
52
+ - **Prototype(HITL)**:调用 “原型阶段” 检测项目 UI、比较功能风格候选并逐步确认设计方向,把 `specdev/changes/{change}/prototypes/{design-id}/design-system.md` comparison locator 链接为 solution comment 资产;`{design-id}` 使用 P 返回的 `UI-NNN`,P 不实现目的地。
53
53
  - **Grilling(HITL)**:对话。调用 “设计访谈能力” 的 grilling 与 domain-modeling 能力,但本会话只关闭当前 Wayfinder Ticket。
54
54
  - **Task(HITL 或 AFK)**:在决策做出前必须完成的手动工作。它通过为决策解除阻塞赢得位置,不以交付目的地为目标。Agent 能独立驱动时使用 AFK,否则给人类精确清单。
55
55
 
@@ -346,8 +346,8 @@ resolution: answered
346
346
  "default_depth": "standard",
347
347
  "require_ready_gate": true,
348
348
  "require_evidence": true,
349
- "ui_prototype_default_variants": 3,
350
- "ui_prototype_max_variants": 5
349
+ "ui_design_default_candidates": 3,
350
+ "ui_design_max_candidates": 4
351
351
  }
352
352
  }
353
353
  ```
@@ -399,19 +399,19 @@ resolution: answered
399
399
  },
400
400
  "planning": {
401
401
  "type": "object",
402
- "required": ["default_depth", "require_ready_gate", "require_evidence", "ui_prototype_default_variants", "ui_prototype_max_variants"],
402
+ "required": ["default_depth", "require_ready_gate", "require_evidence", "ui_design_default_candidates", "ui_design_max_candidates"],
403
403
  "properties": {
404
404
  "default_depth": {"enum": ["lite", "standard", "deep"]},
405
405
  "require_ready_gate": {"type": "boolean"},
406
406
  "require_evidence": {"type": "boolean"},
407
- "ui_prototype_default_variants": {"type": "integer", "minimum": 1},
408
- "ui_prototype_max_variants": {"type": "integer", "minimum": 1}
407
+ "ui_design_default_candidates": {"type": "integer", "minimum": 2, "maximum": 4},
408
+ "ui_design_max_candidates": {"type": "integer", "minimum": 2, "maximum": 4}
409
409
  },
410
410
  "additionalProperties": true
411
411
  }
412
412
  },
413
413
  "allOf": [{
414
- "$comment": "ui_prototype_default_variants <= ui_prototype_max_variants is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
414
+ "$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
415
415
  }],
416
416
  "additionalProperties": false
417
417
  }
@@ -10,8 +10,8 @@ keywords: [status, 状态, active, blocked]
10
10
 
11
11
  1. 读取 `<Path>{roots.state}/workspace.json</Path>`,解析 `<Path>{roots.config}</Path>`(不存在时以默认值静默降级),获取全部已安装 workflow/state 根。
12
12
  2. 扫描 `<Path>{roots.workflows}/{workflow}/INDEX.md</Path>`,得到已安装 workflow ids。
13
- 3. 对每个 id 读取 `<Path>{roots.state}/{workflow}/status.json</Path>`。SpecDev schema v4 直接按 `active` 与 `archived` 分块;对 active 再读取 `changes/<change>/.status.json`,对 archived 按 `archive/YYYY-MM/<change>/.status.json` 定位。
14
- 4. 报告 active 数量、各 change 的 `current_work`、去重后的 `works_run`、change 业务状态、最近更新时间、调查 claims,以及停滞 change(`.status.json` 超过 14 天未更新)。SpecDev change 存在 `triage.md` 时同时读取 `external_action`,把 `pending-close`、`close-failed` 和可归档状态分开显示;不执行远程动作。
15
- 5. 报告 archived 数量和名称;预期归档目录或归档 `.status.json` 缺失、active/archived 重叠、重复名称、未知 schema malformed 目录均列为异常,不自动修复。
13
+ 3. 对每个 id 读取 `<Path>{roots.state}/{workflow}/status.json</Path>`,按该 workflow 自己的 schema 解释,不把 SpecDev 字段套到其他 workflow。SpecDev schema v5 Learning schema v1 均按 `active` 与 `archived` 分块;对 active 再读取 `changes/<change>/.status.json`,对 archived 按 `archive/YYYY-MM/<change>/.status.json` 定位。
14
+ 4. 报告 active 数量、各 change 的 `current_work`、去重后的 `works_run`、change 业务状态、最近更新时间和停滞 change(`.status.json` 超过 14 天未更新)。SpecDev 额外报告调查 claims triage `external_action`;Learning 额外报告 domain/topic、即时/保持测验、`next_review_at`、阻塞性误解和 `ready_to_archive`,不把 `awaiting_retention` 误报为可归档。
15
+ 5. 报告 archived 数量和名称;Learning 同时读取 `context/REVIEW.md` 汇总已到期、即将到期和 `needs_refresh` 知识。预期归档目录或归档 `.status.json` 缺失、active/archived 重叠、重复名称、未知 schema、断开的 review 知识链接和 malformed 目录均列为异常,不自动修复。
16
16
  6. 报告没有 workflow 资产的孤立状态根,以及缺少状态根的已安装 workflow;不自动修复。
17
17
  7. 用户要求持久化时写入 `<Path>{roots.state}/commands/status/{date}-workspace-{topic}[-NN].md</Path>`,并在报告中列出本次扫描的 workflow 选择。
@@ -5,7 +5,8 @@ name: Archive and Consolidate
5
5
  description: >
6
6
  对 workflow 下已完成 change 执行归档移动,从归档 change 中提取知识并合并到 workflow
7
7
  INDEX.md 声明的 state 知识 store(adr/、context/ 等),
8
- 然后审计并清理过时/重复知识。默认 dry-run 返回可确认计划,所有破坏性动作需用户显式确认后执行。
8
+ 然后审计并清理过时/重复知识;也支持由调用方拥有知识策略的 mechanical-only 模式。
9
+ 默认 dry-run 返回可确认计划,所有破坏性动作需用户显式确认后执行。
9
10
  触发场景:workflow 中存在 change_status: completed 的 change 需要归档收尾、知识沉淀、清理过时内容时。
10
11
  ---
11
12
 
@@ -26,8 +27,11 @@ description: >
26
27
  - 目标 workflow `INDEX.md` 中的运行时根声明和持久化约定表。
27
28
  - 模式:`dry-run`(默认)| `confirmed`。
28
29
  - 范围:`archive-single`(单个 change)| `archive-batch`(全部已完成 change)。
30
+ - 知识策略:`generic`(默认)| `mechanical-only`(调用方拥有知识策略,本 Skill 只处理移动与状态)。
29
31
  - 可选指定 change 名称(`archive-single` 模式)。
30
32
 
33
+ `mechanical-only` 必须由调用方提供已经确认的知识处理结果或明确说明无知识写入。本 Skill 不读取、判断、创建、合并、改写或清理知识 store;它仍执行全部路径包含、目标冲突、状态一致性、dry-run/confirmed 和重读验证门。
34
+
31
35
  ## 流程
32
36
 
33
37
  ### Step 0:路径解析(内建,不依赖外部 skill)
@@ -48,7 +52,7 @@ description: >
48
52
  7. 对每个已解析路径执行真实路径包含检查;符号链接逃逸或不存在的静态引用阻塞。
49
53
  8. 读取 `status.json`;扫描 changes 时校验 change 名称格式 `^\d{4}-\d{2}-\d{2}-[a-z0-9]+(-[a-z0-9]+)*$`,无日期前缀的历史 change 标注遗留但不阻塞。
50
54
 
51
- ### Step 1:扫描知识 stores
55
+ ### Step 1:扫描知识 stores(仅 `generic`)
52
56
 
53
57
  1. 从 `INDEX.md` 持久化约定表中提取所有知识型 store(名称含"永久"或在 `adr/`、`context/` 等公认目录下)。
54
58
  2. 验证 store 路径在 state 根下真实存在。若不存在:
@@ -76,7 +80,7 @@ description: >
76
80
  3. **批量原子性**:所有预检通过 → ready;任一失败 → 整批 blocked,报告具体阻塞原因。
77
81
  4. 生成计划表格(使用 `assets/archive-plan-template.md` 格式)。
78
82
 
79
- ### Step 4:生成知识合并计划
83
+ ### Step 4:生成知识合并计划(仅 `generic`)
80
84
 
81
85
  读取 `references/consolidation-rules.md` 和 `references/knowledge-graduation.md`,执行:
82
86
 
@@ -91,7 +95,7 @@ description: >
91
95
  4. 对冲突项标记 `needs-confirmation`,提供双方版本和建议。
92
96
  5. 生成合并计划表格(使用 `assets/consolidation-plan-template.md` 格式)。
93
97
 
94
- ### Step 5:生成清理候选清单
98
+ ### Step 5:生成清理候选清单(仅 `generic`)
95
99
 
96
100
  读取 `references/cleanup-rules.md`,执行:
97
101
 
@@ -111,6 +115,7 @@ description: >
111
115
  1. 组合三部分计划为一个完整报告:
112
116
  - **阶段一**:归档移动 + 知识合并写入
113
117
  - **阶段二**:清理候选
118
+ - `mechanical-only` 只展示归档移动和状态变化,并注明知识动作由调用方策略拥有
114
119
  2. 报告内容:每项含来源、目标、动作、理由、风险等级。
115
120
  3. 显式标注所有破坏性动作(移动、删除、改写)。
116
121
  4. 报告摘要:待归档 change 数、待合并知识项数、待清理候选数、需确认项数。
@@ -121,20 +126,20 @@ description: >
121
126
 
122
127
  **仅在 mode=`confirmed` 且用户显式批准后执行:**
123
128
 
124
- 1. **重新验证**:路径包含检查、预检重跑(确认计划生成后无新 change 插入)、store 存在性重验。
129
+ 1. **重新验证**:路径包含检查、预检重跑(确认计划生成后无新 change 插入);`generic` 额外重验 store 存在性。
125
130
  2. **执行顺序**:
126
- a. **归档移动**(原子批处理):创建月目录 → 移动 change 目录 → 更新归档 `.status.json` → 从全局 `status.json` 的 `active` 移除对应条目,将 change 名称去重追加到 `archived`
127
- b. **知识合并写入**:创建 lazy stores(如 `adr/`、`context/` 不存在则创建)→ 写入新 ADR → 合并术语到 `context/` → 标记 superseded ADR
128
- c. **清理**:删除已批准文件 → 合并已批准内容 → 改写已批准条目
131
+ a. **归档移动**(原子批处理):创建月目录 → 移动 change 目录 → 按调用方 workflow 的状态 schema 更新归档 `.status.json` → 从全局 `status.json` 的 `active` 移除对应条目,将 change 名称去重追加到 `archived`。不得写入调用方 schema 未声明的 SpecDev 专属字段
132
+ b. **知识合并写入**(仅 `generic`):创建 lazy stores(如 `adr/`、`context/` 不存在则创建)→ 写入新 ADR → 合并术语到 `context/` → 标记 superseded ADR
133
+ c. **清理**(仅 `generic`):删除已批准文件 → 合并已批准内容 → 改写已批准条目
129
134
  3. 任一步骤失败:报告已完成/失败清单,停止,不猜测成功。
130
135
 
131
136
  ### Step 8:重新验证所有状态变更
132
137
 
133
138
  1. 重读源路径:归档 change 必须不存在于 `changes_root/`。
134
- 2. 重读目标路径:归档 change 完整存在于 `archive_root/<YYYY-MM>/`,知识 store 内容正确。
139
+ 2. 重读目标路径:归档 change 完整存在于 `archive_root/<YYYY-MM>/`;`generic` 同时验证知识 store 内容正确。
135
140
  3. 重读 `status.json`:`active` 数组不包含已归档 change,`archived` 数组已追加其名称,二者没有重叠。
136
- 4. 重读归档 `.status.json`:`change_status: archived`、`archived: true`、`archive_path` 一致。
137
- 5. 对照知识 stores:新内容存在,无不期望的修改。
141
+ 4. 重读归档 `.status.json`:按调用方 workflow schema 验证归档终态和 archive path;只有 schema 声明 `archived` 布尔字段时才要求 `archived: true`。
142
+ 5. `generic` 对照知识 stores:新内容存在,无不期望的修改;`mechanical-only` 验证知识路径未被本 Skill 修改。
138
143
  6. 任一不一致 → `blocked`,报告具体差异;全部通过 → `verified`。
139
144
  7. 验证结果作为补遗追加到原 dry-run 报告。
140
145
 
@@ -144,6 +149,7 @@ description: >
144
149
  {
145
150
  mode: "dry-run" | "executed",
146
151
  scope: "archive-single" | "archive-batch",
152
+ knowledge_policy: "generic" | "mechanical-only",
147
153
  path_context: { project_root, workflow_root, state_root, changes_root, archive_root, commands_root },
148
154
  knowledge_stores: [{ name, path, exists }],
149
155
  archive_plan: [{ source, target, status: "ready" | "blocked" | "moved" | "failed", notes }],
@@ -156,10 +162,9 @@ description: >
156
162
 
157
163
  ## 完成标准
158
164
 
159
- - 所有 `INDEX.md` 持久化约定表中声明的知识 stores 已扫描。
165
+ - `generic` 已扫描所有 `INDEX.md` 声明的知识 stores;`mechanical-only` 未读取或修改知识内容。
160
166
  - 每个归档 change:源不存在、目标完整、status.json 已更新。
161
- - 每次合并写入:冲突已解决或标记需确认、目标 store 在 state 根内。
162
- - 每个清理动作:路径包含已验证、无跨 workflow 修改。
167
+ - `generic` 的每次合并写入已解决或标记冲突,目标 store 在 state 根内;每个清理动作完成路径包含验证且无跨 workflow 修改。
163
168
  - 未确认或 mode=`dry-run` 时无文件系统修改。
164
169
  - 执行后重读验证通过或不一致已记录。
165
170
  - 本 skill 未自行选择报告路径或自行持久化。
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: learning/archive-and-consolidate
3
+ type: workflow-entry
4
+ workflow: learning
5
+ name: 归档并合并已掌握知识
6
+ description: 校验即时与保持证据,先 dry-run 再经确认移动 completed change,并按领域合并当前 Markdown 知识与索引。
7
+ keywords: [归档, consolidation, promotion, context, index, mastered]
8
+ ---
9
+
10
+ # 归档并合并已掌握知识
11
+
12
+ > 激活本 Work 后,先读取 `<Path>{roots.workflows}/learning/README.md</Path>`,再执行本入口。
13
+
14
+ A 是唯一归档 owner,也是除 R 的受限复习状态更新外唯一永久知识 writer。解释完成、练习完成或即时通过都不能绕过本入口。
15
+
16
+ ## 流程
17
+
18
+ 1. 选择用户指定或唯一 completed change,读取两级状态、plan、sources、lessons、practice、全部 quiz 和 log。状态不是 completed、双门未 passed、关键目标/迁移未通过、存在 blocker/misconception 或 evidence 缺失时停止。
19
+ 2. 调用 `<Path>{roots.workflows}/learning/common/skills/knowledge-promotion/SKILL.md</Path>` 的 `plan-promotion`。逐 OBJ 映射到 `create | merge | supersede | archive-only`,生成 `promotion-plan.md` 和 `promotion-staging/` 候选 Markdown,并列出知识叶子、领域索引、总索引、REVIEW、移动和状态变化;此时不写 context。
20
+ 3. 运行 validator 的 `--stage pre-archive --change {change}`;展示完整 dry-run。没有用户对本次精确计划的明确确认时不修改 context、不移动 change。
21
+ 4. 确认后重新读取并验证 source/target 无 drift。先在 `promotion-rollback/` 保存所有目标的原内容或“不存在”记录,再按 promotion skill 的 `apply-promotion` 自叶到根原子写入 staging 候选;冲突、目标漂移或部分写入失败时按 rollback manifest 恢复并重读。
22
+ 5. 调用共享归档能力的 `mechanical-only` 模式移动 change 到 `<Path>{roots.state}/learning/archive/YYYY-MM/{change}/</Path>`,按 Learning schema 更新归档 `.status.json` 和全局 active/archived。共享能力不得自行判断知识毕业或写 SpecDev 专属字段。移动或状态更新失败时恢复 context 快照;只有移动和状态验证完成后事务才成功。
23
+ 6. 重读所有知识、索引、源/目标和两级状态;运行 `--stage complete --change {change}`。任何不一致标记 blocked,并报告已经完成的精确动作。
24
+
25
+ ## 完成标准
26
+
27
+ - 双重掌握门和证据均由实际工件证明;
28
+ - dry-run 与 confirmed 严格分离;
29
+ - 同一 Knowledge ID 只有一个当前文件,索引链接真实;
30
+ - change 源不存在、归档目标完整、active/archived 无重叠;
31
+ - archive 只读,context 只含当前已掌握内容;
32
+ - 没有未经批准的移动、覆盖、删除或外部副作用。
33
+
34
+ ## 子文件引用
35
+
36
+ - Promotion 模板:`<Path>{roots.workflows}/learning/A-archive-and-consolidate/promotion-plan-template.md</Path>`
37
+ - Learning promotion:`<Path>{roots.workflows}/learning/common/skills/knowledge-promotion/SKILL.md</Path>`
38
+ - 机械归档:`<Path>{roots.skills}/archive-and-consolidate/SKILL.md</Path>`
@@ -0,0 +1,23 @@
1
+ # Promotion Plan
2
+
3
+ ## Mastery Gate
4
+
5
+ | 检查 | 证据 | 结论 |
6
+ | --- | --- | --- |
7
+ | 即时测验 | `<证据路径>` | `<passed/blocked>` |
8
+ | 保持测验 | `<证据路径>` | `<passed/blocked>` |
9
+ | 关键目标 | `<result sections>` | `<passed/blocked>` |
10
+ | 迁移与误区 | `<result sections>` | `<passed/blocked>` |
11
+
12
+ ## 知识动作
13
+
14
+ | Knowledge ID | 来源 OBJ | 目标文件 | 动作 | 当前冲突 | 摘要 |
15
+ | --- | --- | --- | --- | --- | --- |
16
+
17
+ ## 索引动作
18
+
19
+ ## 归档移动
20
+
21
+ ## 风险与回滚证据
22
+
23
+ ## 用户确认
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: learning/assess-and-plan
3
+ type: workflow-entry
4
+ workflow: learning
5
+ name: 评估背景并制定学习计划
6
+ description: 从学习请求和已有 Markdown 知识中建立未教学基线,锁定目标、前置知识、来源和掌握证据。
7
+ keywords: [评估, baseline, 学习计划, objectives, 背景知识]
8
+ ---
9
+
10
+ # 评估背景并制定学习计划
11
+
12
+ > 激活本 Work 后,先读取 `<Path>{roots.workflows}/learning/README.md</Path>`,再执行本入口。
13
+
14
+ 本 Work 拥有 intake、baseline、learning plan 和初始 sources。它不开始正式教学,也不根据用户自信度直接宣称掌握。
15
+
16
+ ## 流程
17
+
18
+ 1. 确认 I 已完成。解析主题、领域 id 和 `project | product | subject | language | skill` 类型;缺少真正影响目标的选择时一次只问一个问题。
19
+ 2. 选择或创建 change。新建时使用 `<Path>{roots.workflows}/learning/A-assess-and-plan/change-status-template.json</Path>`,原子登记两级状态并设置 `current_work=learning/assess-and-plan`。
20
+ 3. 写 `intake.md`,记录学习对象、期望能做什么、范围外内容、可用时间、来源范围和安全限制。
21
+ 4. 按 `<Path>{roots.workflows}/learning/common/rules/knowledge-organization.md</Path>` 读取 context 总目录、目标领域 INDEX 和精确相关知识;不要遍历无关领域。索引失效时用 `rg` 定位并在计划中记录异常。
22
+ 5. 在任何 lesson 前进行短基线:让学习者回忆、解释或完成一个小任务;原样保存回答到 `baseline.md`。不能仅用“是否听说过”判断水平。
23
+ 6. 从模板写 `learning-plan.md`:明确记录“5 岁的小孩”“大一新生”等教学表达基线;目标使用稳定 `OBJ-NN`,标记关键目标、前置知识、证据类型、深度 `quick | standard | deep`、课程顺序和双重掌握门。目标实质变化必须保留 revision 记录。
24
+ 7. 写 `sources.md`,区分项目事实、权威外部来源、类比和未知。外部 URL 在使用时验证;无法验证的结论不进入关键目标答案。
25
+ 8. 运行 Learning validator。成功后把 phase 设置为 `assessment`,完成本 Work,并路由 E-eli5;失败时保留 blocker 和当前 Work。
26
+
27
+ ## 完成标准
28
+
29
+ - baseline 先于 lesson,且包含学习者原始证据;
30
+ - 教学表达基线使用直接标签,不使用含糊的“初学者”替代;
31
+ - 每个目标有关键性、证据和完成判断;
32
+ - 已有知识来自精确 Markdown 文件,不来自索引摘要推测;
33
+ - rubric 没有因基线表现而降低目标;
34
+ - 所有输入、状态和下一路由可恢复。
35
+
36
+ ## 子文件引用
37
+
38
+ - Change seed:`<Path>{roots.workflows}/learning/A-assess-and-plan/change-status-template.json</Path>`
39
+ - 计划模板:`<Path>{roots.workflows}/learning/A-assess-and-plan/learning-plan-template.md</Path>`
@@ -0,0 +1,28 @@
1
+ {
2
+ "schema_version": 1,
3
+ "artifact": "learning-change-status",
4
+ "change": "{change}",
5
+ "domain": "{domain}",
6
+ "domain_type": "{domain_type}",
7
+ "topic": "{topic}",
8
+ "change_status": "active",
9
+ "phase": "intake",
10
+ "current_work": "learning/assess-and-plan",
11
+ "works_run": [],
12
+ "created_at": "{timestamp}",
13
+ "updated_at": "{timestamp}",
14
+ "completed_at": null,
15
+ "archived_at": null,
16
+ "archive_path": null,
17
+ "mastery": {
18
+ "immediate": "not_attempted",
19
+ "retention": "not_attempted",
20
+ "score": null,
21
+ "critical_objectives_passed": false,
22
+ "transfer_passed": false,
23
+ "blocking_misconceptions": [],
24
+ "evidence": [],
25
+ "next_review_at": null
26
+ },
27
+ "blockers": []
28
+ }
@@ -0,0 +1,28 @@
1
+ # 学习计划:<主题>
2
+
3
+ ## 教学表达基线
4
+
5
+ `<5 岁的小孩 / 大一新生 / 用户明确指定的其他基线>`
6
+
7
+ ## 目标合同
8
+
9
+ | ID | 目标 | 关键 | 已有基础 | 完成证据 |
10
+ | --- | --- | --- | --- | --- |
11
+ | OBJ-01 | `<可观察能力>` | 是 | `<baseline/context 证据>` | `<回忆/解释/应用/产出>` |
12
+
13
+ ## 前置知识与缺口
14
+
15
+ ## 来源范围
16
+
17
+ ## 课程与练习顺序
18
+
19
+ ## 测验合同
20
+
21
+ - 即时和保持测验均需总分至少 80%。
22
+ - 所有关键目标和至少一道新情境迁移题必须通过。
23
+ - 阻塞性误解或 `needs_review` 会阻止归档。
24
+
25
+ ## Revision 记录
26
+
27
+ | 时间 | 变化 | 原因 | 是否需要重新测验 |
28
+ | --- | --- | --- | --- |
@@ -0,0 +1,37 @@
1
+ ---
2
+ id: learning/eli5
3
+ type: workflow-entry
4
+ workflow: learning
5
+ name: 通俗图解教学
6
+ description: 根据已验证背景、明确教学表达基线和锁定目标,用 ASCII 图、短句、类比边界与递减脚手架形成可恢复课程。
7
+ keywords: [eli5, 通俗教学, ASCII, lesson, 图解]
8
+ ---
9
+
10
+ # 通俗图解教学
11
+
12
+ > 激活本 Work 后,先读取 `<Path>{roots.workflows}/learning/README.md</Path>`,再执行本入口。
13
+
14
+ 本 Work 负责把锁定目标讲成 Learning change 内可练习、可恢复的课程。它只教学,不评分、不宣称 mastered、不修改永久知识。
15
+
16
+ ## 流程
17
+
18
+ 1. 恢复唯一 change;若缺少 `learning-plan.md` 或 baseline,路由 A-assess,不自行补造。设置 `current_work=learning/eli5`。
19
+ 2. 读取目标 OBJ、sources、baseline、明确写出的教学表达基线,以及 context 索引精确指向的已掌握知识。教学表达基线必须使用“5 岁的小孩”“大一新生”等直接标签,不得改写成含糊的“初学者”;只把经证据确认的概念作为桥梁。
20
+ 3. 按 `<Path>{roots.workflows}/learning/common/rules/teaching-policy.md</Path>` 和 lesson 模板选择最小下一课。编号从 `lessons/` 现有最大 `NN-` 加一,不覆盖旧课。
21
+ 4. 先给纯文本 ASCII 全图,再按箭头解释。说明它是什么、为什么需要、如何运作;术语先日常说法后专业名称,类比写清失效边界。不得生成 Mermaid、HTML、SVG 或依赖专用渲染器的图。
22
+ 5. 使用“示范一个、共同完成一个、留一个独立练习”的脚手架;答案留给 P,不在 lesson 中泄露独立练习完整解答。
23
+ 6. 更新 `learning-log.md`,记录覆盖的 OBJ、使用的已掌握背景、仍存在的困惑和下一练习,不把对话流水账写入 context。
24
+ 7. validator 通过后设置 phase=`teaching`,去重完成 Work,路由 P-practice。事实或来源冲突时阻塞并返回 A-assess。
25
+
26
+ ## 完成标准
27
+
28
+ - 新 lesson 对应明确 OBJ,旧课程未覆盖;
29
+ - 至少一个有方向的 ASCII 图,且纯 Markdown;
30
+ - 教学表达基线使用“5 岁的小孩”“大一新生”等明确标签,并落实到句子、术语和示例难度;
31
+ - 教学难度利用真实背景,但表达保持通俗;
32
+ - 课程包含类比边界和独立练习,不包含 mastered 声明;
33
+ - 状态、日志和下一路由一致。
34
+
35
+ ## 子文件引用
36
+
37
+ - Lesson 模板:`<Path>{roots.workflows}/learning/E-eli5/lesson-template.md</Path>`
@@ -0,0 +1,31 @@
1
+ # Lesson NN:<主题>
2
+
3
+ ## 本课目标
4
+
5
+ `<OBJ-NN>`
6
+
7
+ ## 教学表达基线
8
+
9
+ `<5 岁的小孩 / 大一新生 / 用户明确指定的其他基线>`
10
+
11
+ ## 先看全图
12
+
13
+ ```text
14
+ +--------+ +--------+ +--------+
15
+ | 起点 | --> | 过程 | --> | 结果 |
16
+ +--------+ +--------+ +--------+
17
+ ```
18
+
19
+ ## 一步一步看
20
+
21
+ ## 用已经会的知识搭桥
22
+
23
+ ## 术语小词典
24
+
25
+ ## 类比在哪里失效
26
+
27
+ ## 示范一个
28
+
29
+ ## 一起完成一个
30
+
31
+ ## 轮到你独立完成
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: learning/init-setup
3
+ type: workflow-entry
4
+ workflow: learning
5
+ name: 初始化学习系统
6
+ description: 初始化学习者教学偏好、纯 Markdown 知识目录和可验证的 Learning 状态,不写入任何伪造知识。
7
+ keywords: [初始化, learner-profile, context-index, learning]
8
+ ---
9
+
10
+ # 初始化学习系统
11
+
12
+ > 激活本 Work 后,先读取 `<Path>{roots.workflows}/learning/README.md</Path>`,再执行本入口。
13
+
14
+ 本 Work 只建立恢复所需骨架。它不评估能力、不创建已掌握知识,也不把用户年龄写成领域水平。
15
+
16
+ ## 流程
17
+
18
+ 1. 读取 `<Path>{roots.state}/learning/status.json</Path>`;不存在时从 workflow seed 原子创建。存在时按 schema v1 验证,不覆盖或修复未知结构。
19
+ 2. 读取 `<Path>{roots.workflows}/learning/I-init-setup/learner-profile-template.md</Path>`。`learner-profile.md` 不存在时,只询问无法发现的教学语言、图解偏好、单次节奏和复习时间偏好,然后创建;存在时保留未要求修改的内容。
20
+ 3. 创建不存在的 `<Path>{roots.state}/learning/changes/</Path>`、`<Path>{roots.state}/learning/archive/</Path>` 和 `<Path>{roots.state}/learning/context/domains/</Path>`。
21
+ 4. 从对应模板创建缺失的 `context/INDEX.md` 与 `context/REVIEW.md`。索引只包含标题和表头,不写示例知识行。
22
+ 5. 运行 `<Path>{roots.workflows}/learning/common/tools/validate-learning.mjs</Path>` 的 state 校验;重读所有新建文件。
23
+ 6. 初始化不创建 change,也不写 `works_run`。返回 A-assess-and-plan 作为正常下一路由。
24
+
25
+ ## 完成标准
26
+
27
+ - 全局状态是合法 schema v1,既有状态未丢失;
28
+ - profile 只记录教学和复习偏好,不声明无证据能力;
29
+ - context 目录是空的可导航 Markdown 图书;
30
+ - 没有新增 mastered 条目、active change 或外部副作用。
31
+
32
+ ## 子文件引用
33
+
34
+ - Profile 模板:`<Path>{roots.workflows}/learning/I-init-setup/learner-profile-template.md</Path>`
35
+ - 总目录模板:`<Path>{roots.workflows}/learning/I-init-setup/context-index-template.md</Path>`
36
+ - 复习目录模板:`<Path>{roots.workflows}/learning/I-init-setup/review-index-template.md</Path>`
@@ -0,0 +1,6 @@
1
+ # 已掌握知识总目录
2
+
3
+ > 先从本表选择领域,再读取该领域的 `INDEX.md`。本文件不保存课程正文。
4
+
5
+ | 领域 | 类型 | 状态 | 入口 | 摘要 | 最近验证 |
6
+ | --- | --- | --- | --- | --- | --- |
@@ -0,0 +1,17 @@
1
+ # 学习者偏好
2
+
3
+ > 本文件只记录教学交互偏好。领域能力以 context 中的掌握证据为准。
4
+
5
+ | 字段 | 值 |
6
+ | --- | --- |
7
+ | 交互语言 | `<待确认>` |
8
+ | 教学表达基线 | 5 岁的小孩 |
9
+ | 教学表达 | 通俗短句;先图后文;术语先解释后命名 |
10
+ | 图解偏好 | 仅纯文本 ASCII |
11
+ | 单次节奏 | `<待确认>` |
12
+ | 首次保持测验间隔 | 至少 24 小时 |
13
+ | 周期复习间隔 | 7、30、90 天 |
14
+
15
+ ## 无障碍与限制
16
+
17
+ `<没有已确认内容时留空>`
@@ -0,0 +1,4 @@
1
+ # 复习目录
2
+
3
+ | 到期日期 | Knowledge ID | 状态 | 知识文件 | 最近证据 | 下一动作 |
4
+ | --- | --- | --- | --- | --- | --- |
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: learning
3
+ type: workflow
4
+ workflow: learning
5
+ name: Learning Workflow
6
+ description: 以可验证目标、通俗教学、主动练习和延迟测验,将项目、产品、学科、语言或技能学习沉淀为可检索的个人 Markdown 知识。
7
+ keywords: [learning, 学习, 教学, 测验, 复习, 知识, 项目, 产品, 英语, eli5]
8
+ ---
9
+
10
+ # Learning Index
11
+
12
+ 本索引用于发现 Learning,并让未激活状态机的会话按图书目录方式读取已经掌握的知识。Learning 不使用 RAG、向量数据库、Embedding、语义分块或重排器。
13
+
14
+ ## 永久知识
15
+
16
+ 只读取当前请求需要且实际存在的索引或知识文件;路径不存在时静默跳过。被动读取不得初始化状态、创建 change 或修改复习状态:
17
+
18
+ - 总目录:`<Path>{roots.state}/learning/context/INDEX.md</Path>`
19
+ - 复习目录:`<Path>{roots.state}/learning/context/REVIEW.md</Path>`
20
+ - 领域知识:`<Path>{roots.state}/learning/context/domains/</Path>`
21
+
22
+ 检索顺序固定为总目录、领域 `INDEX.md`、精确知识文件。索引缺失或链接失效时可以用 `rg` 在 Learning state 根内定位候选,但搜索结果不是知识权威,必须回到真实 Markdown 文件核对。
23
+
24
+ ## Work 激活
25
+
26
+ 用户明确激活 Learning 或其中某个 Work 后,读取 `<Path>{roots.workflows}/learning/README.md</Path>`,取得 Work 条目、启动、恢复、状态、所有权、掌握门和副作用合同。仅发现本索引或读取永久知识不加载该合同。
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: learning/practice
3
+ type: workflow-entry
4
+ workflow: learning
5
+ name: 主动练习与自我解释
6
+ description: 通过主动回忆、变式练习、自我解释和递减提示生成独立能力证据与最小差距清单。
7
+ keywords: [练习, retrieval-practice, self-explanation, scaffold, feedback]
8
+ ---
9
+
10
+ # 主动练习与自我解释
11
+
12
+ > 激活本 Work 后,先读取 `<Path>{roots.workflows}/learning/README.md</Path>`,再执行本入口。
13
+
14
+ P 拥有练习作答和形成性反馈,不拥有正式通过结论。练习反馈帮助学习,但不能替代 Q/R 的独立测验。
15
+
16
+ ## 流程
17
+
18
+ 1. 恢复 change,读取 plan、相关 lesson 和历史 practice;缺失课程时返回 E。设置 `current_work=learning/practice`。
19
+ 2. 从未充分练习的 OBJ 生成一组短任务,混合回忆、解释、应用和相邻概念辨析;不能只让用户选择“看懂了”。
20
+ 3. 在 `<Path>{roots.state}/learning/changes/{change}/practice/attempt-NN.md</Path>` 先写任务,再原样追加学习者回答。未回答前不写完整解法。
21
+ 4. 按提示层级处理困难:方向提示、关键关系提示、部分步骤、完整示范;记录实际使用层级。每次只给能继续行动的最小提示。
22
+ 5. 给即时反馈:指出正确因果、具体缺口和下一变式;要求学习者用自己的话解释修正。把可重复错误写入 `learning-log.md`。
23
+ 6. 当每个关键 OBJ 至少有一次无完整答案提示的独立练习证据时,validator 通过并路由 Q。否则继续 P 或针对差距返回 E。
24
+
25
+ ## 完成标准
26
+
27
+ - 原始作答、提示层级和反馈可区分;
28
+ - 练习至少包含回忆、自我解释和变式应用;
29
+ - 没有把看过答案当作独立完成;
30
+ - Q 的进入条件有逐 OBJ 证据。
31
+
32
+ ## 子文件引用
33
+
34
+ - Practice 模板:`<Path>{roots.workflows}/learning/P-practice/practice-template.md</Path>`
@@ -0,0 +1,16 @@
1
+ # Practice Attempt NN
2
+
3
+ ## 覆盖目标
4
+
5
+ ## 任务
6
+
7
+ ## 学习者原始回答
8
+
9
+ ## 使用的提示
10
+
11
+ | 任务 | 层级 | 内容 |
12
+ | --- | --- | --- |
13
+
14
+ ## 形成性反馈
15
+
16
+ ## 下一步
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: learning/quiz
3
+ type: workflow-entry
4
+ workflow: learning
5
+ name: 即时掌握测验
6
+ description: 在不泄露答案的前提下对锁定目标执行即时回忆、解释、迁移和误区测验,并产生可审计评分。
7
+ keywords: [测验, quiz, mastery, rubric, 即时评估]
8
+ ---
9
+
10
+ # 即时掌握测验
11
+
12
+ > 激活本 Work 后,先读取 `<Path>{roots.workflows}/learning/README.md</Path>`,再执行本入口。
13
+
14
+ Q 只拥有即时测验。通过表示当前会做,不表示已经长期保持,因此不能完成或归档 change。
15
+
16
+ ## 流程
17
+
18
+ 1. 恢复 change,读取锁定 plan 和独立 practice 证据;证据不足返回 P。设置 phase=`immediate_quiz` 和 `current_work=learning/quiz`。
19
+ 2. 按 `<Path>{roots.workflows}/learning/common/rules/assessment-policy.md</Path>` 创建下一个 `quiz/immediate-NN-questions.md`。覆盖全部关键 OBJ、主动回忆、因果/结构解释、新情境迁移和误区辨析。
20
+ 3. 停止并等待学习者作答。把原文写入 `immediate-NN-response.md`;在该文件存在前不得创建 result 或展示答案。
21
+ 4. 使用教学前锁定的 rubric 和验证来源评分,写 `immediate-NN-result.md`。逐 OBJ 引用 response 证据,标记 score、critical、transfer、misconceptions 和 confidence。
22
+ 5. 未达到 mastery policy 时设置 immediate=`failed | needs_review`,保留 active,写最小补救范围并路由 E/P。不得降低目标后重用旧 result。
23
+ 6. 通过时设置 immediate=`passed`、retention=`not_attempted`、change_status=`awaiting_retention`,安排不少于 24 小时的 `next_review_at`;清空 current work 并路由 R。
24
+
25
+ ## 完成标准
26
+
27
+ - question、response、result 分离且编号一致;
28
+ - result 晚于原始 response,评分覆盖每个关键 OBJ;
29
+ - 通过后仍不是 completed,context 和 archive 未修改;
30
+ - 失败具有精确补救路由,旧 attempt 保留。
31
+
32
+ ## 子文件引用
33
+
34
+ - 测验工件模板:`<Path>{roots.workflows}/learning/Q-quiz/quiz-artifact-template.md</Path>`
@@ -0,0 +1,16 @@
1
+ # <Immediate|Retention> Attempt NN <Questions|Response|Result>
2
+
3
+ ## 覆盖目标
4
+
5
+ ## 题目或原始回答
6
+
7
+ ## 评分摘要(仅 Result)
8
+
9
+ | OBJ | 分数 | 关键目标通过 | Response 证据 | 差距 | 置信度 |
10
+ | --- | ---: | --- | --- | --- | --- |
11
+
12
+ ## 迁移题结论(仅 Result)
13
+
14
+ ## 阻塞性误解(仅 Result)
15
+
16
+ ## Verdict(仅 Result)
@@ -0,0 +1,35 @@
1
+ ---
2
+ id: learning/review
3
+ type: workflow-entry
4
+ workflow: learning
5
+ name: 延迟保持与周期复习
6
+ description: 在真实时间间隔后验证回忆和迁移,决定新知识能否掌握或已归档知识是否需要刷新。
7
+ keywords: [复习, retention, spaced-review, transfer, review-due]
8
+ ---
9
+
10
+ # 延迟保持与周期复习
11
+
12
+ > 激活本 Work 后,先读取 `<Path>{roots.workflows}/learning/README.md</Path>`,再执行本入口。
13
+
14
+ R 有两个模式:`retention-gate` 处理 awaiting_retention change;`periodic-review` 从 REVIEW 选择已归档知识并创建新的 review change。时间未到时只报告日期,不伪造完成。
15
+
16
+ ## 流程
17
+
18
+ 1. 确定模式。多个到期项或 active change 时请求消歧;周期复习必须创建新 change,不能改写 archive。
19
+ 2. 读取 mastery policy、原 learning plan 或知识文件中的掌握目标与证据。保持测验不得简单复用即时题或刚看过的课程示例。
20
+ 3. 创建 `quiz/retention-NN-questions.md`,等待并保存原始 response,再按 assessment policy 写 result;顺序和评分合同与 Q 相同。
21
+ 4. 失败或 needs_review:保持 change active,写补救范围并路由 E/P。周期复习失败时调用 knowledge-promotion 的 `mark-review-state`,经用户确认把相应知识标记 `needs_refresh` 并更新 REVIEW;archive 保持不变。
22
+ 5. 首次保持门通过:设置 retention=`passed`、phase=`ready_to_archive`、change_status=`completed` 和 `completed_at`;记录即时与保持 result 路径,路由 A-archive。
23
+ 6. 周期复习通过:result 成为新证据;调用 `mark-review-state` 更新最近验证和下一复习日期。完成 review change 后仍通过 A-archive 归档本次复习历史。
24
+
25
+ ## 完成标准
26
+
27
+ - 保持证据发生在真实间隔后,并含新的迁移情境;
28
+ - 双门未通过时不会设置 completed;
29
+ - 失败只改变当前知识状态,不删除历史证据;
30
+ - 所有 context 改写有明确确认、精确路径和重读验证。
31
+
32
+ ## 子文件引用
33
+
34
+ - 复习模板:`<Path>{roots.workflows}/learning/R-review/review-template.md</Path>`
35
+ - 知识更新过程:`<Path>{roots.workflows}/learning/common/skills/knowledge-promotion/SKILL.md</Path>`