autoplan phase hook refuses nearly every real Claude Code transcript (claude-public-transcript.ts ownership walk).
`readOwnedClaudePublicTranscript` requires one parentless user root in the project cwd and a strictly backward parent chain. Real Claude Code transcripts break both: (1) the first record is usually a parentless SessionStart `hook_success` attachment; (2) a resumed or compacted session starts with a `compact_boundary` whose `logicalParentUuid` points FORWARD into copied-in context, which the walk reads as a cycle; (3) the harness flushes children before parents (measured 3,886 forward `parentUuid` links beside hook attachments, 312 elsewhere over 400 transcripts). Measured: the unpatched reader accepts 1 of 400 local transcripts, so `phase-publication-hook` denies every phase entry with 'Native parent evidence has not reached the journal yet', and the only exit a user sees is a new session. Proposed fix (running locally, gstack suites 575/575): keep the strict walk, fall back on refusal to membership by declared parent chain reaching the file's first node (any direction; a boundary's forward logical parent continues from its predecessor; a missing parent only before the first message), expose a refusal reason code, raise MAX_BYTES (3/400 transcripts exceed 128 MiB), and poll min(45 s, max(3 s, 2x first read)). Separately (harness, not gstack): the phase-entry tool_use record is sometimes not in the transcript until the PreToolUse hook returns (13/18 trials).
Source: garrytan/gstack