Session story extraction
Turn the session that just happened into durable source material for a blog post. This is UPSTREAM of drafting: a story file holds the narrative and the judgment, so a post can be written weeks later by a session that was not there.
FORMAT.md in this directory is the output format. Match its altitude: beats and receipts, not a summary.
Procedure
- Score first, write second: draft the full story into a scratch file, then gate it before it lands. It passes only if it has at least one wrong turn, at least one verbatim user quote, and a named invariant. A draft missing any of the three is low signal; stop at the source, do not file it.
- Output path:
stories/YYYY-MM-DD-<slug>.md (repo root). One file per story; a session with two unrelated arcs gets two files.
- Fill every FORMAT.md section from the session in context. Running after the fact, mine the transcript or the git log for the receipts first, then write.
- Hard rules:
- the user's words verbatim. Their reactions, corrections, and one-liners are the judgment payload (a one-line reaction is worth more than any summary of it). Quote, don't polish.
- Failures stay in. The wrong turn, the probe that lied, the cache that bit: the debugging IS the story. A story with no friction is a press release, bounce it.
- Numbers carry sources. Commit hashes, file sizes, token counts, wall-clock. Unverifiable claims get cut, not hedged.
- Voice-neutral. This is source material; the user's voice gets applied at drafting time (a later drafting pass). No em dashes even here.
- The invariant is required. One to three sentences on what transfers beyond this session. If you cannot name one, say so explicitly; that is itself information.
- Append one line to
stories/INDEX.md: - [date] <slug>: <one-line hook> (status: raw).
- Commit the story file on its own, if the repo uses git:
process: session story <slug>. Never sweep unrelated staged changes into it.
Relationship to the judgment-extraction loop
The format encodes a compressed version of the user's recursive judgment extraction (experience -> externalize -> tension -> invariant -> compress -> codify): Beats = experience externalized, Taste moments = the judgment located, The invariant = the compression, this skill = the codify step. The full ChatGPT-authored articulation is inspo, not canon; do not import its prose into stories.
Known gotchas
- Receipts survive a session; the hook, the wrong turns, the invariant, and the leftovers do not. Write them BEFORE clearing context, or they are gone.
- Prompting a model with texture targets (sentence-length mixes) produces a metronome; keep the prompt spec-only and edit a flat draft by hand.
1---2name: session-story3description: Extract a build session's story (narrative, problem-solving, wrong turns, the user's judgment calls, receipts) into blog-post source material at stories/. Use at the end of any substantive build session, when the user says "capture this session" or "story of what we did", or when mining an old transcript for a post. Raw material, never a drafted post.4---56# Session story extraction78Turn the session that just happened into durable source material for a blog post. This is UPSTREAM of drafting: a story file holds the narrative and the judgment, so a post can be written weeks later by a session that was not there.910FORMAT.md in this directory is the output format. Match its altitude: beats and receipts, not a summary.1112## Procedure13140. Score first, write second: draft the full story into a scratch file, then gate it before it lands. It passes only if it has at least one wrong turn, at least one verbatim user quote, and a named invariant. A draft missing any of the three is low signal; stop at the source, do not file it.151. Output path: `stories/YYYY-MM-DD-<slug>.md` (repo root). One file per story; a session with two unrelated arcs gets two files.162. Fill every FORMAT.md section from the session in context. Running after the fact, mine the transcript or the git log for the receipts first, then write.173. Hard rules:18 - **the user's words verbatim.** Their reactions, corrections, and one-liners are the judgment payload (a one-line reaction is worth more than any summary of it). Quote, don't polish.19 - **Failures stay in.** The wrong turn, the probe that lied, the cache that bit: the debugging IS the story. A story with no friction is a press release, bounce it.20 - **Numbers carry sources.** Commit hashes, file sizes, token counts, wall-clock. Unverifiable claims get cut, not hedged.21 - **Voice-neutral.** This is source material; the user's voice gets applied at drafting time (a later drafting pass). No em dashes even here.22 - **The invariant is required.** One to three sentences on what transfers beyond this session. If you cannot name one, say so explicitly; that is itself information.234. Append one line to `stories/INDEX.md`: `- [date] <slug>: <one-line hook> (status: raw)`.245. Commit the story file on its own, if the repo uses git: `process: session story <slug>`. Never sweep unrelated staged changes into it.2526## Relationship to the judgment-extraction loop2728The format encodes a compressed version of the user's recursive judgment extraction (experience -> externalize -> tension -> invariant -> compress -> codify): Beats = experience externalized, Taste moments = the judgment located, The invariant = the compression, this skill = the codify step. The full ChatGPT-authored articulation is inspo, not canon; do not import its prose into stories.2930## Known gotchas3132- Receipts survive a session; the hook, the wrong turns, the invariant, and the leftovers do not. Write them BEFORE clearing context, or they are gone.33- Prompting a model with texture targets (sentence-length mixes) produces a metronome; keep the prompt spec-only and edit a flat draft by hand.