Skip to content

feat(recall): add bounded atomic memory manifest - #2192

Merged
hidb4ai merged 48 commits into
oceanbase:masterfrom
Tech-Circle-48:s3
Oct 30, 2026
Merged

hidb4ai merged 48 commits into
oceanbase:masterfrom
Tech-Circle-48:s3

Conversation

@Tech-Circle-48

@Tech-Circle-48 Tech-Circle-48 commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Which issue or RFC does this PR close?

Closes #1864

Rationale for this change

Agents currently need to retrieve memory content before deciding which entries are useful. A bounded, metadata-only manifest provides a cheaper first step, allowing agents to select entries before fetching their full content.

What changes are included in this PR?

  • Add a paginated Atomic Memory recall manifest through HTTP, MCP, and the Python client.
  • Store descriptions with memory revisions and their current search projections.
  • Generate descriptions alongside text during extraction and reconciliation.
  • Preserve model-free explicit writes by storing a bounded, single-line text preview when no description is supplied.
  • Update integration bindings, migration compatibility, documentation, and regression tests.

Are there any user-facing changes?

  • Add POST /v1/recall/manifest and get_recall_manifest.
  • This initial implementation covers active Atomic Memory only.
  • Callers may supply an optional description. Omitting it does not require an LLM.
  • Manifest reads return metadata without reading memory bodies or invoking models.
  • Historical memories without descriptions remain readable; their manifest descriptions may be null.
  • Manifest pagination defaults to 50 entries, with a maximum of 100.

How was this change tested?

  • make check
  • Python and JavaScript API generation consistency checks.
  • HTTP/MCP contract tests.
  • Non-Desktop Python regression suite: 6,175 passed, with 10 working-directory-dependent tests passing on rerun from the repository root; 593 skipped.
  • Dify and OpenDAL integration checks.
  • DSH unit and end-to-end tests, plus build reproducibility verification.
  • Manual Postman verification of memory writes and manifest responses.

AI usage statement

@hidb4ai hidb4ai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The tagged manifest path rejects valid input, and the Desktop and skill-validation contracts need to be synchronized. Details inline.

Comment thread desktop/ui/src/generated/api.d.ts Resolved
Comment thread src/powercontext/server/mcp.py Resolved
@Tech-Circle-48
Tech-Circle-48 requested a review from frf12 as a code owner October 22, 2026 10:10

@hidb4ai hidb4ai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Rechecked at 080b2d2. The tag conversion and skill catalog fixes pass. A manifest pagination issue remains below; the Desktop contract mismatch is still reproducible and is followed up in its original thread.

@Tech-Circle-48
Tech-Circle-48 force-pushed the s3 branch 2 times, most recently from a36e595 to 530b99c Compare October 23, 2026 02:20

@hidb4ai hidb4ai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One blocking upgrade regression remains at 984101b7; details inline.

@hidb4ai hidb4ai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Rechecked b36f7615: the previous nonempty SQLite upgrade failure is fixed. The original reproduction now reaches v1_4_1_004 and verifies successfully.

Please address the remaining issues before merging:

  • The existing OceanBase exact-kind P2 remains unchanged: manifest() still uses plain kind == kind at runtime/atomic_memory.py:443, unlike the exact comparisons in list/search.
  • Current master aedf7beb already registers v1_4_1_004 for durable owner-recovery storage, while this branch uses the same revision/resource names for descriptions. git merge-tree confirms conflicts in the migration, schema resources, manifests and vector layout; GitHub also reports CONFLICTING. Please integrate both storage changes into a consistent registered chain and rerun upgrades and checks on the resulting merge.

CI attribution: the reported Main jobs ran merge commit 038a8f9c (b36f7615 merged into 927bb6ee), rather than the PR head alone. I reproduced the policy failure and the owner-recovery/cross-database E2E failures on that CI base without this PR; the PR head's own policy check passes. Please refresh the compatibility review for the final integrated tree and provide passing validation with the updated commit.

@hireview001 hireview001 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Comment thread openapi/powercontext.yaml Resolved
jasondeng1997 added a commit to jasondeng1997/powercontext that referenced this pull request Oct 29, 2026
PR oceanbase#2192 registers `v1_4_1_005` for the atomic memory description revision and
opened six days earlier, so it keeps that number. Two open pull requests
claiming one revision name would ship two different DDL sets and two different
offline fingerprints under a single name, and the winner would depend on merge
order. This PR moves to the next free number instead.

The chain is otherwise unchanged: `down_revision` stays `v1_4_1_004`, the SQLite
fingerprint is unchanged because inventory never contains the revision name, and
`release/upgrade-support.json` is re-digested with
`scripts/upgrade_release_gate.py::managed_digest`. When oceanbase#2192 lands first this
revision will rebase onto it and point `down_revision` at its `v1_4_1_005`.

Verified with `tests/test_migration_revision_names.py`,
`test_full_server_migrations.py`, `test_portable_storage_migration.py`,
`test_owner_recovery_migration.py`, `test_release140_server_migrations.py` and
`test_server_migration_cli.py` (46 passed), plus a full `s1300`-to-head replay
that reproduces every recorded fingerprint.

@hireview001 hireview001 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

  • CI failed: cindy-package (failure).
  • CI failed: Main (failure). Failed steps: cindy-package / Build and test the standalone Cindy archive.

@hidb4ai hidb4ai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@hidb4ai
hidb4ai merged commit 90355b8 into oceanbase:master Oct 30, 2026
34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.5.0 v1.5.0 release tracking

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(recall): add a manifest read path for two-stage bounded recall

4 participants