Implement EXT-9 idempotent knowledge publish and revoke with the upload index switch #106

Merged
weichen merged 2 commits from feature/ext-9-index-publish into main 2026-10-08 16:01:50 +00:00
Owner

EXT-9 实现(受理依据 Documents #49;U0 序 4 硬前置之二)

  • 公开面:extension.Options.DisableUploadIndexing(零值=现状);Host.KnowledgePublish(docs, embed)——按 ref 幂等替换(清旧行+旧向量→既有 KnowledgeWrite 路径);Host.KnowledgeDelete(sourcePrefix)——前缀强制 plugin:<自身ID>(manual/他人拒绝,fail-closed),删行+向量幂等。SurfaceVersion 2.2.0-experimental(surface.txt 同步)。
  • 上传开关:DisableUploadIndexing=true 时上传端点不再自动写检索索引(原件与摄取卡不变)——RDM 存疑资料「确认前不入正式检索」的基座前提。
  • 存储:DeleteKnowledgeBySource(经 ref 关联清向量,幂等)。

验证(红→绿)

红(surface 提交):publish 未实现;开关开仍索引(hits=1)。绿:TestKnowledgePublishIdempotentAndRevoke(双 publish 幂等、delete 即停且幂等、manual 拒删且存活)与 TestUploadPreIndexSwitch(开关开零命中+原件可取回、关恢复现状)通过;go test ./... 32/32 包 ok。Dev 组合验证与 CI 随 gitlink PR。

## EXT-9 实现(受理依据 Documents #49;U0 序 4 硬前置之二) - **公开面**:`extension.Options.DisableUploadIndexing`(零值=现状);`Host.KnowledgePublish(docs, embed)`——按 ref 幂等替换(清旧行+旧向量→既有 KnowledgeWrite 路径);`Host.KnowledgeDelete(sourcePrefix)`——前缀强制 `plugin:<自身ID>`(manual/他人拒绝,fail-closed),删行+向量幂等。SurfaceVersion **2.2.0-experimental**(surface.txt 同步)。 - **上传开关**:`DisableUploadIndexing=true` 时上传端点不再自动写检索索引(原件与摄取卡不变)——RDM 存疑资料「确认前不入正式检索」的基座前提。 - **存储**:`DeleteKnowledgeBySource`(经 ref 关联清向量,幂等)。 ## 验证(红→绿) 红(surface 提交):publish 未实现;开关开仍索引(hits=1)。绿:`TestKnowledgePublishIdempotentAndRevoke`(双 publish 幂等、delete 即停且幂等、manual 拒删且存活)与 `TestUploadPreIndexSwitch`(开关开零命中+原件可取回、关恢复现状)通过;`go test ./...` 32/32 包 ok。Dev 组合验证与 CI 随 gitlink PR。
weichen added 2 commits 2026-10-08 15:55:30 +00:00
Why: EXT-9 is the other step-4 hard prerequisite; the surface (Options.DisableUploadIndexing passthrough, Host.KnowledgePublish idempotent replace, Host.KnowledgeDelete prefix-enforced revoke, SurfaceVersion 2.2.0-experimental) must land with the acceptance reds pinned before implementation.
Evidence: app red = publish not implemented; server red = switch-on still indexes (hits=1); rows recorded on the task card.
Impact: pkg/extension additive surface (surface.txt updated); internal Options passthrough; Server.DisableUploadIndexing field; host method stubs. Behavior unchanged.
Refs: EXT-9 proposal; task card.
Why: The red acceptance tests pin the EXT-9 semantics - held material must not enter retrieval until published, revoke must stop retrieval immediately and idempotently, manual sources must stay out of plugin reach.
Evidence: TestKnowledgePublishIdempotentAndRevoke and TestUploadPreIndexSwitch green; go test ./... 32/32 packages ok; rows follow on the task card.
Impact: hostcaps KnowledgePublish (per-ref row+vector cleanup then existing write path) and KnowledgeDelete (plugin:<id> prefix enforced); store DeleteKnowledgeBySource with vector cleanup; upload indexing gated by DisableUploadIndexing (default false = unchanged).
Refs: EXT-9 proposal; red run at surface commit.
weichen merged commit c5575aab27 into main 2026-10-08 16:01:50 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: weichen/Agent-System-Backend#106