@pactosigna/schemas 0.1.0 → 0.1.2

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/dist/index.d.ts CHANGED
@@ -1,86 +1,171 @@
1
1
  import { z } from 'zod';
2
+ import { D as DocumentType, L as LinkType } from './document-type-patterns-JuAGFi_j.js';
3
+ export { F as FOLDER_RULES, a as FolderRule, J as JSON_SBOM_FOLDERS, N as NON_REGULATED_FOLDERS, f as findFolderRule, i as inferDocumentType } from './document-type-patterns-JuAGFi_j.js';
2
4
 
3
5
  /**
4
- * Common types and enums shared across contexts
6
+ * Common Zod enum schemas shared across multiple schema files.
7
+ *
8
+ * Extracted from index.ts to avoid circular dependencies when other
9
+ * schema files (e.g. frameworks.ts) need to reference these enums
10
+ * while also being re-exported from index.ts.
5
11
  */
6
12
 
7
- type DocumentType = 'user_need' | 'requirement' | 'architecture' | 'detailed_design' | 'test_protocol' | 'test_report' | 'sop' | 'work_instruction' | 'policy' | 'usability_risk' | 'software_risk' | 'security_risk' | 'haz_soe_software' | 'haz_soe_security' | 'hazardous_situation' | 'harm' | 'usability_plan' | 'use_specification' | 'task_analysis' | 'usability_evaluation' | 'summative_evaluation' | 'risk_management_plan' | 'software_development_plan' | 'software_maintenance_plan' | 'soup_register' | 'anomaly' | 'cybersecurity_plan' | 'sbom' | 'clinical_evaluation_plan' | 'clinical_evaluation_report' | 'post_market_surveillance_plan' | 'post_market_feedback' | 'labeling' | 'product_development_plan' | 'intended_use' | 'release_plan' | 'design_review' | 'release_notes' | 'supplier' | 'audit_schedule' | 'audit_report' | 'management_review' | 'report';
8
- type LinkType = 'derives_from' | 'implements' | 'verified_by' | 'mitigates' | 'parent_of' | 'related_to' | 'leads_to' | 'results_in' | 'analyzes';
13
+ declare const RegulatoryFrameworkSchema: z.ZodEnum<["ISO_13485", "IEC_62304", "FDA_21_CFR_820", "QMSR", "EU_MDR", "ISO_14971", "AI_ACT"]>;
14
+ declare const SafetyClassSchema: z.ZodEnum<["A", "B", "C"]>;
15
+ declare const DocumentTypeSchema: z.ZodEnum<["user_need", "requirement", "architecture", "detailed_design", "test_protocol", "test_report", "sop", "work_instruction", "policy", "usability_risk", "software_risk", "security_risk", "haz_soe_software", "haz_soe_security", "hazardous_situation", "harm", "hazard_category", "usability_plan", "use_specification", "task_analysis", "usability_evaluation", "summative_evaluation", "risk_management_plan", "software_development_plan", "software_maintenance_plan", "soup_register", "anomaly", "cybersecurity_plan", "sbom", "clinical_evaluation_plan", "clinical_evaluation_report", "post_market_surveillance_plan", "post_market_feedback", "labeling", "product_development_plan", "intended_use", "release_plan", "design_review", "release_notes", "supplier", "audit_schedule", "audit_report", "management_review", "software_test_plan"]>;
16
+ declare const DocumentStatusSchema: z.ZodEnum<["draft", "in_review", "approved", "obsolete", "example"]>;
17
+ declare const LinkTypeSchema: z.ZodEnum<["derives_from", "implements", "verified_by", "mitigates", "parent_of", "related_to", "leads_to", "results_in", "analyzes"]>;
18
+ declare const AcceptabilityStatusSchema: z.ZodEnum<["acceptable", "review_required", "unacceptable"]>;
9
19
 
10
20
  declare const RiskDocumentStatusSchema: z.ZodEnum<["draft", "in_review", "approved", "effective", "archived", "example"]>;
11
21
  declare const MitigationTargetSchema: z.ZodEnum<["sequence_probability", "harm_probability", "severity"]>;
12
- declare const RiskGapCodeSchema: z.ZodEnum<["hazard_no_situation", "situation_no_harm", "hazard_not_analyzed", "missing_mitigation", "broken_mitigation_link", "control_not_approved", "missing_risk_benefit", "severity_mismatch", "probability_mismatch", "missing_frontmatter"]>;
22
+ declare const RiskGapCodeSchema: z.ZodEnum<["hazard_no_situation", "situation_no_harm", "hazard_not_analyzed", "missing_mitigation", "broken_mitigation_link", "control_not_approved", "missing_risk_benefit", "risk_missing_safety_chain", "risk_broken_safety_chain", "wrong_probability_dimension", "missing_frontmatter", "requirement_no_architecture", "architecture_no_segregation", "architecture_no_parent", "haz_missing_category", "haz_invalid_category", "category_not_approved"]>;
13
23
  declare const RiskGapSeveritySchema: z.ZodEnum<["error", "warning"]>;
14
24
  declare const MitigationSchema: z.ZodObject<{
15
25
  control: z.ZodString;
16
26
  reduces: z.ZodEnum<["sequence_probability", "harm_probability", "severity"]>;
27
+ for_harm: z.ZodOptional<z.ZodString>;
17
28
  }, "strip", z.ZodTypeAny, {
18
29
  control: string;
19
- reduces: "severity" | "sequence_probability" | "harm_probability";
30
+ reduces: "sequence_probability" | "harm_probability" | "severity";
31
+ for_harm?: string | undefined;
20
32
  }, {
21
33
  control: string;
22
- reduces: "severity" | "sequence_probability" | "harm_probability";
34
+ reduces: "sequence_probability" | "harm_probability" | "severity";
35
+ for_harm?: string | undefined;
23
36
  }>;
