Claude Code · feedback loop

Friction report, week 39

Every moment in the last seven days when you had to correct, repeat, redirect, or chase Claude, and the five rules those moments argue for.

This page counts friction in your own Claude Code transcripts and turns the repeats into proposed CLAUDE.md rules. It is for you, so you can rule on each rule. The first count closed on the evening of September 26. An addendum covers the twelve hours after that, so the numbers here run slightly ahead of the markdown you read on Friday.

67friction moments
243messages you typed
28%share of your messages
5rules proposed

How the count was made

The week in one chart

Counts are friction moments, revised to include the addendum window. Gold marks a pattern that did not appear the week before.

Status chasing on long builds16
Heavier path than asked9
Session cut off or connection lost7
Claimed done, not visible to you6
Billing refusals on outside APIs5
Prose caught after the gates passed3
Retry with nothing changed3
Absence claim never checked2
also present last week new this week

The mix changed more than the rate. Last week, 14 of 18 friction moments were about prose. This week, 5 of 67 were. The writing gate went live on September 16 and 17, which fits the drop, though one week does not prove it caused the drop. What is left is operational: chasing status, checking claims, and scope.

The patterns

1. You had to ask for status on long builds

16 moments · each minor, together the largest cost of the week · report builds

In one session you asked where the aTwist report was ten times between 11:37 and 15:37, roughly every thirty minutes.

"Where is the report at, it's been running for many hours"

"Where is report at?"

"Where is report"

Root cause: Claude reports progress only when you send a message or a background task finishes. A multi-hour workflow has many phase changes that nobody is told about. The live viewer and the rulings log both existed, but you had to know to open them.

2. Claude said something was done that you could not see

6 moments · moderate · settings, Google Sheets, a deployed page, a phone

"memx is blocking again"

"i dont see that tab" … "not showing, take over browser and see for yourself"

"how come the standard view is x'd out and doesnt work? only ambient view shows"

"It doesn't run when I hit run on mobile phone through tailscale link"

Root cause: each claim was checked through an API or a file, not in the view you use. Standing rule 2 in your global CLAUDE.md already says to verify on the real surface. It did not hold for sheets, for settings that need a restart, for interactive toggles, or for a phone.

3. Claude took a heavier path than you asked for

9 moments · minor to moderate · mixed

"actually, just fix memex"

"i mean tell me"

"I don't want to have to tell you to apply the rulings, instruct the agent for me"

"before we start, finish what we were working on, setup the scheduled compute run"

Root cause: the vault's process machinery is visible to every session, and Claude reaches for it by default. A direct request gets a full process.

4. A report said a platform presence did not exist when it did

2 moments, same report · major · the claim was wrong and a search disproves it

"I know there's a tiktok the report says there isnt i mean, a simple google search, for atwist vertical drama tik tok it's the first listing"

"also fix the report, as there are obviously x posts about atwist"

Root cause: the fact-check gate verifies claims that cite a source. A claim that something is absent cites nothing, so nothing checked it.

5. Billing refusals on outside APIs took hours to clear

5 moments · moderate, one major · Jev and OpenAI

"i switched on auto top up and added $5 try again"

"Try again I added $"

"im going to swap out the api key, give me the text to use"

Root cause: mostly outside Claude. TypeSafe refused calls while its console showed credit, and the OpenAI key belonged to a personal organization with no balance. Claude read the organization header only after the second top-up failed. Reading it on the first refusal would have saved a round trip.

The twelve hours the first count missed

The first count closed at 5:27 pm on September 26. You kept working until about 1 am. Thirty messages fell in that gap, across three sessions: the Jev cartography orchestrator, the sources worktree, and the site worktree. Seventeen of the thirty were friction.

That share, 57%, is not comparable to the 28% above. This was a late-night debugging and demo stretch on a half-built system, which is where friction concentrates. What matters is which patterns came back, not the rate.

New in this window

What worked

Compared with last week

PatternSept 12 to 19Sept 19 to 27Trend
Prose you caught after the gates passed113Down
Numbers or lists written as prose21Down
Status chasing on long builds016New
Heavier path than asked09New
Claimed done, not visible to you06New
Absence claim not checked02New
Unglossed internal terms11Same

The last analysis turned 19 repeated writing instructions into gate rules on September 16. Prose friction fell from 11 to 3 in the week that followed. Two memory rules added this week have not been tested yet: labelled bullets, and no internal names for a client reader.

Last week had fewer build-status moments partly because fewer long workflows ran. The status pattern may be new work rather than a regression.

Proposed rules

Five new rules and one change. Nothing here has been applied. Mark each one approve, change, or reject.

1. Report progress on long builds without being asked

Evidence: 16 status check-ins · Where: project CLAUDE.md, new section "Long-running work"

- When a build or workflow will run longer than 20 minutes, say at launch when it
  should finish and where to watch it. Then use Monitor on its log or status file and
  send Jonny a one-line status at each phase change. He should never have to ask
  where a run is.

2. Take the lightest path that answers the request

Evidence: 9 moments · Where: project CLAUDE.md, "What a good change looks like here"

- "Fix X" means fix it; "tell me" means answer in chat. Start a worktree, workflow,
  or diagnostic plan only when Jonny asks for one or the task cannot be done without
  it, and say which before starting.
- When Jonny rules on something a running agent is waiting for, send the ruling to
  that agent yourself.

3. Check an absence before printing it

Evidence: the report claimed no TikTok and no X presence, and both came up in a plain search · Where: the fact-check stage of /shuriq-report

- A claim that something does not exist (no account, no coverage, no filing) needs a
  logged web search for it, cited like any other claim. The fact-check gate fails an
  absence claim that has no search behind it.

4. Read the account on the first billing refusal

Evidence: five retries over about six hours on Jev and OpenAI · Where: project CLAUDE.md, "Local gotchas"

- On the first 402 or 429 quota error from an outside API, read the error code and the
  organization and project headers, then tell Jonny which account to fund and on which
  page. Do not retry until he says the balance moved.

5. Say what changed before a retry

Evidence: "try again" three times in three minutes · Where: project CLAUDE.md, "Local gotchas"

- When a command fails and Jonny says "try again", name the one thing that changed
  before running it again. If nothing changed, say so, and say the retry only tests
  whether the outside service recovered.

One rule to change

Current ruleProposed changeReason
Global CLAUDE.md, standing rule 2: "A fix is fixed only when the real surface says so: run the program, curl the deploy." Add: "For a sheet, a setting, or a control on a page, the real surface is the view Jonny uses. Open it in the browser, click the control, and say what you saw. If a change needs a restart, say it is not live yet. If the view is his phone, the check has to happen on his phone or be declared unverified." 6 moments this week: the Memex setting, the Sheets tab twice, the Standard view toggle, the worktree app inventory, and the Tailscale page on mobile.

Nothing to remove

No existing rule caused friction this week.

Deliberately not proposed

Focus for next week

Sources: system/friction-reports/2026-W39-friction-report.md and system/friction-reports/2026-09-26-proposed-rules.md. Every quote is one of your own messages, pulled from your own transcripts. Counts on this page match the markdown. Next analysis due Friday, October 2.