<< All versions

Skill v1.0.0

currentTrusted Publisher100/100
microsoft/pilotswarm/debug-test
──Details
PublishedOctober 11, 2026 at 02:38 AM
Content Hashsha256:ab6fc63afdc49cc6...
Git SHA
──Files
Files (1 file, 3.2 KB)
SKILL.md3.2 KBactive
SKILL.md · 70 lines · 3.2 KB

version: "1.0.0" name: debug-test description: Diagnose and fix a failing integration test in PilotSwarm. Covers the full call chain from PilotSwarmSession.sendAndWait through duroxide orchestration to CopilotSession, common failure patterns, and how to inspect orchestration and CMS state.


For machine setup and provider coverage, read docs/developer/contributing/local-ci-and-tests.md and .github/CI.md. No flag means full PostgreSQL; --all-providers adds HDB-specific coverage; --with horizondb runs the complete suite on HDB. Default file concurrency is

  1. New SDK test files join additive HDB coverage unless explicitly reviewed in

scripts/provider-test-coverage.json. CI requires real HDB and rejects skips.

Debug a Failed Test

Diagnosis steps

  1. Run the specific test to reproduce:

``bash npm test -- --test=<name> ``

  1. Identify the failure layer — the call chain is:

`` test → PilotSwarmSession.sendAndWait() → PilotSwarmClient._startAndWait() → duroxide orchestration → SessionProxy activity (runTurn) → SessionManager.getOrCreate() → ManagedSession.runTurn() → CopilotSession.send() + on() ``

  1. Common failure causes:
SymptomLikely cause
Timeout with no responseOrchestration stuck — check duroxide logs
Tool handler not calledTools not registered — check setSessionConfig or registerTools was called
Wrong tool calledSystem message not directive enough — use mode: "replace"
Assertion on content failsLLM non-determinism — make assertions flexible (.includes(), case-insensitive)
"Not started" errorworker.start() or client.start() not called
Session not foundSession wasn't created in CMS — check catalog.createSession()
Warm session missing toolsupdateConfig() not called — check session-manager.ts warm path
nondeterministic: custom status mismatchOrchestration code uses Date.now() or other non-deterministic values to branch before yields — use yield ctx.utcNow() instead. Can also happen after redeploying changed orchestration code without resetting the database.
  1. Check CMS events — verify what actually happened:

``javascript const events = await session.getMessages(); console.log(events); ``

  1. Check session info:

``javascript const info = await session.getInfo(); console.log(info.status, info.iterations); ``

Key files

TUI note

If the bug touches TUI keybindings or keyboard help text, verify that the startup keybinding hint/splash and the help dialog/modal are still synchronized with the actual bound keys.

All versions