```json
{
  "issue": "at://did:plc:zmjoeu3stwcn44647rhxa44o/sh.tangled.repo.issue/3lvzel2uo3a22",
  "version": 1,
  "items": [
    {
      "id": "command_namespace",
      "prompt": "The issue requests `axr lh pair`, but the existing lighthouse module is `steamvr-lh.nu` (commands are `axr steamvr-lh calibrate`, `axr steamvr-lh console`). How should the new pair command be namespaced?",
      "options": [
        {
          "label": "Rename module to `lh.nu` so commands become `axr lh pair`, `axr lh calibrate`, etc.",
          "value": "rename_to_lh",
          "followups": [
            {
              "id": "rename_deprecation",
              "prompt": "Should the old `steamvr-lh` name be preserved as a deprecated alias?",
              "options": [
                {
                  "label": "Yes, keep a thin `steamvr-lh.nu` wrapper that re-exports `lh.nu` with a deprecation warning",
                  "value": "keep_alias"
                },
                {
                  "label": "No, just rename — the project is marked as no longer maintained anyway",
                  "value": "no_alias"
                }
              ]
            }
          ]
        },
        {
          "label": "Add `pair` to the existing `steamvr-lh.nu` module (command becomes `axr steamvr-lh pair`)",
          "value": "keep_steamvr_lh"
        },
        {
          "label": "Create a new separate `lh.nu` module for pairing only, keep `steamvr-lh.nu` for calibrate/console",
          "value": "separate_module"
        }
      ]
    },
    {
      "id": "backend_tool",
      "prompt": "Which backend tool should the pair command use?",
      "options": [
        {
          "label": "Use `lighthouse_console` now (available today via SteamVR, slower but works)",
          "value": "lighthouse_console",
          "followups": [
            {
              "id": "lhctl_future_proofing",
              "prompt": "Should the implementation be structured to make switching to `lhctl` easier later?",
              "options": [
                {
                  "label": "Yes, abstract the pairing logic behind a helper function so the backend can be swapped",
                  "value": "abstract_backend"
                },
                {
                  "label": "No, just call lighthouse_console directly — refactor when lhctl is available",
                  "value": "direct_call"
                }
              ]
            }
          ]
        },
        {
          "label": "Wait for `lhctl` to be publicly released and implement with that",
          "value": "wait_for_lhctl"
        },
        {
          "label": "Support both: detect if `lhctl` is available and prefer it, fall back to `lighthouse_console`",
          "value": "dual_backend",
          "followups": [
            {
              "id": "dual_backend_flag",
              "prompt": "Should the user be able to force a specific backend?",
              "options": [
                {
                  "label": "Yes, add a `--backend` flag (e.g. `axr lh pair --backend lhctl`)",
                  "value": "backend_flag"
                },
                {
                  "label": "No, auto-detect only — simpler UX",
                  "value": "auto_detect_only"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": "pairing_workflow",
      "prompt": "How should the pairing workflow work from the user's perspective?",
      "options": [
        {
          "label": "Fully interactive: scan for devices, present a list, user selects which to pair",
          "value": "interactive",
          "followups": [
            {
              "id": "interactive_multi_select",
              "prompt": "Should the user be able to pair multiple devices in one session?",
              "options": [
                {
                  "label": "Yes, allow multi-select from discovered devices",
                  "value": "multi_select"
                },
                {
                  "label": "No, pair one device at a time (simpler, matches lighthouse_console behavior)",
                  "value": "single_select"
                }
              ]
            }
          ]
        },
        {
          "label": "Semi-interactive: user provides device serial/ID as argument, command handles the rest",
          "value": "semi_interactive"
        },
        {
          "label": "Guided wizard: step-by-step prompts (put device in pairing mode, confirm, etc.)",
          "value": "guided_wizard"
        }
      ]
    },
    {
      "id": "device_types",
      "prompt": "Which lighthouse-tracked device types should the pair command support?",
      "options": [
        {
          "label": "All lighthouse devices (base stations, controllers, trackers, HMDs)",
          "value": "all_devices"
        },
        {
          "label": "Controllers and trackers only (most common pairing need)",
          "value": "controllers_trackers"
        },
        {
          "label": "Start with controllers only, add other device types in follow-up PRs",
          "value": "controllers_first"
        }
      ]
    },
    {
      "id": "lh_console_discovery",
      "prompt": "The existing `lh-console` helper in `steamvr-lh.nu` checks multiple paths (PATH, Flatpak Steam, native Steam). Should the pair command reuse this helper?",
      "options": [
        {
          "label": "Yes, reuse the existing `lh-console` helper as-is",
          "value": "reuse_helper"
        },
        {
          "label": "Reuse but refactor `lh-console` to also support piping input/capturing output (needed for scripted pairing)",
          "value": "refactor_helper"
        },
        {
          "label": "Write a new helper specifically for pairing that handles the async job pattern lighthouse_console needs",
          "value": "new_helper"
        }
      ]
    },
    {
      "id": "error_handling",
      "prompt": "How should the command handle common failure cases (no Bluetooth, SteamVR not installed, device not found)?",
      "options": [
        {
          "label": "Pre-flight checks: verify prerequisites before attempting pairing, with actionable error messages",
          "value": "preflight_checks"
        },
        {
          "label": "Attempt pairing and surface errors from lighthouse_console/lhctl with minimal wrapping",
          "value": "passthrough_errors"
        },
        {
          "label": "Pre-flight checks plus a `--force` flag to skip them for advanced users",
          "value": "preflight_with_force"
        }
      ]
    },
    {
      "id": "timeout_handling",
      "prompt": "Pairing can take a while (especially with lighthouse_console). How should timeouts be handled?",
      "options": [
        {
          "label": "Default timeout with a `--timeout` flag to override",
          "value": "configurable_timeout"
        },
        {
          "label": "No timeout — wait indefinitely until pairing succeeds or user cancels (Ctrl+C)",
          "value": "no_timeout"
        },
        {
          "label": "Progress indicator with a generous default timeout (e.g. 60s) and clear messaging",
          "value": "progress_with_timeout"
        }
      ]
    },
    {
      "id": "testing_strategy",
      "prompt": "How should this feature be tested? (Hardware-dependent features are hard to unit test)",
      "options": [
        {
          "label": "Manual testing only — document test procedure in PR description",
          "value": "manual_only"
        },
        {
          "label": "Add basic tests for argument parsing and pre-flight checks (mock external commands)",
          "value": "basic_tests"
        },
        {
          "label": "No tests needed — the project is marked as no longer maintained",
          "value": "no_tests"
        }
      ]
    },
    {
      "id": "documentation",
      "prompt": "What documentation should accompany this feature?",
      "options": [
        {
          "label": "Inline help text in the Nushell command (consistent with existing commands like `calibrate`)",
          "value": "inline_help_only"
        },
        {
          "label": "Inline help text plus a section in the README",
          "value": "inline_and_readme"
        },
        {
          "label": "Inline help text only — README already says the project is no longer maintained",
          "value": "inline_no_readme"
        }
      ]
    }
  ]
}
```
