#1442 shows a feed row for a mid-turn Claude proxy transport gap. That row is held in the main process only, so it survives later turns but not an app restart.
The forensic AppRunJournal is not a valid restart source (q120). It silently drops writes (cap, append failure, disk-setup failure), it falls under debug retention, and its gap incidents carry no provider conversation id.
Making the marker restart-durable needs a dedicated, bounded gap-metadata store keyed by provider conversation id, with explicit failure semantics. That is new on-disk product state, close to the owner's #1235 decision (the ghost feed log was removed; no crash-resume persistence without the owner). OWNER DECISION NEEDED before any implementation: approve such a store (and its bounds), or accept restart loss for gap markers.
🤖 Generated with Claude Code
#1442 shows a feed row for a mid-turn Claude proxy transport gap. That row is held in the main process only, so it survives later turns but not an app restart.
The forensic AppRunJournal is not a valid restart source (q120). It silently drops writes (cap, append failure, disk-setup failure), it falls under debug retention, and its gap incidents carry no provider conversation id.
Making the marker restart-durable needs a dedicated, bounded gap-metadata store keyed by provider conversation id, with explicit failure semantics. That is new on-disk product state, close to the owner's #1235 decision (the ghost feed log was removed; no crash-resume persistence without the owner). OWNER DECISION NEEDED before any implementation: approve such a store (and its bounds), or accept restart loss for gap markers.
🤖 Generated with Claude Code