loopforge 1.12.0 → 2.0.0

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 (182) hide show
  1. package/README.md +172 -95
  2. package/dist/backends/interface.d.ts +3 -9
  3. package/dist/backends/interface.d.ts.map +1 -1
  4. package/dist/backends/interface.js +1 -5
  5. package/dist/backends/interface.js.map +1 -1
  6. package/dist/canonical-state.d.ts +53 -0
  7. package/dist/canonical-state.d.ts.map +1 -0
  8. package/dist/canonical-state.js +161 -0
  9. package/dist/canonical-state.js.map +1 -0
  10. package/dist/cli.d.ts +4 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +227 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/enforcement-gate.d.ts +44 -0
  15. package/dist/enforcement-gate.d.ts.map +1 -0
  16. package/dist/enforcement-gate.js +271 -0
  17. package/dist/enforcement-gate.js.map +1 -0
  18. package/dist/engine.d.ts +17 -7
  19. package/dist/engine.d.ts.map +1 -1
  20. package/dist/engine.js +158 -249
  21. package/dist/engine.js.map +1 -1
  22. package/dist/evidence-provider.d.ts +113 -0
  23. package/dist/evidence-provider.d.ts.map +1 -0
  24. package/dist/evidence-provider.js +419 -0
  25. package/dist/evidence-provider.js.map +1 -0
  26. package/dist/index.d.ts +19 -11
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +16 -10
  29. package/dist/index.js.map +1 -1
  30. package/dist/init.d.ts +15 -0
  31. package/dist/init.d.ts.map +1 -0
  32. package/dist/init.js +49 -0
  33. package/dist/init.js.map +1 -0
  34. package/dist/interop.d.ts +30 -0
  35. package/dist/interop.d.ts.map +1 -0
  36. package/dist/interop.js +29 -0
  37. package/dist/interop.js.map +1 -0
  38. package/dist/loop-compiler.d.ts +14 -64
  39. package/dist/loop-compiler.d.ts.map +1 -1
  40. package/dist/loop-compiler.js +307 -2001
  41. package/dist/loop-compiler.js.map +1 -1
  42. package/dist/loop-store.d.ts +82 -0
  43. package/dist/loop-store.d.ts.map +1 -0
  44. package/dist/loop-store.js +332 -0
  45. package/dist/loop-store.js.map +1 -0
  46. package/dist/mcp/server.d.ts +9 -6
  47. package/dist/mcp/server.d.ts.map +1 -1
  48. package/dist/mcp/server.js +109 -73
  49. package/dist/mcp/server.js.map +1 -1
  50. package/dist/mcp/session.d.ts +84 -20
  51. package/dist/mcp/session.d.ts.map +1 -1
  52. package/dist/mcp/session.js +718 -316
  53. package/dist/mcp/session.js.map +1 -1
  54. package/dist/mcp/tools.d.ts +18 -268
  55. package/dist/mcp/tools.d.ts.map +1 -1
  56. package/dist/mcp/tools.js +225 -12
  57. package/dist/mcp/tools.js.map +1 -1
  58. package/dist/observability.d.ts +36 -16
  59. package/dist/observability.d.ts.map +1 -1
  60. package/dist/observability.js +82 -23
  61. package/dist/observability.js.map +1 -1
  62. package/dist/policy-metrics.d.ts +46 -0
  63. package/dist/policy-metrics.d.ts.map +1 -0
  64. package/dist/policy-metrics.js +146 -0
  65. package/dist/policy-metrics.js.map +1 -0
  66. package/dist/policy.d.ts +58 -75
  67. package/dist/policy.d.ts.map +1 -1
  68. package/dist/policy.js +122 -93
  69. package/dist/policy.js.map +1 -1
  70. package/dist/prompt-assembler.d.ts +30 -0
  71. package/dist/prompt-assembler.d.ts.map +1 -0
  72. package/dist/prompt-assembler.js +257 -0
  73. package/dist/prompt-assembler.js.map +1 -0
  74. package/dist/prompt-policy.d.ts +29 -0
  75. package/dist/prompt-policy.d.ts.map +1 -0
  76. package/dist/prompt-policy.js +51 -0
  77. package/dist/prompt-policy.js.map +1 -0
  78. package/dist/protocol.d.ts +117 -91
  79. package/dist/protocol.d.ts.map +1 -1
  80. package/dist/protocol.js +40 -36
  81. package/dist/protocol.js.map +1 -1
  82. package/dist/replay.d.ts.map +1 -1
  83. package/dist/replay.js +1 -27
  84. package/dist/replay.js.map +1 -1
  85. package/dist/round-coordinator.d.ts +90 -0
  86. package/dist/round-coordinator.d.ts.map +1 -0
  87. package/dist/round-coordinator.js +186 -0
  88. package/dist/round-coordinator.js.map +1 -0
  89. package/dist/round-driver.d.ts +53 -0
  90. package/dist/round-driver.d.ts.map +1 -0
  91. package/dist/round-driver.js +101 -0
  92. package/dist/round-driver.js.map +1 -0
  93. package/dist/round-transaction.d.ts +70 -0
  94. package/dist/round-transaction.d.ts.map +1 -0
  95. package/dist/round-transaction.js +290 -0
  96. package/dist/round-transaction.js.map +1 -0
  97. package/dist/runtime.d.ts +35 -17
  98. package/dist/runtime.d.ts.map +1 -1
  99. package/dist/runtime.js +357 -344
  100. package/dist/runtime.js.map +1 -1
  101. package/dist/storage.d.ts +38 -0
  102. package/dist/storage.d.ts.map +1 -0
  103. package/dist/storage.js +201 -0
  104. package/dist/storage.js.map +1 -0
  105. package/dist/verification-gate.d.ts +39 -7
  106. package/dist/verification-gate.d.ts.map +1 -1
  107. package/dist/verification-gate.js +198 -9
  108. package/dist/verification-gate.js.map +1 -1
  109. package/loop_policy.json +26 -47
  110. package/package.json +13 -10
  111. package/skills/perception/SKILL.md +80 -249
  112. package/dist/backends/fs.d.ts +0 -36
  113. package/dist/backends/fs.d.ts.map +0 -1
  114. package/dist/backends/fs.js +0 -358
  115. package/dist/backends/fs.js.map +0 -1
  116. package/dist/builder.d.ts +0 -12
  117. package/dist/builder.d.ts.map +0 -1
  118. package/dist/builder.js +0 -259
  119. package/dist/builder.js.map +0 -1
  120. package/dist/mcp-server.d.ts +0 -12
  121. package/dist/mcp-server.d.ts.map +0 -1
  122. package/dist/mcp-server.js +0 -14
  123. package/dist/mcp-server.js.map +0 -1
  124. package/dist/memory-bridge.d.ts +0 -47
  125. package/dist/memory-bridge.d.ts.map +0 -1
  126. package/dist/memory-bridge.js +0 -290
  127. package/dist/memory-bridge.js.map +0 -1
  128. package/dist/tests/_helpers.d.ts +0 -25
  129. package/dist/tests/_helpers.d.ts.map +0 -1
  130. package/dist/tests/_helpers.js +0 -47
  131. package/dist/tests/_helpers.js.map +0 -1
  132. package/dist/tests/builder.test.d.ts +0 -2
  133. package/dist/tests/builder.test.d.ts.map +0 -1
  134. package/dist/tests/builder.test.js +0 -110
  135. package/dist/tests/builder.test.js.map +0 -1
  136. package/dist/tests/engine.test.d.ts +0 -2
  137. package/dist/tests/engine.test.d.ts.map +0 -1
  138. package/dist/tests/engine.test.js +0 -371
  139. package/dist/tests/engine.test.js.map +0 -1
  140. package/dist/tests/generate-schema.test.d.ts +0 -8
  141. package/dist/tests/generate-schema.test.d.ts.map +0 -1
  142. package/dist/tests/generate-schema.test.js +0 -199
  143. package/dist/tests/generate-schema.test.js.map +0 -1
  144. package/dist/tests/loop-compiler.test.d.ts +0 -2
  145. package/dist/tests/loop-compiler.test.d.ts.map +0 -1
  146. package/dist/tests/loop-compiler.test.js +0 -1051
  147. package/dist/tests/loop-compiler.test.js.map +0 -1
  148. package/dist/tests/mcp.test.d.ts +0 -7
  149. package/dist/tests/mcp.test.d.ts.map +0 -1
  150. package/dist/tests/mcp.test.js +0 -485
  151. package/dist/tests/mcp.test.js.map +0 -1
  152. package/dist/tests/memory-bridge.test.d.ts +0 -8
  153. package/dist/tests/memory-bridge.test.d.ts.map +0 -1
  154. package/dist/tests/memory-bridge.test.js +0 -383
  155. package/dist/tests/memory-bridge.test.js.map +0 -1
  156. package/dist/tests/policy.test.d.ts +0 -2
  157. package/dist/tests/policy.test.d.ts.map +0 -1
  158. package/dist/tests/policy.test.js +0 -49
  159. package/dist/tests/policy.test.js.map +0 -1
  160. package/dist/tests/protocol.test.d.ts +0 -2
  161. package/dist/tests/protocol.test.d.ts.map +0 -1
  162. package/dist/tests/protocol.test.js +0 -73
  163. package/dist/tests/protocol.test.js.map +0 -1
  164. package/dist/tests/replay.test.d.ts +0 -2
  165. package/dist/tests/replay.test.d.ts.map +0 -1
  166. package/dist/tests/replay.test.js +0 -222
  167. package/dist/tests/replay.test.js.map +0 -1
  168. package/dist/tests/runtime.test.d.ts +0 -7
  169. package/dist/tests/runtime.test.d.ts.map +0 -1
  170. package/dist/tests/runtime.test.js +0 -323
  171. package/dist/tests/runtime.test.js.map +0 -1
  172. package/dist/tests/verification-gate.test.d.ts +0 -2
  173. package/dist/tests/verification-gate.test.d.ts.map +0 -1
  174. package/dist/tests/verification-gate.test.js +0 -407
  175. package/dist/tests/verification-gate.test.js.map +0 -1
  176. package/skills/prompt-techniques/SKILL.md +0 -52
  177. package/skills/prompt-techniques/references/chain-of-thought.md +0 -207
  178. package/skills/prompt-techniques/references/few-shot.md +0 -174
  179. package/skills/prompt-techniques/references/least-to-most.md +0 -182
  180. package/skills/prompt-techniques/references/step-back.md +0 -160
  181. package/skills/prompt-techniques/references/tree-of-thought.md +0 -191
  182. package/skills/prompt-techniques/references/zero-shot.md +0 -97
@@ -1,407 +0,0 @@
1
- /** Tests for verification-gate — Layer 1 cross-round consistency checks. */
2
- import { describe, it } from "node:test";
3
- import assert from "node:assert/strict";
4
- import { makeExecutionEvidence, makeSelfEvaluation, } from "../protocol.js";
5
- import { verifySelfEvaluation } from "../verification-gate.js";
6
- // ═══════════════════════════════════════════════════════════════════════════
7
- // Helpers
8
- // ═══════════════════════════════════════════════════════════════════════════
9
- /** Build a minimal SelfEvaluation for testing. */
10
- function se(overrides = {}) {
11
- return makeSelfEvaluation({
12
- success: true,
13
- output_summary: "Task completed.",
14
- constraint_violations: [],
15
- should_continue: true,
16
- ...overrides,
17
- });
18
- }
19
- /** Build a vault entry with a given round and optional constraint_violations. */
20
- function vaultRound(round, violations = []) {
21
- return {
22
- task_id: `loop:test-loop:r${round}`,
23
- loop_id: "test-loop",
24
- loop_lineage: { round, success: true, task: "test task" },
25
- constraint_violations: violations,
26
- };
27
- }
28
- // ═══════════════════════════════════════════════════════════════════════════
29
- // Happy path
30
- // ═══════════════════════════════════════════════════════════════════════════
31
- describe("verification-gate — happy path", () => {
32
- it("trusted verdict when all checks pass with consistent data", () => {
33
- const curr = se({
34
- success: false,
35
- execution_evidence: makeExecutionEvidence({
36
- files_changed: ["src/foo.ts"],
37
- test_results: { passed: 3, failed: 1, skipped: 0 },
38
- success_criteria_met: ["impl"],
39
- success_criteria_remaining: ["tests"],
40
- progress_estimate: 0.7,
41
- }),
42
- constraint_violations: ["deadline"],
43
- discovered_constraints: ["new: must handle null"],
44
- });
45
- const prev = se({
46
- success: false,
47
- execution_evidence: makeExecutionEvidence({
48
- files_changed: ["src/bar.ts"],
49
- test_results: { passed: 1, failed: 2, skipped: 0 },
50
- success_criteria_met: [],
51
- success_criteria_remaining: ["impl", "tests"],
52
- progress_estimate: 0.3,
53
- }),
54
- constraint_violations: ["missing docs"],
55
- discovered_constraints: ["must use async"],
56
- });
57
- const vault = [vaultRound(1, ["missing docs"])];
58
- const result = verifySelfEvaluation(curr, 2, vault, prev);
59
- assert.equal(result.verdict, "trusted");
60
- assert.equal(result.flags.length, 0);
61
- });
62
- it("trusted verdict for first round (no previous data)", () => {
63
- const curr = se({
64
- execution_evidence: makeExecutionEvidence({
65
- progress_estimate: 0.0,
66
- }),
67
- });
68
- const result = verifySelfEvaluation(curr, 1, [], null);
69
- assert.equal(result.verdict, "trusted");
70
- assert.equal(result.flags.length, 0);
71
- });
72
- });
73
- // ═══════════════════════════════════════════════════════════════════════════
74
- // Check 1: Progress regression
75
- // ═══════════════════════════════════════════════════════════════════════════
76
- describe("verification-gate — progress regression", () => {
77
- it("flags when estimate drops > 0.2", () => {
78
- const curr = se({
79
- execution_evidence: makeExecutionEvidence({ progress_estimate: 0.3 }),
80
- });
81
- const prev = se({
82
- execution_evidence: makeExecutionEvidence({ progress_estimate: 0.8 }),
83
- });
84
- const result = verifySelfEvaluation(curr, 2, [], prev);
85
- assert.equal(result.verdict, "suspect");
86
- const flag = result.flags.find((f) => f.check === "progress_regression");
87
- assert.ok(flag);
88
- assert.equal(flag.field, "progress_estimate");
89
- assert.equal(flag.severity, "warn");
90
- });
91
- it("does not flag when estimate drops ≤ 0.2", () => {
92
- const curr = se({
93
- execution_evidence: makeExecutionEvidence({ progress_estimate: 0.6 }),
94
- });
95
- const prev = se({
96
- execution_evidence: makeExecutionEvidence({ progress_estimate: 0.8 }),
97
- });
98
- const result = verifySelfEvaluation(curr, 2, [], prev);
99
- assert.equal(result.verdict, "trusted");
100
- });
101
- it("does not flag when estimate increases", () => {
102
- const curr = se({
103
- execution_evidence: makeExecutionEvidence({ progress_estimate: 0.9 }),
104
- });
105
- const prev = se({
106
- execution_evidence: makeExecutionEvidence({ progress_estimate: 0.5 }),
107
- });
108
- const result = verifySelfEvaluation(curr, 2, [], prev);
109
- assert.equal(result.verdict, "trusted");
110
- });
111
- it("does not flag when no previous execution evidence", () => {
112
- const curr = se({
113
- execution_evidence: makeExecutionEvidence({ progress_estimate: 0.3 }),
114
- });
115
- const prev = se({ execution_evidence: undefined });
116
- const result = verifySelfEvaluation(curr, 2, [], prev);
117
- assert.equal(result.verdict, "trusted");
118
- });
119
- });
120
- // ═══════════════════════════════════════════════════════════════════════════
121
- // Check 2: Empty change + all passing
122
- // ═══════════════════════════════════════════════════════════════════════════
123
- describe("verification-gate — empty change with passing tests", () => {
124
- it("flags when no files changed, all tests pass, and success is true", () => {
125
- const curr = se({
126
- success: true,
127
- execution_evidence: makeExecutionEvidence({
128
- files_changed: [],
129
- test_results: { passed: 5, failed: 0, skipped: 0 },
130
- }),
131
- });
132
- const result = verifySelfEvaluation(curr, 2, [], null);
133
- assert.equal(result.verdict, "suspect");
134
- const flag = result.flags.find((f) => f.check === "empty_change_with_passing");
135
- assert.ok(flag);
136
- assert.equal(flag.severity, "warn");
137
- });
138
- it("does not flag when tests have failures", () => {
139
- const curr = se({
140
- success: false,
141
- execution_evidence: makeExecutionEvidence({
142
- files_changed: [],
143
- test_results: { passed: 3, failed: 1, skipped: 0 },
144
- }),
145
- });
146
- const result = verifySelfEvaluation(curr, 2, [], null);
147
- assert.equal(result.verdict, "trusted");
148
- });
149
- it("does not flag when files were changed", () => {
150
- const curr = se({
151
- success: true,
152
- execution_evidence: makeExecutionEvidence({
153
- files_changed: ["src/foo.ts"],
154
- test_results: { passed: 5, failed: 0, skipped: 0 },
155
- }),
156
- });
157
- const result = verifySelfEvaluation(curr, 2, [], null);
158
- const flag = result.flags.find((f) => f.check === "empty_change_with_passing");
159
- assert.equal(flag, undefined);
160
- });
161
- it("does not flag when success is false", () => {
162
- const curr = se({
163
- success: false,
164
- execution_evidence: makeExecutionEvidence({
165
- files_changed: [],
166
- test_results: { passed: 5, failed: 0, skipped: 0 },
167
- }),
168
- });
169
- const result = verifySelfEvaluation(curr, 2, [], null);
170
- assert.equal(result.verdict, "trusted");
171
- });
172
- });
173
- // ═══════════════════════════════════════════════════════════════════════════
174
- // Check 3: Success with remaining criteria
175
- // ═══════════════════════════════════════════════════════════════════════════
176
- describe("verification-gate — success with remaining criteria", () => {
177
- it("flags when success=true but criteria remain unmet", () => {
178
- const curr = se({
179
- success: true,
180
- execution_evidence: makeExecutionEvidence({
181
- success_criteria_met: ["builds"],
182
- success_criteria_remaining: ["tests pass", "docs updated"],
183
- }),
184
- });
185
- const result = verifySelfEvaluation(curr, 3, [], null);
186
- assert.equal(result.verdict, "contradicted");
187
- const flag = result.flags.find((f) => f.check === "success_with_remaining_criteria");
188
- assert.ok(flag);
189
- assert.equal(flag.severity, "error");
190
- assert.ok(flag.detail.includes("tests pass"));
191
- });
192
- it("does not flag when success=true and criteria list is empty", () => {
193
- const curr = se({
194
- success: true,
195
- execution_evidence: makeExecutionEvidence({
196
- success_criteria_met: ["builds", "tests pass"],
197
- success_criteria_remaining: [],
198
- }),
199
- });
200
- const result = verifySelfEvaluation(curr, 3, [], null);
201
- assert.equal(result.verdict, "trusted");
202
- });
203
- it("does not flag when success is false even with remaining criteria", () => {
204
- const curr = se({
205
- success: false,
206
- execution_evidence: makeExecutionEvidence({
207
- success_criteria_remaining: ["tests pass"],
208
- }),
209
- });
210
- const result = verifySelfEvaluation(curr, 3, [], null);
211
- assert.equal(result.verdict, "trusted");
212
- });
213
- });
214
- // ═══════════════════════════════════════════════════════════════════════════
215
- // Check 4: Duplicate constraint discovery
216
- // ═══════════════════════════════════════════════════════════════════════════
217
- describe("verification-gate — duplicate constraint discovery", () => {
218
- it("flags when discovered constraint was already in previous round", () => {
219
- const curr = se({
220
- discovered_constraints: ["must handle null"],
221
- });
222
- const prev = se({
223
- discovered_constraints: ["must handle null"],
224
- });
225
- const result = verifySelfEvaluation(curr, 2, [], prev);
226
- assert.equal(result.verdict, "suspect");
227
- const flag = result.flags.find((f) => f.check === "duplicate_constraint_discovery");
228
- assert.ok(flag);
229
- assert.equal(flag.severity, "warn");
230
- });
231
- it("flags when discovered constraint was a previous violation", () => {
232
- const curr = se({
233
- discovered_constraints: ["deadline pressure"],
234
- });
235
- const prev = se({
236
- constraint_violations: ["deadline pressure"],
237
- });
238
- const result = verifySelfEvaluation(curr, 2, [], prev);
239
- assert.equal(result.verdict, "suspect");
240
- });
241
- it("does not flag when constraint is genuinely new", () => {
242
- const curr = se({
243
- discovered_constraints: ["must validate input"],
244
- });
245
- const prev = se({
246
- discovered_constraints: ["must handle null"],
247
- constraint_violations: ["deadline"],
248
- });
249
- const result = verifySelfEvaluation(curr, 2, [], prev);
250
- assert.equal(result.verdict, "trusted");
251
- });
252
- });
253
- // ═══════════════════════════════════════════════════════════════════════════
254
- // Check 5: Recurring violation
255
- // ═══════════════════════════════════════════════════════════════════════════
256
- describe("verification-gate — recurring violation", () => {
257
- it("flags when same violation appears 3 consecutive rounds", () => {
258
- const curr = se({
259
- constraint_violations: ["deadline", "new issue"],
260
- });
261
- const prev = se({
262
- constraint_violations: ["deadline", "other"],
263
- });
264
- // Entry for round 2 (current is round 3) stores violations from round 1
265
- const vault = [
266
- vaultRound(2, ["deadline"]), // violations from round 1
267
- ];
268
- const result = verifySelfEvaluation(curr, 3, vault, prev);
269
- assert.equal(result.verdict, "contradicted");
270
- const flag = result.flags.find((f) => f.check === "recurring_violation");
271
- assert.ok(flag);
272
- assert.equal(flag.severity, "error");
273
- assert.ok(flag.detail.includes("deadline"));
274
- });
275
- it("does not flag after only 2 consecutive rounds", () => {
276
- const curr = se({
277
- constraint_violations: ["deadline"],
278
- });
279
- const prev = se({
280
- constraint_violations: ["deadline"],
281
- });
282
- // Only 2 rounds of data (current + prev) — no vault entry with the 3rd
283
- const vault = []; // no deeper history
284
- const result = verifySelfEvaluation(curr, 2, vault, prev);
285
- // Should be trusted or suspect at most (not contradicted for recurring)
286
- const flag = result.flags.find((f) => f.check === "recurring_violation");
287
- assert.equal(flag, undefined);
288
- });
289
- it("does not flag when violations differ each round", () => {
290
- const curr = se({
291
- constraint_violations: ["issue C"],
292
- });
293
- const prev = se({
294
- constraint_violations: ["issue B"],
295
- });
296
- const vault = [vaultRound(2, ["issue A"])]; // round 1 violations
297
- const result = verifySelfEvaluation(curr, 3, vault, prev);
298
- const flag = result.flags.find((f) => f.check === "recurring_violation");
299
- assert.equal(flag, undefined);
300
- });
301
- });
302
- // ═══════════════════════════════════════════════════════════════════════════
303
- // Check 6: Retract fresh constraint
304
- // ═══════════════════════════════════════════════════════════════════════════
305
- describe("verification-gate — retract fresh constraint", () => {
306
- it("flags when retracting a constraint discovered in previous round", () => {
307
- const curr = se({
308
- retracted_constraints: ["must use async"],
309
- });
310
- const prev = se({
311
- discovered_constraints: ["must use async", "must handle null"],
312
- });
313
- const result = verifySelfEvaluation(curr, 3, [], prev);
314
- assert.equal(result.verdict, "suspect");
315
- const flag = result.flags.find((f) => f.check === "retract_fresh_constraint");
316
- assert.ok(flag);
317
- assert.equal(flag.severity, "warn");
318
- assert.ok(flag.detail.includes("round 2"));
319
- });
320
- it("does not flag when retracting an older constraint", () => {
321
- const curr = se({
322
- retracted_constraints: ["old constraint"],
323
- });
324
- const prev = se({
325
- discovered_constraints: ["new constraint"],
326
- });
327
- const result = verifySelfEvaluation(curr, 3, [], prev);
328
- assert.equal(result.verdict, "trusted");
329
- });
330
- it("does not flag when no previous round exists", () => {
331
- const curr = se({
332
- retracted_constraints: ["some constraint"],
333
- });
334
- const result = verifySelfEvaluation(curr, 1, [], null);
335
- assert.equal(result.verdict, "trusted");
336
- });
337
- });
338
- // ═══════════════════════════════════════════════════════════════════════════
339
- // Verdict aggregation
340
- // ═══════════════════════════════════════════════════════════════════════════
341
- describe("verification-gate — verdict aggregation", () => {
342
- it("single warn flag → suspect", () => {
343
- const curr = se({
344
- discovered_constraints: ["must handle null"],
345
- });
346
- const prev = se({
347
- discovered_constraints: ["must handle null"],
348
- });
349
- const result = verifySelfEvaluation(curr, 2, [], prev);
350
- assert.equal(result.verdict, "suspect");
351
- assert.equal(result.flags.length, 1);
352
- });
353
- it("single error flag → contradicted", () => {
354
- const curr = se({
355
- success: true,
356
- execution_evidence: makeExecutionEvidence({
357
- success_criteria_remaining: ["tests pass"],
358
- }),
359
- });
360
- const result = verifySelfEvaluation(curr, 3, [], null);
361
- assert.equal(result.verdict, "contradicted");
362
- assert.equal(result.flags.length, 1);
363
- });
364
- it("multiple warn + one error → contradicted (error wins)", () => {
365
- const curr = se({
366
- success: true,
367
- execution_evidence: makeExecutionEvidence({
368
- files_changed: [],
369
- test_results: { passed: 3, failed: 0, skipped: 0 },
370
- success_criteria_remaining: ["tests pass"],
371
- }),
372
- discovered_constraints: ["must handle null"],
373
- });
374
- const prev = se({
375
- discovered_constraints: ["must handle null"],
376
- });
377
- const result = verifySelfEvaluation(curr, 2, [], prev);
378
- assert.equal(result.verdict, "contradicted");
379
- // Should have both the warn and error flags
380
- assert.ok(result.flags.length >= 2);
381
- });
382
- it("all checks pass → trusted", () => {
383
- const curr = se({
384
- success: false,
385
- execution_evidence: makeExecutionEvidence({
386
- files_changed: ["src/foo.ts"],
387
- test_results: { passed: 3, failed: 1, skipped: 0 },
388
- success_criteria_remaining: ["tests"],
389
- progress_estimate: 0.5,
390
- }),
391
- constraint_violations: ["minor"],
392
- discovered_constraints: ["unique constraint"],
393
- });
394
- const prev = se({
395
- success: false,
396
- execution_evidence: makeExecutionEvidence({
397
- progress_estimate: 0.3,
398
- }),
399
- constraint_violations: ["other"],
400
- discovered_constraints: ["different constraint"],
401
- });
402
- const result = verifySelfEvaluation(curr, 2, [], prev);
403
- assert.equal(result.verdict, "trusted");
404
- assert.equal(result.flags.length, 0);
405
- });
406
- });
407
- //# sourceMappingURL=verification-gate.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verification-gate.test.js","sourceRoot":"","sources":["../../src/tests/verification-gate.test.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- ---
2
- name: prompt-techniques
3
- description: >
4
- Reference catalog of 7 prompt engineering techniques. This skill should be
5
- used when the AI needs to recall the purpose, method steps, and use cases
6
- of techniques like zero-shot, few-shot, chain-of-thought, step-back,
7
- least-to-most, or tree-of-thought. It is a pure reference skill — no
8
- workflow instructions, only technique documentation loaded on demand.
9
- ---
10
-
11
- # Prompt Techniques Reference
12
-
13
- This skill catalogs seven prompt engineering techniques. Use `references/` files
14
- to load detailed technique documentation on demand. Each reference includes:
15
- purpose, input requirements, recommended JSON input templates, method steps,
16
- design rules, when-to-use guidance, and example use cases.
17
-
18
- ## Technique Overview
19
-
20
- | Technique | Cognitive Load | Independence | When to Use |
21
- |-----------|---------------|-------------|-------------|
22
- | zero-shot | Low | Either | Simple code explanation, formatting, renaming. |
23
- | few-shot | Medium | Continuous | Standard CRUD modules, unit tests with fixed patterns. |
24
- | chain-of-thought | Medium-High | Either | Multi-step reasoning; use `zero-shot-cot` without examples, `few-shot-cot` with examples. |
25
- | step-back | High | Independent | Vague errors, messy legacy refactoring — abstract principles first. |
26
- | least-to-most | High | Continuous | Large multi-step modules — decompose into ordered sub-tasks. |
27
- | tree-of-thought | High | Independent | Core algorithms, crypto/signature verification, Assembly ops — explore multiple candidate paths. |
28
-
29
- ## How to Use
30
-
31
- 1. Read `references/<technique>.md` for the selected technique. Each reference contains:
32
- - **Purpose** — what problem the technique solves.
33
- - **Input Requirements** — required and optional parameters.
34
- - **Recommended JSON Input** — a complete input template with example values.
35
- - **Method Steps** — step-by-step construction guide.
36
- - **Design Rules** — specific rules for high-quality prompt construction.
37
- - **Case Generation Rules** — how to generate examples, decompositions, branches, or abstractions (where applicable).
38
- - **Single-Pass vs Two-Stage** — when to use each execution mode (step-back, least-to-most).
39
- - **Search Strategy Selection** — beam/dfs/expert-panel guidance (tree-of-thought).
40
- - **Prompt Output Template** — a complete 8-section output skeleton with section-level format specifications. Defines the exact structure the generated prompt must follow. The technique-specific section (section 5) format varies per technique: Few-Shot uses input→output pairs, Few-Shot-CoT uses reasoning triples, Step-Back uses abstraction framework boxes, Least-to-Most uses ordered subproblems, Tree-of-Thought uses state tables + evaluation criteria. Zero-Shot omits section 5 entirely for a lightweight 7-section prompt.
41
- - **When to Use** — concrete scenarios and example use cases.
42
- 2. `references/chain-of-thought.md` covers both `zero-shot-cot` and `few-shot-cot`, including paper citations for Few-Shot-CoT.
43
- 3. Do not load all references at once — read only the one selected by the router in Step 1.
44
-
45
- ## Reference Files
46
-
47
- - `references/zero-shot.md`
48
- - `references/few-shot.md`
49
- - `references/chain-of-thought.md` (covers zero-shot-cot and few-shot-cot)
50
- - `references/step-back.md`
51
- - `references/least-to-most.md`
52
- - `references/tree-of-thought.md`