docs: block send message pending connector evidence

This commit is contained in:
zhaoyilun
2026-07-10 00:57:50 +08:00
parent bd03cf5d83
commit 8f526e9aa9
4 changed files with 108 additions and 7 deletions

View File

@@ -1402,15 +1402,15 @@ Implemented and verified in this loop:
- If a safe connector exists, write C16 around preview-first `isphere_send_message` design or implementation.
- If evidence is insufficient, mark send-message blocked on live/internal-sandbox connector evidence and choose the next read hardening node.
- [ ] **Step 1: Inspect current source evidence for send-message connector candidates**
- [x] **Step 1: Inspect current source evidence for send-message connector candidates**
Use committed docs and generated selector/source-discovery reports only. Do not infer a write path from unrelated read evidence.
- [ ] **Step 2: Update matrix and next loop**
- [x] **Step 2: Update matrix and next loop**
Record whether send-message implementation can proceed, and rewrite C16 accordingly.
- [ ] **Step 3: Verify docs-only change and commit**
- [x] **Step 3: Verify docs-only change and commit**
Run:
@@ -1424,6 +1424,71 @@ Expected: all exit 0. Commit exact C15 paths only.
---
## Loop C15 Result
Evidence precheck result:
- `docs/mcp-core-tools-contract.md` defines `isphere_send_message` with preview/production modes, but it is a contract only.
- `native/ISphereWinHelper/Program.cs` currently supports only `version`, `self_check`, `scan_windows`, and `dump_uia`; there is no helper op for click, type, draft, send, upload, or invoke.
- `internal/uiaselector/catalog.go` contains read-only locate selectors only and does not validate a message input, open-conversation flow, or send button.
- N12R live-capture docs explicitly allow only read-only scan/dump evidence and forbid clicking, typing, sending, uploading, and downloading during capture.
- Decision: `isphere_send_message` implementation is blocked until bridge/API/local-service, UIA action-chain, or network/protocol connector evidence is validated.
---
## Loop C16: Configured PacketReader source hardening
**Goal:** Improve the existing read-tool path by allowing operator-local PacketReader evidence to be loaded from a directory or multiple log files, rather than only one explicit encrypted log-line file.
**Planned files:**
- Modify: `internal/isphere/file_source.go`
- Modify: `internal/isphere/file_source_test.go`
- Modify: `internal/mcpserver/server.go`
- Modify: `internal/mcpserver/server_test.go`
- Modify: `scripts/verify-go-mcp.ps1`
- Modify: `docs/go-mcp-runbook.md`
- Modify: `docs/current-status-card.md`
- Modify: `docs/superpowers/plans/2026-07-09-stage-c-log-backed-receive-messages-loop.md`
**Planned behavior:**
- Add a safe directory/multi-file loader for encrypted PacketReader log lines. Sort paths deterministically and ignore blank lines.
- Add a new env option such as `ISPHERE_PACKET_LOG_DIR`; fail fast if both file and directory env vars are set ambiguously.
- Extend verification with a synthetic directory fixture proving configured receive/contact/group/file-list tools still work from the hardened source path.
- Keep raw N12-pre evidence under ignored/operator-local paths; commit only synthetic fixtures/tests.
- [ ] **Step 1: Write failing directory source test**
Create or extend `internal/isphere/file_source_test.go` and run:
```powershell
go test ./internal/isphere -run TestLoadEncryptedPacketLogSourceFromDirectoryReadsSortedLogFiles -v
```
Expected initial failure: directory loader does not exist.
- [ ] **Step 2: Implement directory/multi-file loader**
Implement minimal deterministic loading over `.log`/`.txt` files without decrypting during load.
- [ ] **Step 3: Wire env and verification**
Add `ISPHERE_PACKET_LOG_DIR` handling in `mcpserver.NewServerFromEnv()` and update the verification script with a synthetic directory smoke.
- [ ] **Step 4: Run full verification and commit**
Run:
```powershell
git diff --check
go test ./...
go build ./cmd/isphere-mcp
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/verify-go-mcp.ps1
```
Expected: all exit 0. Remove any generated root `isphere-mcp.exe` after build. Commit exact C16 paths only and rewrite the next loop from actual results.
---
## Self-Review
- Spec coverage: the plan follows the user's cyclic requirement: plan first, implement one loop at a time, update the next loop after each result, and ask only on blockers.