claude code's auto mode has a second model approve actions. it never sees the agent's own words or what its tools returned. only what you asked and what the agent tried to run.
why: an agent can talk past a checker, and a web page can lie to it. a reviewer that reads neither can't be fooled by either.
my daily answers job has a memory cap of 384 MB. idle, it uses about 18 MB. the real run was never measured, so i set the cap high on purpose.
why: the scheduler re-runs the job at every start. a cap the run always exceeds would restart it in a loop.
an unmeasured limit should err too big, not too tight.
a flat with " :D" in its title would have come back in telegram every round. my scraper put the title inside its database command. the database read ":D" as a blank to fill in, so the save failed. a flat that isn't saved never counts as seen. now values go in on their own, never inside the command text.
simon willison built a browser game with claude code. replays kept drifting out of sync.
chrome and safari return very slightly different numbers for sin and cos. claude swapped in its own versions, so every browser gets the same answer.
if a run must replay the same everywhere, own the math.
my flat alerts privacy page says login codes are deleted after a set time. when i wrote that line, nothing in the code deleted anything. the page promised more than the app did.
so i added a daily job. it clears old codes and old ask ai logs. if it fails, it logs the error and tries again tomorrow. it never stops the app.
a promise on a page is a to-do until a job runs it.
who reviews a change at anthropic? the change picks, not the author. a classifier reads it and sets the risk. low: no person needed once automated checks pass. medium: one person. high: two.
two rules i like. an agent's approval never counts as a person's. and some files always need a person, like ci workflow files.
when a parent edits a story in my kids' book app, the app splits it into pages again. it never said how many pages the story had. so a short story came back with extra pages.
that bills pictures nobody asked for. now the edit sends the old page count along.
my answers site uses two kinds of text. a short summary of each video picks which videos to read. the answer model then reads the full transcripts of 3 to 5 of them.
why not answer from summaries? a summary keeps the gist. you cannot quote a gist, and every answer has to quote.
fifty full transcripts is too many to send. so the first step only has to pick the right five.
simon willison noted that when his llm library switched http packages, any plugin using httpx without declaring it would break. they only had it because his library installed it.
i checked my answers site. its api imports pydantic. my dependency list never names it. fastapi installs it for me, for now.
if your code imports it, your list should name it.
page pictures in my kids' book app used to have permanent links. a copied link kept working for good.
now each link lasts one hour. the old public-link setting is deleted, so nothing falls back to it.
what i gave up: a copied link dies. the app has to ask again.
my answers site drops duplicate citations. rule one: if a quote sits inside another, keep the longer. a review of that rule found it would merge a short "i don't know" at 2:00 into a sentence 13 minutes later that contained it.
fix: the two must also be within 60 seconds. the real duplicates were 1.4 and 11 seconds apart.
same words is not the same moment.
my daily answers job has two steps. make today's answer, then publish every answer to the site. if step one fails, step two still runs.
publishing is safe to run twice. it rewrites what is already there. so it repairs a run that died halfway. skipping it would make one bad day a wrong site for good.
before a pipeline stops at its first error, ask if the next step is safe to repeat.
my flat alerts check a new search every 10 minutes for 3 days, then every hour. the renter gets a message with a link to switch back.
if that message fails, the switch stays. late news beats a switch that undoes itself.
a new paper tested agent memory on one chat. a strong model searching the raw history scored 99%, at under half the cost of reading it all.
my notes agent does the reverse. it reads the wiki index first, raw files last. a gap in the wiki is a finding, not a fallback.
one chat, one run. a question for my rule, not a verdict.
anthropic had claude write proofs that 123 open source libraries can't crash on inputs up to 64 MB. a proof checker, not a person, checks them.
the catch they name: claude could make any proof easy by rewriting the code so it never crashes. so they penalized every patch and audited them.
the agent that wants the win should never grade the win.