audit-tools 0.28.1 → 0.28.3

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 (124) hide show
  1. package/dist/audit/cli/auditStep.d.ts +12 -1
  2. package/dist/audit/cli/auditStep.d.ts.map +1 -1
  3. package/dist/audit/cli/auditStep.js +1 -0
  4. package/dist/audit/cli/auditStep.js.map +1 -1
  5. package/dist/audit/cli/confirmIntentStep.d.ts.map +1 -1
  6. package/dist/audit/cli/confirmIntentStep.js +46 -35
  7. package/dist/audit/cli/confirmIntentStep.js.map +1 -1
  8. package/dist/audit/cli/dispatch/packetFilter.d.ts +1 -1
  9. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  10. package/dist/audit/cli/nextStepHelpers.js +5 -1
  11. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  12. package/dist/audit/cli/steps.d.ts +2 -2
  13. package/dist/audit/contracts/workerSchemas.d.ts +14 -14
  14. package/dist/audit/contracts/wrapperResponse.d.ts +4 -4
  15. package/dist/audit/extractors/analyzers/types.d.ts +3 -1
  16. package/dist/audit/extractors/analyzers/types.d.ts.map +1 -1
  17. package/dist/audit/extractors/analyzers/types.js +10 -1
  18. package/dist/audit/extractors/analyzers/types.js.map +1 -1
  19. package/dist/audit/orchestrator/advanceTypes.d.ts +8 -0
  20. package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
  21. package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
  22. package/dist/audit/orchestrator/executorRunners.js +1 -1
  23. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  24. package/dist/audit/orchestrator/intentCheckpointExecutor.d.ts +19 -8
  25. package/dist/audit/orchestrator/intentCheckpointExecutor.d.ts.map +1 -1
  26. package/dist/audit/orchestrator/intentCheckpointExecutor.js +64 -40
  27. package/dist/audit/orchestrator/intentCheckpointExecutor.js.map +1 -1
  28. package/dist/audit/orchestrator/requeueCommand.d.ts +1 -1
  29. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  30. package/dist/audit/reporting/synthesis.js +91 -26
  31. package/dist/audit/reporting/synthesis.js.map +1 -1
  32. package/dist/audit/types/analyzerCapability.d.ts +69 -12
  33. package/dist/audit/types/analyzerCapability.d.ts.map +1 -1
  34. package/dist/audit/types/analyzerCapability.js +25 -1
  35. package/dist/audit/types/analyzerCapability.js.map +1 -1
  36. package/dist/audit/types/auditScope.d.ts +51 -12
  37. package/dist/audit/types/auditScope.d.ts.map +1 -1
  38. package/dist/audit/types/auditScope.js +49 -1
  39. package/dist/audit/types/auditScope.js.map +1 -1
  40. package/dist/audit/types/auditState.d.ts +60 -11
  41. package/dist/audit/types/auditState.d.ts.map +1 -1
  42. package/dist/audit/types/auditState.js +24 -1
  43. package/dist/audit/types/auditState.js.map +1 -1
  44. package/dist/audit/types/flowCoverage.d.ts +65 -8
  45. package/dist/audit/types/flowCoverage.d.ts.map +1 -1
  46. package/dist/audit/types/flowCoverage.js +21 -0
  47. package/dist/audit/types/flowCoverage.js.map +1 -1
  48. package/dist/audit/types/reviewPlanning.d.ts +2 -2
  49. package/dist/audit/types.d.ts +12 -12
  50. package/dist/remediate/contractPipeline/artifactStore.d.ts +7 -0
  51. package/dist/remediate/contractPipeline/artifactStore.d.ts.map +1 -1
  52. package/dist/remediate/contractPipeline/artifactStore.js +13 -1
  53. package/dist/remediate/contractPipeline/artifactStore.js.map +1 -1
  54. package/dist/remediate/contractPipeline/semanticProjection.d.ts.map +1 -1
  55. package/dist/remediate/contractPipeline/semanticProjection.js +36 -14
  56. package/dist/remediate/contractPipeline/semanticProjection.js.map +1 -1
  57. package/dist/remediate/index.d.ts.map +1 -1
  58. package/dist/remediate/index.js +7 -3
  59. package/dist/remediate/index.js.map +1 -1
  60. package/dist/remediate/phases/close.d.ts.map +1 -1
  61. package/dist/remediate/phases/close.js +27 -8
  62. package/dist/remediate/phases/close.js.map +1 -1
  63. package/dist/remediate/state/itemStatus.d.ts +5 -3
  64. package/dist/remediate/state/itemStatus.d.ts.map +1 -1
  65. package/dist/remediate/state/itemStatus.js +7 -3
  66. package/dist/remediate/state/itemStatus.js.map +1 -1
  67. package/dist/remediate/state/types.d.ts +7 -2
  68. package/dist/remediate/state/types.d.ts.map +1 -1
  69. package/dist/remediate/state/types.js +7 -0
  70. package/dist/remediate/state/types.js.map +1 -1
  71. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  72. package/dist/remediate/steps/contractPipeline.js +1 -7
  73. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  74. package/dist/remediate/steps/dispatch.d.ts +109 -1
  75. package/dist/remediate/steps/dispatch.d.ts.map +1 -1
  76. package/dist/remediate/steps/dispatch.js +370 -55
  77. package/dist/remediate/steps/dispatch.js.map +1 -1
  78. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  79. package/dist/remediate/steps/nextStep.js +215 -21
  80. package/dist/remediate/steps/nextStep.js.map +1 -1
  81. package/dist/remediate/steps/prompts.d.ts +12 -0
  82. package/dist/remediate/steps/prompts.d.ts.map +1 -1
  83. package/dist/remediate/steps/prompts.js +61 -1
  84. package/dist/remediate/steps/prompts.js.map +1 -1
  85. package/dist/remediate/steps/rollingSession.d.ts.map +1 -1
  86. package/dist/remediate/steps/rollingSession.js +59 -7
  87. package/dist/remediate/steps/rollingSession.js.map +1 -1
  88. package/dist/remediate/steps/types.d.ts +10 -1
  89. package/dist/remediate/steps/types.d.ts.map +1 -1
  90. package/dist/remediate/steps/types.js.map +1 -1
  91. package/dist/remediate/validation/artifacts.d.ts.map +1 -1
  92. package/dist/remediate/validation/artifacts.js +5 -2
  93. package/dist/remediate/validation/artifacts.js.map +1 -1
  94. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  95. package/dist/remediate/validation/contractPipelineGates.js +45 -8
  96. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  97. package/dist/shared/engine/obligationEngine.d.ts +16 -5
  98. package/dist/shared/engine/obligationEngine.d.ts.map +1 -1
  99. package/dist/shared/engine/obligationEngine.js +21 -0
  100. package/dist/shared/engine/obligationEngine.js.map +1 -1
  101. package/dist/shared/index.d.ts +5 -3
  102. package/dist/shared/index.d.ts.map +1 -1
  103. package/dist/shared/index.js +5 -3
  104. package/dist/shared/index.js.map +1 -1
  105. package/dist/shared/intent/freeFormIntentInterpreter.d.ts.map +1 -1
  106. package/dist/shared/intent/freeFormIntentInterpreter.js +5 -1
  107. package/dist/shared/intent/freeFormIntentInterpreter.js.map +1 -1
  108. package/dist/shared/providers/openAiCompatibleProvider.d.ts +5 -2
  109. package/dist/shared/providers/openAiCompatibleProvider.d.ts.map +1 -1
  110. package/dist/shared/providers/openAiCompatibleProvider.js +86 -25
  111. package/dist/shared/providers/openAiCompatibleProvider.js.map +1 -1
  112. package/dist/shared/types/intentCheckpoint.d.ts +151 -34
  113. package/dist/shared/types/intentCheckpoint.d.ts.map +1 -1
  114. package/dist/shared/types/intentCheckpoint.js +113 -1
  115. package/dist/shared/types/intentCheckpoint.js.map +1 -1
  116. package/dist/shared/types/remediationOutcome.d.ts +203 -24
  117. package/dist/shared/types/remediationOutcome.d.ts.map +1 -1
  118. package/dist/shared/types/remediationOutcome.js +65 -1
  119. package/dist/shared/types/remediationOutcome.js.map +1 -1
  120. package/dist/shared/types/sessionConfig.d.ts +8 -2
  121. package/dist/shared/types/sessionConfig.d.ts.map +1 -1
  122. package/dist/shared/types/sessionConfig.js +2 -0
  123. package/dist/shared/types/sessionConfig.js.map +1 -1
  124. package/package.json +1 -1
@@ -1,2 +1,25 @@
1
- export {};
1
+ import { z } from "zod";
2
+ import { ObligationSchema } from "audit-tools/shared";
3
+ export const AuditTopLevelStatusSchema = z.enum([
4
+ "not_started",
5
+ "active",
6
+ "blocked",
7
+ "complete",
8
+ ]);
9
+ export const AuditObligationSchema = ObligationSchema;
10
+ export const AuditStateSchema = z
11
+ .object({
12
+ status: AuditTopLevelStatusSchema,
13
+ last_executor: z.string().optional(),
14
+ last_obligation: z.string().optional(),
15
+ blockers: z.array(z.string()).optional(),
16
+ obligations: z.array(AuditObligationSchema),
17
+ /**
18
+ * Set when the rolling dispatch engine fires a partial-completion terminal
19
+ * (empty pool or livelock). Allows synthesis to proceed on partial coverage
20
+ * without hard-gating on `audit_tasks_completed`.
21
+ */
22
+ partial_coverage_terminal: z.boolean().optional(),
23
+ })
24
+ .strict();
2
25
  //# sourceMappingURL=auditState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auditState.js","sourceRoot":"","sources":["../../../src/audit/types/auditState.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"auditState.js","sourceRoot":"","sources":["../../../src/audit/types/auditState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,aAAa;IACb,QAAQ;IACR,SAAS;IACT,UAAU;CACX,CAAC,CAAC;AAQH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAGtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,MAAM,EAAE,yBAAyB;IACjC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAC3C;;;;OAIG;IACH,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClD,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -1,16 +1,73 @@
1
+ import { z } from "zod";
1
2
  export declare const FLOW_COVERAGE_STATUSES: readonly ["pending", "partial", "complete"];
2
- export type FlowCoverageStatus = (typeof FLOW_COVERAGE_STATUSES)[number];
3
+ export declare const FlowCoverageStatusSchema: z.ZodEnum<["pending", "partial", "complete"]>;
4
+ export type FlowCoverageStatus = z.infer<typeof FlowCoverageStatusSchema>;
3
5
  /** Coverage for one critical flow across the lenses the audit expects to see. */
4
- export interface FlowCoverageRecord {
6
+ export declare const FlowCoverageRecordSchema: z.ZodObject<{
7
+ flow_id: z.ZodString;
8
+ paths: z.ZodArray<z.ZodString, "many">;
9
+ required_lenses: z.ZodArray<z.ZodString, "many">;
10
+ completed_lenses: z.ZodArray<z.ZodString, "many">;
11
+ status: z.ZodEnum<["pending", "partial", "complete"]>;
12
+ notes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
13
+ }, "strict", z.ZodTypeAny, {
14
+ status: "partial" | "complete" | "pending";
15
+ paths: string[];
16
+ required_lenses: string[];
17
+ completed_lenses: string[];
5
18
  flow_id: string;
19
+ notes?: string[] | undefined;
20
+ }, {
21
+ status: "partial" | "complete" | "pending";
6
22
  paths: string[];
7
23
  required_lenses: string[];
8
24
  completed_lenses: string[];
9
- status: FlowCoverageStatus;
10
- notes?: string[];
11
- }
25
+ flow_id: string;
26
+ notes?: string[] | undefined;
27
+ }>;
28
+ export type FlowCoverageRecord = z.infer<typeof FlowCoverageRecordSchema>;
12
29
  /** Aggregated flow coverage written beside the critical flow manifest. */
13
- export interface FlowCoverageManifest {
14
- flows: FlowCoverageRecord[];
15
- }
30
+ export declare const FlowCoverageManifestSchema: z.ZodObject<{
31
+ flows: z.ZodArray<z.ZodObject<{
32
+ flow_id: z.ZodString;
33
+ paths: z.ZodArray<z.ZodString, "many">;
34
+ required_lenses: z.ZodArray<z.ZodString, "many">;
35
+ completed_lenses: z.ZodArray<z.ZodString, "many">;
36
+ status: z.ZodEnum<["pending", "partial", "complete"]>;
37
+ notes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
38
+ }, "strict", z.ZodTypeAny, {
39
+ status: "partial" | "complete" | "pending";
40
+ paths: string[];
41
+ required_lenses: string[];
42
+ completed_lenses: string[];
43
+ flow_id: string;
44
+ notes?: string[] | undefined;
45
+ }, {
46
+ status: "partial" | "complete" | "pending";
47
+ paths: string[];
48
+ required_lenses: string[];
49
+ completed_lenses: string[];
50
+ flow_id: string;
51
+ notes?: string[] | undefined;
52
+ }>, "many">;
53
+ }, "strict", z.ZodTypeAny, {
54
+ flows: {
55
+ status: "partial" | "complete" | "pending";
56
+ paths: string[];
57
+ required_lenses: string[];
58
+ completed_lenses: string[];
59
+ flow_id: string;
60
+ notes?: string[] | undefined;
61
+ }[];
62
+ }, {
63
+ flows: {
64
+ status: "partial" | "complete" | "pending";
65
+ paths: string[];
66
+ required_lenses: string[];
67
+ completed_lenses: string[];
68
+ flow_id: string;
69
+ notes?: string[] | undefined;
70
+ }[];
71
+ }>;
72
+ export type FlowCoverageManifest = z.infer<typeof FlowCoverageManifestSchema>;
16
73
  //# sourceMappingURL=flowCoverage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowCoverage.d.ts","sourceRoot":"","sources":["../../../src/audit/types/flowCoverage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,6CAIzB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,0EAA0E;AAC1E,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B"}
