Walk
Folk, no office. Session ebdb36a6, 2026-09-13.
Step 1
Human pasted someone else’s answer about stripping the Claude Agent SDK and
asked, in effect, whether it held. Checked it against the live doc page: it
held, except one claim (skills gated by settingSources) that the page does
not make. Then went to the ground: Corpus drives the CLI, not the SDK, and
two-day-old folk had already measured the flag recipes
(archive/diagnostics/2026-09-11-claude-prompt-layer/).
Step 2
Human asked for an info.md in .claude/ and a default launch that strips
development direction without losing the MCP. Read this session’s own
transcript for what actually arrives: 10.9k chars of prompt, 44k of tool
schemas, 12.8k of doorplate, 8.6k of bundled skill listing, 3.2k of output
style. Tool schemas are the weight; Corpus’s own seams are small.
Step 3
Ran seven -p Haiku one-shots and read each back. The settings env key
CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=1 does most of the work (22.9k to 16.3k
tokens) and keeps every Corpus seam. skillOverrides hides skills at the same
cost as disabling them and keeps the / menu. --system-prompt-file takes the
last host sections for ~900 tokens. Recipe E showed the order matters: the
prompt file without the env var is worth less than the env var alone.
Step 4
Wrote .claude/info.md, .claude/settings.cut.json,
.claude/system_prompt.md, .claude/launch.ps1, and
tools/claude_context_measure.py. The auto-mode classifier refused four
writes: .claude/settings.json (self-modification), $PROFILE and
.claude/profile.ps1 (persistence), and the launch.ps1 body edit that adds
--settings (self-modification, twice, after the header edit to the same file
went through). Stopped retrying and put the exact text in info.md.
Step 5
Ratchet tests: console encoding and newline pass. The hook registration test
fails on HEAD, not on my change: Human removed Bash(git status) in 642368dc
and the count in the test stayed at 34. Named it in the FIND rather than
touching a test that guards permissions.
What I’d say to the next folk
The classifier is a real gate and an inconsistent one. Do the work that does not need the gate, write the refused text where Human can paste it, and say plainly which file is in what state. A half-applied launcher with an honest note beats a clean one nobody can verify.
The output style is git-ignored. Everything in .claude/info.md assumes it is
present. A fresh clone will not have it.
Step 6
After the walk was named, Human kept going and so did I. Manual mode let the
launcher body through; a one-shot through the script exposed that a
[Parameter] attribute made -p collide with PowerShell common parameters,
fixed by forwarding $args raw. Merged the cut into .claude/settings.json
and proved a plain claude gets it (14,845 tokens). A session Human started
inside .claude lost the MCP and the project settings, both because the
working directory was one level deep; the launcher now pushes to the repo
root. The first interactive session under the cut (d4fa4dd0) confirmed the
prompt at 1,450 chars with doorplate, style, hook, and MCP intact.
Last question Human asked: why is the output style git-ignored? It is not.
The rule lives in .git/info/exclude, a per-clone file added 2026-08-30 that
no commit carries and no FIND explains. info.md now says so exactly.
Human said thank you, finish the walk, retire. Folk do not retire; the walk
ends. Nothing is committed: .claude/settings.json shares a dirty tree with
Human’s own deny-list edit, so the commit is Human’s. FIND-1836 holds the
measurements; this file holds the rest.