mirror of
https://github.com/garrytan/gbrain.git
synced 2026-07-28 06:23:01 +00:00
Three verified backlog items in one wave: - #2345: putPage's ON CONFLICT upsert never cleared deleted_at, so re-creating a soft-deleted slug returned created_or_updated while the page stayed invisible (silent write-swallow). Both engines now set deleted_at = NULL on upsert; regression test in pages-soft-delete. - #2028: the query-embed catch in hybridSearch was bare, so a slow provider missing the ~6s deadline silently degraded hybrid search to keyword-only (empty results for CJK content). The keyword-fallback meta now carries degraded_reason (embed_timeout / embed_error / no_embedding_provider), a once-per-process stderr warning names the deadline and GBRAIN_QUERY_EMBED_TIMEOUT_MS, and the env var is documented in docs/guides/search-modes.md. Tests drive all three reasons through hybridSearch end to end. - #2330 + takeover of PR #2398 (code hunks, sans release bookkeeping): upload-raw small-file persistence + source-namespaced storage paths (#2297), explicit skill_surface check in the focused doctor so unassessed surfaces warn instead of scoring a vacuous 100 (#2330), getHealth/getStats soft-delete denominator parity (#2330), PGLite reinit hint (#2301), and the updateSourceConfig array-branch guard (#2251) — both engines in lockstep, with the PR's 8-test suite. Co-authored-by: garrytan <garrytan@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>