|
| 1 | +# Cycle 17 Findings - 2026-06-04 |
| 2 | + |
| 3 | +## Scope |
| 4 | + |
| 5 | +- Repository: `SwiftFloris` |
| 6 | +- Baseline: clean detached worktree at pushed `master` `2076f49` |
| 7 | + (`docs: refresh cycle 16 research queue`), described as |
| 8 | + `v1.8.246-5-g2076f49`. |
| 9 | +- Sync: `git pull --rebase origin master` reported up to date before this |
| 10 | + cycle. |
| 11 | +- Constraint: research/docs only. No feature source, tests, build files, or |
| 12 | + assets were edited. |
| 13 | + |
| 14 | +## Anti-Duplicate Checks |
| 15 | + |
| 16 | +- Did not duplicate R16-1. R16-1 is subtype switching; this cycle is MCP daemon |
| 17 | + tool identity. |
| 18 | +- Did not reopen Tasker extras or Keyman package caps. Current research notes |
| 19 | + and the June 2 audit already treat those as handled. |
| 20 | +- Did not change the MCP payload-size, consent, sensitive-field, or signature |
| 21 | + permission gates. The row targets name shape and cross-daemon dispatch identity |
| 22 | + only. |
| 23 | +- Did not propose networked MCP behavior; this remains the existing local daemon |
| 24 | + bridge. |
| 25 | + |
| 26 | +## Local Evidence |
| 27 | + |
| 28 | +- `McpDaemonDiscoverer.kt:91-109` parses tool catalog entries and accepts every |
| 29 | + trimmed nonblank `name`. |
| 30 | +- `McpBridgeContract.kt:84-94` requires only nonblank `McpToolDescriptor.name`. |
| 31 | +- `McpDaemonRegistry.kt:85-93` implements `findTool(toolName)` as a first-match |
| 32 | + scan across active daemons. |
| 33 | +- `McpDispatchRouter.kt:53-83` accepts a request with only `toolName`, resolves |
| 34 | + it through `RegistryView.findTool`, and then dispatches to the resolved |
| 35 | + daemon. |
| 36 | +- `McpDaemonDiscovererTest.kt:85-100` covers skipping blank names, but not |
| 37 | + malformed tool-name shape. |
| 38 | +- `McpDaemonRegistryTest.kt:53-70` covers multi-daemon lookup with distinct names |
| 39 | + and does not pin duplicate-name behavior. |
| 40 | +- `docs/AUDIT_2026-05-28.md:80-82` records the tool-name shape and |
| 41 | + collision/shadowing risk. |
| 42 | + |
| 43 | +## Roadmap Changes Fed |
| 44 | + |
| 45 | +- R17-1: Scope MCP daemon tool dispatch by daemon and constrain tool names. The |
| 46 | + implementation should reject malformed names, replace global first-match |
| 47 | + lookup with a daemon-scoped identity before dispatch, keep Settings summaries |
| 48 | + and per-tool disable keys on that same identity, and add tests for malformed |
| 49 | + names plus duplicate names across daemons. |
| 50 | + |
| 51 | +## Non-Adds |
| 52 | + |
| 53 | +- No source fix was made in this cycle. |
| 54 | +- No new permission, export, storage, or network behavior was proposed. |
| 55 | +- No broad MCP transport redesign proposed. The target is the advertised |
| 56 | + tool-name contract and dispatch identity boundary. |
0 commit comments