Skip to content
This repository was archived by the owner on May 18, 2026. It is now read-only.

Revert: restore plugins/memory/mem0_oss/ (Phase 3 architectural rollback) - #3

Merged
roadhero merged 1 commit into
mainfrom
fitb/phase3-restore-mem0_oss
May 17, 2026
Merged

roadhero merged 1 commit into
mainfrom
fitb/phase3-restore-mem0_oss

Conversation

@roadhero

Copy link
Copy Markdown

Fork PR #3 for Phase 3 of the Fox in the Box v0.6.0 upstream-separation migration (fox-in-the-box-ai/fox-in-the-box epic NousResearch#155). Reverts the git rm -r plugins/memory/mem0_oss/ step from fork PR #1 (which is part of the merged Phase 3 fork work). Restored content is byte-identical (SHA-verified) to pre-deletion commit `44a6808f`.

Why this revert exists

Engineer-discovered architectural mismatch during Phase 3b monorepo PR (NousResearch#221) review: upstream's memory-provider discovery is separate from the general plugin manager:

  • General plugins → hermes_cli/plugins.py PluginManager.discover_and_load via entry-points + bundled scan, using PluginContext
  • Memory providers → plugins/memory/__init__.py directory-scan only, using a memory-provider-specific FakePluginContext with register_memory_provider (which standard PluginContext lacks)

The original Phase 3 plan assumed memory providers were entry-point-compatible. They aren't. Relocating mem0_oss to the overlay made it unreachable by upstream's memory-provider discovery AND incompatible with the standard PluginContext provided by the entry-point group. Dennis approved Option A (revert relocation) over Option B (build a memory-provider context construction in overlay) and Option C (drop mem0_oss from v0.6.0).

File changes (3 files, +1218 lines)

  • plugins/memory/mem0_oss/__init__.py (1011 lines, SHA-verified vs 44a6808f)
  • plugins/memory/mem0_oss/README.md (201 lines, SHA-verified)
  • plugins/memory/mem0_oss/plugin.yaml (6 lines, SHA-verified — no kind: field, matching the sibling mem0 manifest)

Net effect on Phase 3 scope

Future work (out of scope for v0.6.0)

A dedicated future phase handles proper memory-provider relocation, requiring either:

  1. An upstream PR to NousResearch/hermes-agent adding register_memory_provider to the standard PluginContext, OR
  2. A Fox-side fake-context construction in the overlay that mirrors plugins/memory/__init__.py's discovery path

Tracked separately; not blocking v0.6.0 ship.

Cross-repo cohesion

Per feedback_cross_repo_cohesion.md: this PR merges first; monorepo PR NousResearch#221 then re-bumps the submodule pin to this PR's merge SHA + applies its own companion changes.

Authorship

Authored by `roadhero` (Dennis Vorobyov) per Fox migration policy.

…ack)

Reverts the `git rm -r plugins/memory/mem0_oss/` step from fork PR #1
(Phase 3a). Restored content is byte-identical (SHA-verified) to the
pre-deletion state at commit 44a6808.

## Why

The Phase 3 plan assumed memory providers could be relocated to the
fox-overlay sibling package and loaded via the `hermes_agent.plugins`
entry-point group. During Phase 3b monorepo PR review, Engineer
discovered that upstream's memory-provider discovery is **separate**
from the general plugin manager:

  - General plugins: `hermes_cli/plugins.py` PluginManager.discover_and_load
    via entry-points + bundled scan, using PluginContext.
  - Memory providers: `plugins/memory/__init__.py` directory-scan only,
    using a memory-provider-specific FakePluginContext with the
    `register_memory_provider` method (which standard PluginContext lacks).

Relocating mem0_oss to an entry-point plugin made it unreachable by
upstream's memory-provider discovery, AND incompatible with the standard
PluginContext that the entry-point group provides. The bundled-plugin
shape (here in `plugins/memory/<name>/`) is the only working integration
path until upstream adds an entry-point-discoverable memory provider
mechanism — or Fox builds one.

## Net effect on Phase 3 scope

  - Monorepo PR (NousResearch#221) removes the relocated mem0_oss/ from the overlay
    + reverts pyproject.toml entry-point + reverts agent_plugins/__init__.py
    explicit register call (companion change in the same monorepo branch).
  - mem0_oss remains a bundled fork plugin, working as it did in v0.5.4.
  - The 3 Fox monkey-patches (Bedrock target_model, auxiliary.default
    fallback, cron failure diagnostics) ship as planned via fox-overlay
    entry-point + bootstrap shim — those don't need a memory-provider
    context.
  - Net fork patch surface for Phase 3: still 1 file / ~23 lines
    (gateway/run.py bootstrap shim from PR #2). plus this restored
    mem0_oss directory (which is the pre-fork-PR-#1 baseline, not a Fox
    addition on top of upstream).

## Future work

A dedicated future phase handles proper memory-provider relocation,
likely requiring either:

  (a) An upstream PR to NousResearch/hermes-agent adding
      `register_memory_provider` to the standard PluginContext, OR
  (b) A Fox-side fake-context construction in the overlay that mirrors
      `plugins/memory/__init__.py`'s discovery path.

Refs fox-in-the-box-ai/fox-in-the-box#171 + Reviewer findings on PR NousResearch#221.
@roadhero
roadhero merged commit 0a278fc into main May 17, 2026
5 of 6 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant