peaks-loop 4.0.0-beta → 4.0.0-beta.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 (179) hide show
  1. package/CHANGELOG.md +105 -87
  2. package/README-en.md +17 -4
  3. package/README.md +17 -4
  4. package/dist/src/cli/commands/asset-commands.d.ts +45 -0
  5. package/dist/src/cli/commands/asset-commands.js +404 -0
  6. package/dist/src/cli/commands/bee-commands.d.ts +26 -0
  7. package/dist/src/cli/commands/bee-commands.js +169 -0
  8. package/dist/src/cli/commands/{solo-commands.d.ts → code-commands.d.ts} +24 -24
  9. package/dist/src/cli/commands/{solo-commands.js → code-commands.js} +78 -78
  10. package/dist/src/cli/commands/core/skill-command.js +1 -1
  11. package/dist/src/cli/commands/dispatch-from-dag.js +1 -1
  12. package/dist/src/cli/commands/evolution-commands.d.ts +27 -0
  13. package/dist/src/cli/commands/evolution-commands.js +393 -0
  14. package/dist/src/cli/commands/hook-handle.js +7 -7
  15. package/dist/src/cli/commands/job-commands.js +2 -2
  16. package/dist/src/cli/commands/loop-commands.d.ts +19 -13
  17. package/dist/src/cli/commands/loop-commands.js +147 -13
  18. package/dist/src/cli/commands/sediment-commands.js +9 -0
  19. package/dist/src/cli/commands/session-auto-compact-hook-command.js +2 -2
  20. package/dist/src/cli/commands/skill-loop-engineering-readiness-commands.d.ts +67 -0
  21. package/dist/src/cli/commands/skill-loop-engineering-readiness-commands.js +173 -0
  22. package/dist/src/cli/commands/sub-agent-shared.d.ts +1 -1
  23. package/dist/src/cli/commands/user-touchpoint-commands.d.ts +4 -4
  24. package/dist/src/cli/commands/user-touchpoint-commands.js +14 -14
  25. package/dist/src/cli/commands/workflow-commands.js +22 -22
  26. package/dist/src/cli/program.js +23 -6
  27. package/dist/src/services/artifacts/repair-cycle-service.js +1 -1
  28. package/dist/src/services/audit/enforcers/active-skill-resolver.d.ts +1 -1
  29. package/dist/src/services/audit/enforcers/active-skill-resolver.js +1 -1
  30. package/dist/src/services/audit/enforcers/{solo-code-ban.d.ts → code-ban.d.ts} +6 -6
  31. package/dist/src/services/audit/enforcers/{solo-code-ban.js → code-ban.js} +6 -6
  32. package/dist/src/services/audit/red-line-catalog.d.ts +2 -2
  33. package/dist/src/services/audit/red-line-catalog.js +5 -5
  34. package/dist/src/services/audit/types.d.ts +2 -2
  35. package/dist/src/services/{solo → code}/auto-compact-orchestrator.d.ts +1 -1
  36. package/dist/src/services/{solo → code}/auto-compact-orchestrator.js +3 -3
  37. package/dist/src/services/{solo → code}/dag-orchestrator.d.ts +1 -1
  38. package/dist/src/services/{solo → code}/dag-orchestrator.js +1 -1
  39. package/dist/src/services/{solo → code}/emit-handoff.d.ts +1 -1
  40. package/dist/src/services/{solo → code}/emit-handoff.js +1 -1
  41. package/dist/src/services/{solo → code}/job-shape-decision.d.ts +1 -1
  42. package/dist/src/services/{solo → code}/job-shape-decision.js +5 -5
  43. package/dist/src/services/{solo → code}/mode-gate.d.ts +9 -9
  44. package/dist/src/services/{solo → code}/mode-gate.js +5 -5
  45. package/dist/src/services/{solo → code}/post-compact-detector.d.ts +3 -3
  46. package/dist/src/services/{solo → code}/post-compact-detector.js +4 -4
  47. package/dist/src/services/{solo → code}/step-08-gate.d.ts +4 -4
  48. package/dist/src/services/{solo → code}/step-08-gate.js +4 -4
  49. package/dist/src/services/{solo → code}/user-touchpoint-classifier.d.ts +1 -1
  50. package/dist/src/services/{solo → code}/user-touchpoint-classifier.js +1 -1
  51. package/dist/src/services/context/auto-compact-dispatcher.d.ts +2 -2
  52. package/dist/src/services/context/auto-compact-dispatcher.js +2 -2
  53. package/dist/src/services/context/auto-compact-types.d.ts +1 -1
  54. package/dist/src/services/crystallization/crystallization-service.d.ts +239 -0
  55. package/dist/src/services/crystallization/crystallization-service.js +397 -0
  56. package/dist/src/services/crystallization/crystallization-store.d.ts +75 -0
  57. package/dist/src/services/crystallization/crystallization-store.js +193 -0
  58. package/dist/src/services/crystallization/crystallization-types.d.ts +313 -0
  59. package/dist/src/services/crystallization/crystallization-types.js +299 -0
  60. package/dist/src/services/crystallization/evidence-brief-builder.d.ts +237 -0
  61. package/dist/src/services/crystallization/evidence-brief-builder.js +240 -0
  62. package/dist/src/services/dispatch/slice-dag.d.ts +2 -2
  63. package/dist/src/services/dispatch/test-tool-detection.d.ts +1 -1
  64. package/dist/src/services/dispatch/test-tool-detection.js +1 -1
  65. package/dist/src/services/evolution/evolution-service.d.ts +137 -0
  66. package/dist/src/services/evolution/evolution-service.js +281 -0
  67. package/dist/src/services/evolution/evolution-store.d.ts +57 -0
  68. package/dist/src/services/evolution/evolution-store.js +232 -0
  69. package/dist/src/services/evolution/evolution-types.d.ts +706 -0
  70. package/dist/src/services/evolution/evolution-types.js +286 -0
  71. package/dist/src/services/evolution/independent-evaluator-runner.d.ts +90 -0
  72. package/dist/src/services/evolution/independent-evaluator-runner.js +106 -0
  73. package/dist/src/services/evolution/regression-skeptic-runner.d.ts +64 -0
  74. package/dist/src/services/evolution/regression-skeptic-runner.js +113 -0
  75. package/dist/src/services/feedback/feedback-promotion-service.js +2 -2
  76. package/dist/src/services/job/job-progress-store.d.ts +1 -1
  77. package/dist/src/services/job/job-progress-store.js +1 -1
  78. package/dist/src/services/loop/loop-bee-relation-service.d.ts +107 -0
  79. package/dist/src/services/loop/loop-bee-relation-service.js +211 -0
  80. package/dist/src/services/loop/loop-bee-relation-store.d.ts +53 -0
  81. package/dist/src/services/loop/loop-bee-relation-store.js +130 -0
  82. package/dist/src/services/loop/loop-bee-relation-types.d.ts +118 -0
  83. package/dist/src/services/loop/loop-bee-relation-types.js +114 -0
  84. package/dist/src/services/loop/loop-release-service.d.ts +46 -0
  85. package/dist/src/services/loop/loop-release-service.js +66 -0
  86. package/dist/src/services/loop/loop-release-store.d.ts +55 -0
  87. package/dist/src/services/loop/loop-release-store.js +134 -0
  88. package/dist/src/services/loop/loop-release-types.d.ts +250 -0
  89. package/dist/src/services/loop/loop-release-types.js +162 -0
  90. package/dist/src/services/preferences/preferences-service.d.ts +1 -1
  91. package/dist/src/services/preferences/preferences-types.d.ts +1 -1
  92. package/dist/src/services/rd/standards-diagnostic.d.ts +1 -1
  93. package/dist/src/services/rd/standards-diagnostic.js +2 -2
  94. package/dist/src/services/recommendations/capability-seed-items.js +1 -1
  95. package/dist/src/services/recommendations/capability-seed-mappings.js +1 -1
  96. package/dist/src/services/recommendations/recommendation-service.js +1 -1
  97. package/dist/src/services/refactor/refactor-service.d.ts +1 -1
  98. package/dist/src/services/share/bundle-reader.d.ts +100 -0
  99. package/dist/src/services/share/bundle-reader.js +434 -0
  100. package/dist/src/services/share/bundle-types.d.ts +392 -0
  101. package/dist/src/services/share/bundle-types.js +318 -0
  102. package/dist/src/services/share/bundle-writer.d.ts +97 -0
  103. package/dist/src/services/share/bundle-writer.js +429 -0
  104. package/dist/src/services/share/run-state-contract.d.ts +133 -0
  105. package/dist/src/services/share/run-state-contract.js +138 -0
  106. package/dist/src/services/signal/cancel-handler.js +3 -3
  107. package/dist/src/services/skill/resume-detector.js +1 -1
  108. package/dist/src/services/skillhub/release-import.js +7 -2
  109. package/dist/src/services/skillhub/release-retain.js +6 -1
  110. package/dist/src/services/skillhub/sqlite-store.js +17 -1
  111. package/dist/src/services/skillhub/types.d.ts +10 -0
  112. package/dist/src/services/skills/skill-presence-service.d.ts +1 -1
  113. package/dist/src/services/standards/loop-engineering-lint.d.ts +38 -0
  114. package/dist/src/services/standards/loop-engineering-lint.js +101 -0
  115. package/dist/src/services/standards/loop-engineering-readiness-lint.d.ts +111 -0
  116. package/dist/src/services/standards/loop-engineering-readiness-lint.js +248 -0
  117. package/dist/src/services/upgrade/1x-detector-service.js +1 -1
  118. package/dist/src/services/workflow/pipeline-verify-service.d.ts +1 -1
  119. package/dist/src/services/workflow/pipeline-verify-service.js +3 -3
  120. package/dist/src/services/workflow/workflow-autonomous-service.d.ts +3 -3
  121. package/dist/src/services/workflow/workflow-autonomous-service.js +2 -2
  122. package/dist/src/services/workflow/workflow-router-service.d.ts +6 -6
  123. package/dist/src/services/workflow/workflow-router-service.js +33 -33
  124. package/dist/src/services/workspace/claude-settings-template.d.ts +1 -1
  125. package/dist/src/services/workspace/claude-settings-template.js +5 -5
  126. package/dist/src/shared/version.d.ts +1 -1
  127. package/dist/src/shared/version.js +1 -1
  128. package/examples/video-demo/README.md +57 -0
  129. package/examples/video-demo/out/en-closing-960.png +0 -0
  130. package/examples/video-demo/out/zh-closing-960.png +0 -0
  131. package/examples/video-demo/preview/peaks-loop-demo-en.mp4 +0 -0
  132. package/examples/video-demo/preview/peaks-loop-demo.mp4 +0 -0
  133. package/output-styles/peaks-skill-swarm.md +3 -3
  134. package/package.json +6 -2
  135. package/skills/bee/peaks-qa/SKILL.md +1 -1
  136. package/skills/bee/peaks-qa/references/artifact-per-request.md +3 -3
  137. package/skills/bee/peaks-qa/references/qa-sub-agent-dispatch.md +6 -6
  138. package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +1 -1
  139. package/skills/bee/peaks-rd/references/rd-runbook.md +1 -1
  140. package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +11 -11
  141. package/skills/bee/peaks-rd/references/rd-transition-gates.md +1 -1
  142. package/skills/bee/peaks-sc/SKILL.md +1 -1
  143. package/skills/bee/peaks-txt/SKILL.md +3 -3
  144. package/skills/bee/peaks-ui/SKILL.md +8 -8
  145. package/skills/peaks-code/SKILL.md +34 -21
  146. package/skills/peaks-code/references/anchoring-and-session-info.md +2 -2
  147. package/skills/peaks-code/references/artifact-contracts.md +1 -1
  148. package/skills/peaks-code/references/boundaries.md +3 -3
  149. package/skills/peaks-code/references/codegraph-orchestration.md +1 -1
  150. package/skills/peaks-code/references/dag-orchestrator.md +7 -7
  151. package/skills/peaks-code/references/external-references.md +2 -2
  152. package/skills/peaks-code/references/fanout-mandatory.md +3 -3
  153. package/skills/peaks-code/references/fast-mode.md +2 -2
  154. package/skills/peaks-code/references/frontend-only-mode.md +9 -9
  155. package/skills/peaks-code/references/job-loop.md +1 -1
  156. package/skills/peaks-code/references/local-artifact-workspace.md +2 -2
  157. package/skills/peaks-code/references/micro-cycle.md +14 -14
  158. package/skills/peaks-code/references/mode-selection-with-stale-presence.md +5 -5
  159. package/skills/peaks-code/references/mode-selection.md +3 -3
  160. package/skills/peaks-code/references/openspec-workflow.md +16 -16
  161. package/skills/peaks-code/references/periodic-checkpoint.md +4 -4
  162. package/skills/peaks-code/references/quality-gate-cheatsheet.md +1 -1
  163. package/skills/peaks-code/references/refactor-mode.md +1 -1
  164. package/skills/peaks-code/references/runbook.md +15 -15
  165. package/skills/peaks-code/references/step-0-55-1x-detection.md +1 -1
  166. package/skills/peaks-code/references/step-0-8-gate.md +11 -11
  167. package/skills/peaks-code/references/sub-agent-dispatch.md +8 -8
  168. package/skills/peaks-code/references/swarm-dispatch-contract.md +17 -17
  169. package/skills/peaks-code/references/workflow-gates-and-types.md +2 -2
  170. package/skills/peaks-code/references/workflow.md +5 -5
  171. package/skills/peaks-content/SKILL.md +272 -0
  172. package/skills/peaks-issue-fix-orchestrator/SKILL.md +307 -0
  173. package/skills/peaks-resume/SKILL.md +2 -2
  174. package/skills/peaks-status/SKILL.md +2 -2
  175. package/skills/peaks-test/SKILL.md +2 -2
  176. /package/dist/src/services/{solo → code}/batch-heartbeat-poller.d.ts +0 -0
  177. /package/dist/src/services/{solo → code}/batch-heartbeat-poller.js +0 -0
  178. /package/dist/src/services/{solo → code}/status-line-renderer.d.ts +0 -0
  179. /package/dist/src/services/{solo → code}/status-line-renderer.js +0 -0
@@ -0,0 +1,706 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * EvolutionEvaluation — spec §4.4 / §6.
4
+ *
5
+ * The Darwin-style ratchet stores one row per evolution round. The
6
+ * table is the durable evidence of the round; the in-memory
7
+ * `EvolutionProposal` is the create payload; the in-memory
8
+ * `EvolutionEvaluation` is the post-skeptic aggregation.
9
+ *
10
+ * Hard rules from spec §6.1 (enforced at the service layer, NOT
11
+ * only in the Zod schema — defense in depth):
12
+ *
13
+ * 1. Single editable asset per round (target_count === 1).
14
+ * 2. Single optimization dimension per round (dimensions.length === 1).
15
+ * 3. Independent-context evaluation (author_id !== evaluator_id).
16
+ * 4. Regression skeptic (skeptic_id !== evaluator_id and
17
+ * skeptic_id !== author_id; skeptic is a SEPARATE agent).
18
+ * 5. Score delta threshold (score_delta >= score_delta_min).
19
+ * 6. User confirmation (user_confirmation_pointer is set on `keep`).
20
+ * 7. No self-scored evolution (the author cannot be the scorer).
21
+ *
22
+ * Out of scope (deferred to later slices):
23
+ * - Crystallization event integration (M5).
24
+ * - Revert audit trail table (M5 / M7).
25
+ */
26
+ export declare const EvolutionTargetKindSchema: z.ZodEnum<["loop", "bee", "policy", "gate", "evaluator"]>;
27
+ export type EvolutionTargetKind = z.infer<typeof EvolutionTargetKindSchema>;
28
+ export declare const EVOLUTION_TARGET_KINDS: readonly EvolutionTargetKind[];
29
+ export declare const EvolutionVerdictSchema: z.ZodEnum<["keep", "revert", "needs-user-decision"]>;
30
+ export type EvolutionVerdict = z.infer<typeof EvolutionVerdictSchema>;
31
+ export declare const EVOLUTION_VERDICTS: readonly EvolutionVerdict[];
32
+ /**
33
+ * EvolutionProposal — the create payload.
34
+ *
35
+ * `single_object` and `single_optimization_dimension` are boolean
36
+ * markers the LLM must declare at proposal time. The service layer
37
+ * rejects proposals that violate them. The `target_count` is always
38
+ * 1; `dimensions` is always length 1.
39
+ *
40
+ * `before_score` / `after_score` are per-dimension scores on the
41
+ * 0..10 scale; the proposal is rejected at `keep` time when
42
+ * `after_score - before_score < score_delta_min` (default 1.0).
43
+ */
44
+ export declare const EvolutionProposalInputSchema: z.ZodObject<{
45
+ target_kind: z.ZodEnum<["loop", "bee", "policy", "gate", "evaluator"]>;
46
+ target_release_id: z.ZodString;
47
+ /**
48
+ * Single optimization dimension (AC-8). Multi-dimension proposals
49
+ * must be split into multiple rounds.
50
+ */
51
+ optimization_dimension: z.ZodString;
52
+ before_snapshot: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
53
+ after_snapshot: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
54
+ diff: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
55
+ before_score: z.ZodNumber;
56
+ after_score: z.ZodNumber;
57
+ score_delta_min: z.ZodDefault<z.ZodNumber>;
58
+ author_id: z.ZodString;
59
+ /**
60
+ * The LLM-side marker that this proposal targets a SINGLE object
61
+ * (AC-8). Multi-object proposals must be split into multiple
62
+ * rounds. The service layer rejects proposals with
63
+ * `single_object !== true`.
64
+ */
65
+ single_object: z.ZodLiteral<true>;
66
+ /**
67
+ * The LLM-side marker that this proposal targets a SINGLE
68
+ * optimization dimension (AC-8). The service layer rejects
69
+ * proposals with `single_optimization_dimension !== true`.
70
+ */
71
+ single_optimization_dimension: z.ZodLiteral<true>;
72
+ rubric: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
73
+ red_lines: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
74
+ source_traces: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
75
+ }, "strip", z.ZodTypeAny, {
76
+ diff: Record<string, unknown>;
77
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
78
+ target_release_id: string;
79
+ optimization_dimension: string;
80
+ before_snapshot: Record<string, unknown>;
81
+ after_snapshot: Record<string, unknown>;
82
+ before_score: number;
83
+ after_score: number;
84
+ score_delta_min: number;
85
+ author_id: string;
86
+ single_object: true;
87
+ single_optimization_dimension: true;
88
+ rubric: Record<string, unknown>;
89
+ red_lines: string[];
90
+ source_traces: string[];
91
+ }, {
92
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
93
+ target_release_id: string;
94
+ optimization_dimension: string;
95
+ before_score: number;
96
+ after_score: number;
97
+ author_id: string;
98
+ single_object: true;
99
+ single_optimization_dimension: true;
100
+ diff?: Record<string, unknown> | undefined;
101
+ before_snapshot?: Record<string, unknown> | undefined;
102
+ after_snapshot?: Record<string, unknown> | undefined;
103
+ score_delta_min?: number | undefined;
104
+ rubric?: Record<string, unknown> | undefined;
105
+ red_lines?: string[] | undefined;
106
+ source_traces?: string[] | undefined;
107
+ }>;
108
+ export type EvolutionProposalInput = z.input<typeof EvolutionProposalInputSchema>;
109
+ /**
110
+ * The PERSISTED proposal shape — adds `dimensions` (a length-1
111
+ * array) and `target_count` (always 1) for storage. The
112
+ * `optimization_dimension` scalar is normalized into the
113
+ * `dimensions` array on persist.
114
+ */
115
+ export declare const EvolutionProposalSchema: z.ZodObject<{
116
+ target_kind: z.ZodEnum<["loop", "bee", "policy", "gate", "evaluator"]>;
117
+ target_release_id: z.ZodString;
118
+ /**
119
+ * Single optimization dimension (AC-8). Multi-dimension proposals
120
+ * must be split into multiple rounds.
121
+ */
122
+ optimization_dimension: z.ZodString;
123
+ before_snapshot: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
124
+ after_snapshot: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
125
+ diff: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
126
+ before_score: z.ZodNumber;
127
+ after_score: z.ZodNumber;
128
+ score_delta_min: z.ZodDefault<z.ZodNumber>;
129
+ author_id: z.ZodString;
130
+ /**
131
+ * The LLM-side marker that this proposal targets a SINGLE object
132
+ * (AC-8). Multi-object proposals must be split into multiple
133
+ * rounds. The service layer rejects proposals with
134
+ * `single_object !== true`.
135
+ */
136
+ single_object: z.ZodLiteral<true>;
137
+ /**
138
+ * The LLM-side marker that this proposal targets a SINGLE
139
+ * optimization dimension (AC-8). The service layer rejects
140
+ * proposals with `single_optimization_dimension !== true`.
141
+ */
142
+ single_optimization_dimension: z.ZodLiteral<true>;
143
+ rubric: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
144
+ red_lines: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
145
+ source_traces: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
146
+ } & {
147
+ id: z.ZodString;
148
+ dimensions: z.ZodArray<z.ZodString, "many">;
149
+ target_count: z.ZodLiteral<1>;
150
+ schema_version: z.ZodDefault<z.ZodLiteral<"peaks.evolution/1">>;
151
+ created_at: z.ZodString;
152
+ score_delta: z.ZodNumber;
153
+ }, "strip", z.ZodTypeAny, {
154
+ schema_version: "peaks.evolution/1";
155
+ id: string;
156
+ diff: Record<string, unknown>;
157
+ created_at: string;
158
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
159
+ target_release_id: string;
160
+ optimization_dimension: string;
161
+ before_snapshot: Record<string, unknown>;
162
+ after_snapshot: Record<string, unknown>;
163
+ before_score: number;
164
+ after_score: number;
165
+ score_delta_min: number;
166
+ author_id: string;
167
+ single_object: true;
168
+ single_optimization_dimension: true;
169
+ rubric: Record<string, unknown>;
170
+ red_lines: string[];
171
+ source_traces: string[];
172
+ dimensions: string[];
173
+ target_count: 1;
174
+ score_delta: number;
175
+ }, {
176
+ id: string;
177
+ created_at: string;
178
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
179
+ target_release_id: string;
180
+ optimization_dimension: string;
181
+ before_score: number;
182
+ after_score: number;
183
+ author_id: string;
184
+ single_object: true;
185
+ single_optimization_dimension: true;
186
+ dimensions: string[];
187
+ target_count: 1;
188
+ score_delta: number;
189
+ schema_version?: "peaks.evolution/1" | undefined;
190
+ diff?: Record<string, unknown> | undefined;
191
+ before_snapshot?: Record<string, unknown> | undefined;
192
+ after_snapshot?: Record<string, unknown> | undefined;
193
+ score_delta_min?: number | undefined;
194
+ rubric?: Record<string, unknown> | undefined;
195
+ red_lines?: string[] | undefined;
196
+ source_traces?: string[] | undefined;
197
+ }>;
198
+ export type EvolutionProposal = z.infer<typeof EvolutionProposalSchema>;
199
+ /**
200
+ * The independent evaluator's verdict. AC-12 / AC-13: the evaluator
201
+ * is a SEPARATE sub-agent that only sees the evaluation package.
202
+ */
203
+ export declare const IndependentEvaluatorResultSchema: z.ZodObject<{
204
+ score: z.ZodNumber;
205
+ riskTags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
206
+ refuteParagraph: z.ZodString;
207
+ }, "strip", z.ZodTypeAny, {
208
+ score: number;
209
+ riskTags: string[];
210
+ refuteParagraph: string;
211
+ }, {
212
+ score: number;
213
+ refuteParagraph: string;
214
+ riskTags?: string[] | undefined;
215
+ }>;
216
+ export type IndependentEvaluatorResult = z.infer<typeof IndependentEvaluatorResultSchema>;
217
+ /**
218
+ * The regression skeptic's verdict. AC-14: a separate sub-agent
219
+ * that attempts to refute the proposal.
220
+ */
221
+ export declare const RegressionSkepticResultSchema: z.ZodObject<{
222
+ driftRisks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
223
+ overfitRisks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
224
+ safetyRegressionRisks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
225
+ blocker: z.ZodOptional<z.ZodString>;
226
+ }, "strip", z.ZodTypeAny, {
227
+ driftRisks: string[];
228
+ overfitRisks: string[];
229
+ safetyRegressionRisks: string[];
230
+ blocker?: string | undefined;
231
+ }, {
232
+ blocker?: string | undefined;
233
+ driftRisks?: string[] | undefined;
234
+ overfitRisks?: string[] | undefined;
235
+ safetyRegressionRisks?: string[] | undefined;
236
+ }>;
237
+ export type RegressionSkepticResult = z.infer<typeof RegressionSkepticResultSchema>;
238
+ /**
239
+ * The full evolution evaluation row as persisted. Differs from the
240
+ * proposal in that it carries the evaluator + skeptic verdicts, the
241
+ * `score_delta` (computed), and the final `verdict` aggregation.
242
+ *
243
+ * Field semantics — see spec §4.4 for full prose. Highlights:
244
+ *
245
+ * - `evaluator_id` and `skeptic_id` are SEPARATE agents (AC-14).
246
+ * - `user_confirmation_pointer` is a path/ID to a user choice
247
+ * record; it is REQUIRED for `verdict = 'keep'` (AC-15: user
248
+ * confirmation is the final gate).
249
+ * - `brief_pointer` is a path/ID to the evidence brief used in
250
+ * the recommendation (spec §4.7 / §10 RL-7).
251
+ */
252
+ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
253
+ id: z.ZodString;
254
+ proposal: z.ZodObject<{
255
+ target_kind: z.ZodEnum<["loop", "bee", "policy", "gate", "evaluator"]>;
256
+ target_release_id: z.ZodString;
257
+ /**
258
+ * Single optimization dimension (AC-8). Multi-dimension proposals
259
+ * must be split into multiple rounds.
260
+ */
261
+ optimization_dimension: z.ZodString;
262
+ before_snapshot: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
263
+ after_snapshot: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
264
+ diff: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
265
+ before_score: z.ZodNumber;
266
+ after_score: z.ZodNumber;
267
+ score_delta_min: z.ZodDefault<z.ZodNumber>;
268
+ author_id: z.ZodString;
269
+ /**
270
+ * The LLM-side marker that this proposal targets a SINGLE object
271
+ * (AC-8). Multi-object proposals must be split into multiple
272
+ * rounds. The service layer rejects proposals with
273
+ * `single_object !== true`.
274
+ */
275
+ single_object: z.ZodLiteral<true>;
276
+ /**
277
+ * The LLM-side marker that this proposal targets a SINGLE
278
+ * optimization dimension (AC-8). The service layer rejects
279
+ * proposals with `single_optimization_dimension !== true`.
280
+ */
281
+ single_optimization_dimension: z.ZodLiteral<true>;
282
+ rubric: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
283
+ red_lines: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
284
+ source_traces: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
285
+ } & {
286
+ id: z.ZodString;
287
+ dimensions: z.ZodArray<z.ZodString, "many">;
288
+ target_count: z.ZodLiteral<1>;
289
+ schema_version: z.ZodDefault<z.ZodLiteral<"peaks.evolution/1">>;
290
+ created_at: z.ZodString;
291
+ score_delta: z.ZodNumber;
292
+ }, "strip", z.ZodTypeAny, {
293
+ schema_version: "peaks.evolution/1";
294
+ id: string;
295
+ diff: Record<string, unknown>;
296
+ created_at: string;
297
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
298
+ target_release_id: string;
299
+ optimization_dimension: string;
300
+ before_snapshot: Record<string, unknown>;
301
+ after_snapshot: Record<string, unknown>;
302
+ before_score: number;
303
+ after_score: number;
304
+ score_delta_min: number;
305
+ author_id: string;
306
+ single_object: true;
307
+ single_optimization_dimension: true;
308
+ rubric: Record<string, unknown>;
309
+ red_lines: string[];
310
+ source_traces: string[];
311
+ dimensions: string[];
312
+ target_count: 1;
313
+ score_delta: number;
314
+ }, {
315
+ id: string;
316
+ created_at: string;
317
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
318
+ target_release_id: string;
319
+ optimization_dimension: string;
320
+ before_score: number;
321
+ after_score: number;
322
+ author_id: string;
323
+ single_object: true;
324
+ single_optimization_dimension: true;
325
+ dimensions: string[];
326
+ target_count: 1;
327
+ score_delta: number;
328
+ schema_version?: "peaks.evolution/1" | undefined;
329
+ diff?: Record<string, unknown> | undefined;
330
+ before_snapshot?: Record<string, unknown> | undefined;
331
+ after_snapshot?: Record<string, unknown> | undefined;
332
+ score_delta_min?: number | undefined;
333
+ rubric?: Record<string, unknown> | undefined;
334
+ red_lines?: string[] | undefined;
335
+ source_traces?: string[] | undefined;
336
+ }>;
337
+ evaluator_id: z.ZodString;
338
+ skeptic_id: z.ZodString;
339
+ evaluator_result: z.ZodObject<{
340
+ score: z.ZodNumber;
341
+ riskTags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
342
+ refuteParagraph: z.ZodString;
343
+ }, "strip", z.ZodTypeAny, {
344
+ score: number;
345
+ riskTags: string[];
346
+ refuteParagraph: string;
347
+ }, {
348
+ score: number;
349
+ refuteParagraph: string;
350
+ riskTags?: string[] | undefined;
351
+ }>;
352
+ skeptic_result: z.ZodObject<{
353
+ driftRisks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
354
+ overfitRisks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
355
+ safetyRegressionRisks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
356
+ blocker: z.ZodOptional<z.ZodString>;
357
+ }, "strip", z.ZodTypeAny, {
358
+ driftRisks: string[];
359
+ overfitRisks: string[];
360
+ safetyRegressionRisks: string[];
361
+ blocker?: string | undefined;
362
+ }, {
363
+ blocker?: string | undefined;
364
+ driftRisks?: string[] | undefined;
365
+ overfitRisks?: string[] | undefined;
366
+ safetyRegressionRisks?: string[] | undefined;
367
+ }>;
368
+ verdict: z.ZodEnum<["keep", "revert", "needs-user-decision"]>;
369
+ user_confirmation_pointer: z.ZodOptional<z.ZodString>;
370
+ brief_pointer: z.ZodOptional<z.ZodString>;
371
+ schema_version: z.ZodDefault<z.ZodLiteral<"peaks.evolution/1">>;
372
+ created_at: z.ZodString;
373
+ }, "strip", z.ZodTypeAny, {
374
+ schema_version: "peaks.evolution/1";
375
+ id: string;
376
+ proposal: {
377
+ schema_version: "peaks.evolution/1";
378
+ id: string;
379
+ diff: Record<string, unknown>;
380
+ created_at: string;
381
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
382
+ target_release_id: string;
383
+ optimization_dimension: string;
384
+ before_snapshot: Record<string, unknown>;
385
+ after_snapshot: Record<string, unknown>;
386
+ before_score: number;
387
+ after_score: number;
388
+ score_delta_min: number;
389
+ author_id: string;
390
+ single_object: true;
391
+ single_optimization_dimension: true;
392
+ rubric: Record<string, unknown>;
393
+ red_lines: string[];
394
+ source_traces: string[];
395
+ dimensions: string[];
396
+ target_count: 1;
397
+ score_delta: number;
398
+ };
399
+ created_at: string;
400
+ verdict: "revert" | "keep" | "needs-user-decision";
401
+ evaluator_id: string;
402
+ skeptic_id: string;
403
+ evaluator_result: {
404
+ score: number;
405
+ riskTags: string[];
406
+ refuteParagraph: string;
407
+ };
408
+ skeptic_result: {
409
+ driftRisks: string[];
410
+ overfitRisks: string[];
411
+ safetyRegressionRisks: string[];
412
+ blocker?: string | undefined;
413
+ };
414
+ user_confirmation_pointer?: string | undefined;
415
+ brief_pointer?: string | undefined;
416
+ }, {
417
+ id: string;
418
+ proposal: {
419
+ id: string;
420
+ created_at: string;
421
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
422
+ target_release_id: string;
423
+ optimization_dimension: string;
424
+ before_score: number;
425
+ after_score: number;
426
+ author_id: string;
427
+ single_object: true;
428
+ single_optimization_dimension: true;
429
+ dimensions: string[];
430
+ target_count: 1;
431
+ score_delta: number;
432
+ schema_version?: "peaks.evolution/1" | undefined;
433
+ diff?: Record<string, unknown> | undefined;
434
+ before_snapshot?: Record<string, unknown> | undefined;
435
+ after_snapshot?: Record<string, unknown> | undefined;
436
+ score_delta_min?: number | undefined;
437
+ rubric?: Record<string, unknown> | undefined;
438
+ red_lines?: string[] | undefined;
439
+ source_traces?: string[] | undefined;
440
+ };
441
+ created_at: string;
442
+ verdict: "revert" | "keep" | "needs-user-decision";
443
+ evaluator_id: string;
444
+ skeptic_id: string;
445
+ evaluator_result: {
446
+ score: number;
447
+ refuteParagraph: string;
448
+ riskTags?: string[] | undefined;
449
+ };
450
+ skeptic_result: {
451
+ blocker?: string | undefined;
452
+ driftRisks?: string[] | undefined;
453
+ overfitRisks?: string[] | undefined;
454
+ safetyRegressionRisks?: string[] | undefined;
455
+ };
456
+ schema_version?: "peaks.evolution/1" | undefined;
457
+ user_confirmation_pointer?: string | undefined;
458
+ brief_pointer?: string | undefined;
459
+ }>;
460
+ export type EvolutionEvaluationInput = z.input<typeof EvolutionEvaluationInputSchema>;
461
+ /**
462
+ * The PERSISTED evolution evaluation row. Differs from the input
463
+ * in that `score_delta` is computed and stored.
464
+ */
465
+ export declare const EvolutionEvaluationSchema: z.ZodObject<{
466
+ id: z.ZodString;
467
+ proposal: z.ZodObject<{
468
+ target_kind: z.ZodEnum<["loop", "bee", "policy", "gate", "evaluator"]>;
469
+ target_release_id: z.ZodString;
470
+ /**
471
+ * Single optimization dimension (AC-8). Multi-dimension proposals
472
+ * must be split into multiple rounds.
473
+ */
474
+ optimization_dimension: z.ZodString;
475
+ before_snapshot: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
476
+ after_snapshot: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
477
+ diff: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
478
+ before_score: z.ZodNumber;
479
+ after_score: z.ZodNumber;
480
+ score_delta_min: z.ZodDefault<z.ZodNumber>;
481
+ author_id: z.ZodString;
482
+ /**
483
+ * The LLM-side marker that this proposal targets a SINGLE object
484
+ * (AC-8). Multi-object proposals must be split into multiple
485
+ * rounds. The service layer rejects proposals with
486
+ * `single_object !== true`.
487
+ */
488
+ single_object: z.ZodLiteral<true>;
489
+ /**
490
+ * The LLM-side marker that this proposal targets a SINGLE
491
+ * optimization dimension (AC-8). The service layer rejects
492
+ * proposals with `single_optimization_dimension !== true`.
493
+ */
494
+ single_optimization_dimension: z.ZodLiteral<true>;
495
+ rubric: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
496
+ red_lines: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
497
+ source_traces: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
498
+ } & {
499
+ id: z.ZodString;
500
+ dimensions: z.ZodArray<z.ZodString, "many">;
501
+ target_count: z.ZodLiteral<1>;
502
+ schema_version: z.ZodDefault<z.ZodLiteral<"peaks.evolution/1">>;
503
+ created_at: z.ZodString;
504
+ score_delta: z.ZodNumber;
505
+ }, "strip", z.ZodTypeAny, {
506
+ schema_version: "peaks.evolution/1";
507
+ id: string;
508
+ diff: Record<string, unknown>;
509
+ created_at: string;
510
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
511
+ target_release_id: string;
512
+ optimization_dimension: string;
513
+ before_snapshot: Record<string, unknown>;
514
+ after_snapshot: Record<string, unknown>;
515
+ before_score: number;
516
+ after_score: number;
517
+ score_delta_min: number;
518
+ author_id: string;
519
+ single_object: true;
520
+ single_optimization_dimension: true;
521
+ rubric: Record<string, unknown>;
522
+ red_lines: string[];
523
+ source_traces: string[];
524
+ dimensions: string[];
525
+ target_count: 1;
526
+ score_delta: number;
527
+ }, {
528
+ id: string;
529
+ created_at: string;
530
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
531
+ target_release_id: string;
532
+ optimization_dimension: string;
533
+ before_score: number;
534
+ after_score: number;
535
+ author_id: string;
536
+ single_object: true;
537
+ single_optimization_dimension: true;
538
+ dimensions: string[];
539
+ target_count: 1;
540
+ score_delta: number;
541
+ schema_version?: "peaks.evolution/1" | undefined;
542
+ diff?: Record<string, unknown> | undefined;
543
+ before_snapshot?: Record<string, unknown> | undefined;
544
+ after_snapshot?: Record<string, unknown> | undefined;
545
+ score_delta_min?: number | undefined;
546
+ rubric?: Record<string, unknown> | undefined;
547
+ red_lines?: string[] | undefined;
548
+ source_traces?: string[] | undefined;
549
+ }>;
550
+ evaluator_id: z.ZodString;
551
+ skeptic_id: z.ZodString;
552
+ evaluator_result: z.ZodObject<{
553
+ score: z.ZodNumber;
554
+ riskTags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
555
+ refuteParagraph: z.ZodString;
556
+ }, "strip", z.ZodTypeAny, {
557
+ score: number;
558
+ riskTags: string[];
559
+ refuteParagraph: string;
560
+ }, {
561
+ score: number;
562
+ refuteParagraph: string;
563
+ riskTags?: string[] | undefined;
564
+ }>;
565
+ skeptic_result: z.ZodObject<{
566
+ driftRisks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
567
+ overfitRisks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
568
+ safetyRegressionRisks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
569
+ blocker: z.ZodOptional<z.ZodString>;
570
+ }, "strip", z.ZodTypeAny, {
571
+ driftRisks: string[];
572
+ overfitRisks: string[];
573
+ safetyRegressionRisks: string[];
574
+ blocker?: string | undefined;
575
+ }, {
576
+ blocker?: string | undefined;
577
+ driftRisks?: string[] | undefined;
578
+ overfitRisks?: string[] | undefined;
579
+ safetyRegressionRisks?: string[] | undefined;
580
+ }>;
581
+ verdict: z.ZodEnum<["keep", "revert", "needs-user-decision"]>;
582
+ user_confirmation_pointer: z.ZodOptional<z.ZodString>;
583
+ brief_pointer: z.ZodOptional<z.ZodString>;
584
+ schema_version: z.ZodDefault<z.ZodLiteral<"peaks.evolution/1">>;
585
+ created_at: z.ZodString;
586
+ } & {
587
+ score_delta: z.ZodNumber;
588
+ }, "strip", z.ZodTypeAny, {
589
+ schema_version: "peaks.evolution/1";
590
+ id: string;
591
+ proposal: {
592
+ schema_version: "peaks.evolution/1";
593
+ id: string;
594
+ diff: Record<string, unknown>;
595
+ created_at: string;
596
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
597
+ target_release_id: string;
598
+ optimization_dimension: string;
599
+ before_snapshot: Record<string, unknown>;
600
+ after_snapshot: Record<string, unknown>;
601
+ before_score: number;
602
+ after_score: number;
603
+ score_delta_min: number;
604
+ author_id: string;
605
+ single_object: true;
606
+ single_optimization_dimension: true;
607
+ rubric: Record<string, unknown>;
608
+ red_lines: string[];
609
+ source_traces: string[];
610
+ dimensions: string[];
611
+ target_count: 1;
612
+ score_delta: number;
613
+ };
614
+ created_at: string;
615
+ verdict: "revert" | "keep" | "needs-user-decision";
616
+ score_delta: number;
617
+ evaluator_id: string;
618
+ skeptic_id: string;
619
+ evaluator_result: {
620
+ score: number;
621
+ riskTags: string[];
622
+ refuteParagraph: string;
623
+ };
624
+ skeptic_result: {
625
+ driftRisks: string[];
626
+ overfitRisks: string[];
627
+ safetyRegressionRisks: string[];
628
+ blocker?: string | undefined;
629
+ };
630
+ user_confirmation_pointer?: string | undefined;
631
+ brief_pointer?: string | undefined;
632
+ }, {
633
+ id: string;
634
+ proposal: {
635
+ id: string;
636
+ created_at: string;
637
+ target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
638
+ target_release_id: string;
639
+ optimization_dimension: string;
640
+ before_score: number;
641
+ after_score: number;
642
+ author_id: string;
643
+ single_object: true;
644
+ single_optimization_dimension: true;
645
+ dimensions: string[];
646
+ target_count: 1;
647
+ score_delta: number;
648
+ schema_version?: "peaks.evolution/1" | undefined;
649
+ diff?: Record<string, unknown> | undefined;
650
+ before_snapshot?: Record<string, unknown> | undefined;
651
+ after_snapshot?: Record<string, unknown> | undefined;
652
+ score_delta_min?: number | undefined;
653
+ rubric?: Record<string, unknown> | undefined;
654
+ red_lines?: string[] | undefined;
655
+ source_traces?: string[] | undefined;
656
+ };
657
+ created_at: string;
658
+ verdict: "revert" | "keep" | "needs-user-decision";
659
+ score_delta: number;
660
+ evaluator_id: string;
661
+ skeptic_id: string;
662
+ evaluator_result: {
663
+ score: number;
664
+ refuteParagraph: string;
665
+ riskTags?: string[] | undefined;
666
+ };
667
+ skeptic_result: {
668
+ blocker?: string | undefined;
669
+ driftRisks?: string[] | undefined;
670
+ overfitRisks?: string[] | undefined;
671
+ safetyRegressionRisks?: string[] | undefined;
672
+ };
673
+ schema_version?: "peaks.evolution/1" | undefined;
674
+ user_confirmation_pointer?: string | undefined;
675
+ brief_pointer?: string | undefined;
676
+ }>;
677
+ export type EvolutionEvaluation = z.infer<typeof EvolutionEvaluationSchema>;
678
+ /**
679
+ * Default for `score_delta_min` per spec §6.1 #5.
680
+ */
681
+ export declare const EVOLUTION_DEFAULT_DELTA_MIN = 1;
682
+ /**
683
+ * Convenience: strict-parse an unknown payload into an
684
+ * EvolutionEvaluation row. Throws ZodError on failure.
685
+ */
686
+ export declare function parseEvolutionEvaluation(input: unknown): EvolutionEvaluation;
687
+ /**
688
+ * Convenience: safe-parse that returns a Result-like shape so
689
+ * callers (CLI / service layer) can render findings without
690
+ * try/catch noise.
691
+ */
692
+ export declare function safeParseEvolutionEvaluation(input: unknown): {
693
+ ok: true;
694
+ row: EvolutionEvaluation;
695
+ } | {
696
+ ok: false;
697
+ findings: Array<{
698
+ path: string;
699
+ message: string;
700
+ }>;
701
+ };
702
+ /**
703
+ * Convenience: strict-parse an unknown payload into an
704
+ * EvolutionProposal. Throws ZodError on failure.
705
+ */
706
+ export declare function parseEvolutionProposal(input: unknown): EvolutionProposal;