In your next Claude Code session in G:\claude-code-desktop-playground\design-generator, have it copy two lines that already exist in tools/draftpick_gate.py (lines 661 and 664: learning.record_picks(...) and learning.record_selection_poll(...)) into ingest_board_selections() in tools/board_ingest.py. That is the function that runs every time you paste your choices back from a work order's selection-board.html page. Then run a one-time backfill of the 56 existing work-orders//selection-handoff.json files (395 picks, June 21 to August 19, 2026) into references/selection-history.jsonl, and rerun tools/selection_report.py so its win-rate tables finally include them. No new habit: it rides the paste-back you already do.
A talk on running AI workers says they need performance reviews, Ray Dalio says write down why at the moment you decide, and Chris Heckman told the cohort to write down what you like in every design. Tim built exactly that record into his design generator, and it has been silently empty since he switched to the selection board.
The seed talk ("The Most Important AI Lesson for Businesses From 2025", captured 2025-12-17) says value comes from rebuilding the process around the digital worker, including "HR for agents": onboarding, performance management, lifecycle. Performance management for a design generator is a running record of which drafts the human kept, which he threw out, and why. Tim built that record. pipeline/learning.py opens by saying the earlier Seedwork attempt failed because there was "no feedback loop — scoring never improved", and it writes every render and every decision to references/selection-history.jsonl.
Counted over the whole file tonight (3,180 events, June 12 to August 20, 2026): 3,018 drafts rendered, 132 pick-or-pass decisions, and the last decision at 2026-06-12 20:04 UTC (3:04 PM Central). 2,706 drafts were rendered after that with no decision recorded. None of the 117 passes carries a reason. The cause is a routing gap, not neglect: from June 21 the picking moved to the standalone selection board, and tools/board_ingest.py writes the produce and rerender handoffs but never calls the learning store. Only the old route, tools/draftpick_gate.py, does, and it also runs the "what drove this cut?" question (record_selection_poll). Both went quiet together. So 395 picks, including 26 rerender notes written in Tim's own words, sit in work-order folders the recommender never reads.
Dalio (Founders #43) is the old version of the idea: record your criteria when you decide, because "you cannot encode what you have never articulated." Heckman gave the cohort the design-AI version on Call #39: Claude does not get smarter between generations; only your written likes and dislikes make it better. No single shelf holds all of this. The talk names the management gap, Dalio says the reason must be captured at the decision, the mastermind applies it to design taste, and only the generator's own files show the record stopped.
Limits, stated plainly. The generator's last logged event is 2026-08-20 and its last commit 2026-09-04 (which added 32 render lines, no decisions). So this pays off the next time it runs; the backfill keeps what was already decided. Of the 395 picks, 24 sit in a selection-handoff-round1-archive.json file and may repeat later picks; the backfill should de-duplicate on render ID.
### Worked examples (rerender notes that never reached the learning store)
### Full counts (whole population)
| Source | Count |
|---|---|
selection-history.jsonl events | 3,180 (3,018 rendered · 117 passed · 15 picked · 16 print-approved · 12 steers · 2 other) |
| Last pick/pass logged | 2026-06-12 20:04 UTC |
| Renders after it, no decision | 2,706 |
| Passes with a reason | 0 of 117 |
| Selection-handoff files | 56 (2026-06-21 → 2026-08-19) |
| Picks inside them | 395 = 327 main + 26 rerender + 24 round-1 archive + 12 produce + 4 tomato4 + 1 tier2 + 1 c19-fresh |
Calls to learning in board_ingest.py | 0 |
recall-kb/Business/Technology/The Most Important AI Lesson for Businesses From 2025 — seed (captured 2025-12-17): "HR for agents", meaning onboarding, performance management and lifecycle, applies to digital workers (line 40).founders-kb/episodes/043-ray-dalio-principles-life-and-work — record decision criteria at the moment of decision; "You cannot encode what you have never articulated" (line 66).wescale-kb/calls/call-39 — Call #39 (2026-07-23): Heckman, "anytime you look at a design and you like it, write down what you like about it... and then feed all of that into Claude" (line 75).wescale-kb/members/alex-baia — the cohort benchmark whose "pickiness" Heckman reframed as taste to be written down.wescale-kb/members/samantha-wright — peer instance: her agent submits designs every morning for an accept or send-back vote.G:\claude-code-desktop-playground\design-generator\ — pipeline/learning.py, references/selection-history.jsonl, tools/board_ingest.py, tools/draftpick_gate.py, work-orders//selection-handoff.json.pipeline/learning.py docstring ("no feedback loop") → full count of selection-history.jsonl → board_ingest.py never calls the learning store → all 56 selection-handoff files enumerated