24
- declare const RiskEntryFrontmatterSchema: z.ZodObject<{
37
+ declare const RiskEntryFrontmatterSchema: z.ZodEffects<z.ZodObject<{
25
38
  type: z.ZodEnum<["software_risk", "usability_risk", "security_risk"]>;
26
39
  id: z.ZodString;
27
40
  title: z.ZodString;
28
41
  status: z.ZodEnum<["draft", "in_review", "approved", "effective", "archived", "example"]>;
29
42
  analyzes: z.ZodString;
30
43
  hazardous_situation: z.ZodString;
31
- harm: z.ZodString;
32
- inherent_severity: z.ZodNumber;
33
- inherent_probability: z.ZodOptional<z.ZodNumber>;
34
- inherent_exploitability: z.ZodOptional<z.ZodNumber>;
44
+ harm_assessments: z.ZodArray<z.ZodObject<{
45
+ harm: z.ZodString;
46
+ inherent_probability: z.ZodOptional<z.ZodNumber>;
47
+ inherent_exploitability: z.ZodOptional<z.ZodNumber>;
48
+ residual_probability: z.ZodOptional<z.ZodNumber>;
49
+ residual_exploitability: z.ZodOptional<z.ZodNumber>;
50
+ residual_severity_override: z.ZodOptional<z.ZodNumber>;
51
+ }, "strip", z.ZodTypeAny, {
52
+ harm: string;
53
+ inherent_probability?: number | undefined;
54
+ inherent_exploitability?: number | undefined;
55
+ residual_probability?: number | undefined;
56
+ residual_exploitability?: number | undefined;
57
+ residual_severity_override?: number | undefined;
58
+ }, {
59
+ harm: string;
60
+ inherent_probability?: number | undefined;
61
+ inherent_exploitability?: number | undefined;
62
+ residual_probability?: number | undefined;
63
+ residual_exploitability?: number | undefined;
64
+ residual_severity_override?: number | undefined;
65
+ }>, "many">;
35
66
  mitigations: z.ZodOptional<z.ZodArray<z.ZodObject<{
36
67
  control: z.ZodString;
37
68
  reduces: z.ZodEnum<["sequence_probability", "harm_probability", "severity"]>;
69
+ for_harm: z.ZodOptional<z.ZodString>;
38
70
  }, "strip", z.ZodTypeAny, {
39
71
  control: string;
40
- reduces: "severity" | "sequence_probability" | "harm_probability";
72
+ reduces: "sequence_probability" | "harm_probability" | "severity";
73
+ for_harm?: string | undefined;
41
74
  }, {
42
75
  control: string;
43
- reduces: "severity" | "sequence_probability" | "harm_probability";
76
+ reduces: "sequence_probability" | "harm_probability" | "severity";
77
+ for_harm?: string | undefined;
44
78
  }>, "many">>;
45
- residual_severity: z.ZodOptional<z.ZodNumber>;
46
- residual_probability: z.ZodOptional<z.ZodNumber>;
47
- residual_exploitability: z.ZodOptional<z.ZodNumber>;
79
+ cvss_score: z.ZodOptional<z.ZodNumber>;
80
+ cvss_vector: z.ZodOptional<z.ZodString>;
48
81
  }, "strip", z.ZodTypeAny, {
82
+ type: "software_risk" | "usability_risk" | "security_risk";
83
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
49
84
  id: string;
50
85
  title: string;
51
- type: "usability_risk" | "software_risk" | "security_risk";
52
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
53
- hazardous_situation: string;
54
- harm: string;
55
86
  analyzes: string;
56
- inherent_severity: number;
87
+ hazardous_situation: string;
88
+ harm_assessments: {
89
+ harm: string;
90
+ inherent_probability?: number | undefined;
91
+ inherent_exploitability?: number | undefined;
92
+ residual_probability?: number | undefined;
93
+ residual_exploitability?: number | undefined;
94
+ residual_severity_override?: number | undefined;
95
+ }[];
57
96
  mitigations?: {
58
97
  control: string;
59
- reduces: "severity" | "sequence_probability" | "harm_probability";
98
+ reduces: "sequence_probability" | "harm_probability" | "severity";
99
+ for_harm?: string | undefined;
60
100
  }[] | undefined;
61
- inherent_probability?: number | undefined;
62
- inherent_exploitability?: number | undefined;
63
- residual_severity?: number | undefined;
64
- residual_probability?: number | undefined;
65
- residual_exploitability?: number | undefined;
101
+ cvss_score?: number | undefined;
102
+ cvss_vector?: string | undefined;
66
103
  }, {
104
+ type: "software_risk" | "usability_risk" | "security_risk";
105
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
67
106
  id: string;
68
107
  title: string;
69
- type: "usability_risk" | "software_risk" | "security_risk";
70
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
108
+ analyzes: string;
71
109
  hazardous_situation: string;
72
- harm: string;
110
+ harm_assessments: {
111
+ harm: string;
112
+ inherent_probability?: number | undefined;
113
+ inherent_exploitability?: number | undefined;
114
+ residual_probability?: number | undefined;
115
+ residual_exploitability?: number | undefined;
116
+ residual_severity_override?: number | undefined;
117
+ }[];
118
+ mitigations?: {
119
+ control: string;
120
+ reduces: "sequence_probability" | "harm_probability" | "severity";
121
+ for_harm?: string | undefined;
122
+ }[] | undefined;
123
+ cvss_score?: number | undefined;
124
+ cvss_vector?: string | undefined;
125
+ }>, {
126
+ type: "software_risk" | "usability_risk" | "security_risk";
127
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
128
+ id: string;
129
+ title: string;
73
130
  analyzes: string;
74
- inherent_severity: number;
131
+ hazardous_situation: string;
132
+ harm_assessments: {
133
+ harm: string;
134
+ inherent_probability?: number | undefined;
135
+ inherent_exploitability?: number | undefined;
136
+ residual_probability?: number | undefined;
137
+ residual_exploitability?: number | undefined;
138
+ residual_severity_override?: number | undefined;
139
+ }[];
75
140
  mitigations?: {
76
141
  control: string;
77
- reduces: "severity" | "sequence_probability" | "harm_probability";
142
+ reduces: "sequence_probability" | "harm_probability" | "severity";
143
+ for_harm?: string | undefined;
78
144
  }[] | undefined;
79
- inherent_probability?: number | undefined;
80
- inherent_exploitability?: number | undefined;
81
- residual_severity?: number | undefined;
82
- residual_probability?: number | undefined;
83
- residual_exploitability?: number | undefined;
145
+ cvss_score?: number | undefined;
146
+ cvss_vector?: string | undefined;
147
+ }, {
148
+ type: "software_risk" | "usability_risk" | "security_risk";
149
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
150
+ id: string;
151
+ title: string;
152
+ analyzes: string;
153
+ hazardous_situation: string;
154
+ harm_assessments: {
155
+ harm: string;
156
+ inherent_probability?: number | undefined;
157
+ inherent_exploitability?: number | undefined;
158
+ residual_probability?: number | undefined;
159
+ residual_exploitability?: number | undefined;
160
+ residual_severity_override?: number | undefined;
161
+ }[];
162
+ mitigations?: {
163
+ control: string;
164
+ reduces: "sequence_probability" | "harm_probability" | "severity";
165
+ for_harm?: string | undefined;
166
+ }[] | undefined;
167
+ cvss_score?: number | undefined;
168
+ cvss_vector?: string | undefined;
84
169
  }>;
85
170
  declare const HazardFrontmatterSchema: z.ZodObject<{
86
171
  type: z.ZodEnum<["haz_soe_software", "haz_soe_security"]>;
@@ -93,49 +178,68 @@ declare const HazardFrontmatterSchema: z.ZodObject<{
93
178
  detection_method: z.ZodOptional<z.ZodString>;
94
179
  threat_category: z.ZodOptional<z.ZodString>;
95
180
  attack_vector: z.ZodOptional<z.ZodString>;
181
+ hazard_category: z.ZodOptional<z.ZodString>;
96
182
  }, "strip", z.ZodTypeAny, {
183
+ type: "haz_soe_software" | "haz_soe_security";
184
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
97
185
  id: string;
98
186
  title: string;
99
- type: "haz_soe_software" | "haz_soe_security";
100
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
101
187
  leads_to?: string[] | undefined;
102
188
  failure_mode?: string | undefined;
103
189
  cause?: string | undefined;
104
190
  detection_method?: string | undefined;
105
191
  threat_category?: string | undefined;
106
192
  attack_vector?: string | undefined;
193
+ hazard_category?: string | undefined;
107
194
  }, {
195
+ type: "haz_soe_software" | "haz_soe_security";
196
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
108
197
  id: string;
109
198
  title: string;
110
- type: "haz_soe_software" | "haz_soe_security";
111
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
112
199
  leads_to?: string[] | undefined;
113
200
  failure_mode?: string | undefined;
114
201
  cause?: string | undefined;
115
202
  detection_method?: string | undefined;
116
203
  threat_category?: string | undefined;
117
204
  attack_vector?: string | undefined;
205
+ hazard_category?: string | undefined;
206
+ }>;
207
+ declare const HazardCategoryFrontmatterSchema: z.ZodObject<{
208
+ type: z.ZodLiteral<"hazard_category">;
209
+ id: z.ZodString;
210
+ title: z.ZodString;
211
+ status: z.ZodEnum<["draft", "in_review", "approved", "effective", "archived", "example"]>;
212
+ source: z.ZodOptional<z.ZodString>;
213
+ }, "strip", z.ZodTypeAny, {
214
+ type: "hazard_category";
215
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
216
+ id: string;
217
+ title: string;
218
+ source?: string | undefined;
219
+ }, {
220
+ type: "hazard_category";
221
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
222
+ id: string;
223
+ title: string;
224
+ source?: string | undefined;
118
225
  }>;
119
226
  declare const HazardousSituationFrontmatterSchema: z.ZodObject<{
120
227
  type: z.ZodLiteral<"hazardous_situation">;
121
228
  id: z.ZodString;
122
229
  title: z.ZodString;
123
230
  status: z.ZodEnum<["draft", "in_review", "approved", "effective", "archived", "example"]>;
124
- probability: z.ZodNumber;
125
231
  results_in: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
126
232
  }, "strip", z.ZodTypeAny, {
233
+ type: "hazardous_situation";
234
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
127
235
  id: string;
128
236
  title: string;
129
- type: "hazardous_situation";
130
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
131
- probability: number;
132
237
  results_in?: string[] | undefined;
133
238
  }, {
239
+ type: "hazardous_situation";
240
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
134
241
  id: string;
135
242
  title: string;
136
- type: "hazardous_situation";
137
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
138
- probability: number;
139
243
  results_in?: string[] | undefined;
140
244
  }>;
141
245
  declare const HarmFrontmatterSchema: z.ZodObject<{
@@ -146,18 +250,18 @@ declare const HarmFrontmatterSchema: z.ZodObject<{
146
250
  severity: z.ZodNumber;
147
251
  category: z.ZodOptional<z.ZodString>;
148
252
  }, "strip", z.ZodTypeAny, {
253
+ severity: number;
254
+ type: "harm";
255
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
149
256
  id: string;
150
257
  title: string;
151
- type: "harm";
152
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
153
- severity: number;
154
258
  category?: string | undefined;
155
259
  }, {
260
+ severity: number;
261
+ type: "harm";
262
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
156
263
  id: string;
157
264
  title: string;
158
- type: "harm";
159
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
160
- severity: number;
161
265
  category?: string | undefined;
162
266
  }>;
163
267
  declare const RiskMatrixConfigSchema: z.ZodObject<{
@@ -231,6 +335,7 @@ type Mitigation = z.infer<typeof MitigationSchema>;
231
335
  type RiskEntryFrontmatter = z.infer<typeof RiskEntryFrontmatterSchema>;
232
336
  type HazardFrontmatter = z.infer<typeof HazardFrontmatterSchema>;
233
337
  type HazardousSituationFrontmatter = z.infer<typeof HazardousSituationFrontmatterSchema>;
338
+ type HazardCategoryFrontmatter = z.infer<typeof HazardCategoryFrontmatterSchema>;
234
339
  type HarmFrontmatter = z.infer<typeof HarmFrontmatterSchema>;
235
340
  type RiskMatrixConfig = z.infer<typeof RiskMatrixConfigSchema>;
236
341
 
@@ -257,18 +362,18 @@ declare const UsabilityPlanFrontmatterSchema: z.ZodObject<{
257
362
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
258
363
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
259
364
  }, "strip", z.ZodTypeAny, {
365
+ type: "usability_plan";
366
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
260
367
  id: string;
261
368
  title: string;
262
- type: "usability_plan";
263
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
264
369
  author?: string | undefined;
265
370
  reviewers?: string[] | undefined;
266
371
  approvers?: string[] | undefined;
267
372
  }, {
373
+ type: "usability_plan";
374
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
268
375
  id: string;
269
376
  title: string;
270
- type: "usability_plan";
271
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
272
377
  author?: string | undefined;
273
378
  reviewers?: string[] | undefined;
274
379
  approvers?: string[] | undefined;
@@ -283,19 +388,19 @@ declare const UseSpecificationFrontmatterSchema: z.ZodObject<{
283
388
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
284
389
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
285
390
  }, "strip", z.ZodTypeAny, {
391
+ type: "use_specification";
392
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
286
393
  id: string;
287
394
  title: string;
288
- type: "use_specification";
289
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
290
395
  user_group: string;
291
396
  author?: string | undefined;
292
397
  reviewers?: string[] | undefined;
293
398
  approvers?: string[] | undefined;
294
399
  }, {
400
+ type: "use_specification";
401
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
295
402
  id: string;
296
403
  title: string;
297
- type: "use_specification";
298
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
299
404
  user_group: string;
300
405
  author?: string | undefined;
301
406
  reviewers?: string[] | undefined;
@@ -308,32 +413,29 @@ declare const TaskAnalysisFrontmatterSchema: z.ZodObject<{
308
413
  status: z.ZodEnum<["draft", "in_review", "approved", "effective", "archived", "example"]>;
309
414
  user_group: z.ZodString;
310
415
  critical_task: z.ZodBoolean;
311
- max_harm_severity: z.ZodOptional<z.ZodNumber>;
312
416
  author: z.ZodOptional<z.ZodString>;
313
417
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
314
418
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
315
419
  }, "strip", z.ZodTypeAny, {
420
+ type: "task_analysis";
421
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
316
422
  id: string;
317
423
  title: string;
318
- type: "task_analysis";
319
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
320
424
  user_group: string;
321
425
  critical_task: boolean;
322
426
  author?: string | undefined;
323
427
  reviewers?: string[] | undefined;
324
428
  approvers?: string[] | undefined;
325
- max_harm_severity?: number | undefined;
326
429
  }, {
430
+ type: "task_analysis";
431
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
327
432
  id: string;
328
433
  title: string;
329
- type: "task_analysis";
330
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
331
434
  user_group: string;
332
435
  critical_task: boolean;
333
436
  author?: string | undefined;
334
437
  reviewers?: string[] | undefined;
335
438
  approvers?: string[] | undefined;
336
- max_harm_severity?: number | undefined;
337
439
  }>;
338
440
  declare const UsabilityEvaluationFrontmatterSchema: z.ZodObject<{
339
441
  type: z.ZodLiteral<"usability_evaluation">;
@@ -345,19 +447,19 @@ declare const UsabilityEvaluationFrontmatterSchema: z.ZodObject<{
345
447
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
346
448
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
347
449
  }, "strip", z.ZodTypeAny, {
450
+ type: "usability_evaluation";
451
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
348
452
  id: string;
349
453
  title: string;
350
- type: "usability_evaluation";
351
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
352
454
  author?: string | undefined;
353
455
  reviewers?: string[] | undefined;
354
456
  approvers?: string[] | undefined;
355
457
  result?: "pass" | "fail" | "pass_with_findings" | undefined;
356
458
  }, {
459
+ type: "usability_evaluation";
460
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
357
461
  id: string;
358
462
  title: string;
359
- type: "usability_evaluation";
360
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
361
463
  author?: string | undefined;
362
464
  reviewers?: string[] | undefined;
363
465
  approvers?: string[] | undefined;
@@ -373,19 +475,19 @@ declare const SummativeEvaluationFrontmatterSchema: z.ZodObject<{
373
475
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
374
476
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
375
477
  }, "strip", z.ZodTypeAny, {
478
+ type: "summative_evaluation";
479
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
376
480
  id: string;
377
481
  title: string;
378
- type: "summative_evaluation";
379
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
380
482
  author?: string | undefined;
381
483
  reviewers?: string[] | undefined;
382
484
  approvers?: string[] | undefined;
383
485
  result?: "pass" | "fail" | "pass_with_findings" | undefined;
384
486
  }, {
487
+ type: "summative_evaluation";
488
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
385
489
  id: string;
386
490
  title: string;
387
- type: "summative_evaluation";
388
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
389
491
  author?: string | undefined;
390
492
  reviewers?: string[] | undefined;
391
493
  approvers?: string[] | undefined;
@@ -414,18 +516,18 @@ declare const RiskManagementPlanFrontmatterSchema: z.ZodObject<{
414
516
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
415
517
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
416
518
  }, "strip", z.ZodTypeAny, {
519
+ type: "risk_management_plan";
520
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
417
521
  id: string;
418
522
  title: string;
419
- type: "risk_management_plan";
420
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
421
523
  author?: string | undefined;
422
524
  reviewers?: string[] | undefined;
423
525
  approvers?: string[] | undefined;
424
526
  }, {
527
+ type: "risk_management_plan";
528
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
425
529
  id: string;
426
530
  title: string;
427
- type: "risk_management_plan";
428
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
429
531
  author?: string | undefined;
430
532
  reviewers?: string[] | undefined;
431
533
  approvers?: string[] | undefined;
@@ -445,18 +547,18 @@ declare const SoftwareDevelopmentPlanFrontmatterSchema: z.ZodObject<{
445
547
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
446
548
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
447
549
  }, "strip", z.ZodTypeAny, {
550
+ type: "software_development_plan";
551
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
448
552
  id: string;
449
553
  title: string;
450
- type: "software_development_plan";
451
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
452
554
  author?: string | undefined;
453
555
  reviewers?: string[] | undefined;
454
556
  approvers?: string[] | undefined;
455
557
  }, {
558
+ type: "software_development_plan";
559
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
456
560
  id: string;
457
561
  title: string;
458
- type: "software_development_plan";
459
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
460
562
  author?: string | undefined;
461
563
  reviewers?: string[] | undefined;
462
564
  approvers?: string[] | undefined;
@@ -470,18 +572,18 @@ declare const SoftwareMaintenancePlanFrontmatterSchema: z.ZodObject<{
470
572
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
471
573
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
472
574
  }, "strip", z.ZodTypeAny, {
575
+ type: "software_maintenance_plan";
576
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
473
577
  id: string;
474
578
  title: string;
475
- type: "software_maintenance_plan";
476
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
477
579
  author?: string | undefined;
478
580
  reviewers?: string[] | undefined;
479
581
  approvers?: string[] | undefined;
480
582
  }, {
583
+ type: "software_maintenance_plan";
584
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
481
585
  id: string;
482
586
  title: string;
483
- type: "software_maintenance_plan";
484
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
485
587
  author?: string | undefined;
486
588
  reviewers?: string[] | undefined;
487
589
  approvers?: string[] | undefined;
@@ -495,18 +597,43 @@ declare const SoupRegisterFrontmatterSchema: z.ZodObject<{
495
597
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
496
598
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
497
599
  }, "strip", z.ZodTypeAny, {
600
+ type: "soup_register";
601
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
498
602
  id: string;
499
603
  title: string;
604
+ author?: string | undefined;
605
+ reviewers?: string[] | undefined;
606
+ approvers?: string[] | undefined;
607
+ }, {
500
608
  type: "soup_register";
501
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
609
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
610
+ id: string;
611
+ title: string;
612
+ author?: string | undefined;
613
+ reviewers?: string[] | undefined;
614
+ approvers?: string[] | undefined;
615
+ }>;
616
+ declare const SoftwareTestPlanFrontmatterSchema: z.ZodObject<{
617
+ type: z.ZodLiteral<"software_test_plan">;
618
+ id: z.ZodString;
619
+ title: z.ZodString;
620
+ status: z.ZodEnum<["draft", "in_review", "approved", "effective", "archived", "example"]>;
621
+ author: z.ZodOptional<z.ZodString>;
622
+ reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
623
+ approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
624
+ }, "strip", z.ZodTypeAny, {
625
+ type: "software_test_plan";
626
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
627
+ id: string;
628
+ title: string;
502
629
  author?: string | undefined;
503
630
  reviewers?: string[] | undefined;
504
631
  approvers?: string[] | undefined;
505
632
  }, {
633
+ type: "software_test_plan";
634
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
506
635
  id: string;
507
636
  title: string;
508
- type: "soup_register";
509
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
510
637
  author?: string | undefined;
511
638
  reviewers?: string[] | undefined;
512
639
  approvers?: string[] | undefined;
@@ -514,6 +641,7 @@ declare const SoupRegisterFrontmatterSchema: z.ZodObject<{
514
641
  type SoftwareDevelopmentPlanFrontmatter = z.infer<typeof SoftwareDevelopmentPlanFrontmatterSchema>;
515
642
  type SoftwareMaintenancePlanFrontmatter = z.infer<typeof SoftwareMaintenancePlanFrontmatterSchema>;
516
643
  type SoupRegisterFrontmatter = z.infer<typeof SoupRegisterFrontmatterSchema>;
644
+ type SoftwareTestPlanFrontmatter = z.infer<typeof SoftwareTestPlanFrontmatterSchema>;
517
645
 
518
646
  /**
519
647
  * Zod schemas for IEC 62304 §9 Software Problem Resolution (Anomaly) document type.
@@ -538,24 +666,24 @@ declare const AnomalyFrontmatterSchema: z.ZodObject<{
538
666
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
539
667
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
540
668
  }, "strip", z.ZodTypeAny, {
669
+ severity: "critical" | "major" | "minor";
670
+ type: "anomaly";
671
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
541
672
  id: string;
542
673
  title: string;
543
- type: "anomaly";
544
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
545
- severity: "critical" | "major" | "minor";
546
- category: "bug" | "regression" | "security_vulnerability" | "performance";
674
+ category: "performance" | "bug" | "security_vulnerability" | "regression";
547
675
  disposition: "open" | "investigating" | "resolved" | "deferred" | "will_not_fix";
548
676
  author?: string | undefined;
549
677
  reviewers?: string[] | undefined;
550
678
  approvers?: string[] | undefined;
551
679
  affected_version?: string | undefined;
552
680
  }, {
681
+ severity: "critical" | "major" | "minor";
682
+ type: "anomaly";
683
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
553
684
  id: string;
554
685
  title: string;
555
- type: "anomaly";
556
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
557
- severity: "critical" | "major" | "minor";
558
- category: "bug" | "regression" | "security_vulnerability" | "performance";
686
+ category: "performance" | "bug" | "security_vulnerability" | "regression";
559
687
  disposition: "open" | "investigating" | "resolved" | "deferred" | "will_not_fix";
560
688
  author?: string | undefined;
561
689
  reviewers?: string[] | undefined;
@@ -580,18 +708,18 @@ declare const CybersecurityPlanFrontmatterSchema: z.ZodObject<{
580
708
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
581
709
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
582
710
  }, "strip", z.ZodTypeAny, {
711
+ type: "cybersecurity_plan";
712
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
583
713
  id: string;
584
714
  title: string;
585
- type: "cybersecurity_plan";
586
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
587
715
  author?: string | undefined;
588
716
  reviewers?: string[] | undefined;
589
717
  approvers?: string[] | undefined;
590
718
  }, {
719
+ type: "cybersecurity_plan";
720
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
591
721
  id: string;
592
722
  title: string;
593
- type: "cybersecurity_plan";
594
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
595
723
  author?: string | undefined;
596
724
  reviewers?: string[] | undefined;
597
725
  approvers?: string[] | undefined;
@@ -605,18 +733,18 @@ declare const SbomFrontmatterSchema: z.ZodObject<{
605
733
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
606
734
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
607
735
  }, "strip", z.ZodTypeAny, {
736
+ type: "sbom";
737
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
608
738
  id: string;
609
739
  title: string;
610
- type: "sbom";
611
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
612
740
  author?: string | undefined;
613
741
  reviewers?: string[] | undefined;
614
742
  approvers?: string[] | undefined;
615
743
  }, {
744
+ type: "sbom";
745
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
616
746
  id: string;
617
747
  title: string;
618
- type: "sbom";
619
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
620
748
  author?: string | undefined;
621
749
  reviewers?: string[] | undefined;
622
750
  approvers?: string[] | undefined;
@@ -637,18 +765,18 @@ declare const ClinicalEvaluationPlanFrontmatterSchema: z.ZodObject<{
637
765
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
638
766
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
639
767
  }, "strip", z.ZodTypeAny, {
768
+ type: "clinical_evaluation_plan";
769
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
640
770
  id: string;
641
771
  title: string;
642
- type: "clinical_evaluation_plan";
643
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
644
772
  author?: string | undefined;
645
773
  reviewers?: string[] | undefined;
646
774
  approvers?: string[] | undefined;
647
775
  }, {
776
+ type: "clinical_evaluation_plan";
777
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
648
778
  id: string;
649
779
  title: string;
650
- type: "clinical_evaluation_plan";
651
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
652
780
  author?: string | undefined;
653
781
  reviewers?: string[] | undefined;
654
782
  approvers?: string[] | undefined;
@@ -662,18 +790,18 @@ declare const ClinicalEvaluationReportFrontmatterSchema: z.ZodObject<{
662
790
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
663
791
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
664
792
  }, "strip", z.ZodTypeAny, {
793
+ type: "clinical_evaluation_report";
794
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
665
795
  id: string;
666
796
  title: string;
667
- type: "clinical_evaluation_report";
668
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
669
797
  author?: string | undefined;
670
798
  reviewers?: string[] | undefined;
671
799
  approvers?: string[] | undefined;
672
800
  }, {
801
+ type: "clinical_evaluation_report";
802
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
673
803
  id: string;
674
804
  title: string;
675
- type: "clinical_evaluation_report";
676
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
677
805
  author?: string | undefined;
678
806
  reviewers?: string[] | undefined;
679
807
  approvers?: string[] | undefined;
@@ -694,18 +822,18 @@ declare const PostMarketSurveillancePlanFrontmatterSchema: z.ZodObject<{
694
822
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
695
823
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
696
824
  }, "strip", z.ZodTypeAny, {
825
+ type: "post_market_surveillance_plan";
826
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
697
827
  id: string;
698
828
  title: string;
699
- type: "post_market_surveillance_plan";
700
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
701
829
  author?: string | undefined;
702
830
  reviewers?: string[] | undefined;
703
831
  approvers?: string[] | undefined;
704
832
  }, {
833
+ type: "post_market_surveillance_plan";
834
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
705
835
  id: string;
706
836
  title: string;
707
- type: "post_market_surveillance_plan";
708
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
709
837
  author?: string | undefined;
710
838
  reviewers?: string[] | undefined;
711
839
  approvers?: string[] | undefined;
@@ -726,11 +854,11 @@ declare const PostMarketFeedbackFrontmatterSchema: z.ZodObject<{
726
854
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
727
855
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
728
856
  }, "strip", z.ZodTypeAny, {
857
+ severity: "low" | "medium" | "high" | "critical";
858
+ type: "post_market_feedback";
859
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
729
860
  id: string;
730
861
  title: string;
731
- type: "post_market_feedback";
732
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
733
- severity: "critical" | "low" | "medium" | "high";
734
862
  category: "complaint" | "field_observation" | "clinical_followup" | "trend_report";
735
863
  author?: string | undefined;
736
864
  reviewers?: string[] | undefined;
@@ -738,11 +866,11 @@ declare const PostMarketFeedbackFrontmatterSchema: z.ZodObject<{
738
866
  device?: string | undefined;
739
867
  reporting_period?: string | undefined;
740
868
  }, {
869
+ severity: "low" | "medium" | "high" | "critical";
870
+ type: "post_market_feedback";
871
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
741
872
  id: string;
742
873
  title: string;
743
- type: "post_market_feedback";
744
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
745
- severity: "critical" | "low" | "medium" | "high";
746
874
  category: "complaint" | "field_observation" | "clinical_followup" | "trend_report";
747
875
  author?: string | undefined;
748
876
  reviewers?: string[] | undefined;
@@ -766,19 +894,19 @@ declare const LabelingFrontmatterSchema: z.ZodObject<{
766
894
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
767
895
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
768
896
  }, "strip", z.ZodTypeAny, {
897
+ type: "labeling";
898
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
769
899
  id: string;
770
900
  title: string;
771
- type: "labeling";
772
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
773
901
  author?: string | undefined;
774
902
  reviewers?: string[] | undefined;
775
903
  approvers?: string[] | undefined;
776
904
  label_type?: "ifu" | "product_label" | "packaging_label" | undefined;
777
905
  }, {
906
+ type: "labeling";
907
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
778
908
  id: string;
779
909
  title: string;
780
- type: "labeling";
781
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
782
910
  author?: string | undefined;
783
911
  reviewers?: string[] | undefined;
784
912
  approvers?: string[] | undefined;
@@ -799,18 +927,18 @@ declare const ProductDevelopmentPlanFrontmatterSchema: z.ZodObject<{
799
927
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
800
928
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
801
929
  }, "strip", z.ZodTypeAny, {
930
+ type: "product_development_plan";
931
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
802
932
  id: string;
803
933
  title: string;
804
- type: "product_development_plan";
805
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
806
934
  author?: string | undefined;
807
935
  reviewers?: string[] | undefined;
808
936
  approvers?: string[] | undefined;
809
937
  }, {
938
+ type: "product_development_plan";
939
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
810
940
  id: string;
811
941
  title: string;
812
- type: "product_development_plan";
813
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
814
942
  author?: string | undefined;
815
943
  reviewers?: string[] | undefined;
816
944
  approvers?: string[] | undefined;
@@ -824,18 +952,18 @@ declare const IntendedUseFrontmatterSchema: z.ZodObject<{
824
952
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
825
953
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
826
954
  }, "strip", z.ZodTypeAny, {
955
+ type: "intended_use";
956
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
827
957
  id: string;
828
958
  title: string;
829
- type: "intended_use";
830
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
831
959
  author?: string | undefined;
832
960
  reviewers?: string[] | undefined;
833
961
  approvers?: string[] | undefined;
834
962
  }, {
963
+ type: "intended_use";
964
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
835
965
  id: string;
836
966
  title: string;
837
- type: "intended_use";
838
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
839
967
  author?: string | undefined;
840
968
  reviewers?: string[] | undefined;
841
969
  approvers?: string[] | undefined;
@@ -877,29 +1005,29 @@ declare const UserNeedFrontmatterSchema: z.ZodObject<{
877
1005
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
878
1006
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
879
1007
  }, "strip", z.ZodTypeAny, {
1008
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
880
1009
  id: string;
881
1010
  title: string;
882
- status: "draft" | "in_review" | "approved" | "example" | "effective" | "archived";
883
1011
  type?: "user_need" | undefined;
884
- stakeholder?: string | undefined;
885
- priority?: "must_have" | "should_have" | "nice_to_have" | undefined;
886
1012
  source?: string | undefined;
887
- derives?: string[] | undefined;
888
1013
  author?: string | undefined;
889
1014
  reviewers?: string[] | undefined;
890
1015
  approvers?: string[] | undefined;
1016
+ stakeholder?: string | undefined;
1017
+ priority?: "must_have" | "should_have" | "nice_to_have" | undefined;
1018
+ derives?: string[] | undefined;
891
1019
  }, {
1020
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
892
1021
  id: string;
893
1022
  title: string;
894
- status: "draft" | "in_review" | "approved" | "example" | "effective" | "archived";
895
1023
  type?: "user_need" | undefined;
896
- stakeholder?: string | undefined;
897
- priority?: "must_have" | "should_have" | "nice_to_have" | undefined;
898
1024
  source?: string | undefined;
899
- derives?: string[] | undefined;
900
1025
  author?: string | undefined;
901
1026
  reviewers?: string[] | undefined;
902
1027
  approvers?: string[] | undefined;
1028
+ stakeholder?: string | undefined;
1029
+ priority?: "must_have" | "should_have" | "nice_to_have" | undefined;
1030
+ derives?: string[] | undefined;
903
1031
  }>;
904
1032
  type UserNeedPriority = z.infer<typeof UserNeedPrioritySchema>;
905
1033
  type UserNeedFrontmatter = z.infer<typeof UserNeedFrontmatterSchema>;
@@ -949,26 +1077,34 @@ declare const RequirementFrontmatterSchema: z.ZodObject<{
949
1077
  author: z.ZodOptional<z.ZodString>;
950
1078
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
951
1079
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1080
+ /** Upstream traceability — IDs of documents this requirement traces from (e.g., UN for PRS, PRS for SRS) */
1081
+ traces_from: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1082
+ /** Downstream traceability — IDs of documents this requirement traces to (e.g., SRS for PRS) */
1083
+ traces_to: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
952
1084
  }, "strip", z.ZodTypeAny, {
1085
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
953
1086
  id: string;
954
1087
  title: string;
955
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
956
1088
  author?: string | undefined;
957
1089
  reviewers?: string[] | undefined;
958
1090
  approvers?: string[] | undefined;
959
- req_type?: "performance" | "functional" | "interface" | "security" | "usability" | "safety" | "regulatory" | undefined;
1091
+ req_type?: "safety" | "performance" | "usability" | "regulatory" | "functional" | "interface" | "security" | undefined;
960
1092
  format?: "standard" | "user_story" | undefined;
961
1093
  fulfillment_type?: "labeling" | "usability" | "software" | "clinical" | "regulatory_doc" | "process" | undefined;
1094
+ traces_from?: string[] | undefined;
1095
+ traces_to?: string[] | undefined;
962
1096
  }, {
1097
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
963
1098
  id: string;
964
1099
  title: string;
965
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
966
1100
  author?: string | undefined;
967
1101
  reviewers?: string[] | undefined;
968
1102
  approvers?: string[] | undefined;
969
- req_type?: "performance" | "functional" | "interface" | "security" | "usability" | "safety" | "regulatory" | undefined;
1103
+ req_type?: "safety" | "performance" | "usability" | "regulatory" | "functional" | "interface" | "security" | undefined;
970
1104
  format?: "standard" | "user_story" | undefined;
971
1105
  fulfillment_type?: "labeling" | "usability" | "software" | "clinical" | "regulatory_doc" | "process" | undefined;
1106
+ traces_from?: string[] | undefined;
1107
+ traces_to?: string[] | undefined;
972
1108
  }>;
973
1109
  type RequirementType = z.infer<typeof RequirementTypeSchema>;
974
1110
  type RequirementFormat = z.infer<typeof RequirementFormatSchema>;
@@ -988,18 +1124,18 @@ declare const TestProtocolFrontmatterSchema: z.ZodObject<{
988
1124
  reviewers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
989
1125
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
990
1126
  }, "strip", z.ZodTypeAny, {
1127
+ type: "test_protocol";
1128
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
991
1129
  id: string;
992
1130
  title: string;
993
- type: "test_protocol";
994
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
995
1131
  author?: string | undefined;
996
1132
  reviewers?: string[] | undefined;
997
1133
  approvers?: string[] | undefined;
998
1134
  }, {
1135
+ type: "test_protocol";
1136
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
999
1137
  id: string;
1000
1138
  title: string;
1001
- type: "test_protocol";
1002
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
1003
1139
  author?: string | undefined;
1004
1140
  reviewers?: string[] | undefined;
1005
1141
  approvers?: string[] | undefined;
@@ -1016,20 +1152,20 @@ declare const TestReportFrontmatterSchema: z.ZodObject<{
1016
1152
  release_version: z.ZodOptional<z.ZodString>;
1017
1153
  test_phase: z.ZodOptional<z.ZodEnum<["verification", "production"]>>;
1018
1154
  }, "strip", z.ZodTypeAny, {
1155
+ type: "test_report";
1156
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
1019
1157
  id: string;
1020
1158
  title: string;
1021
- type: "test_report";
1022
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
1023
1159
  author?: string | undefined;
1024
1160
  reviewers?: string[] | undefined;
1025
1161
  approvers?: string[] | undefined;
1026
1162
  release_version?: string | undefined;
1027
1163
  test_phase?: "verification" | "production" | undefined;
1028
1164
  }, {
1165
+ type: "test_report";
1166
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
1029
1167
  id: string;
1030
1168
  title: string;
1031
- type: "test_report";
1032
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
1033
1169
  author?: string | undefined;
1034
1170
  reviewers?: string[] | undefined;
1035
1171
  approvers?: string[] | undefined;
@@ -1076,16 +1212,16 @@ declare const RepoConfigSchema: z.ZodObject<{
1076
1212
  }>>;
1077
1213
  udi_device_identifier: z.ZodOptional<z.ZodString>;
1078
1214
  }, "strip", z.ZodTypeAny, {
1079
- name: string;
1080
1215
  safety_class: "A" | "B" | "C";
1216
+ name: string;
1081
1217
  classification?: {
1082
1218
  eu?: string | undefined;
1083
1219
  us?: string | undefined;
1084
1220
  } | undefined;
1085
1221
  udi_device_identifier?: string | undefined;
1086
1222
  }, {
1087
- name: string;
1088
1223
  safety_class: "A" | "B" | "C";
1224
+ name: string;
1089
1225
  classification?: {
1090
1226
  eu?: string | undefined;
1091
1227
  us?: string | undefined;
@@ -1104,8 +1240,8 @@ declare const RepoConfigSchema: z.ZodObject<{
1104
1240
  }>>;
1105
1241
  }, "strip", z.ZodTypeAny, {
1106
1242
  device: {
1107
- name: string;
1108
1243
  safety_class: "A" | "B" | "C";
1244
+ name: string;
1109
1245
  classification?: {
1110
1246
  eu?: string | undefined;
1111
1247
  us?: string | undefined;
@@ -1118,8 +1254,8 @@ declare const RepoConfigSchema: z.ZodObject<{
1118
1254
  } | undefined;
1119
1255
  }, {
1120
1256
  device: {
1121
- name: string;
1122
1257
  safety_class: "A" | "B" | "C";
1258
+ name: string;
1123
1259
  classification?: {
1124
1260
  eu?: string | undefined;
1125
1261
  us?: string | undefined;
@@ -1156,20 +1292,20 @@ declare const ReleasePlanFrontmatterSchema: z.ZodObject<{
1156
1292
  title: string;
1157
1293
  type?: "release_plan" | undefined;
1158
1294
  status?: string | undefined;
1295
+ version?: string | undefined;
1159
1296
  author?: string | undefined;
1160
1297
  reviewers?: string[] | undefined;
1161
1298
  approvers?: string[] | undefined;
1162
- version?: string | undefined;
1163
1299
  target_date?: string | undefined;
1164
1300
  }, {
1165
1301
  id: string;
1166
1302
  title: string;
1167
1303
  type?: "release_plan" | undefined;
1168
1304
  status?: string | undefined;
1305
+ version?: string | undefined;
1169
1306
  author?: string | undefined;
1170
1307
  reviewers?: string[] | undefined;
1171
1308
  approvers?: string[] | undefined;
1172
- version?: string | undefined;
1173
1309
  target_date?: string | undefined;
1174
1310
  }>;
1175
1311
  type ReleasePlanFrontmatter = z.infer<typeof ReleasePlanFrontmatterSchema>;
@@ -1183,6 +1319,43 @@ declare const DesignReviewFrontmatterSchema: z.ZodObject<{
1183
1319
  approvers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1184
1320
  /** Optional link to a Release Plan document (e.g. "RP-001") */
1185
1321
  release_plan: z.ZodOptional<z.ZodString>;
1322
+ /** Acknowledged suspected links — one-up/one-down neighbor analysis */
1323
+ suspected_links: z.ZodOptional<z.ZodArray<z.ZodObject<{
1324
+ triggered_by: z.ZodString;
1325
+ neighbors: z.ZodArray<z.ZodObject<{
1326
+ document: z.ZodString;
1327
+ direction: z.ZodEnum<["upstream", "downstream"]>;
1328
+ disposition: z.ZodEnum<["included_in_release", "not_impacted"]>;
1329
+ /** Required when disposition is 'not_impacted' */
1330
+ rationale: z.ZodOptional<z.ZodString>;
1331
+ }, "strip", z.ZodTypeAny, {
1332
+ disposition: "included_in_release" | "not_impacted";
1333
+ document: string;
1334
+ direction: "upstream" | "downstream";
1335
+ rationale?: string | undefined;
1336
+ }, {
1337
+ disposition: "included_in_release" | "not_impacted";
1338
+ document: string;
1339
+ direction: "upstream" | "downstream";
1340
+ rationale?: string | undefined;
1341
+ }>, "many">;
1342
+ }, "strip", z.ZodTypeAny, {
1343
+ triggered_by: string;
1344
+ neighbors: {
1345
+ disposition: "included_in_release" | "not_impacted";
1346
+ document: string;
1347
+ direction: "upstream" | "downstream";
1348
+ rationale?: string | undefined;
1349
+ }[];
1350
+ }, {
1351
+ triggered_by: string;
1352
+ neighbors: {
1353
+ disposition: "included_in_release" | "not_impacted";
1354
+ document: string;
1355
+ direction: "upstream" | "downstream";
1356
+ rationale?: string | undefined;
1357
+ }[];
1358
+ }>, "many">>;
1186
1359
  }, "strip", z.ZodTypeAny, {
1187
1360
  id: string;
1188
1361
  title: string;
@@ -1192,6 +1365,15 @@ declare const DesignReviewFrontmatterSchema: z.ZodObject<{
1192
1365
  reviewers?: string[] | undefined;
1193
1366
  approvers?: string[] | undefined;
1194
1367
  release_plan?: string | undefined;
1368
+ suspected_links?: {
1369
+ triggered_by: string;
1370
+ neighbors: {
1371
+ disposition: "included_in_release" | "not_impacted";
1372
+ document: string;
1373
+ direction: "upstream" | "downstream";
1374
+ rationale?: string | undefined;
1375
+ }[];
1376
+ }[] | undefined;
1195
1377
  }, {
1196
1378
  id: string;
1197
1379
  title: string;
@@ -1201,6 +1383,15 @@ declare const DesignReviewFrontmatterSchema: z.ZodObject<{
1201
1383
  reviewers?: string[] | undefined;
1202
1384
  approvers?: string[] | undefined;
1203
1385
  release_plan?: string | undefined;
1386
+ suspected_links?: {
1387
+ triggered_by: string;
1388
+ neighbors: {
1389
+ disposition: "included_in_release" | "not_impacted";
1390
+ document: string;
1391
+ direction: "upstream" | "downstream";
1392
+ rationale?: string | undefined;
1393
+ }[];
1394
+ }[] | undefined;
1204
1395
  }>;
1205
1396
  type DesignReviewFrontmatter = z.infer<typeof DesignReviewFrontmatterSchema>;
1206
1397
  declare const ReleaseNotesAudienceSchema: z.ZodEnum<["customer", "technical"]>;
@@ -1216,21 +1407,21 @@ declare const ReleaseNotesFrontmatterSchema: z.ZodObject<{
1216
1407
  audience: z.ZodEnum<["customer", "technical"]>;
1217
1408
  release_version: z.ZodString;
1218
1409
  }, "strip", z.ZodTypeAny, {
1410
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
1219
1411
  id: string;
1220
1412
  title: string;
1221
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
1222
- audience: "customer" | "technical";
1223
1413
  release_version: string;
1414
+ audience: "customer" | "technical";
1224
1415
  type?: "release_notes" | undefined;
1225
1416
  author?: string | undefined;
1226
1417
  reviewers?: string[] | undefined;
1227
1418
  approvers?: string[] | undefined;
1228
1419
  }, {
1420
+ status: "draft" | "in_review" | "approved" | "effective" | "archived" | "example";
1229
1421
  id: string;
1230
1422
  title: string;
1231
- status: "draft" | "approved" | "in_review" | "effective" | "archived" | "example";
1232
- audience: "customer" | "technical";
1233
1423
  release_version: string;
1424
+ audience: "customer" | "technical";
1234
1425
  type?: "release_notes" | undefined;
1235
1426
  author?: string | undefined;
1236
1427
  reviewers?: string[] | undefined;
@@ -1306,18 +1497,18 @@ declare const PlannedAuditEntrySchema: z.ZodObject<{
1306
1497
  auditor: z.ZodString;
1307
1498
  status: z.ZodEnum<["planned", "in_progress", "completed", "cancelled"]>;
1308
1499
  }, "strip", z.ZodTypeAny, {
1500
+ auditor: string;
1501
+ status: "in_progress" | "completed" | "cancelled" | "planned";
1309
1502
  audit_id: string;
1310
1503
  process_area: string;
1311
1504
  planned_date: string;
1312
- auditor: string;
1313
- status: "planned" | "in_progress" | "completed" | "cancelled";
1314
1505
  clause?: string | undefined;
1315
1506
  }, {
1507
+ auditor: string;
1508
+ status: "in_progress" | "completed" | "cancelled" | "planned";
1316
1509
  audit_id: string;
1317
1510
  process_area: string;
1318
1511
  planned_date: string;
1319
- auditor: string;
1320
- status: "planned" | "in_progress" | "completed" | "cancelled";
1321
1512
  clause?: string | undefined;
1322
1513
  }>;
1323
1514
  type PlannedAuditEntry = z.infer<typeof PlannedAuditEntrySchema>;
@@ -1338,18 +1529,18 @@ declare const AuditScheduleFrontmatterSchema: z.ZodObject<{
1338
1529
  auditor: z.ZodString;
1339
1530
  status: z.ZodEnum<["planned", "in_progress", "completed", "cancelled"]>;
1340
1531
  }, "strip", z.ZodTypeAny, {
1532
+ auditor: string;
1533
+ status: "in_progress" | "completed" | "cancelled" | "planned";
1341
1534
  audit_id: string;
1342
1535
  process_area: string;
1343
1536
  planned_date: string;
1344
- auditor: string;
1345
- status: "planned" | "in_progress" | "completed" | "cancelled";
1346
1537
  clause?: string | undefined;
1347
1538
  }, {
1539
+ auditor: string;
1540
+ status: "in_progress" | "completed" | "cancelled" | "planned";
1348
1541
  audit_id: string;
1349
1542
  process_area: string;
1350
1543
  planned_date: string;
1351
- auditor: string;
1352
- status: "planned" | "in_progress" | "completed" | "cancelled";
1353
1544
  clause?: string | undefined;
1354
1545
  }>, "many">;
1355
1546
  }, "strip", z.ZodTypeAny, {
@@ -1357,15 +1548,15 @@ declare const AuditScheduleFrontmatterSchema: z.ZodObject<{
1357
1548
  title: string;
1358
1549
  cycle_year: number;
1359
1550
  audits: {
1551
+ auditor: string;
1552
+ status: "in_progress" | "completed" | "cancelled" | "planned";
1360
1553
  audit_id: string;
1361
1554
  process_area: string;
1362
1555
  planned_date: string;
1363
- auditor: string;
1364
- status: "planned" | "in_progress" | "completed" | "cancelled";
1365
1556
  clause?: string | undefined;
1366
1557
  }[];
1367
- status?: string | undefined;
1368
1558
  type?: "audit_schedule" | undefined;
1559
+ status?: string | undefined;
1369
1560
  author?: string | undefined;
1370
1561
  reviewers?: string[] | undefined;
1371
1562
  approvers?: string[] | undefined;
@@ -1374,15 +1565,15 @@ declare const AuditScheduleFrontmatterSchema: z.ZodObject<{
1374
1565
  title: string;
1375
1566
  cycle_year: number;
1376
1567
  audits: {
1568
+ auditor: string;
1569
+ status: "in_progress" | "completed" | "cancelled" | "planned";
1377
1570
  audit_id: string;
1378
1571
  process_area: string;
1379
1572
  planned_date: string;
1380
- auditor: string;
1381
- status: "planned" | "in_progress" | "completed" | "cancelled";
1382
1573
  clause?: string | undefined;
1383
1574
  }[];
1384
- status?: string | undefined;
1385
1575
  type?: "audit_schedule" | undefined;
1576
+ status?: string | undefined;
1386
1577
  author?: string | undefined;
1387
1578
  reviewers?: string[] | undefined;
1388
1579
  approvers?: string[] | undefined;
@@ -1394,13 +1585,13 @@ declare const AuditFindingSchema: z.ZodObject<{
1394
1585
  description: z.ZodString;
1395
1586
  capa_id: z.ZodOptional<z.ZodString>;
1396
1587
  }, "strip", z.ZodTypeAny, {
1397
- finding_id: string;
1398
1588
  classification: "observation" | "minor_nc" | "major_nc";
1589
+ finding_id: string;
1399
1590
  description: string;
1400
1591
  capa_id?: string | undefined;
1401
1592
  }, {
1402
- finding_id: string;
1403
1593
  classification: "observation" | "minor_nc" | "major_nc";
1594
+ finding_id: string;
1404
1595
  description: string;
1405
1596
  capa_id?: string | undefined;
1406
1597
  }>;
@@ -1424,13 +1615,13 @@ declare const AuditReportFrontmatterSchema: z.ZodObject<{
1424
1615
  description: z.ZodString;
1425
1616
  capa_id: z.ZodOptional<z.ZodString>;
1426
1617
  }, "strip", z.ZodTypeAny, {
1427
- finding_id: string;
1428
1618
  classification: "observation" | "minor_nc" | "major_nc";
1619
+ finding_id: string;
1429
1620
  description: string;
1430
1621
  capa_id?: string | undefined;
1431
1622
  }, {
1432
- finding_id: string;
1433
1623
  classification: "observation" | "minor_nc" | "major_nc";
1624
+ finding_id: string;
1434
1625
  description: string;
1435
1626
  capa_id?: string | undefined;
1436
1627
  }>, "many">;
@@ -1438,46 +1629,46 @@ declare const AuditReportFrontmatterSchema: z.ZodObject<{
1438
1629
  findings_minor: z.ZodOptional<z.ZodNumber>;
1439
1630
  findings_observations: z.ZodOptional<z.ZodNumber>;
1440
1631
  }, "strip", z.ZodTypeAny, {
1441
- process_area: string;
1442
1632
  auditor: string;
1443
1633
  id: string;
1444
1634
  title: string;
1635
+ process_area: string;
1445
1636
  audit_date: string;
1446
1637
  findings: {
1447
- finding_id: string;
1448
1638
  classification: "observation" | "minor_nc" | "major_nc";
1639
+ finding_id: string;
1449
1640
  description: string;
1450
1641
  capa_id?: string | undefined;
1451
1642
  }[];
1452
- audit_id?: string | undefined;
1453
- clause?: string | undefined;
1454
- status?: string | undefined;
1455
1643
  type?: "audit_report" | undefined;
1644
+ status?: string | undefined;
1456
1645
  author?: string | undefined;
1457
1646
  reviewers?: string[] | undefined;
1458
1647
  approvers?: string[] | undefined;
1648
+ audit_id?: string | undefined;
1649
+ clause?: string | undefined;
1459
1650
  findings_major?: number | undefined;
1460
1651
  findings_minor?: number | undefined;
1461
1652
  findings_observations?: number | undefined;
1462
1653
  }, {
1463
- process_area: string;
1464
1654
  auditor: string;
1465
1655
  id: string;
1466
1656
  title: string;
1657
+ process_area: string;
1467
1658
  audit_date: string;
1468
1659
  findings: {
1469
- finding_id: string;
1470
1660
  classification: "observation" | "minor_nc" | "major_nc";
1661
+ finding_id: string;
1471
1662
  description: string;
1472
1663
  capa_id?: string | undefined;
1473
1664
  }[];
1474
- audit_id?: string | undefined;
1475
- clause?: string | undefined;
1476
- status?: string | undefined;
1477
1665
  type?: "audit_report" | undefined;
1666
+ status?: string | undefined;
1478
1667
  author?: string | undefined;
1479
1668
  reviewers?: string[] | undefined;
1480
1669
  approvers?: string[] | undefined;
1670
+ audit_id?: string | undefined;
1671
+ clause?: string | undefined;
1481
1672
  findings_major?: number | undefined;
1482
1673
  findings_minor?: number | undefined;
1483
1674
  findings_observations?: number | undefined;
@@ -1506,11 +1697,11 @@ declare const ManagementReviewFrontmatterSchema: z.ZodObject<{
1506
1697
  from: z.ZodString;
1507
1698
  to: z.ZodString;
1508
1699
  }, "strip", z.ZodTypeAny, {
1509
- from: string;
1510
1700
  to: string;
1511
- }, {
1512
1701
  from: string;
1702
+ }, {
1513
1703
  to: string;
1704
+ from: string;
1514
1705
  }>;
1515
1706
  attendees: z.ZodArray<z.ZodObject<{
1516
1707
  name: z.ZodString;
@@ -1529,15 +1720,15 @@ declare const ManagementReviewFrontmatterSchema: z.ZodObject<{
1529
1720
  title: string;
1530
1721
  review_date: string;
1531
1722
  review_period: {
1532
- from: string;
1533
1723
  to: string;
1724
+ from: string;
1534
1725
  };
1535
1726
  attendees: {
1536
1727
  name: string;
1537
1728
  role: string;
1538
1729
  }[];
1539
- status?: "draft" | "completed" | "scheduled" | undefined;
1540
1730
  type?: "management_review" | undefined;
1731
+ status?: "draft" | "completed" | "scheduled" | undefined;
1541
1732
  version?: string | undefined;
1542
1733
  data_snapshot_date?: string | undefined;
1543
1734
  next_review_date?: string | undefined;
@@ -1546,43 +1737,29 @@ declare const ManagementReviewFrontmatterSchema: z.ZodObject<{
1546
1737
  title: string;
1547
1738
  review_date: string;
1548
1739
  review_period: {
1549
- from: string;
1550
1740
  to: string;
1741
+ from: string;
1551
1742
  };
1552
1743
  attendees: {
1553
1744
  name: string;
1554
1745
  role: string;
1555
1746
  }[];
1556
- status?: "draft" | "completed" | "scheduled" | undefined;
1557
1747
  type?: "management_review" | undefined;
1748
+ status?: "draft" | "completed" | "scheduled" | undefined;
1558
1749
  version?: string | undefined;
1559
1750
  data_snapshot_date?: string | undefined;
1560
1751
  next_review_date?: string | undefined;
1561
1752
  }>;
1562
1753
  type ManagementReviewFrontmatter = z.infer<typeof ManagementReviewFrontmatterSchema>;
1563
1754
 
1564
- /**
1565
- * Shared validation schemas
1566
- *
1567
- * This file contains only validators and enums used for parsing and validation.
1568
- * Full entity schemas have been removed per ADR-014 (backend-only validation).
1569
- */
1570
-
1571
- declare const RegulatoryFrameworkSchema: z.ZodEnum<["ISO_13485", "IEC_62304", "FDA_21_CFR_820"]>;
1572
- declare const SafetyClassSchema: z.ZodEnum<["A", "B", "C"]>;
1573
- declare const DocumentTypeSchema: z.ZodEnum<["user_need", "requirement", "architecture", "detailed_design", "test_protocol", "test_report", "sop", "work_instruction", "policy", "usability_risk", "software_risk", "security_risk", "haz_soe_software", "haz_soe_security", "hazardous_situation", "harm", "usability_plan", "use_specification", "task_analysis", "usability_evaluation", "summative_evaluation", "risk_management_plan", "software_development_plan", "software_maintenance_plan", "soup_register", "anomaly", "cybersecurity_plan", "sbom", "clinical_evaluation_plan", "clinical_evaluation_report", "post_market_surveillance_plan", "post_market_feedback", "labeling", "product_development_plan", "intended_use", "release_plan", "design_review", "release_notes", "supplier", "audit_schedule", "audit_report", "management_review", "report"]>;
1574
- declare const DocumentStatusSchema: z.ZodEnum<["draft", "in_review", "approved", "obsolete", "example"]>;
1575
- declare const LinkTypeSchema: z.ZodEnum<["derives_from", "implements", "verified_by", "mitigates", "parent_of", "related_to", "leads_to", "results_in", "analyzes"]>;
1576
- declare const AcceptabilityStatusSchema: z.ZodEnum<["acceptable", "review_required", "unacceptable"]>;
1577
-
1578
1755
  /**
1579
1756
  * Document type constants for QMS and Device bounded contexts.
1580
1757
  *
1581
1758
  * QMS documents are company-wide quality procedures.
1582
1759
  * Device documents are product-specific documentation.
1583
1760
  */
1584
- declare const QMS_DOCUMENT_TYPES: readonly ["sop", "policy", "work_instruction", "supplier", "report"];
1585
- declare const DEVICE_DOCUMENT_TYPES: readonly ["user_need", "requirement", "architecture", "detailed_design", "test_protocol", "test_report", "usability_risk", "software_risk", "security_risk", "hazardous_situation", "harm", "haz_soe_software", "haz_soe_security", "usability_plan", "use_specification", "task_analysis", "usability_evaluation", "summative_evaluation", "risk_management_plan", "software_development_plan", "software_maintenance_plan", "soup_register", "anomaly", "cybersecurity_plan", "sbom", "clinical_evaluation_plan", "clinical_evaluation_report", "post_market_surveillance_plan", "post_market_feedback", "labeling", "product_development_plan", "intended_use", "release_plan", "design_review", "release_notes"];
1761
+ declare const QMS_DOCUMENT_TYPES: readonly ["sop", "policy", "work_instruction", "supplier", "audit_schedule", "audit_report", "management_review"];
1762
+ declare const DEVICE_DOCUMENT_TYPES: readonly ["user_need", "requirement", "architecture", "detailed_design", "test_protocol", "test_report", "usability_risk", "software_risk", "security_risk", "hazardous_situation", "harm", "haz_soe_software", "haz_soe_security", "hazard_category", "usability_plan", "use_specification", "task_analysis", "usability_evaluation", "summative_evaluation", "risk_management_plan", "software_development_plan", "software_maintenance_plan", "soup_register", "anomaly", "cybersecurity_plan", "sbom", "clinical_evaluation_plan", "clinical_evaluation_report", "post_market_surveillance_plan", "post_market_feedback", "labeling", "product_development_plan", "intended_use", "release_plan", "design_review", "release_notes", "software_test_plan"];
1586
1763
  type QmsDocumentType = (typeof QMS_DOCUMENT_TYPES)[number];
1587
1764
  type DeviceDocumentType = (typeof DEVICE_DOCUMENT_TYPES)[number];
1588
1765
  /**
@@ -1632,7 +1809,7 @@ declare const REQUIRED_SECTIONS: Partial<Record<DocumentType, string[]>>;
1632
1809
  * all frontmatter schemas added since that script was last maintained.
1633
1810
  *
1634
1811
  * Document types without a dedicated schema (architecture, detailed_design,
1635
- * sop, work_instruction, policy, supplier, report) use only base frontmatter
1812
+ * sop, work_instruction, policy, supplier) use only base frontmatter
1636
1813
  * fields (id, title, status, type, author, reviewers, approvers) and are
1637
1814
  * NOT included here — callers should fall back to a generic base schema.
1638
1815
  */
@@ -1641,14 +1818,73 @@ declare const REQUIRED_SECTIONS: Partial<Record<DocumentType, string[]>>;
1641
1818
  * Maps document type strings to their Zod frontmatter validation schema.
1642
1819
  *
1643
1820
  * Document types not listed here (architecture, detailed_design, sop,
1644
- * work_instruction, policy, supplier, report) have no type-specific schema
1821
+ * work_instruction, policy, supplier) have no type-specific schema
1645
1822
  * and rely on the generic base frontmatter fields only.
1646
1823
  */
1647
- declare const SCHEMA_MAP: Partial<Record<string, z.ZodObject<z.ZodRawShape>>>;
1824
+ declare const SCHEMA_MAP: Partial<Record<string, z.ZodType>>;
1648
1825
  /**
1649
1826
  * Returns the Zod frontmatter schema for a given document type, or
1650
1827
  * `undefined` if the type uses only base frontmatter fields.
1651
1828
  */
1652
- declare function getSchemaForDocumentType(type: string): z.ZodObject<z.ZodRawShape> | undefined;
1829
+ declare function getSchemaForDocumentType(type: string): z.ZodType | undefined;
1830
+
1831
+ /**
1832
+ * Document Structure Validator (pure — no I/O)
1833
+ *
1834
+ * Validates markdown documents against PactoSigna's ISO 13485 document format:
1835
+ * frontmatter schemas, folder placement, ID prefix conventions, and required sections.
1836
+ */
1837
+ interface StructureError {
1838
+ code: string;
1839
+ message: string;
1840
+ field?: string;
1841
+ }
1842
+ interface StructureWarning {
1843
+ code: string;
1844
+ message: string;
1845
+ }
1846
+ interface ValidationResult {
1847
+ path: string;
1848
+ documentId: string | null;
1849
+ docType: string | null;
1850
+ errors: StructureError[];
1851
+ warnings: StructureWarning[];
1852
+ }
1853
+ /**
1854
+ * Validate a single markdown document's content against its expected schema.
1855
+ *
1856
+ * @param content - Raw file content (including frontmatter)
1857
+ * @param filePath - Repo-relative path (e.g. 'docs/software/requirements/SRS-001.md')
1858
+ * @returns Validation result with errors and warnings
1859
+ */
1860
+ declare function validateDocument(content: string, filePath: string): ValidationResult;
1861
+
1862
+ /**
1863
+ * Directory Structure Validator (I/O — uses node:fs)
1864
+ *
1865
+ * Walks a directory tree and validates all markdown documents found within it.
1866
+ */
1867
+
1868
+ interface DirectoryValidationResult {
1869
+ results: ValidationResult[];
1870
+ summary: {
1871
+ total: number;
1872
+ passed: number;
1873
+ failed: number;
1874
+ warnings: number;
1875
+ };
1876
+ orphanFolders: string[];
1877
+ strayFiles: string[];
1878
+ }
1879
+ /**
1880
+ * Validate all documents in a directory tree.
1881
+ *
1882
+ * @param dirPath - Absolute or relative path to the docs root
1883
+ * @param options - Optional exclusion list (path prefix matching)
1884
+ * @returns Aggregated results with summary and directory-level checks
1885
+ */
1886
+ declare function validateDirectory(dirPath: string, options?: {
1887
+ exclude?: string[];
1888
+ }): DirectoryValidationResult;
1653
1889
 
1654
- export { AcceptabilityStatusSchema, type AnomalyCategory, AnomalyCategorySchema, type AnomalyDisposition, AnomalyDispositionSchema, type AnomalyFrontmatter, AnomalyFrontmatterSchema, type AnomalySeverity, AnomalySeveritySchema, type AuditFinding, type AuditFindingClassification, AuditFindingClassificationSchema, AuditFindingSchema, type AuditReportFrontmatter, AuditReportFrontmatterSchema, type AuditScheduleFrontmatter, AuditScheduleFrontmatterSchema, type AuditStatus, AuditStatusSchema, CHANGE_DOCUMENT_TYPES, type ChangeDocumentType, type ClinicalEvaluationPlanFrontmatter, ClinicalEvaluationPlanFrontmatterSchema, type ClinicalEvaluationReportFrontmatter, ClinicalEvaluationReportFrontmatterSchema, type CybersecurityPlanFrontmatter, CybersecurityPlanFrontmatterSchema, DEVICE_DOCUMENT_TYPES, DOCUMENT_TYPES, type DesignReviewFrontmatter, DesignReviewFrontmatterSchema, type DeviceDocumentType, DocumentStatusSchema, DocumentTypeSchema, type HarmFrontmatter, HarmFrontmatterSchema, type HazardFrontmatter, HazardFrontmatterSchema, type HazardousSituationFrontmatter, HazardousSituationFrontmatterSchema, type IntendedUseFrontmatter, IntendedUseFrontmatterSchema, LINK_TYPES, type LabelingFrontmatter, LabelingFrontmatterSchema, LinkTypeSchema, type ManagementReviewAttendee, ManagementReviewAttendeeSchema, type ManagementReviewFrontmatter, ManagementReviewFrontmatterSchema, type Mitigation, MitigationSchema, MitigationTargetSchema, type PlannedAuditEntry, PlannedAuditEntrySchema, PostMarketFeedbackCategorySchema, type PostMarketFeedbackFrontmatter, PostMarketFeedbackFrontmatterSchema, PostMarketFeedbackSeveritySchema, type PostMarketSurveillancePlanFrontmatter, PostMarketSurveillancePlanFrontmatterSchema, type ProductDevelopmentPlanFrontmatter, ProductDevelopmentPlanFrontmatterSchema, QMS_DOCUMENT_TYPES, type QmsDocumentType, REQUIRED_SECTIONS, RegulatoryFrameworkSchema, type ReleaseNotesAudience, ReleaseNotesAudienceSchema, type ReleaseNotesFrontmatter, ReleaseNotesFrontmatterSchema, type ReleasePlanFrontmatter, ReleasePlanFrontmatterSchema, type ReleaseReviewConfig, ReleaseReviewConfigSchema, type RepoConfig, RepoConfigSchema, type RequirementFormat, RequirementFormatSchema, type RequirementFrontmatter, RequirementFrontmatterSchema, type RequirementFulfillmentType, RequirementFulfillmentTypeSchema, type RequirementType, RequirementTypeSchema, type RetentionPolicy, RetentionPolicySchema, type RiskDocumentStatus, RiskDocumentStatusSchema, type RiskEntryFrontmatter, RiskEntryFrontmatterSchema, RiskGapCodeSchema, RiskGapSeveritySchema, type RiskManagementPlanFrontmatter, RiskManagementPlanFrontmatterSchema, type RiskMatrixConfig, RiskMatrixConfigSchema, SCHEMA_MAP, SafetyClassSchema, type SbomFrontmatter, SbomFrontmatterSchema, type SoftwareDevelopmentPlanFrontmatter, SoftwareDevelopmentPlanFrontmatterSchema, type SoftwareMaintenancePlanFrontmatter, SoftwareMaintenancePlanFrontmatterSchema, type SoupRegisterFrontmatter, SoupRegisterFrontmatterSchema, type SummativeEvaluationFrontmatter, SummativeEvaluationFrontmatterSchema, type TaskAnalysisFrontmatter, TaskAnalysisFrontmatterSchema, type TestPhase, TestPhaseSchema, type TestProtocolFrontmatter, TestProtocolFrontmatterSchema, type TestReportFrontmatter, TestReportFrontmatterSchema, type UsabilityEvaluationFrontmatter, UsabilityEvaluationFrontmatterSchema, type UsabilityPlanFrontmatter, UsabilityPlanFrontmatterSchema, type UseSpecificationFrontmatter, UseSpecificationFrontmatterSchema, type UserNeedFrontmatter, UserNeedFrontmatterSchema, type UserNeedPriority, UserNeedPrioritySchema, getEffectiveRetentionYears, getSchemaForDocumentType, isChangeDocumentType, isDeviceDocumentType, isQmsDocumentType, isWithinRetentionPeriod };
1890
+ export { AcceptabilityStatusSchema, type AnomalyCategory, AnomalyCategorySchema, type AnomalyDisposition, AnomalyDispositionSchema, type AnomalyFrontmatter, AnomalyFrontmatterSchema, type AnomalySeverity, AnomalySeveritySchema, type AuditFinding, type AuditFindingClassification, AuditFindingClassificationSchema, AuditFindingSchema, type AuditReportFrontmatter, AuditReportFrontmatterSchema, type AuditScheduleFrontmatter, AuditScheduleFrontmatterSchema, type AuditStatus, AuditStatusSchema, CHANGE_DOCUMENT_TYPES, type ChangeDocumentType, type ClinicalEvaluationPlanFrontmatter, ClinicalEvaluationPlanFrontmatterSchema, type ClinicalEvaluationReportFrontmatter, ClinicalEvaluationReportFrontmatterSchema, type CybersecurityPlanFrontmatter, CybersecurityPlanFrontmatterSchema, DEVICE_DOCUMENT_TYPES, DOCUMENT_TYPES, type DesignReviewFrontmatter, DesignReviewFrontmatterSchema, type DeviceDocumentType, type DirectoryValidationResult, DocumentStatusSchema, DocumentTypeSchema, type HarmFrontmatter, HarmFrontmatterSchema, type HazardCategoryFrontmatter, HazardCategoryFrontmatterSchema, type HazardFrontmatter, HazardFrontmatterSchema, type HazardousSituationFrontmatter, HazardousSituationFrontmatterSchema, type IntendedUseFrontmatter, IntendedUseFrontmatterSchema, LINK_TYPES, type LabelingFrontmatter, LabelingFrontmatterSchema, LinkTypeSchema, type ManagementReviewAttendee, ManagementReviewAttendeeSchema, type ManagementReviewFrontmatter, ManagementReviewFrontmatterSchema, type Mitigation, MitigationSchema, MitigationTargetSchema, type PlannedAuditEntry, PlannedAuditEntrySchema, PostMarketFeedbackCategorySchema, type PostMarketFeedbackFrontmatter, PostMarketFeedbackFrontmatterSchema, PostMarketFeedbackSeveritySchema, type PostMarketSurveillancePlanFrontmatter, PostMarketSurveillancePlanFrontmatterSchema, type ProductDevelopmentPlanFrontmatter, ProductDevelopmentPlanFrontmatterSchema, QMS_DOCUMENT_TYPES, type QmsDocumentType, REQUIRED_SECTIONS, RegulatoryFrameworkSchema, type ReleaseNotesAudience, ReleaseNotesAudienceSchema, type ReleaseNotesFrontmatter, ReleaseNotesFrontmatterSchema, type ReleasePlanFrontmatter, ReleasePlanFrontmatterSchema, type ReleaseReviewConfig, ReleaseReviewConfigSchema, type RepoConfig, RepoConfigSchema, type RequirementFormat, RequirementFormatSchema, type RequirementFrontmatter, RequirementFrontmatterSchema, type RequirementFulfillmentType, RequirementFulfillmentTypeSchema, type RequirementType, RequirementTypeSchema, type RetentionPolicy, RetentionPolicySchema, type RiskDocumentStatus, RiskDocumentStatusSchema, type RiskEntryFrontmatter, RiskEntryFrontmatterSchema, RiskGapCodeSchema, RiskGapSeveritySchema, type RiskManagementPlanFrontmatter, RiskManagementPlanFrontmatterSchema, type RiskMatrixConfig, RiskMatrixConfigSchema, SCHEMA_MAP, SafetyClassSchema, type SbomFrontmatter, SbomFrontmatterSchema, type SoftwareDevelopmentPlanFrontmatter, SoftwareDevelopmentPlanFrontmatterSchema, type SoftwareMaintenancePlanFrontmatter, SoftwareMaintenancePlanFrontmatterSchema, type SoftwareTestPlanFrontmatter, SoftwareTestPlanFrontmatterSchema, type SoupRegisterFrontmatter, SoupRegisterFrontmatterSchema, type StructureError, type StructureWarning, type SummativeEvaluationFrontmatter, SummativeEvaluationFrontmatterSchema, type TaskAnalysisFrontmatter, TaskAnalysisFrontmatterSchema, type TestPhase, TestPhaseSchema, type TestProtocolFrontmatter, TestProtocolFrontmatterSchema, type TestReportFrontmatter, TestReportFrontmatterSchema, type UsabilityEvaluationFrontmatter, UsabilityEvaluationFrontmatterSchema, type UsabilityPlanFrontmatter, UsabilityPlanFrontmatterSchema, type UseSpecificationFrontmatter, UseSpecificationFrontmatterSchema, type UserNeedFrontmatter, UserNeedFrontmatterSchema, type UserNeedPriority, UserNeedPrioritySchema, type ValidationResult, getEffectiveRetentionYears, getSchemaForDocumentType, isChangeDocumentType, isDeviceDocumentType, isQmsDocumentType, isWithinRetentionPeriod, validateDirectory, validateDocument };