Development analyses
How this portfolio is being built, and what the agents building it have learned: every experiment on the prompts and instructions, the process backlog, process and drift reports, data-backed studies, and the friction each run reported. The numeric dashboard (merges, CI, cost) is one level up at How it is built.
- 119 of 119 logged experiments still read “(next review)”: no review has yet recorded whether a change helped.
- research/CLAUDE.md is the most-reported source of friction: 426 reports across 4253 run records.
- Process backlog: 9 open or in progress, 47 done; 38 of the done items have a measured result.
What runs keep tripping on
Each run record names the instructions that were wrong, stale or costly (doc_friction).
Files with the most reports are where an edit saves the most time. Source: prompts/runs/.
| File | Reports | Most recent report |
|---|---|---|
| research/CLAUDE.md | 426 | pick_track.py drew track 14 (codesign), but the programme table says advance a programme; I took aerolog-scaling's logged Next instead. |
| CLAUDE.md | 298 | bare python3 lacks numpy/PIL; pyenv.py returned /usr/bin/python3.13 which worked. |
| research/PROJECTS.md | 298 | pick_track draw sent two overlapping sessions to the same programme milestone within hours; the claim check (open PRs/branches) came too late because the other PR was opened after my run started 40 min of training. |
| prompts/process/prompt-1.md | 171 | Backlog had no agent-owned item; main_health.py found the live fault (a run record with pr null) quickly. Git push to the work branch returned Internal Server Error 4 times before succeeding. |
| portfolio/flagships.yaml | 156 | Main briefly held committed merge-conflict markers, which broke allocate.py until #12044. |
| prompt.md | 134 | step 0 fetches origin security-alerts, which does not exist on the remote (fatal); no fallback stated. |
| portfolio/router/allocate.py | 90 | shallow-clone fetch exceeded 50s and printed partial counts |
| prompts/review/prompt-1.md | 87 | validate fails on other in-flight runs' records (pr null) and a 73-char seo_title, blocking step 8's clean validate |
| prompts/ventures/prompt-1.md | 82 | Flagship next: for ai-bookkeeper asks for real inputs, but recent runs keep adding synthetic gap probes; I did the same since no real data was available. |
| prompts/promptctl.py | 74 | `route` drew redteam for an owner request that was plainly distribution/venture work; no 'distribution' track exists, so the record uses ventures/1. |
| prompts/research/prompt-0.md | 73 | pick_track drew a focus track but sim2real-inference-style programmes are all at owner-only steps; took build-data milestone 1 instead |
| prompts/redteam/prompt-0.md | 66 | campaign without --record prints the mutants but saves nothing; the first campaign had to be rerun (the --record flag is easy to skip when following the example order). |
| prompts/creative/prompt-0.md | 46 | Says Hearth & Horizon stories run 3,500+ words in BIBLE; my draft is 3,365 words and no test enforces it. |
| portfolio/ledger/session_gate.py | 42 | Printed advice pointed at DIRECTION.md 'Current priority' (cut 2026-10-21) and named deploy-settings as pending (granted 2026-09-06). |
| research/PROGRAMMES.md | 36 | pick_track.py drew build-data with an empty CLAIM CHECK; another run built the same milestone 1 within the same 30 minutes (PR 12049), so about 40 minutes were duplicated. A claim PR in the first minutes would have… |
Runs and friction by day
| Day | Runs | Friction reports / run |
|---|---|---|
| 2026-11-09 | 1 | 0.00 |
| 2026-10-31 | 152 | 0.64 |
| 2026-10-30 | 220 | 0.48 |
| 2026-10-29 | 200 | 0.56 |
| 2026-10-28 | 214 | 0.51 |
| 2026-10-27 | 192 | 0.53 |
| 2026-10-26 | 208 | 0.55 |
| 2026-10-25 | 206 | 0.55 |
| 2026-10-24 | 276 | 0.73 |
| 2026-10-23 | 258 | 0.56 |
| 2026-10-22 | 257 | 0.68 |
| 2026-10-21 | 287 | 0.84 |
| 2026-10-20 | 295 | 0.92 |
| 2026-10-19 | 288 | 0.89 |
Experiments on the prompt system
Every change the review track makes to prompts and instructions, the metric it should move, and its verdict at the next review. Full text: all experiments · source.
| Id | Experiment | Verdict |
|---|---|---|
| E119 | Review 2026-10-31 (reduced pass) | pending |
| E118 | Review 2026-10-30 night (reduced pass) | pending |
| E117 | Review 2026-10-30 (second reduced pass) | pending |
| E116 | Review 2026-10-30 evening (reduced pass) | pending |
| E115 | Review 2026-10-30 (reduced pass) | pending |
| E114 | A perf track, about 5% of runs (2026-10-24, owner request) | pending |
| E113 | review 2026-10-30 (reduced pass, fortieth run) | pending |
| E112 | review 2026-10-30 (reduced pass, thirty-ninth run) | pending |
| E111 | review 2026-10-29 (reduced pass, thirty-eighth run) | pending |
| E110 | review 2026-10-29 (reduced pass, thirty-seventh run) | pending |
| E109 | review 2026-10-29 (reduced pass, thirty-sixth run) | pending |
| E108 | review 2026-10-29 (reduced pass, thirty-fifth run) | pending |
| E107 | review 2026-10-28 (reduced pass, thirty-fourth run) | pending |
| E106 | review 2026-10-28 (reduced pass, thirty-third run) | pending |
| E105 | review 2026-10-28 (reduced pass, thirty-second run) | pending |
| E104 | review 2026-10-28 (reduced pass, thirty-first run) | pending |
| E103 | review 2026-10-28 (reduced pass, thirtieth run) | pending |
| E102 | review 2026-10-28 (reduced pass, twenty-ninth run) | pending |
| E101 | review 2026-10-27 (reduced pass, twenty-eighth run) | pending |
| E100 | review 2026-10-27 (reduced pass, twenty-seventh run) | pending |
| E99 | review 2026-10-27 (reduced pass, twenty-sixth run) | pending |
| E98 | review 2026-10-27 (reduced pass, twenty-fifth run) | pending |
| E97 | review 2026-10-27 (reduced pass, twenty-fourth run) | pending |
| E96 | review 2026-10-27 (reduced pass, twenty-third run) | pending |
| E95 | review 2026-10-26 (reduced pass, twenty-first run) | pending |
| E94 | review 2026-10-26 (reduced pass, twenty-second run) | pending |
| E92 | review 2026-10-26 (reduced pass, twentieth run) | pending |
| E91 | review 2026-10-26 (reduced pass, nineteenth run) | pending |
| E90 | review 2026-10-26 (reduced pass, eighteenth run) | pending |
| E89 | review 2026-10-25 (reduced pass, seventeenth run) | pending |
| E88 | review 2026-10-25 (reduced pass, sixteenth run) | pending |
| E87 | review 2026-10-25 (reduced pass, fifteenth run) | pending |
| E86 | review 2026-10-25 (reduced pass, fourteenth run) | pending |
| E85 | review 2026-10-24 (reduced pass, thirteenth run) | pending |
| E84 | review 2026-10-24 (reduced pass, twelfth run) | pending |
| E83 | review 2026-10-24 (reduced pass, eleventh run) | pending |
| E82 | review 2026-10-24 (reduced pass, tenth run) | pending |
| E81 | review 2026-10-24 (reduced pass, ninth run) | pending |
| E80 | review 2026-10-24 (reduced pass, eighth run) | pending |
| E79 | review 2026-10-24 (chronicle and lessons pass) | pending |
| E78 | review 2026-10-23 (reduced pass, seventh run) | pending |
| E77 | review 2026-10-23 (reduced pass, sixth run) | pending |
| E76 | review 2026-10-23 (reduced pass, fifth run) | pending |
| E75 | review 2026-10-23 (reduced pass, fourth run) | pending |
| E74 | review 2026-10-23 (reduced pass, third run) | pending |
| E73 | review 2026-10-23 (reduced pass, second run) | pending |
| E72 | review 2026-10-23 (reduced pass) | pending |
| E71 | review 2026-10-22 | pending |
| E70 | review 2026-10-22 (reduced pass) | pending |
| E69 | review 2026-10-22 (reduced pass) | pending |
| E68 | review 2026-10-22 (reduced pass) | pending |
| E67 | review 2026-10-22 (reduced pass) | pending |
| E66 | review 2026-10-22 (reduced pass) | pending |
| E65 | review 2026-10-22 (reduced pass) | pending |
| E64 | review 2026-10-21 (reduced pass, late night) | pending |
| E63 | review 2026-10-21 (reduced pass, late night) | pending |
| E62 | review 2026-10-21 (reduced pass, night) | pending |
| E61 | review 2026-10-21 (full pass, evening) | pending |
| E60 | review 2026-10-21 (reduced pass, afternoon) | pending |
| E59 | review 2026-10-21 (reduced pass, morning) | pending |
| E58 | review 2026-10-21 (reduced pass) | pending |
| E57 | review 2026-10-20 (reduced pass, night) | pending |
| E56 | review 2026-10-20 (night) | pending |
| E55 | review 2026-10-20 (reduced pass, evening) | pending |
| E54 | review 2026-10-20 (reduced pass, 12:xx) | pending |
| E53 | guidance map and layers, 2026-10-20 (owner-requested, not a review) | pending |
| E52 | review 2026-10-20 (second) | pending |
| E51 | review 2026-10-20 | pending |
| E50 | review 2026-10-19 (tenth) | pending |
| E49 | review 2026-10-19 (eighth) | pending |
| E48 | review 2026-10-19 (seventh) | pending |
| E47 | review 2026-10-19 (sixth) | pending |
| E46 | review 2026-10-19 (fifth) | pending |
| E45 | review 2026-10-19 (fourth) | pending |
| E44 | review 2026-10-19 (third) | pending |
| E43 | review 2026-10-19 (second) | pending |
| E42 | review 2026-10-19 | pending |
| E41 | review 2026-10-18 (seventh) | pending |
| E40 | review 2026-10-18 (sixth) | pending |
| E39 | review 2026-10-18 (fifth) | pending |
| E38 | review 2026-10-18 (fourth) | pending |
| E37 | review 2026-10-18 (third) | pending |
| E36 | review 2026-10-18 (second) | pending |
| E35 | review 2026-10-18 | pending |
| E34 | review 2026-10-17 (sixth review that day) | pending |
| E33 | review 2026-10-17 (fifth review that day) | pending |
| E32 | review 2026-10-17 (fourth review that day) | pending |
| E31 | review 2026-10-17 (third review that day) | pending |
| E30 | review 2026-10-17 | pending |
| E29 | 24-hour review, 2026-10-16 (owner-requested) | pending |
| E28 | review 2026-10-16 (tenth of the day) | pending |
| E27 | review 2026-10-16 (ninth of the day) | pending |
| E26 | review 2026-10-16 (eighth of the day) | pending |
| E25 | review 2026-10-16 (seventh of the day) | pending |
| E24 | review 2026-10-16 (sixth of the day) | pending |
| E23 | review 2026-10-16 (fifth of the day) | pending |
| E22 | review 2026-10-16 (fourth of the day) | pending |
| E21 | review/2 candidate and BrokenPipe fix (2026-10-16) | pending |
| E20 | stale doc lines from the same review (2026-10-16) | pending |
| E19 | thirteenth review (2026-10-16) | pending |
| E18 | measure PR facts and rework instead of typing them (2026-10-16, owner request) | pending |
| E17 | twelfth review (2026-10-16) | pending |
| E16 | eleventh review of 2026-10-15 | pending |
| E15 | tenth review of 2026-10-15 | pending |
| E14 | ninth review of 2026-10-15 | pending |
| E13 | eighth review of 2026-10-15 | pending |
| E12 | seventh review of 2026-10-15 | pending |
| E11 | sixth review of 2026-10-15 (due-counter fix) | pending |
| E10 | fifth review of 2026-10-15 | pending |
| E9 | fourth review of 2026-10-15 | pending |
| E8 | third review of 2026-10-15 | pending |
| E7 | Steering by judgment, a process backlog, process track to 10% (2026-10-15, owner request) | pending |
| E6 | first scheduled review (2026-10-15) | pending |
| E5 | Judgment over rules, depth over count, drift audit (2026-10-15, owner-directed) | pending |
| E4 | Red team / blue team track (2026-10-15, owner request, PR https://github.com/Duncan-Haywood/oss-monorepo/pull/6987) | pending |
| E3 | Free-choice track, about 5% of runs (2026-10-15, owner request) | pending |
| E2 | A process track, about 5% of runs (2026-10-15, owner request) | pending |
| 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 |
| E0 | One repository, one prompt system (2026-10-12) | pending |
Process backlog
Problems in how work gets done, each with evidence, a metric and a baseline. How it works.
| Id | Problem | Status | Result |
|---|---|---|---|
| P060 | perf: one touch to a11y research paths starts 9+ workflows; fold them into one job per trigger set | done | not measured yet |
| P059 | Pre-push post hook judges the pre-edit tree of a compound command (edit && commit && push) | done | not measured yet |
| P058 | Blog posts dated in the future reach the feed #10384 | done | helped: 0 posts in docs/posts dated after 2026-10-25 (baseline 77), checked 2026-10-25 by listing file-name dates |
| P057 | ai-bookkeeper's flagship `next:` leans on data hosts the cloud proxy blocks | done | Fallback and probe hint added to the ventures prompt only; flagships.yaml untouched because ai-bookkeeper's `next:` is already 2167 chars… |
| P056 | seo: once Search Console reports, find which tool pages Google declines to index and fix those | open | not measured yet |
| P055 | seo: publish the MCP server to the official MCP registry | open | not measured yet |
| P054 | seo: open the most-searched tool pages with a short, sourced, dated direct answer | done | 10 pilot pages carry a sourced, dated lead (baseline 0), each figure test-checked against its calc module. AI-referrer effect not… |
| P053 | seo: put <lastmod> dates from git history into the hub and product sitemaps #10206 | done | helped (build tests only): lastmod tests pass; live sitemap lastmod share unreachable from cloud (proxy 403). |
| P052 | seo: make the site's llms.txt a short index and move the full text to llms-full.txt | done | helped (build tests only): 11/11 llms/lastmod tests pass, covering the llms.txt size and blockquote bounds and the llms-full.txt link.… |
| P051 | seo: give the GitHub repository a real description, topics and a social preview image | open | not measured yet |
| P050 | perf: Portfolio Pages test job redraws the same ~2,500 share cards in every test build #10208 | done | not measured yet |
| P049 | perf: every PR push starts ~15 jobs, each with its own checkout, mostly for guards a diff cannot fail | dropped | Dropped 2026-10-30: unscoped guards are already cheap (Conflict markers median job 33 s); remaining cost is shared-path fan-out, tracked… |
| P048 | perf: CI guard jobs clone the whole 38,800-file tree to do seconds of work #11711 | done | not measured yet |
| P047 | Distribution and link-check code still builds URLs on the dead /monorepo-projects/ Pages path #9958 | done | platform/ pages-base URLs moved to /oss-monorepo/ (88 replacements, 0 left outside the LEGACY_BASE_URL constant); build.mjs rewrites… |
| P046 | Deploy platform/counter on an always-on HTTPS host so site visit counts exist | open | not measured yet |
| P045 | redteam targets gave no suite timing, so slow-suite targets cost campaigns | done | 2026-10-22: too few cases to tell. No redteam run record dated after the fix (merged 2026-10-22 15:41 -06:00) exists yet; all 3… |
| P044 | Cloud sessions cannot download the Piper voice, so creative runs cannot voice episodes | open | not measured yet |
| P043 | Retire the dead apex mirror's staleness gate: it still fails PRs for drift they did not cause | done | helped: 0 of the newest 100 completed Portfolio validate pull_request runs failed (all success; 2026-10-21T12:18Z-20:02Z, mcp actions_list… |
| P042 | Turn on GitHub's merge queue for main (owner setting) | open | not measured yet |
| P041 | concurrency_tax.py does not finish in a cloud session #8873 | done | --local fetches main and refs/pull/*/head into the working repo (--shallow-since): 83 s for PRs #7800-#8871 since 2026-10-17 (baseline: no… |
| P040 | research/_homepage/projects.json and research/README.md are the new top conflict files (~24% of PRs) | done | Helped. First-parent merges on origin/main since registry.py landed (2026-10-20T13:00 -06:00, 51 PRs, shallow window): projects.json… |
| P039 | The dead apex-mirror staleness step takes 7.5 of Portfolio validate's 10 minutes | done | Helped (2026-10-21). mcp actions_list portfolio-validate.yml event=pull_request status=completed, newest 30: successful runs took 3m26s to… |
| P038 | Stop each merge from cancelling main's test runs (44% of ventures tests runs on main never finish) #8829 | done | Helped (2026-10-21). mcp actions_list ventures-tests.yml branch=main event=push status=completed, last 100… |
| P037 | Verify: Portfolio validate on main pushes is mostly green after the base-ref fix (#8765) | done | No change in the pass rate, but the failing step moved. Last 100 completed push runs of portfolio-validate.yml on main… |
| P036 | Finish the deadweight cut: dead workflows, DIRECTION.md, the playbook, the red-team gate #9023 | done | Parts 1-5 and 7 done or confirmed; part 6 needs an owner yes (see decision queue). Remaining retired-tree CI is test-pinned and guards the… |
| P035 | Privacy rules went further than the law; bring every rule, check and page copy back to the legal line | done | No change yet: portfolio/usage/site-visits.json still does not exist (checked 2026-10-23); the rules, validator, counter code and copy are… |
| P034 | Red-team random draw is 95% ventures; CI and tooling code is almost never mutated #7808 | done | helped: red-team targets outside ventures/ were 11 of 84 (13%) in records dated 2026-10-15..17 and 12 of 14 (86%) in 2026-10-18 records… |
| P033 | Doc-friction section of `measure` repeats complaints that are already fixed | done | Partly helped (2026-10-25 re-sample of the six untagged 'latest' entries on CLAUDE.md, promptctl.py and prompt-1.md): 3 still real or… |
| P032 | Merge freelancer- and self-employed-schedule-c-categorizer into one venture | dropped | Dropped: both are published pages linked from ~20 files (build.mjs, launched.json, expense-tracker, self-employment-tax-calculator,… |
| P031 | Move venture-only rules from CLAUDE.md to ventures/CLAUDE.md #7603 | done | CLAUDE.md 21,663 -> 20,095 bytes (helped; -7%). Nested ventures/CLAUDE.md loads only for venture work. |
| P030 | Move CLAUDE.md pre-merge checklist block into .github/prompts/verify-and-merge.md | done | CLAUDE.md 20,095 -> 17,456 bytes (-2,639) by moving the checklist block to verify-and-merge.md; checklist_coverage.py, its tests and… |
| P029 | eBay fee defaults in reverb-fee-calculator: 13.6% FVF and tiered per-order fee (split from P025) #7542 | done | reverb-fee-calculator: 13.6% FVF, $0.40 per order (over $10; $0.30 tier and 2.35% band above $7,500 noted, not modelled). grep 13.25… |
| P028 | eBay fee defaults in where-to-sell-calculator: 13.6% FVF and tiered per-order fee (split from P025) #7573 | done | grep -rn '13\.25' ventures/where-to-sell-calculator leaves none; suite 229/229 pass. Shipped as 13.6% + $0.40 per order (the model has one… |
| P027 | eBay fee defaults in marketplace-fee-compare: 13.6% FVF and tiered per-order fee (split from P025) #7530 | done | marketplace-fee-compare: 13.6% FVF, $0.40 per-order (orders over $10; $0.30 tier and 2.35% band above $7,500 noted, not modelled). grep… |
| P026 | eBay fee defaults in ebay-fee-calculator: 13.6% FVF and tiered per-order fee (split from P025) #7581 | done | ebay-fee-calculator: 13.6% FVF, $0.40 per-order default (tiers/2.35% band noted, not modelled, as in P027); explainer prose recomputed… |
| P025 | eBay fee defaults are stale across four ventures (13.25% + $0.30 vs 13.6% + $0.30/$0.40) | dropped | Split into P026-P029, one venture each (single PR touched ~76 files and silently stale derived figures; see their evidence). |
| P024 | P014 step 3: git rm the committed front-door-tools mirror (~5.8k files) #8638 | done | Tree git-rm'd (6,202 files) with a guard test (test_manifests.py) that fails if any file under it is tracked. Tests, regen --verify and… |
| P023 | P014 step 2: drop regen lines from the CLAUDE.md checklist and checklist_coverage.py | dropped | Premise wrong: regen.mjs also regenerates and verifies the apex (front-door.mjs: pages, sitemap, feed, llms.txt). Run 2026-10-16: with the… |
| P022 | P014 step 1: build the front-door mirror into a temp dir for gitops tests and regen --verify #7424 | done | Helped: the mirror is no longer tracked (P024), and the gitops/marketing tests run against it absent on main; git ls-tree origin/main… |
| P021 | Size backlog items to one run: 8 of 9 partial process runs chipped at items too large for a run #7402 | done | No change / too noisy: 15 partial of 56 process runs (27%) vs baseline 9/41 (22%) from prompts/runs/*.json. Newer partials are mostly… |
| P020 | Branches leak past branch cleanup: re-pushed spent branches, an unreachable sweep tail, and no-PR branches #7325 | done | Interim, 2026-10-17 (a day after landing, not the week asked for): git ls-remote --heads origin lists 1,000 heads vs baseline 1,465… |
| P019 | The home page was a calculator list for two days after the owner asked for a home page for everything #7236 | done | helped: built the hub from origin/main 08f9558ec (2026-10-16) with `node platform/pages/build.mjs`. <title> 'Open Tools and Research |… |
| P018 | Make the catalogue's sitemap discoverable despite the Pages subpath | open | not measured yet |
| P017 | Load instructions by path and task instead of making every run read ~40k tokens #7664 | done | helped (chars/4 at ba0c6702e5): CLAUDE.md 6.5k -> 4.4k tokens (checklist moved to verify-and-merge.md, P030; product rules to… |
| P016 | Replace ~869 per-venture *-ci.yml workflows with one matrix workflow | done | helped: .github/workflows 893 -> 520 files on origin/main e731751327 (git ls-tree | wc -l); *-ci.yml 869 -> 490; validate_workflows.py… |
| P015 | Find near-duplicate ventures and consider grouping ventures/ by niche #7625 | done | Helped, narrowly: duplicate clusters now counted (19 pairs, 10 clusters); 0 merged. The one plausible duplicate was checked in P032 and… |
| P014 | Stop committing the generated front-door-tools mirror; build it at publish time #7440 | done | Helped: split into P022-P024; the mirror is untracked on main (P024) and gitops/marketing tests build it in a temp dir (P022). P023… |
| P013 | Archive the retired Hetzner/k3s tree (bootstrap/, gitops/prod) instead of warning about it #11885 | done | Dropped 2026-10-16: the references are live, as the item's own caveat anticipated. git grep on this checkout: bootstrap/ or gitops/prod is… |
| P012 | portfolio-validate is red on main: 63 VENTURE.yaml files lack required fields #7107 | done | helped: on origin/main b5b9aaf3c0 (2026-10-15) `portfolio/router/validate.py` prints 'All 1257 VENTURE.yaml files are valid' (baseline 231… |
| P011 | Get a first usage reading for any product | open | not measured yet |
| P010 | Give run_workflow_locally.py --tree a per-workflow timeout #7077 | done | too early: --workflow-timeout (default 300s) and per-step flushed output are in run_workflow_locally.py. 8 run records mention the tool,… |
| P009 | resolve-mirror-merge.sh should regenerate generated files, not refuse #7146 | done | too early: resolve-mirror-merge friction baseline 1; 2 records mention the script but all are dated 2026-10-15, so none can be ordered… |
| P008 | Warn when the front-door mirror silently drops a venture page #7140 | done | too early to call the friction metric (baseline 2 reports/184 records; all 424 records are dated 2026-10-15, so none can be ordered after… |
| P007 | Stop launched.json ordering from failing parallel branches #7047 | done | mechanism holds: `node --test platform/pages/launched.test.mjs` passes 23/0 on b5b9aaf3c0. Repair-commit rate cannot be measured yet: the… |
| P006 | Let run records resolve upstream PRs #7091 | done | Partly helped: records with merged known 28 of 369 (7.6%) vs baseline 8 of 184 (4.3%). The `repo` field exists (record --repo) but only 6… |
| P005 | Decide who publishes the gh-pages snapshot | open | not measured yet |
| P004 | Make the local checklist green on a clean main #7126 | done | Partly helped, 2026-10-15: platform/ci loop (run per module) listed one failure on main, test_publish_surface, because 5 workflows added… |
| P003 | Move CLAUDE.md incident history out of the always-read file #7021 | done | Not checkable: 'started'/'ended' is null on 281 of 369 records, so friction cannot be split before/after the 2026-10-15T03:55Z merge. Of… |
| P002 | Catch duplicate venture slugs and duplicate fixes at push time #7149 | done | too early: platform/ci/slug_dupe.py exists and runs (--help ok); 1 of 424 run records mentions it. Duplicate-pair counts need a later… |
| P001 | One preflight command for a new venture's site-wide invariants #7163 | done | too early: platform/pages/venture-preflight.mjs exists; 0 of 424 run records mention it, so nobody is using it yet or none have said.… |
Process reports
Process study 2026-10-15, addendum (sample audit and full-history counts)
Another run landed the study for this date first (#7003, merged while this run was working; I checked for an open process: study PR at the start and found none, the race CLAUDE.md "Duplicate PRs" describes). That report did not do the sample audit or --tree, and its clone was…
Process study 2026-10-15
First study, so no previous report to follow up. Written with AI assistance.
Drift reports
Whether recent work still matches what the owner asked for.
Drift report 2026-10-22
Mix since the last review (43 merged runs): flagship deepenings (ai-bookkeeper, wall-framing-takeoff), research follow-ups, redteam and process slices. Consistent with "depth over calculators"; no near-copy streak. Owner's words vs output. All starting messages are the routine…
Drift report 2026-10-21
Mix since 2026-10-20 (48 merged runs): venture deepenings (ai-bookkeeper, wall-framing-takeoff, open-house-plans: flagship-style depth, not new calculators), research follow-ups, redteam, process slices, creative. This matches "depth over calculators" and "deepen existing…
Drift report 2026-10-20
Mix since the last report: product deepenings (changepoint-detector took most of the week's flagship commits, so runs began skipping it for flagships 3 and 6, as the owner's "real depth" wording allows), research follow-ups, redteam, process. Nothing contradicts the owner's…
Drift report 2026-10-19
Mix since the last report: venture deepenings, research follow-ups, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Fixed: pyenv first-use time in research/CLAUDE.md (E42). Fixed (second review, PR 8210): allocate.py breaks merit ties least-worked…
Drift report 2026-10-18f
Mix since the last report: venture deepenings, research follow-ups, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Fixed: the session gate's stale-snapshot message contradicted itself on when to run publish-branch.sh (E40). Not fixed: allocate.py…
Drift report 2026-10-18e
Mix since the last report: venture deepenings, research follow-ups, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Audit (first one run in days): league-schedule-generator #8038 dropped the Left cell from the standings row template; #8041 restored…
Drift report 2026-10-18d
Mix since the last report: venture deepenings, research follow-ups, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Fixed: the research track draw is now a script (research/shared/picktrack.py). Not fixed: allocate.py still ranks already-deep…
Drift report 2026-10-18c
Mix since the last report: venture deepenings, research follow-ups, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Fixed: track-draw formula in research/PROJECTS.md. Not fixed: allocate.py keeps ranking already-deep ventures first (10 reports);…
Drift report 2026-10-18b
Mix since 2026-10-18: venture deepenings, research follow-ups, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Instruction lines: CLAUDE.md 337, prompt.md 89, review/prompt-1.md 130 (at budget). No file grew. Fixed: prompts/redteam.py runs suites…
Drift report 2026-10-18
Mix since 2026-10-17f: venture deepenings (fee calculators, schedulers, rosters), research follow-ups, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Venture friction repeats one point: the top allocator candidates are already deep, so runs add a…
Drift report 2026-10-17f
Mix since 2026-10-17e: research (swe/mimic project pages and follow-ups), venture deepenings, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Instruction lines: CLAUDE.md 337, prompt.md 89, review/prompt-1.md 130, research/PROJECTS.md 1067 (+2 from…
Drift report 2026-10-17e
Mix since 2026-10-17d: research figure backfills and swe-orgs batches, venture features and deepenings, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Instruction lines: unchanged from 17d (land-your-work.md 160/160, prompt.md 89/100, steering.md…
Drift report 2026-10-17d
Mix since 2026-10-17c: research figure backfills and swe-orgs batches, venture features, redteam and process runs. Nothing contradicts the owner's quotes in goals.md. Instruction lines: land-your-work.md at its 160 budget, prompt.md 89/100, steering.md 116/120, CLAUDE.md…
Drift report 2026-10-17c
Mix since the last report: research (figure backfill, swe-orgs batches), venture features, process verify runs. Nothing contradicts the owner's quotes in goals.md. Instruction lines unchanged except research/PROJECTS.md, whose one 10.5k-character progress line was the single…
Review, 2026-10-17
Window: the 40 runs since the review of 2026-10-16. Source: prompts/runs/ (713 records), promptctl.py measure, derive.py fetch/build.
Drift report, 2026-10-17
Window: 40 runs since the 2026-10-16 24-hour review. Source: promptctl.py measure.
24-hour review, 2026-10-16
Requested by the owner ("24 hour review"). Window: the 24 hours to about 21:00 UTC on 2026-10-16. Source: prompts/runs/ (224 records), promptctl.py measure, runcost.py report, git log origin/main.
Drift report, 2026-10-16 (tenth)
Owner words. None new in the records since the fifth report. Mix. Recent merges: venture depth (league-schedule-generator pool play, shift-roster-builder pins), pages categories, process. No new single-page calculators. Instruction lines. No file grew; nothing cut. Audit.…
Drift report, 2026-10-16 (ninth)
Owner words. None new in the records since the fifth report. Mix. Recent merges are venture depth, process and research; no new single-page calculators. Instruction lines. CLAUDE.md 385/500, prompt.md 89/100, steering.md 116/120. No file grew; nothing cut. Audit.…
Drift report, 2026-10-16 (eighth)
Owner words. None new in the records since the fifth report. Mix. Recent merges: venture depth (shift-roster-builder), process, research. No new single-page calculators. Instruction lines. CLAUDE.md 385/500, prompt.md 89/100, steering.md 116/120. Nothing cut; no file grew.…
Drift report, 2026-10-16 (seventh)
Owner words. None new in the records since the fifth report. Mix. Last 20 merged runs: research figures and elicitation projects, venture depth (league-schedule tiebreaks, fee-compare parity), process, redteam. No new single-page calculators. Matches the standing directions.…
Drift report, 2026-10-16 (fifth)
Owner words. None new in the records since the fourth report. Mix. Last 20 merged runs are again research, ventures (league-schedule rainouts, sign-keeper, homebrew-tap channel, shift-roster what-if: depth, not new calculators), process and redteam. Matches the standing…
Drift report, 2026-10-16 (fourth)
Owner words. None new in the records since the third report. One owner-named brief ran (devsec-toolkit, #7285) and was followed as asked. Mix. The 28 runs since the last review: research and ventures dominate (about 40% each), the rest process, redteam, explore. The recent…
Drift report, 2026-10-16 (third)
Owner words. None new since the earlier reports today. Mix. Open PRs are mostly bot-adopted stranded venture branches (generic comparison pages, new niche calculators) plus platform work (devsec-toolkit, job-search-agent, home page, analyses portal). The owner asked for depth…
Drift report, 2026-10-16 (second)
Owner words. No new owner messages since the earlier report today. Mix. Open PRs are venture work (internal-link-planner, changelog-keeper, recipe-nutrition-label, ie-sole-trader calculator, ig-media-pipeline) plus site/measurement work (visitor counter, engineering page). The…
Drift report, 2026-10-16
Owner words. The 2026-10-16 directions (distribution/measurement first, professional site, IaC, sales tools, per-run cost) are already in goals.md and CLAUDE.md; nothing restated without a quote found. Mix. Recent merges: venture deepening (help-keeper, support-desk),…
Drift report, 2026-10-15 (eighth review)
No new owner messages beyond 2026-10-15.md.
Drift report, 2026-10-15 (seventh review)
No new owner messages beyond 2026-10-15.md.
Drift report, 2026-10-15 (fifth review)
No new owner messages beyond 2026-10-15.md.
Drift report, 2026-10-15 (third review)
No new owner messages beyond those quoted in 2026-10-15.md.
Drift report, 2026-10-15 (second review)
Short follow-up to 2026-10-15.md, written by the first scheduled review. No new owner messages were available beyond those quoted there.
Drift report, 2026-10-15
The first drift review. The owner started it in a session and answered its questions there. Later reports follow prompts/review/prompt-1.md, step 6.
Studies
Write-ups that measure something about the portfolio or its market with real data and reproducible code (portfolio/research/). The open research papers have their own home at Research.
Egress reachability, consolidated
Measured 2026-08-20, re-measured 2026-08-23: all 92 hosts unchanged. One pass each, first-hand. Read-only GETs; no credential, no account, no publication, no spend.
What does TypeScript's checker find in 1,265 ventures of plain JavaScript?
Measured 2026-10-16 at 10356f6549, TypeScript 5.9.3. Script: measure.mjs. Raw diagnostics: results-2026-10-16.json.
Do the two accessibility engines agree, and is the difference disclosed?
Built and measured 2026-08-21. Re-runnable, offline, no credentials:
The audit pass, and how much of it a template can decide
Built and measured 2026-08-20. Re-runnable:
The first gate measurement: what an independent engine checks that ours do not
Built and measured 2026-08-21. Re-runnable, offline, no credentials:
Audit the thing we actually sell: local-site-studio's generated customer sites
Built 2026-08-21, extended 2026-08-22. Re-runnable, offline, no credentials:
Run the audit on ourselves: what the engines find on this portfolio's own pages
Built and measured 2026-08-21. Corpus rebuilt and re-measured 2026-08-21, same day, after Finding 4 found and fixed a gap that had made 1.4.3 silently absent from every number below it. Rebuilt from all 7 apps and re-measured again on 2026-08-22 for Finding 5, which reproduced…
What the theme-recoverable share actually resolves to
Built and measured 2026-08-20. Re-runnable:
Ask 0 buys a token for four registries this portfolio has never built for
Added 2026-08-24 by a firing of the screening brief ("research and evaluate potential software business projects that aren't already here").
Demand-signal reachability: publishing is not measuring
Another firing of the recurring "research and evaluate potential software business projects that aren't already here" brief.
Does the record a customer receives carry the tool's own error rate?
Question. Every probe in portfolio/pipeline/probes/ has been measured for accuracy, and every one of them renders something a customer would read. Does the second contain the first?
Out-of-sample recall, against an independent third detector
Built and measured 2026-08-21. Re-runnable, offline, no credentials:
MCP tool-declaration drift: a measured base rate
Measured 2026-08-19. Primary sources, reproducible from this repo.
Contrast was never checked because no corpus ever included the stylesheet
Built and measured 2026-08-21. Re-runnable, offline, no credentials:
The one corpus that carries the liability had never been checked for contrast
Built and measured 2026-08-21. Re-runnable, offline, no credentials:
What rendering actually recovers from the undecidable share
Built and measured 2026-08-20. Re-runnable:
Forge surface reachability
Measured 2026-08-21. 20 code forges plus a control, each surface probed separately. Anonymous read-only requests; no credential sent, no account, no publication, no spend.
Register change rate
Measured 2026-08-20. No credential, no account, no spend — anonymous read-only git ls-remote and blobless git clone against public repositories.
CRA evidence desk: the feed is reachable, the wedge is not, and the triage is worth more than both
Measured 2026-08-20. Primary sources, reproducible from this repo.
Data reachability: what this environment can actually fetch
Measured 2026-08-20 by a scheduled run of the screening brief, which per CLAUDE.md's intake gate added no candidate. Reproduce with python3 probereachability.py; raw output in results-2026-08-20.json.
Does the mcp-supply-chain-watch archive accrue? A measurement of its floor
Measured 2026-08-20. Primary sources, reproducible from this repo, no credentials, nothing published, no spend.
Monetization reachability: the portfolio can build and ship, but cannot get paid
Eighteenth firing of the recurring "research and evaluate potential software business projects that aren't already here" brief.
What this environment can actually read, and what that costs the pipeline
Added 2026-08-20 by the thirteenth firing of the screening brief.
Runtime data reachability
Measured 2026-08-20. No credential, no account, no spend — read-only GETs.
Free-substitute supply for each pipeline candidate's core functions
Measured 2026-08-20. No credential, no account, no spend — read-only GETs against the npm search API.
Agent reachability: which candidates can be executed from where the agent lives
Seventeenth firing of the recurring "research and evaluate potential software business projects that aren't already here" brief. No new candidate was screened and PR #79 was not rebuilt — its own intake gate asks future runs not to, and the note at the end of its provenance…
What a cold free listing actually gets
Measured 2026-08-19 against the public npm registry. Re-runnable: python3 measurelistingdemand.py --out results.json.
What a free listing is worth, not just whether it gets found
Computed 2026-08-19 from the committed demand-study data. Re-runnable offline: python3 analyzelistingeconomics.py --out results.json.
Winning free-registry discovery does not come with a way to get paid
Measured 2026-08-19 against the public npm registry. Read-only, no credentials, reproducible from this repo.
Publish-endpoint reachability: what "denied" actually means, per endpoint
Added 2026-08-19 by the eighteenth firing of the screening brief.
Publish reachability: the free channel the portfolio planned to use is network-denied
Nineteenth firing of the recurring "research and evaluate potential software business projects that aren't already here" brief.
Does the audience come before the listing?
Measured 2026-08-19. Primary measurements against the public npm registry, reproducible from this repo.
Ask 0's five registries are not interchangeable, and the biggest one is closed
Measured 2026-08-19. Read-only, stdlib only, no credentials sent, nothing published or registered. Reproduce with:
Integrity issues runs caught
Problems a run found and fixed before merge (a fabricated figure, a missing licence, a red count on main).
- Drafted a post line with median tail waits (18/26/43 days) that no output backed; caught and removed before merge. (record)
- Caught before commit: a draft of the candidates note said the usage.mjs copy reached 'about 994 ventures' (that was the number paired with one source file; the true figure is all 1,283 that ship one) and 'about forty' check_*.py scripts (28). Both corrected… (record)
- One price link (Z-flashing at DK Hardware) was first written from a guessed URL; caught before commit, verified by search and replaced with the real product page. (record)
- Two blog-post claims were wrong before commit (per-foot trim prices, a gravel cost multiple) and were corrected against the computed figures. (record)
- shed-designer showed estimates (gravel, then also CMU/solid block) as plain store links with a date, indistinguishable from listed prices; fixed with one sourceLabel() for page and CSV (record)
- shed-designer store comparison and storeTotals priced T1-11 at Home Depot $43.98 while the shopping line used $46.78 (two copies of the same page), claiming a $16.80 saving buying at Home Depot instead of Home Depot; aligned and tested (record)
- shed-designer '8x12 classic' total ($3,284.59) silently excluded the custom-size door and two windows; now listed as 'not in the total' (record)
- shed-designer marketing page and llms.txt quoted stale engine output (144 pieces/93 boards/$2,166.66 at first; 140/$650.85/$3,281.02 after PR #11311, already stale hours later); every number is now recomputed by marketing.test.mjs (record)
- H3 prediction was written inverted before running; disclosed in LOG.md (record)
- Ran learned.py once before writing the LOG entry, so predictions are post hoc; disclosed in the entry. (record)
- Earlier milestones 6a-6e reported results from a mistyped oracle; corrected and disclosed in LOG.md 6f and README (record)
- Many standard monographs are cited from bibliographic details, not re-read this session; every notes file tags each claim verified vs bibliographic, and the posts never quote or hang precise figures on unread text. (record)
Instructions runs chose not to follow
Recorded deviations, by the file whose instruction was set aside. A file that keeps appearing
here is asking to be rewritten.
| File | Reports | Most recent report |
|---|---|---|
| CLAUDE.md | 226 | No new blog post: a title-only batch has nothing a reader needs; report in docs/reports instead. |
| prompt.md | 217 | No blog post or agent doc this run: a small programme step; the LOG entry carries the write-up. |
| prompts/ventures/prompt-1.md | 130 | Took a small primary-source correction on a flagship (einvoice-preflight) instead of a large slice; the Ireland page's phase-two claim was wrong. |
| prompts/creative/prompt-0.md | 113 | No post or podcast: audio over 400 MB cap and run short. |
| prompts/research/prompt-0.md | 98 | pick_track drew sim2real-inference, whose open items are owner-blocked; took build-data (new, same focus list) instead. |
| research/PROJECTS.md | 78 | The drawn programme had no unblocked milestone. |
| prompts/goals.md | 74 | publishing under the portfolio's public name is owner-only; the owner asked for it directly in this session |
| prompts/review/prompt-1.md | 60 | reduced pass: no audit or drift report, no new candidate |
| portfolio/flagships.yaml | 58 | Took a small robustness slice on flagship 1 rather than a milestone from its next: list; next: left unchanged. |
| prompts/redteam/prompt-0.md | 42 | No blog post/agent doc: small red-team run. |