Skip to content

[Nightly][ws-ckpt] bug: ws-ckpt RPM spec missing Provides: anolisa-component(ws-ckpt), causing install INVALID_ARGUMENT #2588

Description

@zhangtaibo

Component

ws-ckpt

Bug Description

anolisa install ws-ckpt --backend rpm --package ws-ckpt 返回 INVALID_ARGUMENT: component 'ws-ckpt' is not an ANOLISA RPM component。根因是 ws-ckpt.spec.in 缺少 Provides: anolisa-component(ws-ckpt) 声明,导致 anolisa 组件发现机制(通过 RPM Provides 能力解析)无法识别 ws-ckpt 为合法 ANOLISA 组件。同时 components-v2.toml 镜像返回 404,components.toml (v1) 虽可用但未包含 ws-ckpt 的 package_map 条目,双重 fallback 均失败。

该问题由 AgenticOS Nightly 自动化测试在 2026-08-16 nightly(nightly-20260816-020035,anolisa main ba20d94)如实上报为 TEST_FAILED 后定位。连续 3 天(08-14, 08-15, 08-16)稳定复现。

Steps to Reproduce

# 1. 确认 ws-ckpt RPM 已安装
rpm -q ws-ckpt
# 输出: ws-ckpt-0.4.2-1.alnx4.x86_64

# 2. 检查 RPM Provides 中是否有 anolisa-component(ws-ckpt)
rpm -q --provides ws-ckpt
# 实际输出: ws-ckpt = 0.4.2-1.alnx4, ws-ckpt(x86-64) = 0.4.2-1.alnx4
# 期望输出应包含: anolisa-component(ws-ckpt)

# 3. 尝试通过 anolisa 安装 ws-ckpt
anolisa install ws-ckpt --backend rpm --package ws-ckpt --json
# 实际: {"ok":false,"error":{"code":"INVALID_ARGUMENT","reason":"component 'ws-ckpt' is not an ANOLISA RPM component; ... publish Provides: anolisa-component(ws-ckpt)"}}
# exit code: 2

# 4. 验证 components-v2.toml 镜像状态
curl -sI http://mirrors.cloud.aliyuncs.com/anolisa/generic/anolisa/v1/components-v2.toml
# HTTP/1.1 404 Not Found(无 v2 索引 fallback)

Actual Behavior

$ anolisa install ws-ckpt --backend rpm --package ws-ckpt --json
{
  "ok": false,
  "schema_version": 1,
  "command": "install ws-ckpt",
  "error": {
    "code": "INVALID_ARGUMENT",
    "reason": "component 'ws-ckpt' is not an ANOLISA RPM component; use the ANOLISA component name and configure the repo-side component index or publish Provides: anolisa-component(ws-ckpt)"
  }
}
exit code: 2

Expected Behavior

anolisa install ws-ckpt --backend rpm --package ws-ckpt 应成功执行 dnf install,写入 anolisa 状态,anolisa status 应列出 ws-ckpt 为 installed 组件。RPM 的 Provides 字段应包含 anolisa-component(ws-ckpt),使 anolisa 组件发现机制能通过 rpm_components_from_capabilities() (resolution.rs:698-714) 正确解析。

Root Cause

src/ws-ckpt/ws-ckpt.spec.in 缺少 Provides: anolisa-component(ws-ckpt) 声明。

anolisa 组件发现链路(dispatch.rs:1092-1122rpm.rs:140-160resolution.rs:648-668)在 components-v2.toml 返回 404 时回退到 RPM Provides 查询。rpm_package_provides_component() (resolution.rs:648) 调用 query.what_provides_installed("anolisa-component(ws-ckpt)"),由于 ws-ckpt RPM 不提供此能力,返回空候选集,触发 dispatch.rs:1117INVALID_ARGUMENT 错误。

这是 regression:commit b58c5484 (chore(ckpt): release v0.4.2, 2026-07-23) 更新 spec 时未添加 Provides 声明。其他 7 个组件(agent-memory via fb48fcd, os-skills/tokenless via aa2f3b7, agentsight, copilot-shell, cosh-ng, skillfs)均已修复或原本就有 Provides。

Suggested Fix

--- a/src/ws-ckpt/ws-ckpt.spec.in
+++ b/src/ws-ckpt/ws-ckpt.spec.in
@@ -10,6 +10,7 @@
 Summary:        AI-oriented workspace snapshot tool based on btrfs
 
 License:        Apache-2.0
+Provides:       anolisa-component(ws-ckpt)
 URL:            https://github.com/alibaba/anolisa

PR #2568 (branch fix/ws-ckpt-tokenless-missing-provides) 已包含此修复 + tokenless 同类修复,CI Test ws-ckpt = SUCCESS。

Environment

  • ALinux 4 ECS(cn-hongkong)
  • anolisa main: ba20d94
  • ws-ckpt 0.4.2-1.alnx4
  • anolisa CLI 0.3.1

Relevant Log Output

FAILED tests/test_rpm_install_uninstall.py::test_real_install_and_status[ws-ckpt]
AssertionError: install failed: {
    "ok": false,
    "error": {
        "code": "INVALID_ARGUMENT",
        "reason": "component 'ws-ckpt' is not an ANOLISA RPM component; ... publish Provides: anolisa-component(ws-ckpt)"
    }
}

Additional Context

由 AgenticOS Nightly(nightly-20260816-020035)发现并定位。PR #2568 已包含修复,等待合入。umbrella issue #2575 (5 spec.in files) 已 CLOSED(agent-memory/tokenless/os-skills 已修复合入),ws-ckpt + sec-core 尚待 PR #2568 + #2563 合入。

Metadata

Metadata

Assignees

Labels

component:ckptsrc/ws-ckptpriority:p2Normal: planned product or engineering worktype:bugA confirmed defect or incorrect behavior

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions