fix(acp): owner-filter transcript history and refresh retained MCP #644

Merged
toasterson merged 2 commits from feat/mausbot-acp-owner into main 2026-10-17 22:59:27 +00:00
Owner

Native ACP transcript exports currently expose all captured turns in a granted workspace, including other principals, while session/load silently retains stale client MCP servers.

Capture server-authored owner/workspace/session provenance and filter scoped transcript exports against it. Add an exact session_id filter for the custodian device ledger. Legacy unowned rows remain operator-only; watermarks advance over inspected rows. Retained session/load replaces HTTP MCP config and discovery cache atomically, refuses active prompts, and preserves ownership/conversation state. Unsupported MCP transports reject explicitly.

Tests cover foreign owner/workspace and metadata spoofing at the TCP router, legacy rows, exact session filtering, capture isolation/unwind, and MCP replacement versus active turns. The implementation head 1088a0e7dd passed all 14 CI contexts. The new head 2f7671909c changes only the documented capture default and requires its own CI results. git diff --check passes. Git's merge simulation against main9d594c09 succeeds; no rebase or force push is needed.

Independent fresh-context reviewer review_644 found no code blockers, including compatibility with main's #650 cancellation and #665 integration. One P3 documentation finding (capture is default-on with opt-out) is fixed in 2f767190. Review was static; it did not execute tests or live acceptance. Full authenticated prompt-to-WAL export and live MCP rediscovery remain acceptance coverage limits, not claimed by these seam tests.

Dependency for talos MausBot PR #200. No daemon deployment, runtime restart, permission-mode change or credentials. Requires coordinator review/merge and deployment from merged main before using these capabilities. Existing historical captures without ownership are not guessed/backfilled; native ACL does not replace custodian per-device authorization. See docs/mausbot/acp-retained-history.md.

Native ACP transcript exports currently expose all captured turns in a granted workspace, including other principals, while session/load silently retains stale client MCP servers. Capture server-authored owner/workspace/session provenance and filter scoped transcript exports against it. Add an exact session_id filter for the custodian device ledger. Legacy unowned rows remain operator-only; watermarks advance over inspected rows. Retained session/load replaces HTTP MCP config and discovery cache atomically, refuses active prompts, and preserves ownership/conversation state. Unsupported MCP transports reject explicitly. Tests cover foreign owner/workspace and metadata spoofing at the TCP router, legacy rows, exact session filtering, capture isolation/unwind, and MCP replacement versus active turns. The implementation head 1088a0e7dd98bf56dc3a830ab58522d4877e9cb7 passed all 14 CI contexts. The new head 2f7671909c3aae70bdf871f5665c569d9be6d5af changes only the documented capture default and requires its own CI results. git diff --check passes. Git's merge simulation against main9d594c09 succeeds; no rebase or force push is needed. Independent fresh-context reviewer review_644 found no code blockers, including compatibility with main's #650 cancellation and #665 integration. One P3 documentation finding (capture is default-on with opt-out) is fixed in 2f767190. Review was static; it did not execute tests or live acceptance. Full authenticated prompt-to-WAL export and live MCP rediscovery remain acceptance coverage limits, not claimed by these seam tests. Dependency for talos MausBot PR #200. No daemon deployment, runtime restart, permission-mode change or credentials. Requires coordinator review/merge and deployment from merged main before using these capabilities. Existing historical captures without ownership are not guessed/backfilled; native ACL does not replace custodian per-device authorization. See docs/mausbot/acp-retained-history.md.
fix(acp): scope captured history and refresh retained MCP sessions
All checks were successful
CI / check-seshat (pull_request) Successful in 3m54s
CI / publish-chart (pull_request) Successful in 51s
CI / docker-seshd (pull_request) Successful in 7m54s
CI / docker-akh-transcripts (pull_request) Successful in 11m31s
CI / docker-sokard (pull_request) Successful in 13m48s
CI / check-akh-medu (pull_request) Successful in 15m11s
CI / test-session-platform (pull_request) Successful in 19m13s
CI / test-sokar (pull_request) Successful in 20m10s
CI / test-akh-medu (pull_request) Successful in 20m56s
CI / platform-images-home (pull_request) Successful in 1m13s
CI / platform-images-core (pull_request) Successful in 1m15s
CI / platform-images-daemons (pull_request) Successful in 1m17s
CI / platform-images-fleet (pull_request) Successful in 59s
CI / platform-images-collect (pull_request) Successful in 1m4s
1088a0e7dd
Author
Owner

Exact head 1088a0e7 validation completed: cargo test --lib --no-default-features --features acp acp::tests --no-fail-fast: 127 passed, 0 failed. cargo test --lib --no-default-features --features acp transcript_capture_gate_and_emit_turn_wal: 1 passed. cargo fmt and git diff --check passed. Tests use local fixtures and loopback ACP servers; no live daemon changes or credential access.

Exact head 1088a0e7 validation completed: cargo test --lib --no-default-features --features acp acp::tests --no-fail-fast: 127 passed, 0 failed. cargo test --lib --no-default-features --features acp transcript_capture_gate_and_emit_turn_wal: 1 passed. cargo fmt and git diff --check passed. Tests use local fixtures and loopback ACP servers; no live daemon changes or credential access.
docs(acp): correct transcript capture default
All checks were successful
CI / test-sokar (pull_request) Successful in 7m8s
CI / publish-chart (pull_request) Successful in 51s
CI / docker-seshd (pull_request) Successful in 7m45s
CI / test-session-platform (pull_request) Successful in 15m14s
CI / check-akh-medu (pull_request) Successful in 20m10s
CI / docker-sokard (pull_request) Successful in 13m15s
CI / check-seshat (pull_request) Successful in 23m14s
CI / test-akh-medu (pull_request) Successful in 23m22s
CI / docker-akh-transcripts (pull_request) Successful in 19m44s
CI / platform-images-home (pull_request) Successful in 58s
CI / platform-images-core (pull_request) Successful in 59s
CI / platform-images-daemons (pull_request) Successful in 47s
CI / platform-images-fleet (pull_request) Successful in 7m5s
CI / platform-images-collect (pull_request) Successful in 2m10s
2f7671909c
Sign in to join this conversation.
No reviewers
No labels
follow-up
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
toasterson/akh-medu!644
No description provided.