docs: record send connector selection blocker
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
# Send Message Connector Selection
|
||||
|
||||
Date: 2026-07-10
|
||||
|
||||
## Goal
|
||||
|
||||
Select the first safe connector for `isphere_send_message`, or block send implementation with an exact evidence request.
|
||||
|
||||
This node does not implement message sending, does not click/type in the client, does not send a test message, and does not capture network traffic. It reviews committed repo evidence and the current local implementation only.
|
||||
|
||||
## Current prerequisites
|
||||
|
||||
Target resolution is now usable for connector work:
|
||||
|
||||
- `isphere_search_contacts` has deterministic exact-match-first ranking and case-insensitive de-duplication.
|
||||
- `isphere_search_groups` has deterministic exact-match-first ranking and case-insensitive de-duplication.
|
||||
- MCP send contract already defines preview/production modes, `content_sha256`, `idempotency_key`, target metadata, and write errors.
|
||||
|
||||
The missing part is the write connector.
|
||||
|
||||
## Connector candidates
|
||||
|
||||
| Priority | Candidate | Evidence reviewed | Can preview target/content? | Can execute exactly once? | Can confirm success? | Decision |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| 1 | Existing bridge/API/local service | Repository search and committed docs/code. | No callable bridge/API/local write service found. | No. | No. | Not selected. |
|
||||
| 2 | UIA helper action chain | `native/ISphereWinHelper/Program.cs`, `internal/uiaselector/catalog.go`, internal-sandbox runbook. | No validated conversation-open, draft, send-button, or result selectors. | No helper op for click/type/send/invoke. | No post-send confirmation evidence. | Not selected. |
|
||||
| 3 | Network/protocol connector | Current PacketReader/Smark/SaveToDB evidence and protocol docs. | Read/transport evidence exists, but no authorized sent-message capture or replay/wrapper contract. | No idempotent write operation proven. | No ack/result mapping proven. | Not selected. |
|
||||
| 4 | Preview-only mock/contract | `docs/mcp-core-tools-contract.md`. | Contract shape exists. | Production send unavailable. | Not applicable. | Not enough for R6 production path. |
|
||||
|
||||
## Evidence details
|
||||
|
||||
### Existing bridge/API/local service
|
||||
|
||||
No committed callable local service or API wrapper was found for sending messages. Current Go MCP code registers read/observation tools only.
|
||||
|
||||
### UIA helper action chain
|
||||
|
||||
Current helper operations are limited to:
|
||||
|
||||
```text
|
||||
version
|
||||
self_check
|
||||
scan_windows
|
||||
dump_uia
|
||||
```
|
||||
|
||||
Current selector catalog uses `AllowedUseReadOnlyLocate`. It identifies structural areas such as main window, panels, roster, and fuzzy search edit, but it does not validate:
|
||||
|
||||
- target search execution;
|
||||
- conversation open;
|
||||
- message editor focus;
|
||||
- draft insertion;
|
||||
- send button location/action;
|
||||
- pre-send preview confirmation;
|
||||
- post-send success/failure confirmation.
|
||||
|
||||
The internal-sandbox operator runbook also only authorizes read-only capture actions. It does not provide an approved write-action evidence package.
|
||||
|
||||
### Network/protocol connector
|
||||
|
||||
Current evidence includes decrypted receive-side/transport logs, but there is no scoped authorized capture of a sent test message and no stable write request/response contract.
|
||||
|
||||
Missing protocol evidence:
|
||||
|
||||
- endpoint or stanza used for text send;
|
||||
- auth/session model at a wrapper level without storing secrets;
|
||||
- target id format for direct and group sends;
|
||||
- request id/idempotency field or equivalent exactly-once guard;
|
||||
- success ack/failure state mapping;
|
||||
- rate limit/retry behavior.
|
||||
|
||||
## Decision
|
||||
|
||||
No send-message connector is selected for R6.
|
||||
|
||||
`isphere_send_message` remains blocked for production implementation.
|
||||
|
||||
R6 should not start until one of the evidence packages below is available.
|
||||
|
||||
## Exact evidence request
|
||||
|
||||
Any one of these can unblock R6:
|
||||
|
||||
### Option A: bridge/API/local service evidence
|
||||
|
||||
Provide a committed or operator-supplied wrapper spec that proves:
|
||||
|
||||
- endpoint/command name;
|
||||
- accepted target ids for contact and group;
|
||||
- preview/dry-run behavior;
|
||||
- production execution call;
|
||||
- idempotency key handling;
|
||||
- success/failure response shape;
|
||||
- sandbox-only verification command.
|
||||
|
||||
### Option B: UIA action-chain evidence package
|
||||
|
||||
Provide a new internal-sandbox package that explicitly allows and records a test send workflow:
|
||||
|
||||
- manually logged-in sandbox account;
|
||||
- test target only;
|
||||
- selector evidence for search/open conversation/message editor/send control;
|
||||
- pre-send preview state;
|
||||
- one intentional test send;
|
||||
- post-send confirmation state;
|
||||
- failure states such as target not found or disabled send button;
|
||||
- operator note that the send was approved and limited to the test target.
|
||||
|
||||
### Option C: network/protocol evidence package
|
||||
|
||||
Provide an authorized scoped capture for one test send:
|
||||
|
||||
- capture scope and timing;
|
||||
- host/port/protocol classification;
|
||||
- redacted request/response shape;
|
||||
- target id and message id fields, redacted where needed;
|
||||
- success ack/failure mapping;
|
||||
- session/auth handling at a high level without secrets.
|
||||
|
||||
## Next route
|
||||
|
||||
Because R5 did not select a connector:
|
||||
|
||||
- R6 production send implementation is blocked.
|
||||
- R7/R8 send-file work is also blocked behind the send-message connector and upload/file-transfer evidence.
|
||||
- The project should pause write-side implementation and request one of the evidence packages above.
|
||||
Reference in New Issue
Block a user