create-yss-spec 3.3.7 → 3.3.8

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 (131) hide show
  1. package/README.md +12 -13
  2. package/package.json +1 -1
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +2 -2
  4. package/template/.agents/skills/implementation-repo-onboarding/SKILL.md +2 -2
  5. package/template/.agents/skills/yss-application/SKILL.md +1 -1
  6. package/template/.agents/skills/yss-application/references/profiles/existing-domain-driven-maven.md +5 -0
  7. package/template/.agents/skills/yss-application/references/profiles/existing-layered-mvc-maven.md +5 -0
  8. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +2 -2
  9. package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +4 -0
  10. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +6 -1
  11. package/template/.agents/skills/yss-prototype-stage/SKILL.md +10 -1
  12. package/template/.agents/skills/yss-technical-design/SKILL.md +2 -0
  13. package/template/.agents/skills/yss-technical-design/references/engineering-design.schema.json +224 -0
  14. package/template/.agents/skills/yss-technical-design/references/technical-design-common.schema.json +6 -0
  15. package/template/.agents/skills/yss-technical-design/references/technical-design.schema.json +288 -10
  16. package/template/.agents/skills/yss-technical-design/scripts/engineering-design.mjs +30 -0
  17. package/template/.agents/skills/yss-technical-design/scripts/generate-schema.mjs +2 -1
  18. package/template/.agents/skills/yss-technical-design/scripts/validate-technical-design.mjs +20 -8
  19. package/template/.agents/skills/yss-technical-design/tests/engineering-scenarios.mjs +12 -0
  20. package/template/.agents/skills/yss-web-controller/SKILL.md +1 -1
  21. package/template/.agents/skills/yss-web-controller/references/profiles/existing-domain-driven-maven.md +5 -0
  22. package/template/.agents/skills/yss-web-controller/references/profiles/existing-layered-mvc-maven.md +5 -0
  23. package/template/.codex/skills/implementation-repo-onboarding/SKILL.md +2 -2
  24. package/template/.codex/skills/yss-application/SKILL.md +1 -1
  25. package/template/.codex/skills/yss-application/references/profiles/existing-domain-driven-maven.md +5 -0
  26. package/template/.codex/skills/yss-application/references/profiles/existing-layered-mvc-maven.md +5 -0
  27. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +2 -2
  28. package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +4 -0
  29. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +6 -1
  30. package/template/.codex/skills/yss-prototype-stage/SKILL.md +10 -1
  31. package/template/.codex/skills/yss-technical-design/SKILL.md +2 -0
  32. package/template/.codex/skills/yss-technical-design/references/engineering-design.schema.json +224 -0
  33. package/template/.codex/skills/yss-technical-design/references/technical-design-common.schema.json +6 -0
  34. package/template/.codex/skills/yss-technical-design/references/technical-design.schema.json +288 -10
  35. package/template/.codex/skills/yss-technical-design/scripts/engineering-design.mjs +30 -0
  36. package/template/.codex/skills/yss-technical-design/scripts/generate-schema.mjs +2 -1
  37. package/template/.codex/skills/yss-technical-design/scripts/validate-technical-design.mjs +20 -8
  38. package/template/.codex/skills/yss-technical-design/tests/engineering-scenarios.mjs +12 -0
  39. package/template/.codex/skills/yss-web-controller/SKILL.md +1 -1
  40. package/template/.codex/skills/yss-web-controller/references/profiles/existing-domain-driven-maven.md +5 -0
  41. package/template/.codex/skills/yss-web-controller/references/profiles/existing-layered-mvc-maven.md +5 -0
  42. package/template/.cursor/skills/implementation-repo-onboarding/SKILL.md +2 -2
  43. package/template/.cursor/skills/yss-application/SKILL.md +1 -1
  44. package/template/.cursor/skills/yss-application/references/profiles/existing-domain-driven-maven.md +5 -0
  45. package/template/.cursor/skills/yss-application/references/profiles/existing-layered-mvc-maven.md +5 -0
  46. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +2 -2
  47. package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +4 -0
  48. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +6 -1
  49. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +10 -1
  50. package/template/.cursor/skills/yss-technical-design/SKILL.md +2 -0
  51. package/template/.cursor/skills/yss-technical-design/references/engineering-design.schema.json +224 -0
  52. package/template/.cursor/skills/yss-technical-design/references/technical-design-common.schema.json +6 -0
  53. package/template/.cursor/skills/yss-technical-design/references/technical-design.schema.json +288 -10
  54. package/template/.cursor/skills/yss-technical-design/scripts/engineering-design.mjs +30 -0
  55. package/template/.cursor/skills/yss-technical-design/scripts/generate-schema.mjs +2 -1
  56. package/template/.cursor/skills/yss-technical-design/scripts/validate-technical-design.mjs +20 -8
  57. package/template/.cursor/skills/yss-technical-design/tests/engineering-scenarios.mjs +12 -0
  58. package/template/.cursor/skills/yss-web-controller/SKILL.md +1 -1
  59. package/template/.cursor/skills/yss-web-controller/references/profiles/existing-domain-driven-maven.md +5 -0
  60. package/template/.cursor/skills/yss-web-controller/references/profiles/existing-layered-mvc-maven.md +5 -0
  61. package/template/.pi/skills/implementation-repo-onboarding/SKILL.md +2 -2
  62. package/template/.pi/skills/yss-application/SKILL.md +1 -1
  63. package/template/.pi/skills/yss-application/references/profiles/existing-domain-driven-maven.md +5 -0
  64. package/template/.pi/skills/yss-application/references/profiles/existing-layered-mvc-maven.md +5 -0
  65. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +2 -2
  66. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +4 -0
  67. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +6 -1
  68. package/template/.pi/skills/yss-prototype-stage/SKILL.md +10 -1
  69. package/template/.pi/skills/yss-technical-design/SKILL.md +2 -0
  70. package/template/.pi/skills/yss-technical-design/references/engineering-design.schema.json +224 -0
  71. package/template/.pi/skills/yss-technical-design/references/technical-design-common.schema.json +6 -0
  72. package/template/.pi/skills/yss-technical-design/references/technical-design.schema.json +288 -10
  73. package/template/.pi/skills/yss-technical-design/scripts/engineering-design.mjs +30 -0
  74. package/template/.pi/skills/yss-technical-design/scripts/generate-schema.mjs +2 -1
  75. package/template/.pi/skills/yss-technical-design/scripts/validate-technical-design.mjs +20 -8
  76. package/template/.pi/skills/yss-technical-design/tests/engineering-scenarios.mjs +12 -0
  77. package/template/.pi/skills/yss-web-controller/SKILL.md +1 -1
  78. package/template/.pi/skills/yss-web-controller/references/profiles/existing-domain-driven-maven.md +5 -0
  79. package/template/.pi/skills/yss-web-controller/references/profiles/existing-layered-mvc-maven.md +5 -0
  80. package/template/README.md +4 -6
  81. package/template/docs/agents/backend-architecture-profiles.md +4 -0
  82. package/template/docs/agents/yss-skill-registry.yaml +13 -0
  83. package/template/docs/design/templates/prototype-confirmation-template.md +2 -2
  84. package/template/docs/design/templates/prototype-review-checklist.md +2 -2
  85. package/template/docs/plan/templates/market-analysis-template.md +3 -3
  86. package/template/docs/plan/templates/user-pain-points-template.md +3 -3
  87. package/template/docs/process/delivery-preflight.md +72 -0
  88. package/template/docs/process/document-writing.md +5 -1
  89. package/template/docs/process/existing-backend-architecture.md +31 -0
  90. package/template/docs/process/existing-ui-baseline.md +40 -0
  91. package/template/docs/process/frontend-backend-delivery.md +19 -6
  92. package/template/docs/process/implementation-repo-integration.md +6 -0
  93. package/template/docs/process/schemas/backend-architecture-identity.schema.json +111 -14
  94. package/template/docs/process/schemas/delivery-preflight-input.schema.json +158 -0
  95. package/template/docs/process/schemas/delivery-preflight-result.schema.json +159 -0
  96. package/template/docs/process/schemas/digital-human-task-package.schema.json +1 -1
  97. package/template/docs/process/schemas/existing-ui-baseline.schema.json +365 -0
  98. package/template/docs/process/schemas/frontend-delivery-acceptance-v3.schema.json +308 -0
  99. package/template/docs/process/schemas/frontend-strategic-preflight-v2.schema.json +114 -0
  100. package/template/docs/process/schemas/strategic-design-handoff-v5.schema.json +932 -0
  101. package/template/docs/process/schemas/strategic-handoff-export-v2.schema.json +378 -0
  102. package/template/docs/process/strategic-handoff-package.md +21 -13
  103. package/template/docs/user-guide//346/212/200/346/234/257/350/256/276/350/256/241/347/224/250/346/210/267/346/214/207/345/215/227.md +43 -0
  104. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214.md +83 -67
  105. package/template/docs/user-guide//347/224/250/346/210/267/346/211/213/345/206/214/347/264/242/345/274/225.md +9 -10
  106. package/template/docs/user-guide//350/256/276/345/244/207/345/200/237/347/224/250/350/264/257/347/251/277/346/241/210/344/276/213.md +12 -9
  107. package/template/scripts/backend-delivery +20 -4
  108. package/template/scripts/lib/approved-execution-context.mjs +106 -0
  109. package/template/scripts/lib/backend-architecture.mjs +12 -0
  110. package/template/scripts/lib/backend-delivery.mjs +10 -6
  111. package/template/scripts/lib/delivery-preflight.mjs +238 -0
  112. package/template/scripts/lib/existing-backend-architecture.mjs +139 -0
  113. package/template/scripts/lib/existing-ui-baseline.mjs +84 -0
  114. package/template/scripts/lib/frontend-delivery.mjs +23 -15
  115. package/template/scripts/lib/implementation-contract-compiler.mjs +19 -5
  116. package/template/scripts/lib/json-schema.mjs +19 -4
  117. package/template/scripts/lib/profile-skill-sync.mjs +26 -0
  118. package/template/scripts/lib/strategic-handoff-consumption.mjs +6 -5
  119. package/template/scripts/lib/strategic-handoff-design-targets.mjs +2 -3
  120. package/template/scripts/lib/strategic-handoff-io.mjs +10 -0
  121. package/template/scripts/lib/strategic-handoff.mjs +47 -29
  122. package/template/scripts/lib/task-package.mjs +11 -3
  123. package/template/scripts/lib/technical-design-boundary.mjs +9 -1
  124. package/template/scripts/lib/ui-baseline.mjs +26 -0
  125. package/template/scripts/lib/user-decision.mjs +4 -1
  126. package/template/scripts/preflight-delivery +14 -0
  127. package/template/scripts/strategic-handoff +19 -4
  128. package/template/scripts/sync-profile-skills +4 -5
  129. package/template/skills-lock.json +15 -15
  130. package/template.snapshot.json +3 -3
  131. package/template/docs/user-guide//346/210/230/346/234/257/350/256/276/350/256/241/345/255/220/351/241/271/347/233/256/347/224/250/346/210/267/346/211/213/345/206/214.md +0 -35
