Updated with later commits + full audit sweep. 8 commits total. 2 new BFF fixes (noUselessCatch strip + P0 history-load regression). 6 audit findings surfaced: interview-gate auto-dispatch P0, PATH B silent dispatch, 8 chat-shell drifts, EP 8497 stub, 3 unaddressed Mark gaps, PR #343 lint block.
noUselessCatch — 4 BFF server functionsThese were surface from the Krisp meeting scan, interview-gate audit, chat-parity audit, and EP 8497 live probe. Ordered by severity.
P0 history-load regression fixed (79eac06). One P0 still open: interview-gate auto-dispatches instead of pausing for the editable summary confirm — Mark will see this on his first find_investors turn. Three P1 chat-shell drifts are in flight (persistence, MCQ, DiceBear). PR #343 merge is blocked on Biome a11y lint until those 13 errors are resolved.
{query}, ep 8497 reads suggestion_request_idpnpm sync-promptspnpm sync-prompts would BREAK the working backend if run today. Two specific mismatches were confirmed during the audit:
classify.md header still says "14 outcome classes" — Xano emits 15. Running sync would overwrite Xano’s live 15-class classify prompt with the stale 14-class local copy.prompts/ directory. Local files are older snapshots. Syncing overwrites the richer Xano copies with the older local ones.Standing rule: sync is only safe when local files are verified to be at least as complete as Xano. The guardrail agent (Section 2) will enforce this automatically once shipped. Until then: do not run sync.
When suggestion_request_id is provided to ep 8497 but no matching fundraising_pitch_profiles row exists, the endpoint silently falls back (likely returning empty or stub data) instead of throwing. This is inconsistent with ep 8399, which hard-fails with a precondition when its expected inputs are absent.
The question: Should ep 8497 be updated to hard-fail (mirror 8399’s precondition pattern) when the pitch profile row is missing? A hard-fail surfaces the bug immediately rather than silently degrading. The tradeoff is that existing callers that intentionally pass a synthetic or speculative ID would break.
Mark’s call. No change will be made until he weighs in. Flagging here so it’s visible when he reviews the loop output.