Skip to content

fix(ingestion): align zep-ingest with server-assigned UUIDs - #600

Merged
jackaldenryan merged 4 commits into
mainfrom
jack/fix-ingestion-package
Aug 12, 2026
Merged

fix(ingestion): align zep-ingest with server-assigned UUIDs#600
jackaldenryan merged 4 commits into
mainfrom
jack/fix-ingestion-package

Conversation

@jackaldenryan

Copy link
Copy Markdown
Contributor

Summary

  • Breaking 0.2.0: stop accepting client NodeItem.uuid / FactTriple.fact_uuid / require_uuids, matching the API that assigns identities server-side.
  • Expose Zep-assigned IDs on IngestResult.node_uuids and edge_uuids, kept zip-safe across partial failures and out-of-order task completion.
  • Clear retired-field errors for JSON rows; bump zep-cloud to >=3.27.0; update README/CHANGELOG/tests.

Test plan

  • Run pytest -m 'not integration' in ingestion/
  • Confirm ingest_nodes without client UUIDs returns parallel node_uuids
  • Confirm ingest_fact_triples + wait() populates edge_uuids in task_ids order
  • Confirm JSON rows with uuid / fact_uuid raise ConfigurationError

Made with Cursor

Stop accepting client node/fact UUIDs (API rejects/ignores them), surface
Zep-assigned identities on IngestResult in zip-safe order, and bump to 0.2.0.

Co-authored-by: Cursor <cursoragent@cursor.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Critical

  • ingestion/src/zep_ingest/result.py, _param_identity_prefix hunk around new lines 183–196: identity recovery stops permanently at the first task without the requested identity field. A failed task, or a mixed task type (for example, a node task while collecting edges), never gains that field, so UUIDs from all later successful tasks remain inaccessible even after wait() completes. Preserve task-position gaps with None, or track identities by task ID and only defer entries for nonterminal tasks. Add tests covering a failed or different-type task followed by a successful task.

jackaldenryan and others added 2 commits August 12, 2026 15:55
Stop treating terminal tasks without identities like in-flight ones so
edge_uuids/node_uuids still collect later successes with None gaps.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Critical — ingestion/src/zep_ingest/result.py, _sync_identities_from_task_params() hunk: edge_uuids is rebuilt solely from task_ids, but ingest_fact_triples() adds no task ID or placeholder when a submission fails or returns no task handle. Thus, if triple 0 fails submission and triple 1 succeeds, the latter’s UUID appears at edge_uuids[0], violating the documented alignment with submitted triples and potentially associating an edge with the wrong input. Track one slot per submitted triple, including submission failures/untracked responses, and map task IDs to those slots rather than deriving the list directly from task_ids. Add a regression test covering an early submission failure followed by a successful triple.

Co-authored-by: Cursor <cursoragent@cursor.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Critical — ingestion/src/zep_ingest/result.py, _param_identity_prefix hunk: edge_uuids is aligned only with task_ids, not with submitted triples. If an earlier add_fact_triple call fails during submission, no task ID or placeholder is recorded; a later successful triple’s UUID shifts into the failed triple’s position. This contradicts the documented input-parallel contract and can associate facts with the wrong source records. Preserve the original submission index—e.g. add None immediately for submission failures/untracked calls and update UUIDs by task-to-input mapping rather than rebuilding solely from task_ids.

  • Warning — ingestion/pyproject.toml:3 and ingestion/tests/test_basic.py version-test removal: The package version becomes 0.2.0, but zep_ingest.__init__ still falls back to 0.1.0 when distribution metadata is unavailable. Removing the version test hides this inconsistency, so source-tree imports report the previous release. Update the fallback to 0.2.0 and retain a test covering it.

@jackaldenryan
jackaldenryan merged commit 52ef207 into main Aug 12, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant