SignalWire

 view release on metacpan or  search on metacpan

porting-sdk/SUBAGENT_PLAYBOOK.md  view on Meta::CPAN

| Rust | **MISSING** | **MISSING** | **BLOCKED** until written |

For ports flagged BLOCKED: each AUDIT+FIX dispatch must include a task to write the enumerate script (if missing) before audit_docs / diff_port_surface can be run as receipts.

---

## Lessons learned — track new ones here

### From the killed agents (2026-04-29)

- **Composer permissions issue** (PHP relay): `composer.lock` had wrong owner from a prior run. Agent stopped at the perms issue. Sub-agents need `chown` permission OR the prompt should pre-fix permissions.
- **Stale build dirs** (Java): `.gradle.old-root-owned/` and `build.old-root-owned/` left from prior owner. Same root-cause as above.
- **Discovery during read** (Perl): agent found that `Contexts.pm` already had the full DSL, but `ContextBuilder.pm` was the stub. The fix is a 1-line `require` change, NOT writing 600 lines of new code. The prompt now flags this in the per-port arch...
- **Force-push history gap** (Go): the 4/28 force-push erased 20 PRs. Any agent touching Go must understand that `pkg/relay/*.go` PR-merged content from #133-#176 is real and recently-restored; not to be regressed.

### From the successful Rust agent (2026-04-29)

- **`signalwire.connect` shape** — Python sends params nested under `authentication`. The audit fixture watches the top level too. Agent emitted both. Future agents: replicate the dual emission OR document the deviation.
- **`signalwire.event` ack semantics** — Python ack is `{jsonrpc, id, result:{}}` (no method field). Audit fixture only marks event-dispatched on a frame with `method == "signalwire.event"` from the client. Harness explicitly emits the method-beari...
- **DataMap-based skills** — `api_ninjas_trivia` and `weather_api` are DataMap-based per Python (the platform fetches the URL). Audit expects the SDK to issue HTTP. Harness simulates the platform by extracting the webhook URL from the DataMap and e...
- **Audit script bugs** — `audit_skills_dispatch` and `audit_rest_transport` originally matched `src/skills/`/`src/rest/` greedily, picking TS first regardless. Fixed by requiring `package.json` for TS and `Cargo.toml` for Rust. **The audit program...



( run in 0.579 second using v1.01-cache-2.11-cpan-5511b514fd6 )