From 349fbe4a442d88d4fd3d7515e0aeca962976c105 Mon Sep 17 00:00:00 2001 From: zhaoyilun Date: Fri, 10 Jul 2026 09:55:56 +0800 Subject: [PATCH] docs: record send connector selection blocker --- docs/current-status-card.md | 8 +- ...-07-10-send-message-connector-selection.md | 126 ++++++++++++++++++ .../capability-source-matrix.md | 4 +- ...7-10-core-business-capabilities-roadmap.md | 13 +- 4 files changed, 146 insertions(+), 5 deletions(-) create mode 100644 docs/source-discovery/2026-07-10-send-message-connector-selection.md diff --git a/docs/current-status-card.md b/docs/current-status-card.md index 39deced..252e3ce 100644 --- a/docs/current-status-card.md +++ b/docs/current-status-card.md @@ -56,7 +56,7 @@ N13/N14/N15 are pre-business validation results. They can help identify UI eleme ## Current loop -Current loop: `Business Roadmap / R5 - Send-message connector discovery`. +Current loop: `Blocked / Waiting for send-message connector evidence`. Plan file: `docs/superpowers/plans/2026-07-10-core-business-capabilities-roadmap.md`. @@ -146,3 +146,9 @@ R3b file cache mapping diagnostic is complete: - Real sanitized diagnostic found 166 MsgLib received-file records and 11 cache/archive candidates, but 0 filename/source-id/cache matches. - Decision: R4 receive-file download implementation is blocked until better cache evidence or a UI/client download connector is available. - Next node: R5 send-message connector discovery. + +R5 send-message connector discovery is complete: + +- Created `docs/source-discovery/2026-07-10-send-message-connector-selection.md`. +- No connector was selected: no bridge/API/local service, no UIA write action chain, and no network/protocol send evidence is currently validated. +- R6 send-message implementation and R7/R8 send-file work are blocked until a connector evidence package is supplied. diff --git a/docs/source-discovery/2026-07-10-send-message-connector-selection.md b/docs/source-discovery/2026-07-10-send-message-connector-selection.md new file mode 100644 index 0000000..b8dd643 --- /dev/null +++ b/docs/source-discovery/2026-07-10-send-message-connector-selection.md @@ -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. diff --git a/docs/source-discovery/capability-source-matrix.md b/docs/source-discovery/capability-source-matrix.md index 0778354..9f3adfb 100644 --- a/docs/source-discovery/capability-source-matrix.md +++ b/docs/source-discovery/capability-source-matrix.md @@ -21,8 +21,8 @@ Schema notes: `docs/source-discovery/2026-07-09-n12-pre-zyl-schema-notes.md` | `isphere_search_contacts` | bare sender/receiver JIDs extracted from normalized log-backed messages loaded from configured PacketReader file or directory source | validated copied `MsgLib.db` tables: `TD_Roster`, `TD_CustomEffigy`, `tblRecent`, `tblChatLevel`, `tblPersonMsg`; decrypted roster/contact stanzas from `Smark.SendReceive`; UIA helper source if display names are still missing | `docs/source-discovery/2026-07-10-msglib-readonly-schema-extraction.md`; `internal/isphere/contacts_test.go`; `internal/tools/isphere_contacts_test.go` | C34 documents optional MsgLib contact display enrichment; R2 adds deterministic exact-match-first ranking, case-insensitive de-duplication across log/MsgLib candidates, and preserves `source`/`raw_ref` | core contact search complete; optional richer fields later | | `isphere_search_groups` | decrypted `PacketReader.ProcessPacket` `type="groupchat"` stanzas and conference/MUC JIDs loaded from configured PacketReader file or directory source | validated copied `MsgLib.db` tables: `tblMsgGroupPersonMsg`, `TD_WorkGroupAuth`, `tblRecent`; UIA helper source if group display names are still missing | `docs/source-discovery/2026-07-10-msglib-readonly-schema-extraction.md`; `internal/isphere/groups_test.go`; `internal/tools/isphere_groups_test.go`; C9 ignored-log scan: PacketReader 86 groupchat/86 conference hits; Smark 24 groupchat/658 conference/631 muc hits | C34 documents optional MsgLib group display enrichment; R2 adds deterministic exact-match-first ranking, case-insensitive de-duplication across log/MsgLib candidates, and preserves `source`/`raw_ref` | core group search complete; optional member/owner hierarchy later | | `isphere_receive_files` | decrypted `PacketReader.ProcessPacket` file-transfer message stanzas via `internal/isphere.ListFilesFromMessages` and `isphere_receive_files` list mode; configured PacketReader file or directory source; `zyl\importal\` cache entries remain unlinked | MsgLib `TD_ReceiveFileRecord` safe metadata through explicit copied-DB path; decrypted `Smark.SendReceive` and `SaveToDB` traces for file-reference reconciliation; future UIA/client connector for download | `docs/source-discovery/2026-07-09-n12-pre-zyl-schema-notes.md#c12-file-transfer-evidence-precheck`; `docs/source-discovery/2026-07-10-file-download-mapping-precheck.md`; `docs/source-discovery/2026-07-10-file-cache-mapping-diagnostic.md` | C22 verifies safe file-list contract args; R3 confirms list metadata is available; R3b diagnostic finds 0 current cache/archive matches, so R4 remains blocked | blocked pending better cache evidence or UI/client download connector | -| `isphere_send_message` | none validated yet | existing bridge/API/local service preferred; UIA write connector only after internal-sandbox action evidence; network/protocol connector only after protocol discovery | `docs/source-discovery/2026-07-10-send-message-source-precheck.md` | C15 blocked: contract exists, but no committed bridge/API/local service, helper write op, UIA action chain, or protocol connector is validated | R5 send-message connector discovery | -| `isphere_send_file` | none validated yet | depends on send-message connector plus outbound file/upload evidence | `docs/source-discovery/2026-07-10-send-message-source-precheck.md` | blocked behind `isphere_send_message` connector selection and file upload/source policy | R7 send-file connector discovery | +| `isphere_send_message` | none validated yet | existing bridge/API/local service preferred; UIA write connector only after internal-sandbox action evidence; network/protocol connector only after protocol discovery | `docs/source-discovery/2026-07-10-send-message-source-precheck.md`; `docs/source-discovery/2026-07-10-send-message-connector-selection.md` | C15 and R5 blocked: contract exists, but no committed bridge/API/local service, helper write op, UIA action chain, or protocol connector is validated | blocked pending connector evidence package | +| `isphere_send_file` | none validated yet | depends on send-message connector plus outbound file/upload evidence | `docs/source-discovery/2026-07-10-send-message-source-precheck.md`; `docs/source-discovery/2026-07-10-send-message-connector-selection.md` | blocked behind `isphere_send_message` connector selection and file upload/source policy; R5 found no send connector | blocked pending send connector evidence | ## Stage C entry rule diff --git a/docs/superpowers/plans/2026-07-10-core-business-capabilities-roadmap.md b/docs/superpowers/plans/2026-07-10-core-business-capabilities-roadmap.md index 7e87dc6..36527d3 100644 --- a/docs/superpowers/plans/2026-07-10-core-business-capabilities-roadmap.md +++ b/docs/superpowers/plans/2026-07-10-core-business-capabilities-roadmap.md @@ -28,9 +28,9 @@ | Search contacts | Registered MCP tool; deterministic exact-match ranking and case-insensitive de-duplication across log/JID candidates and optional copied-DB MsgLib display enrichment. | Optional richer fields such as department/title remain future enrichment, not a core search blocker. | complete for core search; optional enrichment later | | Search groups | Registered MCP tool; deterministic exact-match ranking and case-insensitive de-duplication across groupchat/conference candidates and optional copied-DB MsgLib display enrichment. | Optional member count, owner refs, and nested/group hierarchy remain future enrichment, not a core search blocker. | complete for core search; optional enrichment later | | Receive messages | PacketReader source works; copied `MsgLib.db` explicit receive works with `source_preference="msglib_readonly"`; R1 precheck says default should remain PacketReader until a future reconciliation helper is implemented. | Future reconciliation helper, source confidence scoring, pagination policy. | future receive helper after R2/R3 | -| Send messages | Contract exists; no validated write connector. | Need connector discovery, preview-only path, idempotency and audit before production send. | R5 then R6 | +| Send messages | Contract exists; R5 found no validated bridge/API/local, UIA, or network/protocol write connector. | Need one approved connector evidence package before R6. | blocked pending evidence | | Receive files | List mode exists from message-derived file metadata; R3/R3b confirm DB file metadata exists but current cache/archive evidence does not map to local files. | R4 download is blocked until better cache evidence or a UI/client download connector is available. | blocked; continue R5 | -| Send files | Contract exists; no validated upload/send connector. | Depends on send-message connector plus upload/file-transfer evidence. | R7 then R8 | +| Send files | Contract exists; no validated upload/send connector. | Blocked behind send-message connector plus upload/file-transfer evidence. | blocked pending send connector | ## Node Sequence @@ -326,6 +326,15 @@ powershell -NoProfile -ExecutionPolicy Bypass -File scripts\verify-go-mcp.ps1 **Stop condition:** - Do not implement a production sender without connector evidence. +**R5 Result:** + +- Created `docs/source-discovery/2026-07-10-send-message-connector-selection.md`. +- No existing bridge/API/local service was found in committed code or docs. +- Current WinHelper supports only `version`, `self_check`, `scan_windows`, and `dump_uia`; no click/type/draft/send helper op exists. +- Current UIA selector catalog is read-only locate only and does not prove conversation-open, editor, send-button, or post-send confirmation selectors. +- Current network/log evidence supports receive/transport analysis, but not an authorized sent-message request/ack contract. +- Decision: no connector selected; R6/R7/R8 write-side implementation is blocked pending an exact bridge/API, UIA action-chain, or network/protocol evidence package. + --- ### R6: Send-message preview and production path