@namewta/speculo 0.1.21 → 0.2.0
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.
- package/README.md +68 -78
- package/dist/src/cli.js +57 -34
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +1 -3
- package/dist/src/index.js +128 -168
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrate.d.ts +38 -0
- package/dist/src/migrate.js +646 -0
- package/dist/src/migrate.js.map +1 -0
- package/dist/src/workflows.d.ts +7 -37
- package/dist/src/workflows.js +49 -123
- package/dist/src/workflows.js.map +1 -1
- package/package.json +6 -4
- package/template/.speculo/README.md +20 -0
- package/template/.speculo/workspace.json +12 -0
- package/template/commands/docs-sync.md +28 -0
- package/template/commands/finalize.md +37 -0
- package/template/commands/knowledge-prune.md +20 -0
- package/template/commands/retro.md +15 -8
- package/template/commands/status.md +8 -51
- package/template/skills/agents-md-builder/SKILL.md +14 -101
- package/template/skills/change-lifecycle/SKILL.md +25 -0
- package/template/{workflows/dev/_templates → skills/change-lifecycle/assets}/completion-summary-template.md +2 -2
- package/template/{workflows/dev/_templates → skills/change-lifecycle/assets}/completion-verification-template.md +1 -1
- package/template/skills/change-lifecycle/references/completion-gate.md +19 -0
- package/template/skills/change-lifecycle/references/finalize-archive.md +32 -0
- package/template/skills/docs-sync/SKILL.md +22 -0
- package/template/skills/docs-sync/assets/report-template.md +45 -0
- package/template/skills/docs-sync/assets/state-template.json +20 -0
- package/template/skills/docs-sync/assets/workflow-scope-template.json +9 -0
- package/template/skills/docs-sync/references/agents-contract.md +43 -0
- package/template/skills/docs-sync/references/changelog-contract.md +39 -0
- package/template/skills/docs-sync/references/document-lifecycle-contract.md +38 -0
- package/template/skills/docs-sync/references/git-state-contract.md +67 -0
- package/template/skills/docs-sync/references/readme-contract.md +44 -0
- package/template/skills/docs-sync/references/workflow-scope-contract.md +50 -0
- package/template/skills/github-npm-ops/SKILL.md +14 -39
- package/template/skills/github-npm-ops/references/failure-recovery.md +1 -1
- package/template/skills/github-npm-ops/references/preflight-checklist.md +1 -1
- package/template/skills/github-npm-ops/references/release-notes-injection.md +1 -1
- package/template/skills/github-npm-ops/references/release-pipeline.md +13 -13
- package/template/skills/github-npm-ops/references/version-bump-flow.md +3 -3
- package/template/skills/knowledge-prune/SKILL.md +29 -0
- package/template/skills/knowledge-prune/references/audit-rules.md +24 -0
- package/template/skills/runtime-context/SKILL.md +43 -0
- package/template/skills/runtime-context/references/path-resolution.md +32 -0
- package/template/skills/speculo-retro/SKILL.md +13 -37
- package/template/skills/speculo-retro/references/friction-taxonomy.md +3 -3
- package/template/skills/speculo-retro/references/issue-drafting-sop.md +3 -3
- package/template/skills/worktree-isolation/SKILL.md +10 -46
- package/template/skills/worktree-isolation/references/audit-branch-tree.md +2 -2
- package/template/skills/worktree-isolation/references/create-worktree.md +6 -6
- package/template/skills/worktree-isolation/references/merge-and-cleanup.md +5 -5
- package/template/vendor/README.md +11 -10
- package/template/vendor/matt-pocock/README.md +41 -0
- package/template/vendor/matt-pocock/engineering/README.md +28 -0
- package/template/vendor/matt-pocock/engineering/ask-matt/SKILL.md +76 -0
- package/template/vendor/matt-pocock/engineering/code-review/SKILL.md +89 -0
- package/template/vendor/matt-pocock/engineering/codebase-design/DEEPENING.md +37 -0
- package/template/vendor/matt-pocock/engineering/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/template/vendor/matt-pocock/engineering/codebase-design/SKILL.md +114 -0
- package/template/vendor/matt-pocock/engineering/diagnosing-bugs/SKILL.md +134 -0
- package/template/vendor/matt-pocock/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/template/vendor/matt-pocock/engineering/domain-modeling/ADR-FORMAT.md +47 -0
- package/template/vendor/matt-pocock/engineering/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/template/vendor/matt-pocock/engineering/domain-modeling/SKILL.md +74 -0
- package/template/vendor/matt-pocock/engineering/grill-with-docs/SKILL.md +7 -0
- package/template/vendor/matt-pocock/engineering/implement/SKILL.md +15 -0
- package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/SKILL.md +66 -0
- package/template/vendor/matt-pocock/engineering/prototype/LOGIC.md +79 -0
- package/template/vendor/matt-pocock/engineering/prototype/SKILL.md +30 -0
- package/template/vendor/matt-pocock/engineering/prototype/UI.md +112 -0
- package/template/vendor/matt-pocock/engineering/research/SKILL.md +12 -0
- package/template/vendor/matt-pocock/engineering/resolving-merge-conflicts/SKILL.md +14 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/SKILL.md +127 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/domain.md +51 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/template/vendor/matt-pocock/engineering/tdd/SKILL.md +36 -0
- package/template/vendor/matt-pocock/engineering/tdd/mocking.md +59 -0
- package/template/vendor/matt-pocock/engineering/tdd/tests.md +77 -0
- package/template/vendor/matt-pocock/engineering/to-spec/SKILL.md +75 -0
- package/template/vendor/matt-pocock/engineering/to-tickets/SKILL.md +113 -0
- package/template/vendor/matt-pocock/engineering/triage/AGENT-BRIEF.md +204 -0
- package/template/vendor/matt-pocock/engineering/triage/OUT-OF-SCOPE.md +104 -0
- package/template/vendor/matt-pocock/engineering/triage/SKILL.md +112 -0
- package/template/vendor/matt-pocock/engineering/wayfinder/SKILL.md +127 -0
- package/template/vendor/matt-pocock/in-progress/README.md +10 -0
- package/template/vendor/matt-pocock/in-progress/claude-handoff/SKILL.md +18 -0
- package/template/vendor/matt-pocock/in-progress/loop-me/SKILL.md +32 -0
- package/template/vendor/matt-pocock/in-progress/wizard/SKILL.md +45 -0
- package/template/vendor/matt-pocock/in-progress/wizard/template.sh +211 -0
- package/template/vendor/matt-pocock/in-progress/writing-beats/SKILL.md +67 -0
- package/template/vendor/matt-pocock/in-progress/writing-fragments/SKILL.md +78 -0
- package/template/vendor/matt-pocock/in-progress/writing-shape/SKILL.md +79 -0
- package/template/vendor/matt-pocock/productivity/README.md +18 -0
- package/template/vendor/matt-pocock/productivity/grill-me/SKILL.md +7 -0
- package/template/vendor/matt-pocock/productivity/grilling/SKILL.md +12 -0
- package/template/vendor/matt-pocock/productivity/handoff/SKILL.md +16 -0
- package/template/vendor/matt-pocock/productivity/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/vendor/matt-pocock/productivity/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/vendor/matt-pocock/productivity/teach/MISSION-FORMAT.md +31 -0
- package/template/vendor/matt-pocock/productivity/teach/RESOURCES-FORMAT.md +32 -0
- package/template/vendor/matt-pocock/productivity/teach/SKILL.md +140 -0
- package/template/vendor/matt-pocock/productivity/writing-great-skills/GLOSSARY.md +201 -0
- package/template/vendor/matt-pocock/productivity/writing-great-skills/SKILL.md +83 -0
- package/template/workflows/matt-pocock/WORKFLOW.md +145 -0
- package/template/workflows/matt-pocock/_state/status.json +5 -0
- package/template/workflows/matt-pocock/routes/architecture.md +24 -0
- package/template/workflows/matt-pocock/routes/diagnose.md +22 -0
- package/template/workflows/matt-pocock/routes/experimental.md +18 -0
- package/template/workflows/matt-pocock/routes/idea-to-delivery.md +63 -0
- package/template/workflows/matt-pocock/routes/merge-conflicts.md +19 -0
- package/template/workflows/matt-pocock/routes/productivity.md +25 -0
- package/template/workflows/matt-pocock/routes/research-prototype.md +20 -0
- package/template/workflows/matt-pocock/routes/review.md +19 -0
- package/template/workflows/matt-pocock/routes/setup.md +42 -0
- package/template/workflows/matt-pocock/routes/triage.md +25 -0
- package/template/workflows/matt-pocock/routes/wayfinder.md +27 -0
- package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +74 -59
- package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +2 -2
- package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +5 -5
- package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +2 -2
- package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +4 -4
- package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +3 -3
- package/template/workflows/person/WORKFLOW.md +68 -0
- package/template/workflows/person/_state/.config/LESSONS.md +3 -0
- package/template/workflows/person/_state/.config/RULES.md +3 -0
- package/template/workflows/person/_state/changes/.gitkeep +1 -0
- package/template/workflows/person/_state/status.json +5 -0
- package/template/.speculo/.config/LESSONS.md +0 -9
- package/template/.speculo/.config/RULES.md +0 -11
- package/template/.speculo/AGENTS.md +0 -30
- package/template/.speculo/archive/AGENTS.md +0 -28
- package/template/.speculo/archive/dev/.gitkeep +0 -0
- package/template/.speculo/archive/person/.gitkeep +0 -0
- package/template/.speculo/dev/.gitkeep +0 -0
- package/template/.speculo/dev/docs-sync-state.json +0 -14
- package/template/.speculo/dev-status.json +0 -3
- package/template/.speculo/doc-status.json +0 -3
- package/template/.speculo/person/.gitkeep +0 -0
- package/template/.speculo/person-status.json +0 -1
- package/template/commands/archive.md +0 -68
- package/template/commands/caveman.md +0 -50
- package/template/commands/config-prune.md +0 -59
- package/template/commands/grill-me.md +0 -48
- package/template/commands/handoff.md +0 -59
- package/template/commands/scaffold-exercises.md +0 -56
- package/template/commands/write-a-skill.md +0 -52
- package/template/skills/caveman/SKILL.md +0 -38
- package/template/skills/caveman/references/compression-rules.md +0 -102
- package/template/skills/config-prune/SKILL.md +0 -44
- package/template/skills/config-prune/references/audit-rules.md +0 -38
- package/template/skills/grill-me/SKILL.md +0 -40
- package/template/skills/handoff/SKILL.md +0 -73
- package/template/skills/scaffold-exercises/SKILL.md +0 -41
- package/template/skills/scaffold-exercises/references/exercise-structure.md +0 -85
- package/template/skills/scaffold-exercises/references/lint-and-git.md +0 -54
- package/template/skills/speculo-write/SKILL.md +0 -56
- package/template/skills/speculo-write/references/asset-selection-sop.md +0 -67
- package/template/skills/speculo-write/references/authoring-quality-levers.md +0 -61
- package/template/skills/speculo-write/references/command-authoring-sop.md +0 -98
- package/template/skills/speculo-write/references/migration-sop.md +0 -101
- package/template/skills/speculo-write/references/persistence-contract-sop.md +0 -271
- package/template/skills/speculo-write/references/skill-authoring-sop.md +0 -212
- package/template/skills/speculo-write/references/validation-checklist.md +0 -85
- package/template/skills/speculo-write/references/workflow-authoring-sop.md +0 -165
- package/template/vendor/codebase-design/DEEPENING.md +0 -37
- package/template/vendor/codebase-design/DESIGN-IT-TWICE.md +0 -44
- package/template/vendor/codebase-design/SKILL.md +0 -114
- package/template/vendor/officecli/SKILL.md +0 -415
- package/template/vendor/resolving-merge-conflicts/SKILL.md +0 -14
- package/template/workflows/dev/01-grill-with-docs/01-grill-with-docs.md +0 -107
- package/template/workflows/dev/01-grill-with-docs/grill-context-scan.md +0 -30
- package/template/workflows/dev/01-grill-with-docs/grill-decision.md +0 -38
- package/template/workflows/dev/02-prd/02-prd.md +0 -70
- package/template/workflows/dev/02-prd/prd-synthesis.md +0 -30
- package/template/workflows/dev/02-prd/prd-zoom-out.md +0 -29
- package/template/workflows/dev/03-tdd/03-tdd.md +0 -55
- package/template/workflows/dev/03-tdd/agents/tdd-finish-agent.md +0 -34
- package/template/workflows/dev/03-tdd/agents/tdd-implement-agent.md +0 -34
- package/template/workflows/dev/03-tdd/agents/tdd-plan-agent.md +0 -34
- package/template/workflows/dev/03-tdd/mocking.md +0 -43
- package/template/workflows/dev/03-tdd/refactoring.md +0 -10
- package/template/workflows/dev/03-tdd/tdd-finish.md +0 -34
- package/template/workflows/dev/03-tdd/tdd-loop.md +0 -36
- package/template/workflows/dev/03-tdd/tdd-plan.md +0 -37
- package/template/workflows/dev/03-tdd/tests.md +0 -61
- package/template/workflows/dev/04-finalize/04-finalize.md +0 -57
- package/template/workflows/dev/04-finalize/agents/completion-gate-agent.md +0 -35
- package/template/workflows/dev/04-finalize/completion-gate.md +0 -41
- package/template/workflows/dev/04-finalize/finalize-archive.md +0 -55
- package/template/workflows/dev/A-improve-architecture/A-improve-architecture.md +0 -60
- package/template/workflows/dev/A-improve-architecture/HTML-REPORT.md +0 -123
- package/template/workflows/dev/A-improve-architecture/architecture-grill.md +0 -30
- package/template/workflows/dev/A-improve-architecture/architecture-review.md +0 -29
- package/template/workflows/dev/A-improve-architecture/architecture-scan.md +0 -37
- package/template/workflows/dev/AGENTS.md +0 -95
- package/template/workflows/dev/D-docs-sync/D-docs-sync.md +0 -140
- package/template/workflows/dev/D-docs-sync/agents/docs-diff-agent.md +0 -34
- package/template/workflows/dev/D-docs-sync/agents/docs-update-agent.md +0 -34
- package/template/workflows/dev/D-docs-sync/agents-contract.md +0 -95
- package/template/workflows/dev/D-docs-sync/changelog-contract.md +0 -155
- package/template/workflows/dev/D-docs-sync/config-contract.md +0 -75
- package/template/workflows/dev/D-docs-sync/docs-sync-diff.md +0 -86
- package/template/workflows/dev/D-docs-sync/docs-sync-finish.md +0 -37
- package/template/workflows/dev/D-docs-sync/docs-sync-state.md +0 -47
- package/template/workflows/dev/D-docs-sync/docs-sync-update.md +0 -44
- package/template/workflows/dev/D-docs-sync/knowledge-extract.md +0 -66
- package/template/workflows/dev/D-docs-sync/readme-contract.md +0 -124
- package/template/workflows/dev/D-docs-sync/state-json-schema.md +0 -172
- package/template/workflows/dev/H-diagnose/H-diagnose.md +0 -108
- package/template/workflows/dev/H-diagnose/agents/diagnose-agent.md +0 -33
- package/template/workflows/dev/H-diagnose/agents/fix-agent.md +0 -34
- package/template/workflows/dev/H-diagnose/diagnose-fix.md +0 -34
- package/template/workflows/dev/H-diagnose/diagnose-guide.md +0 -144
- package/template/workflows/dev/H-diagnose/diagnose-loop.md +0 -41
- package/template/workflows/dev/H-diagnose/scripts/hitl-loop.template.sh +0 -41
- package/template/workflows/dev/I-to-issues/I-to-issues.md +0 -79
- package/template/workflows/dev/I-to-issues/issues-slices.md +0 -211
- package/template/workflows/dev/M-domain-modeling/ADR-FORMAT.md +0 -74
- package/template/workflows/dev/M-domain-modeling/CONTEXT-FORMAT.md +0 -67
- package/template/workflows/dev/M-domain-modeling/M-domain-modeling.md +0 -102
- package/template/workflows/dev/R-review/R-review.md +0 -75
- package/template/workflows/dev/R-review/agents/engineering-review-agent.md +0 -33
- package/template/workflows/dev/R-review/agents/spec-review-agent.md +0 -34
- package/template/workflows/dev/R-review/agents/standards-review-agent.md +0 -34
- package/template/workflows/dev/R-review/code-quality-checklist.md +0 -118
- package/template/workflows/dev/R-review/removal-checklist.md +0 -53
- package/template/workflows/dev/R-review/review-axes.md +0 -61
- package/template/workflows/dev/R-review/review-setup.md +0 -111
- package/template/workflows/dev/R-review/review-verdict.md +0 -43
- package/template/workflows/dev/R-review/security-checklist.md +0 -126
- package/template/workflows/dev/R-review/solid-checklist.md +0 -73
- package/template/workflows/dev/_templates/diagnosis-template.md +0 -20
- package/template/workflows/dev/_templates/docs-sync-report-template.md +0 -45
- package/template/workflows/dev/_templates/docs-sync-state-template.json +0 -14
- package/template/workflows/dev/_templates/domain-model-log-template.md +0 -20
- package/template/workflows/dev/_templates/grill-context-map-template.md +0 -20
- package/template/workflows/dev/_templates/grill-decision-log-template.md +0 -20
- package/template/workflows/dev/_templates/issues-slices-template.md +0 -106
- package/template/workflows/dev/_templates/overview-template.md +0 -19
- package/template/workflows/dev/_templates/prd-template.md +0 -26
- package/template/workflows/dev/_templates/regression-template.md +0 -20
- package/template/workflows/dev/_templates/review-report-template.md +0 -30
- package/template/workflows/dev/_templates/review-sources-template.md +0 -33
- package/template/workflows/dev/_templates/review-verdict-template.md +0 -33
- package/template/workflows/dev/_templates/tdd-log-template.md +0 -23
- package/template/workflows/dev/_templates/tdd-plan-template.md +0 -35
- package/template/workflows/dev/_templates/tdd-verification-template.md +0 -26
- package/template/workflows/doc/AGENTS.md +0 -80
- package/template/workflows/doc/B-writing-beats/B-writing-beats.md +0 -79
- package/template/workflows/doc/B-writing-beats/writing-beats-append.md +0 -31
- package/template/workflows/doc/B-writing-beats/writing-beats-options.md +0 -29
- package/template/workflows/doc/E-edit-article/E-edit-article.md +0 -79
- package/template/workflows/doc/E-edit-article/edit-article-plan.md +0 -30
- package/template/workflows/doc/E-edit-article/edit-article-rewrite.md +0 -31
- package/template/workflows/doc/F-writing-fragments/F-writing-fragments.md +0 -80
- package/template/workflows/doc/F-writing-fragments/writing-fragments-interview.md +0 -32
- package/template/workflows/doc/F-writing-fragments/writing-fragments-log.md +0 -29
- package/template/workflows/doc/S-writing-shape/S-writing-shape.md +0 -81
- package/template/workflows/doc/S-writing-shape/writing-shape-block.md +0 -32
- package/template/workflows/doc/S-writing-shape/writing-shape-opening.md +0 -27
- package/template/workflows/doc/T-teach/T-teach.md +0 -64
- package/template/workflows/doc/T-teach/teach-lesson-wrap.md +0 -63
- package/template/workflows/doc/T-teach/teach-lesson.md +0 -53
- package/template/workflows/doc/T-teach/teach-mission.md +0 -33
- package/template/workflows/doc/T-teach/teach-resources.md +0 -36
- package/template/workflows/doc/_templates/edit-article-plan-template.md +0 -25
- package/template/workflows/doc/_templates/edit-article-template.md +0 -7
- package/template/workflows/doc/_templates/teach-glossary-template.md +0 -26
- package/template/workflows/doc/_templates/teach-learning-record-template.md +0 -38
- package/template/workflows/doc/_templates/teach-lesson-html-template.md +0 -24
- package/template/workflows/doc/_templates/teach-mission-template.md +0 -19
- package/template/workflows/doc/_templates/teach-resources-template.md +0 -18
- package/template/workflows/doc/_templates/writing-article-template.md +0 -7
- package/template/workflows/doc/_templates/writing-beat-options-template.md +0 -21
- package/template/workflows/doc/_templates/writing-fragments-template.md +0 -7
- package/template/workflows/doc/_templates/writing-interview-log-template.md +0 -21
- package/template/workflows/doc/_templates/writing-shape-log-template.md +0 -25
- package/template/workflows/person/AGENTS.md +0 -72
- /package/template/{.speculo/.config/adr → workflows/matt-pocock/_state/archive}/.gitkeep +0 -0
- /package/template/{.speculo/.config/context → workflows/matt-pocock/_state/changes}/.gitkeep +0 -0
- /package/template/{.speculo/archive/doc → workflows/person/_state/.config/context}/.gitkeep +0 -0
- /package/template/{.speculo/doc → workflows/person/_state/archive}/.gitkeep +0 -0
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
# 安全与可靠性清单
|
|
2
|
-
|
|
3
|
-
服务 `R-review.md` 的 **Engineering 维度**。审查 diff 是否引入安全漏洞或运行时风险时读取本文。每条命中都要同时说明**可利用性(exploitability)**与**影响(impact)**,并按下方"严重度提示"定级。
|
|
4
|
-
|
|
5
|
-
## 输入 / 输出安全
|
|
6
|
-
|
|
7
|
-
- **XSS**:不安全的 HTML 注入、`dangerouslySetInnerHTML`、未转义模板、`innerHTML` 赋值
|
|
8
|
-
- **注入**:通过字符串拼接或模板串构造的 SQL / NoSQL / 命令 / GraphQL 注入
|
|
9
|
-
- **SSRF**:用户可控 URL 在无 allowlist 校验下访问内部服务
|
|
10
|
-
- **路径穿越**:用户输入未经清洗进入文件路径(`../` 攻击)
|
|
11
|
-
- **原型污染**:JavaScript 中用用户输入做不安全的对象合并(`Object.assign`、带用户输入的展开)
|
|
12
|
-
|
|
13
|
-
## 认证 / 授权(AuthN/AuthZ)
|
|
14
|
-
|
|
15
|
-
- 读写操作缺少租户或归属(ownership)校验
|
|
16
|
-
- 新端点没有 auth guard 或 RBAC 约束
|
|
17
|
-
- 信任客户端传入的 role / flag / ID
|
|
18
|
-
- 越权访问(IDOR —— 不安全的直接对象引用)
|
|
19
|
-
- 会话固定或弱会话管理
|
|
20
|
-
|
|
21
|
-
## JWT 与令牌安全
|
|
22
|
-
|
|
23
|
-
- 算法混淆攻击(期望 `RS256` 却接受 `none` 或 `HS256`)
|
|
24
|
-
- 弱密钥或硬编码密钥
|
|
25
|
-
- 缺少 `exp` 过期或未校验
|
|
26
|
-
- 敏感数据放进 JWT payload(token 是 base64,不是加密)
|
|
27
|
-
- 不校验 `iss`(签发者)或 `aud`(受众)
|
|
28
|
-
|
|
29
|
-
## 密钥与 PII
|
|
30
|
-
|
|
31
|
-
- API key、token、凭据出现在代码 / 配置 / 日志
|
|
32
|
-
- 密钥进入 git 历史,或环境变量暴露给客户端
|
|
33
|
-
- 过度记录 PII 或敏感载荷
|
|
34
|
-
- 错误信息缺少数据脱敏
|
|
35
|
-
|
|
36
|
-
## 供应链与依赖
|
|
37
|
-
|
|
38
|
-
- 未锁版本的依赖,允许恶意更新
|
|
39
|
-
- 依赖混淆(私有包名冲突)
|
|
40
|
-
- 从不可信源或 CDN 引入且无完整性校验
|
|
41
|
-
- 含已知 CVE 的过期依赖
|
|
42
|
-
|
|
43
|
-
## CORS 与响应头
|
|
44
|
-
|
|
45
|
-
- 过宽的 CORS(带 credentials 时 `Access-Control-Allow-Origin: *`)
|
|
46
|
-
- 缺少安全响应头(CSP、X-Frame-Options、X-Content-Type-Options)
|
|
47
|
-
- 暴露内部头或堆栈信息
|
|
48
|
-
|
|
49
|
-
## 运行时风险
|
|
50
|
-
|
|
51
|
-
- 无界循环、递归调用或大块内存缓冲
|
|
52
|
-
- 外部调用缺少超时、重试或限流
|
|
53
|
-
- 请求路径上的阻塞操作(async 上下文中的同步 I/O)
|
|
54
|
-
- 资源耗尽(文件句柄、连接、内存)
|
|
55
|
-
- ReDoS(正则表达式拒绝服务)
|
|
56
|
-
|
|
57
|
-
## 密码学
|
|
58
|
-
|
|
59
|
-
- 弱算法(用于安全目的的 MD5、SHA1)
|
|
60
|
-
- 硬编码 IV 或 salt
|
|
61
|
-
- 只加密不认证(ECB 模式、无 HMAC)
|
|
62
|
-
- 密钥长度不足
|
|
63
|
-
|
|
64
|
-
## 竞态条件(Race Conditions)
|
|
65
|
-
|
|
66
|
-
竞态是引发间歇性故障和安全漏洞的隐蔽缺陷,重点关注:
|
|
67
|
-
|
|
68
|
-
### 共享状态访问
|
|
69
|
-
- 多线程 / 协程 / 异步任务无同步地访问共享变量
|
|
70
|
-
- 并发修改全局状态或单例
|
|
71
|
-
- 无正确加锁的惰性初始化(double-checked locking 问题)
|
|
72
|
-
- 在并发上下文使用非线程安全集合
|
|
73
|
-
|
|
74
|
-
### 先检查后行动(TOCTOU)
|
|
75
|
-
- `if (exists) then use` 无原子操作
|
|
76
|
-
- `if (authorized) then perform`,而授权可能变化
|
|
77
|
-
- 文件存在性检查后再做文件操作
|
|
78
|
-
- 余额检查后扣减(金融操作)
|
|
79
|
-
- 库存检查后下单
|
|
80
|
-
|
|
81
|
-
### 数据库并发
|
|
82
|
-
- 缺少乐观锁(`version` 列、`updated_at` 校验)
|
|
83
|
-
- 缺少悲观锁(`SELECT FOR UPDATE`)
|
|
84
|
-
- 无事务隔离的 read-modify-write
|
|
85
|
-
- 非原子的计数器自增(应用 `UPDATE SET count = count + 1`)
|
|
86
|
-
- 并发插入触发唯一约束冲突
|
|
87
|
-
|
|
88
|
-
### 分布式系统
|
|
89
|
-
- 共享资源缺少分布式锁
|
|
90
|
-
- 领导选举竞态
|
|
91
|
-
- 缓存失效竞态(写后读到脏数据)
|
|
92
|
-
- 缺少正确排序的事件顺序依赖
|
|
93
|
-
- 集群操作的脑裂
|
|
94
|
-
|
|
95
|
-
### 需要标记的危险模式
|
|
96
|
-
```
|
|
97
|
-
# 危险模式:
|
|
98
|
-
if not exists(key): # TOCTOU
|
|
99
|
-
create(key)
|
|
100
|
-
|
|
101
|
-
value = get(key) # read-modify-write
|
|
102
|
-
value += 1
|
|
103
|
-
set(key, value)
|
|
104
|
-
|
|
105
|
-
if user.balance >= amount: # 先检查后行动
|
|
106
|
-
user.balance -= amount
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### 追问
|
|
110
|
-
- "两个请求同时进入这段代码会怎样?"
|
|
111
|
-
- "这个操作是原子的,还是可被打断?"
|
|
112
|
-
- "这段代码访问了哪些共享状态?"
|
|
113
|
-
- "高并发下它的行为如何?"
|
|
114
|
-
|
|
115
|
-
## 数据完整性
|
|
116
|
-
|
|
117
|
-
- 缺少事务、部分写入或状态更新不一致
|
|
118
|
-
- 持久化前校验薄弱(类型强转问题)
|
|
119
|
-
- 可重试操作缺少幂等性
|
|
120
|
-
- 并发修改导致的丢失更新(lost update)
|
|
121
|
-
|
|
122
|
-
## 严重度提示
|
|
123
|
-
|
|
124
|
-
- 可被利用的安全漏洞、数据丢失风险、敏感信息泄露 → **P0**(阻断合并)
|
|
125
|
-
- 需特定条件触发但影响显著的安全 / 可靠性缺陷 → **P1**
|
|
126
|
-
- 纵深防御缺口、低影响硬化项 → **P2**
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# SOLID 与架构异味清单
|
|
2
|
-
|
|
3
|
-
服务 `R-review.md` 的 **Engineering 维度**。在审查 diff 的设计质量时读取本文,按 SOLID 与常见代码异味定位结构性问题,并对照下方"严重度提示"给出 P0–P3。
|
|
4
|
-
|
|
5
|
-
## SOLID 异味提示
|
|
6
|
-
|
|
7
|
-
### SRP(单一职责)
|
|
8
|
-
|
|
9
|
-
- 一个文件承担互不相关的关注点(如 HTTP + DB + 领域规则混在一起)
|
|
10
|
-
- 大类 / 大模块内聚低,存在多个变更原因
|
|
11
|
-
- 函数编排了大量互不相关的步骤
|
|
12
|
-
- 知道太多系统细节的 God Object
|
|
13
|
-
- **追问**:"这个模块只因为哪一个原因而改变?"
|
|
14
|
-
|
|
15
|
-
### OCP(开闭)
|
|
16
|
-
|
|
17
|
-
- 新增一种行为要修改多个 switch / if 分支
|
|
18
|
-
- 功能增长需要改核心逻辑,而不是扩展点
|
|
19
|
-
- 没有 plugin / strategy / hook 等变化点
|
|
20
|
-
- **追问**:"不动现有代码能加一个新变体吗?"
|
|
21
|
-
|
|
22
|
-
### LSP(里氏替换)
|
|
23
|
-
|
|
24
|
-
- 子类检查具体类型,或对基类方法抛异常
|
|
25
|
-
- 重写方法弱化了前置条件、强化了后置条件
|
|
26
|
-
- 子类忽略或空实现父类行为
|
|
27
|
-
- **追问**:"调用方无感知地替换任意子类能成立吗?"
|
|
28
|
-
|
|
29
|
-
### ISP(接口隔离)
|
|
30
|
-
|
|
31
|
-
- 接口方法很多,实现者大多用不到
|
|
32
|
-
- 调用方为很窄的需求依赖很宽的接口
|
|
33
|
-
- 接口方法出现空 / 桩实现
|
|
34
|
-
- **追问**:"每个实现者都用到了全部方法吗?"
|
|
35
|
-
|
|
36
|
-
### DIP(依赖倒置)
|
|
37
|
-
|
|
38
|
-
- 高层逻辑直接依赖具体 IO、存储或网络类型
|
|
39
|
-
- 硬编码实现,而不是抽象或注入
|
|
40
|
-
- import 链把业务逻辑耦合到基础设施
|
|
41
|
-
- **追问**:"不改业务逻辑能换掉实现吗?"
|
|
42
|
-
|
|
43
|
-
## 常见代码异味(SOLID 之外)
|
|
44
|
-
|
|
45
|
-
| 异味 | 信号 |
|
|
46
|
-
|------|------|
|
|
47
|
-
| **Long method** | 函数 > 30 行,多层嵌套 |
|
|
48
|
-
| **Feature envy** | 方法用别的类的数据多过用自己的 |
|
|
49
|
-
| **Data clumps** | 同一组参数反复一起传递 |
|
|
50
|
-
| **Primitive obsession** | 用 string / number 代替领域类型 |
|
|
51
|
-
| **Shotgun surgery** | 一处改动要散落地改多个文件 |
|
|
52
|
-
| **Divergent change** | 一个文件因多个无关原因反复改 |
|
|
53
|
-
| **Dead code** | 不可达或从不被调用的代码(详见 `removal-checklist.md`) |
|
|
54
|
-
| **Speculative generality** | 为假想的未来需求做的抽象 |
|
|
55
|
-
| **Magic numbers/strings** | 没有命名常量的硬编码值 |
|
|
56
|
-
|
|
57
|
-
## 重构启发式
|
|
58
|
-
|
|
59
|
-
1. **按职责拆,而不是按体积拆** —— 小文件也可能违反 SRP
|
|
60
|
-
2. **需要时才引入抽象** —— 等到第二个用例再抽
|
|
61
|
-
3. **重构保持增量** —— 先隔离行为再搬移
|
|
62
|
-
4. **先保行为** —— 重构前先有测试兜底
|
|
63
|
-
5. **按意图命名** —— 命名困难往往说明抽象有问题
|
|
64
|
-
6. **组合优于继承** —— 继承带来强耦合
|
|
65
|
-
7. **让非法状态不可表达** —— 用类型固化不变量
|
|
66
|
-
|
|
67
|
-
## 严重度提示
|
|
68
|
-
|
|
69
|
-
- 导致正确性问题或架构性返工的结构缺陷 → **P1**
|
|
70
|
-
- 明显但局部的 SOLID 违背、可维护性隐患 → **P2**
|
|
71
|
-
- 命名、轻微异味、可选改进 → **P3**
|
|
72
|
-
|
|
73
|
-
> 提出重构时,必须说明它**为什么**改善内聚 / 降低耦合,并给出最小、安全的拆分;非平凡重构给增量计划,不给大重写。
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../H-diagnose/H-diagnose.md`
|
|
2
|
-
> **产物文件名:** `diagnosis.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Diagnosis
|
|
6
|
-
|
|
7
|
-
## 用户症状
|
|
8
|
-
[TODO: 描述用户报告的 Bug、异常、失败测试或性能回退。]
|
|
9
|
-
|
|
10
|
-
## 反馈循环
|
|
11
|
-
[TODO: 描述已建立的反馈循环、运行方式、速度、稳定性和信号质量。]
|
|
12
|
-
|
|
13
|
-
## 复现结果
|
|
14
|
-
[TODO: 记录复现步骤、失败输出、频率和是否匹配用户症状。]
|
|
15
|
-
|
|
16
|
-
## 假设列表
|
|
17
|
-
[TODO: 列出 3-5 个排序假设,每个假设包含可证伪预测。]
|
|
18
|
-
|
|
19
|
-
## 插桩结果
|
|
20
|
-
[TODO: 记录每个探针对应的假设、观察结果和结论。]
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../D-docs-sync/D-docs-sync.md`
|
|
2
|
-
> **产物文件名:** `docs-sync-report.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Docs Sync Report
|
|
6
|
-
|
|
7
|
-
## Range
|
|
8
|
-
|
|
9
|
-
[TODO: 记录 `<LAST_SYNC_SHA>..HEAD`;bootstrap 模式写 `<bootstrap>..HEAD`,并说明本次为首次文档初始化。]
|
|
10
|
-
|
|
11
|
-
## Bootstrap Initialization
|
|
12
|
-
|
|
13
|
-
[TODO: 仅 bootstrap 模式填写:记录项目事实盘点、自动推导的 tracked assets、缺失文档清单和初始化动作;常规同步写 `N/A`。]
|
|
14
|
-
|
|
15
|
-
## Diff Summary
|
|
16
|
-
|
|
17
|
-
[TODO: 记录 git log、name-status、路径分组、archive/.config 相关 diff 摘要。]
|
|
18
|
-
|
|
19
|
-
## Archive Sources
|
|
20
|
-
|
|
21
|
-
[TODO: 列出本次读取的 `speculo/.speculo/archive/` 产物路径;没有相关归档时写 `[]` 和原因。]
|
|
22
|
-
|
|
23
|
-
## Knowledge Suggestions
|
|
24
|
-
|
|
25
|
-
[TODO: 记录从归档提取的 ADR / CONTEXT / RULES / LESSONS / 文档漂移候选,包含来源路径和动作。]
|
|
26
|
-
|
|
27
|
-
## Config Audit
|
|
28
|
-
|
|
29
|
-
[TODO: 记录 `.config` 审计结果,按 add / update / delete / keep / propose-only 分组;RULES 写入确认单独记录。]
|
|
30
|
-
|
|
31
|
-
## Mapping
|
|
32
|
-
|
|
33
|
-
[TODO: 说明哪些变更或 bootstrap 初始化发现映射到哪些 tracked assets。]
|
|
34
|
-
|
|
35
|
-
## Synced Assets
|
|
36
|
-
|
|
37
|
-
[TODO: 列出实际创建或修改的资产和一句话说明;空同步时写 `[]`。]
|
|
38
|
-
|
|
39
|
-
## Verification
|
|
40
|
-
|
|
41
|
-
[TODO: 记录运行的校验命令、结果,或无法运行原因。]
|
|
42
|
-
|
|
43
|
-
## State
|
|
44
|
-
|
|
45
|
-
[TODO: 记录 `speculo/.speculo/dev/docs-sync-state.json` 的 old/new baseline。]
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schema_version": 2,
|
|
3
|
-
"skill": "docs-sync",
|
|
4
|
-
"state_path": "speculo/.speculo/dev/docs-sync-state.json",
|
|
5
|
-
"tracked_assets": [],
|
|
6
|
-
"last_sync_sha": null,
|
|
7
|
-
"last_sync_short": null,
|
|
8
|
-
"last_sync_commit_subject": null,
|
|
9
|
-
"last_sync_commit_date": null,
|
|
10
|
-
"last_sync_run_at": null,
|
|
11
|
-
"previous_sync_sha": null,
|
|
12
|
-
"total_syncs": 0,
|
|
13
|
-
"synced_assets": []
|
|
14
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../M-domain-modeling/M-domain-modeling.md`
|
|
2
|
-
> **产物文件名:** `domain-model-log.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Domain Model Log
|
|
6
|
-
|
|
7
|
-
## 术语沉淀
|
|
8
|
-
[TODO: 逐条记录本会话挑战或锐化的术语。每条含:术语、结论(规范词 + 避免使用的别名)、是否已写入 `speculo/.speculo/.config/context/CONTEXT.md`(已写入 / `[待确认]`)。]
|
|
9
|
-
|
|
10
|
-
## 场景压测
|
|
11
|
-
[TODO: 记录用于界定边界的具体场景,以及由此确定的概念边界结论。无则写「无」。]
|
|
12
|
-
|
|
13
|
-
## 代码交叉核对
|
|
14
|
-
[TODO: 记录领域陈述与代码现实的核对结果(一致 / 矛盾及处置)。无则写「无」。]
|
|
15
|
-
|
|
16
|
-
## ADR 候选与裁决
|
|
17
|
-
[TODO: 逐条列出 ADR 候选。每条按三条判据(难以逆转 / 缺上下文会令人意外 / 真实权衡)裁决:`created`(编号 + `.config/adr/` 路径)或 `skipped`(原因)。无则写「无」。]
|
|
18
|
-
|
|
19
|
-
## 待确认
|
|
20
|
-
[TODO: 仍需用户决策的术语 / 边界 / 决策分支,每条一行。无则写「无」。]
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../01-grill-with-docs/01-grill-with-docs.md`
|
|
2
|
-
> **产物文件名:** `context-map.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Context Map
|
|
6
|
-
|
|
7
|
-
## 变更目标
|
|
8
|
-
[TODO: 用 1-2 段描述用户要澄清或改变的目标。]
|
|
9
|
-
|
|
10
|
-
## 已读取上下文
|
|
11
|
-
[TODO: 列出已读取的 CONTEXT、ADR、配置、代码路径和每个来源提供的关键事实。]
|
|
12
|
-
|
|
13
|
-
## 领域术语
|
|
14
|
-
[TODO: 列出已确认术语、冲突术语、模糊术语和需要用户确认的问题。]
|
|
15
|
-
|
|
16
|
-
## 决策线索
|
|
17
|
-
[TODO: 列出可能需要用户决策的分支、代码现实约束和 ADR 候选。]
|
|
18
|
-
|
|
19
|
-
## 下一阶段问题
|
|
20
|
-
[TODO: 按优先级列出 Decision Grill 阶段应该首先追问的问题。]
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../01-grill-with-docs/01-grill-with-docs.md`
|
|
2
|
-
> **产物文件名:** `decision-log.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Decision Log
|
|
6
|
-
|
|
7
|
-
## 已确认决策
|
|
8
|
-
[TODO: 列出已确认的术语、范围、设计或产品决策,以及用户确认依据。]
|
|
9
|
-
|
|
10
|
-
## 推荐但未确认
|
|
11
|
-
[TODO: 列出 agent 推荐答案、推荐理由和仍需用户确认的点。]
|
|
12
|
-
|
|
13
|
-
## 开放问题
|
|
14
|
-
[TODO: 列出被阻塞的问题、缺失信息和下一步需要谁提供什么。]
|
|
15
|
-
|
|
16
|
-
## CONTEXT 更新
|
|
17
|
-
[TODO: 列出已写入、待写入或不需要写入 CONTEXT.md 的术语项。]
|
|
18
|
-
|
|
19
|
-
## ADR 候选
|
|
20
|
-
[TODO: 列出符合 ADR 条件的决策、备选方案和是否已获用户确认。]
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../I-to-issues/I-to-issues.md`
|
|
2
|
-
> **产物文件名:** `slices.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
> **填写纪律:** 本模板遵循六段高质量 plan 纪律——当前现状 → 需读文件 → 需改文件 → 数据库表 → 实现要点 → 关键决策;标「条件段」的小节按需填写,单文件小改的最小形态为 §0(简) + §1 + §3(单切片) + §5 + §8。
|
|
5
|
-
|
|
6
|
-
# 切片计划(Vertical Slices)
|
|
7
|
-
|
|
8
|
-
> 本文件是一份可被下游直接接手的切片计划:以厚 Context(已确认决策 + 当前现状 + 关键核实结论)开篇,
|
|
9
|
-
> 按依赖排序的切片展开,每切片标注需读/需改文件、实现要点与保留/不动,并以分层验证收口。
|
|
10
|
-
> 每个切片有 `<phase id="...">` 标识,供 TDD 工作流直接引用。
|
|
11
|
-
> 标「条件段」的小节按需填写;单文件小改的最小形态为 §0(简) + §1 + §3(单切片) + §5 + §8。
|
|
12
|
-
|
|
13
|
-
## 0. 战略与背景(Context)
|
|
14
|
-
|
|
15
|
-
- **一句话战略:** [TODO: 做什么 + 为什么 + 怎么做到(新建 / 复用 / 以现有系统为基底)。]
|
|
16
|
-
- **已确认决策:** [TODO: 逐条列出与用户拍板的范围/取舍决策;有 decision-log.md 则继承其「已确认决策」段。]
|
|
17
|
-
- **当前现状:** [TODO: 逐条列出与需求不符的现有实现——文件路径:行号 + 当前值/行为 + 为什么不满足需求;独立进入时从代码库探索采集。]
|
|
18
|
-
- **关键核实结论:** [TODO: 探索确认的事实(依赖 / 唯一调用点 / 可删须留边界)。注明:行号为近似,实施时以现场代码为准。]
|
|
19
|
-
- **预期产出:** [TODO: 1–2 句,本 change 完成后的可观察结果。]
|
|
20
|
-
|
|
21
|
-
## 1. 范围边界(IN / REUSE / OUT)
|
|
22
|
-
| | 内容 |
|
|
23
|
-
|---|---|
|
|
24
|
-
| **IN 必造** | [TODO: 本次必造的新能力] |
|
|
25
|
-
| **REUSE 复用现有** | [TODO: 复用不改动的现有能力] |
|
|
26
|
-
| **OUT 本期不做** | [TODO: 留给后续迭代的内容 / 明确不做] |
|
|
27
|
-
|
|
28
|
-
## 2. 架构上下文
|
|
29
|
-
[TODO: 条件段——涉及的模块与职责分工、新增模块定位、不可逾越约束;可附 ASCII 分层图与依赖方向。单文件修复可删除本节。]
|
|
30
|
-
|
|
31
|
-
## 2.5. 涉及的数据库表
|
|
32
|
-
[TODO: 条件段——若涉及 schema 变更,用 | 表 | 变更 | 表记录:
|
|
33
|
-
- 新建表:列出全部字段 + PK + UK + INDEX,注明 DDL 追加到哪个 sql 文件末尾
|
|
34
|
-
- 新增字段:字段名 类型 DEFAULT 默认值 COMMENT '注释',注明 ALTER TABLE 追加位置
|
|
35
|
-
- 字段语义调整:旧字段名 → 新语义(不变更结构)
|
|
36
|
-
- 无 schema 变更则删除本节]
|
|
37
|
-
|
|
38
|
-
## 3. 切片
|
|
39
|
-
|
|
40
|
-
### 切片 1 · [切片名称]
|
|
41
|
-
<phase id="[phase-id]" status="未开始"><!-- 未开始 → 已实现(dev/03) → 已验证(dev/04) --></phase>
|
|
42
|
-
|
|
43
|
-
- **类型:** AFK | HITL
|
|
44
|
-
- **阻塞于:** 无
|
|
45
|
-
- **覆盖:** [TODO: PRD 章节 / US 编号 / 用户故事]
|
|
46
|
-
- **需阅读的文件:** [TODO: | 文件 | 目的 |;单文件小改可省略]
|
|
47
|
-
- **交付物:** [TODO: 具体文件/模块/功能;改动面宽时可用 | 文件 | 改动 | 表逐文件列出]
|
|
48
|
-
- **需修改的文件:** [TODO: | 文件 | 改动内容 |;新增文件标 **新增**,重度重构标 **重度重构**]
|
|
49
|
-
- **保留/不动:** [TODO: 本切片不能碰的代码/契约/数据;无则写「无」]
|
|
50
|
-
- **复用:** [TODO: 复用哪些现有能力]
|
|
51
|
-
- **实现要点:** [TODO: 关键技术决策、算法细节、并发控制、兜底策略(编号列表);单文件小改可省略]
|
|
52
|
-
- **验收切片:** [TODO: 可独立执行的验证命令或步骤;删除型须含残留扫描 grep 0 命中]
|
|
53
|
-
- **对齐:** [TODO: PRD FR-xxx 或 issue 引用]
|
|
54
|
-
- **ADR 引用:** [TODO: 关联的 ADR 编号,可选]
|
|
55
|
-
|
|
56
|
-
### 切片 2 · [切片名称]
|
|
57
|
-
<phase id="[phase-id]" status="未开始"><!-- 未开始 → 已实现(dev/03) → 已验证(dev/04) --></phase>
|
|
58
|
-
|
|
59
|
-
- **类型:** AFK | HITL
|
|
60
|
-
- **阻塞于:** 切片 1
|
|
61
|
-
- **覆盖:** [TODO]
|
|
62
|
-
- **需阅读的文件:** [TODO: | 文件 | 目的 |;单文件小改可省略]
|
|
63
|
-
- **交付物:** [TODO]
|
|
64
|
-
- **需修改的文件:** [TODO: | 文件 | 改动内容 |]
|
|
65
|
-
- **保留/不动:** [TODO]
|
|
66
|
-
- **复用:** [TODO]
|
|
67
|
-
- **实现要点:** [TODO]
|
|
68
|
-
- **验收切片:** [TODO]
|
|
69
|
-
- **对齐:** [TODO]
|
|
70
|
-
- **ADR 引用:** [TODO]
|
|
71
|
-
|
|
72
|
-
[TODO: 按需增加更多切片,每个有独立的 phase id]
|
|
73
|
-
|
|
74
|
-
## 4. 横切关注点与铁律
|
|
75
|
-
[TODO: 跨切片一致的规则、约束与不可违反的铁律(数据安全冻结常量、契约先行、删缓存可重建、范围隔离、命名消歧);并声明「行号为近似,实施时现场核对」。]
|
|
76
|
-
|
|
77
|
-
## 5. 依赖顺序速查
|
|
78
|
-
```
|
|
79
|
-
[TODO: ASCII 依赖链,如:
|
|
80
|
-
P0 phase0-xxx 切片名称 ← 不可回退,最先
|
|
81
|
-
P1 phase1-xxx 切片名称 依赖 P0
|
|
82
|
-
]
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## 5.5. 关键决策
|
|
86
|
-
[TODO: 汇总影响全局或跨切片的技术选型与取舍,如方案选择(工具类 vs 正则)、字段复用/新建决策、SQL 追加规则等。防止下游对同一问题反复争论。单文件小改可删除本节。]
|
|
87
|
-
|
|
88
|
-
## 6. 风险与回滚
|
|
89
|
-
[TODO: 条件段——本期涉及删除/数据迁移/外部副作用/高耦合时填:风险 / 触发条件 / 缓解 / 回滚 表;有 overview.md 风险则继承细化。纯增量小改可删除本节。]
|
|
90
|
-
|
|
91
|
-
## 7. 退役清单
|
|
92
|
-
[TODO: 条件段——仅当删除既有能力时填:项 / 处置 / 验证 表,逐条记录被删或被迁内容及其去向。无删除则删除本节。]
|
|
93
|
-
|
|
94
|
-
## 8. 验证总览
|
|
95
|
-
[TODO: change 级验证 roll-up,按适用项填、不适用标 N/A:
|
|
96
|
-
- 静态检查(构建 / 类型 / lint)
|
|
97
|
-
- 测试(单测 / 契约)
|
|
98
|
-
- 残留扫描(删除项 grep 应 0 命中)
|
|
99
|
-
- E2E 冒烟(真实运行走查关键路径)
|
|
100
|
-
- 迁移测试(涉及持久化 / 格式 / 键名迁移时预置旧数据验证)]
|
|
101
|
-
|
|
102
|
-
## 用户确认
|
|
103
|
-
[TODO: 记录用户对粒度、依赖、HITL/AFK 标记、phase id 和发布策略的确认。]
|
|
104
|
-
|
|
105
|
-
## 发布记录
|
|
106
|
-
[TODO: 若发布到外部 issue tracker,记录 issue 引用;否则写明 local-only。]
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../02-prd/02-prd.md`
|
|
2
|
-
> **产物文件名:** `overview.md`
|
|
3
|
-
|
|
4
|
-
# Overview
|
|
5
|
-
|
|
6
|
-
## 目标区域
|
|
7
|
-
[TODO: 描述本次变更涉及的业务区域、用户目标和现有入口。]
|
|
8
|
-
|
|
9
|
-
## 模块全景
|
|
10
|
-
[TODO: 列出相关模块、调用者、下游依赖和数据流向。]
|
|
11
|
-
|
|
12
|
-
## 现有行为
|
|
13
|
-
[TODO: 描述当前代码或产品已经支持什么,以及关键约束。]
|
|
14
|
-
|
|
15
|
-
## 缺失能力
|
|
16
|
-
[TODO: 描述为满足用户目标仍缺少的能力或行为。]
|
|
17
|
-
|
|
18
|
-
## 风险与未知点
|
|
19
|
-
[TODO: 列出需要在 PRD 或实现前解决的风险和未知点。]
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../02-prd/02-prd.md`
|
|
2
|
-
> **产物文件名:** `prd.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# PRD
|
|
6
|
-
|
|
7
|
-
## Problem Statement
|
|
8
|
-
[TODO: 从用户视角描述当前问题、受影响对象和为什么现在需要解决。]
|
|
9
|
-
|
|
10
|
-
## Solution
|
|
11
|
-
[TODO: 从用户视角描述目标方案和成功后的行为。]
|
|
12
|
-
|
|
13
|
-
## User Stories
|
|
14
|
-
[TODO: 用编号列表列出用户故事,格式为 "As an <actor>, I want <feature>, so that <benefit>"。]
|
|
15
|
-
|
|
16
|
-
## Implementation Decisions
|
|
17
|
-
[TODO: 列出模块边界、接口决策、架构选择、数据模型或 API 合同,不写易过时的具体文件路径。]
|
|
18
|
-
|
|
19
|
-
## Testing Decisions
|
|
20
|
-
[TODO: 描述要测试的公共行为、目标模块、测试层级和可参考的既有测试。]
|
|
21
|
-
|
|
22
|
-
## Out of Scope
|
|
23
|
-
[TODO: 明确本 PRD 不包含的功能、迁移、优化或发布动作。]
|
|
24
|
-
|
|
25
|
-
## Further Notes
|
|
26
|
-
[TODO: 记录后续切片、依赖、风险或需要用户确认的事项。]
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../H-diagnose/H-diagnose.md`
|
|
2
|
-
> **产物文件名:** `regression.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Regression
|
|
6
|
-
|
|
7
|
-
## 确认原因
|
|
8
|
-
[TODO: 记录最终确认的根因和为什么其他假设被排除。]
|
|
9
|
-
|
|
10
|
-
## 回归测试
|
|
11
|
-
[TODO: 描述新增回归测试;若无法添加,记录缺少正确接缝的原因。]
|
|
12
|
-
|
|
13
|
-
## 修复摘要
|
|
14
|
-
[TODO: 描述修复行为、用户可见影响和不包含的范围。]
|
|
15
|
-
|
|
16
|
-
## 重新验证
|
|
17
|
-
[TODO: 记录原始反馈循环和相关测试的重新运行结果。]
|
|
18
|
-
|
|
19
|
-
## 清理与后续
|
|
20
|
-
[TODO: 记录调试残留清理、架构改善建议和后续 issue。]
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../R-review/R-review.md`
|
|
2
|
-
> **产物文件名:** `review-report.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Review Report
|
|
6
|
-
|
|
7
|
-
> 每条 finding 格式:`[严重度] [file:line 或 hunk] 标题` + 问题描述 + 修复建议 + 来源引用。
|
|
8
|
-
> 严重度取值 P0 / P1 / P2 / P3,见 `../R-review/R-review.md` 的严重度模型。
|
|
9
|
-
|
|
10
|
-
## Spec
|
|
11
|
-
|
|
12
|
-
[TODO: 按 Spec 维度列出 findings(缺失需求、范围蔓延、看似实现但有问题的需求),引用 spec 原文。缺失 spec 时写 `no spec available`。]
|
|
13
|
-
|
|
14
|
-
## Engineering
|
|
15
|
-
|
|
16
|
-
### SOLID 与架构
|
|
17
|
-
[TODO: 依据 `../R-review/solid-checklist.md` 列出 findings。]
|
|
18
|
-
|
|
19
|
-
### 安全与可靠性
|
|
20
|
-
[TODO: 依据 `../R-review/security-checklist.md` 列出 findings,含可利用性与影响。]
|
|
21
|
-
|
|
22
|
-
### 代码质量
|
|
23
|
-
[TODO: 依据 `../R-review/code-quality-checklist.md` 列出 findings。]
|
|
24
|
-
|
|
25
|
-
### 删除候选
|
|
26
|
-
[TODO: 依据 `../R-review/removal-checklist.md` 列出死代码 / 删除候选与计划。]
|
|
27
|
-
|
|
28
|
-
## Standards
|
|
29
|
-
|
|
30
|
-
[TODO: 按 Standards 维度列出违反已记录标准的 findings,引用标准来源;无成文标准时记录覆盖空白。]
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../R-review/R-review.md`
|
|
2
|
-
> **产物文件名:** `review-sources.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Review Sources
|
|
6
|
-
|
|
7
|
-
## Fixed Point
|
|
8
|
-
|
|
9
|
-
[TODO: 记录用户提供的 fixed point。]
|
|
10
|
-
|
|
11
|
-
## Diff Command
|
|
12
|
-
|
|
13
|
-
[TODO: 记录 `git diff <fixed-point>...HEAD`。]
|
|
14
|
-
|
|
15
|
-
## Commits
|
|
16
|
-
|
|
17
|
-
[TODO: 粘贴或摘要 `git log <fixed-point>..HEAD --oneline`。]
|
|
18
|
-
|
|
19
|
-
## Scope
|
|
20
|
-
|
|
21
|
-
[TODO: 记录 `--stat` 规模、是否大 diff、分批策略;无变更时记录处理方式。]
|
|
22
|
-
|
|
23
|
-
## Critical Paths
|
|
24
|
-
|
|
25
|
-
[TODO: 列出 diff 触及的关键路径:auth / 支付 / 数据写入 / 网络 / 并发。]
|
|
26
|
-
|
|
27
|
-
## Spec Sources
|
|
28
|
-
|
|
29
|
-
[TODO: 列出 PRD、issue、slices、用户路径;缺失写 `no spec available`。]
|
|
30
|
-
|
|
31
|
-
## Standards Sources
|
|
32
|
-
|
|
33
|
-
[TODO: 列出已发现的规则、上下文、ADR、贡献指南或配置文件;无成文标准时记录覆盖空白。]
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../R-review/R-review.md`
|
|
2
|
-
> **产物文件名:** `review-verdict.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Review Verdict
|
|
6
|
-
|
|
7
|
-
## 整体裁决
|
|
8
|
-
|
|
9
|
-
[TODO: APPROVE / REQUEST_CHANGES / COMMENT,并一句话说明依据。]
|
|
10
|
-
|
|
11
|
-
## 严重度汇总
|
|
12
|
-
|
|
13
|
-
| 严重度 | 数量 |
|
|
14
|
-
|--------|------|
|
|
15
|
-
| P0 | [TODO] |
|
|
16
|
-
| P1 | [TODO] |
|
|
17
|
-
| P2 | [TODO] |
|
|
18
|
-
| P3 | [TODO] |
|
|
19
|
-
|
|
20
|
-
## Clean Review 声明
|
|
21
|
-
|
|
22
|
-
### 检查了什么
|
|
23
|
-
[TODO: 覆盖到的文件 / 模块 / 维度。]
|
|
24
|
-
|
|
25
|
-
### 未覆盖什么
|
|
26
|
-
[TODO: 未审区域及原因,如未验证迁移、大 diff 抽样审查。]
|
|
27
|
-
|
|
28
|
-
### 残留风险
|
|
29
|
-
[TODO: 建议补充的测试或后续验证。]
|
|
30
|
-
|
|
31
|
-
## 后续选项
|
|
32
|
-
|
|
33
|
-
[TODO: 记录向用户给出的选项(修复全部 / 仅 P0·P1 / 指定项 / 不改动)及用户选择;未确认前不实施修复。]
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
> **服务工作流:** `../03-tdd/03-tdd.md`
|
|
2
|
-
> **产物文件名:** `tdd/<phase-id>/implementation-log.md`
|
|
3
|
-
> **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
|
|
4
|
-
|
|
5
|
-
# Implementation Log
|
|
6
|
-
|
|
7
|
-
## 阶段标识
|
|
8
|
-
[TODO: 本阶段 `<phase-id>`(与同目录 `tdd-plan.md` 一致)。]
|
|
9
|
-
|
|
10
|
-
## Git 状态变化
|
|
11
|
-
[TODO: 记录相对 `tdd-plan.md` 执行前基线新增/变化的 dirty、staged、untracked 文件,以及未知改动的处理结论。]
|
|
12
|
-
|
|
13
|
-
## 循环记录
|
|
14
|
-
[TODO: 对每轮 RED/GREEN/REFACTOR 记录切片、行为、测试、实现摘要、重构摘要和验证结果。]
|
|
15
|
-
|
|
16
|
-
## 接口变化
|
|
17
|
-
[TODO: 记录对公共接口、用户可见行为或集成边界的实际变化。]
|
|
18
|
-
|
|
19
|
-
## 偏离计划
|
|
20
|
-
[TODO: 记录实现中发现的计划偏差、原因和用户确认情况。]
|
|
21
|
-
|
|
22
|
-
## 剩余切片
|
|
23
|
-
[TODO: 列出尚未完成的切片、阻塞原因或已明确取消的范围。]
|