Three follow-ups CC 2.1.257 asked for

Stacked on the adoption PR. Each one is small; each one changes what a session sees.

1. fable-spend-consent, simulate a spawn

Pick the spawn's model pin and the session env. The hook's answer is what CC would see.

Why FORCE matters: with CLAUDE_CODE_SUBAGENT_MODEL_FORCE set, CC applies CLAUDE_CODE_SUBAGENT_MODEL (or the main model) to every subagent and ignores the pin this hook inspects. Before this change the hook asked consent for spend that could not happen.

2. doctor read boundary

settings statedoctor output
blockReadsOutsideWorkingDirectories unsetno warning, read_boundary.block_reads_outside = unset
true, additionalDirectories includes ~/.claudeno warning
true, additionalDirectories does not cover ~/.claudewarn: analytics, dream, memory and doctor reads outside the project will be refused, not prompted

Scope: observed, never fixed by the script; doctor prints the JSON and the operator decides. Finding 8 in settings-posture.md.

3. fable alias to claude-fable-5-1

claimmeasured
vocab comment: advancing an alias fails test-model-recency.sh until docs followwrong: the ratchet passed with the advance and reported prose claims 11 < 16 (improved); baseline refreshed
cost for model: fable agents$10 in, $50 out unchanged; cache reads $0.25 instead of $1.00