@devtrack-solution/codesdd 1.2.3 → 1.2.4-rc3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/.sdd/skills/curated/devtrack-api/SKILL.md +12 -5
  2. package/.sdd/skills/curated/devtrack-api/agents/claude-code.yaml +8 -0
  3. package/.sdd/skills/curated/devtrack-api/agents/codex.yaml +8 -0
  4. package/.sdd/skills/curated/devtrack-api/agents/cursor.yaml +8 -0
  5. package/.sdd/skills/curated/devtrack-api/agents/gemini.yaml +8 -0
  6. package/.sdd/skills/curated/devtrack-api/agents/kimi.yaml +8 -0
  7. package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +4 -2
  8. package/.sdd/skills/curated/devtrack-api/agents/opencode.yaml +10 -0
  9. package/.sdd/skills/curated/devtrack-api/references/application-presentation.md +2 -2
  10. package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +55 -0
  11. package/.sdd/skills/curated/devtrack-api/references/domain-modeling.md +13 -13
  12. package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +2 -3
  13. package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +1 -1
  14. package/.sdd/skills/curated/devtrack-api/references/portable-agent-contract.md +41 -0
  15. package/.sdd/skills/curated/devtrack-api/references/typeorm-infrastructure.md +7 -9
  16. package/README.md +159 -5
  17. package/dist/applications/sdd/index.d.ts +16 -0
  18. package/dist/applications/sdd/index.js +16 -0
  19. package/dist/commands/config.js +171 -10
  20. package/dist/commands/sdd/execution.js +345 -15
  21. package/dist/commands/sdd/plugin.js +5 -0
  22. package/dist/commands/sdd/shared.d.ts +1 -0
  23. package/dist/commands/sdd/shared.js +10 -0
  24. package/dist/commands/sdd.js +38 -3
  25. package/dist/core/cli/command-matrix.js +9 -0
  26. package/dist/core/cli-command-quality.js +9 -0
  27. package/dist/core/completions/command-registry.js +45 -0
  28. package/dist/core/config-schema.d.ts +18 -1
  29. package/dist/core/config-schema.js +48 -5
  30. package/dist/core/global-config.d.ts +16 -0
  31. package/dist/core/sdd/agent-binding.d.ts +10 -10
  32. package/dist/core/sdd/agent-runtime-contract.d.ts +204 -0
  33. package/dist/core/sdd/agent-runtime-contract.js +200 -0
  34. package/dist/core/sdd/check.d.ts +2 -0
  35. package/dist/core/sdd/check.js +40 -2
  36. package/dist/core/sdd/coordination/coordination-adapters.d.ts +15 -8
  37. package/dist/core/sdd/coordination/coordination-adapters.js +43 -15
  38. package/dist/core/sdd/coordination/index.d.ts +1 -0
  39. package/dist/core/sdd/coordination/index.js +1 -0
  40. package/dist/core/sdd/coordination/redis-runtime.d.ts +131 -0
  41. package/dist/core/sdd/coordination/redis-runtime.js +698 -0
  42. package/dist/core/sdd/deepagent-contracts.d.ts +98 -4
  43. package/dist/core/sdd/deepagent-contracts.js +62 -0
  44. package/dist/core/sdd/default-bootstrap-files.d.ts +2 -2
  45. package/dist/core/sdd/default-bootstrap-files.js +14 -8
  46. package/dist/core/sdd/default-skills.js +108 -4
  47. package/dist/core/sdd/devtrack-api-appliance.d.ts +8 -1
  48. package/dist/core/sdd/devtrack-api-appliance.js +46 -23
  49. package/dist/core/sdd/docs-sync.js +21 -15
  50. package/dist/core/sdd/domain/capability-diff.d.ts +63 -0
  51. package/dist/core/sdd/domain/capability-diff.js +200 -0
  52. package/dist/core/sdd/domain/change-safety-guardrails.d.ts +74 -0
  53. package/dist/core/sdd/domain/change-safety-guardrails.js +333 -0
  54. package/dist/core/sdd/domain/semantic-intent-classifier.d.ts +29 -0
  55. package/dist/core/sdd/domain/semantic-intent-classifier.js +117 -0
  56. package/dist/core/sdd/foundation-artifact-map-validator.d.ts +16 -0
  57. package/dist/core/sdd/foundation-artifact-map-validator.js +71 -0
  58. package/dist/core/sdd/foundation-layer-manifest.d.ts +24 -0
  59. package/dist/core/sdd/foundation-layer-manifest.js +117 -0
  60. package/dist/core/sdd/intent-guard.d.ts +22 -0
  61. package/dist/core/sdd/intent-guard.js +67 -0
  62. package/dist/core/sdd/json-schema.js +9 -1
  63. package/dist/core/sdd/legacy-operations.js +76 -1
  64. package/dist/core/sdd/migrate-workspace.js +39 -0
  65. package/dist/core/sdd/package-security-gates.d.ts +21 -0
  66. package/dist/core/sdd/package-security-gates.js +119 -0
  67. package/dist/core/sdd/package-structure-gate.js +3 -8
  68. package/dist/core/sdd/parallel-feat-automation.d.ts +181 -3
  69. package/dist/core/sdd/parallel-feat-automation.js +212 -0
  70. package/dist/core/sdd/plugin-broker.d.ts +223 -4
  71. package/dist/core/sdd/plugin-broker.js +10 -0
  72. package/dist/core/sdd/plugin-cli.d.ts +30 -0
  73. package/dist/core/sdd/plugin-cli.js +70 -3
  74. package/dist/core/sdd/plugin-evidence.d.ts +73 -0
  75. package/dist/core/sdd/plugin-manifest.d.ts +69 -1
  76. package/dist/core/sdd/plugin-manifest.js +10 -0
  77. package/dist/core/sdd/plugin-policy-pack.d.ts +1 -1
  78. package/dist/core/sdd/plugin-registry.d.ts +141 -5
  79. package/dist/core/sdd/plugin-sdk-contract.d.ts +363 -0
  80. package/dist/core/sdd/plugin-sdk-contract.js +268 -0
  81. package/dist/core/sdd/plugin-skill-binding.d.ts +1 -1
  82. package/dist/core/sdd/quality-validation.d.ts +84 -11
  83. package/dist/core/sdd/release-readiness.d.ts +19 -0
  84. package/dist/core/sdd/release-readiness.js +472 -0
  85. package/dist/core/sdd/runtime-boundary-contract.d.ts +45 -0
  86. package/dist/core/sdd/runtime-boundary-contract.js +90 -0
  87. package/dist/core/sdd/sdk-agent-plugin-quality-gates.d.ts +150 -0
  88. package/dist/core/sdd/sdk-agent-plugin-quality-gates.js +258 -0
  89. package/dist/core/sdd/services/agent-run.service.d.ts +38 -6
  90. package/dist/core/sdd/services/agent-run.service.js +73 -1
  91. package/dist/core/sdd/services/capability-diff.service.d.ts +18 -0
  92. package/dist/core/sdd/services/capability-diff.service.js +26 -0
  93. package/dist/core/sdd/services/change-safety-preflight.service.d.ts +17 -0
  94. package/dist/core/sdd/services/change-safety-preflight.service.js +17 -0
  95. package/dist/core/sdd/services/context.service.d.ts +43 -340
  96. package/dist/core/sdd/services/context.service.js +323 -9
  97. package/dist/core/sdd/services/finalize.service.d.ts +25 -0
  98. package/dist/core/sdd/services/finalize.service.js +178 -16
  99. package/dist/core/sdd/services/frontend-impact.service.d.ts +1 -1
  100. package/dist/core/sdd/services/semantic-intent-classifier.service.d.ts +6 -0
  101. package/dist/core/sdd/services/semantic-intent-classifier.service.js +7 -0
  102. package/dist/core/sdd/state.d.ts +1 -0
  103. package/dist/core/sdd/state.js +251 -29
  104. package/dist/core/sdd/store/sdd-stores.js +2 -2
  105. package/dist/core/sdd/structural-health.d.ts +13 -13
  106. package/dist/core/sdd/types.d.ts +27 -12
  107. package/dist/core/sdd/types.js +4 -0
  108. package/dist/core/sdd/views.js +17 -0
  109. package/dist/core/sdd/workspace-schemas.d.ts +387 -7
  110. package/dist/core/sdd/workspace-schemas.js +196 -64
  111. package/dist/domains/sdd/index.d.ts +6 -0
  112. package/dist/domains/sdd/index.js +6 -0
  113. package/dist/infrastructures/sdd/index.d.ts +7 -0
  114. package/dist/infrastructures/sdd/index.js +6 -0
  115. package/dist/presentations/cli/sdd/index.d.ts +3 -0
  116. package/dist/presentations/cli/sdd/index.js +3 -0
  117. package/dist/shared/sdd/index.d.ts +3 -0
  118. package/dist/shared/sdd/index.js +2 -0
  119. package/package.json +9 -6
  120. package/schemas/sdd/2-plan.schema.json +207 -2
  121. package/schemas/sdd/5-quality.schema.json +281 -25
  122. package/schemas/sdd/agent-runtime-command-plan.schema.json +212 -0
  123. package/schemas/sdd/agent-runtime-opencode-run-evidence.schema.json +270 -0
  124. package/schemas/sdd/codesdd-plugin.schema.json +171 -0
  125. package/schemas/sdd/deepagent-run-request.schema.json +316 -0
  126. package/schemas/sdd/parallel-feat-automation-plan.schema.json +89 -0
  127. package/schemas/sdd/parallel-feat-scheduler-request.schema.json +116 -0
  128. package/schemas/sdd/parallel-feat-scheduler-result.schema.json +404 -0
  129. package/schemas/sdd/plugin-artifact-manifest.schema.json +109 -0
  130. package/schemas/sdd/plugin-artifact-map.schema.json +223 -0
  131. package/schemas/sdd/plugin-evidence-manifest.schema.json +109 -0
  132. package/schemas/sdd/plugin-language-runtime.schema.json +103 -0
  133. package/schemas/sdd/plugin-package-governance.schema.json +74 -0
  134. package/schemas/sdd/plugin-registry.schema.json +171 -0
  135. package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +109 -0
  136. package/schemas/sdd/quality-evidence-bundle.schema.json +109 -0
  137. package/schemas/sdd/sdk-agent-plugin-quality-gate-input.schema.json +168 -0
  138. package/schemas/sdd/sdk-agent-plugin-quality-gate-report.schema.json +160 -0
  139. package/schemas/sdd/workspace-catalog.schema.json +3776 -398
