# What I got wrong the first time **Written 23 September 2026, before the study was published anywhere.** I reran the study, then went through every sentence written about it the way a hostile statistician would. The numbers all reproduced. Several sentences did not survive. `METHOD.md` and `RESULTS.md` are left exactly as they were, because they are the record of what I said at the time. This file is the correction. Where they disagree, this file wins. Every new number below comes from `checks.cjs` in this folder, and its output is `checks.json`. Nothing in this file was decided before the run: these are checks added afterwards, and the study page labels them that way. ## Wrong in the method file 1. **"rho about 0.30" for the planted pattern.** The code plants steps two days before the outcome at strength 0.45 (`false-alarms.cjs`, the power loop). That is a rank correlation of about 0.38, not 0.30. A stronger pattern is easier to find, so every power number in the study is for a pattern stronger than I said. 2. **"a daily 0 to 10 how I felt".** The outcome is a continuous score centred on zero, not a 0 to 10 scale. Rounding it into whole numbers from 0 to 10 gives the same picture (see `CHECKS.md`). 3. **"seed = 20260918 + index".** The code uses 20260918 plus the index plus 1000 times the diary length for the empty diaries, and 77000000 plus the index plus 1000 times the length for the planted ones. `RESULTS.md` has the first formula right. The planted details (steps, two days, strength 0.45) were fixed in code and never written into the method file. 4. **"No true relationship of any kind between any measure and the outcome, at any lag."** Not quite. The outcome and three measures (steps, caffeine, screen time) share a weekend bump. That makes a small, real correlation on the same day, about 0.07, which is a fact about the calendar and not about the person. It disappears once the weekday is removed. Nothing in the diaries affects how the person felt. 5. **"C. Arm B plus the weekday effect removed first and a permutation null."** Arm C differs from arm B in more ways than that. It leaves out the pain column, because the engine treats a column that reads like a symptom as an outcome rather than a cause. It counts only one to three days before (21 comparisons) and lists same day links separately, where arms A and B count 32. Its null is a circular block bootstrap, blocks of seven days or more drawn with replacement, not a permutation. Held to the same 21 comparisons, arm A still flags 87 of 100 empty diaries at 292 days and arm B flags 9, so the headline holds. The table in `CHECKS.md` shows all of it. 6. **"C. What Arkhelion's engine does."** Arm C is the lag engine I wrote for Arkhelion (`what-came-before.js`, byte identical to the copy served at arkhelion.ai/js/what-came-before.js) run after a weekday removal step (`dow.cjs`) that lives only in my own scripts. The web page that ran the engine was withdrawn by a decision on 12 September 2026. **The Mac app does not contain this method yet.** No product anyone can use today runs arm C. 7. **Findings per diary** was listed as a measured outcome and never reported. It is: at 292 days, 3.89 per diary for the plain search, 0.11 for the corrected one, and 0 for arm C (`results.json`, the Find fields). ## Wrong or overstated in the write ups 8. **"The usual correction" for arm B.** Arm B is Benjamini and Yekutieli at q below 0.06, which is the strictest of the common corrections, and the 0.06 bar was copied from the engine. The more usual choices do worse: at 292 days, Benjamini and Hochberg at 0.05 flagged 32 of 100 empty diaries and Bonferroni at 0.05 flagged 31. Part of that is the small weekend link (item 4), which a check is allowed to find; with the bump removed both flag 19. So arm B flatters the correction rather than making it look bad. 9. **"0 of 100" as the headline for arm C.** That is the best of four cells. At 60, 90 and 180 days arm C flagged 3, 4 and 2 in 100. Across all four lengths it is 9 of 400, about 2 in 100, with a 95% range of 1 to 4 in 100. A fresh set of 200 diaries per length, on new seeds, gave arm C between 1 and 5 in 100. The honest headline is **about 2 in 100**. 10. **"The plain search wins this table only because it says yes to almost everything."** True for arm A, but the corrected search (arm B) also finds the planted pattern more often than arm C at every length: 29 against 16 at 60 days, 38 against 29, 80 against 71, and 97 against 96. Arm C buys its low false alarm rate with some power. Counting only runs that found the planted pattern and named nothing false, with the corrected search scored on the same 21 checks as arm C, the corrected search does better up to 180 days and arm C does better at 292 days. 11. **What the diaries leave out.** The write ups listed the weekly rhythm, the day to day drift and the missing entries. They did not say that the diaries have **no slow trends**, and that is where arm C breaks. When every column also wanders slowly on its own, as a long recovery or decline would, a small or mild wander makes no clear difference, but stronger wandering pushes arm C's false alarms to 35 and then 49 in 100. That is the most important limit of the method, and it was missing. 12. **"The method in `false-alarms.cjs`"** as the label for arm C, and **"the whole study, one file".** The study script loads the engine and the weekday step from beside it. The study is three files, and all three are in the bundle. 13. **"The only thing that was ever private is the 215 line study harness."** The 140 line weekday step (`dow.cjs`) was private too. 14. **"A sceptic can diff them and confirm the method tested is the method that ships."** The engine file is byte identical to the served one, which a sceptic can check. But the tested method adds the weekday step, which is not served, and nothing ships the combination today (see 6). Measured without the weekday step, the served engine alone flagged 2, 2, 4 and 1 in 100 empty diaries and found the planted pattern 17, 27, 75 and 93 times in 100. On these diaries the weekday step barely matters; the block bootstrap does the work. 15. **"The one mention [of a condition] inside `what-came-before.js`."** There are two places: one code comment names two conditions, and a list of symptom words includes one condition name. 16. **"CC BY 4.0 as deposited 2026-09-20."** Nothing was deposited. There is no DOI yet. The licence line in `README.md` now says what is actually true. 17. **"Node 20 or newer."** Only Node 26 was tested. The code uses nothing newer than Node 20, but that is a reading, not a test. ## About when the method was written `METHOD.md` was committed at 10:40:05 Pacific time on 18 September 2026. The recorded run started 93 seconds later (`generatedAt` in `results.json`). The study script was already written, and it was committed together with the results five minutes after that, so git cannot show it was never run earlier. Read the method file as a record made in one sitting, not as a preregistration. `PROVENANCE.md` gives the commands, and they need access to my repository, which is private. ## What did not change Every number in `RESULTS.md` and `results.json` reproduces exactly, from the repository and from a clean unzip of the bundle with no repository present. Arm C does report fewer false alarms than arm B on the same diaries: 9 of 400 against 39 of 400 across all lengths, a gap far too large for chance (exact Fisher test, p about 0.00001). The conclusion stands. Several of the sentences around it did not.