1
+ {"version":3,"file":"flowCoverage.d.ts","sourceRoot":"","sources":["../../../src/audit/types/flowCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB,6CAIzB,CAAC;AACX,eAAO,MAAM,wBAAwB,+CAAiC,CAAC;AACvE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,iFAAiF;AACjF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAW1B,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,0EAA0E;AAC1E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI5B,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -1,6 +1,27 @@
1
+ import { z } from "zod";
1
2
  export const FLOW_COVERAGE_STATUSES = [
2
3
  "pending",
3
4
  "partial",
4
5
  "complete",
5
6
  ];
7
+ export const FlowCoverageStatusSchema = z.enum(FLOW_COVERAGE_STATUSES);
8
+ /** Coverage for one critical flow across the lenses the audit expects to see. */
9
+ export const FlowCoverageRecordSchema = z
10
+ .object({
11
+ flow_id: z.string(),
12
+ paths: z.array(z.string()),
13
+ // Producer emits custom lens names too, so these stay free strings (the old
14
+ // JSON schema's canonical-lens $ref was over-strict).
15
+ required_lenses: z.array(z.string()),
16
+ completed_lenses: z.array(z.string()),
17
+ status: FlowCoverageStatusSchema,
18
+ notes: z.array(z.string()).optional(),
19
+ })
20
+ .strict();
21
+ /** Aggregated flow coverage written beside the critical flow manifest. */
22
+ export const FlowCoverageManifestSchema = z
23
+ .object({
24
+ flows: z.array(FlowCoverageRecordSchema),
25
+ })
26
+ .strict();
6
27
  //# sourceMappingURL=flowCoverage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowCoverage.js","sourceRoot":"","sources":["../../../src/audit/types/flowCoverage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS;IACT,SAAS;IACT,UAAU;CACF,CAAC"}
1
+ {"version":3,"file":"flowCoverage.js","sourceRoot":"","sources":["../../../src/audit/types/flowCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS;IACT,SAAS;IACT,UAAU;CACF,CAAC;AACX,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAGvE,iFAAiF;AACjF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,4EAA4E;IAC5E,sDAAsD;IACtD,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACrC,MAAM,EAAE,wBAAwB;IAChC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,0EAA0E;AAC1E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;CACzC,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -127,6 +127,7 @@ export declare const ReviewPacketSchema: z.ZodObject<{
127
127
  }, "strip", z.ZodTypeAny, {
128
128
  unit_ids: string[];
129
129
  rationale: string;
130
+ lenses: string[];
130
131
  file_paths: string[];
131
132
  file_line_counts: Record<string, number>;
132
133
  priority: "high" | "low" | "medium";
@@ -134,7 +135,6 @@ export declare const ReviewPacketSchema: z.ZodObject<{
134
135
  packet_id: string;
135
136
  task_ids: string[];
136
137
  pass_ids: string[];
137
- lenses: string[];
138
138
  quality: {
139
139
  cohesion_score: number;
140
140
  internal_edge_count: number;
@@ -156,6 +156,7 @@ export declare const ReviewPacketSchema: z.ZodObject<{
156
156
  }, {
157
157
  unit_ids: string[];
158
158
  rationale: string;
159
+ lenses: string[];
159
160
  file_paths: string[];
160
161
  file_line_counts: Record<string, number>;
161
162
  priority: "high" | "low" | "medium";
@@ -163,7 +164,6 @@ export declare const ReviewPacketSchema: z.ZodObject<{
163
164
  packet_id: string;
164
165
  task_ids: string[];
165
166
  pass_ids: string[];
166
- lenses: string[];
167
167
  quality: {
168
168
  cohesion_score: number;
169
169
  internal_edge_count: number;
@@ -323,6 +323,7 @@ export declare const AuditTaskSchema: z.ZodObject<{
323
323
  pass_id: string;
324
324
  file_paths: string[];
325
325
  status?: "complete" | "pending" | undefined;
326
+ completed_at?: string | undefined;
326
327
  file_line_counts?: Record<string, number> | undefined;
327
328
  line_ranges?: {
328
329
  path: string;
@@ -334,7 +335,6 @@ export declare const AuditTaskSchema: z.ZodObject<{
334
335
  token_estimate?: number | undefined;
335
336
  risk_estimate?: number | undefined;
336
337
  tags?: string[] | undefined;
337
- completed_at?: string | undefined;
338
338
  completion_reason?: string | undefined;
339
339
  }, {
340
340
  unit_id: string;
@@ -344,6 +344,7 @@ export declare const AuditTaskSchema: z.ZodObject<{
344
344
  pass_id: string;
345
345
  file_paths: string[];
346
346
  status?: "complete" | "pending" | undefined;
347
+ completed_at?: string | undefined;
347
348
  file_line_counts?: Record<string, number> | undefined;
348
349
  line_ranges?: {
349
350
  path: string;
@@ -355,7 +356,6 @@ export declare const AuditTaskSchema: z.ZodObject<{
355
356
  token_estimate?: number | undefined;
356
357
  risk_estimate?: number | undefined;
357
358
  tags?: string[] | undefined;
358
- completed_at?: string | undefined;
359
359
  completion_reason?: string | undefined;
360
360
  }>;
361
361
  export type AuditTask = z.infer<typeof AuditTaskSchema>;
@@ -416,6 +416,7 @@ export declare const AuditVerificationSchema: z.ZodObject<{
416
416
  pass_id: string;
417
417
  file_paths: string[];
418
418
  status?: "complete" | "pending" | undefined;
419
+ completed_at?: string | undefined;
419
420
  file_line_counts?: Record<string, number> | undefined;
420
421
  line_ranges?: {
421
422
  path: string;
@@ -427,7 +428,6 @@ export declare const AuditVerificationSchema: z.ZodObject<{
427
428
  token_estimate?: number | undefined;
428
429
  risk_estimate?: number | undefined;
429
430
  tags?: string[] | undefined;
430
- completed_at?: string | undefined;
431
431
  completion_reason?: string | undefined;
432
432
  }, {
433
433
  unit_id: string;
@@ -437,6 +437,7 @@ export declare const AuditVerificationSchema: z.ZodObject<{
437
437
  pass_id: string;
438
438
  file_paths: string[];
439
439
  status?: "complete" | "pending" | undefined;
440
+ completed_at?: string | undefined;
440
441
  file_line_counts?: Record<string, number> | undefined;
441
442
  line_ranges?: {
442
443
  path: string;
@@ -448,7 +449,6 @@ export declare const AuditVerificationSchema: z.ZodObject<{
448
449
  token_estimate?: number | undefined;
449
450
  risk_estimate?: number | undefined;
450
451
  tags?: string[] | undefined;
451
- completed_at?: string | undefined;
452
452
  completion_reason?: string | undefined;
453
453
  }>, "many">>;
454
454
  }, "strip", z.ZodTypeAny, {
@@ -465,6 +465,7 @@ export declare const AuditVerificationSchema: z.ZodObject<{
465
465
  pass_id: string;
466
466
  file_paths: string[];
467
467
  status?: "complete" | "pending" | undefined;
468
+ completed_at?: string | undefined;
468
469
  file_line_counts?: Record<string, number> | undefined;
469
470
  line_ranges?: {
470
471
  path: string;
@@ -476,7 +477,6 @@ export declare const AuditVerificationSchema: z.ZodObject<{
476
477
  token_estimate?: number | undefined;
477
478
  risk_estimate?: number | undefined;
478
479
  tags?: string[] | undefined;
479
- completed_at?: string | undefined;
480
480
  completion_reason?: string | undefined;
481
481
  }[] | undefined;
482
482
  }, {
@@ -493,6 +493,7 @@ export declare const AuditVerificationSchema: z.ZodObject<{
493
493
  pass_id: string;
494
494
  file_paths: string[];
495
495
  status?: "complete" | "pending" | undefined;
496
+ completed_at?: string | undefined;
496
497
  file_line_counts?: Record<string, number> | undefined;
497
498
  line_ranges?: {
498
499
  path: string;
@@ -504,7 +505,6 @@ export declare const AuditVerificationSchema: z.ZodObject<{
504
505
  token_estimate?: number | undefined;
505
506
  risk_estimate?: number | undefined;
506
507
  tags?: string[] | undefined;
507
- completed_at?: string | undefined;
508
508
  completion_reason?: string | undefined;
509
509
  }[] | undefined;
510
510
  }>;
@@ -794,6 +794,7 @@ export declare const AuditResultSchema: z.ZodObject<{
794
794
  pass_id: string;
795
795
  file_paths: string[];
796
796
  status?: "complete" | "pending" | undefined;
797
+ completed_at?: string | undefined;
797
798
  file_line_counts?: Record<string, number> | undefined;
798
799
  line_ranges?: {
799
800
  path: string;
@@ -805,7 +806,6 @@ export declare const AuditResultSchema: z.ZodObject<{
805
806
  token_estimate?: number | undefined;
806
807
  risk_estimate?: number | undefined;
807
808
  tags?: string[] | undefined;
808
- completed_at?: string | undefined;
809
809
  completion_reason?: string | undefined;
810
810
  }, {
811
811
  unit_id: string;
@@ -815,6 +815,7 @@ export declare const AuditResultSchema: z.ZodObject<{
815
815
  pass_id: string;
816
816
  file_paths: string[];
817
817
  status?: "complete" | "pending" | undefined;
818
+ completed_at?: string | undefined;
818
819
  file_line_counts?: Record<string, number> | undefined;
819
820
  line_ranges?: {
820
821
  path: string;
@@ -826,7 +827,6 @@ export declare const AuditResultSchema: z.ZodObject<{
826
827
  token_estimate?: number | undefined;
827
828
  risk_estimate?: number | undefined;
828
829
  tags?: string[] | undefined;
829
- completed_at?: string | undefined;
830
830
  completion_reason?: string | undefined;
831
831
  }>, "many">>;
832
832
  }, "strip", z.ZodTypeAny, {
@@ -843,6 +843,7 @@ export declare const AuditResultSchema: z.ZodObject<{
843
843
  pass_id: string;
844
844
  file_paths: string[];
845
845
  status?: "complete" | "pending" | undefined;
846
+ completed_at?: string | undefined;
846
847
  file_line_counts?: Record<string, number> | undefined;
847
848
  line_ranges?: {
848
849
  path: string;
@@ -854,7 +855,6 @@ export declare const AuditResultSchema: z.ZodObject<{
854
855
  token_estimate?: number | undefined;
855
856
  risk_estimate?: number | undefined;
856
857
  tags?: string[] | undefined;
857
- completed_at?: string | undefined;
858
858
  completion_reason?: string | undefined;
859
859
  }[] | undefined;
860
860
  }, {
@@ -871,6 +871,7 @@ export declare const AuditResultSchema: z.ZodObject<{
871
871
  pass_id: string;
872
872
  file_paths: string[];
873
873
  status?: "complete" | "pending" | undefined;
874
+ completed_at?: string | undefined;
874
875
  file_line_counts?: Record<string, number> | undefined;
875
876
  line_ranges?: {
876
877
  path: string;
@@ -882,7 +883,6 @@ export declare const AuditResultSchema: z.ZodObject<{
882
883
  token_estimate?: number | undefined;
883
884
  risk_estimate?: number | undefined;
884
885
  tags?: string[] | undefined;
885
- completed_at?: string | undefined;
886
886
  completion_reason?: string | undefined;
887
887
  }[] | undefined;
888
888
  }>>;
@@ -960,6 +960,7 @@ export declare const AuditResultSchema: z.ZodObject<{
960
960
  pass_id: string;
961
961
  file_paths: string[];
962
962
  status?: "complete" | "pending" | undefined;
963
+ completed_at?: string | undefined;
963
964
  file_line_counts?: Record<string, number> | undefined;
964
965
  line_ranges?: {
965
966
  path: string;
@@ -971,7 +972,6 @@ export declare const AuditResultSchema: z.ZodObject<{
971
972
  token_estimate?: number | undefined;
972
973
  risk_estimate?: number | undefined;
973
974
  tags?: string[] | undefined;
974
- completed_at?: string | undefined;
975
975
  completion_reason?: string | undefined;
976
976
  }[] | undefined;
977
977
  } | undefined;
@@ -1052,6 +1052,7 @@ export declare const AuditResultSchema: z.ZodObject<{
1052
1052
  pass_id: string;
1053
1053
  file_paths: string[];
1054
1054
  status?: "complete" | "pending" | undefined;
1055
+ completed_at?: string | undefined;
1055
1056
  file_line_counts?: Record<string, number> | undefined;
1056
1057
  line_ranges?: {
1057
1058
  path: string;
@@ -1063,7 +1064,6 @@ export declare const AuditResultSchema: z.ZodObject<{
1063
1064
  token_estimate?: number | undefined;
1064
1065
  risk_estimate?: number | undefined;
1065
1066
  tags?: string[] | undefined;
1066
- completed_at?: string | undefined;
1067
1067
  completion_reason?: string | undefined;
1068
1068
  }[] | undefined;
1069
1069
  } | undefined;
@@ -17,6 +17,13 @@ export interface ContractPipelineArtifactEnvelope {
17
17
  dependency_hashes: Partial<Record<ContractPipelineArtifactName, string>>;
18
18
  payload: unknown;
19
19
  }
20
+ /**
21
+ * Canonical predicate for a stored content-hash envelope. Single-sourced here so
22
+ * any consumer (the contract-pipeline ingest path, the `validate-artifact` CLI)
23
+ * unwraps with identical structural rules and cannot drift. A plain payload that
24
+ * happens to carry an `artifact_name` but no `content_hash` is NOT an envelope.
25
+ */
26
+ export declare function isEnvelope(value: unknown): value is ContractPipelineArtifactEnvelope;
20
27
  export declare function contractPipelineDir(artifactsDir: string): string;
21
28
  /**
22
29
  * Path to the optional Path-A seed file. Present only when the intake source
@@ -1 +1 @@
1
- {"version":3,"file":"artifactStore.d.ts","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/artifactStore.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,iBAAiB,mWAgBpB,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAM9E,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,4BAA4B,EAAE,4BAA4B,EAAE,CAiC/F,CAAC;AAIF,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,4BAA4B,CAAC;IAC5C,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,GACjC,MAAM,CAER;AAiBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gCAAgC,GACzC,MAAM,CAKR;AAID,wEAAwE;AACxE,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,EAClC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,gCAAgC,CAAC,CAyB3C;AAED,0DAA0D;AAC1D,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAMlD;AAED,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACtC,gEAAgE;IAChE,MAAM,EAAE,4BAA4B,EAAE,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,CAAC,CAqD1B;AAED,8DAA8D;AAC9D,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAET"}
1
+ {"version":3,"file":"artifactStore.d.ts","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/artifactStore.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,iBAAiB,mWAgBpB,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAM9E,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,4BAA4B,EAAE,4BAA4B,EAAE,CAiC/F,CAAC;AAIF,MAAM,WAAW,gCAAgC;IAC/C,aAAa,EAAE,4BAA4B,CAAC;IAC5C,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,gCAAgC,CAO3C;AAID,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,GACjC,MAAM,CAER;AAiBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gCAAgC,GACzC,MAAM,CAKR;AAID,wEAAwE;AACxE,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,EAClC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,gCAAgC,CAAC,CAyB3C;AAED,0DAA0D;AAC1D,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAMlD;AAED,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACtC,gEAAgE;IAChE,MAAM,EAAE,4BAA4B,EAAE,CAAC;CACxC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,CAAC,CAqD1B;AAED,8DAA8D;AAC9D,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAET"}
@@ -12,7 +12,7 @@
12
12
  import { existsSync } from "node:fs";
13
13
  import { mkdir } from "node:fs/promises";
14
14
  import { join } from "node:path";
15
- import { hashContent, readOptionalJsonFile, writeJsonFile } from "audit-tools/shared";
15
+ import { hashContent, isRecord, readOptionalJsonFile, writeJsonFile } from "audit-tools/shared";
16
16
  import { semanticProjection, stableStringifyProjection, } from "./semanticProjection.js";
17
17
  // ── Artifact names ────────────────────────────────────────────────────────────
18
18
  export const CP_ARTIFACT_NAMES = [
@@ -69,6 +69,18 @@ export const DEPENDENCY_MAP = {
69
69
  "implementation_dag",
70
70
  ],
71
71
  };
72
+ /**
73
+ * Canonical predicate for a stored content-hash envelope. Single-sourced here so
74
+ * any consumer (the contract-pipeline ingest path, the `validate-artifact` CLI)
75
+ * unwraps with identical structural rules and cannot drift. A plain payload that
76
+ * happens to carry an `artifact_name` but no `content_hash` is NOT an envelope.
77
+ */
78
+ export function isEnvelope(value) {
79
+ return (isRecord(value) &&
80
+ typeof value.artifact_name === "string" &&
81
+ typeof value.content_hash === "string" &&
82
+ "payload" in value);
83
+ }
72
84
  // ── Helpers ───────────────────────────────────────────────────────────────────
73
85
  export function contractPipelineDir(artifactsDir) {
74
86
  return join(artifactsDir, "intake", "contract");
@@ -1 +1 @@
1
- {"version":3,"file":"artifactStore.js","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/artifactStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifactStore.js","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/artifactStore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"semanticProjection.d.ts","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/semanticProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAY,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAiDrC;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,4BAA4B,EAClC,OAAO,EAAE,OAAO,GACf,OAAO,CAmBT;AAED;;;;;GAKG"}
1
+ {"version":3,"file":"semanticProjection.d.ts","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/semanticProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAY,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAmErC;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,4BAA4B,EAClC,OAAO,EAAE,OAAO,GACf,OAAO,CAsBT;AAED;;;;;GAKG"}
@@ -63,6 +63,26 @@ function projectModuleContract(value) {
63
63
  }
64
64
  return out;
65
65
  }
66
+ /**
67
+ * Collapse cosmetic whitespace in every projected string (trim + runs → single
68
+ * space), recursively. A reflow / trailing-space / indentation edit to a contract
69
+ * field is not a semantic change, but without this it churns the projection hash
70
+ * and re-stales the downstream chain. Safe: the downstream gates/derivers match on
71
+ * word boundaries and substrings, which whitespace normalization never alters.
72
+ */
73
+ function normalizeWhitespaceDeep(value) {
74
+ if (typeof value === "string")
75
+ return value.replace(/\s+/g, " ").trim();
76
+ if (Array.isArray(value))
77
+ return value.map(normalizeWhitespaceDeep);
78
+ if (isRecord(value)) {
79
+ const out = {};
80
+ for (const [key, v] of Object.entries(value))
81
+ out[key] = normalizeWhitespaceDeep(v);
82
+ return out;
83
+ }
84
+ return value;
85
+ }
66
86
  /**
67
87
  * Project a contract-pipeline artifact payload to only its load-bearing
68
88
  * structure for downstream-staleness purposes. The universal provenance strip
@@ -77,21 +97,23 @@ export function semanticProjection(name, payload) {
77
97
  if (!isRecord(payload))
78
98
  return payload;
79
99
  const stripped = stripFields(payload, UNIVERSAL_NON_SEMANTIC_FIELDS);
80
- if (name === "finalized_module_contracts") {
81
- // Keep every top-level field (contract_version, goal_id, …) but narrow each
82
- // module entry to its derivable fields, so a reworded per-module rationale /
83
- // seam-prose edit projects identically while a changed interface / new
84
- // invariant does not. Narrowing entries (not the whole artifact) keeps the
85
- // projection conservative: any top-level field a downstream might read still
86
- // participates in staleness.
87
- if (!Array.isArray(stripped.module_contracts))
88
- return stripped;
89
- return {
90
- ...stripped,
91
- module_contracts: stripped.module_contracts.map(projectModuleContract),
92
- };
100
+ // Both the intermediate `module_contracts` and the `finalized_module_contracts`
101
+ // carry the same module-entry shape; narrow each entry to its derivable fields for
102
+ // BOTH so a reworded per-module rationale / a tweaked non-derivable array
103
+ // (side_effects / seam_adjustments / neighbor_needs) projects identically while a
104
+ // changed interface / new invariant does not. Keep every top-level field
105
+ // (contract_version, goal_id, …): the narrowing is per-entry, so any top-level
106
+ // field a downstream might read still participates in staleness.
107
+ if (name === "finalized_module_contracts" || name === "module_contracts") {
108
+ if (Array.isArray(stripped.module_contracts)) {
109
+ return normalizeWhitespaceDeep({
110
+ ...stripped,
111
+ module_contracts: stripped.module_contracts.map(projectModuleContract),
112
+ });
113
+ }
114
+ return normalizeWhitespaceDeep(stripped);
93
115
  }
94
- return stripped;
116
+ return normalizeWhitespaceDeep(stripped);
95
117
  }
96
118
  /**
97
119
  * The order-independent stable serialization used to hash a projection is the
@@ -1 +1 @@
1
- {"version":3,"file":"semanticProjection.js","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/semanticProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,6BAA6B,GAAsB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAExF;;;;;;;;;GASG;AACH,MAAM,gCAAgC,GAAsB;IAC1D,MAAM;IACN,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,eAAe;IACf,qBAAqB;CACtB,CAAC;AAEF,SAAS,WAAW,CAClB,MAA+B,EAC/B,MAAyB;IAEzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,gCAAgC,EAAE,CAAC;QACrD,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAkC,EAClC,OAAgB;IAEhB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC;IAErE,IAAI,IAAI,KAAK,4BAA4B,EAAE,CAAC;QAC1C,4EAA4E;QAC5E,6EAA6E;QAC7E,uEAAuE;QACvE,2EAA2E;QAC3E,6EAA6E;QAC7E,6BAA6B;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC/D,OAAO;YACL,GAAG,QAAQ;YACX,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,qBAAqB,CAAC;SACvE,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG"}
1
+ {"version":3,"file":"semanticProjection.js","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/semanticProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,6BAA6B,GAAsB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAExF;;;;;;;;;GASG;AACH,MAAM,gCAAgC,GAAsB;IAC1D,MAAM;IACN,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,eAAe;IACf,qBAAqB;CACtB,CAAC;AAEF,SAAS,WAAW,CAClB,MAA+B,EAC/B,MAAyB;IAEzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,gCAAgC,EAAE,CAAC;QACrD,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACpE,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAkC,EAClC,OAAgB;IAEhB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC;IAErE,gFAAgF;IAChF,mFAAmF;IACnF,0EAA0E;IAC1E,kFAAkF;IAClF,yEAAyE;IACzE,+EAA+E;IAC/E,iEAAiE;IACjE,IAAI,IAAI,KAAK,4BAA4B,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACzE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7C,OAAO,uBAAuB,CAAC;gBAC7B,GAAG,QAAQ;gBACX,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,qBAAqB,CAAC;aACvE,CAAC,CAAC;QACL,CAAC;QACD,OAAO,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/remediate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAoDjD,QAAA,MAAM,OAAO,SAAgB,CAAC;AA2R9B,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAEjD;AAUD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAU/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAuBR;AAYD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,MAAM,CAIR;AAED,wBAAgB,kBAAkB,CAChC,IAAI,GAAE;IACJ,GAAG,CAAC,EAAE,OAAO,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,GACL,MAAM,CAcR;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,EACxC,OAAO,SAAY,GAClB,IAAI,CAQN;AA4FD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,EACxC,OAAO,SAAY,EACnB,IAAI,SAAgB,GACnB,IAAI,CA4EN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/remediate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAqDjD,QAAA,MAAM,OAAO,SAAgB,CAAC;AA+R9B,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAEjD;AAUD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAU/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAuBR;AAYD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,MAAM,CAIR;AAED,wBAAgB,kBAAkB,CAChC,IAAI,GAAE;IACJ,GAAG,CAAC,EAAE,OAAO,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,GACL,MAAM,CAcR;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,EACxC,OAAO,SAAY,GAClB,IAAI,CAQN;AA4FD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,EACxC,OAAO,SAAY,EACnB,IAAI,SAAgB,GACnB,IAAI,CA4EN"}
@@ -10,7 +10,7 @@ import { mergeImplementResults, prepareImplementDispatch, } from "./steps/dispat
10
10
  import { advanceHostRolling } from "./steps/rollingSession.js";
11
11
  import { validateArtifacts } from "./validation/artifacts.js";
12
12
  import { CONTRACT_PIPELINE_VALIDATORS } from "./validation/contractPipeline.js";
13
- import { CP_ARTIFACT_NAMES, } from "./contractPipeline/artifactStore.js";
13
+ import { CP_ARTIFACT_NAMES, isEnvelope, } from "./contractPipeline/artifactStore.js";
14
14
  import { setQuotaStateDir, parseHostModelRoster, remediationArtifactsDir, mergeOpenCodeAgentPermissionRule, mergeOpenCodeGlobalPermissionRule, migrateOpenCodeGlobalExternalDirectory, withoutOpenCodeWildcard, } from "audit-tools/shared";
15
15
  // src/remediate/index.ts (source) or dist/remediate/index.js (built) → three
16
16
  // dirnames up is the package root, holding package.json + skills/ + opencode.json.
@@ -178,14 +178,18 @@ program
178
178
  console.log(JSON.stringify({ status: "error", message: `Could not read artifact input: ${err.message}` }, null, 2));
179
179
  process.exit(2);
180
180
  }
181
- let payload;
181
+ let parsed;
182
182
  try {
183
- payload = JSON.parse(raw);
183
+ parsed = JSON.parse(raw);
184
184
  }
185
185
  catch (err) {
186
186
  console.log(JSON.stringify({ status: "error", message: `Artifact is not valid JSON: ${err.message}` }, null, 2));
187
187
  process.exit(2);
188
188
  }
189
+ // Unwrap a stored content-hash envelope so the bare payload is validated
190
+ // against its contract; a plain payload validates as-is. Uses the canonical
191
+ // isEnvelope predicate so CLI self-check and ingest unwrap identically.
192
+ const payload = isEnvelope(parsed) ? parsed.payload : parsed;
189
193
  const issues = validator(payload, name);
190
194
  const errors = issues.filter((issue) => issue.severity === "error");
191
195
  console.log(JSON.stringify({