@mycodemap/mycodemap 0.4.2 → 0.5.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/CHANGELOG.md +92 -3
- package/README.md +117 -46
- package/dist/ai/claude.d.ts +38 -0
- package/dist/ai/claude.d.ts.map +1 -0
- package/dist/ai/claude.js +169 -0
- package/dist/ai/claude.js.map +1 -0
- package/dist/ai/codex.d.ts +38 -0
- package/dist/ai/codex.d.ts.map +1 -0
- package/dist/ai/codex.js +169 -0
- package/dist/ai/codex.js.map +1 -0
- package/dist/ai/factory.d.ts +48 -0
- package/dist/ai/factory.d.ts.map +1 -0
- package/dist/ai/factory.js +95 -0
- package/dist/ai/factory.js.map +1 -0
- package/dist/ai/index.d.ts +12 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +29 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/provider.d.ts +70 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +31 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/subagent-caller.d.ts +90 -0
- package/dist/ai/subagent-caller.d.ts.map +1 -0
- package/dist/ai/subagent-caller.js +280 -0
- package/dist/ai/subagent-caller.js.map +1 -0
- package/dist/ai/types.d.ts +70 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +5 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/cli/commands/design.d.ts +47 -0
- package/dist/cli/commands/design.d.ts.map +1 -0
- package/dist/cli/commands/design.js +268 -0
- package/dist/cli/commands/design.js.map +1 -0
- package/dist/cli/commands/server.d.ts +9 -0
- package/dist/cli/commands/server.d.ts.map +1 -0
- package/dist/cli/commands/server.js +65 -0
- package/dist/cli/commands/server.js.map +1 -0
- package/dist/cli/commands/ship/pipeline.d.ts.map +1 -1
- package/dist/cli/commands/ship/pipeline.js +8 -1
- package/dist/cli/commands/ship/pipeline.js.map +1 -1
- package/dist/cli/commands/ship/publisher.d.ts +9 -1
- package/dist/cli/commands/ship/publisher.d.ts.map +1 -1
- package/dist/cli/commands/ship/publisher.js +149 -6
- package/dist/cli/commands/ship/publisher.js.map +1 -1
- package/dist/cli/design-contract-loader.d.ts +15 -0
- package/dist/cli/design-contract-loader.d.ts.map +1 -0
- package/dist/cli/design-contract-loader.js +175 -0
- package/dist/cli/design-contract-loader.js.map +1 -0
- package/dist/cli/design-contract-schema.d.ts +11 -0
- package/dist/cli/design-contract-schema.d.ts.map +1 -0
- package/dist/cli/design-contract-schema.js +75 -0
- package/dist/cli/design-contract-schema.js.map +1 -0
- package/dist/cli/design-handoff-builder.d.ts +15 -0
- package/dist/cli/design-handoff-builder.d.ts.map +1 -0
- package/dist/cli/design-handoff-builder.js +345 -0
- package/dist/cli/design-handoff-builder.js.map +1 -0
- package/dist/cli/design-scope-resolver.d.ts +8 -0
- package/dist/cli/design-scope-resolver.d.ts.map +1 -0
- package/dist/cli/design-scope-resolver.js +712 -0
- package/dist/cli/design-scope-resolver.js.map +1 -0
- package/dist/cli/design-verification-builder.d.ts +8 -0
- package/dist/cli/design-verification-builder.d.ts.map +1 -0
- package/dist/cli/design-verification-builder.js +369 -0
- package/dist/cli/design-verification-builder.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli-new/commands/server.d.ts +13 -0
- package/dist/cli-new/commands/server.d.ts.map +1 -0
- package/dist/cli-new/commands/server.js +90 -0
- package/dist/cli-new/commands/server.js.map +1 -0
- package/dist/generator/ai-overview.d.ts +51 -0
- package/dist/generator/ai-overview.d.ts.map +1 -0
- package/dist/generator/ai-overview.js +160 -0
- package/dist/generator/ai-overview.js.map +1 -0
- package/dist/infrastructure/storage/StorageFactory.d.ts +12 -5
- package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -1
- package/dist/infrastructure/storage/StorageFactory.js +55 -14
- package/dist/infrastructure/storage/StorageFactory.js.map +1 -1
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +41 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js +162 -0
- package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
- package/dist/interface/types/design-contract.d.ts +68 -0
- package/dist/interface/types/design-contract.d.ts.map +1 -0
- package/dist/interface/types/design-contract.js +7 -0
- package/dist/interface/types/design-contract.js.map +1 -0
- package/dist/interface/types/design-handoff.d.ts +68 -0
- package/dist/interface/types/design-handoff.d.ts.map +1 -0
- package/dist/interface/types/design-handoff.js +4 -0
- package/dist/interface/types/design-handoff.js.map +1 -0
- package/dist/interface/types/design-mapping.d.ts +51 -0
- package/dist/interface/types/design-mapping.d.ts.map +1 -0
- package/dist/interface/types/design-mapping.js +4 -0
- package/dist/interface/types/design-mapping.js.map +1 -0
- package/dist/interface/types/design-verification.d.ts +49 -0
- package/dist/interface/types/design-verification.d.ts.map +1 -0
- package/dist/interface/types/design-verification.js +4 -0
- package/dist/interface/types/design-verification.js.map +1 -0
- package/dist/interface/types/index.d.ts +4 -0
- package/dist/interface/types/index.d.ts.map +1 -1
- package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
- package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
- package/dist/orchestrator/ai-feed-generator.js +377 -0
- package/dist/orchestrator/ai-feed-generator.js.map +1 -0
- package/docs/ai-guide/COMMANDS.md +73 -0
- package/docs/ai-guide/OUTPUT.md +415 -0
- package/docs/ai-guide/PATTERNS.md +14 -4
- package/docs/ai-guide/PROMPTS.md +12 -6
- package/docs/archive/test-report-symbol-search.md +384 -0
- package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
- package/docs/archive/test_report_scenario5.md +615 -0
- package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
- package/docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md +79 -0
- package/docs/product-specs/README.md +2 -1
- package/docs/rules/engineering-with-codex-openai.md +6 -2
- package/docs/rules/validation.md +9 -6
- package/package.json +1 -1
- package/scripts/experiments/arcadedb-http-smoke.mjs +90 -0
- package/scripts/validate-docs.js +247 -0
package/docs/ai-guide/OUTPUT.md
CHANGED
|
@@ -405,6 +405,421 @@ interface StructuredResult {
|
|
|
405
405
|
|
|
406
406
|
---
|
|
407
407
|
|
|
408
|
+
## design validate 命令输出结构
|
|
409
|
+
|
|
410
|
+
### JSON 输出 (--json)
|
|
411
|
+
|
|
412
|
+
```typescript
|
|
413
|
+
type DesignContractSectionId =
|
|
414
|
+
| "goal"
|
|
415
|
+
| "constraints"
|
|
416
|
+
| "acceptanceCriteria"
|
|
417
|
+
| "nonGoals"
|
|
418
|
+
| "context"
|
|
419
|
+
| "openQuestions"
|
|
420
|
+
| "notes";
|
|
421
|
+
|
|
422
|
+
type DesignContractDiagnosticCode =
|
|
423
|
+
| "file-not-found"
|
|
424
|
+
| "missing-section"
|
|
425
|
+
| "duplicate-section"
|
|
426
|
+
| "empty-section"
|
|
427
|
+
| "unknown-section"
|
|
428
|
+
| "ambiguous-heading";
|
|
429
|
+
|
|
430
|
+
interface DesignValidateOutput {
|
|
431
|
+
ok: boolean;
|
|
432
|
+
exists: boolean;
|
|
433
|
+
filePath: string;
|
|
434
|
+
title?: string;
|
|
435
|
+
missingRequiredSections: Array<"goal" | "constraints" | "acceptanceCriteria" | "nonGoals">;
|
|
436
|
+
diagnostics: DesignContractDiagnostic[];
|
|
437
|
+
sections: Array<{
|
|
438
|
+
id: DesignContractSectionId;
|
|
439
|
+
title: string;
|
|
440
|
+
line: number;
|
|
441
|
+
itemCount: number;
|
|
442
|
+
}>;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
interface DesignContractDiagnostic {
|
|
446
|
+
code: DesignContractDiagnosticCode;
|
|
447
|
+
severity: "error" | "warning" | "info";
|
|
448
|
+
message: string;
|
|
449
|
+
section?: DesignContractSectionId;
|
|
450
|
+
heading?: string;
|
|
451
|
+
line?: number;
|
|
452
|
+
suggestion?: string;
|
|
453
|
+
}
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
### 示例
|
|
457
|
+
|
|
458
|
+
```json
|
|
459
|
+
{
|
|
460
|
+
"ok": false,
|
|
461
|
+
"exists": true,
|
|
462
|
+
"filePath": "/repo/mycodemap.design.md",
|
|
463
|
+
"title": "Design Contract: Missing acceptance example",
|
|
464
|
+
"missingRequiredSections": [
|
|
465
|
+
"acceptanceCriteria"
|
|
466
|
+
],
|
|
467
|
+
"diagnostics": [
|
|
468
|
+
{
|
|
469
|
+
"code": "missing-section",
|
|
470
|
+
"severity": "error",
|
|
471
|
+
"message": "缺少必填 section: Acceptance Criteria",
|
|
472
|
+
"section": "acceptanceCriteria"
|
|
473
|
+
}
|
|
474
|
+
],
|
|
475
|
+
"sections": [
|
|
476
|
+
{
|
|
477
|
+
"id": "goal",
|
|
478
|
+
"title": "Goal",
|
|
479
|
+
"line": 3,
|
|
480
|
+
"itemCount": 1
|
|
481
|
+
}
|
|
482
|
+
]
|
|
483
|
+
}
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
> `design validate --json` 必须保持纯 JSON;不要在前后拼接说明性 prose。
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
## design map 命令输出结构
|
|
491
|
+
|
|
492
|
+
### JSON 输出 (--json)
|
|
493
|
+
|
|
494
|
+
```typescript
|
|
495
|
+
type DesignMappingCandidateKind = "file" | "module" | "symbol";
|
|
496
|
+
|
|
497
|
+
type DesignMappingDiagnosticCode =
|
|
498
|
+
| "no-candidates"
|
|
499
|
+
| "over-broad-scope"
|
|
500
|
+
| "high-risk-scope"
|
|
501
|
+
| string;
|
|
502
|
+
|
|
503
|
+
interface DesignMappingReason {
|
|
504
|
+
section: DesignContractSectionId;
|
|
505
|
+
matchedText: string;
|
|
506
|
+
evidenceType: string;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
interface DesignMappingCandidate {
|
|
510
|
+
kind: DesignMappingCandidateKind;
|
|
511
|
+
path: string;
|
|
512
|
+
moduleName?: string;
|
|
513
|
+
symbolName?: string;
|
|
514
|
+
reasons: DesignMappingReason[];
|
|
515
|
+
dependencies: string[];
|
|
516
|
+
testImpact: string[];
|
|
517
|
+
risk: "high" | "medium" | "low";
|
|
518
|
+
confidence: {
|
|
519
|
+
score: number;
|
|
520
|
+
level: "high" | "medium" | "low";
|
|
521
|
+
};
|
|
522
|
+
unknowns: string[];
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
interface DesignMappingDiagnostic {
|
|
526
|
+
code: DesignMappingDiagnosticCode;
|
|
527
|
+
severity: "error" | "warning" | "info";
|
|
528
|
+
blocker: boolean;
|
|
529
|
+
message: string;
|
|
530
|
+
candidatePaths?: string[];
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
interface DesignMapOutput {
|
|
534
|
+
ok: boolean;
|
|
535
|
+
filePath: string;
|
|
536
|
+
summary: {
|
|
537
|
+
candidateCount: number;
|
|
538
|
+
blocked: boolean;
|
|
539
|
+
unknownCount: number;
|
|
540
|
+
diagnosticCount: number;
|
|
541
|
+
};
|
|
542
|
+
candidates: DesignMappingCandidate[];
|
|
543
|
+
diagnostics: DesignMappingDiagnostic[];
|
|
544
|
+
}
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
### 示例
|
|
548
|
+
|
|
549
|
+
```json
|
|
550
|
+
{
|
|
551
|
+
"ok": false,
|
|
552
|
+
"filePath": "/repo/mycodemap.design.md",
|
|
553
|
+
"summary": {
|
|
554
|
+
"candidateCount": 1,
|
|
555
|
+
"blocked": true,
|
|
556
|
+
"unknownCount": 0,
|
|
557
|
+
"diagnosticCount": 1
|
|
558
|
+
},
|
|
559
|
+
"candidates": [
|
|
560
|
+
{
|
|
561
|
+
"kind": "file",
|
|
562
|
+
"path": "src/cli/commands/analyze.ts",
|
|
563
|
+
"reasons": [
|
|
564
|
+
{
|
|
565
|
+
"section": "goal",
|
|
566
|
+
"matchedText": "src/cli/commands/analyze.ts",
|
|
567
|
+
"evidenceType": "path-anchor"
|
|
568
|
+
}
|
|
569
|
+
],
|
|
570
|
+
"dependencies": [],
|
|
571
|
+
"testImpact": [],
|
|
572
|
+
"risk": "high",
|
|
573
|
+
"confidence": {
|
|
574
|
+
"score": 0.92,
|
|
575
|
+
"level": "high"
|
|
576
|
+
},
|
|
577
|
+
"unknowns": []
|
|
578
|
+
}
|
|
579
|
+
],
|
|
580
|
+
"diagnostics": [
|
|
581
|
+
{
|
|
582
|
+
"code": "high-risk-scope",
|
|
583
|
+
"severity": "error",
|
|
584
|
+
"blocker": true,
|
|
585
|
+
"message": "候选范围命中了高 blast-radius 文件;请先补充更具体的 design scope,再继续执行。"
|
|
586
|
+
}
|
|
587
|
+
]
|
|
588
|
+
}
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
> `design map --json` 必须保持纯 JSON;不要在前后拼接说明性 prose。`unknowns` 与 `diagnostics` 都属于正式契约,不是可选注释。
|
|
592
|
+
|
|
593
|
+
---
|
|
594
|
+
|
|
595
|
+
## design handoff 命令输出结构
|
|
596
|
+
|
|
597
|
+
### JSON 输出 (--json)
|
|
598
|
+
|
|
599
|
+
```typescript
|
|
600
|
+
type DesignHandoffApprovalStatus = "approved" | "needs-review";
|
|
601
|
+
|
|
602
|
+
interface DesignHandoffTraceItem {
|
|
603
|
+
id: string;
|
|
604
|
+
text: string;
|
|
605
|
+
sourceRefs: string[];
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
interface DesignHandoffOutput {
|
|
609
|
+
ok: boolean;
|
|
610
|
+
filePath: string;
|
|
611
|
+
outputDir: string;
|
|
612
|
+
readyForExecution: boolean;
|
|
613
|
+
artifacts: {
|
|
614
|
+
markdownPath: string;
|
|
615
|
+
jsonPath: string;
|
|
616
|
+
};
|
|
617
|
+
summary: {
|
|
618
|
+
approvalCount: number;
|
|
619
|
+
assumptionCount: number;
|
|
620
|
+
openQuestionCount: number;
|
|
621
|
+
requiresReview: boolean;
|
|
622
|
+
};
|
|
623
|
+
handoff: {
|
|
624
|
+
touchedFiles: string[];
|
|
625
|
+
constraints: string[];
|
|
626
|
+
tests: string[];
|
|
627
|
+
approvals: Array<DesignHandoffTraceItem & {
|
|
628
|
+
status: DesignHandoffApprovalStatus;
|
|
629
|
+
}>;
|
|
630
|
+
assumptions: DesignHandoffTraceItem[];
|
|
631
|
+
openQuestions: DesignHandoffTraceItem[];
|
|
632
|
+
};
|
|
633
|
+
diagnostics: Array<{
|
|
634
|
+
code: "blocked-mapping" | "review-required" | string;
|
|
635
|
+
blocker: boolean;
|
|
636
|
+
message: string;
|
|
637
|
+
}>;
|
|
638
|
+
}
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
### 示例
|
|
642
|
+
|
|
643
|
+
```json
|
|
644
|
+
{
|
|
645
|
+
"ok": true,
|
|
646
|
+
"filePath": "/repo/mycodemap.design.md",
|
|
647
|
+
"outputDir": "/repo/.mycodemap/handoffs",
|
|
648
|
+
"readyForExecution": false,
|
|
649
|
+
"artifacts": {
|
|
650
|
+
"markdownPath": "/repo/.mycodemap/handoffs/mycodemap.handoff.md",
|
|
651
|
+
"jsonPath": "/repo/.mycodemap/handoffs/mycodemap.handoff.json"
|
|
652
|
+
},
|
|
653
|
+
"summary": {
|
|
654
|
+
"approvalCount": 4,
|
|
655
|
+
"assumptionCount": 1,
|
|
656
|
+
"openQuestionCount": 1,
|
|
657
|
+
"requiresReview": true
|
|
658
|
+
},
|
|
659
|
+
"handoff": {
|
|
660
|
+
"touchedFiles": [
|
|
661
|
+
"src/cli/design-handoff-builder.ts"
|
|
662
|
+
],
|
|
663
|
+
"constraints": [
|
|
664
|
+
"默认 artifact path 必须复用 src/cli/paths.ts"
|
|
665
|
+
],
|
|
666
|
+
"tests": [
|
|
667
|
+
"src/cli/__tests__/design-handoff-builder.test.ts"
|
|
668
|
+
],
|
|
669
|
+
"approvals": [
|
|
670
|
+
{
|
|
671
|
+
"id": "approved-goal",
|
|
672
|
+
"status": "approved",
|
|
673
|
+
"text": "Goal 已被纳入 handoff 事实输入",
|
|
674
|
+
"sourceRefs": ["design:goal"]
|
|
675
|
+
}
|
|
676
|
+
],
|
|
677
|
+
"assumptions": [
|
|
678
|
+
{
|
|
679
|
+
"id": "assumption-1-1",
|
|
680
|
+
"text": "需要补充 reviewer 对未知范围的确认",
|
|
681
|
+
"sourceRefs": ["candidate:src/cli/design-handoff-builder.ts"]
|
|
682
|
+
}
|
|
683
|
+
],
|
|
684
|
+
"openQuestions": [
|
|
685
|
+
{
|
|
686
|
+
"id": "open-question-1",
|
|
687
|
+
"text": "低风险 assumptions 是否也必须显式批准?",
|
|
688
|
+
"sourceRefs": ["design:openQuestions"]
|
|
689
|
+
}
|
|
690
|
+
]
|
|
691
|
+
},
|
|
692
|
+
"diagnostics": [
|
|
693
|
+
{
|
|
694
|
+
"code": "review-required",
|
|
695
|
+
"blocker": false,
|
|
696
|
+
"message": "Handoff generated successfully but still requires human review before execution."
|
|
697
|
+
}
|
|
698
|
+
]
|
|
699
|
+
}
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
> `design handoff --json` 必须保持纯 JSON;`readyForExecution`、`approvals`、`assumptions`、`openQuestions` 都属于正式契约。human mode 默认写出 `.mycodemap/handoffs/{stem}.handoff.md|json`。
|
|
703
|
+
|
|
704
|
+
---
|
|
705
|
+
|
|
706
|
+
## design verify 命令输出结构
|
|
707
|
+
|
|
708
|
+
### JSON 输出 (--json)
|
|
709
|
+
|
|
710
|
+
```typescript
|
|
711
|
+
type DesignVerificationStatus =
|
|
712
|
+
| "satisfied"
|
|
713
|
+
| "needs-review"
|
|
714
|
+
| "violated"
|
|
715
|
+
| "blocked";
|
|
716
|
+
|
|
717
|
+
type DesignDriftKind =
|
|
718
|
+
| "scope-extra"
|
|
719
|
+
| "acceptance-unverified"
|
|
720
|
+
| "handoff-missing"
|
|
721
|
+
| "blocked-input";
|
|
722
|
+
|
|
723
|
+
interface DesignVerificationOutput {
|
|
724
|
+
ok: boolean;
|
|
725
|
+
filePath: string;
|
|
726
|
+
readyForExecution: boolean;
|
|
727
|
+
summary: {
|
|
728
|
+
checklistCount: number;
|
|
729
|
+
satisfiedCount: number;
|
|
730
|
+
needsReviewCount: number;
|
|
731
|
+
violatedCount: number;
|
|
732
|
+
blockedCount: number;
|
|
733
|
+
driftCount: number;
|
|
734
|
+
diagnosticCount: number;
|
|
735
|
+
reviewRequired: boolean;
|
|
736
|
+
blocked: boolean;
|
|
737
|
+
};
|
|
738
|
+
checklist: Array<{
|
|
739
|
+
id: string;
|
|
740
|
+
text: string;
|
|
741
|
+
status: DesignVerificationStatus;
|
|
742
|
+
evidenceRefs: string[];
|
|
743
|
+
}>;
|
|
744
|
+
drift: Array<{
|
|
745
|
+
kind: DesignDriftKind;
|
|
746
|
+
severity: "error" | "warning" | "info";
|
|
747
|
+
message: string;
|
|
748
|
+
sourceRefs: string[];
|
|
749
|
+
}>;
|
|
750
|
+
diagnostics: Array<{
|
|
751
|
+
code: "handoff-missing" | "handoff-invalid" | "blocked-input" | string;
|
|
752
|
+
blocker: boolean;
|
|
753
|
+
message: string;
|
|
754
|
+
sourceRefs: string[];
|
|
755
|
+
}>;
|
|
756
|
+
}
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
### 示例
|
|
760
|
+
|
|
761
|
+
```json
|
|
762
|
+
{
|
|
763
|
+
"ok": true,
|
|
764
|
+
"filePath": "/repo/tests/fixtures/design-contracts/verify-ready.design.md",
|
|
765
|
+
"readyForExecution": false,
|
|
766
|
+
"summary": {
|
|
767
|
+
"checklistCount": 3,
|
|
768
|
+
"satisfiedCount": 1,
|
|
769
|
+
"needsReviewCount": 2,
|
|
770
|
+
"violatedCount": 0,
|
|
771
|
+
"blockedCount": 0,
|
|
772
|
+
"driftCount": 3,
|
|
773
|
+
"diagnosticCount": 1,
|
|
774
|
+
"reviewRequired": true,
|
|
775
|
+
"blocked": false
|
|
776
|
+
},
|
|
777
|
+
"checklist": [
|
|
778
|
+
{
|
|
779
|
+
"id": "acceptance-1",
|
|
780
|
+
"text": "src/cli/design-verification-builder.ts 会产出 conservative verification result",
|
|
781
|
+
"status": "satisfied",
|
|
782
|
+
"evidenceRefs": [
|
|
783
|
+
"candidate:src/cli/design-verification-builder.ts",
|
|
784
|
+
"diagnostic:handoff-missing"
|
|
785
|
+
]
|
|
786
|
+
},
|
|
787
|
+
{
|
|
788
|
+
"id": "acceptance-2",
|
|
789
|
+
"text": "src/interface/types/design-verification.ts 会定义正式 verification schema",
|
|
790
|
+
"status": "needs-review",
|
|
791
|
+
"evidenceRefs": [
|
|
792
|
+
"design:acceptanceCriteria"
|
|
793
|
+
]
|
|
794
|
+
}
|
|
795
|
+
],
|
|
796
|
+
"drift": [
|
|
797
|
+
{
|
|
798
|
+
"kind": "handoff-missing",
|
|
799
|
+
"severity": "warning",
|
|
800
|
+
"message": "Canonical handoff artifact is missing, so verification remains review-needed even though a live handoff was rebuilt.",
|
|
801
|
+
"sourceRefs": [
|
|
802
|
+
"diagnostic:handoff-missing"
|
|
803
|
+
]
|
|
804
|
+
}
|
|
805
|
+
],
|
|
806
|
+
"diagnostics": [
|
|
807
|
+
{
|
|
808
|
+
"code": "handoff-missing",
|
|
809
|
+
"blocker": false,
|
|
810
|
+
"message": "Canonical handoff artifact is missing, so verification remains review-needed even though a live handoff was rebuilt.",
|
|
811
|
+
"sourceRefs": [
|
|
812
|
+
"diagnostic:handoff-missing"
|
|
813
|
+
]
|
|
814
|
+
}
|
|
815
|
+
]
|
|
816
|
+
}
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
> `design verify --json` 必须保持纯 JSON;`checklist` 与 `drift` 都属于正式契约。`readyForExecution=false` 不等于 blocker,只有 `ok=false` 或 blocker diagnostics 才应返回非零 exit code。
|
|
820
|
+
|
|
821
|
+
---
|
|
822
|
+
|
|
408
823
|
## impact 命令输出结构
|
|
409
824
|
|
|
410
825
|
### JSON 输出 (-j)
|
|
@@ -189,13 +189,25 @@ npm test
|
|
|
189
189
|
**执行步骤**:
|
|
190
190
|
|
|
191
191
|
```bash
|
|
192
|
+
# Step 0: 如果任务来自人类设计,先校验 design contract
|
|
193
|
+
node dist/cli/index.js design validate mycodemap.design.md --json
|
|
194
|
+
|
|
195
|
+
# Step 0.5: 把 design contract 映射成 candidate code scope
|
|
196
|
+
node dist/cli/index.js design map mycodemap.design.md --json
|
|
197
|
+
|
|
198
|
+
# Step 0.75: 生成 reviewer / agent 共用的 handoff package
|
|
199
|
+
node dist/cli/index.js design handoff mycodemap.design.md --json
|
|
200
|
+
|
|
201
|
+
# Step 0.9: 基于 reviewed handoff truth 做 verification / drift 检查
|
|
202
|
+
node dist/cli/index.js design verify mycodemap.design.md --json
|
|
203
|
+
|
|
192
204
|
# Step 1: 启动工作流
|
|
193
205
|
node dist/cli/index.js workflow start "实现用户认证模块"
|
|
194
206
|
|
|
195
207
|
# Step 2: 查看当前阶段建议
|
|
196
208
|
node dist/cli/index.js workflow status
|
|
197
209
|
|
|
198
|
-
# Step 3:
|
|
210
|
+
# Step 3: 执行当前阶段的分析(实现/提交/CI 不在 workflow phase 内)
|
|
199
211
|
|
|
200
212
|
# Step 4: 完成阶段后推进
|
|
201
213
|
node dist/cli/index.js workflow proceed
|
|
@@ -214,10 +226,8 @@ node dist/cli/index.js workflow checkpoint
|
|
|
214
226
|
2. `read` - 阅读影响范围、复杂度与上下文
|
|
215
227
|
3. `link` - 汇总依赖、引用与关联关系
|
|
216
228
|
4. `show` - 生成概览、摘要与展示型结果
|
|
217
|
-
5. `commit` - 提交验证
|
|
218
|
-
6. `ci` - CI 验证
|
|
219
229
|
|
|
220
|
-
>
|
|
230
|
+
> 说明:`workflow` 仍只保留 `find` / `read` / `link` / `show` 四阶段;如果任务由人类设计驱动,先走 `design validate → design map → design handoff → design verify` 固定输入、候选范围、review gate 与 drift 检查,再进入 workflow。
|
|
221
231
|
|
|
222
232
|
---
|
|
223
233
|
|
package/docs/ai-guide/PROMPTS.md
CHANGED
|
@@ -340,32 +340,38 @@
|
|
|
340
340
|
|
|
341
341
|
请执行以下步骤:
|
|
342
342
|
|
|
343
|
-
1.
|
|
343
|
+
1. **先把设计写成可验证输入**
|
|
344
|
+
```bash
|
|
345
|
+
cp docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md mycodemap.design.md
|
|
346
|
+
node dist/cli/index.js design validate mycodemap.design.md --json
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
2. **相关代码搜索**
|
|
344
350
|
```bash
|
|
345
351
|
node dist/cli/index.js analyze -i find -k "{{RELATED_KEYWORD}}" --topK 10 --json
|
|
346
352
|
```
|
|
347
353
|
|
|
348
|
-
|
|
354
|
+
3. **参考现有实现**
|
|
349
355
|
分析类似功能的实现方式
|
|
350
356
|
|
|
351
|
-
|
|
357
|
+
4. **确定实现位置**
|
|
352
358
|
```bash
|
|
353
359
|
node dist/cli/index.js analyze -i read -t "候选目录" --json
|
|
354
360
|
```
|
|
355
361
|
选择复杂度最低的模块
|
|
356
362
|
|
|
357
|
-
|
|
363
|
+
5. **影响分析**(如果需要修改现有代码)
|
|
358
364
|
```bash
|
|
359
365
|
node dist/cli/index.js analyze -i read -t "目标文件" --json
|
|
360
366
|
```
|
|
361
367
|
|
|
362
|
-
|
|
368
|
+
6. **实现步骤**
|
|
363
369
|
- [ ] 创建新文件(添加 [META] [WHY] 头)
|
|
364
370
|
- [ ] 实现核心功能
|
|
365
371
|
- [ ] 添加单元测试
|
|
366
372
|
- [ ] 运行测试验证
|
|
367
373
|
|
|
368
|
-
|
|
374
|
+
7. **验证**
|
|
369
375
|
```bash
|
|
370
376
|
node dist/cli/index.js ci check-headers -f "新文件.ts"
|
|
371
377
|
npm test
|