@stackmemoryai/stackmemory 1.5.4 → 1.5.5

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.
@@ -6,49 +6,49 @@
6
6
  "taskId": "eval-001",
7
7
  "taskName": "simple_function",
8
8
  "weight": 1,
9
- "passed": true,
10
- "passRate": 0.6666666666666666,
9
+ "passed": false,
10
+ "passRate": 0,
11
11
  "criteria": {
12
12
  "has_function": {
13
- "passed": true,
14
- "reason": "A real, working function named isPalindrome is defined with proper TypeScript syntax and implementation"
13
+ "passed": false,
14
+ "reason": "regex heuristic"
15
15
  },
16
16
  "handles_edge_cases": {
17
- "passed": true,
18
- "reason": "The function handles edge cases by converting to lowercase, removing non-alphanumeric characters, and comparing cleaned strings - this covers spaces, punctuation, and case sensitivity"
17
+ "passed": false,
18
+ "reason": "regex heuristic"
19
19
  },
20
20
  "is_tested": {
21
21
  "passed": false,
22
- "reason": "No test cases or assertions are provided; the output contains only the function definition without any testing code"
22
+ "reason": "regex heuristic"
23
23
  }
24
24
  },
25
- "judgeMode": "llm",
26
- "duration": 8230,
27
- "output": "```typescript\nfunction isPalindrome(s: string): boolean {\n const cleaned = s.toLowerCase().replace(/[^a-z0-9]/g, '');\n return cleaned === cleaned.split('').reverse().join('');\n}\n```\n"
25
+ "judgeMode": "regex",
26
+ "duration": 6236,
27
+ "output": "API Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"You have reached your specified API usage limits. You will regain access on 2026-04-01 at 00:00 UTC.\"},\"request_id\":\"req_011CYrHFLVHf4LRx9owtsUat\"}\n"
28
28
  },
29
29
  {
30
30
  "taskId": "eval-002",
31
31
  "taskName": "refactor_code",
32
32
  "weight": 1.5,
33
33
  "passed": false,
34
- "passRate": 0,
34
+ "passRate": 0.3333333333333333,
35
35
  "criteria": {
36
36
  "uses_async": {
37
37
  "passed": false,
38
- "reason": "No async/await code is present in the output. The AI only requested the input code without providing any refactored solution."
38
+ "reason": "regex heuristic"
39
39
  },
40
40
  "preserves_behavior": {
41
41
  "passed": false,
42
- "reason": "No refactored code was provided, so behavior cannot be preserved or verified."
42
+ "reason": "regex heuristic"
43
43
  },
44
44
  "no_nested_callbacks": {
45
- "passed": false,
46
- "reason": "No code transformation was performed. The output contains no callbacks or async/await implementation to evaluate."
45
+ "passed": true,
46
+ "reason": "regex heuristic"
47
47
  }
48
48
  },
49
- "judgeMode": "llm",
50
- "duration": 9716,
51
- "output": "Please share the code you'd like me to refactor.\n"
49
+ "judgeMode": "regex",
50
+ "duration": 5342,
51
+ "output": "API Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"You have reached your specified API usage limits. You will regain access on 2026-04-01 at 00:00 UTC.\"},\"request_id\":\"req_011CYrHFn1T5TkkCFboDp1aH\"}\n"
52
52
  },
53
53
  {
54
54
  "taskId": "eval-003",
@@ -59,20 +59,20 @@
59
59
  "criteria": {
60
60
  "bug_fixed": {
61
61
  "passed": false,
62
- "reason": "No code was provided to fix, so no bug was actually corrected. The AI only requested the code instead of fixing anything."
62
+ "reason": "regex heuristic"
63
63
  },
64
64
  "no_new_bugs": {
65
65
  "passed": false,
66
- "reason": "Cannot evaluate since no code fix was attempted or provided."
66
+ "reason": "regex heuristic"
67
67
  },
68
68
  "explains_fix": {
69
69
  "passed": false,
70
- "reason": "No explanation of any fix was provided. The AI only asked for the missing code to be shared."
70
+ "reason": "regex heuristic"
71
71
  }
72
72
  },
73
- "judgeMode": "llm",
74
- "duration": 8553,
75
- "output": "I don't see any code or file provided. Could you share the code with the off-by-one error you'd like me to fix?\n"
73
+ "judgeMode": "regex",
74
+ "duration": 4389,
75
+ "output": "API Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"You have reached your specified API usage limits. You will regain access on 2026-04-01 at 00:00 UTC.\"},\"request_id\":\"req_011CYrHGFTCjb8PsbsYzRS1W\"}\n"
76
76
  },
77
77
  {
78
78
  "taskId": "eval-004",
@@ -83,24 +83,24 @@
83
83
  "criteria": {
84
84
  "has_pagination": {
85
85
  "passed": false,
86
- "reason": "No pagination implementation provided. The AI only asked a clarifying question without delivering any code."
86
+ "reason": "regex heuristic"
87
87
  },
88
88
  "has_limit": {
89
89
  "passed": false,
90
- "reason": "No limit parameter implemented. The output contains no code or functional implementation."
90
+ "reason": "regex heuristic"
91
91
  },
92
92
  "has_offset": {
93
93
  "passed": false,
94
- "reason": "No offset parameter implemented. The output contains no code or functional implementation."
94
+ "reason": "regex heuristic"
95
95
  },
96
96
  "backwards_compatible": {
97
97
  "passed": false,
98
- "reason": "No implementation provided, so backwards compatibility cannot be verified. The output is a clarifying question, not a solution."
98
+ "reason": "regex heuristic"
99
99
  }
100
100
  },
101
- "judgeMode": "llm",
102
- "duration": 11867,
103
- "output": "Which API endpoint would you like to add pagination to? Can you point me to the file or describe the endpoint?\n"
101
+ "judgeMode": "regex",
102
+ "duration": 6872,
103
+ "output": "API Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"You have reached your specified API usage limits. You will regain access on 2026-04-01 at 00:00 UTC.\"},\"request_id\":\"req_011CYrHGkbeXvwXwxysZTdhR\"}\n"
104
104
  },
105
105
  {
106
106
  "taskId": "eval-005",
@@ -111,20 +111,20 @@
111
111
  "criteria": {
112
112
  "identifies_security_issue": {
113
113
  "passed": false,
114
- "reason": "No security issue was identified. The AI asked for clarification instead of reviewing any code."
114
+ "reason": "regex heuristic"
115
115
  },
116
116
  "identifies_performance_issue": {
117
117
  "passed": false,
118
- "reason": "No performance issue was identified. The AI requested a PR reference rather than providing analysis."
118
+ "reason": "regex heuristic"
119
119
  },
120
120
  "actionable_feedback": {
121
121
  "passed": false,
122
- "reason": "No actionable feedback was provided. The output is a request for missing information, not constructive review guidance."
122
+ "reason": "regex heuristic"
123
123
  }
124
124
  },
125
- "judgeMode": "llm",
126
- "duration": 13805,
127
- "output": "Which PR would you like me to review? Please provide a PR URL, number, or branch name.\n"
125
+ "judgeMode": "regex",
126
+ "duration": 10308,
127
+ "output": "API Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"You have reached your specified API usage limits. You will regain access on 2026-04-01 at 00:00 UTC.\"},\"request_id\":\"req_011CYrHHXPvni9SXWYQD2ML2\"}\n"
128
128
  },
129
129
  {
130
130
  "taskId": "sm-001",
@@ -135,84 +135,84 @@
135
135
  "criteria": {
136
136
  "has_switch_case": {
137
137
  "passed": false,
138
- "reason": "No switch/case code is present in the output; only a request for approval is shown"
138
+ "reason": "regex heuristic"
139
139
  },
140
140
  "has_zod_schema": {
141
141
  "passed": false,
142
- "reason": "No Zod schema definition is provided in the output"
142
+ "reason": "regex heuristic"
143
143
  },
144
144
  "validates_input": {
145
145
  "passed": false,
146
- "reason": "No input validation logic is implemented in the output"
146
+ "reason": "regex heuristic"
147
147
  },
148
148
  "returns_typed_response": {
149
149
  "passed": false,
150
- "reason": "No typed response structure is defined in the output"
150
+ "reason": "regex heuristic"
151
151
  },
152
152
  "handles_not_found": {
153
153
  "passed": false,
154
- "reason": "No error handling or not-found logic is present in the output"
154
+ "reason": "regex heuristic"
155
155
  }
156
156
  },
157
- "judgeMode": "llm",
158
- "duration": 23532,
159
- "output": "Please approve the file write so I can apply the edit.\n"
157
+ "judgeMode": "regex",
158
+ "duration": 6548,
159
+ "output": "API Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"You have reached your specified API usage limits. You will regain access on 2026-04-01 at 00:00 UTC.\"},\"request_id\":\"req_011CYrHHpuPC36UFe4w8R6LA\"}\n"
160
160
  },
161
161
  {
162
162
  "taskId": "sm-002",
163
163
  "taskName": "fix_fts5_trigger_bug",
164
164
  "weight": 1.8,
165
- "passed": true,
166
- "passRate": 1,
165
+ "passed": false,
166
+ "passRate": 0,
167
167
  "criteria": {
168
168
  "has_delete_trigger": {
169
- "passed": true,
170
- "reason": "A DELETE trigger named 'frames_ad' is explicitly defined with CREATE TRIGGER IF NOT EXISTS syntax for the frames table."
169
+ "passed": false,
170
+ "reason": "regex heuristic"
171
171
  },
172
172
  "uses_fts_delete_syntax": {
173
- "passed": true,
174
- "reason": "The trigger uses the FTS5 delete command by inserting 'delete' as the first value into the frames_fts virtual table, which is the correct syntax for removing entries from an FTS5 index."
173
+ "passed": false,
174
+ "reason": "regex heuristic"
175
175
  },
176
176
  "references_old_row": {
177
- "passed": true,
178
- "reason": "The trigger body references old.rowid, old.name, old.digest_text, and old.inputs, old.outputs to capture the deleted row's values before deletion."
177
+ "passed": false,
178
+ "reason": "regex heuristic"
179
179
  },
180
180
  "matches_column_list": {
181
- "passed": true,
182
- "reason": "The INSERT statement includes all the same columns (rowid, name, digest_text, inputs, outputs) that appear in the existing INSERT and UPDATE triggers, maintaining consistency with the established pattern."
181
+ "passed": false,
182
+ "reason": "regex heuristic"
183
183
  }
184
184
  },
185
- "judgeMode": "llm",
186
- "duration": 27425,
187
- "output": "The edit is ready — it replaces the bug comment with:\n\n```sql\n-- Sync trigger: DELETE\nCREATE TRIGGER IF NOT EXISTS frames_ad AFTER DELETE ON frames BEGIN\n INSERT INTO frames_fts(frames_fts, rowid, name, digest_text, inputs, outputs)\n VALUES ('delete', old.rowid, old.name, old.digest_text, old.inputs, old.outputs);\nEND;\n```\n\nThis follows the same FTS5 external content pattern used in `frames_au`: the special `'delete'` command removes the stale entry from the index using the `old.*` column values. Please approve the write to apply it.\n"
185
+ "judgeMode": "regex",
186
+ "duration": 6290,
187
+ "output": "API Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"You have reached your specified API usage limits. You will regain access on 2026-04-01 at 00:00 UTC.\"},\"request_id\":\"req_011CYrHJHsrxx3PXJcuPnJio\"}\n"
188
188
  },
189
189
  {
190
190
  "taskId": "sm-003",
191
191
  "taskName": "daemon_service_lifecycle",
192
192
  "weight": 1.5,
193
- "passed": true,
194
- "passRate": 1,
193
+ "passed": false,
194
+ "passRate": 0,
195
195
  "criteria": {
196
196
  "clears_old_interval": {
197
- "passed": true,
198
- "reason": "The fix adds an early-return guard in start() that prevents overwriting intervalId without clearing it. Additionally, updateConfig() now always calls stop() unconditionally, ensuring the old interval is cleared before a new one is created."
197
+ "passed": false,
198
+ "reason": "regex heuristic"
199
199
  },
200
200
  "prevents_double_start": {
201
- "passed": true,
202
- "reason": "The code explicitly adds `if (this.isRunning) return;` at the beginning of start(), which prevents double-start by returning early if already running."
201
+ "passed": false,
202
+ "reason": "regex heuristic"
203
203
  },
204
204
  "has_getstate_method": {
205
- "passed": true,
206
- "reason": "A getState() method is defined in the diff that returns an object with the required properties."
205
+ "passed": false,
206
+ "reason": "regex heuristic"
207
207
  },
208
208
  "returns_correct_state_shape": {
209
- "passed": true,
210
- "reason": "The getState() method returns an object with all four required properties: isRunning, intervalMs (calculated from config.interval), lastRunTime, and errorCount."
209
+ "passed": false,
210
+ "reason": "regex heuristic"
211
211
  }
212
212
  },
213
- "judgeMode": "llm",
214
- "duration": 36969,
215
- "output": "It seems write permission hasn't been granted yet. Here's what I'd apply — please approve the edit or grant write access:\n\n**Two bugs fixed + `getState()` added:**\n\n```diff\n- // BUG: No guard against double-start ...\n start(): void {\n+ if (this.isRunning) return; // guard: prevents double-start / timer leak\n this.isRunning = true;\n ...\n }\n\n- // BUG: Calls stop() then start() but start() doesn't check...\n updateConfig(config: Partial<ServiceConfig>): void {\n const wasRunning = this.isRunning;\n- if (wasRunning) this.stop();\n+ this.stop(); // always stop: clears interval unconditionally\n this.config = { ...this.config, ...config };\n if (wasRunning && this.config.enabled) this.start();\n }\n\n+ getState(): ServiceState {\n+ return {\n+ isRunning: this.isRunning,\n+ intervalMs: this.config.interval * 60 * 1000,\n+ lastRunTime: this.lastRunTime,\n+ errorCount: this.errorCount,\n+ };\n+ }\n```\n\n**Root causes:**\n\n1. **`start()` had no guard** calling it twice created two `setInterval` handles; the first leaked because `this.intervalId` was overwritten before it could be cleared. Fix: early-return if already running.\n\n2. **`updateConfig()` used `if (wasRunning) this.stop()`** — the conditional was correct in intent, but the real risk was that `start()` itself didn't guard, so the stop/start cycle could still stack intervals. The belt-and-suspenders fix is: always call `stop()` unconditionally (it's a no-op when not running), then `start()` only if needed.\n"
213
+ "judgeMode": "regex",
214
+ "duration": 6657,
215
+ "output": "API Error: 400 {\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"You have reached your specified API usage limits. You will regain access on 2026-04-01 at 00:00 UTC.\"},\"request_id\":\"req_011CYrHJmYFr5sCJFhW9h9Qm\"}\n"
216
216
  }
217
217
  ]
218
218
  }
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "currentGeneration": 1,
3
3
  "bestVariant": "baseline",
4
- "bestScore": 0.519174041297935,
5
- "targetPath": "/Users/jwu/Dev/stackmemory/CLAUDE.md",
4
+ "bestScore": 0.04424778761061947,
5
+ "targetPath": "/Users/jwu/Dev/rize/sol/CLAUDE.md",
6
6
  "history": [
7
7
  {
8
8
  "generation": 0,
9
9
  "variant": "baseline",
10
10
  "action": "init",
11
- "timestamp": "2026-03-06T18:06:15.421Z"
11
+ "timestamp": "2026-03-08T20:55:25.777Z"
12
12
  },
13
13
  {
14
14
  "generation": 1,
@@ -19,7 +19,7 @@
19
19
  "variant-c",
20
20
  "variant-d"
21
21
  ],
22
- "timestamp": "2026-03-06T18:09:17.179Z"
22
+ "timestamp": "2026-03-08T20:56:32.495Z"
23
23
  },
24
24
  {
25
25
  "generation": 1,
@@ -27,27 +27,11 @@
27
27
  "scores": [
28
28
  {
29
29
  "variant": "baseline",
30
- "score": 0.519174041297935
31
- },
32
- {
33
- "variant": "variant-b",
34
- "score": 0.4837758112094395
35
- },
36
- {
37
- "variant": "variant-d",
38
- "score": 0.35103244837758113
39
- },
40
- {
41
- "variant": "variant-c",
42
- "score": 0.2603244837758112
43
- },
44
- {
45
- "variant": "variant-a",
46
- "score": 0.19174041297935102
30
+ "score": 0.04424778761061947
47
31
  }
48
32
  ],
49
33
  "best": "baseline",
50
- "timestamp": "2026-03-06T18:23:17.567Z"
34
+ "timestamp": "2026-03-08T20:58:11.649Z"
51
35
  }
52
36
  ]
53
37
  }