Skip to content

P0 Memory Tests red on main since #2933 — encrypted temp-write metadata read-back regression (8 tests, same keyword-group assertion) #2970

Description

@lg320531124

Summary

The scheduled 05. OpenClaw2OpenViking Memory Tests workflow has been red on main for ~10 hours across two consecutive commits. 8 P0 memory tests fail with the same assertion — 未在任何关键词组中找到匹配 ("no match found in any keyword group"). The first failure appeared 14 minutes after #2933 landed, and a follow-up docs-only commit (#2960) still fails, which rules out a flake and points at a deterministic regression introduced by #2933.

Evidence (timeline)

Time (UTC) Commit PR Event Result
2026-07-02 02:57 c6991440 #2933 feat(encrypt): reduce encrypted temp-write metadata overhead… merged
2026-07-02 03:11 c6991440 schedule run 28562628180 8 failed, 4 passed
2026-07-02 09:50 0a40dde4 #2960 docs: add OpenViking Studio live demo link to READMEs merged — (docs-only, 0 code)
2026-07-02 10:56 0a40dde4 schedule run 28584782979 failure (exit 1)

#2960 touches only READMEs — zero code change — yet the schedule still fails on it. That is the tell it is a deterministic regression carried by the code path #2933 changed, not a transient.

Failing tests (run 28562628180, all same assertion)

FAILED tests/p0/test_context_engine.py::TestAssembleArchiveReplay::test_assemble_replays_archive_summary - AssertionError: False is not true : 未在任何关键词组中找到匹配
FAILED tests/p0/test_context_engine.py::TestMemoryRecallExplicit::test_memory_recall_explicit_search - AssertionError: False is not true : 未在任何关键词组中找到匹配
FAILED tests/p0/test_context_engine.py::TestArchiveExpand::test_archive_expand_restores_details - AssertionError: False is not true : 未在任何关键词组中找到匹配
FAILED tests/p0/test_context_engine.py::TestSessionIsolation::test_session_isolation_no_cross_contamination - AssertionError: False is not true : 未在任何关键词组中找到匹配
FAILED tests/p0/test_context_engine.py::TestCompactArchiveGeneration::test_compact_produces_archive_on_threshold - AssertionError: False is not true : 未在任何关键词组中找到匹配
FAILED tests/p0/test_memory_crud.py::TestMemoryUpdate::test_memory_update_verify - AssertionError: False is not true : 未在任何关键词组中找到匹配
FAILED tests/p0/test_memory_crud.py::TestMemoryDelete::test_memory_delete_verify - AssertionError: False is not true : 未在任何关键词组中找到匹配
FAILED tests/p0/test_memory_crud.py::TestMemoryUpdateOverwrite::test_memory_update_overwrite_group_a - AssertionError: False is not true : 未在任何关键词组中找到匹配
=================== 8 failed, 4 passed in 3381.00s (0:56:21) ===================

8 tests across test_context_engine.py (recall / archive / session isolation / compact) and test_memory_crud.py (update / delete / overwrite) all fail at the same keyword-group match assertion. The common surface is the context engine's memory recall/search path, which depends on stored memory metadata being readable.

Root-cause hypothesis (asking before assuming)

#2933 changes the encrypted temp-write path: "caching temp-root readiness and turning the temp-file path into a TTL fast path + NotFound fallback + AlreadyExists cleanup."

If the TTL fast path or the NotFound fallback returns a stale/empty metadata read for a memory that should exist, the context engine's keyword-group matcher sees no candidate memories and asserts 未在任何关键词组中找到匹配. That would explain why the failures cluster on recall/archive/crud tests — they all exercise read-back of just-written memories through the encrypted temp-write path.

I have not read the #2933 diff end-to-end, so this is a hypothesis grounded in the symptom + commit message + 14-minute time-to-failure, not a confirmed root cause. Flagging for the team to confirm.

Reproduce

The scheduled run itself reproduces — no extra repro needed:

What I checked before filing

Happy to help bisect if useful — e.g. reverting #2933's temp-root readiness cache on a branch and re-running the P0 suite would confirm or refute the hypothesis.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions