replen 1.0.22 → 1.0.23

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.
@@ -79,6 +79,12 @@ and versions ONLY — never code. This is what turns Replen's deadline and
79
79
  security lines from "worth checking your pins" into "affects `aegis`
80
80
  (3.10.12)" — and silences alarms for versions this repo verifiably isn't on.
81
81
 
82
+ This step is NOT optional, and not only about deadlines: the reported
83
+ names are also the matcher's "already a dependency" exclusion list. A
84
+ repo that never reports versions WILL get its own dependencies suggested
85
+ back to it as candidates (fastapi pinned in requirements.txt, fastapi in
86
+ the shortlist) — a shipped failure this step prevents.
87
+
82
88
  If `candidates.length === 0`, tell the user "No new candidates today for
83
89
  `<owner/name>`. Calm-cadence working as designed — 1-3 actionable
84
90
  matches a month is the goal." Stop.
@@ -177,20 +183,40 @@ that means here.
177
183
  mismatch, security flag. Empty list is fine; don't manufacture.
178
184
  ```
179
185
 
186
+ #### 3d. Record the verdict NOW — don't wait for the user
187
+
188
+ As soon as a candidate's verdict is formed, call `replen_record_triage`
189
+ for it — **before** you present the batch, and **without asking**.
190
+ Recording is observation, not action: it captures what you concluded
191
+ (verdict, score, reason code, one-liner, cosine) so the learning loop and
192
+ re-surfacing suppression actually fire. It is non-destructive and doesn't
193
+ foreclose anything — the user's star / hide / handoff choices in Step 4
194
+ are a separate axis layered on top.
195
+
196
+ The failure mode this rule exists to kill: a session triages four
197
+ candidates, presents them, ends with "want me to record these?", the
198
+ user moves on — and Replen learned NOTHING. The same four will come back.
199
+ A triage that isn't recorded never happened.
200
+
201
+ Only the user-judgment actions (star / hide / handoff / queue work) wait
202
+ for the user. Verdicts never do.
203
+
180
204
  No marketing voice. No hype. The user is a working engineer; talk to
181
205
  them like a peer. Concrete > clever.
182
206
 
183
207
  ### Step 4 — Present + capture actions
184
208
 
185
- After all writeups, summarise:
209
+ By this point every verdict is ALREADY recorded (3d). After all
210
+ writeups, summarise, and ask only about the actions that genuinely need
211
+ the user's call — skips need nothing further:
186
212
 
187
213
  ```
188
- 3 candidates triaged for tech-news-site:
214
+ 3 candidates triaged for tech-news-site (all verdicts recorded):
189
215
  ✓ adopt: kribblo/node-ffmpeg-installer (high · quick) — ffmpeg-static swap
190
216
  ⏭ port: tj/n (medium · moderate) — version-manager pattern
191
217
  ✗ skip: vercel/turbo (medium · deep) — wrong runtime, already have Vite
192
218
 
193
- For each, what would you like to do? (star / hide / handoff / skip)
219
+ Want the adopt wired up, or any of these starred / hidden / handed off?
194
220
  ```
195
221
 
196
222
  Then, for each candidate, capture the user's choice. For each action,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replen",
3
- "version": "1.0.22",
3
+ "version": "1.0.23",
4
4
  "description": "Make your AI coding tools smarter. One command, no API keys, free. Replen watches what your projects actually do and surfaces a few things worth bringing in each month. Use one as is, port a piece of another, cherry pick an idea, or build it clean room. The match happens inside your AI tool's session. A few actionable matches a month, by design.",
5
5
  "type": "module",
6
6
  "bin": {