From requests to mechanisms: a week of risk-tiered review and a gh wrapper for agent PRs (karasu weekly) A developer building karasu, a C4-inspired text modeling language for system architecture, shipped risk-tiered code review in the project's October 25–31 weekly update, classifying each pull request into one of four tiers by the paths it touches and requiring a local review record in the PR body for every tier except High. Of 76 PRs closed that week, 70 merged (92%), and 10 Low-tier PRs were auto-merged without reading the diff, 9 of them ADR-only. The developer also trimmed the always-read development guide from 46 KB to 14,876 bytes, moving the rest into topic files under docs/process/, and flagged 4 High PRs that CodeRabbit never reviewed for follow-up. karasu https://github.com/kompiro/karasu is a text modeling language for system architecture, inspired by the C4 model. You describe your system in .krs files and karasu draws the views: system, deployment, and team structure. I haven't written its code by hand; everything goes through Claude Code. This is the fourth weekly update. It covers changes merged from October 25 to 31. This time I start with what I learned building with agents, then go through what shipped. This week in numbers: 70 PRs merged 12 of them Dependabot and 18 decisions recorded as ADRs. 15 of the ADRs came in ADR-only PRs, and 3 were added inside implementation PRs. On October 25 the monthly release train left for the first time, shipping karasu 0.10.0 and the Visual Studio Code extension 0.5.0. Risk tiers that set how deep a review goes are now running. Last week I wrote that the design was merged and the implementation was still to come; it landed on October 27. Each PR falls into one of four tiers by the paths it touches. Every tier except High puts a local review record in the PR body. It's a table of who reviewed and, for each finding, whether it was fixed or declined. A required check confirms the record is for the PR's latest commit. This week 76 PRs were closed and 70 of them merged a 92% merge rate . Of the 50 merged with a tier label, 18 were High, 10 Design, 12 Medium, and 10 Low. I merged the 10 Low PRs without reading the diff, so the auto-merge rate is 20%. 9 of the 10 were ADR PRs, and the other was the monthly review of test perspectives. 9 were merged within 3 minutes of leaving draft. The 22 Medium and Low PRs were merged without going through CodeRabbit. High is common because much of this week's work touched the review and process machinery itself. Changes to that machinery are set to land in High. It'll take a few more weeks of counting to see how the tiers split in everyday development. While counting, I found 4 High PRs that CodeRabbit never reviewed. I haven't checked yet whether they slipped through or were left out for a reason. I'll look into it before the next update. Over the past week I came across several talks and posts on not reading code all in Japanese . I never kept reading all the code of the systems I build at work. Even in reviews, I don't read much of the surrounding code. Since I started using AI, I have it check the surrounding situation while I read the parts that concern me in depth. The parts that don't concern me, I now skim. I think I can do that because I trust AI about as much as a capable contractor. The trust I mean is close to Minodriven's "using it without caring about its insides." But what I want to get right is less the code itself than the ground the code is written on. Even a capable contractor, not knowing the team's agreements and not following its steps, writes code full of places that concern me. Agents are the same. If the material to work without hesitation arrives before writing starts, and the steps are followed while writing, I should be able to read less. In karasu, I set up those two like this. Before writing: leave the agent less room to get lost. In karasu, a large change merges a design document first and is implemented after. This week's risk tiers 3358 → 3365 and the docs/process.md split described in this section 3394 → 3402 both went in that order. Past decisions are recorded as ADRs, and a step to check them before designing is in the skills. On top of that, I cut down how much has to be read. docs/process.md is the development guide every session reads in full first. It had grown to 46 KB. When all of it is read every time, the step needed right now gets buried in the others. So I kept only the flow that's always needed, at 14,876 bytes, and moved the rest into topic files under docs/process/ . The guide has an index that says when to read each file. For example, the review tiers and how to write the record are read in the step just before a PR leaves draft. I measured how far this read-it-when-needed approach Progressive Disclosure reaches current models in a September post https://fukurou.kompiro.dev/en/progressive-disclosure/ . Then, path-scoped rules that load when a file is opened almost never fired, while steps written into skills got through. This split doesn't rely on loading on file open either. The always-read guide names which file to read at which step. While writing: move "requests" into mechanisms. I had shrunk docs/process.md to 12.7 KB once before. It had grown back to 46 KB. Tidying by hand was undone as steps were added. This time I added pnpm lint:process-index , which checks the index-to-file mapping, the links, and the guide's size in lefthook and CI. Last week I wrote that a check refusing gh pr ready before the local review was in a PR. That's merged too. The first version was a Claude Code hook that inspected the text of the command about to run. But each CodeRabbit review found another way around it: gh after a heredoc, gh behind env -u or timeout -s , gh through eval or xargs . The command text can't tell you what will finally run. After 20 CodeRabbit reviews, it was rebuilt as a gh wrapper placed first on the session's PATH, deciding from the arguments gh actually receives. What wasn't followed when it was written in the guide, I'm moving into lint, the gh wrapper, and required checks. That's Watanabe's move from "request" to mechanical check. Low's auto-merge sits on top of these two. I'll keep counting the merge rate and the auto-merge rate in the coming weeks. I also plan to track whether bugs later turn up in PRs merged without reading. I'll write about "ground that lets me read less" in a separate post. The two demo videos in last week's update were recorded by an agent. This week added the skill behind them demo-video and pnpm demo-video:record