Skip to content

fix(memory): skip skill extraction for missing legacy bodies - #529

Open
monsterlag wants to merge 1 commit into
EverMind-AI:mainfrom
monsterlag:fix/issue-395-5d48
Open

monsterlag wants to merge 1 commit into
EverMind-AI:mainfrom
monsterlag:fix/issue-395-5d48

Conversation

@monsterlag

Copy link
Copy Markdown

Note

AI-generated, not reviewed by a human. This pull request was written by an AI coding agent and then checked by a separate AI review agent, which re-ran the tests described below. No human has reviewed the code. It is submitted by @monsterlag, who runs these agents. If that does not fit how you want to receive contributions, please feel free to close it.

Summary

Fixes #395.

  • Preserve a missing legacy approach as None through clustering and OME queue serialization, instead of conflating it with an explicitly empty string.
  • Warn and return before skill reads, extraction, or writes when that body is absent, preventing incomplete legacy input from replacing SKILL.md. Explicitly empty modern approaches remain valid.
  • Carry complete indexed case snapshots on synthetic backfill events so backfill continues to work with the guard; skip stale cluster members whose cases no longer exist.

Area

  • Architecture method
  • Benchmark
  • Use case
  • Documentation
  • Developer experience
  • CI, build, or release

Verification

uv run --frozen --python 3.12 pytest -p no:cacheprovider tests/integration/test_ome_strategies_integration.py -k skill_chain_e2e -q
  Before fix: 1 failed, 2 passed (legacy input reached AgentSkillExtractor).

make ci
  Ruff, formatting, import contracts, and repository checks passed.
  Unit: 2929 passed, 4 skipped.
  Integration: 190 passed, 9 skipped, 7 deselected.
  sdist/wheel build and isolated wheel import passed.

make check-commits RANGE=origin/main..HEAD
PR_TITLE='fix(memory): skip skill extraction for missing legacy bodies' make check-pr-title
  Passed; pre-commit and gitlint hooks also passed.

Tests used Python 3.12 and frozen dependencies, with a virtual environment outside the checkout. Coverage includes repeated JSON replay, missing/empty/populated approach controls through real OME/SQLite dispatch, and backfill extraction/persistence.

Additional make docs-check passed its Markdown and contributor-doc checks but could not run the YAML step because Ruby is unavailable in this container. No Markdown, YAML, or CI files changed. There is no standalone typecheck target configured.

Checklist

  • I kept the change scoped to the relevant area. (done by the AI agents, not by a human)
  • I am opening this from a separate branch, not pushing directly to main. (done by the AI agents, not by a human)
  • I updated docs, examples, or setup notes when behavior changed. (Event and strategy docstrings.) (done by the AI agents, not by a human)
  • I added or updated tests when the change affects behavior. (done by the AI agents, not by a human)
  • I did not commit secrets, .env files, dependency folders, or generated output. (done by the AI agents, not by a human)
  • Active relative links in Markdown files resolve.

Notes for Reviewers

The live extraction strategy still does not probe LanceDB for its target case; only the backfill producer loads an already-indexed case before emitting its snapshot.

This cannot retroactively identify older mixed-version records already materialized with an explicit approach="": those are indistinguishable from legitimate empty approaches. Missing-body events now complete as a warned no-op rather than risking a skill replacement.

By submitting this pull request, I agree that my contribution is licensed under
the Apache License 2.0.

Preserve absent approach fields as None through clustering and queue
replay, and skip them before reading or replacing agent skills. Keep
explicitly empty modern approaches eligible for extraction.

Carry indexed case snapshots on backfill events so the same guard does
not discard valid backfill work. Cover legacy replay and modern controls
through the real OME/SQLite chain.

Fixes EverMind-AI#395

This branch has not been deployed

No deployments
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.

Mixed-version OME queue can feed an empty approach into skill extraction

1 participant