@@ -2,18 +2,115 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://yss.local/schemas/backend-architecture-identity.schema.json",
4
4
  "title": "后端架构身份",
5
- "type": "object",
6
- "additionalProperties": false,
7
- "required": ["architecture_family", "architecture_profile", "generator_skill", "requested_capabilities", "resolved_modules", "contract_digest", "verification_database", "production_database"],
8
- "properties": {
9
- "architecture_family": {"enum": ["domain-driven", "layered-mvc"]},
10
- "architecture_profile": {"enum": ["target-domain-model", "layered-mvc-service", "mvc-data-analysis-v1"]},
11
- "generator_skill": {"type": "string", "minLength": 1},
12
- "requested_capabilities": {"type": "array", "uniqueItems": true, "items": {"type": "string"}},
13
- "resolved_modules": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string"}},
14
- "contract_digest": {"type": "string", "pattern": "^(sha256:)?[a-f0-9]{64}$"},
15
- "verification_database": {"const": "h2"},
16
- "production_database": {"const": "not-bound"}
17
- },
18
- "description": "各 Manifest kind、工程基线、仓库登记、Slice/work unit/Execution Result 引用此 schema;具体 Profile/生成器/模块闭包由 yss-skill-registry.yaml 定义并由 backend-architecture.mjs 校验。"
5
+ "description": "旧生成式身份严格兼容;既有工程显式 existing-registration v2,必须以原始文件三方核验。",
6
+ "oneOf": [
7
+ {
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "required": [
11
+ "architecture_family",
12
+ "architecture_profile",
13
+ "generator_skill",
14
+ "requested_capabilities",
15
+ "resolved_modules",
16
+ "contract_digest",
17
+ "verification_database",
18
+ "production_database"
19
+ ],
20
+ "properties": {
21
+ "architecture_family": {
22
+ "enum": [
23
+ "domain-driven",
24
+ "layered-mvc"
25
+ ]
26
+ },
27
+ "architecture_profile": {
28
+ "enum": [
29
+ "target-domain-model",
30
+ "layered-mvc-service",
31
+ "mvc-data-analysis-v1"
32
+ ]
33
+ },
34
+ "generator_skill": {
35
+ "type": "string",
36
+ "minLength": 1
37
+ },
38
+ "requested_capabilities": {
39
+ "type": "array",
40
+ "uniqueItems": true,
41
+ "items": {
42
+ "type": "string"
43
+ }
44
+ },
45
+ "resolved_modules": {
46
+ "type": "array",
47
+ "minItems": 1,
48
+ "uniqueItems": true,
49
+ "items": {
50
+ "type": "string"
51
+ }
52
+ },
53
+ "contract_digest": {
54
+ "type": "string",
55
+ "pattern": "^(sha256:)?[a-f0-9]{64}$"
56
+ },
57
+ "verification_database": {
58
+ "const": "h2"
59
+ },
60
+ "production_database": {
61
+ "const": "not-bound"
62
+ }
63
+ }
64
+ },
65
+ {
66
+ "type": "object",
67
+ "additionalProperties": false,
68
+ "required": [
69
+ "schema_version",
70
+ "source_kind",
71
+ "architecture_family",
72
+ "architecture_profile",
73
+ "repository_id",
74
+ "project_id",
75
+ "source_digest",
76
+ "build_units_digest"
77
+ ],
78
+ "properties": {
79
+ "schema_version": {
80
+ "const": 2
81
+ },
82
+ "source_kind": {
83
+ "const": "existing-registration"
84
+ },
85
+ "architecture_family": {
86
+ "enum": [
87
+ "domain-driven",
88
+ "layered-mvc"
89
+ ]
90
+ },
91
+ "architecture_profile": {
92
+ "enum": [
93
+ "existing-domain-driven-maven",
94
+ "existing-layered-mvc-maven"
95
+ ]
96
+ },
97
+ "repository_id": {
98
+ "type": "string",
99
+ "minLength": 1
100
+ },
101
+ "project_id": {
102
+ "type": "string",
103
+ "minLength": 1
104
+ },
105
+ "source_digest": {
106
+ "type": "string",
107
+ "pattern": "^sha256:[a-f0-9]{64}$"
108
+ },
109
+ "build_units_digest": {
110
+ "type": "string",
111
+ "pattern": "^sha256:[a-f0-9]{64}$"
112
+ }
113
+ }
114
+ }
115
+ ]
19
116
  }
