FLT 75 REVIEW ROUND4
The production dependency configuration changes resolved requester identities to random profile IDs that cannot pass the existing allowlist check, preventing intake from accepting valid requests. The completed-idempotency recovery path can also corrupt ticket URL metadata.
Full review comments:
-
[P1] Preserve the allowlisted stable identity — C:\Users\fives\source\repos\founder-intake-wt-c456\FounderIntake.Host\Adapters.cs:31-31 When
RequesterDirectoryis supplied byProgram, this replaces the configured stable ID with a newly generated profile GUID.IntakePipeline.AcceptAsyncimmediately checks that value againstoptions.AllowedRequesterStableIds, which contains the configured requester IDs, so every otherwise valid Slack and AgentMail event is denied after the first profile resolution. Keep authorization based onmap.StableIdand carry the profile ID separately for request binding. -
[P2] Do not overwrite ticket metadata with an empty URL — C:\Users\fives\source\repos\founder-intake-wt-c456\FounderIntake.Host\ConversationResponder.cs:211-214 When an idempotency reservation is already complete but the thread-ticket update did not finish, this reconstructs the ticket using only its key and an empty URL. The shared success path then overwrites
thread_ticketswith that empty URL and sends a malformed requester reply, while also adding the transcript comment again. Persist and recover the ticket URL with the idempotency result, or use a separate recovery path that does not replace known metadata.