Ethan's stack generates a steady stream of Socratic reflection questions (commit-socratic-tablet-brief, socratic-morning-brief, pondercard-generate) but nothing captures his written answers back off the tablet. This closes the loop: stylus answers written on the tablet are OCR'd, paired with their originating question and commit, and folded into memory so future briefs stop re-asking what he already resolved.
Create ~/bin/socratic-answer-loop (bash, ~80 lines). Run via cron every 30m. 1) Poll ~/Tablet/socratic/ for new .png/.pdf annotation files newer than the last-run marker at ~/.local/state/socratic-answer-loop/last-run. 2) For each, extract the question ID embedded in the filename (socratic-tablet-brief already names files by question hash — read ~/.local/state/socratic/questions.jsonl to resolve hash -> question text + source commit SHA). 3) Pipe the image through the existing OCR path used by process-meeting / Doc Markup ingestion (or `claude -p` with the image attached) to transcribe the handwritten answer. 4) Append {ts, question_hash, question, commit, answer} to ~/.local/state/socratic/answers.jsonl and call `note-to-memory` with the Q/A pair so it becomes searchable via memory-search. 5) Patch socratic-question-resurfacer to skip any hash present in answers.jsonl. 6) Weekly, pipe the last 7 days of answers to reflection-to-linkedin as raw material. Add a bats test at ~/bin/socratic-answer-loop.test.bats covering hash resolution and dedupe.
**1. What it does**
- Every 30 minutes it scans `~/Tablet/socratic-answers/` for new stylus annotations (png/jpg/pdf), OCRs them with tesseract, and pairs each with the question and commit behind it using the hash in the filename.
- Writes each pair to a permanent answers ledger, plus a plain-text note into `~/Tablet/Notes/`, which is exactly what note-to-memory and reflection-to-linkedin already read. Memory folding and the weekly LinkedIn raw material happen with no extra job.
- The Sunday resurfacer now skips any question you have already answered.
**2. Files**
- `~/bin/socratic-answer-loop` (95 lines, executable)
- `~/bin/socratic-answer-loop.test.bats` (4 tests: hash resolution, note output, dedupe, unknown hash)
- One small patch to `~/bin/socratic-question-resurfacer`
**3. Proof**
- All 4 new tests pass, and all 6 existing resurfacer tests still pass. A real run with actual tesseract on a real image produced the correct ledger row, the note file, and a confirmed skip in the resurfacer.
**4. Two deliberate differences from the plan**
- The plan's question index and `~/Tablet/socratic/` inbox do not exist yet, and nothing in the stack writes that index today. The loop reads it if present and still records the answer with a blank question when it is not, so it degrades honestly. Wiring the brief generators to emit that index is the natural next step, and I will do it on your word.
- No separate weekly LinkedIn job,