@@ -0,0 +1,158 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": [
6
+ "schema_version",
7
+ "scope"
8
+ ],
9
+ "properties": {
10
+ "schema_version": {
11
+ "const": 1
12
+ },
13
+ "governance_root": {
14
+ "type": "string",
15
+ "minLength": 1
16
+ },
17
+ "planned_initialization": {
18
+ "type": "boolean"
19
+ },
20
+ "scope": {
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "required": [
24
+ "repository_id",
25
+ "project_id",
26
+ "slice_id",
27
+ "operation_ids"
28
+ ],
29
+ "properties": {
30
+ "repository_id": {
31
+ "type": "string",
32
+ "minLength": 1
33
+ },
34
+ "project_id": {
35
+ "type": "string",
36
+ "minLength": 1
37
+ },
38
+ "slice_id": {
39
+ "type": "string",
40
+ "minLength": 1
41
+ },
42
+ "operation_ids": {
43
+ "type": "array",
44
+ "minItems": 1,
45
+ "uniqueItems": true,
46
+ "items": {
47
+ "type": "string",
48
+ "minLength": 1
49
+ }
50
+ },
51
+ "ui_mode": {
52
+ "enum": [
53
+ "existing-baseline",
54
+ "prototype",
55
+ "not-applicable"
56
+ ]
57
+ },
58
+ "ui_not_applicable_reason": {
59
+ "type": "string",
60
+ "minLength": 1
61
+ }
62
+ }
63
+ },
64
+ "architecture_identity": {
65
+ "type": "object"
66
+ },
67
+ "architecture_bindings": {
68
+ "type": "object",
69
+ "additionalProperties": false,
70
+ "properties": {
71
+ "engineering_baseline": {
72
+ "$ref": "#/$defs/binding"
73
+ },
74
+ "repository_registration": {
75
+ "$ref": "#/$defs/binding"
76
+ },
77
+ "manifest": {
78
+ "$ref": "#/$defs/binding"
79
+ }
80
+ }
81
+ },
82
+ "assets": {
83
+ "type": "object",
84
+ "additionalProperties": false,
85
+ "properties": {
86
+ "openapi": {
87
+ "$ref": "#/$defs/binding"
88
+ },
89
+ "technical_design": {
90
+ "$ref": "#/$defs/binding"
91
+ },
92
+ "slice_contract": {
93
+ "$ref": "#/$defs/binding"
94
+ },
95
+ "ui_baseline": {
96
+ "$ref": "#/$defs/binding"
97
+ },
98
+ "build": {
99
+ "$ref": "#/$defs/binding"
100
+ },
101
+ "deployment": {
102
+ "$ref": "#/$defs/binding"
103
+ },
104
+ "strategic_handoff": {
105
+ "$ref": "#/$defs/binding"
106
+ },
107
+ "backend_delivery": {
108
+ "$ref": "#/$defs/binding"
109
+ },
110
+ "local_authorization": {
111
+ "$ref": "#/$defs/binding"
112
+ },
113
+ "build_artifact": {
114
+ "$ref": "#/$defs/binding"
115
+ }
116
+ }
117
+ },
118
+ "delivery_kind": {
119
+ "enum": [
120
+ "complete",
121
+ "strategic-handoff",
122
+ "backend-delivery"
123
+ ]
124
+ }
125
+ },
126
+ "$defs": {
127
+ "binding": {
128
+ "type": "object",
129
+ "additionalProperties": false,
130
+ "required": [
131
+ "ref",
132
+ "digest"
133
+ ],
134
+ "properties": {
135
+ "ref": {
136
+ "type": "string",
137
+ "minLength": 1
138
+ },
139
+ "digest": {
140
+ "type": "string",
141
+ "pattern": "^sha256:[0-9a-f]{64}$"
142
+ },
143
+ "id": {
144
+ "type": "string",
145
+ "minLength": 1
146
+ },
147
+ "version": {
148
+ "type": "string",
149
+ "minLength": 1
150
+ },
151
+ "approval_ref": {
152
+ "type": "string",
153
+ "minLength": 1
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
@@ -0,0 +1,159 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "required": [
6
+ "schema_version",
7
+ "result",
8
+ "exit_code",
9
+ "stage",
10
+ "checks"
11
+ ],
12
+ "properties": {
13
+ "schema_version": {
14
+ "const": 1
15
+ },
16
+ "result": {
17
+ "enum": [
18
+ "ready",
19
+ "blocked",
20
+ "invalid-input"
21
+ ]
22
+ },
23
+ "exit_code": {
24
+ "enum": [
25
+ 0,
26
+ 1,
27
+ 2
28
+ ]
29
+ },
30
+ "stage": {
31
+ "enum": [
32
+ "prepare",
33
+ "build",
34
+ "export",
35
+ "accept",
36
+ null
37
+ ]
38
+ },
39
+ "checks": {
40
+ "type": "array",
41
+ "minItems": 1,
42
+ "items": {
43
+ "type": "object",
44
+ "additionalProperties": false,
45
+ "required": [
46
+ "code",
47
+ "status",
48
+ "owner",
49
+ "source",
50
+ "evidence",
51
+ "blocking_stages",
52
+ "recovery",
53
+ "message"
54
+ ],
55
+ "properties": {
56
+ "code": {
57
+ "type": "string",
58
+ "minLength": 1
59
+ },
60
+ "status": {
61
+ "enum": [
62
+ "ready",
63
+ "missing",
64
+ "conflict",
65
+ "stale",
66
+ "unsupported",
67
+ "pending",
68
+ "not-applicable"
69
+ ]
70
+ },
71
+ "owner": {
72
+ "type": "string",
73
+ "minLength": 1
74
+ },
75
+ "source": {
76
+ "type": "string",
77
+ "minLength": 1
78
+ },
79
+ "evidence": {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "string"
83
+ }
84
+ },
85
+ "blocking_stages": {
86
+ "type": "array",
87
+ "uniqueItems": true,
88
+ "items": {
89
+ "enum": [
90
+ "prepare",
91
+ "build",
92
+ "export",
93
+ "accept"
94
+ ]
95
+ }
96
+ },
97
+ "recovery": {
98
+ "type": "string",
99
+ "minLength": 1
100
+ },
101
+ "message": {
102
+ "type": "string",
103
+ "minLength": 1
104
+ }
105
+ }
106
+ }
107
+ }
108
+ },
109
+ "allOf": [
110
+ {
111
+ "if": {
112
+ "properties": {
113
+ "result": {
114
+ "const": "ready"
115
+ }
116
+ }
117
+ },
118
+ "then": {
119
+ "properties": {
120
+ "exit_code": {
121
+ "const": 0
122
+ }
123
+ }
124
+ }
125
+ },
126
+ {
127
+ "if": {
128
+ "properties": {
129
+ "result": {
130
+ "const": "blocked"
131
+ }
132
+ }
133
+ },
134
+ "then": {
135
+ "properties": {
136
+ "exit_code": {
137
+ "const": 1
138
+ }
139
+ }
140
+ }
141
+ },
142
+ {
143
+ "if": {
144
+ "properties": {
145
+ "result": {
146
+ "const": "invalid-input"
147
+ }
148
+ }
149
+ },
150
+ "then": {
151
+ "properties": {
152
+ "exit_code": {
153
+ "const": 2
154
+ }
155
+ }
156
+ }
157
+ }
158
+ ]
159
+ }
@@ -42,7 +42,7 @@
42
42
  "properties": {
43
43
  "kind": { "enum": ["lifecycle-work-unit", "slice-implementation", "template-maintenance"] },
44
44
  "contract_id": { "type": "string", "minLength": 1 },
45
- "contract_version": { "type": "integer", "minimum": 1 },
45
+ "contract_version": { "oneOf": [{ "type": "integer", "minimum": 1 }, { "type": "string", "minLength": 1, "pattern": "\\S" }] },
46
46
  "status": { "enum": ["issued", "stale", "blocked"] },
47
47
  "contract_ref": { "type": "string", "minLength": 1 },
48
48
  "lifecycle_ref": { "type": "string", "minLength": 1 },