Plan-tune cathedral T5. Closes the substrate hole that motivated this
entire branch: agent-compliance-only logging produced zero events in weeks
of dogfood. PostToolUse hook captures every AUQ fire deterministically.
What ships:
- hosts/claude/hooks/question-log-hook.ts — TS hook that reads Claude
Code's hook stdin, walks tool_input.questions[*], extracts user choice
+ recommended option from tool_response, spawns gstack-question-log per
question.
- hosts/claude/hooks/question-log-hook — bash shim Claude Code's hook
runner invokes; execs bun against the .ts file.
- Marker-first question_id extraction (D18 progressive markers):
<gstack-qid:foo-bar> stripped from question text, used as the id.
Hash fallback hook-<sha1[:10]> for unmarked questions (observed-only,
never used as preference key — D18 hash drift mitigation).
- (recommended) label parsing for the user_choice/recommended fields,
with refuse-on-ambiguous when two labels are present (D2 safety).
- Free-text capture: source=auq-other + free_text field when user picks
Other and types (Layer 8 dream cycle input).
- Matcher covers both native AskUserQuestion and mcp__*__AskUserQuestion
(Codex/Conductor catch from outside voice review).
- Crash safety: always exits 0; errors land in ~/.gstack/hook-errors.log
so the user's session is never blocked by a hook failure.
gstack-question-log extended to:
- Accept `source` field (default 'agent', new values: hook, auq-other,
auto-decided, codex-import-marker, codex-import-pattern).
- Accept `tool_use_id` (<=128 chars) for dedup.
- Composite dedup on (source, tool_use_id) across the last 100 lines —
protects against hook + preamble both firing on the same tool call
(D3 belt+suspenders).
- Async fire `gstack-developer-profile --derive` after each successful
write so inferred.sample_size actually grows (D17 — without this, the
cathedral's "before 0, after >0" metric never moves).
- GSTACK_QUESTION_LOG_NO_DERIVE=1 escape hatch for tests.
9 new unit tests covering capture, marker extraction, MCP variant,
free-text, dedup, ambiguous-recommended safety, crash paths. All pass
plus the existing 88 tests across related files.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>