@@ -14,10 +14,14 @@
14
14
  "type": "object",
15
15
  "properties": {
16
16
  "unit": {
17
- "type": "number"
17
+ "type": "number",
18
+ "minimum": 0,
19
+ "maximum": 100
18
20
  },
19
21
  "integration": {
20
- "type": "number"
22
+ "type": "number",
23
+ "minimum": 0,
24
+ "maximum": 100
21
25
  },
22
26
  "modules": {
23
27
  "type": "object",
@@ -25,7 +29,9 @@
25
29
  "type": "string"
26
30
  },
27
31
  "additionalProperties": {
28
- "type": "number"
32
+ "type": "number",
33
+ "minimum": 0,
34
+ "maximum": 100
29
35
  }
30
36
  }
31
37
  },
@@ -585,6 +591,215 @@
585
591
  ],
586
592
  "additionalProperties": false
587
593
  },
594
+ "token_budget_gates": {
595
+ "default": {
596
+ "require_numeric_efficiency": true,
597
+ "fail_below_percent": 95,
598
+ "telemetry": []
599
+ },
600
+ "type": "object",
601
+ "properties": {
602
+ "max_context_chars": {
603
+ "type": "integer",
604
+ "exclusiveMinimum": 0,
605
+ "maximum": 9007199254740991
606
+ },
607
+ "require_numeric_efficiency": {
608
+ "default": true,
609
+ "type": "boolean"
610
+ },
611
+ "fail_below_percent": {
612
+ "default": 95,
613
+ "type": "number",
614
+ "minimum": 0,
615
+ "maximum": 100
616
+ },
617
+ "telemetry": {
618
+ "default": [],
619
+ "type": "array",
620
+ "items": {
621
+ "type": "object",
622
+ "properties": {
623
+ "mode": {
624
+ "type": "string",
625
+ "enum": [
626
+ "compact",
627
+ "standard",
628
+ "full"
629
+ ]
630
+ },
631
+ "budget_chars": {
632
+ "type": "integer",
633
+ "exclusiveMinimum": 0,
634
+ "maximum": 9007199254740991
635
+ },
636
+ "actual_chars": {
637
+ "type": "integer",
638
+ "minimum": 0,
639
+ "maximum": 9007199254740991
640
+ },
641
+ "efficiency_percent": {
642
+ "type": "number",
643
+ "minimum": 0,
644
+ "maximum": 100
645
+ },
646
+ "gate": {
647
+ "default": "pass",
648
+ "type": "string",
649
+ "enum": [
650
+ "pass",
651
+ "warn",
652
+ "fail"
653
+ ]
654
+ },
655
+ "evidence_ref": {
656
+ "type": "string",
657
+ "minLength": 1
658
+ },
659
+ "notes": {
660
+ "type": "string"
661
+ }
662
+ },
663
+ "required": [
664
+ "gate"
665
+ ],
666
+ "additionalProperties": false
667
+ }
668
+ }
669
+ },
670
+ "required": [
671
+ "require_numeric_efficiency",
672
+ "fail_below_percent",
673
+ "telemetry"
674
+ ],
675
+ "additionalProperties": false
676
+ },
677
+ "runtime_quality_gates": {
678
+ "default": {
679
+ "mode": "observe",
680
+ "performance": [],
681
+ "flakiness": []
682
+ },
683
+ "type": "object",
684
+ "properties": {
685
+ "mode": {
686
+ "default": "observe",
687
+ "type": "string",
688
+ "enum": [
689
+ "observe",
690
+ "enforce"
691
+ ]
692
+ },
693
+ "performance": {
694
+ "default": [],
695
+ "type": "array",
696
+ "items": {
697
+ "type": "object",
698
+ "properties": {
699
+ "command": {
700
+ "type": "string",
701
+ "minLength": 1
702
+ },
703
+ "metric": {
704
+ "default": "duration_ms",
705
+ "type": "string",
706
+ "enum": [
707
+ "duration_ms",
708
+ "p95_ms",
709
+ "memory_mb",
710
+ "cpu_percent"
711
+ ]
712
+ },
713
+ "threshold": {
714
+ "type": "number",
715
+ "minimum": 0
716
+ },
717
+ "actual": {
718
+ "type": "number",
719
+ "minimum": 0
720
+ },
721
+ "gate": {
722
+ "default": "pass",
723
+ "type": "string",
724
+ "enum": [
725
+ "pass",
726
+ "warn",
727
+ "fail"
728
+ ]
729
+ },
730
+ "evidence_ref": {
731
+ "type": "string",
732
+ "minLength": 1
733
+ },
734
+ "notes": {
735
+ "type": "string"
736
+ }
737
+ },
738
+ "required": [
739
+ "command",
740
+ "metric",
741
+ "gate"
742
+ ],
743
+ "additionalProperties": false
744
+ }
745
+ },
746
+ "flakiness": {
747
+ "default": [],
748
+ "type": "array",
749
+ "items": {
750
+ "type": "object",
751
+ "properties": {
752
+ "command": {
753
+ "type": "string",
754
+ "minLength": 1
755
+ },
756
+ "attempts": {
757
+ "type": "integer",
758
+ "exclusiveMinimum": 0,
759
+ "maximum": 9007199254740991
760
+ },
761
+ "failures": {
762
+ "type": "integer",
763
+ "minimum": 0,
764
+ "maximum": 9007199254740991
765
+ },
766
+ "failure_rate_percent": {
767
+ "type": "number",
768
+ "minimum": 0,
769
+ "maximum": 100
770
+ },
771
+ "gate": {
772
+ "default": "pass",
773
+ "type": "string",
774
+ "enum": [
775
+ "pass",
776
+ "warn",
777
+ "fail"
778
+ ]
779
+ },
780
+ "evidence_ref": {
781
+ "type": "string",
782
+ "minLength": 1
783
+ },
784
+ "notes": {
785
+ "type": "string"
786
+ }
787
+ },
788
+ "required": [
789
+ "command",
790
+ "gate"
791
+ ],
792
+ "additionalProperties": false
793
+ }
794
+ }
795
+ },
796
+ "required": [
797
+ "mode",
798
+ "performance",
799
+ "flakiness"
800
+ ],
801
+ "additionalProperties": false
802
+ },
588
803
  "q95_ledger": {
589
804
  "default": {
590
805
  "threshold": 95,
@@ -631,11 +846,15 @@
631
846
  "properties": {
632
847
  "threshold": {
633
848
  "default": 95,
634
- "type": "number"
849
+ "type": "number",
850
+ "minimum": 0,
851
+ "maximum": 100
635
852
  },
636
853
  "score": {
637
854
  "default": 0,
638
- "type": "number"
855
+ "type": "number",
856
+ "minimum": 0,
857
+ "maximum": 100
639
858
  },
640
859
  "status": {
641
860
  "default": "pending",
@@ -662,23 +881,33 @@
662
881
  "properties": {
663
882
  "coverage": {
664
883
  "default": 30,
665
- "type": "number"
884
+ "type": "number",
885
+ "minimum": 0,
886
+ "maximum": 100
666
887
  },
667
888
  "traceability": {
668
889
  "default": 20,
669
- "type": "number"
890
+ "type": "number",
891
+ "minimum": 0,
892
+ "maximum": 100
670
893
  },
671
894
  "integrity": {
672
895
  "default": 20,
673
- "type": "number"
896
+ "type": "number",
897
+ "minimum": 0,
898
+ "maximum": 100
674
899
  },
675
900
  "naming": {
676
901
  "default": 10,
677
- "type": "number"
902
+ "type": "number",
903
+ "minimum": 0,
904
+ "maximum": 100
678
905
  },
679
906
  "token": {
680
907
  "default": 20,
681
- "type": "number"
908
+ "type": "number",
909
+ "minimum": 0,
910
+ "maximum": 100
682
911
  }
683
912
  },
684
913
  "required": [
@@ -724,13 +953,18 @@
724
953
  "type": "object",
725
954
  "properties": {
726
955
  "raw_score": {
727
- "type": "number"
956
+ "type": "number",
957
+ "minimum": 0,
958
+ "maximum": 100
728
959
  },
729
960
  "weighted_score": {
730
- "type": "number"
961
+ "type": "number",
962
+ "minimum": 0,
963
+ "maximum": 100
731
964
  },
732
965
  "rationale": {
733
- "type": "string"
966
+ "type": "string",
967
+ "minLength": 1
734
968
  }
735
969
  },
736
970
  "required": [
@@ -744,13 +978,18 @@
744
978
  "type": "object",
745
979
  "properties": {
746
980
  "raw_score": {
747
- "type": "number"
981
+ "type": "number",
982
+ "minimum": 0,
983
+ "maximum": 100
748
984
  },
749
985
  "weighted_score": {
750
- "type": "number"
986
+ "type": "number",
987
+ "minimum": 0,
988
+ "maximum": 100
751
989
  },
752
990
  "rationale": {
753
- "type": "string"
991
+ "type": "string",
992
+ "minLength": 1
754
993
  }
755
994
  },
756
995
  "required": [
@@ -764,13 +1003,18 @@
764
1003
  "type": "object",
765
1004
  "properties": {
766
1005
  "raw_score": {
767
- "type": "number"
1006
+ "type": "number",
1007
+ "minimum": 0,
1008
+ "maximum": 100
768
1009
  },
769
1010
  "weighted_score": {
770
- "type": "number"
1011
+ "type": "number",
1012
+ "minimum": 0,
1013
+ "maximum": 100
771
1014
  },
772
1015
  "rationale": {
773
- "type": "string"
1016
+ "type": "string",
1017
+ "minLength": 1
774
1018
  }
775
1019
  },
776
1020
  "required": [
@@ -784,13 +1028,18 @@
784
1028
  "type": "object",
785
1029
  "properties": {
786
1030
  "raw_score": {
787
- "type": "number"
1031
+ "type": "number",
1032
+ "minimum": 0,
1033
+ "maximum": 100
788
1034
  },
789
1035
  "weighted_score": {
790
- "type": "number"
1036
+ "type": "number",
1037
+ "minimum": 0,
1038
+ "maximum": 100
791
1039
  },
792
1040
  "rationale": {
793
- "type": "string"
1041
+ "type": "string",
1042
+ "minLength": 1
794
1043
  }
795
1044
  },
796
1045
  "required": [
@@ -804,13 +1053,18 @@
804
1053
  "type": "object",
805
1054
  "properties": {
806
1055
  "raw_score": {
807
- "type": "number"
1056
+ "type": "number",
1057
+ "minimum": 0,
1058
+ "maximum": 100
808
1059
  },
809
1060
  "weighted_score": {
810
- "type": "number"
1061
+ "type": "number",
1062
+ "minimum": 0,
1063
+ "maximum": 100
811
1064
  },
812
1065
  "rationale": {
813
- "type": "string"
1066
+ "type": "string",
1067
+ "minLength": 1
814
1068
  }
815
1069
  },
816
1070
  "required": [
@@ -859,6 +1113,8 @@
859
1113
  "exceptions",
860
1114
  "remediation_policy",
861
1115
  "traceability",
1116
+ "token_budget_gates",
1117
+ "runtime_quality_gates",
862
1118
  "q95_ledger"
863
1119
  ],
864
1120
  "additionalProperties": false,
@@ -0,0 +1,212 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schema_version": {
6
+ "type": "number",
7
+ "const": 1
8
+ },
9
+ "created_at": {
10
+ "type": "string",
11
+ "format": "date-time",
12
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
13
+ },
14
+ "status": {
15
+ "type": "string",
16
+ "enum": [
17
+ "planned",
18
+ "blocked"
19
+ ]
20
+ },
21
+ "request": {
22
+ "type": "object",
23
+ "properties": {
24
+ "schema_version": {
25
+ "default": 1,
26
+ "type": "number",
27
+ "const": 1
28
+ },
29
+ "feature_ref": {
30
+ "type": "string",
31
+ "pattern": "^FEAT-\\d{4}$"
32
+ },
33
+ "provider": {
34
+ "type": "string",
35
+ "enum": [
36
+ "deepagents",
37
+ "codex",
38
+ "opencode"
39
+ ]
40
+ },
41
+ "mode": {
42
+ "default": "plan",
43
+ "type": "string",
44
+ "enum": [
45
+ "read-only",
46
+ "plan",
47
+ "validate",
48
+ "apply-sandbox",
49
+ "apply-approved"
50
+ ]
51
+ },
52
+ "instruction": {
53
+ "type": "string",
54
+ "minLength": 1
55
+ },
56
+ "cwd": {
57
+ "default": ".",
58
+ "type": "string",
59
+ "minLength": 1
60
+ },
61
+ "model": {
62
+ "type": "string",
63
+ "minLength": 1
64
+ },
65
+ "sandbox": {
66
+ "default": "read-only",
67
+ "type": "string",
68
+ "enum": [
69
+ "read-only",
70
+ "workspace-write",
71
+ "danger-full-access"
72
+ ]
73
+ },
74
+ "output_schema": {
75
+ "type": "string",
76
+ "minLength": 1
77
+ },
78
+ "output_last_message": {
79
+ "type": "string",
80
+ "minLength": 1
81
+ },
82
+ "agent": {
83
+ "type": "string",
84
+ "minLength": 1
85
+ },
86
+ "session": {
87
+ "type": "string",
88
+ "minLength": 1
89
+ },
90
+ "files": {
91
+ "default": [],
92
+ "type": "array",
93
+ "items": {
94
+ "type": "string",
95
+ "minLength": 1
96
+ }
97
+ },
98
+ "approval_grants": {
99
+ "default": [],
100
+ "type": "array",
101
+ "items": {
102
+ "type": "string",
103
+ "enum": [
104
+ "maintainer",
105
+ "architecture-board",
106
+ "security"
107
+ ]
108
+ }
109
+ }
110
+ },
111
+ "required": [
112
+ "schema_version",
113
+ "feature_ref",
114
+ "provider",
115
+ "mode",
116
+ "instruction",
117
+ "cwd",
118
+ "sandbox",
119
+ "files",
120
+ "approval_grants"
121
+ ],
122
+ "additionalProperties": false
123
+ },
124
+ "provider": {
125
+ "type": "string",
126
+ "enum": [
127
+ "deepagents",
128
+ "codex",
129
+ "opencode"
130
+ ]
131
+ },
132
+ "command": {
133
+ "type": "object",
134
+ "properties": {
135
+ "executable": {
136
+ "type": "string",
137
+ "minLength": 1
138
+ },
139
+ "args": {
140
+ "default": [],
141
+ "type": "array",
142
+ "items": {
143
+ "type": "string"
144
+ }
145
+ },
146
+ "stdin": {
147
+ "type": "string"
148
+ }
149
+ },
150
+ "required": [
151
+ "executable",
152
+ "args"
153
+ ],
154
+ "additionalProperties": false
155
+ },
156
+ "evidence_contract": {
157
+ "type": "string",
158
+ "enum": [
159
+ "agent-runtime-v2/deepagents",
160
+ "agent-runtime-v2/codex-exec",
161
+ "agent-runtime-v2/opencode-run"
162
+ ]
163
+ },
164
+ "structured_output": {
165
+ "type": "boolean"
166
+ },
167
+ "reasons": {
168
+ "default": [],
169
+ "type": "array",
170
+ "items": {
171
+ "type": "string"
172
+ }
173
+ },
174
+ "policy": {
175
+ "type": "object",
176
+ "properties": {
177
+ "direct_state_write_allowed": {
178
+ "type": "boolean",
179
+ "const": false
180
+ },
181
+ "requires_codesdd_finalize": {
182
+ "type": "boolean",
183
+ "const": true
184
+ },
185
+ "mutating_modes_require_approval": {
186
+ "type": "boolean",
187
+ "const": true
188
+ }
189
+ },
190
+ "required": [
191
+ "direct_state_write_allowed",
192
+ "requires_codesdd_finalize",
193
+ "mutating_modes_require_approval"
194
+ ],
195
+ "additionalProperties": false
196
+ }
197
+ },
198
+ "required": [
199
+ "schema_version",
200
+ "created_at",
201
+ "status",
202
+ "request",
203
+ "provider",
204
+ "evidence_contract",
205
+ "structured_output",
206
+ "reasons",
207
+ "policy"
208
+ ],
209
+ "additionalProperties": false,
210
+ "title": "CodeSDD Agent Runtime Command Plan",
211
+ "description": "Provider-normalized command plan for DeepAgents, Codex exec, and OpenCode run agent runtimes."
212
+ }