- Add CLI integration tests (10 test files under tests/cli/)
- Extend api_test.yml with CLI install + test steps
- Run filesystem + scenarios/resources_retrieval serially to avoid 409 conflicts
- Other tests parallel with -n 4
- Add release prereleased trigger to api_test.yml and api_test_effect.yml
- Deduplicate oc2ov_test P0 cases (20→12, ~30-55min saved):
- Delete test_memory_write.py (covered by V2 suite)
- Remove events/tools from V2 suite (structurally identical to entities/skills)
- Remove test_memory_read_verify (covered by V2 suite)
- Remove test_cross_session_recall (overlaps with recall_explicit_search)
- Add ensure_resources_dir fixture to prevent NOT_FOUND on fresh environments
- Add retry logic for 429/500/403 rate-limit in api_client.py
- Add retry for commit when task_id is None in test_memory_v2_full_suite.py
- Add exponential backoff retry for GitHub platform test 5xx errors
* fix: handle OV session reuse in memory v2 tests
When OV reuses existing sessions instead of creating new ones,
find_new_session_id returns None. Now tries commit on all existing
sessions to find one with pending messages. Also handles 404 and
task_id=None gracefully, falling back to checking memory files
directly.
* fix: add retry with wait for OV auto-capture session creation
OV auto-capture may take a few seconds to create a new session after
OpenClaw sends a message. Increased initial wait from 5s to 8s, and
added up to 3 retries with 5s intervals when session not found.
Falls back to committing all existing sessions if still not found.
* fix: handle None values in commit response for memory v2 tests
commit_resp.get('data') can return None when OV API returns unexpected
format, causing 'NoneType object has no attribute get' error.
Use 'or {}' to ensure dict type.
* perf: skip retry on subprocess timeout to reduce test duration
Subprocess timeout (180s) means auto-recall context is too large,
retrying is pointless and wastes 180s*3=540s. Now:
- subprocess timeout: return immediately, no retry
- LLM idle timeout/empty/tool-result: still retry up to 3 times
- Default timeout back to 180s (was 300s), removed explicit timeout=300
- _is_llm_unstable_response still skips assertions on timeout
- test_build_media_resources_slow: assert 500 for SVG parse failure
- test_build_platform_wikipedia: assert 500 for Wikipedia URL fetch failure
- test_build_error_handling_slow: assert 500 for corrupted ZIP (align with non-slow version)
- test_memory_v2_full_suite: add find_session_by_id fallback for CI deterministic session IDs
* fix(oc2ov-test): 优化流水线配置和用例稳定性
- oc2ov_test.yml: 定时任务改为一天两次(10:00/18:00北京时间),超时改为100分钟
- api_test_effect.yml: 已有限制只有主仓库运行定时任务
- TestMemoryRead: 查询措辞优化+关键词容错,兼容旧记忆文件残留
* ci: restrict scheduled/release triggers to main repo only
Change workflow job conditions from exclusion-based to inclusion-based:
- oc2ov_test.yml: only workflow_dispatch or main repo can run
- api_test_effect.yml: only workflow_dispatch or main repo can run
- api_test.yml: only workflow_dispatch, pull_request, or main repo can run
This prevents fork repos from triggering resource-consuming scheduled
and release workflows while still allowing manual dispatch and PRs.
* fix(ci): fix ragfs-python native extension build in CI pipelines
* fix(ci): skip sessions/ tests when no VLM/Embedding secrets available
Sessions tests (add_message, commit, used) depend on storage backend
that requires proper initialization with valid API keys. When running
without secrets (PR from fork), these tests fail with 400 because the
storage layer cannot fully initialize. Skip them in no-secrets mode;
they will still run on main branch pushes where secrets are available.
- Server startup failure now exits with error instead of just warning
- Use python -u for unbuffered output to capture crash traceback
- Print clear message about data compatibility issues
- Do NOT auto-clean data - let CI surface compatibility problems
- Use GITHUB_WORKSPACE as PROJECT_DIR in CI
- Skip backup (cp -r) in CI to avoid disk/time issues
- Skip git fetch/reset in CI since checkout already done
- Add pre-start cleanup in upgrade_openviking.sh: remove stale .lock
and .jsonl.lock files, kill all residual openclaw processes before restart
- Add session lock awareness in openclaw_cli_client.py: wait for lock
release before sending requests and after subprocess returns
- Optimize wait_for_sync in base_cli_test.py: enforce minimum 5s wait,
check lock release before proceeding, raise poll interval to 3s minimum
- Add Chinese descriptions for Memory V2 test cases in conftest.py
- Fix test_session_commit assertion: remove pre_archive_abstracts check
since get_session_context no longer returns this field
- Remove tests/oc2ov_test/config/settings.py containing exposed auth token
- Add settings.py to .gitignore to prevent future leaks
- Users should copy settings.example.py to settings.py and fill in their own tokens