@pzy560117/codex-harness 0.1.9 → 0.1.11
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 +1 -1
- package/package-source/docs/codex-harness-engineering/templates/bootstrap-codex-harness.ps1 +3 -1
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/install-agent.ps1 +151 -78
- package/package-source/docs/codex-harness-engineering/templates/runtime/doctor.ps1 +32 -11
- package/package-source/docs/codex-harness-engineering/templates/runtime/feature-task-reference.json +363 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/project-task-template.json +46 -793
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/architecture-lint.ps1 +17 -6
- package/package-source/docs/codex-harness-engineering/templates/tools/harness/task-structure-lint.ps1 +1 -1
- package/package-source/install-manifest.json +14 -7
- package/package-source/tools/install/bootstrap-codex-harness.ps1 +3 -1
- package/package-source/tools/install/install-agent.ps1 +48 -23
- package/package.json +1 -1
package/package-source/docs/codex-harness-engineering/templates/runtime/project-task-template.json
CHANGED
|
@@ -240,105 +240,40 @@
|
|
|
240
240
|
"没有自然语言测试用例覆盖的 P0/P1 需求不得进入 feature_impl"
|
|
241
241
|
]
|
|
242
242
|
},
|
|
243
|
-
{
|
|
244
|
-
"id": "
|
|
245
|
-
"description": "
|
|
246
|
-
"task_kind": "
|
|
247
|
-
"phase": "
|
|
248
|
-
"gate_profile": "spec_required",
|
|
249
|
-
"required_truth_sources": [
|
|
250
|
-
"product",
|
|
251
|
-
"plan",
|
|
252
|
-
"
|
|
253
|
-
"
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
"
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
"
|
|
261
|
-
|
|
262
|
-
"docs/
|
|
263
|
-
"docs/
|
|
264
|
-
"docs/context/
|
|
265
|
-
"docs/
|
|
266
|
-
"docs/
|
|
267
|
-
"docs/testing/
|
|
268
|
-
"docs/testing/
|
|
269
|
-
"docs/testing/
|
|
270
|
-
"docs/testing/
|
|
271
|
-
"
|
|
272
|
-
"plans/features/<feature-slug>.dev-plan.md"
|
|
273
|
-
],
|
|
274
|
-
"owned_paths": [
|
|
275
|
-
"
|
|
276
|
-
"docs/testing/",
|
|
277
|
-
"artifacts/visual-review/"
|
|
278
|
-
],
|
|
279
|
-
"requirement_ids": [
|
|
280
|
-
"REQ-REPLACE-DESIGN"
|
|
281
|
-
],
|
|
282
|
-
"produces_artifacts": [
|
|
283
|
-
"docs/design/design-brief.md",
|
|
284
|
-
"docs/design/component-map.md",
|
|
285
|
-
"docs/design/screen-states.md",
|
|
286
|
-
"docs/design/design-tokens.json",
|
|
287
|
-
"docs/design/ai-image-brief.md",
|
|
288
|
-
"docs/design/ui-image-review.md",
|
|
289
|
-
"docs/design/image-to-frontend-spec.md",
|
|
290
|
-
"docs/design/visual-parity-review.md"
|
|
291
|
-
],
|
|
292
|
-
"execution": {
|
|
293
|
-
"mode": "single"
|
|
294
|
-
},
|
|
295
|
-
"steps": [
|
|
296
|
-
"输出页面结构、组件映射、关键状态、响应式与可访问性要求",
|
|
297
|
-
"把 Requirement IDs、交互路径、稳定测试选择器和视觉断言绑定到设计规格",
|
|
298
|
-
"明确后续实现需要的视觉参考、截图资产和验收边界"
|
|
299
|
-
],
|
|
300
|
-
"test_command": "git diff --check",
|
|
301
|
-
"acceptance": [
|
|
302
|
-
"设计规格足以支撑实现而不再依赖口头补充",
|
|
303
|
-
"关键页面、状态和视觉断言已能回溯到需求与测试矩阵"
|
|
304
|
-
]
|
|
305
|
-
},
|
|
306
|
-
{
|
|
307
|
-
"id": "PLAN-001",
|
|
308
|
-
"description": "把真相源收敛为可执行的实施计划和验证顺序",
|
|
309
|
-
"task_kind": "feature_plan",
|
|
310
|
-
"phase": "plan",
|
|
311
|
-
"gate_profile": "spec_required",
|
|
312
|
-
"required_truth_sources": [
|
|
313
|
-
"product",
|
|
314
|
-
"design",
|
|
315
|
-
"plan",
|
|
316
|
-
"architecture",
|
|
317
|
-
"testing",
|
|
318
|
-
"repo_context"
|
|
319
|
-
],
|
|
320
|
-
"priority": 8,
|
|
321
|
-
"dependencies": [
|
|
322
|
-
"DESIGN-001"
|
|
323
|
-
],
|
|
324
|
-
"passes": false,
|
|
325
|
-
"context_files": [
|
|
326
|
-
"docs/context/feature-pack.md",
|
|
327
|
-
"docs/context/repo-map.md",
|
|
328
|
-
"docs/context/architecture-brief.md",
|
|
329
|
-
"docs/architecture/constraints.md",
|
|
330
|
-
"docs/design/design-brief.md",
|
|
331
|
-
"docs/design/component-map.md",
|
|
332
|
-
"docs/testing/NATURAL_LANGUAGE_TEST_CASES.md",
|
|
333
|
-
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
334
|
-
"docs/testing/TEST_DATA_MATRIX.md",
|
|
335
|
-
"docs/testing/test-matrix.md",
|
|
336
|
-
"docs/testing/verify-matrix.md",
|
|
337
|
-
"plans/features/<feature-slug>.dev-plan.md"
|
|
338
|
-
],
|
|
339
|
-
"owned_paths": [
|
|
340
|
-
"plans/",
|
|
341
|
-
"docs/testing/",
|
|
243
|
+
{
|
|
244
|
+
"id": "PLAN-001",
|
|
245
|
+
"description": "把真相源收敛为可执行的实施计划和验证顺序",
|
|
246
|
+
"task_kind": "feature_plan",
|
|
247
|
+
"phase": "plan",
|
|
248
|
+
"gate_profile": "spec_required",
|
|
249
|
+
"required_truth_sources": [
|
|
250
|
+
"product",
|
|
251
|
+
"plan",
|
|
252
|
+
"architecture",
|
|
253
|
+
"testing",
|
|
254
|
+
"repo_context"
|
|
255
|
+
],
|
|
256
|
+
"priority": 8,
|
|
257
|
+
"dependencies": [
|
|
258
|
+
"TESTCASE-001"
|
|
259
|
+
],
|
|
260
|
+
"passes": false,
|
|
261
|
+
"context_files": [
|
|
262
|
+
"docs/context/feature-pack.md",
|
|
263
|
+
"docs/context/repo-map.md",
|
|
264
|
+
"docs/context/architecture-brief.md",
|
|
265
|
+
"docs/architecture/constraints.md",
|
|
266
|
+
"docs/testing/NATURAL_LANGUAGE_TEST_CASES.md",
|
|
267
|
+
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
268
|
+
"docs/testing/TEST_DATA_MATRIX.md",
|
|
269
|
+
"docs/testing/test-matrix.md",
|
|
270
|
+
"docs/testing/verify-matrix.md",
|
|
271
|
+
"tools/harness/templates/feature-task-reference.json",
|
|
272
|
+
"plans/features/<feature-slug>.dev-plan.md"
|
|
273
|
+
],
|
|
274
|
+
"owned_paths": [
|
|
275
|
+
"plans/",
|
|
276
|
+
"docs/testing/",
|
|
342
277
|
"docs/context/"
|
|
343
278
|
],
|
|
344
279
|
"requirement_ids": [
|
|
@@ -348,23 +283,28 @@
|
|
|
348
283
|
"plans/features/<feature-slug>.dev-plan.md",
|
|
349
284
|
"docs/testing/verify-matrix.md"
|
|
350
285
|
],
|
|
351
|
-
"execution": {
|
|
352
|
-
"mode": "single"
|
|
353
|
-
},
|
|
286
|
+
"execution": {
|
|
287
|
+
"mode": "single"
|
|
288
|
+
},
|
|
354
289
|
"steps": [
|
|
290
|
+
"当前 project-task-template 只作为初始化可运行的四阶段 seed queue;不要在正式替换当前项目真实任务前,把 feature_impl 或 release 占位任务直接塞回初始队列。",
|
|
355
291
|
"把后续实现按用户故事顺序映射到 dev-plan、affected tests、验证命令和证据路径",
|
|
292
|
+
"生成 feature_impl、release、archive 任务时,以 tools/harness/templates/feature-task-reference.json 为蓝本,保留 qa_contract、required_layers、tdd_contract、story_full_chain 和 acceptance_validation 结构。",
|
|
356
293
|
"把自然语言测试用例中的 TDD 候选转换为每个 feature_impl.qa_contract.tdd_contract,并保留 source_case_ids",
|
|
357
294
|
"把非 TDD 自然语言用例映射到 feature_impl.qa_contract.story_full_chain.source_case_ids、acceptance_validation.source_case_ids、回归计划或 verify-matrix",
|
|
358
295
|
"不要把模板 phase 合并成更少任务;如果用户明确批准压缩,必须在对应任务补充 decomposition_exemption 记录批准范围和原因",
|
|
296
|
+
"如果项目需要独立设计阶段、视觉规格或跨端前端规格,把这些前置产物写入 dev-plan 和后续真实任务,而不是让初始 seed queue 自带一批占位设计/实现任务。",
|
|
359
297
|
"确认每个实现任务都已有 requirement_ids、owned_paths、context_files 和最小可行验收闭环",
|
|
360
298
|
"确认每个 feature_impl 默认不超过 3 条主 requirement_ids;订单、支付、库存、RBAC 拆成独立任务;前端和后端不要长期混在同一个 story",
|
|
361
299
|
"对涉及用户可见行为、路由、表单、权限、状态流转或关键业务闭环的任务,明确是否要求 docs/testing/e2e-plan.md,并把相关 E2E 命令写进 test_command 或 release 验证链路",
|
|
362
300
|
"确认每个 feature_impl 任务都携带 architecture_constraints、forbidden_implementations、tdd_contract 和项目真实可执行的 test_command",
|
|
363
301
|
"明确哪些故事必须串行,哪些依赖可在后续手工改成并行"
|
|
364
302
|
],
|
|
365
|
-
"test_command": "git diff --check",
|
|
303
|
+
"test_command": "git diff --check",
|
|
366
304
|
"acceptance": [
|
|
305
|
+
"初始任务队列只保留 INIT-001、ANALYSIS-001、TESTCASE-001、PLAN-001 四阶段入口,不包含占位 feature_impl 或 release 任务。",
|
|
367
306
|
"dev-plan、verify-matrix 和 story 级执行顺序保持一致",
|
|
307
|
+
"后续真实实现任务已经从 feature-task-reference.json 衍生,而不是临时自由发挥。",
|
|
368
308
|
"每个 feature_impl 的 tdd_contract.red.source_case_ids 均能回溯到 NATURAL_LANGUAGE_TEST_CASES.md",
|
|
369
309
|
"每个 feature_impl 的非 TDD 自然语言用例均能回溯到 story_full_chain、acceptance_validation、回归计划或 verify-matrix",
|
|
370
310
|
"模板 phase 没有被压缩;如存在压缩或跨层混合,已附带用户批准的 decomposition_exemption",
|
|
@@ -373,693 +313,6 @@
|
|
|
373
313
|
"实现任务不会把测试替身、local-only adapter 或领域原型伪装成声明的交付路径",
|
|
374
314
|
"后续实现与 release 任务的验证边界已经明确且可执行"
|
|
375
315
|
]
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
"description": "实现 US1 / MVP:将首个可独立验收的用户故事替换为真实业务标题",
|
|
380
|
-
"task_kind": "feature_impl",
|
|
381
|
-
"phase": "us1",
|
|
382
|
-
"gate_profile": "spec_required",
|
|
383
|
-
"required_truth_sources": [
|
|
384
|
-
"product",
|
|
385
|
-
"design",
|
|
386
|
-
"plan",
|
|
387
|
-
"architecture",
|
|
388
|
-
"testing",
|
|
389
|
-
"repo_context"
|
|
390
|
-
],
|
|
391
|
-
"priority": 20,
|
|
392
|
-
"dependencies": [
|
|
393
|
-
"PLAN-001"
|
|
394
|
-
],
|
|
395
|
-
"passes": false,
|
|
396
|
-
"story_id": "US1",
|
|
397
|
-
"story_priority": "P0/P1",
|
|
398
|
-
"independent_test": "替换为 US1 的独立验证方式,例如一个最短闭环页面或一条完整 API/业务路径",
|
|
399
|
-
"architecture_constraints": [
|
|
400
|
-
"delivery_shape=<replace-with-web_app|backend_service|monolith|frontend_app|cli|library|automation|data_pipeline|domain_prototype|other>",
|
|
401
|
-
"public_interfaces=<replace-with-http|grpc|graphql|mq|cli|ui-route|package-api|file-format|none>",
|
|
402
|
-
"persistence_boundary=<replace-with-database|browser_storage|filesystem|external-api|none>",
|
|
403
|
-
"test_double_policy=<replace-with-project-policy>"
|
|
404
|
-
],
|
|
405
|
-
"forbidden_implementations": [
|
|
406
|
-
"禁止把测试替身、mock、fixture、local-only adapter 或领域原型作为声明交付路径完成",
|
|
407
|
-
"禁止只运行 git diff --check 就声明 feature_impl 完成",
|
|
408
|
-
"替换为当前项目最容易跑偏的具体禁止实现"
|
|
409
|
-
],
|
|
410
|
-
"qa_contract": {
|
|
411
|
-
"source": [
|
|
412
|
-
"docs/testing/NATURAL_LANGUAGE_TEST_CASES.md",
|
|
413
|
-
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
414
|
-
"docs/testing/test-matrix.md",
|
|
415
|
-
"docs/testing/verify-matrix.md"
|
|
416
|
-
],
|
|
417
|
-
"required_layers": [
|
|
418
|
-
"unit_or_component",
|
|
419
|
-
"contract_or_api",
|
|
420
|
-
"story_full_chain",
|
|
421
|
-
"affected_regression"
|
|
422
|
-
],
|
|
423
|
-
"tdd_contract": {
|
|
424
|
-
"policy": "required",
|
|
425
|
-
"red": {
|
|
426
|
-
"source_case_ids": [
|
|
427
|
-
"TC-REQ-REPLACE-US1-001"
|
|
428
|
-
],
|
|
429
|
-
"behavior": "<replace-with-one-new-or-changed-us1-behavior>",
|
|
430
|
-
"test_files": [
|
|
431
|
-
"<replace-with-us1-focused-test-file>"
|
|
432
|
-
],
|
|
433
|
-
"command": "<replace-with-us1-focused-test-command>",
|
|
434
|
-
"expected_failure": "<replace-with-us1-error-or-assertion-that-proves-behavior-missing>",
|
|
435
|
-
"evidence": "artifacts/tdd/US1-001/red.log"
|
|
436
|
-
},
|
|
437
|
-
"green": {
|
|
438
|
-
"command": "<replace-with-same-us1-focused-test-command>",
|
|
439
|
-
"evidence": "artifacts/tdd/US1-001/green.log"
|
|
440
|
-
},
|
|
441
|
-
"refactor_guard": {
|
|
442
|
-
"command": "<replace-with-us1-affected-tests-or-development-validation>",
|
|
443
|
-
"evidence": "artifacts/tdd/US1-001/refactor.log"
|
|
444
|
-
},
|
|
445
|
-
"coverage": {
|
|
446
|
-
"command": "<replace-with-us1-coverage-command-or-not-applicable>",
|
|
447
|
-
"minimum": "80% for business logic; 100% for critical logic"
|
|
448
|
-
},
|
|
449
|
-
"exemptions": []
|
|
450
|
-
},
|
|
451
|
-
"development_validation": {
|
|
452
|
-
"purpose": "coding-time feedback only; cannot replace acceptance_validation",
|
|
453
|
-
"commands": [
|
|
454
|
-
"<replace-with-affected-tests>",
|
|
455
|
-
"<replace-with-unit-or-component-tests>",
|
|
456
|
-
"<replace-with-contract-or-typecheck-or-lint>"
|
|
457
|
-
],
|
|
458
|
-
"evidence": [
|
|
459
|
-
"<replace-with-development-test-log-or-report>"
|
|
460
|
-
]
|
|
461
|
-
},
|
|
462
|
-
"story_full_chain": {
|
|
463
|
-
"source_case_ids": [
|
|
464
|
-
"TC-REQ-REPLACE-US1-FULLCHAIN-001"
|
|
465
|
-
],
|
|
466
|
-
"entry": "<replace-with-user-visible-entry-or-public-api>",
|
|
467
|
-
"data": "<replace-with-seed-or-fixture-id-from-TEST_DATA_MATRIX>",
|
|
468
|
-
"action": "<replace-with-end-to-end-story-action>",
|
|
469
|
-
"oracles": [
|
|
470
|
-
"response_or_ui",
|
|
471
|
-
"database_or_state",
|
|
472
|
-
"side_effect_or_no_side_effect"
|
|
473
|
-
],
|
|
474
|
-
"evidence": [
|
|
475
|
-
"<replace-with-request-response-or-screenshot>",
|
|
476
|
-
"<replace-with-db-diff-or-state-proof>",
|
|
477
|
-
"<replace-with-trace-log-or-event-proof>"
|
|
478
|
-
],
|
|
479
|
-
"failure_mode": "<replace-with-negative-or-error-path-proof>"
|
|
480
|
-
},
|
|
481
|
-
"acceptance_validation": {
|
|
482
|
-
"purpose": "post-implementation user or business full-chain validation",
|
|
483
|
-
"must_run_after_implementation": true,
|
|
484
|
-
"source": "story_full_chain",
|
|
485
|
-
"source_case_ids": [
|
|
486
|
-
"TC-REQ-REPLACE-US1-FULLCHAIN-001"
|
|
487
|
-
],
|
|
488
|
-
"fresh_evidence_required": true
|
|
489
|
-
},
|
|
490
|
-
"release_impact": [
|
|
491
|
-
"US1 evidence must feed RELEASE-001 cross-story flow"
|
|
492
|
-
],
|
|
493
|
-
"exemptions": []
|
|
494
|
-
},
|
|
495
|
-
"context_files": [
|
|
496
|
-
"docs/product/prd-lite.md",
|
|
497
|
-
"docs/product/requirement-interface-matrix.md",
|
|
498
|
-
"docs/architecture/constraints.md",
|
|
499
|
-
"docs/context/feature-pack.md",
|
|
500
|
-
"docs/design/design-brief.md",
|
|
501
|
-
"docs/design/component-map.md",
|
|
502
|
-
"docs/design/screen-states.md",
|
|
503
|
-
"docs/testing/ACCEPTANCE_CRITERIA.md",
|
|
504
|
-
"docs/testing/ACCEPTANCE_EXAMPLES.md",
|
|
505
|
-
"docs/testing/NATURAL_LANGUAGE_TEST_CASES.md",
|
|
506
|
-
"docs/testing/REGRESSION_PLAN.md",
|
|
507
|
-
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
508
|
-
"docs/testing/TEST_STRATEGY.md",
|
|
509
|
-
"docs/testing/TEST_DATA_MATRIX.md",
|
|
510
|
-
"docs/testing/EVIDENCE_PROTOCOL.md",
|
|
511
|
-
"docs/testing/test-matrix.md",
|
|
512
|
-
"docs/testing/verify-matrix.md",
|
|
513
|
-
"plans/features/<feature-slug>.dev-plan.md"
|
|
514
|
-
],
|
|
515
|
-
"owned_paths": [
|
|
516
|
-
"<replace-with-us1-owned-path-1>/",
|
|
517
|
-
"<replace-with-us1-owned-path-2>/"
|
|
518
|
-
],
|
|
519
|
-
"requirement_ids": [
|
|
520
|
-
"FR-REPLACE-US1-001",
|
|
521
|
-
"FR-REPLACE-US1-002"
|
|
522
|
-
],
|
|
523
|
-
"produces_artifacts": [
|
|
524
|
-
"<replace-with-us1-primary-artifact>",
|
|
525
|
-
"<replace-with-us1-test-evidence>"
|
|
526
|
-
],
|
|
527
|
-
"execution": {
|
|
528
|
-
"mode": "single"
|
|
529
|
-
},
|
|
530
|
-
"steps": [
|
|
531
|
-
"把 US1 标题、requirement_ids、owned_paths、产物路径和独立验证方式替换为真实项目内容",
|
|
532
|
-
"把 qa_contract 中的 tdd_contract.source_case_ids、story_full_chain.source_case_ids、acceptance_validation.source_case_ids、入口、数据、动作、Oracle、证据、失败态和 release impact 全部替换为真实内容",
|
|
533
|
-
"单个 feature_impl 默认不超过 3 条主 requirement_ids;订单、支付、库存、RBAC 不要和其他主故事捆绑;前端和后端不要长期混在同一个 story",
|
|
534
|
-
"仅实现首个可单独交付的用户故事,并同步补齐其 affected tests 与必要文档",
|
|
535
|
-
"运行与 US1 对应的真实验证命令,必须包含开发验证和代码完成后的故事级验收链路,并记录可回溯证据"
|
|
536
|
-
],
|
|
537
|
-
"test_command": "powershell -NoProfile -ExecutionPolicy Bypass -File .\\tools\\harness\\verify.ps1 -Commands @('<replace-with-project-fitness-check>', '<replace-with-affected-tests>', 'git diff --check')",
|
|
538
|
-
"acceptance": [
|
|
539
|
-
"US1 能作为 MVP 独立演示或独立验收",
|
|
540
|
-
"US1 满足架构约束 truth source,不以测试替身冒充声明交付路径",
|
|
541
|
-
"US1 的 tdd_contract 和验收链路均能回溯到 NATURAL_LANGUAGE_TEST_CASES.md 中的自然语言用例",
|
|
542
|
-
"US1 的开发验证和故事级验收链路均通过,且验收证据能进入 RELEASE-001",
|
|
543
|
-
"US1 的 Requirement IDs、测试映射和证据路径完整可追溯"
|
|
544
|
-
]
|
|
545
|
-
},
|
|
546
|
-
{
|
|
547
|
-
"id": "US2-001",
|
|
548
|
-
"description": "实现 US2:将第二个用户故事替换为真实业务标题",
|
|
549
|
-
"task_kind": "feature_impl",
|
|
550
|
-
"phase": "us2",
|
|
551
|
-
"gate_profile": "spec_required",
|
|
552
|
-
"required_truth_sources": [
|
|
553
|
-
"product",
|
|
554
|
-
"design",
|
|
555
|
-
"plan",
|
|
556
|
-
"architecture",
|
|
557
|
-
"testing",
|
|
558
|
-
"repo_context"
|
|
559
|
-
],
|
|
560
|
-
"priority": 30,
|
|
561
|
-
"dependencies": [
|
|
562
|
-
"PLAN-001"
|
|
563
|
-
],
|
|
564
|
-
"passes": false,
|
|
565
|
-
"story_id": "US2",
|
|
566
|
-
"story_priority": "P1/P2",
|
|
567
|
-
"independent_test": "替换为 US2 的独立验证方式;若与 US1 强依赖,请同步调整 dependencies",
|
|
568
|
-
"architecture_constraints": [
|
|
569
|
-
"delivery_shape=<replace-with-project-shape>",
|
|
570
|
-
"api_boundary=<replace-with-public-entry>",
|
|
571
|
-
"data_boundary=<replace-with-persistence-or-none>",
|
|
572
|
-
"test_double_policy=<replace-with-policy>"
|
|
573
|
-
],
|
|
574
|
-
"forbidden_implementations": [
|
|
575
|
-
"禁止把测试替身、mock、fixture、local-only adapter 或领域原型作为声明交付路径完成",
|
|
576
|
-
"替换为 US2 的具体禁止实现"
|
|
577
|
-
],
|
|
578
|
-
"qa_contract": {
|
|
579
|
-
"source": [
|
|
580
|
-
"docs/testing/NATURAL_LANGUAGE_TEST_CASES.md",
|
|
581
|
-
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
582
|
-
"docs/testing/test-matrix.md",
|
|
583
|
-
"docs/testing/verify-matrix.md"
|
|
584
|
-
],
|
|
585
|
-
"required_layers": [
|
|
586
|
-
"unit_or_component",
|
|
587
|
-
"contract_or_api",
|
|
588
|
-
"story_full_chain",
|
|
589
|
-
"affected_regression"
|
|
590
|
-
],
|
|
591
|
-
"tdd_contract": {
|
|
592
|
-
"policy": "required",
|
|
593
|
-
"red": {
|
|
594
|
-
"source_case_ids": [
|
|
595
|
-
"TC-REQ-REPLACE-US2-001"
|
|
596
|
-
],
|
|
597
|
-
"behavior": "<replace-with-one-new-or-changed-us2-behavior>",
|
|
598
|
-
"test_files": [
|
|
599
|
-
"<replace-with-us2-focused-test-file>"
|
|
600
|
-
],
|
|
601
|
-
"command": "<replace-with-us2-focused-test-command>",
|
|
602
|
-
"expected_failure": "<replace-with-us2-error-or-assertion-that-proves-behavior-missing>",
|
|
603
|
-
"evidence": "artifacts/tdd/US2-001/red.log"
|
|
604
|
-
},
|
|
605
|
-
"green": {
|
|
606
|
-
"command": "<replace-with-same-us2-focused-test-command>",
|
|
607
|
-
"evidence": "artifacts/tdd/US2-001/green.log"
|
|
608
|
-
},
|
|
609
|
-
"refactor_guard": {
|
|
610
|
-
"command": "<replace-with-us2-affected-tests-or-development-validation>",
|
|
611
|
-
"evidence": "artifacts/tdd/US2-001/refactor.log"
|
|
612
|
-
},
|
|
613
|
-
"coverage": {
|
|
614
|
-
"command": "<replace-with-us2-coverage-command-or-not-applicable>",
|
|
615
|
-
"minimum": "80% for business logic; 100% for critical logic"
|
|
616
|
-
},
|
|
617
|
-
"exemptions": []
|
|
618
|
-
},
|
|
619
|
-
"development_validation": {
|
|
620
|
-
"purpose": "coding-time feedback only; cannot replace acceptance_validation",
|
|
621
|
-
"commands": [
|
|
622
|
-
"<replace-with-affected-tests>",
|
|
623
|
-
"<replace-with-unit-or-component-tests>",
|
|
624
|
-
"<replace-with-contract-or-typecheck-or-lint>"
|
|
625
|
-
],
|
|
626
|
-
"evidence": [
|
|
627
|
-
"<replace-with-development-test-log-or-report>"
|
|
628
|
-
]
|
|
629
|
-
},
|
|
630
|
-
"story_full_chain": {
|
|
631
|
-
"source_case_ids": [
|
|
632
|
-
"TC-REQ-REPLACE-US2-FULLCHAIN-001"
|
|
633
|
-
],
|
|
634
|
-
"entry": "<replace-with-user-visible-entry-or-public-api>",
|
|
635
|
-
"data": "<replace-with-seed-or-fixture-id-from-TEST_DATA_MATRIX>",
|
|
636
|
-
"action": "<replace-with-end-to-end-story-action>",
|
|
637
|
-
"oracles": [
|
|
638
|
-
"response_or_ui",
|
|
639
|
-
"database_or_state",
|
|
640
|
-
"side_effect_or_no_side_effect"
|
|
641
|
-
],
|
|
642
|
-
"evidence": [
|
|
643
|
-
"<replace-with-request-response-or-screenshot>",
|
|
644
|
-
"<replace-with-db-diff-or-state-proof>",
|
|
645
|
-
"<replace-with-trace-log-or-event-proof>"
|
|
646
|
-
],
|
|
647
|
-
"failure_mode": "<replace-with-negative-or-error-path-proof>"
|
|
648
|
-
},
|
|
649
|
-
"acceptance_validation": {
|
|
650
|
-
"purpose": "post-implementation user or business full-chain validation",
|
|
651
|
-
"must_run_after_implementation": true,
|
|
652
|
-
"source": "story_full_chain",
|
|
653
|
-
"source_case_ids": [
|
|
654
|
-
"TC-REQ-REPLACE-US2-FULLCHAIN-001"
|
|
655
|
-
],
|
|
656
|
-
"fresh_evidence_required": true
|
|
657
|
-
},
|
|
658
|
-
"release_impact": [
|
|
659
|
-
"US2 evidence must feed RELEASE-001 cross-story flow"
|
|
660
|
-
],
|
|
661
|
-
"exemptions": []
|
|
662
|
-
},
|
|
663
|
-
"context_files": [
|
|
664
|
-
"docs/product/prd-lite.md",
|
|
665
|
-
"docs/product/requirement-interface-matrix.md",
|
|
666
|
-
"docs/architecture/constraints.md",
|
|
667
|
-
"docs/context/feature-pack.md",
|
|
668
|
-
"docs/design/design-brief.md",
|
|
669
|
-
"docs/design/component-map.md",
|
|
670
|
-
"docs/design/screen-states.md",
|
|
671
|
-
"docs/testing/ACCEPTANCE_CRITERIA.md",
|
|
672
|
-
"docs/testing/ACCEPTANCE_EXAMPLES.md",
|
|
673
|
-
"docs/testing/NATURAL_LANGUAGE_TEST_CASES.md",
|
|
674
|
-
"docs/testing/REGRESSION_PLAN.md",
|
|
675
|
-
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
676
|
-
"docs/testing/TEST_STRATEGY.md",
|
|
677
|
-
"docs/testing/TEST_DATA_MATRIX.md",
|
|
678
|
-
"docs/testing/EVIDENCE_PROTOCOL.md",
|
|
679
|
-
"docs/testing/test-matrix.md",
|
|
680
|
-
"docs/testing/verify-matrix.md",
|
|
681
|
-
"plans/features/<feature-slug>.dev-plan.md"
|
|
682
|
-
],
|
|
683
|
-
"owned_paths": [
|
|
684
|
-
"<replace-with-us2-owned-path-1>/",
|
|
685
|
-
"<replace-with-us2-owned-path-2>/"
|
|
686
|
-
],
|
|
687
|
-
"requirement_ids": [
|
|
688
|
-
"FR-REPLACE-US2-001",
|
|
689
|
-
"FR-REPLACE-US2-002"
|
|
690
|
-
],
|
|
691
|
-
"produces_artifacts": [
|
|
692
|
-
"<replace-with-us2-primary-artifact>",
|
|
693
|
-
"<replace-with-us2-test-evidence>"
|
|
694
|
-
],
|
|
695
|
-
"execution": {
|
|
696
|
-
"mode": "single"
|
|
697
|
-
},
|
|
698
|
-
"steps": [
|
|
699
|
-
"将 US2 占位内容替换为真实范围、路径、需求编号和验证命令",
|
|
700
|
-
"把 qa_contract 中的 tdd_contract.source_case_ids、story_full_chain.source_case_ids、acceptance_validation.source_case_ids、入口、数据、动作、Oracle、证据、失败态和 release impact 全部替换为真实内容",
|
|
701
|
-
"单个 feature_impl 默认不超过 3 条主 requirement_ids;订单、支付、库存、RBAC 不要和其他主故事捆绑;前端和后端不要长期混在同一个 story",
|
|
702
|
-
"确保 US2 可作为独立增量交付,不把未确认范围混入同一任务",
|
|
703
|
-
"补齐 US2 的 affected tests、开发验证、代码完成后的故事级验收链路、回归说明和证据路径"
|
|
704
|
-
],
|
|
705
|
-
"test_command": "powershell -NoProfile -ExecutionPolicy Bypass -File .\\tools\\harness\\verify.ps1 -Commands @('<replace-with-project-fitness-check>', '<replace-with-affected-tests>', 'git diff --check')",
|
|
706
|
-
"acceptance": [
|
|
707
|
-
"US2 范围清晰且不与其他故事混杂",
|
|
708
|
-
"US2 满足架构约束 truth source,不以测试替身冒充声明交付路径",
|
|
709
|
-
"US2 的 tdd_contract 和验收链路均能回溯到 NATURAL_LANGUAGE_TEST_CASES.md 中的自然语言用例",
|
|
710
|
-
"US2 的开发验证和故事级验收链路均通过,且验收证据能进入 RELEASE-001",
|
|
711
|
-
"US2 的实现、验证和证据链可独立审查"
|
|
712
|
-
]
|
|
713
|
-
},
|
|
714
|
-
{
|
|
715
|
-
"id": "US3-001",
|
|
716
|
-
"description": "实现 US3:将第三个用户故事或跨端扩展故事替换为真实业务标题",
|
|
717
|
-
"task_kind": "feature_impl",
|
|
718
|
-
"phase": "us3",
|
|
719
|
-
"gate_profile": "spec_required",
|
|
720
|
-
"required_truth_sources": [
|
|
721
|
-
"product",
|
|
722
|
-
"design",
|
|
723
|
-
"plan",
|
|
724
|
-
"architecture",
|
|
725
|
-
"testing",
|
|
726
|
-
"repo_context"
|
|
727
|
-
],
|
|
728
|
-
"priority": 40,
|
|
729
|
-
"dependencies": [
|
|
730
|
-
"PLAN-001"
|
|
731
|
-
],
|
|
732
|
-
"passes": false,
|
|
733
|
-
"story_id": "US3",
|
|
734
|
-
"story_priority": "P2/P3",
|
|
735
|
-
"independent_test": "替换为 US3 的独立验证方式;如果不需要第三个故事,可删除该任务并重排优先级",
|
|
736
|
-
"architecture_constraints": [
|
|
737
|
-
"delivery_shape=<replace-with-project-shape>",
|
|
738
|
-
"api_boundary=<replace-with-public-entry>",
|
|
739
|
-
"data_boundary=<replace-with-persistence-or-none>",
|
|
740
|
-
"test_double_policy=<replace-with-policy>"
|
|
741
|
-
],
|
|
742
|
-
"forbidden_implementations": [
|
|
743
|
-
"禁止把测试替身、mock、fixture、local-only adapter 或领域原型作为声明交付路径完成",
|
|
744
|
-
"替换为 US3 的具体禁止实现"
|
|
745
|
-
],
|
|
746
|
-
"qa_contract": {
|
|
747
|
-
"source": [
|
|
748
|
-
"docs/testing/NATURAL_LANGUAGE_TEST_CASES.md",
|
|
749
|
-
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
750
|
-
"docs/testing/test-matrix.md",
|
|
751
|
-
"docs/testing/verify-matrix.md"
|
|
752
|
-
],
|
|
753
|
-
"required_layers": [
|
|
754
|
-
"unit_or_component",
|
|
755
|
-
"contract_or_api",
|
|
756
|
-
"story_full_chain",
|
|
757
|
-
"affected_regression"
|
|
758
|
-
],
|
|
759
|
-
"tdd_contract": {
|
|
760
|
-
"policy": "required",
|
|
761
|
-
"red": {
|
|
762
|
-
"source_case_ids": [
|
|
763
|
-
"TC-REQ-REPLACE-US3-001"
|
|
764
|
-
],
|
|
765
|
-
"behavior": "<replace-with-one-new-or-changed-us3-behavior>",
|
|
766
|
-
"test_files": [
|
|
767
|
-
"<replace-with-us3-focused-test-file>"
|
|
768
|
-
],
|
|
769
|
-
"command": "<replace-with-us3-focused-test-command>",
|
|
770
|
-
"expected_failure": "<replace-with-us3-error-or-assertion-that-proves-behavior-missing>",
|
|
771
|
-
"evidence": "artifacts/tdd/US3-001/red.log"
|
|
772
|
-
},
|
|
773
|
-
"green": {
|
|
774
|
-
"command": "<replace-with-same-us3-focused-test-command>",
|
|
775
|
-
"evidence": "artifacts/tdd/US3-001/green.log"
|
|
776
|
-
},
|
|
777
|
-
"refactor_guard": {
|
|
778
|
-
"command": "<replace-with-us3-affected-tests-or-development-validation>",
|
|
779
|
-
"evidence": "artifacts/tdd/US3-001/refactor.log"
|
|
780
|
-
},
|
|
781
|
-
"coverage": {
|
|
782
|
-
"command": "<replace-with-us3-coverage-command-or-not-applicable>",
|
|
783
|
-
"minimum": "80% for business logic; 100% for critical logic"
|
|
784
|
-
},
|
|
785
|
-
"exemptions": []
|
|
786
|
-
},
|
|
787
|
-
"development_validation": {
|
|
788
|
-
"purpose": "coding-time feedback only; cannot replace acceptance_validation",
|
|
789
|
-
"commands": [
|
|
790
|
-
"<replace-with-affected-tests>",
|
|
791
|
-
"<replace-with-unit-or-component-tests>",
|
|
792
|
-
"<replace-with-contract-or-typecheck-or-lint>"
|
|
793
|
-
],
|
|
794
|
-
"evidence": [
|
|
795
|
-
"<replace-with-development-test-log-or-report>"
|
|
796
|
-
]
|
|
797
|
-
},
|
|
798
|
-
"story_full_chain": {
|
|
799
|
-
"source_case_ids": [
|
|
800
|
-
"TC-REQ-REPLACE-US3-FULLCHAIN-001"
|
|
801
|
-
],
|
|
802
|
-
"entry": "<replace-with-user-visible-entry-or-public-api>",
|
|
803
|
-
"data": "<replace-with-seed-or-fixture-id-from-TEST_DATA_MATRIX>",
|
|
804
|
-
"action": "<replace-with-end-to-end-story-action>",
|
|
805
|
-
"oracles": [
|
|
806
|
-
"response_or_ui",
|
|
807
|
-
"database_or_state",
|
|
808
|
-
"side_effect_or_no_side_effect"
|
|
809
|
-
],
|
|
810
|
-
"evidence": [
|
|
811
|
-
"<replace-with-request-response-or-screenshot>",
|
|
812
|
-
"<replace-with-db-diff-or-state-proof>",
|
|
813
|
-
"<replace-with-trace-log-or-event-proof>"
|
|
814
|
-
],
|
|
815
|
-
"failure_mode": "<replace-with-negative-or-error-path-proof>"
|
|
816
|
-
},
|
|
817
|
-
"acceptance_validation": {
|
|
818
|
-
"purpose": "post-implementation user or business full-chain validation",
|
|
819
|
-
"must_run_after_implementation": true,
|
|
820
|
-
"source": "story_full_chain",
|
|
821
|
-
"source_case_ids": [
|
|
822
|
-
"TC-REQ-REPLACE-US3-FULLCHAIN-001"
|
|
823
|
-
],
|
|
824
|
-
"fresh_evidence_required": true
|
|
825
|
-
},
|
|
826
|
-
"release_impact": [
|
|
827
|
-
"US3 evidence must feed RELEASE-001 cross-story flow"
|
|
828
|
-
],
|
|
829
|
-
"exemptions": []
|
|
830
|
-
},
|
|
831
|
-
"context_files": [
|
|
832
|
-
"docs/product/prd-lite.md",
|
|
833
|
-
"docs/product/requirement-interface-matrix.md",
|
|
834
|
-
"docs/architecture/constraints.md",
|
|
835
|
-
"docs/context/feature-pack.md",
|
|
836
|
-
"docs/design/design-brief.md",
|
|
837
|
-
"docs/design/component-map.md",
|
|
838
|
-
"docs/design/screen-states.md",
|
|
839
|
-
"docs/testing/ACCEPTANCE_CRITERIA.md",
|
|
840
|
-
"docs/testing/ACCEPTANCE_EXAMPLES.md",
|
|
841
|
-
"docs/testing/NATURAL_LANGUAGE_TEST_CASES.md",
|
|
842
|
-
"docs/testing/REGRESSION_PLAN.md",
|
|
843
|
-
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
844
|
-
"docs/testing/TEST_STRATEGY.md",
|
|
845
|
-
"docs/testing/TEST_DATA_MATRIX.md",
|
|
846
|
-
"docs/testing/EVIDENCE_PROTOCOL.md",
|
|
847
|
-
"docs/testing/test-matrix.md",
|
|
848
|
-
"docs/testing/verify-matrix.md",
|
|
849
|
-
"plans/features/<feature-slug>.dev-plan.md"
|
|
850
|
-
],
|
|
851
|
-
"owned_paths": [
|
|
852
|
-
"<replace-with-us3-owned-path-1>/",
|
|
853
|
-
"<replace-with-us3-owned-path-2>/"
|
|
854
|
-
],
|
|
855
|
-
"requirement_ids": [
|
|
856
|
-
"FR-REPLACE-US3-001",
|
|
857
|
-
"FR-REPLACE-US3-002"
|
|
858
|
-
],
|
|
859
|
-
"produces_artifacts": [
|
|
860
|
-
"<replace-with-us3-primary-artifact>",
|
|
861
|
-
"<replace-with-us3-test-evidence>"
|
|
862
|
-
],
|
|
863
|
-
"execution": {
|
|
864
|
-
"mode": "single"
|
|
865
|
-
},
|
|
866
|
-
"steps": [
|
|
867
|
-
"将 US3 占位内容替换为真实故事标题、路径、需求编号和验证方式",
|
|
868
|
-
"把 qa_contract 中的 tdd_contract.source_case_ids、story_full_chain.source_case_ids、acceptance_validation.source_case_ids、入口、数据、动作、Oracle、证据、失败态和 release impact 全部替换为真实内容",
|
|
869
|
-
"单个 feature_impl 默认不超过 3 条主 requirement_ids;订单、支付、库存、RBAC 不要和其他主故事捆绑;前端和后端不要长期混在同一个 story",
|
|
870
|
-
"只承接剩余优先级最高且可单独验收的增量,不把 release 收口动作混入本故事",
|
|
871
|
-
"完成 US3 的实现、测试映射、开发验证、代码完成后的故事级验收链路和证据沉淀"
|
|
872
|
-
],
|
|
873
|
-
"test_command": "powershell -NoProfile -ExecutionPolicy Bypass -File .\\tools\\harness\\verify.ps1 -Commands @('<replace-with-project-fitness-check>', '<replace-with-affected-tests>', 'git diff --check')",
|
|
874
|
-
"acceptance": [
|
|
875
|
-
"US3 的增量边界和独立验收方式已明确",
|
|
876
|
-
"US3 满足架构约束 truth source,不以测试替身冒充声明交付路径",
|
|
877
|
-
"US3 的 tdd_contract 和验收链路均能回溯到 NATURAL_LANGUAGE_TEST_CASES.md 中的自然语言用例",
|
|
878
|
-
"US3 的开发验证和故事级验收链路均通过,且验收证据能进入 RELEASE-001",
|
|
879
|
-
"US3 的实现证据可直接服务最终 release 验证"
|
|
880
|
-
]
|
|
881
|
-
},
|
|
882
|
-
{
|
|
883
|
-
"id": "RELEASE-001",
|
|
884
|
-
"description": "执行跨故事联调、回归验证、视觉检查和交付收口",
|
|
885
|
-
"task_kind": "release",
|
|
886
|
-
"phase": "verify",
|
|
887
|
-
"gate_profile": "release_required",
|
|
888
|
-
"required_truth_sources": [
|
|
889
|
-
"product",
|
|
890
|
-
"design",
|
|
891
|
-
"plan",
|
|
892
|
-
"testing",
|
|
893
|
-
"repo_context"
|
|
894
|
-
],
|
|
895
|
-
"priority": 80,
|
|
896
|
-
"dependencies": [
|
|
897
|
-
"US1-001",
|
|
898
|
-
"US2-001",
|
|
899
|
-
"US3-001"
|
|
900
|
-
],
|
|
901
|
-
"passes": false,
|
|
902
|
-
"qa_contract": {
|
|
903
|
-
"source": [
|
|
904
|
-
"docs/testing/NATURAL_LANGUAGE_TEST_CASES.md",
|
|
905
|
-
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
906
|
-
"docs/testing/REGRESSION_PLAN.md",
|
|
907
|
-
"docs/testing/verify-matrix.md",
|
|
908
|
-
"docs/testing/EVIDENCE_PROTOCOL.md"
|
|
909
|
-
],
|
|
910
|
-
"required_layers": [
|
|
911
|
-
"cross_story_full_chain",
|
|
912
|
-
"p0_p1_regression",
|
|
913
|
-
"contract_or_api",
|
|
914
|
-
"e2e_or_equivalent_system_test",
|
|
915
|
-
"visual_or_ui_state_review_when_applicable",
|
|
916
|
-
"failure_triage"
|
|
917
|
-
],
|
|
918
|
-
"development_validation": {
|
|
919
|
-
"purpose": "release-task setup and affected checks only; cannot replace release_candidate acceptance",
|
|
920
|
-
"commands": [
|
|
921
|
-
"<replace-with-affected-regression-or-contract-checks>",
|
|
922
|
-
"<replace-with-build-or-typecheck-if-applicable>"
|
|
923
|
-
],
|
|
924
|
-
"evidence": [
|
|
925
|
-
"<replace-with-release-precheck-log-or-report>"
|
|
926
|
-
]
|
|
927
|
-
},
|
|
928
|
-
"cross_story_full_chain": {
|
|
929
|
-
"source_case_ids": [
|
|
930
|
-
"TC-REQ-REPLACE-RELEASE-001"
|
|
931
|
-
],
|
|
932
|
-
"entry": "<replace-with-primary-user-or-system-entry>",
|
|
933
|
-
"flow": [
|
|
934
|
-
"US1",
|
|
935
|
-
"US2",
|
|
936
|
-
"US3"
|
|
937
|
-
],
|
|
938
|
-
"oracles": [
|
|
939
|
-
"user_visible_result",
|
|
940
|
-
"api_contract",
|
|
941
|
-
"data_consistency",
|
|
942
|
-
"side_effects",
|
|
943
|
-
"audit_or_trace"
|
|
944
|
-
],
|
|
945
|
-
"evidence": [
|
|
946
|
-
"docs/testing/verify-matrix.md",
|
|
947
|
-
"docs/testing/failure-triage.md",
|
|
948
|
-
"artifacts/"
|
|
949
|
-
],
|
|
950
|
-
"failure_mode": "<replace-with-release-failure-path-proof>"
|
|
951
|
-
},
|
|
952
|
-
"acceptance_validation": {
|
|
953
|
-
"purpose": "post-implementation release-candidate validation from user or delivery perspective",
|
|
954
|
-
"must_run_after_all_story_tasks": true,
|
|
955
|
-
"source": "cross_story_full_chain",
|
|
956
|
-
"source_case_ids": [
|
|
957
|
-
"TC-REQ-REPLACE-RELEASE-001"
|
|
958
|
-
],
|
|
959
|
-
"fresh_evidence_required": true
|
|
960
|
-
},
|
|
961
|
-
"exemptions": []
|
|
962
|
-
},
|
|
963
|
-
"context_files": [
|
|
964
|
-
"docs/context/feature-pack.md",
|
|
965
|
-
"docs/design/visual-parity-review.md",
|
|
966
|
-
"docs/testing/ACCEPTANCE_EXAMPLES.md",
|
|
967
|
-
"docs/testing/TRACEABILITY_MATRIX.md",
|
|
968
|
-
"docs/testing/TEST_STRATEGY.md",
|
|
969
|
-
"docs/testing/REGRESSION_PLAN.md",
|
|
970
|
-
"docs/testing/EVIDENCE_PROTOCOL.md",
|
|
971
|
-
"docs/testing/test-matrix.md",
|
|
972
|
-
"docs/testing/verify-matrix.md",
|
|
973
|
-
"docs/testing/failure-triage.md",
|
|
974
|
-
"plans/features/<feature-slug>.dev-plan.md"
|
|
975
|
-
],
|
|
976
|
-
"owned_paths": [
|
|
977
|
-
"docs/testing/",
|
|
978
|
-
"docs/design/",
|
|
979
|
-
"artifacts/",
|
|
980
|
-
"tests/"
|
|
981
|
-
],
|
|
982
|
-
"requirement_ids": [
|
|
983
|
-
"NFR-REPLACE-RELEASE",
|
|
984
|
-
"FR-REPLACE-END-TO-END"
|
|
985
|
-
],
|
|
986
|
-
"produces_artifacts": [
|
|
987
|
-
"artifacts/visual-review/",
|
|
988
|
-
"docs/testing/failure-triage.md",
|
|
989
|
-
"traces/"
|
|
990
|
-
],
|
|
991
|
-
"execution": {
|
|
992
|
-
"mode": "single"
|
|
993
|
-
},
|
|
994
|
-
"steps": [
|
|
995
|
-
"执行开发验证、P0/P1 回归、发布候选级跨故事整链路、端到端、视觉还原和必要契约校验",
|
|
996
|
-
"记录失败归因、修复建议、最终通过证据和剩余风险",
|
|
997
|
-
"确认 release 阶段只负责 fresh evidence,不在此阶段第一次补需求或测试范围"
|
|
998
|
-
],
|
|
999
|
-
"test_command": "powershell -NoProfile -ExecutionPolicy Bypass -File .\\tools\\harness\\tools/harness/verify.ps1",
|
|
1000
|
-
"acceptance": [
|
|
1001
|
-
"跨故事完整主流程验证通过,或有明确 blocked 说明与后续处置",
|
|
1002
|
-
"P0/P1 回归、契约/API、E2E/视觉或等价系统级验证均有 fresh evidence",
|
|
1003
|
-
"交付所需的测试与视觉证据完整可追溯"
|
|
1004
|
-
]
|
|
1005
|
-
},
|
|
1006
|
-
{
|
|
1007
|
-
"id": "ARCHIVE-001",
|
|
1008
|
-
"description": "归档本轮交付知识、更新知识索引并标记可复用经验",
|
|
1009
|
-
"task_kind": "archive",
|
|
1010
|
-
"phase": "archive",
|
|
1011
|
-
"gate_profile": "lightweight",
|
|
1012
|
-
"required_truth_sources": [
|
|
1013
|
-
"knowledge"
|
|
1014
|
-
],
|
|
1015
|
-
"priority": 90,
|
|
1016
|
-
"dependencies": [
|
|
1017
|
-
"RELEASE-001"
|
|
1018
|
-
],
|
|
1019
|
-
"passes": false,
|
|
1020
|
-
"context_files": [
|
|
1021
|
-
"docs/harness/knowledge-architecture.md",
|
|
1022
|
-
"docs/harness/knowledge-import.md",
|
|
1023
|
-
"docs/harness/knowledge-lint.md",
|
|
1024
|
-
"docs/harness/team-knowledge-sync.md",
|
|
1025
|
-
"docs/harness/rule-governance.md",
|
|
1026
|
-
"docs/knowledge/knowledge-catalog.md",
|
|
1027
|
-
"docs/knowledge/catalog.md",
|
|
1028
|
-
"progress.txt",
|
|
1029
|
-
"traces/"
|
|
1030
|
-
],
|
|
1031
|
-
"owned_paths": [
|
|
1032
|
-
"docs/knowledge/"
|
|
1033
|
-
],
|
|
1034
|
-
"requirement_ids": [
|
|
1035
|
-
"NFR-KNOWLEDGE-ARCHIVE"
|
|
1036
|
-
],
|
|
1037
|
-
"produces_artifacts": [
|
|
1038
|
-
"docs/knowledge/knowledge-catalog.md",
|
|
1039
|
-
"docs/knowledge/catalog.md",
|
|
1040
|
-
"docs/knowledge/"
|
|
1041
|
-
],
|
|
1042
|
-
"execution": {
|
|
1043
|
-
"mode": "single"
|
|
1044
|
-
},
|
|
1045
|
-
"knowledge_query_budget": {
|
|
1046
|
-
"catalogs": 2,
|
|
1047
|
-
"entries": 8
|
|
1048
|
-
},
|
|
1049
|
-
"steps": [
|
|
1050
|
-
"读取本轮任务 trace、progress、review 输出和 failure triage,提取可复用的 decision、guideline、pitfall、process 或 model",
|
|
1051
|
-
"新增或更新 docs/knowledge/ 下的知识条目,所有新增条目初始 maturity 默认为 draft",
|
|
1052
|
-
"更新 knowledge-catalog.md 和 catalog.md,确保索引能按阶段和类型引导后续任务按需读取",
|
|
1053
|
-
"输出 promotion、decay、conflict、merge 和 team sync candidates;成熟度提升、团队同步、冲突裁决和归档删除必须有明确 evidence",
|
|
1054
|
-
"不要把一次性任务结论提升为 AGENTS.md 规则;只有 proven 级别或用户明确要求时才升级规则"
|
|
1055
|
-
],
|
|
1056
|
-
"test_command": "git diff --check",
|
|
1057
|
-
"acceptance": [
|
|
1058
|
-
"本轮可复用知识已沉淀到 docs/knowledge/ 或明确说明没有可归档条目",
|
|
1059
|
-
"knowledge-catalog.md 和 catalog.md 与新增或更新条目保持一致",
|
|
1060
|
-
"可提升、可衰减、可团队同步、冲突和重复条目已有候选说明或明确无相关候选",
|
|
1061
|
-
"归档任务没有修改业务实现或伪造 driver runtime 状态"
|
|
1062
|
-
]
|
|
1063
|
-
}
|
|
1064
|
-
]
|
|
1065
|
-
}
|
|
316
|
+
}
|
|
317
|
+
]
|
|
318
|
+
}
|