Skip to content

Fix readme - #5

Closed
Nyakult wants to merge 2 commits into
EverMind-AI:mainfrom
Nyakult:main
Closed

Fix readme#5
Nyakult wants to merge 2 commits into
EverMind-AI:mainfrom
Nyakult:main

Conversation

@Nyakult

@Nyakult Nyakult commented Nov 18, 2025

Copy link
Copy Markdown

updated MemOS url

@Nyakult Nyakult closed this Nov 18, 2025
DuffyCoder referenced this pull request in DuffyCoder/EverOS Apr 22, 2026
…ng conv

Two paired hardenings so a single bad memcell no longer aborts the
whole add() pass. Observed failure: one conv produces 90 memcells,
one of them's atomic_fact extraction legitimately returns empty
(pure greeting / filler session filtered by prompt rule #5), old code
raised ``ValueError("atomic_fact list is empty")``, asyncio.gather
re-raised on first exception, and the remaining 89 successful
event_logs were discarded alongside it.

- src/memory_layer/memory_extractor/event_log_extractor.py:
  empty ``atomic_fact`` is a valid prompt outcome — return None so
  the caller skips this memcell's event_log gracefully. Logged at
  INFO so post-hoc analysis can still count how often it fires.
- evaluation/src/adapters/evermemos/stage1_memcells_extraction.py:
  switch ``asyncio.gather(*event_log_tasks)`` to
  ``return_exceptions=True``. Iterate results, skip exception items
  with a warning, count successes. Previously the first exception
  cancelled siblings and the whole conv fell over.

Success-count print is now the exact truth (``success_count /
len(results)``) instead of a post-hoc re-computation over tuples we
may not have gotten because of the raised exception.
Kendrick-Song added a commit that referenced this pull request Jul 27, 2026
…ence

_validate_components previously only checked the process-wide
capability accessor. A caller that constructed SearchManager with
embedding=None or reranker=None while the accessor happened to be
available (test fixture drift, subclass customization) slipped past
the gate and produced an opaque AttributeError('NoneType') deep in
dispatch instead of a clean 422 ProviderNotConfiguredError.

Guard now uses belt-and-suspenders: fails if EITHER accessor says
unavailable OR self._embedding / self._reranker is None. Single
source of truth = both agree the provider exists.

Fixes fable5-review finding #5.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Kendrick-Song added a commit that referenced this pull request Jul 27, 2026
Round-2 review found 5 defects in _backfill.py — 3 introduced by
the first fix-pass (Groups A/E) plus 2 pre-existing:

- #1 subject-only embed failure silently corrupts subject_vector:
  scan filter now covers OR subject_vector IS NULL for tables that
  carry a subject; batch-level embed writes only the sides that
  succeeded; next run picks up the residue.
- #3 sync drain unscoped: kinds param plumbed through worker.drain*
  and claim_pending_batch so Phase-3 sync no longer touches other
  kinds' queue state.
- #5 preflight order: capability check now runs before scan +
  tokenize + estimate; empty-backlog path also preflights.
- #6 Phase-3 idempotency: _scan_skill_source also checks SKILL.md
  on disk, so a Ctrl-C after extract_agent_skill but before sync
  no longer causes re-extraction on next run.
- #9 count/limit race: _scan_null_vector_backlog drops the outer
  limit; the where-filter naturally bounds the fetch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Kendrick-Song added a commit that referenced this pull request Jul 28, 2026
Round-3 Minor findings final wrap:

- #12: task-number leaks (Task 14 / 22 / 25) in released
  source docstrings replaced with descriptions of the current
  invariant. extract_user_profile.py:11-13,103-107 rewritten:
  the Task-14 registration gate it referenced was removed by
  ae5543d (Group I replaced it with per-strategy body-guards);
  the docstring's mutual-exclusion argument now correctly
  states the applies_to + body-guard mechanism.

- #13a: test_backfill_batch_concurrency wall-clock assertion
  (span < total * 0.8) replaced with overlap assertion (p_start
  < s_end AND s_start < p_end). Tests concurrent execution
  semantic without CI-runner-latency assumption.

- #13b: test_backfill_flags.py SIGINT-to-getpid test marked
  slow to protect against CI race where 0.3s timer fires before
  asyncio.Runner installs its handler. Subprocess variant
  deliberately not shipped (both variants would be slow-gated
  anyway; the added maintenance surface would not pay for
  itself). Docstring documents the exclusion rationale.

- #5/#6/#8/#11-second: design-note docstrings at the relevant
  sites so future readers know these are accepted choices, not
  oversights. #8's rationale lives once in
  trigger_profile_clustering with pointers from the three
  sibling body-guards to avoid a four-copy paste-flood.

Fixes PR #361 review Minor findings #5, #6, #8, #11 (abort
semantic), #12, #13a, #13b.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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