speckeeper 0.12.0 → 0.13.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/cli-contract.yaml +81 -61
- package/dist/cli.js +75 -55
- package/dist/cli.js.map +1 -1
- package/dist/{config-api-coyCX1SB.d.ts → config-api-BvCV9_r8.d.ts} +1 -1
- package/dist/dsl/index.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/docs/cli-reference.md +2420 -6
- package/package.json +5 -5
package/docs/cli-reference.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
TypeScript-first specification validation framework — validate design consistency, external SSOT integrity, and traceability with type-safe TypeScript DSL. Supports design lint, external source checks (OpenAPI, DDL, annotations), drift detection, impact analysis, and scaffolding from Mermaid flowcharts.
|
|
4
4
|
|
|
5
|
-
**Version:** 0.
|
|
5
|
+
**Version:** 0.13.0
|
|
6
6
|
|
|
7
7
|
## Table of Contents
|
|
8
8
|
|
|
@@ -402,7 +402,7 @@ speckeeper scaffold --source arch.md --format yaml
|
|
|
402
402
|
|
|
403
403
|
```yaml
|
|
404
404
|
x-agent:
|
|
405
|
-
|
|
405
|
+
recommended_before_use:
|
|
406
406
|
- Run with --dry-run first to preview generated files
|
|
407
407
|
```
|
|
408
408
|
|
|
@@ -488,6 +488,222 @@ speckeeper audit-requirements --report-format json --output audit.json
|
|
|
488
488
|
|
|
489
489
|
- **stdout:** format=`{options.report-format}`
|
|
490
490
|
|
|
491
|
+
| Property | Type | Required | Description |
|
|
492
|
+
|---|---|---|---|
|
|
493
|
+
| `summary` | `string` | Yes | |
|
|
494
|
+
| `riskLevel` | `"low" \| "medium" \| "high" \| "critical"` | Yes | |
|
|
495
|
+
| `findings` | `object[]` | Yes | |
|
|
496
|
+
| `findings[].id` | `string` | No | Unique finding identifier. |
|
|
497
|
+
| `findings[].severity` | `"info" \| "warning" \| "error" \| "critical"` | Yes | |
|
|
498
|
+
| `findings[].category` | `string` | Yes | Finding category (e.g. verifiability, ambiguity, granularity). |
|
|
499
|
+
| `findings[].target` | `string` | No | Target of the finding (spec ID, model type). |
|
|
500
|
+
| `findings[].location` | `string` | No | Location within the target. |
|
|
501
|
+
| `findings[].message` | `string` | Yes | |
|
|
502
|
+
| `findings[].recommendation` | `string` | No | |
|
|
503
|
+
| `findings[].confidence` | `number (min: 0, max: 1)` | No | Confidence score (0-1) for LLM-generated findings. |
|
|
504
|
+
| `findings[].evidence` | `object[]` | No | |
|
|
505
|
+
| `findings[].evidence[].kind` | `enum(7 values)` | Yes | |
|
|
506
|
+
| `findings[].evidence[].target` | `string` | No | Target identifier (file path, command ID, schema name). |
|
|
507
|
+
| `findings[].evidence[].location` | `string` | No | Location within the target (line number, JSON pointer). |
|
|
508
|
+
| `findings[].evidence[].excerpt` | `string` | No | Relevant excerpt from the target. |
|
|
509
|
+
| `findings[].details` | `Record<string, any>` | No | |
|
|
510
|
+
| `recommendedActions` | `object[]` | No | |
|
|
511
|
+
| `recommendedActions[].kind` | `enum(6 values)` | Yes | |
|
|
512
|
+
| `recommendedActions[].title` | `string` | Yes | |
|
|
513
|
+
| `recommendedActions[].command` | `string` | No | CLI command to run (for run_command kind). |
|
|
514
|
+
| `recommendedActions[].target` | `string` | No | Target file or resource. |
|
|
515
|
+
| `recommendedActions[].rationale` | `string` | No | |
|
|
516
|
+
| `metadata` | `object` | No | |
|
|
517
|
+
| `metadata.tool` | `string` | No | |
|
|
518
|
+
| `metadata.command` | `string` | No | |
|
|
519
|
+
| `metadata.version` | `string` | No | |
|
|
520
|
+
| `metadata.generatedAt` | `string` | No | |
|
|
521
|
+
| `metadata.adapter` | `string` | No | |
|
|
522
|
+
| `metadata.model` | `string` | No | |
|
|
523
|
+
|
|
524
|
+
<details>
|
|
525
|
+
<summary>JSON Schema</summary>
|
|
526
|
+
|
|
527
|
+
```json
|
|
528
|
+
{
|
|
529
|
+
"type": "object",
|
|
530
|
+
"description": "Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.",
|
|
531
|
+
"required": [
|
|
532
|
+
"summary",
|
|
533
|
+
"riskLevel",
|
|
534
|
+
"findings"
|
|
535
|
+
],
|
|
536
|
+
"properties": {
|
|
537
|
+
"summary": {
|
|
538
|
+
"type": "string"
|
|
539
|
+
},
|
|
540
|
+
"riskLevel": {
|
|
541
|
+
"type": "string",
|
|
542
|
+
"enum": [
|
|
543
|
+
"low",
|
|
544
|
+
"medium",
|
|
545
|
+
"high",
|
|
546
|
+
"critical"
|
|
547
|
+
]
|
|
548
|
+
},
|
|
549
|
+
"findings": {
|
|
550
|
+
"type": "array",
|
|
551
|
+
"items": {
|
|
552
|
+
"type": "object",
|
|
553
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
554
|
+
"required": [
|
|
555
|
+
"severity",
|
|
556
|
+
"category",
|
|
557
|
+
"message"
|
|
558
|
+
],
|
|
559
|
+
"properties": {
|
|
560
|
+
"id": {
|
|
561
|
+
"type": "string",
|
|
562
|
+
"description": "Unique finding identifier."
|
|
563
|
+
},
|
|
564
|
+
"severity": {
|
|
565
|
+
"type": "string",
|
|
566
|
+
"enum": [
|
|
567
|
+
"info",
|
|
568
|
+
"warning",
|
|
569
|
+
"error",
|
|
570
|
+
"critical"
|
|
571
|
+
]
|
|
572
|
+
},
|
|
573
|
+
"category": {
|
|
574
|
+
"type": "string",
|
|
575
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
576
|
+
},
|
|
577
|
+
"target": {
|
|
578
|
+
"type": "string",
|
|
579
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
580
|
+
},
|
|
581
|
+
"location": {
|
|
582
|
+
"type": "string",
|
|
583
|
+
"description": "Location within the target."
|
|
584
|
+
},
|
|
585
|
+
"message": {
|
|
586
|
+
"type": "string"
|
|
587
|
+
},
|
|
588
|
+
"recommendation": {
|
|
589
|
+
"type": "string"
|
|
590
|
+
},
|
|
591
|
+
"confidence": {
|
|
592
|
+
"type": "number",
|
|
593
|
+
"minimum": 0,
|
|
594
|
+
"maximum": 1,
|
|
595
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
596
|
+
},
|
|
597
|
+
"evidence": {
|
|
598
|
+
"type": "array",
|
|
599
|
+
"items": {
|
|
600
|
+
"type": "object",
|
|
601
|
+
"description": "Evidence supporting an agent finding.",
|
|
602
|
+
"required": [
|
|
603
|
+
"kind"
|
|
604
|
+
],
|
|
605
|
+
"properties": {
|
|
606
|
+
"kind": {
|
|
607
|
+
"type": "string",
|
|
608
|
+
"enum": [
|
|
609
|
+
"file",
|
|
610
|
+
"command",
|
|
611
|
+
"schema",
|
|
612
|
+
"diff",
|
|
613
|
+
"stdout",
|
|
614
|
+
"stderr",
|
|
615
|
+
"text"
|
|
616
|
+
]
|
|
617
|
+
},
|
|
618
|
+
"target": {
|
|
619
|
+
"type": "string",
|
|
620
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
621
|
+
},
|
|
622
|
+
"location": {
|
|
623
|
+
"type": "string",
|
|
624
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
625
|
+
},
|
|
626
|
+
"excerpt": {
|
|
627
|
+
"type": "string",
|
|
628
|
+
"description": "Relevant excerpt from the target."
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
},
|
|
633
|
+
"details": {
|
|
634
|
+
"type": "object",
|
|
635
|
+
"additionalProperties": true
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
},
|
|
640
|
+
"recommendedActions": {
|
|
641
|
+
"type": "array",
|
|
642
|
+
"items": {
|
|
643
|
+
"type": "object",
|
|
644
|
+
"description": "A recommended action from an agent audit.",
|
|
645
|
+
"required": [
|
|
646
|
+
"kind",
|
|
647
|
+
"title"
|
|
648
|
+
],
|
|
649
|
+
"properties": {
|
|
650
|
+
"kind": {
|
|
651
|
+
"type": "string",
|
|
652
|
+
"enum": [
|
|
653
|
+
"run_command",
|
|
654
|
+
"edit_file",
|
|
655
|
+
"review",
|
|
656
|
+
"confirm",
|
|
657
|
+
"block",
|
|
658
|
+
"ignore"
|
|
659
|
+
]
|
|
660
|
+
},
|
|
661
|
+
"title": {
|
|
662
|
+
"type": "string"
|
|
663
|
+
},
|
|
664
|
+
"command": {
|
|
665
|
+
"type": "string",
|
|
666
|
+
"description": "CLI command to run (for run_command kind)."
|
|
667
|
+
},
|
|
668
|
+
"target": {
|
|
669
|
+
"type": "string",
|
|
670
|
+
"description": "Target file or resource."
|
|
671
|
+
},
|
|
672
|
+
"rationale": {
|
|
673
|
+
"type": "string"
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
},
|
|
678
|
+
"metadata": {
|
|
679
|
+
"type": "object",
|
|
680
|
+
"properties": {
|
|
681
|
+
"tool": {
|
|
682
|
+
"type": "string"
|
|
683
|
+
},
|
|
684
|
+
"command": {
|
|
685
|
+
"type": "string"
|
|
686
|
+
},
|
|
687
|
+
"version": {
|
|
688
|
+
"type": "string"
|
|
689
|
+
},
|
|
690
|
+
"generatedAt": {
|
|
691
|
+
"type": "string"
|
|
692
|
+
},
|
|
693
|
+
"adapter": {
|
|
694
|
+
"type": "string"
|
|
695
|
+
},
|
|
696
|
+
"model": {
|
|
697
|
+
"type": "string"
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
</details>
|
|
706
|
+
|
|
491
707
|
**Exit 1:** Unexpected error.
|
|
492
708
|
|
|
493
709
|
- **stderr:** format=`text`
|
|
@@ -500,6 +716,222 @@ speckeeper audit-requirements --report-format json --output audit.json
|
|
|
500
716
|
|
|
501
717
|
- **stdout:** format=`{options.report-format}`
|
|
502
718
|
|
|
719
|
+
| Property | Type | Required | Description |
|
|
720
|
+
|---|---|---|---|
|
|
721
|
+
| `summary` | `string` | Yes | |
|
|
722
|
+
| `riskLevel` | `"low" \| "medium" \| "high" \| "critical"` | Yes | |
|
|
723
|
+
| `findings` | `object[]` | Yes | |
|
|
724
|
+
| `findings[].id` | `string` | No | Unique finding identifier. |
|
|
725
|
+
| `findings[].severity` | `"info" \| "warning" \| "error" \| "critical"` | Yes | |
|
|
726
|
+
| `findings[].category` | `string` | Yes | Finding category (e.g. verifiability, ambiguity, granularity). |
|
|
727
|
+
| `findings[].target` | `string` | No | Target of the finding (spec ID, model type). |
|
|
728
|
+
| `findings[].location` | `string` | No | Location within the target. |
|
|
729
|
+
| `findings[].message` | `string` | Yes | |
|
|
730
|
+
| `findings[].recommendation` | `string` | No | |
|
|
731
|
+
| `findings[].confidence` | `number (min: 0, max: 1)` | No | Confidence score (0-1) for LLM-generated findings. |
|
|
732
|
+
| `findings[].evidence` | `object[]` | No | |
|
|
733
|
+
| `findings[].evidence[].kind` | `enum(7 values)` | Yes | |
|
|
734
|
+
| `findings[].evidence[].target` | `string` | No | Target identifier (file path, command ID, schema name). |
|
|
735
|
+
| `findings[].evidence[].location` | `string` | No | Location within the target (line number, JSON pointer). |
|
|
736
|
+
| `findings[].evidence[].excerpt` | `string` | No | Relevant excerpt from the target. |
|
|
737
|
+
| `findings[].details` | `Record<string, any>` | No | |
|
|
738
|
+
| `recommendedActions` | `object[]` | No | |
|
|
739
|
+
| `recommendedActions[].kind` | `enum(6 values)` | Yes | |
|
|
740
|
+
| `recommendedActions[].title` | `string` | Yes | |
|
|
741
|
+
| `recommendedActions[].command` | `string` | No | CLI command to run (for run_command kind). |
|
|
742
|
+
| `recommendedActions[].target` | `string` | No | Target file or resource. |
|
|
743
|
+
| `recommendedActions[].rationale` | `string` | No | |
|
|
744
|
+
| `metadata` | `object` | No | |
|
|
745
|
+
| `metadata.tool` | `string` | No | |
|
|
746
|
+
| `metadata.command` | `string` | No | |
|
|
747
|
+
| `metadata.version` | `string` | No | |
|
|
748
|
+
| `metadata.generatedAt` | `string` | No | |
|
|
749
|
+
| `metadata.adapter` | `string` | No | |
|
|
750
|
+
| `metadata.model` | `string` | No | |
|
|
751
|
+
|
|
752
|
+
<details>
|
|
753
|
+
<summary>JSON Schema</summary>
|
|
754
|
+
|
|
755
|
+
```json
|
|
756
|
+
{
|
|
757
|
+
"type": "object",
|
|
758
|
+
"description": "Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.",
|
|
759
|
+
"required": [
|
|
760
|
+
"summary",
|
|
761
|
+
"riskLevel",
|
|
762
|
+
"findings"
|
|
763
|
+
],
|
|
764
|
+
"properties": {
|
|
765
|
+
"summary": {
|
|
766
|
+
"type": "string"
|
|
767
|
+
},
|
|
768
|
+
"riskLevel": {
|
|
769
|
+
"type": "string",
|
|
770
|
+
"enum": [
|
|
771
|
+
"low",
|
|
772
|
+
"medium",
|
|
773
|
+
"high",
|
|
774
|
+
"critical"
|
|
775
|
+
]
|
|
776
|
+
},
|
|
777
|
+
"findings": {
|
|
778
|
+
"type": "array",
|
|
779
|
+
"items": {
|
|
780
|
+
"type": "object",
|
|
781
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
782
|
+
"required": [
|
|
783
|
+
"severity",
|
|
784
|
+
"category",
|
|
785
|
+
"message"
|
|
786
|
+
],
|
|
787
|
+
"properties": {
|
|
788
|
+
"id": {
|
|
789
|
+
"type": "string",
|
|
790
|
+
"description": "Unique finding identifier."
|
|
791
|
+
},
|
|
792
|
+
"severity": {
|
|
793
|
+
"type": "string",
|
|
794
|
+
"enum": [
|
|
795
|
+
"info",
|
|
796
|
+
"warning",
|
|
797
|
+
"error",
|
|
798
|
+
"critical"
|
|
799
|
+
]
|
|
800
|
+
},
|
|
801
|
+
"category": {
|
|
802
|
+
"type": "string",
|
|
803
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
804
|
+
},
|
|
805
|
+
"target": {
|
|
806
|
+
"type": "string",
|
|
807
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
808
|
+
},
|
|
809
|
+
"location": {
|
|
810
|
+
"type": "string",
|
|
811
|
+
"description": "Location within the target."
|
|
812
|
+
},
|
|
813
|
+
"message": {
|
|
814
|
+
"type": "string"
|
|
815
|
+
},
|
|
816
|
+
"recommendation": {
|
|
817
|
+
"type": "string"
|
|
818
|
+
},
|
|
819
|
+
"confidence": {
|
|
820
|
+
"type": "number",
|
|
821
|
+
"minimum": 0,
|
|
822
|
+
"maximum": 1,
|
|
823
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
824
|
+
},
|
|
825
|
+
"evidence": {
|
|
826
|
+
"type": "array",
|
|
827
|
+
"items": {
|
|
828
|
+
"type": "object",
|
|
829
|
+
"description": "Evidence supporting an agent finding.",
|
|
830
|
+
"required": [
|
|
831
|
+
"kind"
|
|
832
|
+
],
|
|
833
|
+
"properties": {
|
|
834
|
+
"kind": {
|
|
835
|
+
"type": "string",
|
|
836
|
+
"enum": [
|
|
837
|
+
"file",
|
|
838
|
+
"command",
|
|
839
|
+
"schema",
|
|
840
|
+
"diff",
|
|
841
|
+
"stdout",
|
|
842
|
+
"stderr",
|
|
843
|
+
"text"
|
|
844
|
+
]
|
|
845
|
+
},
|
|
846
|
+
"target": {
|
|
847
|
+
"type": "string",
|
|
848
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
849
|
+
},
|
|
850
|
+
"location": {
|
|
851
|
+
"type": "string",
|
|
852
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
853
|
+
},
|
|
854
|
+
"excerpt": {
|
|
855
|
+
"type": "string",
|
|
856
|
+
"description": "Relevant excerpt from the target."
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
},
|
|
861
|
+
"details": {
|
|
862
|
+
"type": "object",
|
|
863
|
+
"additionalProperties": true
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
},
|
|
868
|
+
"recommendedActions": {
|
|
869
|
+
"type": "array",
|
|
870
|
+
"items": {
|
|
871
|
+
"type": "object",
|
|
872
|
+
"description": "A recommended action from an agent audit.",
|
|
873
|
+
"required": [
|
|
874
|
+
"kind",
|
|
875
|
+
"title"
|
|
876
|
+
],
|
|
877
|
+
"properties": {
|
|
878
|
+
"kind": {
|
|
879
|
+
"type": "string",
|
|
880
|
+
"enum": [
|
|
881
|
+
"run_command",
|
|
882
|
+
"edit_file",
|
|
883
|
+
"review",
|
|
884
|
+
"confirm",
|
|
885
|
+
"block",
|
|
886
|
+
"ignore"
|
|
887
|
+
]
|
|
888
|
+
},
|
|
889
|
+
"title": {
|
|
890
|
+
"type": "string"
|
|
891
|
+
},
|
|
892
|
+
"command": {
|
|
893
|
+
"type": "string",
|
|
894
|
+
"description": "CLI command to run (for run_command kind)."
|
|
895
|
+
},
|
|
896
|
+
"target": {
|
|
897
|
+
"type": "string",
|
|
898
|
+
"description": "Target file or resource."
|
|
899
|
+
},
|
|
900
|
+
"rationale": {
|
|
901
|
+
"type": "string"
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
},
|
|
906
|
+
"metadata": {
|
|
907
|
+
"type": "object",
|
|
908
|
+
"properties": {
|
|
909
|
+
"tool": {
|
|
910
|
+
"type": "string"
|
|
911
|
+
},
|
|
912
|
+
"command": {
|
|
913
|
+
"type": "string"
|
|
914
|
+
},
|
|
915
|
+
"version": {
|
|
916
|
+
"type": "string"
|
|
917
|
+
},
|
|
918
|
+
"generatedAt": {
|
|
919
|
+
"type": "string"
|
|
920
|
+
},
|
|
921
|
+
"adapter": {
|
|
922
|
+
"type": "string"
|
|
923
|
+
},
|
|
924
|
+
"model": {
|
|
925
|
+
"type": "string"
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
```
|
|
932
|
+
|
|
933
|
+
</details>
|
|
934
|
+
|
|
503
935
|
**Exit 11:** Runtime dependency missing (agent-contracts-runtime).
|
|
504
936
|
|
|
505
937
|
- **stderr:** format=`text`
|
|
@@ -512,7 +944,7 @@ speckeeper audit-requirements --report-format json --output audit.json
|
|
|
512
944
|
|
|
513
945
|
```yaml
|
|
514
946
|
x-agent:
|
|
515
|
-
|
|
947
|
+
recommended_before_use:
|
|
516
948
|
- Run with --dry-run first to preview the prompt
|
|
517
949
|
retryableExitCodes:
|
|
518
950
|
- 12
|
|
@@ -554,6 +986,236 @@ speckeeper propose-trace-links --adapter claude --report-format json
|
|
|
554
986
|
|
|
555
987
|
- **stdout:** format=`{options.report-format}`
|
|
556
988
|
|
|
989
|
+
|
|
990
|
+
<details>
|
|
991
|
+
<summary>JSON Schema</summary>
|
|
992
|
+
|
|
993
|
+
```json
|
|
994
|
+
{
|
|
995
|
+
"type": "object",
|
|
996
|
+
"description": "Result of trace link proposal with candidate links.",
|
|
997
|
+
"allOf": [
|
|
998
|
+
{
|
|
999
|
+
"type": "object",
|
|
1000
|
+
"description": "Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.",
|
|
1001
|
+
"required": [
|
|
1002
|
+
"summary",
|
|
1003
|
+
"riskLevel",
|
|
1004
|
+
"findings"
|
|
1005
|
+
],
|
|
1006
|
+
"properties": {
|
|
1007
|
+
"summary": {
|
|
1008
|
+
"type": "string"
|
|
1009
|
+
},
|
|
1010
|
+
"riskLevel": {
|
|
1011
|
+
"type": "string",
|
|
1012
|
+
"enum": [
|
|
1013
|
+
"low",
|
|
1014
|
+
"medium",
|
|
1015
|
+
"high",
|
|
1016
|
+
"critical"
|
|
1017
|
+
]
|
|
1018
|
+
},
|
|
1019
|
+
"findings": {
|
|
1020
|
+
"type": "array",
|
|
1021
|
+
"items": {
|
|
1022
|
+
"type": "object",
|
|
1023
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
1024
|
+
"required": [
|
|
1025
|
+
"severity",
|
|
1026
|
+
"category",
|
|
1027
|
+
"message"
|
|
1028
|
+
],
|
|
1029
|
+
"properties": {
|
|
1030
|
+
"id": {
|
|
1031
|
+
"type": "string",
|
|
1032
|
+
"description": "Unique finding identifier."
|
|
1033
|
+
},
|
|
1034
|
+
"severity": {
|
|
1035
|
+
"type": "string",
|
|
1036
|
+
"enum": [
|
|
1037
|
+
"info",
|
|
1038
|
+
"warning",
|
|
1039
|
+
"error",
|
|
1040
|
+
"critical"
|
|
1041
|
+
]
|
|
1042
|
+
},
|
|
1043
|
+
"category": {
|
|
1044
|
+
"type": "string",
|
|
1045
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
1046
|
+
},
|
|
1047
|
+
"target": {
|
|
1048
|
+
"type": "string",
|
|
1049
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
1050
|
+
},
|
|
1051
|
+
"location": {
|
|
1052
|
+
"type": "string",
|
|
1053
|
+
"description": "Location within the target."
|
|
1054
|
+
},
|
|
1055
|
+
"message": {
|
|
1056
|
+
"type": "string"
|
|
1057
|
+
},
|
|
1058
|
+
"recommendation": {
|
|
1059
|
+
"type": "string"
|
|
1060
|
+
},
|
|
1061
|
+
"confidence": {
|
|
1062
|
+
"type": "number",
|
|
1063
|
+
"minimum": 0,
|
|
1064
|
+
"maximum": 1,
|
|
1065
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
1066
|
+
},
|
|
1067
|
+
"evidence": {
|
|
1068
|
+
"type": "array",
|
|
1069
|
+
"items": {
|
|
1070
|
+
"type": "object",
|
|
1071
|
+
"description": "Evidence supporting an agent finding.",
|
|
1072
|
+
"required": [
|
|
1073
|
+
"kind"
|
|
1074
|
+
],
|
|
1075
|
+
"properties": {
|
|
1076
|
+
"kind": {
|
|
1077
|
+
"type": "string",
|
|
1078
|
+
"enum": [
|
|
1079
|
+
"file",
|
|
1080
|
+
"command",
|
|
1081
|
+
"schema",
|
|
1082
|
+
"diff",
|
|
1083
|
+
"stdout",
|
|
1084
|
+
"stderr",
|
|
1085
|
+
"text"
|
|
1086
|
+
]
|
|
1087
|
+
},
|
|
1088
|
+
"target": {
|
|
1089
|
+
"type": "string",
|
|
1090
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
1091
|
+
},
|
|
1092
|
+
"location": {
|
|
1093
|
+
"type": "string",
|
|
1094
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
1095
|
+
},
|
|
1096
|
+
"excerpt": {
|
|
1097
|
+
"type": "string",
|
|
1098
|
+
"description": "Relevant excerpt from the target."
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
},
|
|
1103
|
+
"details": {
|
|
1104
|
+
"type": "object",
|
|
1105
|
+
"additionalProperties": true
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
},
|
|
1110
|
+
"recommendedActions": {
|
|
1111
|
+
"type": "array",
|
|
1112
|
+
"items": {
|
|
1113
|
+
"type": "object",
|
|
1114
|
+
"description": "A recommended action from an agent audit.",
|
|
1115
|
+
"required": [
|
|
1116
|
+
"kind",
|
|
1117
|
+
"title"
|
|
1118
|
+
],
|
|
1119
|
+
"properties": {
|
|
1120
|
+
"kind": {
|
|
1121
|
+
"type": "string",
|
|
1122
|
+
"enum": [
|
|
1123
|
+
"run_command",
|
|
1124
|
+
"edit_file",
|
|
1125
|
+
"review",
|
|
1126
|
+
"confirm",
|
|
1127
|
+
"block",
|
|
1128
|
+
"ignore"
|
|
1129
|
+
]
|
|
1130
|
+
},
|
|
1131
|
+
"title": {
|
|
1132
|
+
"type": "string"
|
|
1133
|
+
},
|
|
1134
|
+
"command": {
|
|
1135
|
+
"type": "string",
|
|
1136
|
+
"description": "CLI command to run (for run_command kind)."
|
|
1137
|
+
},
|
|
1138
|
+
"target": {
|
|
1139
|
+
"type": "string",
|
|
1140
|
+
"description": "Target file or resource."
|
|
1141
|
+
},
|
|
1142
|
+
"rationale": {
|
|
1143
|
+
"type": "string"
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
}
|
|
1147
|
+
},
|
|
1148
|
+
"metadata": {
|
|
1149
|
+
"type": "object",
|
|
1150
|
+
"properties": {
|
|
1151
|
+
"tool": {
|
|
1152
|
+
"type": "string"
|
|
1153
|
+
},
|
|
1154
|
+
"command": {
|
|
1155
|
+
"type": "string"
|
|
1156
|
+
},
|
|
1157
|
+
"version": {
|
|
1158
|
+
"type": "string"
|
|
1159
|
+
},
|
|
1160
|
+
"generatedAt": {
|
|
1161
|
+
"type": "string"
|
|
1162
|
+
},
|
|
1163
|
+
"adapter": {
|
|
1164
|
+
"type": "string"
|
|
1165
|
+
},
|
|
1166
|
+
"model": {
|
|
1167
|
+
"type": "string"
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
},
|
|
1173
|
+
{
|
|
1174
|
+
"type": "object",
|
|
1175
|
+
"required": [
|
|
1176
|
+
"candidateLinks"
|
|
1177
|
+
],
|
|
1178
|
+
"properties": {
|
|
1179
|
+
"candidateLinks": {
|
|
1180
|
+
"type": "array",
|
|
1181
|
+
"items": {
|
|
1182
|
+
"type": "object",
|
|
1183
|
+
"required": [
|
|
1184
|
+
"from",
|
|
1185
|
+
"relation",
|
|
1186
|
+
"to",
|
|
1187
|
+
"confidence",
|
|
1188
|
+
"reason"
|
|
1189
|
+
],
|
|
1190
|
+
"properties": {
|
|
1191
|
+
"from": {
|
|
1192
|
+
"type": "string"
|
|
1193
|
+
},
|
|
1194
|
+
"relation": {
|
|
1195
|
+
"type": "string"
|
|
1196
|
+
},
|
|
1197
|
+
"to": {
|
|
1198
|
+
"type": "string"
|
|
1199
|
+
},
|
|
1200
|
+
"confidence": {
|
|
1201
|
+
"type": "number",
|
|
1202
|
+
"minimum": 0,
|
|
1203
|
+
"maximum": 1
|
|
1204
|
+
},
|
|
1205
|
+
"reason": {
|
|
1206
|
+
"type": "string"
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
]
|
|
1214
|
+
}
|
|
1215
|
+
```
|
|
1216
|
+
|
|
1217
|
+
</details>
|
|
1218
|
+
|
|
557
1219
|
**Exit 1:** Unexpected error.
|
|
558
1220
|
|
|
559
1221
|
- **stderr:** format=`text`
|
|
@@ -566,6 +1228,236 @@ speckeeper propose-trace-links --adapter claude --report-format json
|
|
|
566
1228
|
|
|
567
1229
|
- **stdout:** format=`{options.report-format}`
|
|
568
1230
|
|
|
1231
|
+
|
|
1232
|
+
<details>
|
|
1233
|
+
<summary>JSON Schema</summary>
|
|
1234
|
+
|
|
1235
|
+
```json
|
|
1236
|
+
{
|
|
1237
|
+
"type": "object",
|
|
1238
|
+
"description": "Result of trace link proposal with candidate links.",
|
|
1239
|
+
"allOf": [
|
|
1240
|
+
{
|
|
1241
|
+
"type": "object",
|
|
1242
|
+
"description": "Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.",
|
|
1243
|
+
"required": [
|
|
1244
|
+
"summary",
|
|
1245
|
+
"riskLevel",
|
|
1246
|
+
"findings"
|
|
1247
|
+
],
|
|
1248
|
+
"properties": {
|
|
1249
|
+
"summary": {
|
|
1250
|
+
"type": "string"
|
|
1251
|
+
},
|
|
1252
|
+
"riskLevel": {
|
|
1253
|
+
"type": "string",
|
|
1254
|
+
"enum": [
|
|
1255
|
+
"low",
|
|
1256
|
+
"medium",
|
|
1257
|
+
"high",
|
|
1258
|
+
"critical"
|
|
1259
|
+
]
|
|
1260
|
+
},
|
|
1261
|
+
"findings": {
|
|
1262
|
+
"type": "array",
|
|
1263
|
+
"items": {
|
|
1264
|
+
"type": "object",
|
|
1265
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
1266
|
+
"required": [
|
|
1267
|
+
"severity",
|
|
1268
|
+
"category",
|
|
1269
|
+
"message"
|
|
1270
|
+
],
|
|
1271
|
+
"properties": {
|
|
1272
|
+
"id": {
|
|
1273
|
+
"type": "string",
|
|
1274
|
+
"description": "Unique finding identifier."
|
|
1275
|
+
},
|
|
1276
|
+
"severity": {
|
|
1277
|
+
"type": "string",
|
|
1278
|
+
"enum": [
|
|
1279
|
+
"info",
|
|
1280
|
+
"warning",
|
|
1281
|
+
"error",
|
|
1282
|
+
"critical"
|
|
1283
|
+
]
|
|
1284
|
+
},
|
|
1285
|
+
"category": {
|
|
1286
|
+
"type": "string",
|
|
1287
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
1288
|
+
},
|
|
1289
|
+
"target": {
|
|
1290
|
+
"type": "string",
|
|
1291
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
1292
|
+
},
|
|
1293
|
+
"location": {
|
|
1294
|
+
"type": "string",
|
|
1295
|
+
"description": "Location within the target."
|
|
1296
|
+
},
|
|
1297
|
+
"message": {
|
|
1298
|
+
"type": "string"
|
|
1299
|
+
},
|
|
1300
|
+
"recommendation": {
|
|
1301
|
+
"type": "string"
|
|
1302
|
+
},
|
|
1303
|
+
"confidence": {
|
|
1304
|
+
"type": "number",
|
|
1305
|
+
"minimum": 0,
|
|
1306
|
+
"maximum": 1,
|
|
1307
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
1308
|
+
},
|
|
1309
|
+
"evidence": {
|
|
1310
|
+
"type": "array",
|
|
1311
|
+
"items": {
|
|
1312
|
+
"type": "object",
|
|
1313
|
+
"description": "Evidence supporting an agent finding.",
|
|
1314
|
+
"required": [
|
|
1315
|
+
"kind"
|
|
1316
|
+
],
|
|
1317
|
+
"properties": {
|
|
1318
|
+
"kind": {
|
|
1319
|
+
"type": "string",
|
|
1320
|
+
"enum": [
|
|
1321
|
+
"file",
|
|
1322
|
+
"command",
|
|
1323
|
+
"schema",
|
|
1324
|
+
"diff",
|
|
1325
|
+
"stdout",
|
|
1326
|
+
"stderr",
|
|
1327
|
+
"text"
|
|
1328
|
+
]
|
|
1329
|
+
},
|
|
1330
|
+
"target": {
|
|
1331
|
+
"type": "string",
|
|
1332
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
1333
|
+
},
|
|
1334
|
+
"location": {
|
|
1335
|
+
"type": "string",
|
|
1336
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
1337
|
+
},
|
|
1338
|
+
"excerpt": {
|
|
1339
|
+
"type": "string",
|
|
1340
|
+
"description": "Relevant excerpt from the target."
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1344
|
+
},
|
|
1345
|
+
"details": {
|
|
1346
|
+
"type": "object",
|
|
1347
|
+
"additionalProperties": true
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1351
|
+
},
|
|
1352
|
+
"recommendedActions": {
|
|
1353
|
+
"type": "array",
|
|
1354
|
+
"items": {
|
|
1355
|
+
"type": "object",
|
|
1356
|
+
"description": "A recommended action from an agent audit.",
|
|
1357
|
+
"required": [
|
|
1358
|
+
"kind",
|
|
1359
|
+
"title"
|
|
1360
|
+
],
|
|
1361
|
+
"properties": {
|
|
1362
|
+
"kind": {
|
|
1363
|
+
"type": "string",
|
|
1364
|
+
"enum": [
|
|
1365
|
+
"run_command",
|
|
1366
|
+
"edit_file",
|
|
1367
|
+
"review",
|
|
1368
|
+
"confirm",
|
|
1369
|
+
"block",
|
|
1370
|
+
"ignore"
|
|
1371
|
+
]
|
|
1372
|
+
},
|
|
1373
|
+
"title": {
|
|
1374
|
+
"type": "string"
|
|
1375
|
+
},
|
|
1376
|
+
"command": {
|
|
1377
|
+
"type": "string",
|
|
1378
|
+
"description": "CLI command to run (for run_command kind)."
|
|
1379
|
+
},
|
|
1380
|
+
"target": {
|
|
1381
|
+
"type": "string",
|
|
1382
|
+
"description": "Target file or resource."
|
|
1383
|
+
},
|
|
1384
|
+
"rationale": {
|
|
1385
|
+
"type": "string"
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
},
|
|
1390
|
+
"metadata": {
|
|
1391
|
+
"type": "object",
|
|
1392
|
+
"properties": {
|
|
1393
|
+
"tool": {
|
|
1394
|
+
"type": "string"
|
|
1395
|
+
},
|
|
1396
|
+
"command": {
|
|
1397
|
+
"type": "string"
|
|
1398
|
+
},
|
|
1399
|
+
"version": {
|
|
1400
|
+
"type": "string"
|
|
1401
|
+
},
|
|
1402
|
+
"generatedAt": {
|
|
1403
|
+
"type": "string"
|
|
1404
|
+
},
|
|
1405
|
+
"adapter": {
|
|
1406
|
+
"type": "string"
|
|
1407
|
+
},
|
|
1408
|
+
"model": {
|
|
1409
|
+
"type": "string"
|
|
1410
|
+
}
|
|
1411
|
+
}
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
},
|
|
1415
|
+
{
|
|
1416
|
+
"type": "object",
|
|
1417
|
+
"required": [
|
|
1418
|
+
"candidateLinks"
|
|
1419
|
+
],
|
|
1420
|
+
"properties": {
|
|
1421
|
+
"candidateLinks": {
|
|
1422
|
+
"type": "array",
|
|
1423
|
+
"items": {
|
|
1424
|
+
"type": "object",
|
|
1425
|
+
"required": [
|
|
1426
|
+
"from",
|
|
1427
|
+
"relation",
|
|
1428
|
+
"to",
|
|
1429
|
+
"confidence",
|
|
1430
|
+
"reason"
|
|
1431
|
+
],
|
|
1432
|
+
"properties": {
|
|
1433
|
+
"from": {
|
|
1434
|
+
"type": "string"
|
|
1435
|
+
},
|
|
1436
|
+
"relation": {
|
|
1437
|
+
"type": "string"
|
|
1438
|
+
},
|
|
1439
|
+
"to": {
|
|
1440
|
+
"type": "string"
|
|
1441
|
+
},
|
|
1442
|
+
"confidence": {
|
|
1443
|
+
"type": "number",
|
|
1444
|
+
"minimum": 0,
|
|
1445
|
+
"maximum": 1
|
|
1446
|
+
},
|
|
1447
|
+
"reason": {
|
|
1448
|
+
"type": "string"
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
}
|
|
1454
|
+
}
|
|
1455
|
+
]
|
|
1456
|
+
}
|
|
1457
|
+
```
|
|
1458
|
+
|
|
1459
|
+
</details>
|
|
1460
|
+
|
|
569
1461
|
**Exit 11:** Runtime dependency missing (agent-contracts-runtime).
|
|
570
1462
|
|
|
571
1463
|
- **stderr:** format=`text`
|
|
@@ -578,7 +1470,7 @@ speckeeper propose-trace-links --adapter claude --report-format json
|
|
|
578
1470
|
|
|
579
1471
|
```yaml
|
|
580
1472
|
x-agent:
|
|
581
|
-
|
|
1473
|
+
recommended_before_use:
|
|
582
1474
|
- Run with --dry-run first to preview the prompt
|
|
583
1475
|
retryableExitCodes:
|
|
584
1476
|
- 12
|
|
@@ -619,6 +1511,253 @@ speckeeper impact ENT-ORDER --format json | speckeeper explain-impact --adapter
|
|
|
619
1511
|
|
|
620
1512
|
- **stdout:** format=`{options.report-format}`
|
|
621
1513
|
|
|
1514
|
+
|
|
1515
|
+
<details>
|
|
1516
|
+
<summary>JSON Schema</summary>
|
|
1517
|
+
|
|
1518
|
+
```json
|
|
1519
|
+
{
|
|
1520
|
+
"type": "object",
|
|
1521
|
+
"description": "Human-readable explanation of impact analysis output.",
|
|
1522
|
+
"allOf": [
|
|
1523
|
+
{
|
|
1524
|
+
"type": "object",
|
|
1525
|
+
"description": "Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.",
|
|
1526
|
+
"required": [
|
|
1527
|
+
"summary",
|
|
1528
|
+
"riskLevel",
|
|
1529
|
+
"findings"
|
|
1530
|
+
],
|
|
1531
|
+
"properties": {
|
|
1532
|
+
"summary": {
|
|
1533
|
+
"type": "string"
|
|
1534
|
+
},
|
|
1535
|
+
"riskLevel": {
|
|
1536
|
+
"type": "string",
|
|
1537
|
+
"enum": [
|
|
1538
|
+
"low",
|
|
1539
|
+
"medium",
|
|
1540
|
+
"high",
|
|
1541
|
+
"critical"
|
|
1542
|
+
]
|
|
1543
|
+
},
|
|
1544
|
+
"findings": {
|
|
1545
|
+
"type": "array",
|
|
1546
|
+
"items": {
|
|
1547
|
+
"type": "object",
|
|
1548
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
1549
|
+
"required": [
|
|
1550
|
+
"severity",
|
|
1551
|
+
"category",
|
|
1552
|
+
"message"
|
|
1553
|
+
],
|
|
1554
|
+
"properties": {
|
|
1555
|
+
"id": {
|
|
1556
|
+
"type": "string",
|
|
1557
|
+
"description": "Unique finding identifier."
|
|
1558
|
+
},
|
|
1559
|
+
"severity": {
|
|
1560
|
+
"type": "string",
|
|
1561
|
+
"enum": [
|
|
1562
|
+
"info",
|
|
1563
|
+
"warning",
|
|
1564
|
+
"error",
|
|
1565
|
+
"critical"
|
|
1566
|
+
]
|
|
1567
|
+
},
|
|
1568
|
+
"category": {
|
|
1569
|
+
"type": "string",
|
|
1570
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
1571
|
+
},
|
|
1572
|
+
"target": {
|
|
1573
|
+
"type": "string",
|
|
1574
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
1575
|
+
},
|
|
1576
|
+
"location": {
|
|
1577
|
+
"type": "string",
|
|
1578
|
+
"description": "Location within the target."
|
|
1579
|
+
},
|
|
1580
|
+
"message": {
|
|
1581
|
+
"type": "string"
|
|
1582
|
+
},
|
|
1583
|
+
"recommendation": {
|
|
1584
|
+
"type": "string"
|
|
1585
|
+
},
|
|
1586
|
+
"confidence": {
|
|
1587
|
+
"type": "number",
|
|
1588
|
+
"minimum": 0,
|
|
1589
|
+
"maximum": 1,
|
|
1590
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
1591
|
+
},
|
|
1592
|
+
"evidence": {
|
|
1593
|
+
"type": "array",
|
|
1594
|
+
"items": {
|
|
1595
|
+
"type": "object",
|
|
1596
|
+
"description": "Evidence supporting an agent finding.",
|
|
1597
|
+
"required": [
|
|
1598
|
+
"kind"
|
|
1599
|
+
],
|
|
1600
|
+
"properties": {
|
|
1601
|
+
"kind": {
|
|
1602
|
+
"type": "string",
|
|
1603
|
+
"enum": [
|
|
1604
|
+
"file",
|
|
1605
|
+
"command",
|
|
1606
|
+
"schema",
|
|
1607
|
+
"diff",
|
|
1608
|
+
"stdout",
|
|
1609
|
+
"stderr",
|
|
1610
|
+
"text"
|
|
1611
|
+
]
|
|
1612
|
+
},
|
|
1613
|
+
"target": {
|
|
1614
|
+
"type": "string",
|
|
1615
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
1616
|
+
},
|
|
1617
|
+
"location": {
|
|
1618
|
+
"type": "string",
|
|
1619
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
1620
|
+
},
|
|
1621
|
+
"excerpt": {
|
|
1622
|
+
"type": "string",
|
|
1623
|
+
"description": "Relevant excerpt from the target."
|
|
1624
|
+
}
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
},
|
|
1628
|
+
"details": {
|
|
1629
|
+
"type": "object",
|
|
1630
|
+
"additionalProperties": true
|
|
1631
|
+
}
|
|
1632
|
+
}
|
|
1633
|
+
}
|
|
1634
|
+
},
|
|
1635
|
+
"recommendedActions": {
|
|
1636
|
+
"type": "array",
|
|
1637
|
+
"items": {
|
|
1638
|
+
"type": "object",
|
|
1639
|
+
"description": "A recommended action from an agent audit.",
|
|
1640
|
+
"required": [
|
|
1641
|
+
"kind",
|
|
1642
|
+
"title"
|
|
1643
|
+
],
|
|
1644
|
+
"properties": {
|
|
1645
|
+
"kind": {
|
|
1646
|
+
"type": "string",
|
|
1647
|
+
"enum": [
|
|
1648
|
+
"run_command",
|
|
1649
|
+
"edit_file",
|
|
1650
|
+
"review",
|
|
1651
|
+
"confirm",
|
|
1652
|
+
"block",
|
|
1653
|
+
"ignore"
|
|
1654
|
+
]
|
|
1655
|
+
},
|
|
1656
|
+
"title": {
|
|
1657
|
+
"type": "string"
|
|
1658
|
+
},
|
|
1659
|
+
"command": {
|
|
1660
|
+
"type": "string",
|
|
1661
|
+
"description": "CLI command to run (for run_command kind)."
|
|
1662
|
+
},
|
|
1663
|
+
"target": {
|
|
1664
|
+
"type": "string",
|
|
1665
|
+
"description": "Target file or resource."
|
|
1666
|
+
},
|
|
1667
|
+
"rationale": {
|
|
1668
|
+
"type": "string"
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
},
|
|
1673
|
+
"metadata": {
|
|
1674
|
+
"type": "object",
|
|
1675
|
+
"properties": {
|
|
1676
|
+
"tool": {
|
|
1677
|
+
"type": "string"
|
|
1678
|
+
},
|
|
1679
|
+
"command": {
|
|
1680
|
+
"type": "string"
|
|
1681
|
+
},
|
|
1682
|
+
"version": {
|
|
1683
|
+
"type": "string"
|
|
1684
|
+
},
|
|
1685
|
+
"generatedAt": {
|
|
1686
|
+
"type": "string"
|
|
1687
|
+
},
|
|
1688
|
+
"adapter": {
|
|
1689
|
+
"type": "string"
|
|
1690
|
+
},
|
|
1691
|
+
"model": {
|
|
1692
|
+
"type": "string"
|
|
1693
|
+
}
|
|
1694
|
+
}
|
|
1695
|
+
}
|
|
1696
|
+
}
|
|
1697
|
+
},
|
|
1698
|
+
{
|
|
1699
|
+
"type": "object",
|
|
1700
|
+
"required": [
|
|
1701
|
+
"explanation"
|
|
1702
|
+
],
|
|
1703
|
+
"properties": {
|
|
1704
|
+
"explanation": {
|
|
1705
|
+
"type": "string"
|
|
1706
|
+
},
|
|
1707
|
+
"affectedArtifacts": {
|
|
1708
|
+
"type": "array",
|
|
1709
|
+
"items": {
|
|
1710
|
+
"type": "object",
|
|
1711
|
+
"required": [
|
|
1712
|
+
"type",
|
|
1713
|
+
"id",
|
|
1714
|
+
"summary"
|
|
1715
|
+
],
|
|
1716
|
+
"properties": {
|
|
1717
|
+
"type": {
|
|
1718
|
+
"type": "string",
|
|
1719
|
+
"enum": [
|
|
1720
|
+
"spec",
|
|
1721
|
+
"api",
|
|
1722
|
+
"ddl",
|
|
1723
|
+
"test",
|
|
1724
|
+
"annotation"
|
|
1725
|
+
]
|
|
1726
|
+
},
|
|
1727
|
+
"id": {
|
|
1728
|
+
"type": "string"
|
|
1729
|
+
},
|
|
1730
|
+
"summary": {
|
|
1731
|
+
"type": "string"
|
|
1732
|
+
}
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
},
|
|
1736
|
+
"testConsiderations": {
|
|
1737
|
+
"type": "array",
|
|
1738
|
+
"items": {
|
|
1739
|
+
"type": "string"
|
|
1740
|
+
}
|
|
1741
|
+
},
|
|
1742
|
+
"releaseRisk": {
|
|
1743
|
+
"type": "string",
|
|
1744
|
+
"enum": [
|
|
1745
|
+
"low",
|
|
1746
|
+
"medium",
|
|
1747
|
+
"high"
|
|
1748
|
+
]
|
|
1749
|
+
},
|
|
1750
|
+
"sourceCommand": {
|
|
1751
|
+
"type": "string"
|
|
1752
|
+
}
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1755
|
+
]
|
|
1756
|
+
}
|
|
1757
|
+
```
|
|
1758
|
+
|
|
1759
|
+
</details>
|
|
1760
|
+
|
|
622
1761
|
**Exit 1:** Unexpected error.
|
|
623
1762
|
|
|
624
1763
|
- **stderr:** format=`text`
|
|
@@ -631,6 +1770,253 @@ speckeeper impact ENT-ORDER --format json | speckeeper explain-impact --adapter
|
|
|
631
1770
|
|
|
632
1771
|
- **stdout:** format=`{options.report-format}`
|
|
633
1772
|
|
|
1773
|
+
|
|
1774
|
+
<details>
|
|
1775
|
+
<summary>JSON Schema</summary>
|
|
1776
|
+
|
|
1777
|
+
```json
|
|
1778
|
+
{
|
|
1779
|
+
"type": "object",
|
|
1780
|
+
"description": "Human-readable explanation of impact analysis output.",
|
|
1781
|
+
"allOf": [
|
|
1782
|
+
{
|
|
1783
|
+
"type": "object",
|
|
1784
|
+
"description": "Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.",
|
|
1785
|
+
"required": [
|
|
1786
|
+
"summary",
|
|
1787
|
+
"riskLevel",
|
|
1788
|
+
"findings"
|
|
1789
|
+
],
|
|
1790
|
+
"properties": {
|
|
1791
|
+
"summary": {
|
|
1792
|
+
"type": "string"
|
|
1793
|
+
},
|
|
1794
|
+
"riskLevel": {
|
|
1795
|
+
"type": "string",
|
|
1796
|
+
"enum": [
|
|
1797
|
+
"low",
|
|
1798
|
+
"medium",
|
|
1799
|
+
"high",
|
|
1800
|
+
"critical"
|
|
1801
|
+
]
|
|
1802
|
+
},
|
|
1803
|
+
"findings": {
|
|
1804
|
+
"type": "array",
|
|
1805
|
+
"items": {
|
|
1806
|
+
"type": "object",
|
|
1807
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
1808
|
+
"required": [
|
|
1809
|
+
"severity",
|
|
1810
|
+
"category",
|
|
1811
|
+
"message"
|
|
1812
|
+
],
|
|
1813
|
+
"properties": {
|
|
1814
|
+
"id": {
|
|
1815
|
+
"type": "string",
|
|
1816
|
+
"description": "Unique finding identifier."
|
|
1817
|
+
},
|
|
1818
|
+
"severity": {
|
|
1819
|
+
"type": "string",
|
|
1820
|
+
"enum": [
|
|
1821
|
+
"info",
|
|
1822
|
+
"warning",
|
|
1823
|
+
"error",
|
|
1824
|
+
"critical"
|
|
1825
|
+
]
|
|
1826
|
+
},
|
|
1827
|
+
"category": {
|
|
1828
|
+
"type": "string",
|
|
1829
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
1830
|
+
},
|
|
1831
|
+
"target": {
|
|
1832
|
+
"type": "string",
|
|
1833
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
1834
|
+
},
|
|
1835
|
+
"location": {
|
|
1836
|
+
"type": "string",
|
|
1837
|
+
"description": "Location within the target."
|
|
1838
|
+
},
|
|
1839
|
+
"message": {
|
|
1840
|
+
"type": "string"
|
|
1841
|
+
},
|
|
1842
|
+
"recommendation": {
|
|
1843
|
+
"type": "string"
|
|
1844
|
+
},
|
|
1845
|
+
"confidence": {
|
|
1846
|
+
"type": "number",
|
|
1847
|
+
"minimum": 0,
|
|
1848
|
+
"maximum": 1,
|
|
1849
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
1850
|
+
},
|
|
1851
|
+
"evidence": {
|
|
1852
|
+
"type": "array",
|
|
1853
|
+
"items": {
|
|
1854
|
+
"type": "object",
|
|
1855
|
+
"description": "Evidence supporting an agent finding.",
|
|
1856
|
+
"required": [
|
|
1857
|
+
"kind"
|
|
1858
|
+
],
|
|
1859
|
+
"properties": {
|
|
1860
|
+
"kind": {
|
|
1861
|
+
"type": "string",
|
|
1862
|
+
"enum": [
|
|
1863
|
+
"file",
|
|
1864
|
+
"command",
|
|
1865
|
+
"schema",
|
|
1866
|
+
"diff",
|
|
1867
|
+
"stdout",
|
|
1868
|
+
"stderr",
|
|
1869
|
+
"text"
|
|
1870
|
+
]
|
|
1871
|
+
},
|
|
1872
|
+
"target": {
|
|
1873
|
+
"type": "string",
|
|
1874
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
1875
|
+
},
|
|
1876
|
+
"location": {
|
|
1877
|
+
"type": "string",
|
|
1878
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
1879
|
+
},
|
|
1880
|
+
"excerpt": {
|
|
1881
|
+
"type": "string",
|
|
1882
|
+
"description": "Relevant excerpt from the target."
|
|
1883
|
+
}
|
|
1884
|
+
}
|
|
1885
|
+
}
|
|
1886
|
+
},
|
|
1887
|
+
"details": {
|
|
1888
|
+
"type": "object",
|
|
1889
|
+
"additionalProperties": true
|
|
1890
|
+
}
|
|
1891
|
+
}
|
|
1892
|
+
}
|
|
1893
|
+
},
|
|
1894
|
+
"recommendedActions": {
|
|
1895
|
+
"type": "array",
|
|
1896
|
+
"items": {
|
|
1897
|
+
"type": "object",
|
|
1898
|
+
"description": "A recommended action from an agent audit.",
|
|
1899
|
+
"required": [
|
|
1900
|
+
"kind",
|
|
1901
|
+
"title"
|
|
1902
|
+
],
|
|
1903
|
+
"properties": {
|
|
1904
|
+
"kind": {
|
|
1905
|
+
"type": "string",
|
|
1906
|
+
"enum": [
|
|
1907
|
+
"run_command",
|
|
1908
|
+
"edit_file",
|
|
1909
|
+
"review",
|
|
1910
|
+
"confirm",
|
|
1911
|
+
"block",
|
|
1912
|
+
"ignore"
|
|
1913
|
+
]
|
|
1914
|
+
},
|
|
1915
|
+
"title": {
|
|
1916
|
+
"type": "string"
|
|
1917
|
+
},
|
|
1918
|
+
"command": {
|
|
1919
|
+
"type": "string",
|
|
1920
|
+
"description": "CLI command to run (for run_command kind)."
|
|
1921
|
+
},
|
|
1922
|
+
"target": {
|
|
1923
|
+
"type": "string",
|
|
1924
|
+
"description": "Target file or resource."
|
|
1925
|
+
},
|
|
1926
|
+
"rationale": {
|
|
1927
|
+
"type": "string"
|
|
1928
|
+
}
|
|
1929
|
+
}
|
|
1930
|
+
}
|
|
1931
|
+
},
|
|
1932
|
+
"metadata": {
|
|
1933
|
+
"type": "object",
|
|
1934
|
+
"properties": {
|
|
1935
|
+
"tool": {
|
|
1936
|
+
"type": "string"
|
|
1937
|
+
},
|
|
1938
|
+
"command": {
|
|
1939
|
+
"type": "string"
|
|
1940
|
+
},
|
|
1941
|
+
"version": {
|
|
1942
|
+
"type": "string"
|
|
1943
|
+
},
|
|
1944
|
+
"generatedAt": {
|
|
1945
|
+
"type": "string"
|
|
1946
|
+
},
|
|
1947
|
+
"adapter": {
|
|
1948
|
+
"type": "string"
|
|
1949
|
+
},
|
|
1950
|
+
"model": {
|
|
1951
|
+
"type": "string"
|
|
1952
|
+
}
|
|
1953
|
+
}
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
},
|
|
1957
|
+
{
|
|
1958
|
+
"type": "object",
|
|
1959
|
+
"required": [
|
|
1960
|
+
"explanation"
|
|
1961
|
+
],
|
|
1962
|
+
"properties": {
|
|
1963
|
+
"explanation": {
|
|
1964
|
+
"type": "string"
|
|
1965
|
+
},
|
|
1966
|
+
"affectedArtifacts": {
|
|
1967
|
+
"type": "array",
|
|
1968
|
+
"items": {
|
|
1969
|
+
"type": "object",
|
|
1970
|
+
"required": [
|
|
1971
|
+
"type",
|
|
1972
|
+
"id",
|
|
1973
|
+
"summary"
|
|
1974
|
+
],
|
|
1975
|
+
"properties": {
|
|
1976
|
+
"type": {
|
|
1977
|
+
"type": "string",
|
|
1978
|
+
"enum": [
|
|
1979
|
+
"spec",
|
|
1980
|
+
"api",
|
|
1981
|
+
"ddl",
|
|
1982
|
+
"test",
|
|
1983
|
+
"annotation"
|
|
1984
|
+
]
|
|
1985
|
+
},
|
|
1986
|
+
"id": {
|
|
1987
|
+
"type": "string"
|
|
1988
|
+
},
|
|
1989
|
+
"summary": {
|
|
1990
|
+
"type": "string"
|
|
1991
|
+
}
|
|
1992
|
+
}
|
|
1993
|
+
}
|
|
1994
|
+
},
|
|
1995
|
+
"testConsiderations": {
|
|
1996
|
+
"type": "array",
|
|
1997
|
+
"items": {
|
|
1998
|
+
"type": "string"
|
|
1999
|
+
}
|
|
2000
|
+
},
|
|
2001
|
+
"releaseRisk": {
|
|
2002
|
+
"type": "string",
|
|
2003
|
+
"enum": [
|
|
2004
|
+
"low",
|
|
2005
|
+
"medium",
|
|
2006
|
+
"high"
|
|
2007
|
+
]
|
|
2008
|
+
},
|
|
2009
|
+
"sourceCommand": {
|
|
2010
|
+
"type": "string"
|
|
2011
|
+
}
|
|
2012
|
+
}
|
|
2013
|
+
}
|
|
2014
|
+
]
|
|
2015
|
+
}
|
|
2016
|
+
```
|
|
2017
|
+
|
|
2018
|
+
</details>
|
|
2019
|
+
|
|
634
2020
|
**Exit 11:** Runtime dependency missing (agent-contracts-runtime).
|
|
635
2021
|
|
|
636
2022
|
- **stderr:** format=`text`
|
|
@@ -643,7 +2029,7 @@ speckeeper impact ENT-ORDER --format json | speckeeper explain-impact --adapter
|
|
|
643
2029
|
|
|
644
2030
|
```yaml
|
|
645
2031
|
x-agent:
|
|
646
|
-
|
|
2032
|
+
recommended_before_use:
|
|
647
2033
|
- Run with --dry-run first to preview the prompt
|
|
648
2034
|
retryableExitCodes:
|
|
649
2035
|
- 12
|
|
@@ -694,6 +2080,229 @@ speckeeper propose-acceptance-criteria --adapter gemini --dry-run
|
|
|
694
2080
|
|
|
695
2081
|
- **stdout:** format=`{options.report-format}`
|
|
696
2082
|
|
|
2083
|
+
|
|
2084
|
+
<details>
|
|
2085
|
+
<summary>JSON Schema</summary>
|
|
2086
|
+
|
|
2087
|
+
```json
|
|
2088
|
+
{
|
|
2089
|
+
"type": "object",
|
|
2090
|
+
"description": "Proposed acceptance criteria for design specs.",
|
|
2091
|
+
"allOf": [
|
|
2092
|
+
{
|
|
2093
|
+
"type": "object",
|
|
2094
|
+
"description": "Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.",
|
|
2095
|
+
"required": [
|
|
2096
|
+
"summary",
|
|
2097
|
+
"riskLevel",
|
|
2098
|
+
"findings"
|
|
2099
|
+
],
|
|
2100
|
+
"properties": {
|
|
2101
|
+
"summary": {
|
|
2102
|
+
"type": "string"
|
|
2103
|
+
},
|
|
2104
|
+
"riskLevel": {
|
|
2105
|
+
"type": "string",
|
|
2106
|
+
"enum": [
|
|
2107
|
+
"low",
|
|
2108
|
+
"medium",
|
|
2109
|
+
"high",
|
|
2110
|
+
"critical"
|
|
2111
|
+
]
|
|
2112
|
+
},
|
|
2113
|
+
"findings": {
|
|
2114
|
+
"type": "array",
|
|
2115
|
+
"items": {
|
|
2116
|
+
"type": "object",
|
|
2117
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
2118
|
+
"required": [
|
|
2119
|
+
"severity",
|
|
2120
|
+
"category",
|
|
2121
|
+
"message"
|
|
2122
|
+
],
|
|
2123
|
+
"properties": {
|
|
2124
|
+
"id": {
|
|
2125
|
+
"type": "string",
|
|
2126
|
+
"description": "Unique finding identifier."
|
|
2127
|
+
},
|
|
2128
|
+
"severity": {
|
|
2129
|
+
"type": "string",
|
|
2130
|
+
"enum": [
|
|
2131
|
+
"info",
|
|
2132
|
+
"warning",
|
|
2133
|
+
"error",
|
|
2134
|
+
"critical"
|
|
2135
|
+
]
|
|
2136
|
+
},
|
|
2137
|
+
"category": {
|
|
2138
|
+
"type": "string",
|
|
2139
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
2140
|
+
},
|
|
2141
|
+
"target": {
|
|
2142
|
+
"type": "string",
|
|
2143
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
2144
|
+
},
|
|
2145
|
+
"location": {
|
|
2146
|
+
"type": "string",
|
|
2147
|
+
"description": "Location within the target."
|
|
2148
|
+
},
|
|
2149
|
+
"message": {
|
|
2150
|
+
"type": "string"
|
|
2151
|
+
},
|
|
2152
|
+
"recommendation": {
|
|
2153
|
+
"type": "string"
|
|
2154
|
+
},
|
|
2155
|
+
"confidence": {
|
|
2156
|
+
"type": "number",
|
|
2157
|
+
"minimum": 0,
|
|
2158
|
+
"maximum": 1,
|
|
2159
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
2160
|
+
},
|
|
2161
|
+
"evidence": {
|
|
2162
|
+
"type": "array",
|
|
2163
|
+
"items": {
|
|
2164
|
+
"type": "object",
|
|
2165
|
+
"description": "Evidence supporting an agent finding.",
|
|
2166
|
+
"required": [
|
|
2167
|
+
"kind"
|
|
2168
|
+
],
|
|
2169
|
+
"properties": {
|
|
2170
|
+
"kind": {
|
|
2171
|
+
"type": "string",
|
|
2172
|
+
"enum": [
|
|
2173
|
+
"file",
|
|
2174
|
+
"command",
|
|
2175
|
+
"schema",
|
|
2176
|
+
"diff",
|
|
2177
|
+
"stdout",
|
|
2178
|
+
"stderr",
|
|
2179
|
+
"text"
|
|
2180
|
+
]
|
|
2181
|
+
},
|
|
2182
|
+
"target": {
|
|
2183
|
+
"type": "string",
|
|
2184
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
2185
|
+
},
|
|
2186
|
+
"location": {
|
|
2187
|
+
"type": "string",
|
|
2188
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
2189
|
+
},
|
|
2190
|
+
"excerpt": {
|
|
2191
|
+
"type": "string",
|
|
2192
|
+
"description": "Relevant excerpt from the target."
|
|
2193
|
+
}
|
|
2194
|
+
}
|
|
2195
|
+
}
|
|
2196
|
+
},
|
|
2197
|
+
"details": {
|
|
2198
|
+
"type": "object",
|
|
2199
|
+
"additionalProperties": true
|
|
2200
|
+
}
|
|
2201
|
+
}
|
|
2202
|
+
}
|
|
2203
|
+
},
|
|
2204
|
+
"recommendedActions": {
|
|
2205
|
+
"type": "array",
|
|
2206
|
+
"items": {
|
|
2207
|
+
"type": "object",
|
|
2208
|
+
"description": "A recommended action from an agent audit.",
|
|
2209
|
+
"required": [
|
|
2210
|
+
"kind",
|
|
2211
|
+
"title"
|
|
2212
|
+
],
|
|
2213
|
+
"properties": {
|
|
2214
|
+
"kind": {
|
|
2215
|
+
"type": "string",
|
|
2216
|
+
"enum": [
|
|
2217
|
+
"run_command",
|
|
2218
|
+
"edit_file",
|
|
2219
|
+
"review",
|
|
2220
|
+
"confirm",
|
|
2221
|
+
"block",
|
|
2222
|
+
"ignore"
|
|
2223
|
+
]
|
|
2224
|
+
},
|
|
2225
|
+
"title": {
|
|
2226
|
+
"type": "string"
|
|
2227
|
+
},
|
|
2228
|
+
"command": {
|
|
2229
|
+
"type": "string",
|
|
2230
|
+
"description": "CLI command to run (for run_command kind)."
|
|
2231
|
+
},
|
|
2232
|
+
"target": {
|
|
2233
|
+
"type": "string",
|
|
2234
|
+
"description": "Target file or resource."
|
|
2235
|
+
},
|
|
2236
|
+
"rationale": {
|
|
2237
|
+
"type": "string"
|
|
2238
|
+
}
|
|
2239
|
+
}
|
|
2240
|
+
}
|
|
2241
|
+
},
|
|
2242
|
+
"metadata": {
|
|
2243
|
+
"type": "object",
|
|
2244
|
+
"properties": {
|
|
2245
|
+
"tool": {
|
|
2246
|
+
"type": "string"
|
|
2247
|
+
},
|
|
2248
|
+
"command": {
|
|
2249
|
+
"type": "string"
|
|
2250
|
+
},
|
|
2251
|
+
"version": {
|
|
2252
|
+
"type": "string"
|
|
2253
|
+
},
|
|
2254
|
+
"generatedAt": {
|
|
2255
|
+
"type": "string"
|
|
2256
|
+
},
|
|
2257
|
+
"adapter": {
|
|
2258
|
+
"type": "string"
|
|
2259
|
+
},
|
|
2260
|
+
"model": {
|
|
2261
|
+
"type": "string"
|
|
2262
|
+
}
|
|
2263
|
+
}
|
|
2264
|
+
}
|
|
2265
|
+
}
|
|
2266
|
+
},
|
|
2267
|
+
{
|
|
2268
|
+
"type": "object",
|
|
2269
|
+
"required": [
|
|
2270
|
+
"criteriaProposals"
|
|
2271
|
+
],
|
|
2272
|
+
"properties": {
|
|
2273
|
+
"criteriaProposals": {
|
|
2274
|
+
"type": "array",
|
|
2275
|
+
"items": {
|
|
2276
|
+
"type": "object",
|
|
2277
|
+
"required": [
|
|
2278
|
+
"specId",
|
|
2279
|
+
"criteria",
|
|
2280
|
+
"rationale"
|
|
2281
|
+
],
|
|
2282
|
+
"properties": {
|
|
2283
|
+
"specId": {
|
|
2284
|
+
"type": "string"
|
|
2285
|
+
},
|
|
2286
|
+
"criteria": {
|
|
2287
|
+
"type": "array",
|
|
2288
|
+
"items": {
|
|
2289
|
+
"type": "string"
|
|
2290
|
+
}
|
|
2291
|
+
},
|
|
2292
|
+
"rationale": {
|
|
2293
|
+
"type": "string"
|
|
2294
|
+
}
|
|
2295
|
+
}
|
|
2296
|
+
}
|
|
2297
|
+
}
|
|
2298
|
+
}
|
|
2299
|
+
}
|
|
2300
|
+
]
|
|
2301
|
+
}
|
|
2302
|
+
```
|
|
2303
|
+
|
|
2304
|
+
</details>
|
|
2305
|
+
|
|
697
2306
|
**Exit 1:** Unexpected error.
|
|
698
2307
|
|
|
699
2308
|
- **stderr:** format=`text`
|
|
@@ -706,6 +2315,229 @@ speckeeper propose-acceptance-criteria --adapter gemini --dry-run
|
|
|
706
2315
|
|
|
707
2316
|
- **stdout:** format=`{options.report-format}`
|
|
708
2317
|
|
|
2318
|
+
|
|
2319
|
+
<details>
|
|
2320
|
+
<summary>JSON Schema</summary>
|
|
2321
|
+
|
|
2322
|
+
```json
|
|
2323
|
+
{
|
|
2324
|
+
"type": "object",
|
|
2325
|
+
"description": "Proposed acceptance criteria for design specs.",
|
|
2326
|
+
"allOf": [
|
|
2327
|
+
{
|
|
2328
|
+
"type": "object",
|
|
2329
|
+
"description": "Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.",
|
|
2330
|
+
"required": [
|
|
2331
|
+
"summary",
|
|
2332
|
+
"riskLevel",
|
|
2333
|
+
"findings"
|
|
2334
|
+
],
|
|
2335
|
+
"properties": {
|
|
2336
|
+
"summary": {
|
|
2337
|
+
"type": "string"
|
|
2338
|
+
},
|
|
2339
|
+
"riskLevel": {
|
|
2340
|
+
"type": "string",
|
|
2341
|
+
"enum": [
|
|
2342
|
+
"low",
|
|
2343
|
+
"medium",
|
|
2344
|
+
"high",
|
|
2345
|
+
"critical"
|
|
2346
|
+
]
|
|
2347
|
+
},
|
|
2348
|
+
"findings": {
|
|
2349
|
+
"type": "array",
|
|
2350
|
+
"items": {
|
|
2351
|
+
"type": "object",
|
|
2352
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
2353
|
+
"required": [
|
|
2354
|
+
"severity",
|
|
2355
|
+
"category",
|
|
2356
|
+
"message"
|
|
2357
|
+
],
|
|
2358
|
+
"properties": {
|
|
2359
|
+
"id": {
|
|
2360
|
+
"type": "string",
|
|
2361
|
+
"description": "Unique finding identifier."
|
|
2362
|
+
},
|
|
2363
|
+
"severity": {
|
|
2364
|
+
"type": "string",
|
|
2365
|
+
"enum": [
|
|
2366
|
+
"info",
|
|
2367
|
+
"warning",
|
|
2368
|
+
"error",
|
|
2369
|
+
"critical"
|
|
2370
|
+
]
|
|
2371
|
+
},
|
|
2372
|
+
"category": {
|
|
2373
|
+
"type": "string",
|
|
2374
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
2375
|
+
},
|
|
2376
|
+
"target": {
|
|
2377
|
+
"type": "string",
|
|
2378
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
2379
|
+
},
|
|
2380
|
+
"location": {
|
|
2381
|
+
"type": "string",
|
|
2382
|
+
"description": "Location within the target."
|
|
2383
|
+
},
|
|
2384
|
+
"message": {
|
|
2385
|
+
"type": "string"
|
|
2386
|
+
},
|
|
2387
|
+
"recommendation": {
|
|
2388
|
+
"type": "string"
|
|
2389
|
+
},
|
|
2390
|
+
"confidence": {
|
|
2391
|
+
"type": "number",
|
|
2392
|
+
"minimum": 0,
|
|
2393
|
+
"maximum": 1,
|
|
2394
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
2395
|
+
},
|
|
2396
|
+
"evidence": {
|
|
2397
|
+
"type": "array",
|
|
2398
|
+
"items": {
|
|
2399
|
+
"type": "object",
|
|
2400
|
+
"description": "Evidence supporting an agent finding.",
|
|
2401
|
+
"required": [
|
|
2402
|
+
"kind"
|
|
2403
|
+
],
|
|
2404
|
+
"properties": {
|
|
2405
|
+
"kind": {
|
|
2406
|
+
"type": "string",
|
|
2407
|
+
"enum": [
|
|
2408
|
+
"file",
|
|
2409
|
+
"command",
|
|
2410
|
+
"schema",
|
|
2411
|
+
"diff",
|
|
2412
|
+
"stdout",
|
|
2413
|
+
"stderr",
|
|
2414
|
+
"text"
|
|
2415
|
+
]
|
|
2416
|
+
},
|
|
2417
|
+
"target": {
|
|
2418
|
+
"type": "string",
|
|
2419
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
2420
|
+
},
|
|
2421
|
+
"location": {
|
|
2422
|
+
"type": "string",
|
|
2423
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
2424
|
+
},
|
|
2425
|
+
"excerpt": {
|
|
2426
|
+
"type": "string",
|
|
2427
|
+
"description": "Relevant excerpt from the target."
|
|
2428
|
+
}
|
|
2429
|
+
}
|
|
2430
|
+
}
|
|
2431
|
+
},
|
|
2432
|
+
"details": {
|
|
2433
|
+
"type": "object",
|
|
2434
|
+
"additionalProperties": true
|
|
2435
|
+
}
|
|
2436
|
+
}
|
|
2437
|
+
}
|
|
2438
|
+
},
|
|
2439
|
+
"recommendedActions": {
|
|
2440
|
+
"type": "array",
|
|
2441
|
+
"items": {
|
|
2442
|
+
"type": "object",
|
|
2443
|
+
"description": "A recommended action from an agent audit.",
|
|
2444
|
+
"required": [
|
|
2445
|
+
"kind",
|
|
2446
|
+
"title"
|
|
2447
|
+
],
|
|
2448
|
+
"properties": {
|
|
2449
|
+
"kind": {
|
|
2450
|
+
"type": "string",
|
|
2451
|
+
"enum": [
|
|
2452
|
+
"run_command",
|
|
2453
|
+
"edit_file",
|
|
2454
|
+
"review",
|
|
2455
|
+
"confirm",
|
|
2456
|
+
"block",
|
|
2457
|
+
"ignore"
|
|
2458
|
+
]
|
|
2459
|
+
},
|
|
2460
|
+
"title": {
|
|
2461
|
+
"type": "string"
|
|
2462
|
+
},
|
|
2463
|
+
"command": {
|
|
2464
|
+
"type": "string",
|
|
2465
|
+
"description": "CLI command to run (for run_command kind)."
|
|
2466
|
+
},
|
|
2467
|
+
"target": {
|
|
2468
|
+
"type": "string",
|
|
2469
|
+
"description": "Target file or resource."
|
|
2470
|
+
},
|
|
2471
|
+
"rationale": {
|
|
2472
|
+
"type": "string"
|
|
2473
|
+
}
|
|
2474
|
+
}
|
|
2475
|
+
}
|
|
2476
|
+
},
|
|
2477
|
+
"metadata": {
|
|
2478
|
+
"type": "object",
|
|
2479
|
+
"properties": {
|
|
2480
|
+
"tool": {
|
|
2481
|
+
"type": "string"
|
|
2482
|
+
},
|
|
2483
|
+
"command": {
|
|
2484
|
+
"type": "string"
|
|
2485
|
+
},
|
|
2486
|
+
"version": {
|
|
2487
|
+
"type": "string"
|
|
2488
|
+
},
|
|
2489
|
+
"generatedAt": {
|
|
2490
|
+
"type": "string"
|
|
2491
|
+
},
|
|
2492
|
+
"adapter": {
|
|
2493
|
+
"type": "string"
|
|
2494
|
+
},
|
|
2495
|
+
"model": {
|
|
2496
|
+
"type": "string"
|
|
2497
|
+
}
|
|
2498
|
+
}
|
|
2499
|
+
}
|
|
2500
|
+
}
|
|
2501
|
+
},
|
|
2502
|
+
{
|
|
2503
|
+
"type": "object",
|
|
2504
|
+
"required": [
|
|
2505
|
+
"criteriaProposals"
|
|
2506
|
+
],
|
|
2507
|
+
"properties": {
|
|
2508
|
+
"criteriaProposals": {
|
|
2509
|
+
"type": "array",
|
|
2510
|
+
"items": {
|
|
2511
|
+
"type": "object",
|
|
2512
|
+
"required": [
|
|
2513
|
+
"specId",
|
|
2514
|
+
"criteria",
|
|
2515
|
+
"rationale"
|
|
2516
|
+
],
|
|
2517
|
+
"properties": {
|
|
2518
|
+
"specId": {
|
|
2519
|
+
"type": "string"
|
|
2520
|
+
},
|
|
2521
|
+
"criteria": {
|
|
2522
|
+
"type": "array",
|
|
2523
|
+
"items": {
|
|
2524
|
+
"type": "string"
|
|
2525
|
+
}
|
|
2526
|
+
},
|
|
2527
|
+
"rationale": {
|
|
2528
|
+
"type": "string"
|
|
2529
|
+
}
|
|
2530
|
+
}
|
|
2531
|
+
}
|
|
2532
|
+
}
|
|
2533
|
+
}
|
|
2534
|
+
}
|
|
2535
|
+
]
|
|
2536
|
+
}
|
|
2537
|
+
```
|
|
2538
|
+
|
|
2539
|
+
</details>
|
|
2540
|
+
|
|
709
2541
|
**Exit 11:** Runtime dependency missing (agent-contracts-runtime).
|
|
710
2542
|
|
|
711
2543
|
- **stderr:** format=`text`
|
|
@@ -718,10 +2550,592 @@ speckeeper propose-acceptance-criteria --adapter gemini --dry-run
|
|
|
718
2550
|
|
|
719
2551
|
```yaml
|
|
720
2552
|
x-agent:
|
|
721
|
-
|
|
2553
|
+
recommended_before_use:
|
|
722
2554
|
- Run with --dry-run first to preview the prompt
|
|
723
2555
|
retryableExitCodes:
|
|
724
2556
|
- 12
|
|
725
2557
|
```
|
|
726
2558
|
|
|
727
2559
|
---
|
|
2560
|
+
|
|
2561
|
+
---
|
|
2562
|
+
|
|
2563
|
+
## Schemas
|
|
2564
|
+
|
|
2565
|
+
### AgentEvidence
|
|
2566
|
+
|
|
2567
|
+
Evidence supporting an agent finding.
|
|
2568
|
+
|
|
2569
|
+
Type: `object`
|
|
2570
|
+
|
|
2571
|
+
| Property | Type | Required | Description |
|
|
2572
|
+
|---|---|---|---|
|
|
2573
|
+
| `kind` | `enum(7 values)` | Yes | |
|
|
2574
|
+
| `target` | `string` | No | Target identifier (file path, command ID, schema name). |
|
|
2575
|
+
| `location` | `string` | No | Location within the target (line number, JSON pointer). |
|
|
2576
|
+
| `excerpt` | `string` | No | Relevant excerpt from the target. |
|
|
2577
|
+
|
|
2578
|
+
<details>
|
|
2579
|
+
<summary>JSON Schema</summary>
|
|
2580
|
+
|
|
2581
|
+
```json
|
|
2582
|
+
{
|
|
2583
|
+
"type": "object",
|
|
2584
|
+
"description": "Evidence supporting an agent finding.",
|
|
2585
|
+
"required": [
|
|
2586
|
+
"kind"
|
|
2587
|
+
],
|
|
2588
|
+
"properties": {
|
|
2589
|
+
"kind": {
|
|
2590
|
+
"type": "string",
|
|
2591
|
+
"enum": [
|
|
2592
|
+
"file",
|
|
2593
|
+
"command",
|
|
2594
|
+
"schema",
|
|
2595
|
+
"diff",
|
|
2596
|
+
"stdout",
|
|
2597
|
+
"stderr",
|
|
2598
|
+
"text"
|
|
2599
|
+
]
|
|
2600
|
+
},
|
|
2601
|
+
"target": {
|
|
2602
|
+
"type": "string",
|
|
2603
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
2604
|
+
},
|
|
2605
|
+
"location": {
|
|
2606
|
+
"type": "string",
|
|
2607
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
2608
|
+
},
|
|
2609
|
+
"excerpt": {
|
|
2610
|
+
"type": "string",
|
|
2611
|
+
"description": "Relevant excerpt from the target."
|
|
2612
|
+
}
|
|
2613
|
+
}
|
|
2614
|
+
}
|
|
2615
|
+
```
|
|
2616
|
+
|
|
2617
|
+
</details>
|
|
2618
|
+
|
|
2619
|
+
### AgentFinding
|
|
2620
|
+
|
|
2621
|
+
A single finding from an agent audit or analysis.
|
|
2622
|
+
|
|
2623
|
+
Type: `object`
|
|
2624
|
+
|
|
2625
|
+
| Property | Type | Required | Description |
|
|
2626
|
+
|---|---|---|---|
|
|
2627
|
+
| `id` | `string` | No | Unique finding identifier. |
|
|
2628
|
+
| `severity` | `"info" \| "warning" \| "error" \| "critical"` | Yes | |
|
|
2629
|
+
| `category` | `string` | Yes | Finding category (e.g. verifiability, ambiguity, granularity). |
|
|
2630
|
+
| `target` | `string` | No | Target of the finding (spec ID, model type). |
|
|
2631
|
+
| `location` | `string` | No | Location within the target. |
|
|
2632
|
+
| `message` | `string` | Yes | |
|
|
2633
|
+
| `recommendation` | `string` | No | |
|
|
2634
|
+
| `confidence` | `number (min: 0, max: 1)` | No | Confidence score (0-1) for LLM-generated findings. |
|
|
2635
|
+
| `evidence` | `object[]` | No | |
|
|
2636
|
+
| `evidence[].kind` | `enum(7 values)` | Yes | |
|
|
2637
|
+
| `evidence[].target` | `string` | No | Target identifier (file path, command ID, schema name). |
|
|
2638
|
+
| `evidence[].location` | `string` | No | Location within the target (line number, JSON pointer). |
|
|
2639
|
+
| `evidence[].excerpt` | `string` | No | Relevant excerpt from the target. |
|
|
2640
|
+
| `details` | `Record<string, any>` | No | |
|
|
2641
|
+
|
|
2642
|
+
<details>
|
|
2643
|
+
<summary>JSON Schema</summary>
|
|
2644
|
+
|
|
2645
|
+
```json
|
|
2646
|
+
{
|
|
2647
|
+
"type": "object",
|
|
2648
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
2649
|
+
"required": [
|
|
2650
|
+
"severity",
|
|
2651
|
+
"category",
|
|
2652
|
+
"message"
|
|
2653
|
+
],
|
|
2654
|
+
"properties": {
|
|
2655
|
+
"id": {
|
|
2656
|
+
"type": "string",
|
|
2657
|
+
"description": "Unique finding identifier."
|
|
2658
|
+
},
|
|
2659
|
+
"severity": {
|
|
2660
|
+
"type": "string",
|
|
2661
|
+
"enum": [
|
|
2662
|
+
"info",
|
|
2663
|
+
"warning",
|
|
2664
|
+
"error",
|
|
2665
|
+
"critical"
|
|
2666
|
+
]
|
|
2667
|
+
},
|
|
2668
|
+
"category": {
|
|
2669
|
+
"type": "string",
|
|
2670
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
2671
|
+
},
|
|
2672
|
+
"target": {
|
|
2673
|
+
"type": "string",
|
|
2674
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
2675
|
+
},
|
|
2676
|
+
"location": {
|
|
2677
|
+
"type": "string",
|
|
2678
|
+
"description": "Location within the target."
|
|
2679
|
+
},
|
|
2680
|
+
"message": {
|
|
2681
|
+
"type": "string"
|
|
2682
|
+
},
|
|
2683
|
+
"recommendation": {
|
|
2684
|
+
"type": "string"
|
|
2685
|
+
},
|
|
2686
|
+
"confidence": {
|
|
2687
|
+
"type": "number",
|
|
2688
|
+
"minimum": 0,
|
|
2689
|
+
"maximum": 1,
|
|
2690
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
2691
|
+
},
|
|
2692
|
+
"evidence": {
|
|
2693
|
+
"type": "array",
|
|
2694
|
+
"items": {
|
|
2695
|
+
"type": "object",
|
|
2696
|
+
"description": "Evidence supporting an agent finding.",
|
|
2697
|
+
"required": [
|
|
2698
|
+
"kind"
|
|
2699
|
+
],
|
|
2700
|
+
"properties": {
|
|
2701
|
+
"kind": {
|
|
2702
|
+
"type": "string",
|
|
2703
|
+
"enum": [
|
|
2704
|
+
"file",
|
|
2705
|
+
"command",
|
|
2706
|
+
"schema",
|
|
2707
|
+
"diff",
|
|
2708
|
+
"stdout",
|
|
2709
|
+
"stderr",
|
|
2710
|
+
"text"
|
|
2711
|
+
]
|
|
2712
|
+
},
|
|
2713
|
+
"target": {
|
|
2714
|
+
"type": "string",
|
|
2715
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
2716
|
+
},
|
|
2717
|
+
"location": {
|
|
2718
|
+
"type": "string",
|
|
2719
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
2720
|
+
},
|
|
2721
|
+
"excerpt": {
|
|
2722
|
+
"type": "string",
|
|
2723
|
+
"description": "Relevant excerpt from the target."
|
|
2724
|
+
}
|
|
2725
|
+
}
|
|
2726
|
+
}
|
|
2727
|
+
},
|
|
2728
|
+
"details": {
|
|
2729
|
+
"type": "object",
|
|
2730
|
+
"additionalProperties": true
|
|
2731
|
+
}
|
|
2732
|
+
}
|
|
2733
|
+
}
|
|
2734
|
+
```
|
|
2735
|
+
|
|
2736
|
+
</details>
|
|
2737
|
+
|
|
2738
|
+
### AgentRecommendedAction
|
|
2739
|
+
|
|
2740
|
+
A recommended action from an agent audit.
|
|
2741
|
+
|
|
2742
|
+
Type: `object`
|
|
2743
|
+
|
|
2744
|
+
| Property | Type | Required | Description |
|
|
2745
|
+
|---|---|---|---|
|
|
2746
|
+
| `kind` | `enum(6 values)` | Yes | |
|
|
2747
|
+
| `title` | `string` | Yes | |
|
|
2748
|
+
| `command` | `string` | No | CLI command to run (for run_command kind). |
|
|
2749
|
+
| `target` | `string` | No | Target file or resource. |
|
|
2750
|
+
| `rationale` | `string` | No | |
|
|
2751
|
+
|
|
2752
|
+
<details>
|
|
2753
|
+
<summary>JSON Schema</summary>
|
|
2754
|
+
|
|
2755
|
+
```json
|
|
2756
|
+
{
|
|
2757
|
+
"type": "object",
|
|
2758
|
+
"description": "A recommended action from an agent audit.",
|
|
2759
|
+
"required": [
|
|
2760
|
+
"kind",
|
|
2761
|
+
"title"
|
|
2762
|
+
],
|
|
2763
|
+
"properties": {
|
|
2764
|
+
"kind": {
|
|
2765
|
+
"type": "string",
|
|
2766
|
+
"enum": [
|
|
2767
|
+
"run_command",
|
|
2768
|
+
"edit_file",
|
|
2769
|
+
"review",
|
|
2770
|
+
"confirm",
|
|
2771
|
+
"block",
|
|
2772
|
+
"ignore"
|
|
2773
|
+
]
|
|
2774
|
+
},
|
|
2775
|
+
"title": {
|
|
2776
|
+
"type": "string"
|
|
2777
|
+
},
|
|
2778
|
+
"command": {
|
|
2779
|
+
"type": "string",
|
|
2780
|
+
"description": "CLI command to run (for run_command kind)."
|
|
2781
|
+
},
|
|
2782
|
+
"target": {
|
|
2783
|
+
"type": "string",
|
|
2784
|
+
"description": "Target file or resource."
|
|
2785
|
+
},
|
|
2786
|
+
"rationale": {
|
|
2787
|
+
"type": "string"
|
|
2788
|
+
}
|
|
2789
|
+
}
|
|
2790
|
+
}
|
|
2791
|
+
```
|
|
2792
|
+
|
|
2793
|
+
</details>
|
|
2794
|
+
|
|
2795
|
+
### RequirementAuditResult
|
|
2796
|
+
|
|
2797
|
+
Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.
|
|
2798
|
+
|
|
2799
|
+
Type: `object`
|
|
2800
|
+
|
|
2801
|
+
| Property | Type | Required | Description |
|
|
2802
|
+
|---|---|---|---|
|
|
2803
|
+
| `summary` | `string` | Yes | |
|
|
2804
|
+
| `riskLevel` | `"low" \| "medium" \| "high" \| "critical"` | Yes | |
|
|
2805
|
+
| `findings` | `object[]` | Yes | |
|
|
2806
|
+
| `findings[].id` | `string` | No | Unique finding identifier. |
|
|
2807
|
+
| `findings[].severity` | `"info" \| "warning" \| "error" \| "critical"` | Yes | |
|
|
2808
|
+
| `findings[].category` | `string` | Yes | Finding category (e.g. verifiability, ambiguity, granularity). |
|
|
2809
|
+
| `findings[].target` | `string` | No | Target of the finding (spec ID, model type). |
|
|
2810
|
+
| `findings[].location` | `string` | No | Location within the target. |
|
|
2811
|
+
| `findings[].message` | `string` | Yes | |
|
|
2812
|
+
| `findings[].recommendation` | `string` | No | |
|
|
2813
|
+
| `findings[].confidence` | `number (min: 0, max: 1)` | No | Confidence score (0-1) for LLM-generated findings. |
|
|
2814
|
+
| `findings[].evidence` | `object[]` | No | |
|
|
2815
|
+
| `findings[].evidence[].kind` | `enum(7 values)` | Yes | |
|
|
2816
|
+
| `findings[].evidence[].target` | `string` | No | Target identifier (file path, command ID, schema name). |
|
|
2817
|
+
| `findings[].evidence[].location` | `string` | No | Location within the target (line number, JSON pointer). |
|
|
2818
|
+
| `findings[].evidence[].excerpt` | `string` | No | Relevant excerpt from the target. |
|
|
2819
|
+
| `findings[].details` | `Record<string, any>` | No | |
|
|
2820
|
+
| `recommendedActions` | `object[]` | No | |
|
|
2821
|
+
| `recommendedActions[].kind` | `enum(6 values)` | Yes | |
|
|
2822
|
+
| `recommendedActions[].title` | `string` | Yes | |
|
|
2823
|
+
| `recommendedActions[].command` | `string` | No | CLI command to run (for run_command kind). |
|
|
2824
|
+
| `recommendedActions[].target` | `string` | No | Target file or resource. |
|
|
2825
|
+
| `recommendedActions[].rationale` | `string` | No | |
|
|
2826
|
+
| `metadata` | `object` | No | |
|
|
2827
|
+
| `metadata.tool` | `string` | No | |
|
|
2828
|
+
| `metadata.command` | `string` | No | |
|
|
2829
|
+
| `metadata.version` | `string` | No | |
|
|
2830
|
+
| `metadata.generatedAt` | `string` | No | |
|
|
2831
|
+
| `metadata.adapter` | `string` | No | |
|
|
2832
|
+
| `metadata.model` | `string` | No | |
|
|
2833
|
+
|
|
2834
|
+
<details>
|
|
2835
|
+
<summary>JSON Schema</summary>
|
|
2836
|
+
|
|
2837
|
+
```json
|
|
2838
|
+
{
|
|
2839
|
+
"type": "object",
|
|
2840
|
+
"description": "Top-level result from an agent audit. Canonical schema for agent interoperability across toolchains.",
|
|
2841
|
+
"required": [
|
|
2842
|
+
"summary",
|
|
2843
|
+
"riskLevel",
|
|
2844
|
+
"findings"
|
|
2845
|
+
],
|
|
2846
|
+
"properties": {
|
|
2847
|
+
"summary": {
|
|
2848
|
+
"type": "string"
|
|
2849
|
+
},
|
|
2850
|
+
"riskLevel": {
|
|
2851
|
+
"type": "string",
|
|
2852
|
+
"enum": [
|
|
2853
|
+
"low",
|
|
2854
|
+
"medium",
|
|
2855
|
+
"high",
|
|
2856
|
+
"critical"
|
|
2857
|
+
]
|
|
2858
|
+
},
|
|
2859
|
+
"findings": {
|
|
2860
|
+
"type": "array",
|
|
2861
|
+
"items": {
|
|
2862
|
+
"type": "object",
|
|
2863
|
+
"description": "A single finding from an agent audit or analysis.",
|
|
2864
|
+
"required": [
|
|
2865
|
+
"severity",
|
|
2866
|
+
"category",
|
|
2867
|
+
"message"
|
|
2868
|
+
],
|
|
2869
|
+
"properties": {
|
|
2870
|
+
"id": {
|
|
2871
|
+
"type": "string",
|
|
2872
|
+
"description": "Unique finding identifier."
|
|
2873
|
+
},
|
|
2874
|
+
"severity": {
|
|
2875
|
+
"type": "string",
|
|
2876
|
+
"enum": [
|
|
2877
|
+
"info",
|
|
2878
|
+
"warning",
|
|
2879
|
+
"error",
|
|
2880
|
+
"critical"
|
|
2881
|
+
]
|
|
2882
|
+
},
|
|
2883
|
+
"category": {
|
|
2884
|
+
"type": "string",
|
|
2885
|
+
"description": "Finding category (e.g. verifiability, ambiguity, granularity)."
|
|
2886
|
+
},
|
|
2887
|
+
"target": {
|
|
2888
|
+
"type": "string",
|
|
2889
|
+
"description": "Target of the finding (spec ID, model type)."
|
|
2890
|
+
},
|
|
2891
|
+
"location": {
|
|
2892
|
+
"type": "string",
|
|
2893
|
+
"description": "Location within the target."
|
|
2894
|
+
},
|
|
2895
|
+
"message": {
|
|
2896
|
+
"type": "string"
|
|
2897
|
+
},
|
|
2898
|
+
"recommendation": {
|
|
2899
|
+
"type": "string"
|
|
2900
|
+
},
|
|
2901
|
+
"confidence": {
|
|
2902
|
+
"type": "number",
|
|
2903
|
+
"minimum": 0,
|
|
2904
|
+
"maximum": 1,
|
|
2905
|
+
"description": "Confidence score (0-1) for LLM-generated findings."
|
|
2906
|
+
},
|
|
2907
|
+
"evidence": {
|
|
2908
|
+
"type": "array",
|
|
2909
|
+
"items": {
|
|
2910
|
+
"type": "object",
|
|
2911
|
+
"description": "Evidence supporting an agent finding.",
|
|
2912
|
+
"required": [
|
|
2913
|
+
"kind"
|
|
2914
|
+
],
|
|
2915
|
+
"properties": {
|
|
2916
|
+
"kind": {
|
|
2917
|
+
"type": "string",
|
|
2918
|
+
"enum": [
|
|
2919
|
+
"file",
|
|
2920
|
+
"command",
|
|
2921
|
+
"schema",
|
|
2922
|
+
"diff",
|
|
2923
|
+
"stdout",
|
|
2924
|
+
"stderr",
|
|
2925
|
+
"text"
|
|
2926
|
+
]
|
|
2927
|
+
},
|
|
2928
|
+
"target": {
|
|
2929
|
+
"type": "string",
|
|
2930
|
+
"description": "Target identifier (file path, command ID, schema name)."
|
|
2931
|
+
},
|
|
2932
|
+
"location": {
|
|
2933
|
+
"type": "string",
|
|
2934
|
+
"description": "Location within the target (line number, JSON pointer)."
|
|
2935
|
+
},
|
|
2936
|
+
"excerpt": {
|
|
2937
|
+
"type": "string",
|
|
2938
|
+
"description": "Relevant excerpt from the target."
|
|
2939
|
+
}
|
|
2940
|
+
}
|
|
2941
|
+
}
|
|
2942
|
+
},
|
|
2943
|
+
"details": {
|
|
2944
|
+
"type": "object",
|
|
2945
|
+
"additionalProperties": true
|
|
2946
|
+
}
|
|
2947
|
+
}
|
|
2948
|
+
}
|
|
2949
|
+
},
|
|
2950
|
+
"recommendedActions": {
|
|
2951
|
+
"type": "array",
|
|
2952
|
+
"items": {
|
|
2953
|
+
"type": "object",
|
|
2954
|
+
"description": "A recommended action from an agent audit.",
|
|
2955
|
+
"required": [
|
|
2956
|
+
"kind",
|
|
2957
|
+
"title"
|
|
2958
|
+
],
|
|
2959
|
+
"properties": {
|
|
2960
|
+
"kind": {
|
|
2961
|
+
"type": "string",
|
|
2962
|
+
"enum": [
|
|
2963
|
+
"run_command",
|
|
2964
|
+
"edit_file",
|
|
2965
|
+
"review",
|
|
2966
|
+
"confirm",
|
|
2967
|
+
"block",
|
|
2968
|
+
"ignore"
|
|
2969
|
+
]
|
|
2970
|
+
},
|
|
2971
|
+
"title": {
|
|
2972
|
+
"type": "string"
|
|
2973
|
+
},
|
|
2974
|
+
"command": {
|
|
2975
|
+
"type": "string",
|
|
2976
|
+
"description": "CLI command to run (for run_command kind)."
|
|
2977
|
+
},
|
|
2978
|
+
"target": {
|
|
2979
|
+
"type": "string",
|
|
2980
|
+
"description": "Target file or resource."
|
|
2981
|
+
},
|
|
2982
|
+
"rationale": {
|
|
2983
|
+
"type": "string"
|
|
2984
|
+
}
|
|
2985
|
+
}
|
|
2986
|
+
}
|
|
2987
|
+
},
|
|
2988
|
+
"metadata": {
|
|
2989
|
+
"type": "object",
|
|
2990
|
+
"properties": {
|
|
2991
|
+
"tool": {
|
|
2992
|
+
"type": "string"
|
|
2993
|
+
},
|
|
2994
|
+
"command": {
|
|
2995
|
+
"type": "string"
|
|
2996
|
+
},
|
|
2997
|
+
"version": {
|
|
2998
|
+
"type": "string"
|
|
2999
|
+
},
|
|
3000
|
+
"generatedAt": {
|
|
3001
|
+
"type": "string"
|
|
3002
|
+
},
|
|
3003
|
+
"adapter": {
|
|
3004
|
+
"type": "string"
|
|
3005
|
+
},
|
|
3006
|
+
"model": {
|
|
3007
|
+
"type": "string"
|
|
3008
|
+
}
|
|
3009
|
+
}
|
|
3010
|
+
}
|
|
3011
|
+
}
|
|
3012
|
+
}
|
|
3013
|
+
```
|
|
3014
|
+
|
|
3015
|
+
</details>
|
|
3016
|
+
|
|
3017
|
+
### TraceLinkResult
|
|
3018
|
+
|
|
3019
|
+
Result of trace link proposal with candidate links.
|
|
3020
|
+
|
|
3021
|
+
Type: `object`
|
|
3022
|
+
|
|
3023
|
+
|
|
3024
|
+
### ImpactExplainResult
|
|
3025
|
+
|
|
3026
|
+
Human-readable explanation of impact analysis output.
|
|
3027
|
+
|
|
3028
|
+
Type: `object`
|
|
3029
|
+
|
|
3030
|
+
|
|
3031
|
+
### AcceptanceCriteriaResult
|
|
3032
|
+
|
|
3033
|
+
Proposed acceptance criteria for design specs.
|
|
3034
|
+
|
|
3035
|
+
Type: `object`
|
|
3036
|
+
|
|
3037
|
+
|
|
3038
|
+
### ImpactAnalysisOutput
|
|
3039
|
+
|
|
3040
|
+
JSON output from speckeeper impact --format json.
|
|
3041
|
+
|
|
3042
|
+
Type: `object`
|
|
3043
|
+
|
|
3044
|
+
| Property | Type | Required | Description |
|
|
3045
|
+
|---|---|---|---|
|
|
3046
|
+
| `target` | `string` | Yes | |
|
|
3047
|
+
| `targetType` | `string` | Yes | |
|
|
3048
|
+
| `direction` | `"upstream" \| "downstream" \| "both"` | No | |
|
|
3049
|
+
| `depth` | `integer` | No | |
|
|
3050
|
+
| `impactedNodes` | `object[]` | Yes | |
|
|
3051
|
+
| `impactedNodes[].id` | `string` | Yes | |
|
|
3052
|
+
| `impactedNodes[].type` | `string` | Yes | |
|
|
3053
|
+
| `impactedNodes[].depth` | `integer` | Yes | |
|
|
3054
|
+
| `impactedNodes[].impactType` | `"direct" \| "indirect"` | Yes | |
|
|
3055
|
+
| `impactedNodes[].relations` | `object[]` | No | |
|
|
3056
|
+
| `impactedNodes[].relations[].type` | `string` | No | |
|
|
3057
|
+
| `impactedNodes[].relations[].from` | `string` | No | |
|
|
3058
|
+
| `impactedNodes[].relations[].to` | `string` | No | |
|
|
3059
|
+
|
|
3060
|
+
<details>
|
|
3061
|
+
<summary>JSON Schema</summary>
|
|
3062
|
+
|
|
3063
|
+
```json
|
|
3064
|
+
{
|
|
3065
|
+
"type": "object",
|
|
3066
|
+
"description": "JSON output from speckeeper impact --format json.",
|
|
3067
|
+
"required": [
|
|
3068
|
+
"target",
|
|
3069
|
+
"targetType",
|
|
3070
|
+
"impactedNodes"
|
|
3071
|
+
],
|
|
3072
|
+
"properties": {
|
|
3073
|
+
"target": {
|
|
3074
|
+
"type": "string"
|
|
3075
|
+
},
|
|
3076
|
+
"targetType": {
|
|
3077
|
+
"type": "string"
|
|
3078
|
+
},
|
|
3079
|
+
"direction": {
|
|
3080
|
+
"type": "string",
|
|
3081
|
+
"enum": [
|
|
3082
|
+
"upstream",
|
|
3083
|
+
"downstream",
|
|
3084
|
+
"both"
|
|
3085
|
+
]
|
|
3086
|
+
},
|
|
3087
|
+
"depth": {
|
|
3088
|
+
"type": "integer"
|
|
3089
|
+
},
|
|
3090
|
+
"impactedNodes": {
|
|
3091
|
+
"type": "array",
|
|
3092
|
+
"items": {
|
|
3093
|
+
"type": "object",
|
|
3094
|
+
"required": [
|
|
3095
|
+
"id",
|
|
3096
|
+
"type",
|
|
3097
|
+
"depth",
|
|
3098
|
+
"impactType"
|
|
3099
|
+
],
|
|
3100
|
+
"properties": {
|
|
3101
|
+
"id": {
|
|
3102
|
+
"type": "string"
|
|
3103
|
+
},
|
|
3104
|
+
"type": {
|
|
3105
|
+
"type": "string"
|
|
3106
|
+
},
|
|
3107
|
+
"depth": {
|
|
3108
|
+
"type": "integer"
|
|
3109
|
+
},
|
|
3110
|
+
"impactType": {
|
|
3111
|
+
"type": "string",
|
|
3112
|
+
"enum": [
|
|
3113
|
+
"direct",
|
|
3114
|
+
"indirect"
|
|
3115
|
+
]
|
|
3116
|
+
},
|
|
3117
|
+
"relations": {
|
|
3118
|
+
"type": "array",
|
|
3119
|
+
"items": {
|
|
3120
|
+
"type": "object",
|
|
3121
|
+
"properties": {
|
|
3122
|
+
"type": {
|
|
3123
|
+
"type": "string"
|
|
3124
|
+
},
|
|
3125
|
+
"from": {
|
|
3126
|
+
"type": "string"
|
|
3127
|
+
},
|
|
3128
|
+
"to": {
|
|
3129
|
+
"type": "string"
|
|
3130
|
+
}
|
|
3131
|
+
}
|
|
3132
|
+
}
|
|
3133
|
+
}
|
|
3134
|
+
}
|
|
3135
|
+
}
|
|
3136
|
+
}
|
|
3137
|
+
}
|
|
3138
|
+
}
|
|
3139
|
+
```
|
|
3140
|
+
|
|
3141
|
+
</details>
|