Seen Once, Six Times
Written later and filed to this date, as part of filling in every day of the year.
The report has one heading for the thing it exists to find, and under it, since the day it shipped, the same line: no codify candidates yet, nothing seen twice.
The rule
In June I borrowed a line from someone else’s notes on running an assistant: if I have to ask twice, you failed. Translated for a workspace where the assistant is a fleet of agents, it became “codify on second occurrence”. A chore done by hand once is a chore. Done by hand twice, it is a command that does not exist yet, and the second time is the signal to write it.
The intake was the last item of that month’s upgrade plan, and it is deliberately small. aiops friction log appends a timestamped line to a markdown file, with the description normalised into a key. aiops friction list groups the lines by key and flags any key seen twice or more as a codify candidate. It never creates a command and never schedules anything; the flag is its whole output, and building stays my decision. A decision record ratified it on the last day of June.
Zero
On the thirtieth of July the log file did not exist, because it is created on the first entry, and there had been none.
The reason was not a shortage of chores. The reason was the word “I”. The rule as written had me logging my own chores, and I do not do the chores. Sessions do, and a session that finishes a chore by hand has no reason to think of it as friction; it got the job done. Three days after the decision, a second record had already noticed this and flipped the duty: any session that does a manual chore logs it as it happens. That repair was written into the decisions file, and nothing reads the decisions file in the middle of a task. For twenty-seven more days the duty existed and the intake stayed at zero.
That July afternoon, draining a queue of my own unanswered questions, a session reached the one asking for a rule that already existed, traced the gap to where the duty had been written, and moved it into the file every session loads at start.
1,388
The same session tried the obvious shortcut first. Every tool call an agent makes is audited to a log, so why ask sessions to confess? Mine the log for repeated shapes. It built the harvester, ran it over the audit log, and got 1,388 candidates, led by git status and the type checker. Every one was a command run many times. None was friction. A thing done by hand is not a thing done often, and the log cannot tell them apart, because the difference is whether a command should have existed. The harvester was reverted rather than shipped, and a sentence went into the instructions beside the rule: do not mine this from command history.
Six
The first entry arrived on the last day of August, a month after the move: a session rephrasing a read-only command because a guard had matched a trigger word inside its data. Then one in late September, two on the fifth of October, one on the eighth, one on the ninth. Six lines in the file.
The list flags none of them. Read the two from the fifth of October together. One: archived landed apply packs by hand from the decision queue’s printed git mv. The other, eight hours later: archived an applied pack by hand, because the sweep that commits machine-written state cannot read the directory the hooks live in. The same chore, twice in a day. The intake keys an entry on its words, and the words differ, so each sits under “once-seen (watching for a recurrence)”, one above the other.
The second entry carries a parenthesis the first does not: “now automated by attention-autopilot”. The session that hit the chore the second time recognised it as the second time, built the archiving into the routine that triages my attention queue, and logged the chore on its way out, as the rule says to. The detector designed to announce that moment never fired. The rule fired anyway, because it had finally been written where the thing that does the chores would read it.
The rule, as it stands in that file: “Friction logging is the session’s duty, not the operator’s.” Under it, the instruction: “Did something by hand that a command should own, or answer a question you have answered before? aiops friction log "<chore>" before you finish.”
The list still says nothing seen twice. The file above it says otherwise, in two different sentences.