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

66 lines
4.3 KiB
Markdown

# 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.