one hundred and eighty commits in twelve days, and nothing at all on sunday or monday. strydeos took 116 of them. wednesday the fourteenth, the second tallest day, is mostly the voice agent and the simulated callers that grade it, working through a safety rule until it held. injury time arrived late, sixteen pull requests in under three days, and the studio site moved only by its bot. the acts further down are six pieces of that work with a mechanism worth keeping, each pinned to its own marks on the tape. the close opens on what the last edition got wrong.
on 5 october the receptionist learned that a caller describing cauda equina in their own words gets "call 999 or get to a&e now". six everyday phrasings joined the emergency list. nine days later the rule was reversed: weak or tingly legs are often ordinary back pain, and the decision belongs to a clinician. the case got a tier of its own, a clinician rings back and nothing is booked. then ten runs per scenario showed her adding "if it gets worse, call 111 or a&e" anyway. a sentence forbidding that did not stop it. what the ledger credits is writing the exact line she should say at that moment, and taking the banned words out of the rule entirely.
read in code on origin/main. "ten in a row" after the script is claimed only: no run count is recorded in the repo. the model moved to a larger one a minute after the script landed (295d3735), so the repo cannot say which of the two made it hold.
the war room puts the receptionist in front of hundreds of simulated callers and blocks a release on any failed top-severity scenario, or a pass rate under 95. on 6 october it was comparing a rounded figure: 854 of 903 is 94.57 percent, printed as 95, and that cleared the rate check. the same run failed on something else, so nothing got through, but the hole was real and the check is now in whole numbers. ten days later the gate moved the other way. full runs kept failing a different one or two scenarios that then passed alone, so a failed scenario is re-run twice and blocks only if it fails again.
read in code on origin/main. the clearing path of the retest has only ever run in a unit test, by its own commit message. the odds in the drawing are worked from the code, not measured.
the follow-up card on the owner dashboard counted events stamped as actioned by the follow-up engine. over the summer that stamp was narrowed, correctly, until one path wrote it: an owner approving a gap-fill. automatic sends never stamp it, so the card read zero beside a send ledger that was full. it now reads that ledger. the same fortnight turned up two more of the kind. a "follow-up booked" flag was written by five places, every one hard-coded to false, so a discharge rule that checked it always passed. and the marker that locks a call's outcome as booked never ran on a live call, because no tool sent the conversation id it waits for.
read in code on origin/main. the live counts in the commit messages were not re-measured. one write further down the same booking path still sends the same undefined value, and its failure only reaches the console.
until 17 october the code had no single answer to whether a patient had drifted. the lifecycle measured each patient against their own rhythm, the dropout insight used 35 to 49 days, deep metrics a flat 30, and a classifier written three days earlier had its own order. whether someone counted as churned turned on whether the clinic had texted them in the last 60 days, so our own messaging decided their state. someone who reached six appointments and then cancelled was filed as discharged. there is now one function with eight states, first match wins, read by the board, the messaging, the metrics and the voice agent. the subject says every module. one insight still keeps its own window.
read in code on origin/main. the clinic counts are the commit messages' own. the revenue insight that still says "due a rebook" from its own 35 to 49 day window is still there, and a quiet three-visit course reads churned on the board but finished in the owner summary.
the unsubscribe link acted on a plain fetch, so anything that fetched it could press it, and mail scanners fetch every link in a message. two opt-outs landed 3 and 8 seconds after an open, and the click counter had scored them as clicks. the fix splits the verb: a fetch checks the signed token and shows a button, and only pressing it opts out and stamps the time. the same evening the opt-out question moved inside the one function every prospect email passes through, so a draft written before someone unsubscribed, or a duplicate row on the same address, can no longer slip past a caller that forgot to ask.
read in code on origin/main. not exercised here: pressing a live unsubscribe is a state change. the click counter itself is untouched since july and still counts every visit to the confirm page.
the opposition card is a small, standard football model rather than a feeling. attack and defence come from goals per game against the league average, pulled toward average by three phantom games so a short season is not over-read. home advantage is measured from the league's own home and away points, square-rooted and clamped. two poisson scorelines give the win, draw and loss chances and the likeliest scores. a language model then writes the brief from those numbers, and that is where one figure drifts: the live brief pairs the raw conceded rate with the shrunk percentage, so it says 32 percent fewer where the raw rate is 38.
seen in production. injury-time.vercel.app/team, fetched 17 october, prints the odds drawn here; 1.53 each way reproduces from the committed table. nothing checks the brief's arithmetic against the numbers it was handed.
13commits the last edition missed, found by recounting the same window on fresh clones
2.2 printed 252. counted again on clones fetched from each remote, the same window gives 265. nine of the thirteen sat in a lane that read a local copy with no remote, so nothing pushed elsewhere ever reached it. the other four carry 4 october dates and may have landed after that run. the fix is in how this edition counts: every lane now reads a bare clone fetched for the run, and shas the previous edition counted are dropped by prefix.
| the drift comparison tested through a stubcarried forward. a new test covers the message written after the comparison, not the comparison | untested |
| the seat price the refusal quotedno longer true. fixed in f803a5c2, 22 minutes into this window. one stripe product description still says 49 | fixed |
| commits by a person, on origin's default branch, merges left out | 180 |
| of those, in strydeos | 116 |
| the busiest day, tuesday 6 october | 48 |
| days with nothing from a personsunday 11 and monday 12 october | 2 |
| repositories that moved | 9 of 15 |
| pull requests merged by squash | 50 |
| commits by the studio bot, left out of the 180each one refreshes the client portal's access registry, two lines at a time | 23 |
every figure came out of git log across fifteen repositories, 5 october 17:00 to 17 october 02:52, counted on origin's default branch in clones fetched for this edition, so an evicted icloud checkout cannot hang the count or hide a merge. merges are left out, and anything the last edition already counted is dropped. the evidence and strydelens lanes now read their own remotes. third-party repositories on the machine are left out. the monday 12 october run left no edition, so this one covers twelve days. the acts were read from the diffs and from the code as it stands on main, and each says whether it was seen in production. read from production on 17 october: injury time's public team page. this public cut leaves out findings still open in a live clinical system and the subjects of a personal planner lane; every count is unchanged. no test suite was re-run, no phone call was placed and no login-gated page was opened.
shippers studio 2.3, ldn to worldwide