feat: harden send file idempotency audit

This commit is contained in:
zhaoyilun
2026-07-10 23:02:25 +08:00
parent 1fd10b5df7
commit fab0f0f5c0
6 changed files with 566 additions and 22 deletions

View File

@@ -240,8 +240,8 @@ Continuous execution plan R6f-R14 is approved and execution has started:
- Plan file: `docs/superpowers/plans/2026-07-10-r6f-r14-continuous-execution-plan.md`.
- Scope: 15 ordered rounds covering send-message connector/gate hardening, send-file preview/idempotency/package, receive-file download preview, receive-message reconciliation, end-to-end business smoke, and release-candidate report.
- Execution rule after approval: one round at a time, status-card update, verification, commit, push, then continue automatically until an evidence-only blocker requires user action.
- Last completed round: R7 send-file preview tool.
- Next active round: R8 send-file idempotency and audit hardening.
- Last completed round: R8 send-file idempotency and audit hardening.
- Next active round: R9 send-file upload evidence package.
R6g send audit and idempotency replay diagnostics is complete:
@@ -305,3 +305,13 @@ R7 send-file preview tool is complete:
- `execution_mode="production"` returns structured blocked metadata; no upload, click, type, hook, network capture, or client mutation is introduced.
- Verification passed: focused send-file tests, 10-tool MCP registration test, `go test ./...`, `go build ./cmd/isphere-mcp`, `scripts\verify-go-mcp.ps1`, and `go run ./cmd/isphere-capability-smoke`.
- Next node: R8 send-file idempotency and audit hardening.
R8 send-file idempotency and audit hardening is complete:
- Added `ISPHERE_SEND_FILE_AUDIT_PATH` and `ISPHERE_SEND_FILE_IDEMPOTENCY_PATH` support.
- Duplicate same target/file/idempotency key returns `duplicate_detected=true` and remains no-send.
- Reusing the same idempotency key for a different target or file hash returns structured blocked metadata with `conflict_detected=true`.
- Send-file audit/idempotency JSONL stores hashes, target refs, size, result, and side-effect flags; it does not store raw file content, raw local file path, or raw idempotency key.
- Production file upload remains blocked with `production_send_enabled=false` and `real_send_attempted=false`.
- Verification passed: focused send-file tests, `go test ./...`, `go build ./cmd/isphere-mcp`, `scripts\verify-go-mcp.ps1`, and `go run ./cmd/isphere-capability-smoke`.
- Next node: R9 send-file upload evidence package.