Experiments on the prompt system
Every change the review track has made to the prompts and instructions, newest first, exactly as logged in source.
E119: Review 2026-10-31 (reduced pass) pending
- Change
land-your-work.mdloses its "Why this has its own prompt" section (the 2026-10-05 stranded-branch story; the opening already says it) and a repeated duplicate-search pointer, 163 to 157 lines (budget 160). Lesson from outside: Google's "a rule should pull its weight" again: history that explains no current action goes.- Result
- (next review)
- Metric
- instruction-line count for
land-your-work.md; compare next review. - Decisions
- candidates unchanged (ventures 2, process 2, review 2: "keep collecting: the intervals overlap"). 47 runs merged since the last review. The 2026-10-30 friction that
measureprinted no DONE line is already fixed (promptctl prints it). Re-randerive.py fetch && build.steering.mdstill over budget (125/120). No audit or drift report (reduced pass).
E118: Review 2026-10-30 night (reduced pass) pending
- Change
steering.mdloses the "Measuring it" paragraph, the doc_friction vs deviations reminder and the "improvement loop" section (restated inprompts/README.md), 137 to 125 lines (budget 120). Lesson from outside: Google's "a rule should pull its weight" (already cited there): each cut text was a pointer to a tool a run finds throughmeasureanyway.- Result
- (next review)
- Metric
- instruction-line count for
steering.md; compare next review. - Decisions
- candidates unchanged (ventures 2, process 2, review 2: "keep collecting: the intervals overlap"; review/2 100% on 23 runs vs review/1 94% on 97). Router count is correct: five reviews landed today, 44 runs merged since the last. Re-ran
derive.py fetch && build. No audit or drift report.
E117: Review 2026-10-30 (second reduced pass) pending
- Change
- none to prompts. The 2026-10-30T11:21 friction (post dated one day ahead, "never says to date with
date -u +%F") is already fixed: the check inplatform/ci/check_post_frontmatter.pynow prints that advice, so the report predates the fix. - Metric
- friction reports naming
check_post_frontmatter.pyor the push hook; compare the next 40 runs. - Decisions
- no candidate changes; same overlap as E115. Top live friction (process/prompt-1.md 8, polish 6, research 5) is run-specific routing or timing, nothing a single edit fixes. No audit or drift report.
E116: Review 2026-10-30 evening (reduced pass) pending
- Change
land-your-work.mdloses its duplicated open-PR search tip (kept induplicate-work.md), 167 to 163 lines (budget 160). Candidates unchanged: ventures 2, process 2, review 2 all "keep collecting: the intervals overlap". No audit or drift report (reduced pass). E115 result: too soon.- Result
- (next review)
- Metric
- instruction-line count for
land-your-work.md; compare next review.
E115: Review 2026-10-30 (reduced pass) pending
- Change
promptctl.py recordno longer refuses when a record for the same session id exists; it writes-2,-3... (scheduled routines reuse session ids; reports 2026-10-29T09:11 and 2026-10-30T02:10 wrote the file by hand). Re-randerive.py fetch && build(3976 rows).- Result
- (next review)
- Metric
- friction reports naming
promptctl.py record; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap" (review/2 100% on 23 runs vs review/1 95% on 94; ventures/2 86% vs 87%; process/2 74% vs 78%). No audit or drift report (reduced pass). Still over budget: steering.md (137/120), land-your-work.md (167/160).
E114: A perf track, about 5% of runs (2026-10-24, owner request) pending
- Change
- new track
perf(prompts/perf/prompt-0.md) at weight 0.05 inrouting.json; ventures and research go from 0.315 to 0.29 each (thepolishtrack had already taken them from 0.34 to 0.315). A perf run measures (ci_profile.py, cProfile,node --cpu-prof), takes the topperf:item in the process backlog or the largest consumer in a fresh reading, ships a change whose output is unchanged, and writes the before and after numbers indocs/history/. Backlog items P048 (guard checkouts), P049 (jobs per PR head) and P050 (Pages test job) seed it. - Why
- the owner, 2026-10-24: "add some work distribution to overall performance engineering across the repo". Three earlier passes each found a large saving (Pages build 3m02s to 1m21s; checkout trimmed by ~135 job-minutes per 98; agent-permission-harness 55s to 4.5s), so the work has paid when done, and only happened when someone asked.
- Measure
- per
perfrun, the metric moved and its before/after in the record'snotes; pool-wide, checkout share and job-minutes per merged PR fromci_profile.pyat each review (baseline 2026-10-24: checkout 40% of 750 job-minutes per 80 minutes; 15 jobs per PR head).
E113: review 2026-10-30 (reduced pass, fortieth run) pending
- Change
research/CLAUDE.mdtorch note says download.pytorch.org was refused by the proxy in three runs on 2026-10-30 (18 to 25 min), so plan for it (reports 2026-10-30T01:35, T03:06, T03:33). Re-randerive.py fetch && build(3932 rows).- Result
- (next review)
- Metric
- friction reports naming
research/CLAUDE.mdaboutpyenv.pytorch time; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E112: review 2026-10-30 (reduced pass, thirty-ninth run) pending
- Change
.claude/hooks/check_posts_before_push.pyblock message says to fix and commit in a separate Bash call (7 live reports 2026-10-29: a fix chained beforegit pushis still blocked). Re-randerive.py fetch && build(3884 rows).- Result
- (next review)
- Metric
- friction reports naming
check_posts_before_push.py; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting"; no audit or drift report (reduced pass).
E111: review 2026-10-29 (reduced pass, thirty-eighth run) pending
- Change
prompts/review/prompt-1.mdstep 1 sayswait_for.pygives up after 100 s (re-poll) and to redirectmeasureplainly, not via a chained subshell (reports 2026-10-28T18:13, 2026-10-29T04:09, T13:22). No derive re-run.- Result
- (next review)
- Metric
- friction reports naming
prompts/review/prompt-1.mdaboutmeasureorwait_fortiming; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) not re-decided here beyond the standing "keep collecting"; no audit or drift report (reduced pass).
E110: review 2026-10-29 (reduced pass, thirty-seventh run) pending
- Change
prompts/redteam/prompt-0.mdsays a stdlibunittesttarget needs nopyenv.pyeither (live report 2026-10-29T11:28). No derive re-run.- Result
- (next review)
- Metric
- friction reports naming
prompts/redteam/prompt-0.mdaboutpyenv.py; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E109: review 2026-10-29 (reduced pass, thirty-sixth run) pending
- Change
platform/ci/wait_for.pydocstring warns that piping it or chaining&& echohides its exit 1 (reports 2026-10-29T06:37 and T07:52, which blamed the tool; it does exit 1 on timeout). Re-randerive.py fetch && build(3758 rows).- Result
- (next review)
- Metric
- friction reports naming
wait_for.pyor background waits; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting"; no audit or drift report (reduced pass).
E108: review 2026-10-29 (reduced pass, thirty-fifth run) pending
- Change
prompts/redteam/prompt-0.mdwarns that--targetskips the slow-suite probe (live report 2026-10-29T02:07: 300 s baseline timeout).- Result
- (next review)
- Metric
- friction reports naming
prompts/redteam/prompt-0.mdabout baseline timeouts; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report, no derive re-run (reduced pass).
E107: review 2026-10-28 (reduced pass, thirty-fourth run) pending
- Change
CLAUDE.mdsays node/venture suites "can" outlast the 120 s tool timeout (the ai-bookkeeper suite, 1748 tests, finished well under it; live report 2026-10-28T22:20) instead of "outlast". Re-randerive.py fetch && build(3669 rows).- Result
- (next review)
- Metric
- friction reports naming
CLAUDE.mdaboutrun_in_backgroundfor node tests; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E106: review 2026-10-28 (reduced pass, thirty-third run) pending
- Change
prompts/redteam/prompt-0.mdstep 1 names two traps from live reports (2026-10-27):--test-force-exittruncating output, and pyenv install blocking a node-target run. Re-randerive.py fetch && build(3624 rows).- Result
- (next review)
- Metric
- friction reports naming
prompts/redteam/prompt-0.mdabout those two traps; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E105: review 2026-10-28 (reduced pass, thirty-second run) pending
- Change
- only the
derive.py fetch && buildre-run (3624 rows). Myresearch/CLAUDE.mdtorch edit was dropped on merge: another run landed the same fix first (pyenv.pynow installs the CPU wheel). - Result
- (next review)
- Metric
- friction reports naming
research/CLAUDE.mdabout the torch install; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E104: review 2026-10-28 (reduced pass, thirty-first run) pending
- Change
research/CLAUDE.mdtorch install line now installsnumpywithtorchand says not to use torch in the foreground before the job prints DONE (live report 2026-10-28T12:05). Re-randerive.py fetch && build(3584 rows).- Result
- (next review)
- Metric
- friction reports naming
research/CLAUDE.mdabout the torch install; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E103: review 2026-10-28 (reduced pass, thirtieth run) pending
- Change
.github/prompts/land-your-work.mdstep 2 says a first push with--force-with-leasefails with "stale info" on a branch with no remote yet (live report 2026-10-28T00:22). Re-randerive.py fetch && build.- Result
- (next review)
- Metric
- friction reports naming
land-your-work.mdabout push failures; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E102: review 2026-10-28 (reduced pass, twenty-ninth run) pending
- Change
prompts/creative/prompt-0.mdstates the episode length range a test enforces (live report 2026-10-27T16:16). Re-randerive.py fetch && build(3487 rows).- Result
- (next review)
- Metric
- friction reports naming
prompts/creative/prompt-0.mdabout episode length; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E101: review 2026-10-27 (reduced pass, twenty-eighth run) pending
- Change
review/prompt-2.mdsays validate failures on other runs' posts and records are one-line fixes for this PR, and thatmeasureholds the shallow lock (2 live reports). Fixed 2 records that failedvalidate(the posts were fixed on main meanwhile).- Result
- (next review)
- Metric
- friction reports naming
prompts/review/prompt-2.mdabout validate or the lock; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit, drift report or derive re-run (reduced pass).
E100: review 2026-10-27 (reduced pass, twenty-seventh run) pending
- Change
prompts/review/prompt-1.mdstep 1 now saysmeasureholds git'sshallow.lock, so run it andderive.py fetchone after the other (live report 2026-10-27T16:14). Re-randerive.py fetch && build(3442 rows).- Result
- (next review)
- Metric
- friction reports naming
prompts/review/prompt-1.mdabout the lock; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E99: review 2026-10-27 (reduced pass, twenty-sixth run) pending
- Change
prompts/explore/prompt-0.mdaudit-skip list now names the htmllang/viewport/alt/relattribute sweeps (3 live reports 2026-10-26 of re-sweeping them).- Result
- (next review)
- Metric
- friction reports naming
prompts/explore/prompt-0.mdabout re-sweeps; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit, drift report or derive re-run (reduced pass).
E98: review 2026-10-27 (reduced pass, twenty-fifth run) pending
- Change
CLAUDE.mdcloud-session pointer now names thepkill -f/pgrep -fhook and the bracket workaround (live report 2026-10-27T07:17; it was documented only incloud-session.md). Re-randerive.py fetch && build(3360 rows).- Result
- (next review)
- Metric
- friction reports about the pkill hook naming
CLAUDE.md; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E97: review 2026-10-27 (reduced pass, twenty-fourth run) pending
- Change
research/CLAUDE.mdnow says to checkimport torchbefore askingpyenv.pyfor torch, and how to install the CPU wheel (3 live reports in 3 days, one a 35 min CUDA pull). Re-randerive.py fetch && build(3319 rows).- Result
- (next review)
- Metric
- friction reports about
pyenv.pyand torch namingresearch/CLAUDE.md; compare the next 40 runs. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E96: review 2026-10-27 (reduced pass, twenty-third run) pending
- Change
research/CLAUDE.mdnow documents the missingpdflatex(texlive install about 10 min, needsapt-get updatefirst), beside the yosys line. Re-randerive.py fetch && build(3279 rows, committed).- Result
- (next review)
- Metric
- "TeX is not in the image" friction reports naming
research/CLAUDE.md; compare the next 40 runs (8 live in the last 3 days, 2 about TeX). - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting: the intervals overlap"; no audit or drift report (reduced pass).
E95: review 2026-10-26 (reduced pass, twenty-first run) pending
- Change
- none to prompts or code. Checked E92's concern: all 170 records dated 2026-10-26 carry
ended, the last review ended 13:25Z, and 61 non-review runs ended after it. At about 170 runs a day,review_every = 40fires roughly four times a day by design, so the repeated reduced passes are the cadence, not a counting bug. - Result
- (next review)
- Metric
- none new. Open question for the owner or a process run: raise
review_every(e.g. to 150) if four reduced reviews a day add little. - Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting"; no audit or drift report (reduced pass).
E94: review 2026-10-26 (reduced pass, twenty-second run) pending
- Change
prompts/review/prompt-1.mdstep 1 now saysmeasureitself needsrun_in_backgroundin a shallow clone and thatderive.py fetch && buildruns as its own command. Both timeouts were reported again in the last 3 days (2026-10-25T16:22, 2026-10-26T13:25).- Result
- (next review)
- Metric
- "review/prompt-1.md" friction reports about the 120 s timeout; compare the next 40 runs.
- Decisions
- candidates still "keep collecting: the intervals overlap". No derive fetch, audit or drift report (reduced pass).
E92: review 2026-10-26 (reduced pass, twentieth run) pending
- Change
_landing_orderinprompts/promptctl.pyignores any commit that adds more than 50 run records (BULK_ADD), andruns_since_reviewbreaks ties by the record'sendedtime. In a shallow clone the boundary commit lists all ~3,100 records as "added" together, so the 2026-10-26 review records ranked arbitrarily and the "since the last review" count read 83 (45 after the fix), one reason review kept being drawn (E80 to E91 were all reduced passes on one day).- Result
- (next review)
- Metric
- fewer than one review per ~40 merged runs; compare review count per day over the next 3 days.
- Decisions
- candidates (ventures 2, process 2, review 2) still "keep collecting"; no audit or drift report (reduced pass).
E91: review 2026-10-26 (reduced pass, nineteenth run) pending
- Change
loadPostsinplatform/pages/writing.mjsnow leaves out posts dated after today (E90 finding), so the 30 posts dated 2026-10-27 to 2026-10-29 appear on their dates (the site rebuilds every three hours) instead of showing a false date in the feed, Atom andllms.txt. No post is deleted. Test added inwriting.test.mjs.- Result
- (next review)
- Metric
- none for prompts. Check the feed on 2026-10-27 shows them.
- Decisions
- no audit or drift report (reduced pass).
E90: review 2026-10-26 (reduced pass, eighteenth run) pending
- Change
- none to prompts or docs. Regenerated
prompts/derived/. Candidates re-measured: ventures 2, process 2 and review 2 all "keep collecting" (intervals overlap). - Result
- (next review)
- Metric
- none new. E79 to E89 results stay open: too few runs since.
- Decisions
- no audit or drift report (reduced pass).
E89: review 2026-10-25 (reduced pass, seventeenth run) pending
- Change
- none to prompts or docs. Regenerated
prompts/derived/. Candidates re-measured: ventures 2, process 2 and review 2 all "keep collecting" (intervals overlap). The repeated "friction table mixes live and fixed items" report is already handled by the live/fresh split inmeasure; the remainder are fixes made outside the reported file, which no tag can detect. - Result
- (next review)
- Metric
- none new. E79 to E88 results stay open: too few runs since.
- Decisions
- no audit or drift report (reduced pass).
E88: review 2026-10-25 (reduced pass, sixteenth run) pending
- Change
- none to prompts or docs. Regenerated
prompts/derived/. Candidates re-measured: ventures 2, process 2 and review 2 all "keep collecting" (intervals overlap). Live friction in the last 3 days is either already fixed (post front matter:check_post_frontmatter.py) or an environment hook report (block_pkill_f.py) with no clear doc fix. - Result
- (next review)
- Metric
- none new. E79 to E87 results stay open: too few runs since.
- Decisions
- no audit or drift report (reduced pass).
E87: review 2026-10-25 (reduced pass, fifteenth run) pending
- Change
prompts/research/prompt-1.mdstep 3 gains one sentence: for a step longer than an hour, re-run the programmeCLAIM CHECKjust before merging. Reason: three live reports in 24 h (research/PROGRAMMES.md,prompts/research/prompt-0.md,prompts/research/prompt-1.md) say a sibling landed the same programme milestone (3c, m7i) during a long step, after the claim check at the start found nothing.- Result
- (next review)
- Metric
- duplicated programme milestones reported in research
doc_friction; compare the next 15 research runs against the 3 in the last day. - Decisions
- no audit or drift report (reduced pass).
E86: review 2026-10-25 (reduced pass, fourteenth run) pending
- Change
- none to prompts or docs. Regenerated
prompts/derived/. Candidates re-measured: ventures 2, process 2 and review 2 are all "keep collecting" (intervals overlap). Checked the "measure --section times out with no warning" report:_deepen_shallow_historyalready prints a 70 s notice to stderr, so the report is stale, not a doc fault. - Result
- (next review)
- Metric
- none new. E79 to E85 results stay open: too few runs since.
- Decisions
- no audit or drift report (reduced pass).
E85: review 2026-10-24 (reduced pass, thirteenth run) pending
- Change
- none to prompts or docs. Regenerated
prompts/derived/. Candidates re-measured: ventures 2, process 2 and review 2 are all "keep collecting" (intervals overlap). Checked the "pyenv.py output neededtail -1" friction inprompt.md's reports: stdout is only the interpreter path (verified withod -c), so that report is stale, not a doc fault. - Result
- (next review)
- Metric
- none new. E79 to E84 results stay open: too few runs since.
- Decisions
- no audit or drift report (reduced pass).
E84: review 2026-10-24 (reduced pass, twelfth run) pending
- Change
- none to prompts or docs. Candidates re-measured after regenerating
prompts/derived/: ventures 2, process 2 and review 2 are all "keep collecting" (intervals overlap). The friction table already hides since-changed reports (promptctl.pylive/tagged), so the earlier "mostly fixed entries" reports have their fix; the remaining live items are owner rows. - Result
- (next review)
- Metric
- none new. E79 to E83 results stay open: too few runs since.
- Decisions
- no audit or drift report (reduced pass).
E83: review 2026-10-24 (reduced pass, eleventh run) pending
- Change
- none to prompts or docs. Candidates re-measured: ventures 2, process 2 and review 2 are all "keep collecting" (intervals overlap). Regenerated
prompts/derived/. Top friction files are unchanged from E81; the live items are owner rows and the already-fixed entries in the process prompt's friction list (107 reports), ameasurepresentation problem. - Result
- (next review)
- Metric
- none new. E79, E80 and E81 results stay open: too few runs since.
- Decisions
- no audit or drift report (reduced pass, recent outputs mostly doc-only or research).
E82: review 2026-10-24 (reduced pass, tenth run) pending
- Change
prompts/review/prompt-1.mdtrimmed from 136 to 129 lines, under the 130 budget (friction: "File is 139 lines vs 130 budget").- Result
- (next review)
- Metric
- over-budget friction reports on review prompts, over the next 40 runs (baseline: 1 recent).
- Decisions
- ventures 2, process 2, review 2 keep collecting (intervals overlap). No audit or drift report (reduced pass). E80 and E81 results: too few runs since.
E81: review 2026-10-24 (reduced pass, ninth run) pending
- Change
prompts/review/prompt-1.mdstep 1 now saysderive.py fetchtakes 2 to 5 min and how to wait for it (friction: 3 reports on fetch stalls and blocked waits). Regeneratedprompts/derived/.- Result
- (next review)
- Metric
derive.py fetchfriction on review prompts, over the next 40 runs (baseline: 3 recent).- Decisions
- ventures 2, process 2, review 2 keep collecting (intervals overlap). E78 and E80 results: too few runs since. No audit or drift report (reduced pass).
E80: review 2026-10-24 (reduced pass, eighth run) pending
- Change
- retired research candidate 1 (
routing.json: candidatenull, share 0): 3 integrity issues in 184 runs against 7 in 877 for the champion, andmeasuresuggests retire. Small counts, so the call is soft; success rates are level (97% vs 98%).prompt.mdtrimmed from 103 to the 100-line budget (friction: 2 reports said it was over budget). - Result
- (next review)
- Metric
prompt.mdover-budget friction reports, over the next 40 runs (baseline: 2 recent). Research integrity issues per run on champion 0.- Decisions
- ventures 2, process 2, review 2 keep collecting (intervals overlap). No audit or drift report (reduced pass).
E79: review 2026-10-24 (chronicle and lessons pass) pending
- Change
- owner asked for a documentation review "from a chronicalling and lesson pov".
portfolio/hosting/README.mdrewritten as current state plus one-line lessons (362 → 122 lines); the old text moved verbatim todocs/history/hosting-2026-08-25-to-10-24.md; newdocs/history/README.mdindexes every history file with its lesson. Stale deploy-first advice fixed insession_gate.py,allocate.py,AGENTS.md,PRODUCT_PLAYBOOK.md,DEVELOPMENT_QUALITY.md. Report:docs/reports/2026-10-24-reference-docs-are-not-chronicles.md. - Result
- (next review)
- Metric
- friction reports naming
portfolio/hosting/README.mdor stale hosting/deploy-first advice, over the next 40 runs (baseline: count at the next review; a docs change is judged before/after, not A/B). - Decisions
- no candidate scoring this run (brief was a docs review).
E78: review 2026-10-23 (reduced pass, seventh run) pending
- Change
CLAUDE.mdpyenv pointer notes the first install can exceed the 120 s tool timeout and should run in the background (friction onresearch/CLAUDE.md: pyenv.py took >120 s in the foreground).- Result
- (next review)
- Metric
- friction reports about pyenv.py foreground timeouts, over the next 40 runs (baseline: 1 recent). The
sleep/Monitor friction is already covered bycloud-session.md"Long commands", so no change. - Decisions
- all four candidates keep collecting (intervals overlap / too few runs). No audit or drift report (reduced pass).
E77: review 2026-10-23 (reduced pass, sixth run) pending
- Change
.github/prompts/cloud-session.md"Long commands" gained a two-line recipe for waiting withMonitor(until-loop on the output file,echo DONEat the end); friction onprompt.mdandresearch/CLAUDE.mdsaid waiting withsleepblocked was awkward.- Result
- (next review)
- Metric
- friction reports about waiting on background jobs, over the next 40 runs (baseline: 2 recent).
- Decisions
- all four candidates keep collecting (intervals overlap / too few runs).
derived/rebuilt (2572 rows). No audit or drift report (reduced pass).
E76: review 2026-10-23 (reduced pass, fifth run) pending
- Change
CLAUDE.mdcloud-session pointer names the workingnode --test '*.test.mjs'form (friction onCLAUDE.md:node --test .fails; the fix lived only incloud-session.md).- Result
- (next review)
- Metric
- friction reports about
node --test .failing, over the next 40 runs (baseline: 1 recent). Checkedsession_gate.pypublish-branch friction: already fixed, so no change. - Decisions
- all four candidates keep collecting (intervals overlap / too few runs).
derived/rebuilt (2524 rows). No audit or drift report (reduced pass).
E75: review 2026-10-23 (reduced pass, fourth run) pending
- Change
.github/prompts/cloud-session.mdnote on the process-kill hook trap now says thepgrepform is refused too (friction onresearch/CLAUDE.mdreported two retries on the rejection).- Result
- (next review)
- Metric
- friction reports about that hook rejection, over the next 40 runs (baseline: 1 recent).
- Decisions
- all four candidates keep collecting (intervals overlap / too few runs).
derived/rebuilt. No audit or drift report (reduced pass).
E74: review 2026-10-23 (reduced pass, third run) pending
- Change
research/CLAUDE.mdgained a 3-line note thatwntrrun_simwritestemp.*in the cwd, so parallel EPANET runs need a distinctfile_prefix.- Result
- (next review)
- Metric
- friction reports against
research/CLAUDE.mdabout simulator temp files colliding, over the next 40 runs (baseline: 1 today). - Decisions
- all four candidates (ventures 2, research 1, process 2, review 2) unchanged: intervals overlap, or fewer than 10 runs.
derived/regenerated. No audit or drift report (reduced pass).
E73: review 2026-10-23 (reduced pass, second run) pending
- Change
.github/prompts/cloud-session.md"Long commands" gained one sentence: don't chain a long command with commit/push in one call, and use absolute paths forrm -rfafter acd(the safety check rejects relative globs).- Result
- (next review)
- Metric
- friction reports against
CLAUDE.mdabout long commands delaying a commit or a blocked relative-globrm, over the next 40 runs (baseline: 2 recent). - Decisions
- research candidate 1 kept (same non-gap on integrity issues as E72; E55 proposal stands). ventures 2, process 2 and review 2 unchanged (overlap / too few runs).
derived/regenerated. No audit or drift report (reduced pass).
E72: review 2026-10-23 (reduced pass) pending
- Change
.github/prompts/cloud-session.md"Python and tests" gained a 3-line fallback for whenpyenv.pyfails (PEP 668, import name differing from the pip name): a plain venv, in the background.- Result
- (next review)
- Metric
- friction reports against
platform/ci/pyenv.pyorresearch/CLAUDE.mdabout pyenv/PEP 668 failures, over the next 40 runs (baseline: 5 recent on pyenv.py, 3 on research/CLAUDE.md today). - Decisions
- research candidate 1 kept (retire verdict fires on 1/158 vs 5/799 integrity issues, 0.0063 vs 0.0063, not a real gap; E55 proposal stands). ventures 2, process 2 and review 2 unchanged (overlap / too few runs).
derived/regenerated. No audit or drift report (reduced pass).
E71: review 2026-10-22 pending
- Change
prompts/steering.mdcut from 161 to 136 lines (budget 120): the rule/guideline example table, the "habits" list, the JSON deviation example and the Measuring paragraph folded into the prose that already says the same.prompt.mdclosing paragraph rewrapped.- Metric
measure"Instruction lines" for steering.md and friction reports naming it, over the next 40 runs (baseline: 0 friction reports on it; the cut is for read cost, not for a known failure).- Decisions
- research candidate 1 kept (retire verdict fires on one disclosed integrity caveat; E55 proposal stands). ventures 2, process 2, review 2 unchanged (overlap / too few runs).
derived/regenerated (fetch ran, 50 PRs).
E70: review 2026-10-22 (reduced pass) pending
- Change
prompts/review/prompt-1.mdstep 1 now namesmeasure --section(it exists; the last four reviews still reported "measure is 50KB+ with no section flag").- Result
- (next review)
- Metric
- friction reports against
prompts/review/prompt-1.mdsaying measure has no section flag, over the next 40 runs (baseline: 4 recent). - Decisions
- research candidate 1 kept (retire verdict fires on 1/154 vs 5/790 integrity issues, a 0.0065 vs 0.0063 difference, not a real gap; E55 proposal stands). ventures 2, process 2 and review 2 unchanged (overlap / too few runs).
derived/regenerated (50 PRs). No audit or drift report (reduced pass).
E69: review 2026-10-22 (reduced pass) pending
- Change
portfolio/flagships.yamlwall-framing-takeoffnext:cut from about 5k to 0.6k characters: open items only, landed history left to the README and ROADMAP (the follow-up after E66 and E67). changepoint-detector'snext:is the remaining long one.- Result
- (next review)
- Metric
- friction reports against
portfolio/flagships.yaml, over the next 40 runs (baseline: 42 total; E66 and E67 cuts are in the same window). - Decisions
- research candidate 1 kept (retire verdict still fires only on the one disclosed caveat; E55 proposal stands). ventures 2, process 2 and review 2 unchanged (overlap / too few runs).
derived/regenerated. No audit or drift report (reduced pass).
E68: review 2026-10-22 (reduced pass) pending
- Change
portfolio/flagships.yamlchangepoint-detectornext:cut from about 11k to 0.4k characters: open items only, landed history left to the README and git (the follow-up E67 named; all three longnext:fields are now cut).- Result
- (next review)
- Metric
- friction reports against
portfolio/flagships.yaml, over the next 40 runs (baseline: E66/E67 window). - Decisions
- research candidate 1 kept (retire verdict still fires only on the one disclosed caveat; E55 proposal stands). ventures 2, process 2 and review 2 unchanged (overlap / too few runs).
derived/regenerated. No audit or drift report (reduced pass).
E67: review 2026-10-22 (reduced pass) pending
- Change
portfolio/flagships.yamleinvoice-preflightnext:cut from about 7.5k to 0.6k characters: open items only, landed history left to the README and git (the follow-up E66 named). changepoint-detector'snext:is the remaining long one.- Result
- (next review)
- Metric
- friction reports against
portfolio/flagships.yaml, over the next 40 runs (baseline: 40 total; E66's ai-bookkeeper cut is in the same window). - Decisions
- research candidate 1 kept (retire verdict still fires only on the one disclosed caveat; E55 proposal stands). ventures 2, process 2 and review 2 unchanged (overlap / too few runs).
derived/regenerated (fetchran, 25 of 43 PRs). No audit or drift report (reduced pass).
E66: review 2026-10-22 (reduced pass) pending
- Change
portfolio/flagships.yamlai-bookkeepernext:cut from 18.7k to about 1.1k characters: open items only, landed history left to the README and git. Cause: 3 friction reports today that it was a duplicated run-on. The other flagships'next:(changepoint-detector 10.5k, einvoice-preflight 8k) are the same shape and are the next cut.- Result
- (next review)
- Metric
- friction reports against
portfolio/flagships.yaml, over the next 40 runs (baseline: 32 total, 3 on ai-bookkeeper today). - Decisions
- research candidate 1 kept (retire verdict still fires only on the one disclosed caveat; E55 proposal stands). ventures 2, process 2 and review 2 unchanged (overlap / too few runs).
derived/regenerated (fetchran, 25 of 44 PRs). No audit or drift report (reduced pass).
E65: review 2026-10-22 (reduced pass) pending
- Change
prompt.mdtrimmed from 103 to 102 lines, budget 100 (the explore/creative paragraph no longer restates percentages that live inrouting.json).derived/regenerated (fetchran, 25 of 43 PRs before its time cap).- Result
- (next review)
- Metric
- Instruction lines for
prompt.md(baseline 103, budget 100) and friction reports against it, over the next 40 runs (baseline: 54 total). - Decisions
- research candidate 1 kept (retire verdict still fires only on the one disclosed caveat; E55 proposal stands). ventures 2, process 2 and review 2 unchanged (overlap / too few runs). No audit or drift report (reduced pass; the 2026-10-21 report stands).
E64: review 2026-10-21 (reduced pass, late night) pending
- Change
.github/prompts/cloud-session.mdgains "Browser and process tools": the Playwright/Chromium env vars for cloud sessions and thepkill -fself-kill trap (2 reports each in the last day).derived/regenerated (fetchran).- Result
- (next review)
- Metric
- friction reports about playwright paths or
pkill, over the next 40 runs (baseline: 2 and 1). - Decisions
- research candidate 1 kept (retire verdict still fires only on the one disclosed caveat; E55 proposal stands). ventures 2, process 2 and review 2 unchanged (overlap / too few runs). No audit or drift report (reduced pass; four reviews already ran today).
E63: review 2026-10-21 (reduced pass, late night) pending
- Change
prompts/redteam/prompt-0.mdgives a cutoff for slow suites (--timeout; pick another target when baseline x mutants > ~20 min). Cause: 3 reports today of changepoint-detector campaigns past 10-30 min.derived/regenerated.- Result
- (next review)
- Metric
- redteam/prompt-0 friction about slow suites, over the next 40 runs (baseline: 3).
- Decisions
- research candidate 1 kept (E55 caveat); ventures 2, process 2 and review 2 unchanged (overlap / too few runs). No audit or drift report (reduced pass; the 2026-10-21 report stands).
E62: review 2026-10-21 (reduced pass, night) pending
- Change
.github/prompts/cloud-session.md("Python and tests") says to install with"$PY" -m pipand not to run two pip installs at once (1 report today: pip went to python3.13, concurrent installs corrupted the env).derived/regenerated.- Result
- (next review)
- Metric
- friction reports about pip/python version mismatch, over the next 40 runs (baseline: 1).
- Decisions
- research candidate 1 kept (retire verdict still fires only on the one disclosed caveat; E55 proposal stands). ventures 2 (overlap), process 2 (1 run) and review 2 (10 runs, 100% vs 90%, overlap) unchanged. No audit or drift report (reduced pass).
E61: review 2026-10-21 (full pass, evening) pending
- Change
steering.md"improvement loop" cut from 17 to 7 lines (duplicatedprocess/prompt-1.md); 171 -> ~161 lines.derived/regenerated.- Result
- (next review)
- Metric
- process/2
partialrate vs process/1 (baseline 27%), once each has 10+ runs;steering.mdfriction reports (baseline 0 this window). - Decisions
- research candidate 1 kept (retire verdict fires only on the one disclosed caveat; E55). ventures 2 (90% vs 89%, overlap) and review 2 (9 runs) unchanged. Audit clean (3 PRs); drift report
drift/2026-10-21.md.
E60: review 2026-10-21 (reduced pass, afternoon) pending
- Change
CLAUDE.md("Hosting") andportfolio/hosting/README.md("What is served now") nameduncan-haywood.github.io/oss-monorepo/; the old/monorepo-projects/path 404s since the repo rename (2 reports today; the full URL sweep is the owner's draft PR #8592, left alone).- Result
- (next review)
- Metric
- friction reports that the Hosting URL is wrong, over the next 40 runs (baseline: 2).
- Decisions
- research candidate 1 kept (retire verdict still fires on the one disclosed caveat; E55). ventures 2 and review 2 unchanged (overlap / 9 runs).
derived/regenerated. No audit or drift report (reduced pass).
E59: review 2026-10-21 (reduced pass, morning) pending
- Change
prompts/research/prompt-0.mdandresearch/PROJECTS.mdno longer hard-code "nineteen tracks" (there are 21; a count in prose drifts).derived/regenerated.- Result
- (next review)
- Metric
- friction reports saying the track count is stale, over the next 40 runs.
- Decisions
- research candidate 1 kept (retire verdict still fires on the one disclosed caveat; the
verdictfix remains the E55 proposal). ventures 2 and review 2 unchanged (overlap / 9 runs). No audit or drift report (reduced pass).
E58: review 2026-10-21 (reduced pass) pending
- Change
CLAUDE.mdsays to fetch branches with--depth=40(a bare fetch pulled ~5 GB);research/CLAUDE.mdnames the exact--writecommand instead of "step 4's" (reported as pointing at a flagbuild.pylacks).derived/regenerated.- Result
- (next review)
- Metric
- friction reports on those two lines, per run, over the next 40 runs.
- Decisions
- research candidate 1 kept (the retire verdict still fires on the one disclosed caveat; see E55). ventures 2 and review 2 unchanged (overlap / under 10 runs). No audit or drift report (reduced pass).
E57: review 2026-10-20 (reduced pass, night) pending
- Change
portfolio/router/allocate.pyprints the first 500 characters of a flagship'snext:in the work queue and points atflagships.yamlfor the rest (84 friction reports on the file, mostly the multi-KB blob per row).test_allocate.pypasses (73 tests).derived/regenerated.- Metric
- friction reports naming allocate.py output size, per run, over the next 40 runs (baseline 84 in 1,770, most of them the blob).
- Decisions
- research candidate 1: the verdict says retire on one integrity issue (the disclosed search-excerpt caveat); kept, as in E54/E55, and the
verdictfix remains a proposal for the owner (E55). ventures 2 and review 2 unchanged (overlap / under 10 runs). No audit or drift report (reduced pass).
E56: review 2026-10-20 (night) pending
- Change
runcost.py attachtakes--human-hours/--human-basisas optional (basis still required with hours);prompt.mdsays so (and is back to its 100-line budget). Scheduled runs skipped the whole cost step because the human-hours estimate had no basis, losing tokens and dollars with it (prompt.md/runcost.py: ~46 and 3 friction/deviation reports).- Result
- (next review)
- Metric
- share of new records with a
usageblock, over the next 40 runs (baseline: median API $ measured for about 55% of runs inmeasure). - Decisions
- ventures 2 and review 2 unchanged (intervals overlap / 8 runs). Research candidate 1: the retire suggestion fires on one disclosed caveat (see E55); kept, 99% vs 98% success.
derived/regenerated. No audit (reduced pass), no new candidate.
E55: review 2026-10-20 (reduced pass, evening) pending
- Change
- none to prompts.
derived/regenerated. A fix to the retire rule inpromptctl.py verdict(retire on integrity issues only at two or more, since one self-disclosed caveat on research/1 keeps firing it) was blocked by the auto-mode classifier twice (this run and draft PR #8901), so it is a proposal. - Result
- (next review)
- Proposal for the owner
- allow
verdictto require 2+ integrity issues before "retire: more integrity issues". Three review friction reports on 2026-10-20 describe the manual look it costs each review. - Decisions
- research candidate 1 kept (99% vs 98% success). ventures 2 and review 2 unchanged (overlap / under 10 runs). No audit or drift report (reduced pass).
E54: review 2026-10-20 (reduced pass, 12:xx) pending
- Change
verify-and-merge.mdline for--for-changesnow says what to do when it stalls (docs-only diff, or a diff reaching 100+ workflows): run the reached workflows by name. Five friction reports in the window (the latest three on 2026-10-20) describe the stall.- Result
- (next review)
- Metric
- friction reports naming
run_workflow_locally.py --for-changesstalling, per run, over the next 40 runs (baseline 5 in 1,658). - Decisions
- research candidate 1 kept again (116 runs, 99% vs 98% success; its one integrity issue is the disclosed search-excerpt caveat the retire rule counts). ventures 2 and review 2 unchanged (intervals overlap / under 10 runs).
derived/regenerated. No audit or drift report (reduced pass).
E53: guidance map and layers, 2026-10-20 (owner-requested, not a review) pending
- Change
- one map of the guidance (
prompts/SYSTEM.md,prompts/system.json,promptctl.py map), with seven layers and precedence.validatenow fails on a guidance file that has no map entry.INSTRUCTION_FILESand the budgets are read from the map. Operational detail moved down a layer: fromCLAUDE.md, "Reading CI" went toverify-and-merge.md, "Duplicate PRs" toduplicate-work.md, and the hosting state toportfolio/hosting/README.md. The cloud-container notes, which had been copied intoCLAUDE.md,prompt.md(the E49 and E50 lines) andland-your-work.md, went to one file,cloud-session.md.CLAUDE.mdwent from 360 to 306 lines. - Result
- (next review)
- Metric
- the share of runs whose
doc_frictionnamesCLAUDE.md,prompt.mdorland-your-work.mdon gh/MCP, shallow clones, pytest or long commands, over the next 200 runs. The baseline (keyword matches, an upper bound) is, out of 1,491 runs since 2026-10-14: long commands 69, pytest 48, shallow 34, gh/MCP 23. E49 and E50 are now judged oncloud-session.md, whichprompt.mdlinks to. Also: any friction item that says a moved fact could not be found. - Evidence strength
- a before-and-after comparison, not A/B.
E52: review 2026-10-20 (second) pending
- Change
prompt.mdstep 1 says which track an owner request that fits none takes (prompt.md/routing.jsonfriction: 3 reports of forcing a track with no rule).- Metric
- "no track fits owner task" friction reports on
prompt.md, next 20 runs. - Candidates
- research/1 vs 0:
measuresays retire (1 integrity issue in 110 runs vs 4 in 618), but the one issue is a self-disclosed caveat (search-excerpt figures marked in the data and README), not a violation; success is 100% vs 98%. Kept, 0.2 share. ventures 2 / review 2 unchanged (overlap, under 10 runs). Reduced pass: no audit, drift report orderived/regeneration.
E51: review 2026-10-20 pending
- Change
research/CLAUDE.mdintro names the rootCLAUDE.mdrules that still apply to research (public-repository and landing rules), not only the ones that do not (prompt.mdfriction: took a read to reconcile).derived/regenerated (1513 runs).- Result
- (next review)
- Metric
- "root CLAUDE.md reconcile" friction reports on
prompt.md/research/CLAUDE.md, next 20 research runs. - Candidates
- unchanged (review/2 has 8 runs; ventures 2 / research 1 intervals overlap). Reduced pass: no audit or drift report (hours-old report).
E50: review 2026-10-19 (tenth) pending
- Change
prompt.mdstep 2 gives thepyenv.py pytestone-liner (topCLAUDE.md/prompt.mdfriction: barepython3lacked pytest, runs ran tests by hand).derived/regenerated.- Result
- (next review)
- Metric
- "pytest absent" friction reports on
CLAUDE.md/prompt.md, next 20 runs. - Candidates
- unchanged (review/2 has 8 runs; ventures 2 / research 1 overlap). Reduced pass: no audit or drift report (hours-old report).
E49: review 2026-10-19 (eighth) pending
- Change
prompt.mdstep 2 says to retrycreate_pull_requeston HTTP 500 (prompt.mdfriction: two 500s before success, no doc mentioned retrying).- Result
- (next review)
- Metric
- "create_pull_request 500" friction reports on
prompt.md, next 20 runs; expect none. - Candidates
- unchanged (ventures 2 / research 1 intervals overlap; review/2 has 7 runs). Reduced pass: no audit, drift report or
derived/regeneration (reports hours old, recent outputs research/doc-only).
E48: review 2026-10-19 (seventh) pending
- Change
research/CLAUDE.mdpyenv step now tells runs to test-importpytestalong with the project's libraries before skipping the venv (friction: a plain attempt failed on missing pytest). The apt-get andrun_in_backgroundreports were already fixed in that file.- Result
- (next review)
- Metric
- "pyenv/pytest detour" friction reports on
research/CLAUDE.md, next 20 research runs. - Candidates
- unchanged (review/2 has 7 runs; ventures 2 / research 1 overlap). Reduced pass: no audit or drift report (hours-old report).
E47: review 2026-10-19 (sixth) pending
- Change
- none to prompts or docs.
derived/regenerated (1372 runs). The "due counter ignores same-day reviews" friction onprompts/review/prompt-1.mdis already fixed inpromptctl.py(routecomment near line 147), so no edit; the reports are from runs before that fix. - Result
- (next review)
- Metric
- unchanged from E45/E46.
- Candidates
- unchanged (ventures 2 / research 1 intervals overlap; review/2 has 7 runs). Reduced pass: no audit or drift report (hours-old report).
E46: review 2026-10-19 (fifth) pending
- Change
prompts/research/prompt-0.mdclaim step grepsgit ls-treefor a keyword instead of reading the ~670-line listing (research/CLAUDE.mdfriction).- Result
- (next review)
- Metric
- "ls-tree prints ~670 lines" friction reports, next 20 research runs; expect none.
- Candidates
- unchanged. Reduced pass: no audit or drift report (hours-old report, recent outputs research/doc-only).
pyenv.pyre-checked: works now.
E45: review 2026-10-19 (fourth) pending
- Change
research/_shared/pick_track.pysays when the drawn track already has 40+ projects, that a redraw is fine, and names the three emptiest tracks (research/PROJECTS.mdfriction: draws landing on saturated tracks 4 and 5 cost a run its first reads).derived/regenerated.- Result
- (next review)
- Metric
- "saturated track / micro-variant chain" friction reports in
research/PROJECTS.md, next 20 research runs; expect fewer. - Candidates
- unchanged (review/2 has 7 runs; ventures 2 / research 1 overlap). Reduced pass: no audit (recent outputs doc-only or research); no new drift report (
prompts/drift/2026-10-19.mdis hours old).
E44: review 2026-10-19 (third) pending
- Change
platform/ci/pyenv.pytries the private venv beforeapt-get(apt-get update is slow and often fails; PEP 668 pip failures and 120s foreground timeouts were 5+research/CLAUDE.mdfriction reports). Tests pass (10).- Result
- (next review)
- Metric
- friction reports about pyenv PEP 668 / timeouts, next 20 research runs; expect none.
- Candidates
- unchanged (review/2 has 7 runs; ventures 2 / research 1 overlap). Reduced pass: no derive fetch or audit (recent outputs doc-only or research).
E43: review 2026-10-19 (second) pending
- Change
allocate.pyrank()breaks merit ties by least-worked first (ledger entries + portfolio mentions, ascending) before name. Top rows were a merit tie sorted alphabetically, so every run met the same already-deep ventures (reverb, where-to-sell; the top friction inCLAUDE.mdandventures/prompt-1.md). Top 3 now include 0-ledger ventures.- Result
- (next review)
- Metric
- "allocator top rows already deep" friction reports, next 20 ventures runs; expect fewer.
- Candidates
- unchanged.
test_allocatepasses (57 tests).
E42: review 2026-10-19 pending
- Change
research/CLAUDE.mdpyenv note now says first use can take over 2 minutes and to run it withrun_in_background(E41 said ~20s; 5 reports of a 120s foreground timeout since).derived/regenerated (53 PRs).- Result
- (next review)
- Metric
- friction reports about pyenv foreground timeouts, next 20 research runs; expect none.
- Candidates
- unchanged (ventures 2 / research 1 overlap; review/2 has 7 runs). Audit not run (recent outputs doc-only or mirrored).
- Drift
prompts/drift/2026-10-19.md.
E41: review 2026-10-18 (seventh) pending
- Change
research/CLAUDE.mdnow says the firstpyenv.pycall takes ~20s and prints install chatter on stderr (3 friction reports). The yosys/apt-get reports inCLAUDE.mdfriction were already fixed (lines 76-77); measure still lists them as latest.- Result
- (next review)
- Metric
- friction reports about pyenv first-use time, next 20 research runs; expect none.
- Candidates
- unchanged (ventures 2 / research 1 overlap; review/2 has 7 runs).
derived/not regenerated, audit not run (no GitHub API fetch attempted; recent outputs doc-only/research).
E40: review 2026-10-18 (sixth) pending
- Change
session_gate.pystale-snapshot reason now says "after your PR merges" up front. It used to say "before anything else" and then, three sentences later, that the script refuses a work branch (35 friction reports on the gate, the latest several on exactly this).- Result
- (next review)
- Metric
- friction reports naming
session_gate.pyabout the publish order, next 20 runs that run the gate; expect none. - Candidates
- unchanged (ventures 2 / research 1 overlap; review/2 has 7 runs).
- Drift
prompts/drift/2026-10-18f.md.
E39: review 2026-10-18 (fifth) pending
- Change
- no prompt or doc change. Audit sample (recent venture PRs) found one shipped regression (#8038, fixed by #8041); added a header/row cell-count test to
league-schedule-generator. - Result
- (next review)
- Metric
- audit runs that find a defect in a recent venture PR; the audit is runnable when it names a venture with
node --test. - Candidates
- unchanged. Drift:
prompts/drift/2026-10-18e.md.
E38: review 2026-10-18 (fourth) pending
- Change
research/_shared/pick_track.pydoes the track draw thatresearch/PROJECTS.md"Picking work" step 1 describes (a report said no script did it); the step is now one line plus the command.- Result
- (next review)
- Metric
- friction reports about the track draw, next 40 research runs; expect none.
- Candidates
- unchanged (ventures 2 / research 1 overlap; review/2 has 6 runs).
derived/regenerated (25 of 29 PRs). Audit not run (recent outputs mirrored or doc-only). - Drift
prompts/drift/2026-10-18d.md.
E37: review 2026-10-18 (third) pending
- Change
research/PROJECTS.md"Picking work" step 1 gives the track-draw formula (2 reports said the number-to-track mapping was a guess).- Result
- (next review)
- Metric
- friction reports about the track draw, next 40 research runs; expect none.
- Candidates
- unchanged (ventures 2 / research 1 overlap; review/2 has 6 runs). Open friction not fixed: ventures runs report that router top candidates are already deep;
allocate.pyneeds its own run.
E36: review 2026-10-18 (second) pending
- Change
redteam.pyruns suites withPYTHONDONTWRITEBYTECODE=1(stale.pyckept serving a same-size mutant).- Result
- (next review)
- Metric
- friction reports naming
prompts/redteam/prompt-0.mdabout stale bytecode, next 20 redteam runs; expect none. - Candidates
- unchanged. Drift:
prompts/drift/2026-10-18b.md.
E35: review 2026-10-18 pending
- Change
- none to prompts or docs. Candidates unchanged (ventures 2 / research 1 overlap their champions; review/2 has 5 runs, fewer than 10).
derived/regenerated;pyenv.pyfriction checked and already fixed onmain. - Result
- (next review)
- Metric
- friction reports naming
research/CLAUDE.mdaboutpyenv.py, next 40 runs; expect none. - Drift
prompts/drift/2026-10-18.md.
E34: review 2026-10-17 (sixth review that day) pending
- Change
research/PROJECTS.mdstep 2 of "Picking work" tells a run to ask a new question when a track's next-step chain has gone to micro-variants (31 reports onprompts/research/prompt-0.md, the latest about the saturated chain).- Result
- (next review)
- Metric
- friction reports about choosing a next step, per research run, next 40 research runs.
- Candidates
- unchanged (ventures 2 / research 1 overlap their champions; review/2 has 5 runs).
- Data
derive.py fetchgot 25 of 30 PRs; derived/ regenerated. Audit not run (recent outputs mirrored or doc-only).- Drift
prompts/drift/2026-10-17f.md.
E33: review 2026-10-17 (fifth review that day) pending
- Change
sync_tree_counts.pyinsertsgitops/testsonsys.pathfor its import, so it runs with noPYTHONPATH(3 reports ofNo module named front_door_mirror).- Result
- (next review)
- Metric
- friction reports naming
platform/ci/sync_tree_counts.py, next 40 runs. - Candidates
- unchanged (ventures 2 / research 1 overlap; review/2 has 5 runs).
- Data
derive.py fetchgot 25 of 30 PRs; derived/ regenerated. Audit not run (recent outputs mirrored or doc-only).- Drift
prompts/drift/2026-10-17e.md.
E32: review 2026-10-17 (fourth review that day) pending
- Change
review/prompt-1.mdsaysderive.py fetchis incremental (~30 PRs per call, run once in the background) and that an unrunnable audit is expected, not friction. Cause: 24 friction reports on that file, the latest three about the fetch limit and the audit.- Result
- (next review)
- Metric
- friction reports per run naming
prompts/review/prompt-1.md. Compare the next review. - Candidates
- unchanged (ventures 2 / research 1 overlap their champions; review/2 has 5 runs).
- Data
derive.py fetchgot 25 of 30 PRs; derived/ regenerated. Audit not run (recent outputs mirrored or doc-only).- Drift
prompts/drift/2026-10-17d.md.
E31: review 2026-10-17 (third review that day) pending
- Change
land-your-work.mdtrimmed to its 160-line budget (it was over by 3) and says a swept branch whose content is onmainneeds no PR (4 reports); backlog README/validate message saypr: "this"is accepted for a done item whose PR is unopened (3 reports of the second-commit cost).- Result
- (next review)
- Metric
- friction reports on
land-your-work.mdand the backlog README per run, next 40 runs. - Candidates
- unchanged (ventures 2, research 1 overlap; review/2 has 5).
- Data
derive.py fetchgot 32 of 470 PRs; the rest stay null. Audit not run (mirrored or doc-only recent outputs).- Drift
prompts/drift/2026-10-17c.md.- Audit
- not run (recent records mirrored or doc-only);
derive.py fetchnot run, third review in one day.
E30: review 2026-10-17 pending
- Change
land-your-work.mdsays cloud sessions withoutgh/GraphQL use the GitHub MCP tools to open and merge. Cause: a 2026-10-17CLAUDE.mdfriction report ("merge via PR, but gh GraphQL is blocked").- Result
- (next review)
- Metric
- friction reports per run naming gh/GraphQL/MCP. Compare the next 40 runs.
- Candidates
- ventures/2 vs 1, research/1 vs 0 overlap; review/2 has 5 runs. Keep collecting.
- Data
derive.py fetchgot 25 of 46 PRs before the time limit; the rest stay null. Audit not run (mirrored or doc-only recent outputs).- Drift
- see
prompts/drift/2026-10-17b.md.
E29: 24-hour review, 2026-10-16 (owner-requested) pending
- Change
promptctl.py measurehides "By starting message" groups with fewer than 3 runs (49 of 60 rows, 52 runs; one line says so). Cause: the table is one-off hashes that cannot be compared, and the output was ~43KB that every review reads.- Measure
CLAUDE.mdfriction reports per run naming pytest, numpy, pip, interpreter or timeout. Before: 2026-10-16, 224 runs, about 34 such reports. Compare the next 100 runs.- Result
- (next review)
- Candidates
- unchanged. ventures 2 and research 1 overlap their champions; review/2 has 5 runs.
- Audit
- not run (mirrored or doc-only records);
derive.py fetchran and built 713 rows. - Proposal
- G2 (process track weight).
- Report
prompts/drift/2026-10-16k.md.- Metric
- size of
measureoutput; "doc friction" reports namingprompts/promptctl.py(7 before; the BrokenPipe one was already fixed). - Drift
prompts/drift/2026-10-17b.md.
E28: review 2026-10-16 (tenth of the day) pending
- Change
review_every20 → 40 inprompts/routing.json. Ten reviews fired today, most with nothing new to measure (friction onrouting.json,review/prompt-2.md).- Result
- (next review)
- Metric
- reviews per day, and review runs with no change shipped. Compare the next 40 runs against today's.
- Candidates
- unchanged, overlap or too few runs.
- Audit
- league-schedule-generator, 69 pass.
derive.py fetchgot 16 of 18. - Drift
- see
prompts/drift/2026-10-16j.md.
E27: review 2026-10-16 (ninth of the day) pending
- Change
- none to prompts or docs;
prompts/derived/refreshed, drift report only. No new friction that was fixable at low cost. - Result
- (next review)
- Candidates
- ventures/2 (25, 88%) vs ventures/1 (78, 87%), research/1 (29, 100%) vs research/0 (358, 98%): overlap, keep collecting. review/2: 3 runs.
- Audit
- business-loan-offer-comparator re-run, 34 pass.
derive.py fetchgot 18 of 20. - Drift
- see
prompts/drift/2026-10-16i.md.
E26: review 2026-10-16 (eighth of the day) pending
- Change
- none to prompts or docs;
prompts/derived/refreshed, drift report only. Stale friction (PRODUCT_PLAYBOOK, prompts/README) already fixed. - Result
- (next review)
- Candidates
- ventures/2 vs ventures/1, research/1 vs research/0: overlap, keep collecting. review/2: 3 runs, too few.
- Audit
- skipped (doc-only/research runs).
derive.py fetchgot 19 of 21.
E25: review 2026-10-16 (seventh of the day) pending
- Change
- none to prompts or docs; measurement refresh (
prompts/derived/) and drift report only. Nothing in the friction table was new and fixable at low cost, and review/2 has 3 runs. - Measure
- n/a.
- Result
- (next review)
- Candidates
- ventures/2 (22, 91%) vs ventures/1 (68, 91%), research/1 (18, 100%) vs research/0 (348, 98%): overlap, keep collecting. review/2: 2 runs.
- Audit
- league-schedule-generator re-run, 59 pass. Research audit not runnable (no pytest, apt fails).
- Drift
- see
prompts/drift/2026-10-16g.md.
E24: review 2026-10-16 (sixth of the day) pending
- Change
prompt.mdstep 1 now says to pass--trackbefore runningroutewhen the brief names a task (was after the command; friction: a run drew research for an owner-named product brief).- Measure
- friction reports naming
prompt.mdper run after this. - Result
- (next review)
- Candidates
- ventures/2 (22, 91%) vs ventures/1 (68, 91%), research/1 (18, 100%) vs research/0 (348, 98%): overlap, keep collecting. review/2: 2 runs.
E23: review 2026-10-16 (fifth of the day) pending
- Change
- CLAUDE.md checklist gains one line naming
gitops/ci/sync_readme_counts.py. No prompt changes. - Why
- friction on
gitops/ci/README.md: runs-on count goes stale on every new-workflow PR. - Measure
- friction reports naming
gitops/ci/README.mdper run after this. - Result
- (next review)
- Candidates
- ventures/2 (20, 90%) vs ventures/1 (63, 92%), research/1 (17, 100%) vs research/0 (340, 98%): overlap, keep collecting. review/2 has 1 run.
- Audit
- 3 areas re-run, all pass.
derive.py fetchgot 21 of 23 PRs. - Drift
- see
prompts/drift/2026-10-16e.md.
E22: review 2026-10-16 (fourth of the day) pending
- Change
.github/prompts/land-your-work.mdadopted-drafts bullet condensed (163 -> 159 lines, under its 160 budget). No prompt changes.- Why
- only file over its instruction-line budget;
CLAUDE.mdalready fell 467 -> 391. - Measure
- friction reports naming
land-your-work.mdper run after this window. - Result
- (next review)
- Candidates
- ventures/2 (20 runs, 90%) vs ventures/1 (63, 94%): intervals overlap, keep collecting. research/1 (12, 100%) vs research/0 (331, 98%): overlap, keep collecting. review/2 has 0 runs and review/1 16: first review/2 run is this one; too few for a verdict.
- Audit
- 3 venture PRs re-run (devsec-toolkit, shift-roster-builder, distribution tests): all pass, no corrections.
derive.py fetchgot 19 of 21 PRs. - Drift
- no new owner words. See
prompts/drift/2026-10-16d.md.
E21: review/2 candidate and BrokenPipe fix (2026-10-16) pending
- Change
review/prompt-2.md(candidate, share 0.2): the audit step says to decide first whether anything is auditable and log "nothing auditable" if not; step 1 says to runbuildon the cache after a 403.promptctl.pyexits quietly on a closed pipe (measure | head).- Why
- review/1 friction (16 reports) is mostly "steps 1-2 unrunnable because the remaining records are mirrored or doc-only".
- Measure
- friction reports per review run on steps 1-2, review/2 vs review/1. Only ~1 review per 20 runs, so expect a slow verdict.
- Result
- (next review)
- Candidates this window
- ventures/2 (18 runs, 94%) vs ventures/1 (58, 93%): intervals overlap, keep collecting. research/1 (10, 100%) vs research/0 (322, 98%): overlap, keep collecting. review/1: 15 runs, 73%, 0 integrity.
- Audit
- nothing auditable (new records mirrored or doc-only).
derive.py fetchfetched 16 of 18 PRs;mergedstill unknown for mirrored records. - Drift
- no new owner words since 2026-10-16b.
CLAUDE.md467/500 (down from 475). Seeprompts/drift/2026-10-16c.md.
E20: stale doc lines from the same review (2026-10-16) pending
- Change
CLAUDE.mdchecklist no longer states a stale count of expectedgitops/testsfailures (said ~26; baseline today was 2);review/prompt-1.mdstep 1 says what to do whenderive.py fetchgets a 403 (+2 lines).- Why
- friction reports on both; 26 runs since the last review.
- Measure
- friction reports naming the CLAUDE.md pytest line, and on
review/prompt-1.mdstep 1, per run after this window. - Result
- (next review)
- Candidates
- ventures/2 (17) vs ventures/1 (53): intervals overlap, keep collecting. research/1 (8) under 10. Audit skipped: records mirrored or doc-only.
derive.py fetch403;mergedleft unknown.
E19: thirteenth review (2026-10-16) pending
- Change
- none to prompts or docs;
prompts/derived/runs.jsonrebuilt.derive.py fetchgot HTTP 403 from the GitHub API in this session, so the rebuild used the cachedgithub.json:mergedfor new records staysunknownuntil a session with API access runs fetch. - Why
- review step 1 died on its first command in this session.
- Measure
- reviews that report a failed
derive.py fetchin doc_friction. - Result
- (next review)
- Candidates
- ventures/2 (17 runs, 94%, 0.06 errors/run) vs ventures/1 (53, 92%, 0.17): intervals overlap, no verdict. research/1 has 8 runs, under 10. review/1 is 75% over 12 runs, 0 integrity issues. No new candidate: both tracks with candidates already carry one.
E18: measure PR facts and rework instead of typing them (2026-10-16, owner request) pending
- Change
prompts/derive.py(new) measuresmerged, PR size, red-CI commits and 14-day rework (reverts, follow-ups, line survival) intoprompts/derived/.promptctl.summarisefalls back to the measuredmergedand reports median survival. Review prompt step 1 runs it instead of hand-filling records. Goal: "Measured, not typed" ingoals.md.- Why
- of 441 records, 31 typed
merged, 18lines_added, 10wall_minutesand 5cost_usd. Rework is a scoring measure ingoals.md, and no record had ever carried it. - Measure
merged_unknowninmeasure, before against after the firstderive.py build. Survival per prompt version and model, once rows have about 10 closed windows each.- Result
- (next review)
E17: twelfth review (2026-10-16) pending
- Change
promptctl.runs_since_reviewno longer counts records mirrored from the upstream research repo (they carrysource); test added. Acts on E15's proposal.land-your-work.md169 -> 158 lines (measured-history prose cut; budget 160).- Why
- reviews fired on mirrored records no run of this repo produced.
- Measure
- reviews per day (the 2026-10-15 count was ten); lines in
land-your-work.md. - Result
- (next review)
E16: eleventh review of 2026-10-15 pending
- Change
prompts/process/backlog/README.md"Closing" now says to commitin_progressfirst and flip todoneonce the PR number exists (+2 lines).- Why
- two friction reports (README,
promptctl validate) hit a red validate on the first commit of a run closing an item. - Measure
- backlog-closing friction reports per process run.
- Result
- (next review)
E15: tenth review of 2026-10-15 pending
- Change
- none to prompts or docs. ventures/2 reached 10 runs (90% success, 0.1 errors/run) against ventures/1 (29 runs, 90%, 0.24): intervals overlap, so no promote or retire; research/1 has 7 runs, still under 10. No new candidate (both tracks already carry one).
- Measure
- reviews per day should fall once mirrored records stop counting.
- Result
- (next review)
- Audit
- skipped; the 21 runs since the last review are mirrored upstream research records or doc-only.
mergedbackfill skipped for the same reason. - Drift
- no new owner words since the earlier reports today (see
prompts/drift/2026-10-15.md); no instruction file grew past budget (CLAUDE.md457/500,land-your-work.mdat its 160 budget). - Observation
- this is the tenth review today.
runs_since_reviewcounts mirrored upstream records towardreview_every, which is why reviews keep firing at ~20 mirrored runs. Proposal for the next process run: count only records whose PR is in this repo.
E14: ninth review of 2026-10-15 pending
- Change
prompts/review/prompt-1.mdstep 2 says mirrored and doc-only runs are skipped without counting as friction (eight reports of "nothing auditable" came from the review prompt itself). +2 lines.- Why
- ventures/2 has 8 runs and research/1 5, still under 10 each, so no promote/retire and no new candidate.
- Measure
- review/1 friction reports per run about unauditable records.
- Result
- (next review)
- Audit
ventures/meter-keeper(newest merged venture): 26/26 tests pass, README disclaimer and page disclaimer present.
E13: eighth review of 2026-10-15 pending
- Change
CLAUDE.md-1 line net: the "Tool timeout" bullet duplicated "Long suites" (added by E12); merged into one that also namesgit fetch --unshallowandpublish-branch.sh, which three reports say time out too.- Why
CLAUDE.mdis the top friction file (36 reports); shorter beats longer.- Measure
- timeout friction reports on
CLAUDE.mdper run after this review. - Result
- (next review)
E12: seventh review of 2026-10-15 pending
- Change
CLAUDE.mdchecklist notes (4 lines) that the pages/marketing/deploy node suites exceed the tool timeout and must run in the background.- Why
- three friction reports (CLAUDE.md,
unspecified) hit the 120 s / 10 min limit on those lines. - Measure
- timeout reports on those lines per run.
- Result
- (next review)
- Audit
platform/deploytests re-run: 28/28 pass. No other output was auditable locally (most records are mirrored upstream).
E11: sixth review of 2026-10-15 (due-counter fix) pending
- Change
promptctl.runs_since_revieworders records by when git added them (ties on date were ordered by random session id, so reviews landing mid-day were counted among later runs). Real tree: 37 "runs since review" before, 5 after. Regression test added.- Why
- six reviews ran in one day; four friction/deviation reports and the drift report named the due counter (
prompts/routing.jsonfriction). - Measure
- reviews per day (expect at most one per ~20 merged runs).
- Result
- (next review)
E10: fifth review of 2026-10-15 pending
- Change
AGENTS.md291 → 187 lines ("Ship fast" incident stories moved todocs/history/claude-md-2026-10-15.md, rules kept).promptctl measureno longer crashes on free-textdoc_friction/deviationsentries; four malformed records onmain(they failedvalidateand the prompt-system unit test) were normalised withcorrectionsentries.- Why
measurecrashed;validatewas red onmain; AGENTS.md was over its 250 budget.- Measure
AGENTS.mdfriction per run;validatestays green.- Result
- (next review)
E9: fourth review of 2026-10-15 pending
- Change
review/prompt-1.mdcut 150 → 128 lines (budget 130): removed the first-review backfill step (170+ records exist), tightened drift-audit prose, candidates only for tracks with about 10 runs. Filledmerged: truefor four local records (PRs 7001, 7019, 7024, 7034), with corrections.- Why
- drift report 2026-10-15-c left "trim review/prompt-1.md" open; two friction reports on it (backfill and per-track candidates).
- Measure
- friction reports on
prompts/review/prompt-1.mdper review run. - Result
- (next review)
E8: third review of 2026-10-15 pending
- Change
- ventures candidate
prompt-2replaces the "no near-copies" sentence with a command that counts name suffixes of the newest ventures (share 0.2).AGENTS.mdcut 335 → 291 lines (removed stale 2026-09 history that contradicted the ventures prompt). - Why
- 11 of the 15 newest ventures are
*-calculator; AGENTS.md was over its budget. - Measure
- same-suffix share of ventures added by ventures/2 runs vs ventures/1;
AGENTS.mdfriction per run. - Result
- (next review)
E7: Steering by judgment, a process backlog, process track to 10% (2026-10-15, owner request) pending
- Why
- 11 recommendations made on 2026-10-15, 0 adopted (no tool, PR or commit implements any of them by the end of the day);
CLAUDE.md1,662 lines with 12 friction reports; 2 of 3 process runs that day duplicated a study. - Measure
- backlog items done per week and the share whose
resultsays helped; deviations recorded per run (expect above 0 if runs use judgment); instruction lines against budget; process-run outcomes on prompt-1 against prompt-0's 3 runs (too few to compare formally). - Result
- (next review)
E6: first scheduled review (2026-10-15) pending
- Change
- review prompt step 1 skips records mirrored from the upstream research repo when filling
merged. Four local records filled. - Why
- 167 mirrored records can never be filled; one friction report on
prompts/review/prompt-0.md. - Measure
- friction reports on the review prompt per review run.
- Result
- (next review)
E5: Judgment over rules, depth over count, drift audit (2026-10-15, owner-directed) pending
- Change
goals.mdgains "Judgment over rules" (including a concision rule for rules), the owner's business model (one-click self-deployed copies with a donate link) and the payments rule (never the owner's accounts). Ventures champion becomesprompt-1(no new single-page calculators; finish ventures as self-deploy businesses). Review champion becomesprompt-1(new step 6, drift audit, with reports inprompts/drift/). Promoted directly, without an A/B test, because the owner directed it, as in E1.- Why
prompts/drift/2026-10-15.md. 641 of 1,236 ventures are*-calculatoragainst a brief asking for ambitious, deep products, and about 3,400 lines of agent-written rules come before a ventures run starts.- Measure
- new
*-calculatorventures after 2026-10-15 (target 0); instruction lines per file (should fall); ventures with a working self-deploy page (should rise);doc_frictiononCLAUDE.mdandDIRECTION.md. - Result
- (next review)
E4: Red team / blue team track (2026-10-15, owner request, PR https://github.com/Duncan-Haywood/oss-monorepo/pull/6987) pending
- Change
- a new track,
redteam, routed 7% of runs (owner's request; the 5-10% band is ingoals.mdand enforced byvalidate). With theprocessandexploretracks (5% each), ventures and research go to 0.415 each. Newprompts/redteam.pyseeds mutants into a file a suite guards, runs the suite, restores the file, and writes the results into the run record.measurenow reports the catch rate (before and after the blue team's fixes) and real defects per red-team run. Sub-prompt:prompts/redteam/prompt-0.md. - Why
- every other measure here counts failures that something already noticed (CI failures, review findings, reverts). Nothing measured how many bugs go unnoticed. CLAUDE.md records many guards that were green while checking nothing. E2's process track reads what the checks caught from history; this one measures what they would miss, by seeding faults.
- Measure
- catch rate per review window, which should rise as blue-team guards land, and real defects per red-team run, which should fall. The first window is the baseline.
- Result
- (next review)
E3: Free-choice track, about 5% of runs (2026-10-15, owner request) pending
- Change
- new
exploretrack (prompts/explore/prompt-0.md) at weight 0.05 inrouting.json; ventures and research went from 0.475 to 0.45 each (E2'sprocesstrack took the other 5% the same day). The owner asked for about 5% of effort to go to the agent's discretion, in the spirit of Google's "20% time".goals.md(owner-edited),prompt.md,AGENTS.mdandresearch/PROJECTS.md(inoss-research-monorepo, which this mirror picks up on its next sync) say so too. - Why
- owner direction, not a measured failure.
- Measure
- success and integrity per
explorerun against the other tracks, and how many free-choice ideas graduate into a regular track. Expect only about one run in twenty, so allow many reviews before reading anything. - Result
- (next review)
- Measured
- 170 of 172 records are research runs imported from the upstream research repository; their PRs live there, so
mergedstaysnullfor 167 (not checkable from here, never guessed). Filled and corrected 4 local records (PRs 6988, 6991, 6992, 6993, all merged). 1 integrity issue (tail-elicitation missing references, fixed before merge), 1 leaked. No audit of five outputs was done this run; only four local PRs were examined. ventures/process/explore have 1 or 0 runs: too few to compare.
E2: A process track, about 5% of runs (2026-10-15, owner request) pending
- Change
- new track
process(prompts/process/prompt-0.md) with weight 0.05 inrouting.json; ventures and research go from 0.5 to 0.475 each. A process run studies the development process from git, PR and CI history (quality, errors, rework, duplicate and leaked work, what the checks catch) and writesprompts/process/reports/YYYY-MM-DD.mdwith ranked recommendations. It may implement one small agent-owned fix. The track goal was added togoals.mdat the owner's request. - Why
- the owner asked for a small, standing share of work to analyse the process and recommend improvements. The review track covers prompts and docs from run records only.
- Measure
- share of routed runs on
process(expect about 5%); per study, how many of the previous report's recommendations were adopted and whether their metrics moved.
E1: Mirror with one writer, archive rather than delete (2026-10-14, owner-directed, PR https://github.com/Duncan-Haywood/oss-monorepo/pull/6984) pending
- Change
- a direct edit, not a candidate, made at the owner's request to keep the two repositories mirrored with no history loss. -
prompts/research/prompt-0.mdandprompts/ventures/prompt-0.md: until cutover, research work lands upstream, and keeping the mirror current is standing work. Mirror PRs merge with a merge commit. -research/_mirror/README.mdandresearch/CLAUDE.md: the upstream repository is archived at cutover, never deleted. -land-your-work.md: names the mirror-PR exception to squash-merging. - Why
- the research track routes 50% of runs here, and
mirror.py syncdeletes files under the mirrored area that upstream lacks. So a project built here before cutover would disappear at the next sync. Deleting the upstream repository would also lose its pull requests, review threads and branches. - Measure
- research-track runs here that touch
research/outside a sync (target 0), andmirror.py checkonmain.
E0: One repository, one prompt system (2026-10-12) pending
- Change
oss-research-monorepowas folded into this repository underresearch/. The two standing briefs became the champions of two tracks:prompts/ventures/prompt-0.md(this repository's formerprompt.md) andprompts/research/prompt-0.md(the research repository'sprompt.md). The rootprompt.mdis now a master prompt that routes between them. The research brief's experiment loop (champion and candidate, run log, review every 20 runs) was generalised intoprompts/for every track. Its run log became one record per file underprompts/runs/, so parallel runs never conflict. Its integrity and licensing rules moved, unchanged, intoprompts/goals.md.- Why
- two repositories meant two sets of agent instructions to keep in step, and the research one was frozen during the move. Its four hourly routines were finishing in about 10 seconds with nothing to do.
- Measure
- baseline. The research repository's own run log came with it: 158 runs (2026-10-13/14, all
research/0), converted intoprompts/runs/byresearch/_mirror/mirror.py. On import,measureread 97% success (95% CI 93-99%), 1 integrity issue, 1 leaked run, andmergedunknown for 157. The first review fills inmergedfrom the pull requests, backfills ventures runs from git history (review prompt, step 1), and compares everything later against this. - Result
- (first review)