Files
isphere-ai-bridge/docs/source-discovery/2026-07-12-offline-broute-reverse-decision.md
2026-07-12 02:36:59 +08:00

4.3 KiB

Offline B-Route Reverse Decision

Date: 2026-07-12 Branch: codex/offline-broute-reverse

Current phase / 当前阶段

Offline reverse engineering for the primary B-route is complete for the current evidence set. The goal was to decide whether B-route can continue through an existing IPC/plugin/local API, or whether it must move to an in-process adapter research branch.

Inputs / 输入证据

Evidence Path
Offline sample index docs/source-discovery/2026-07-12-offline-broute-reverse-index.md
Text send static map docs/source-discovery/2026-07-12-broute-text-send-static-map.md
File send static map docs/source-discovery/2026-07-12-broute-file-send-static-map.md
Bridge/IPC/plugin static map docs/source-discovery/2026-07-12-broute-bridge-static-map.md
Machine JSON outputs runs/offline-broute-reverse/*.json

Verified facts / 已验证事实

  1. The offline sample set is present and hash-matched against the recorded plan list; the analyzer scripts only read metadata/IL and did not copy or modify binaries.
  2. Text send has confirmed static call-path evidence:
    • AppContextManager.SendTxtMessageByJid
    • MessageScheduling.SendChatMessage
    • Chat.SendMessage / Chat.sendMessage
    • XMPPConnection.send
  3. File send has confirmed two-step evidence:
    • upload first through OffLineFileSend.sendFile, FileUploadPara, and IFileTransfer.FileUpload / IMPP.Service.BLL.FileTransfer.FileUpload;
    • then chat file-message finalization through trans_UploadCompleted(fileId), MessageScheduling.SendFileMessage, and Chat.sendFileMessage.
  4. FileUploadResult.FileID / remote-folder metadata is required before the chat file message is meaningful.
  5. The static bridge scan found no confirmed existing IPC/plugin/local HTTP route that exposes text-send or file-send.
  6. HttpServerLib exists, but the discovered frmLogin.StartWinServer path depends on logged-in runtime state and no send route was found.
  7. PluginLightAppMulProcessCommunication declares a NamedPipeServerStream, but its start method returns immediately.
  8. Returned live probe saw \\.\pipe\zfpinject-msg-server, but no matching iSphere static send contract was found.

Decision / 决策

Candidate Decision Reason
existing_ipc_first rejected for now No concrete local HTTP/named-pipe/service send API was confirmed.
plugin_extension_first rejected for now Plugin evidence is UI/app-store/context-menu oriented; no local plugin load/send bridge is confirmed.
in_process_adapter_research selected The send and file-send call paths exist, but they need access to the logged-in IMPlatformClient.exe runtime objects.
external_sidecar_preview_only allowed External sidecar can validate contracts/probes, but cannot reuse logged-in static runtime by itself.
fallback_rpa_only not selected A-route/RPA remains backup-only; do not promote it unless B-route is explicitly blocked by a later decision.

Final offline decision: B-route stays primary, but the next real branch is in_process_adapter_research, not existing IPC/plugin and not production send.

Business impact / 业务影响

  • Message receiving, file receiving/listing, contact search, and group search stay on the existing data/log-backed roadmap.
  • Text send is technically mapped but not business-complete: the missing piece is a bridge into logged-in runtime state and later online ack/sent-record validation.
  • File send is harder than text send: upload and chat-message finalization are separate, and upload needs HTTP file-service auth plus server-issued file id.
  • RPA remains a practical backup for UI smoke, but it is not the product architecture.

Next implementation slice / 下一轮

  1. Create a dedicated in-process adapter research plan.
  2. Keep any sidecar work preview/probe-only until an adapter path is selected.
  3. Do not implement real send_message, send_file, or upload_file in this offline branch.
  4. Online evidence later must prove sent-record/content-hash/ack before production send can be called complete.

Stop conditions / 停止条件

Stop and ask for business decision if the next in-process research shows that every viable bridge requires invasive process mutation, unsupported injection, or cannot be validated without a logged-in test environment.