发布

  • release: Cut v1.4.1 with fixes from dev (#4282)

    frostbyte_neo 发布于 2026-07-31 21:21:17 +00:00

    Description

    Release branch for v1.4.1, cut from main (v1.4.0) with the
    highest-impact fixes cherry-picked from dev. Every pick applied
    cleanly (cherry-pick -m 1 -x, PRs are merge commits on dev); original
    authorship is preserved.

    Fixes included

    PR Fix
    #4253 Migration: empty key alias emptied entire Letta/Zep imports
    (silent data loss)
    #4261 Migration: Letta messages with present-but-null content were
    dropped
    #4248 Migration: parse_timestamp now returns tz-aware UTC
    datetimes
    #4153 Postgres graph + PGVector adapters: missing NUL-byte
    sanitization
    #4235 LanceDB: batch delete_data_points predicates
    (forget(everything=True) hung indefinitely)
    #4156 Ladybug: edge-filtered get_neighborhood crashed with Kuzu
    internal assertion
    #4182 Postgres cache backend: UUID bind type errors + sliding-TTL
    deadlocks
    #4274 Cypher/NL retrievers crashed on installs without the postgres
    extra (carries @teedonk's #4124)
    #4244 JSONEncoder: TypeError on datetime.date values (fixes
    #4239)
    #4195 OpenRouter embeddings: guard encoding_format=null 400 (fixes
    #3660)
    #4158 improve(): allow dataset_id
    02ad299f1 (via #4272) Access control: accept kuzu/ladybug provider
    aliases in the handler compatibility check — fixes the 7 unit-test
    failures (graph methods + pipelines) that were already red on main's
    own CI
    #4257 Test hygiene: mock-restore autouse fixture in
    test_api_error_responses.py (stops cross-module mock leakage in
    full-suite runs) + estimator Windows absolute-path gate, adapted to
    main's ingestion semantics
    #4285 SDK-255: let CogneeApiError reach HTTP callers in
    search/recall/remember/improve routers
    #4286 SDK-255: derive the default session id from the dataset when
    none is provided
    #4175 OAuth framework with Slack support — included so #4232's
    migration keeps its original down_revision (b2c4d6e8f0a1), keeping
    the alembic chain identical to dev (adds cryptography as a core
    dependency)
    #4232 Session cache: dedupe session-context entries + unique index
    (migration c3d5e7f9a1b2)
    #4203 Move remaining examples/python demos to examples/demos
    (aligns layout with dev; needed for the offline-test fix below)
    bf694d795 (via #4272) Make the local Ollama example test genuinely
    offline — class-level embed_text patch so cached engines can't hit the
    network (fixes the deterministic Unit Tests (Mocked, No Secrets)
    failure)
    #4193 Silence ty unresolved-import for optional PIL in
    image_loader (fixes the Code Quality job)
    #4294 SDK-255: improve() resolves the write dataset once, with
    write permission, as a UUID
    #4056 improve(): remove exception swallowing around session
    persistence (fail-fast)
    #4144 SDK-285: configurable embedding max throughput
    (embedding_max_concurrent_data_points, default 150)
    #4240 Auto-enable the RPM limiter on overload evidence
    (429/503/529/timeouts), with smaller default budgets for local inference
    servers; bedrock adapter moved to the shared retry + pacing seam
    #3994 SDK-142: simplify LLM configuration — provider inference from
    model prefix, instructor-mode table, embedding rate-limit knobs moved to
    EmbeddingConfig
    #4243 Strip the ollama/ routing prefix in the Ollama adapter
    (model-name inference follow-up to #3994)
    #3588 Windows: derive basename from backslash paths in Mistral
    transcription
    #4177 Remove test_mistral_transcript_basename.py (collection error
    without the mistral extra; SDK-250)
    #4042 Gate dataset deletion behind the per-dataset pipeline lock
    (delete now waits for in-flight cognify)

    Plus a version bump to 1.4.1 (lock file updated in a follow-up
    commit).

    Notes on adapted picks:

    • #4153: its pyproject.toml/uv.lock changes were dropped — they only
      carried a stray 1.4.0.dev0 version bump; the sanitization fix itself
      is intact.
    • #4257: its two dev-only test files (test_cognee_error_contract.py,
      test_contradiction_detection_wiring.py) don't exist on main and were
      dropped; the estimator fix is re-expressed inside main's
      _path_candidate flow because dev's version relies on ingestion
      semantics from unpicked #4155.

    Verification

    • The 7 unit-test failures visible on this PR's first CI run are
      inherited from main: the same tests fail on main's own Test Suites run at the base commit 6d5508453 (kuzu-vs-ladybug handler
      mismatch). The 02ad299f1 pick fixes them — all 7 pass locally after
      the pick.
    • 96-test verification batch (api error responses + estimator + graph
      methods + pipelines + session flows) passes, including the
      mock-poisoning file and its victims in one invocation.
    • All 140 unit tests covering the originally picked code pass;
      Kuzu/Ladybug adapter integration suite passes (56 passed, 4 xfailed, 2
      xpassed); #4158 regression test passes; pre-commit (pinned ruff)
      passes on all changed files; uv lock --check passes.

    🤖 Generated with Claude Code

    下载附件