[
  {
    "id": "core-repository-check-presence_of_release_notes_and_changelog",
    "group": "core-repository",
    "module": "core",
    "action": "check",
    "description": "Verify Release Notes and Changelog are present in the software repository",
    "status": "automated",
    "file": "tests/core/repository.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-repository-check-presence_of_trouble_shooting_guide",
    "group": "core-repository",
    "module": "core",
    "action": "check",
    "description": "Verify Troubleshooting Guide is present in the repository",
    "status": "automated",
    "file": "tests/core/repository.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-repository-check-presence_of_all_mandatory_core-documentation_files",
    "group": "core-repository",
    "module": "core",
    "action": "check",
    "description": "Verify all mandatory core documentation files are listed in the repository",
    "status": "automated",
    "file": "tests/core/repository.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-repository-check-presence_of_main_software_version_all_hypervisors",
    "group": "core-repository",
    "module": "core",
    "action": "check",
    "description": "Verify main software version packages are available for all supported hypervisors",
    "status": "automated",
    "file": "tests/core/repository.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-repository-check-presence_of_patch_version_and_its_compatibility",
    "group": "core-repository",
    "module": "core",
    "action": "check",
    "description": "Verify patch version packages and compatibility matrices are present",
    "status": "automated",
    "file": "tests/core/repository.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-repository-check-presence_of_companion_tools_and_supporting_scripts",
    "group": "core-repository",
    "module": "core",
    "action": "check",
    "description": "Verify companion tools and supporting scripts are available in the repository",
    "status": "automated",
    "file": "tests/core/repository.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-documentation-write-release_notes_feature_changes_and_known_issues",
    "group": "core-documentation",
    "module": "core",
    "action": "write",
    "description": "Extract and record Release Notes, feature changes, and known issues",
    "status": "automated",
    "file": "tests/core/documentation.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ],
    "fullyAutomated": true,
    "implementationNotes": "Use Playwright to navigate the admin portal downloads section and locate release notes documents. Extract text and write to a local file.",
    "codeSteps": [
      {
        "stepName": "Open admin portal or repository URL in browser context",
        "actionKey": "open_admin_portal",
        "params": {}
      },
      {
        "stepName": "Navigate to the download / documentation portal",
        "actionKey": "navigate_to_downloads_portal",
        "params": {}
      },
      {
        "stepName": "Search or locate the relevant file/link by filename pattern",
        "actionKey": "search_for_document",
        "params": { "pattern": "release-notes" }
      },
      {
        "stepName": "Assert presence and visibility of the expected document",
        "actionKey": "assert_document_visible",
        "params": { "pattern": "release-notes" }
      }
    ]
  },
  {
    "id": "core-documentation-check-accuracy_installation_and_configuration_guide",
    "group": "core-documentation",
    "module": "core",
    "action": "check",
    "description": "Verify accuracy of the Installation and Configuration Guide against actual system behaviour",
    "status": "manual",
    "file": "tests/core/documentation.spec.ts",
    "manualReason": "Requires expert human review: QA engineer must follow the guide step-by-step on a clean system",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires expert human review: QA engineer must follow the guide step-by-step on a clean system",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-documentation-check-accuracy_trouble_shooting_guide",
    "group": "core-documentation",
    "module": "core",
    "action": "check",
    "description": "Verify the Troubleshooting Guide procedures are accurate and complete",
    "status": "manual",
    "file": "tests/core/documentation.spec.ts",
    "manualReason": "Requires expert human review to validate each troubleshooting scenario on a real system",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires expert human review to validate each troubleshooting scenario on a real system",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-documentation-write-changed_cli_configuration_commands",
    "group": "core-documentation",
    "module": "core",
    "action": "write",
    "description": "Extract and record changed CLI configuration commands for this release",
    "status": "automated",
    "file": "tests/core/documentation.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Navigate to the download / documentation portal",
      "Search or locate the relevant file/link by filename pattern",
      "Assert presence and visibility of the expected document"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
       {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ],
    "fullyAutomated": true,
    "implementationNotes": "Similar to release notes extraction but targets CLI command changes in the documentation.",
    "codeSteps": [
      {
        "stepName": "Open admin portal or repository URL in browser context",
        "actionKey": "open_admin_portal",
        "params": {}
      },
      {
        "stepName": "Navigate to the download / documentation portal",
        "actionKey": "navigate_to_downloads_portal",
        "params": {}
      },
      {
        "stepName": "Search or locate the relevant file/link by filename pattern",
        "actionKey": "search_for_document",
        "params": { "pattern": "cli-configuration" }
      },
      {
        "stepName": "Assert presence and visibility of the expected document",
        "actionKey": "assert_document_visible",
        "params": { "pattern": "cli-configuration" }
      }
    ]
  },
  {
    "id": "core-features-write-summary_of_each_new_feature_per_release",
    "group": "core-features",
    "module": "core",
    "action": "write",
    "description": "Extract and record a summary of each new feature included in this release",
    "status": "automated",
    "file": "tests/core/features.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-features-check-integration_of_new_features_with_existing_call_processing_and_modules",
    "group": "core-features",
    "module": "core",
    "action": "check",
    "description": "Verify new features integrate correctly with existing call processing and system modules",
    "status": "partial",
    "file": "tests/core/features.spec.ts",
    "partialNotes": "UI config checks automated; actual call-flow integration requires active telephony endpoints",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "UI config checks automated; actual call-flow integration requires active telephony endpoints",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-features-check-backward_compatibility_of_new_features",
    "group": "core-features",
    "module": "core",
    "action": "check",
    "description": "Verify new features are backward-compatible with existing configurations and older endpoint firmware",
    "status": "partial",
    "file": "tests/core/features.spec.ts",
    "partialNotes": "Configuration import checks automated; functional compatibility with older endpoints requires manual testing",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Configuration import checks automated; functional compatibility with older endpoints requires manual testing",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-features-check-performance_and_resource_impact_assessment_of_new_features",
    "group": "core-features",
    "module": "core",
    "action": "check",
    "description": "Assess CPU/memory/network resource impact of new features under representative call load",
    "status": "manual",
    "file": "tests/core/features.spec.ts",
    "manualReason": "Requires SIPp load generator, performance monitoring infrastructure, and sustained load testing",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires SIPp load generator, performance monitoring infrastructure, and sustained load testing",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-features-write-analysis_of_new_security_risks",
    "group": "core-features",
    "module": "core",
    "action": "write",
    "description": "Identify, analyse, and document new security risks introduced by features in this release",
    "status": "manual",
    "file": "tests/core/features.spec.ts",
    "manualReason": "Security risk analysis requires expert threat modelling, source code review, and human judgment",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Security risk analysis requires expert threat modelling, source code review, and human judgment",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-features-write-ui_ux_and_admin_portal_changes_validation",
    "group": "core-features",
    "module": "core",
    "action": "write",
    "description": "Capture and record all UI/UX changes in the admin portal for this release",
    "status": "automated",
    "file": "tests/core/features.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-features-check-provisioning_changes_for_new_features",
    "group": "core-features",
    "module": "core",
    "action": "check",
    "description": "Verify provisioning settings for new features are accessible in the admin portal",
    "status": "automated",
    "file": "tests/core/features.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-virtualization-write-supported_hypervisors_deployment",
    "group": "core-virtualization",
    "module": "core",
    "action": "write",
    "description": "Record the list of supported hypervisors and deployment methods from the download portal",
    "status": "automated",
    "file": "tests/core/virtualization.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Hypervisor Access",
        "value": "vCenter, Hyper-V Manager, Proxmox, or virsh (SSH/API)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-virtualization-write-guest_agent_integration",
    "group": "core-virtualization",
    "module": "core",
    "action": "write",
    "description": "Record guest agent integration status for each supported hypervisor",
    "status": "manual",
    "file": "tests/core/virtualization.spec.ts",
    "manualReason": "Requires direct access to hypervisor console (vCenter, Hyper-V Manager, virsh)",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires direct access to hypervisor console (vCenter, Hyper-V Manager, virsh)",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Hypervisor Access",
        "value": "vCenter, Hyper-V Manager, Proxmox, or virsh (SSH/API)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-virtualization-write-resource_allocation_vcpu_vram_vdisk",
    "group": "core-virtualization",
    "module": "core",
    "action": "write",
    "description": "Record vCPU, vRAM, and vDisk resource allocation for deployment templates",
    "status": "manual",
    "file": "tests/core/virtualization.spec.ts",
    "manualReason": "Hypervisor management plane access required; not exposed in PBX admin portal",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Hypervisor management plane access required; not exposed in PBX admin portal",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Hypervisor Access",
        "value": "vCenter, Hyper-V Manager, Proxmox, or virsh (SSH/API)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-virtualization-write-virtual_networking_configuration",
    "group": "core-virtualization",
    "module": "core",
    "action": "write",
    "description": "Record virtual networking configuration: virtual switches, VLANs, NIC assignments",
    "status": "manual",
    "file": "tests/core/virtualization.spec.ts",
    "manualReason": "Requires access to hypervisor networking configuration and virtual switch management",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires access to hypervisor networking configuration and virtual switch management",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Hypervisor Access",
        "value": "vCenter, Hyper-V Manager, Proxmox, or virsh (SSH/API)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-virtualization-check-live_migration_and_active_call_preservation",
    "group": "core-virtualization",
    "module": "core",
    "action": "check",
    "description": "Verify VM live migration preserves active calls without interruption",
    "status": "manual",
    "file": "tests/core/virtualization.spec.ts",
    "manualReason": "Requires HA infrastructure with 2+ hypervisor hosts and active SIP call sessions during migration",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires HA infrastructure with 2+ hypervisor hosts and active SIP call sessions during migration",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Hypervisor Access",
        "value": "vCenter, Hyper-V Manager, Proxmox, or virsh (SSH/API)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-virtualization-check-snapshot_backup_restore_and_consistency",
    "group": "core-virtualization",
    "module": "core",
    "action": "check",
    "description": "Verify VM snapshot and restore operations maintain full system consistency",
    "status": "partial",
    "file": "tests/core/virtualization.spec.ts",
    "partialNotes": "Post-restore consistency checks via admin portal automated; snapshot/restore operation needs hypervisor access",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Post-restore consistency checks via admin portal automated; snapshot/restore operation needs hypervisor access",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Hypervisor Access",
        "value": "vCenter, Hyper-V Manager, Proxmox, or virsh (SSH/API)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-virtualization-check-hypervisor_level_high_availability",
    "group": "core-virtualization",
    "module": "core",
    "action": "check",
    "description": "Verify hypervisor-level HA restarts the PBX VM after a host failure",
    "status": "manual",
    "file": "tests/core/virtualization.spec.ts",
    "manualReason": "Requires physical HA cluster with multiple hypervisor hosts; host failure must be simulated",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires physical HA cluster with multiple hypervisor hosts; host failure must be simulated",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Hypervisor Access",
        "value": "vCenter, Hyper-V Manager, Proxmox, or virsh (SSH/API)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-virtualization-write-storage_thin_vs_thick_provisioning",
    "group": "core-virtualization",
    "module": "core",
    "action": "write",
    "description": "Record storage provisioning type and performance implications for each hypervisor",
    "status": "manual",
    "file": "tests/core/virtualization.spec.ts",
    "manualReason": "Storage details only visible in hypervisor storage management interface",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Storage details only visible in hypervisor storage management interface",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Hypervisor Access",
        "value": "vCenter, Hyper-V Manager, Proxmox, or virsh (SSH/API)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-write-strong_password_policy",
    "group": "core-security",
    "module": "core",
    "action": "write",
    "description": "Navigate to security settings and record the current password policy configuration",
    "status": "automated",
    "file": "tests/core/security.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-sip_tls_and_srtp_encryption_enabled_by_default",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Verify SIP TLS and SRTP media encryption are enabled by default",
    "status": "automated",
    "file": "tests/core/security.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-ip_access_control_lists",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Verify IP Access Control Lists are properly configured and enforced",
    "status": "automated",
    "file": "tests/core/security.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-unnecessary_services_and_ports_are_disabled",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Verify unnecessary services and network ports are disabled",
    "status": "partial",
    "file": "tests/core/security.spec.ts",
    "partialNotes": "Service status via admin portal automated; port scanning requires nmap from external host",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Service status via admin portal automated; port scanning requires nmap from external host",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-security_event_logging_and_audit_trail_is_active",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Verify security event logging and audit trail are active and recording events",
    "status": "automated",
    "file": "tests/core/security.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-auto_enrollment_certificate_management_process",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Verify auto-enrollment certificate management (ACME/Let's Encrypt) is configured and functional",
    "status": "automated",
    "file": "tests/core/security.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-known_vulnerable_dependencies_in_release_artifacts",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Verify release artifacts do not contain known vulnerable dependencies (CVE scan)",
    "status": "partial",
    "file": "tests/core/security.spec.ts",
    "partialNotes": "Vulnerability report page in portal automated; actual CVE scanning requires Trivy/OWASP-DC in CI",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Vulnerability report page in portal automated; actual CVE scanning requires Trivy/OWASP-DC in CI",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Full CVE / dependency scanning (Trivy, Grype, OWASP Dependency-Check) in CI pipeline"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-previous_security_findings_have_been_remediated_before_release",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Verify all previously identified security findings are remediated before release",
    "status": "manual",
    "file": "tests/core/security.spec.ts",
    "manualReason": "Requires access to security issue tracker and cross-referencing CVEs with the release changelog",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires access to security issue tracker and cross-referencing CVEs with the release changelog",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-obtain_formal_security_team_sign_off_for_the_new_version",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Obtain formal written sign-off from the Security team approving the release",
    "status": "manual",
    "file": "tests/core/security.spec.ts",
    "manualReason": "Governance gate requiring human decision and formal sign-off document; cannot be automated",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Governance gate requiring human decision and formal sign-off document; cannot be automated",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-verify_role_based_access_control_and_least_privilege_principle",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Verify RBAC roles are correctly defined and least-privilege principle is enforced",
    "status": "automated",
    "file": "tests/core/security.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-security-check-encryption_of_sensitive_data_at_rest_and_in_transit",
    "group": "core-security",
    "module": "core",
    "action": "check",
    "description": "Verify sensitive data is encrypted at rest (DB) and in transit (HTTPS/TLS)",
    "status": "partial",
    "file": "tests/core/security.spec.ts",
    "partialNotes": "HTTPS/TLS configuration verified via portal; DB-level at-rest encryption requires SSH/CLI access",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "HTTPS/TLS configuration verified via portal; DB-level at-rest encryption requires SSH/CLI access",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-installation-check-fresh_installation",
    "group": "core-installation",
    "module": "core",
    "action": "check",
    "description": "Verify complete fresh installation from scratch succeeds on each supported hypervisor",
    "status": "manual",
    "file": "tests/core/installation.spec.ts",
    "manualReason": "Requires provisioning a clean VM, mounting ISO/OVA, and running the installation wizard",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires provisioning a clean VM, mounting ISO/OVA, and running the installation wizard",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-installation-check-post_install_service_status_and_port_verification",
    "group": "core-installation",
    "module": "core",
    "action": "check",
    "description": "Verify all required services are running and expected ports are open after installation",
    "status": "partial",
    "file": "tests/core/installation.spec.ts",
    "partialNotes": "Service status via admin portal automated; TCP port verification requires nmap from external host",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Service status via admin portal automated; TCP port verification requires nmap from external host",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-installation-check-initial_configuration",
    "group": "core-installation",
    "module": "core",
    "action": "check",
    "description": "Verify the initial configuration wizard completes successfully",
    "status": "automated",
    "file": "tests/core/installation.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-installation-check-license_activation",
    "group": "core-installation",
    "module": "core",
    "action": "check",
    "description": "Verify license activation completes successfully and licensed features are unlocked",
    "status": "automated",
    "file": "tests/core/installation.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-upgrade-check-in_place_upgrade_from_previous_major_version",
    "group": "core-upgrade",
    "module": "core",
    "action": "check",
    "description": "Verify in-place upgrade from the previous major version completes successfully without data loss",
    "status": "manual",
    "file": "tests/core/upgrade.spec.ts",
    "manualReason": "Requires a running instance of the previous version and dedicated upgrade test environment",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires a running instance of the previous version and dedicated upgrade test environment",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-upgrade-check-configuration_and_database_migration_validation",
    "group": "core-upgrade",
    "module": "core",
    "action": "check",
    "description": "Verify configuration objects and database content migrate correctly after upgrade",
    "status": "partial",
    "file": "tests/core/upgrade.spec.ts",
    "partialNotes": "UI configuration checks automated; DB schema integrity validation requires direct database access",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "UI configuration checks automated; DB schema integrity validation requires direct database access",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-upgrade-check-schema_upgrade_and_data_integrity_check",
    "group": "core-upgrade",
    "module": "core",
    "action": "check",
    "description": "Verify database schema is correctly upgraded and all data maintains integrity",
    "status": "manual",
    "file": "tests/core/upgrade.spec.ts",
    "manualReason": "Requires direct database access (psql/mysql) and schema comparison tooling",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires direct database access (psql/mysql) and schema comparison tooling",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-upgrade-check-rollback_procedure_execution_and_verification",
    "group": "core-upgrade",
    "module": "core",
    "action": "check",
    "description": "Verify the rollback procedure successfully reverts the system to the previous version",
    "status": "manual",
    "file": "tests/core/upgrade.spec.ts",
    "manualReason": "Requires VM snapshot revert or package downgrade; needs physical/hypervisor-level access",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires VM snapshot revert or package downgrade; needs physical/hypervisor-level access",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-upgrade-check-post_upgrade_regression_of_core_features",
    "group": "core-upgrade",
    "module": "core",
    "action": "check",
    "description": "Run automated regression checks on core portal features after upgrade",
    "status": "automated",
    "file": "tests/core/upgrade.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-upgrade-check-zero_downtime_upgrade_where_supported",
    "group": "core-upgrade",
    "module": "core",
    "action": "check",
    "description": "Verify zero-downtime upgrade keeps the service available throughout the upgrade process",
    "status": "manual",
    "file": "tests/core/upgrade.spec.ts",
    "manualReason": "Requires active call sessions monitored during the upgrade window; calls cannot be managed by Playwright",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Prepare clean or previous-version VM/image",
      "Perform installation or upgrade procedure",
      "Post-install verification via portal + external tools"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires active call sessions monitored during the upgrade window; calls cannot be managed by Playwright",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-interoperability-check-addm",
    "group": "core-interoperability",
    "module": "core",
    "action": "check",
    "description": "Verify ADDM integration is configured and reporting discovery data correctly",
    "status": "automated",
    "file": "tests/core/interoperability.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "External Systems",
        "value": "SIEM server (Splunk, ELK, QRadar) and/or ADDM/ADDM collector"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "core-interoperability-check-siem",
    "group": "core-interoperability",
    "module": "core",
    "action": "check",
    "description": "Verify SIEM integration is configured and forwarding security events",
    "status": "automated",
    "file": "tests/core/interoperability.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS (admin portal) + optional SSH/CLI"
      },
      {
        "label": "External Systems",
        "value": "SIEM server (Splunk, ELK, QRadar) and/or ADDM/ADDM collector"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-configuration-check-initial_system_setup_and_network_settings",
    "group": "pbx-configuration",
    "module": "pbx",
    "action": "check",
    "description": "Verify initial PBX system setup and network settings are correctly configured",
    "status": "automated",
    "file": "tests/pbx/configuration.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-configuration-check-dialplan_route_and_outbound_rule_creation",
    "group": "pbx-configuration",
    "module": "pbx",
    "action": "check",
    "description": "Verify creation and validation of dial plan rules and outbound routes",
    "status": "automated",
    "file": "tests/pbx/configuration.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-configuration-check-backup_restore_full_system_configuration",
    "group": "pbx-configuration",
    "module": "pbx",
    "action": "check",
    "description": "Verify full system configuration backup and restore operations work correctly",
    "status": "automated",
    "file": "tests/pbx/configuration.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-configuration-check-bulk_csv_import_export_of_settings",
    "group": "pbx-configuration",
    "module": "pbx",
    "action": "check",
    "description": "Verify bulk CSV import and export of settings",
    "status": "automated",
    "file": "tests/pbx/configuration.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-extensions-check-create_modify_delete_sip_extensions",
    "group": "pbx-extensions",
    "module": "pbx",
    "action": "check",
    "description": "Verify full CRUD lifecycle for SIP extensions in the admin portal",
    "status": "automated",
    "file": "tests/pbx/extensions.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-extensions-check-extension_registration_with_deskphones_softphones",
    "group": "pbx-extensions",
    "module": "pbx",
    "action": "check",
    "description": "Verify SIP extension registers successfully from a desk phone and a softphone client",
    "status": "manual",
    "file": "tests/pbx/extensions.spec.ts",
    "manualReason": "Requires physical SIP desk phone (Yealink, Polycom) or softphone (Zoiper, MicroSIP)",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires physical SIP desk phone (Yealink, Polycom) or softphone (Zoiper, MicroSIP)",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-extensions-check-device_provisioning",
    "group": "pbx-extensions",
    "module": "pbx",
    "action": "check",
    "description": "Verify automatic device provisioning: profile generation and server URL accessible",
    "status": "partial",
    "file": "tests/pbx/extensions.spec.ts",
    "partialNotes": "Provisioning profile creation via admin portal automated; actual device provisioning requires physical phone",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Provisioning profile creation via admin portal automated; actual device provisioning requires physical phone",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-check-internal_extension_to_extension_audio_call",
    "group": "pbx-calls",
    "module": "pbx",
    "action": "check",
    "description": "Verify internal extension-to-extension audio call connects with bi-directional audio",
    "status": "manual",
    "file": "tests/pbx/calls.spec.ts",
    "manualReason": "Requires two active SIP endpoints and human verification of two-way audio quality",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires two active SIP endpoints and human verification of two-way audio quality",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-check-inbound_call_from_sip_trunk_pstn",
    "group": "pbx-calls",
    "module": "pbx",
    "action": "check",
    "description": "Verify inbound call from a SIP trunk/PSTN routes correctly to the configured destination",
    "status": "manual",
    "file": "tests/pbx/calls.spec.ts",
    "manualReason": "Requires live SIP trunk connectivity to PSTN and a real DID number",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires live SIP trunk connectivity to PSTN and a real DID number",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-check-outbound_call_to_sip_trunk_pstn_with_caller_id",
    "group": "pbx-calls",
    "module": "pbx",
    "action": "check",
    "description": "Verify outbound call via SIP trunk presents the correct Caller ID on the receiving end",
    "status": "manual",
    "file": "tests/pbx/calls.spec.ts",
    "manualReason": "Requires live SIP trunk and verification of Caller ID at receiving PSTN party",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires live SIP trunk and verification of Caller ID at receiving PSTN party",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-check-caller_id_presentation_restriction_and_pai",
    "group": "pbx-calls",
    "module": "pbx",
    "action": "check",
    "description": "Verify Caller ID presentation, Anonymous restriction (CLIR), and P-Asserted-Identity header",
    "status": "manual",
    "file": "tests/pbx/calls.spec.ts",
    "manualReason": "Requires active call sessions and SIP packet capture to verify PAI header values",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires active call sessions and SIP packet capture to verify PAI header values",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-check-call_hold_resume_and_music_on_hold",
    "group": "pbx-calls",
    "module": "pbx",
    "action": "check",
    "description": "Verify call hold, resume, and Music on Hold playback work correctly",
    "status": "manual",
    "file": "tests/pbx/calls.spec.ts",
    "manualReason": "Requires an active two-party call; MoH requires audio monitoring with real SIP phone hardware",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires an active two-party call; MoH requires audio monitoring with real SIP phone hardware",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-check-call_waiting_notification_and_switching",
    "group": "pbx-calls",
    "module": "pbx",
    "action": "check",
    "description": "Verify call waiting notification and switching between active and waiting calls",
    "status": "manual",
    "file": "tests/pbx/calls.spec.ts",
    "manualReason": "Requires concurrent call sessions on the same extension with physical/softphone capable of call-waiting",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires concurrent call sessions on the same extension with physical/softphone capable of call-waiting",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-check-three_way_conference_and_multi_party_bridge",
    "group": "pbx-calls",
    "module": "pbx",
    "action": "check",
    "description": "Verify three-way conference calling and multi-party conference bridge functionality",
    "status": "manual",
    "file": "tests/pbx/calls.spec.ts",
    "manualReason": "Requires three or more active SIP endpoints and audio verification by human listeners",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires three or more active SIP endpoints and audio verification by human listeners",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-codecs-check-codec_negotiation_g711_g729_opus_g722",
    "group": "pbx-codecs",
    "module": "pbx",
    "action": "check",
    "description": "Verify successful codec negotiation for G.711, G.729, Opus, and G.722",
    "status": "manual",
    "file": "tests/pbx/codecs.spec.ts",
    "manualReason": "Requires SIP call traffic with codec-constrained endpoints and Wireshark packet capture to verify SDP negotiation",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires SIP call traffic with codec-constrained endpoints and Wireshark packet capture to verify SDP negotiation",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-codecs-check-dtmf_transmission_rfc2833_inband_sip_info",
    "group": "pbx-codecs",
    "module": "pbx",
    "action": "check",
    "description": "Verify DTMF digit transmission via RFC2833, in-band audio, and SIP INFO methods",
    "status": "manual",
    "file": "tests/pbx/codecs.spec.ts",
    "manualReason": "Requires active call sessions with DTMF generation, packet capture, and IVR system for verification",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires active call sessions with DTMF generation, packet capture, and IVR system for verification",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-codecs-check-t38_fax_passthrough_and_error_correction",
    "group": "pbx-codecs",
    "module": "pbx",
    "action": "check",
    "description": "Verify T.38 fax passthrough and error correction (ECM) work correctly",
    "status": "manual",
    "file": "tests/pbx/codecs.spec.ts",
    "manualReason": "Requires fax hardware or fax emulator (HylaFAX) and T.38 stack support",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Ensure SIP endpoints / softphones are registered",
      "Initiate or receive call using the required scenario",
      "Verify audio path, signaling, and media parameters"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires fax hardware or fax emulator (HylaFAX) and T.38 stack support",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-security-check-srtp_sdes_or_dtls_media_encryption",
    "group": "pbx-calls-security",
    "module": "pbx",
    "action": "check",
    "description": "Verify SRTP with SDES or DTLS-SRTP is enabled for media encryption on calls",
    "status": "partial",
    "file": "tests/pbx/calls-security.spec.ts",
    "partialNotes": "Encryption config verified via admin portal; confirming live RTP is encrypted requires Wireshark during active call",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Encryption config verified via admin portal; confirming live RTP is encrypted requires Wireshark during active call",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-security-check-acl_ip_whitelisting_and_rate_limiting",
    "group": "pbx-calls-security",
    "module": "pbx",
    "action": "check",
    "description": "Verify ACL IP whitelisting rules and SIP rate limiting are configured and enforced",
    "status": "partial",
    "file": "tests/pbx/calls-security.spec.ts",
    "partialNotes": "ACL/rate-limit config via portal automated; functional enforcement testing requires network-level testing from non-whitelisted IP",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "ACL/rate-limit config via portal automated; functional enforcement testing requires network-level testing from non-whitelisted IP",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-calls-security-check-toll_fraud_prevention_rules_and_alerting",
    "group": "pbx-calls-security",
    "module": "pbx",
    "action": "check",
    "description": "Verify toll fraud prevention rules and alert notifications are configured",
    "status": "automated",
    "file": "tests/pbx/calls-security.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Log in to the admin portal (if required)",
      "Navigate to the relevant settings section",
      "Read current configuration values via UI or API"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [
      "Real RTP/SRTP media path and audio quality verification (human ear or PESQ/MOS tools)",
      "External SIP trunk / PSTN connectivity and DID numbers"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "SIP Endpoints",
        "value": "At least 2 registered SIP clients (deskphone or softphone: Zoiper, MicroSIP, Yealink, etc.)"
      },
      {
        "label": "Network",
        "value": "SIP trunk or local Asterisk/FreeSWITCH simulator for PSTN simulation"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-performance-check-cpu_memory_disk_io_utilization_under_sustained_load",
    "group": "pbx-performance",
    "module": "pbx",
    "action": "check",
    "description": "Verify CPU, memory, and disk I/O remain within limits under sustained call load",
    "status": "manual",
    "file": "tests/pbx/performance.spec.ts",
    "manualReason": "Requires SIPp load generator, server-side performance monitoring, and dedicated test environment",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires SIPp load generator, server-side performance monitoring, and dedicated test environment",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Load Gen",
        "value": "SIPp or custom load generator + monitoring (Prometheus/Grafana recommended)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-performance-check-long_duration_stability_72h_test",
    "group": "pbx-performance",
    "module": "pbx",
    "action": "check",
    "description": "Verify system stability under continuous call load over a 72-hour period",
    "status": "manual",
    "file": "tests/pbx/performance.spec.ts",
    "manualReason": "72-hour test requires dedicated environment, SIPp continuous load, and automated monitoring with alerting",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "72-hour test requires dedicated environment, SIPp continuous load, and automated monitoring with alerting",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Load Gen",
        "value": "SIPp or custom load generator + monitoring (Prometheus/Grafana recommended)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-performance-check-memory_leak_and_resource_cleanup_detection",
    "group": "pbx-performance",
    "module": "pbx",
    "action": "check",
    "description": "Detect memory leaks and verify proper resource cleanup over extended operation",
    "status": "manual",
    "file": "tests/pbx/performance.spec.ts",
    "manualReason": "Requires extended monitoring with active call load and memory profiling tools (Valgrind, heap dumps)",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires extended monitoring with active call load and memory profiling tools (Valgrind, heap dumps)",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Load Gen",
        "value": "SIPp or custom load generator + monitoring (Prometheus/Grafana recommended)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-availability-check-active_passive_or_active_active_failover",
    "group": "pbx-availability",
    "module": "pbx",
    "action": "check",
    "description": "Verify Active-Passive or Active-Active failover transitions correctly on node failure",
    "status": "manual",
    "file": "tests/pbx/availability.spec.ts",
    "manualReason": "Requires HA cluster with 2+ nodes; failover must be triggered by stopping the active node",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires HA cluster with 2+ nodes; failover must be triggered by stopping the active node",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Load Gen",
        "value": "SIPp or custom load generator + monitoring (Prometheus/Grafana recommended)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-availability-check-database_replication_and_sync_integrity",
    "group": "pbx-availability",
    "module": "pbx",
    "action": "check",
    "description": "Verify database replication between HA nodes maintains consistency and acceptable lag",
    "status": "manual",
    "file": "tests/pbx/availability.spec.ts",
    "manualReason": "Requires HA database cluster; verifying replication lag needs direct database access",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires HA database cluster; verifying replication lag needs direct database access",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Load Gen",
        "value": "SIPp or custom load generator + monitoring (Prometheus/Grafana recommended)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-availability-check-automatic_failover_and_call_preservation",
    "group": "pbx-availability",
    "module": "pbx",
    "action": "check",
    "description": "Verify automatic failover preserves active calls (no drops, no audio interruption > 200ms)",
    "status": "manual",
    "file": "tests/pbx/availability.spec.ts",
    "manualReason": "Requires active call sessions during failover and simultaneous call-state monitoring",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires active call sessions during failover and simultaneous call-state monitoring",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Load Gen",
        "value": "SIPp or custom load generator + monitoring (Prometheus/Grafana recommended)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-availability-check-geographic_redundancy_and_geo_distribution",
    "group": "pbx-availability",
    "module": "pbx",
    "action": "check",
    "description": "Verify geo-distributed deployment handles site failover without service interruption",
    "status": "manual",
    "file": "tests/pbx/availability.spec.ts",
    "manualReason": "Requires multi-site infrastructure across geographic locations or WAN simulation",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires multi-site infrastructure across geographic locations or WAN simulation",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Hypervisor-level operations (vCenter, libvirt, vSphere) not reachable from browser automation",
      "Long-running load or HA failover scenarios need dedicated lab infrastructure"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Load Gen",
        "value": "SIPp or custom load generator + monitoring (Prometheus/Grafana recommended)"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-management-check-cli_management",
    "group": "pbx-management",
    "module": "pbx",
    "action": "check",
    "description": "Verify CLI management interface is accessible and key management commands execute correctly",
    "status": "partial",
    "file": "tests/pbx/management.spec.ts",
    "partialNotes": "Web console (if present) verified via Playwright; full CLI coverage requires SSH automation integrated in CI pipeline",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Web console (if present) verified via Playwright; full CLI coverage requires SSH automation integrated in CI pipeline",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-management-check-gui_management",
    "group": "pbx-management",
    "module": "pbx",
    "action": "check",
    "description": "Verify all main admin portal sections load correctly and management actions are functional",
    "status": "automated",
    "file": "tests/pbx/management.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-logs-check-cdr_generation_accuracy_completeness_and_export",
    "group": "pbx-logs",
    "module": "pbx",
    "action": "check",
    "description": "Verify CDR records contain all required fields and can be exported to CSV/PDF",
    "status": "automated",
    "file": "tests/pbx/logs.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-logs-check-real_time_active_call_and_registration_monitoring",
    "group": "pbx-logs",
    "module": "pbx",
    "action": "check",
    "description": "Verify real-time monitoring dashboard shows active calls and SIP registrations",
    "status": "automated",
    "file": "tests/pbx/logs.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-logs-check-detailed_logging_levels_rotation_and_search",
    "group": "pbx-logs",
    "module": "pbx",
    "action": "check",
    "description": "Verify logging levels, log rotation, and log search/filter functionality",
    "status": "automated",
    "file": "tests/pbx/logs.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-logs-check-threshold_alarms_cpu_channels_disk_memory",
    "group": "pbx-logs",
    "module": "pbx",
    "action": "check",
    "description": "Verify threshold-based alarms for CPU, active channels, disk, and memory usage",
    "status": "automated",
    "file": "tests/pbx/logs.spec.ts",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Full end-to-end execution via Playwright against the admin portal UI",
      "Navigation, form interaction, and assertions are scriptable"
    ],
    "notYet": [],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-logs-check-call_quality_metrics_mos_jitter_loss_per_call",
    "group": "pbx-logs",
    "module": "pbx",
    "action": "check",
    "description": "Verify per-call quality metrics (MOS score, jitter, packet loss) are collected and displayed",
    "status": "partial",
    "file": "tests/pbx/logs.spec.ts",
    "partialNotes": "QoS metrics display UI automated; actual metric generation requires active call sessions with network impairment",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "QoS metrics display UI automated; actual metric generation requires active call sessions with network impairment",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-regression-check-core_call_features_after_any_code_change",
    "group": "pbx-regression",
    "module": "pbx",
    "action": "check",
    "description": "Run regression checks on core features after any code change to detect regressions",
    "status": "partial",
    "file": "tests/pbx/regression.spec.ts",
    "partialNotes": "Admin portal regression automated; call-flow regression (inbound/outbound/hold/transfer) requires SIP endpoints",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Admin portal regression automated; call-flow regression (inbound/outbound/hold/transfer) requires SIP endpoints",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-regression-check-previously_fixed_bugs_and_edge_cases_reverification",
    "group": "pbx-regression",
    "module": "pbx",
    "action": "check",
    "description": "Verify all previously fixed bugs and known edge cases have not regressed",
    "status": "partial",
    "file": "tests/pbx/regression.spec.ts",
    "partialNotes": "UI bug regressions automated; telephony-layer bug regressions require SIP client or SSH verification",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "UI bug regressions automated; telephony-layer bug regressions require SIP client or SSH verification",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-regression-check-performance_baselines_comparison_against_previous_version",
    "group": "pbx-regression",
    "module": "pbx",
    "action": "check",
    "description": "Compare key performance metrics against baselines from the previous version",
    "status": "manual",
    "file": "tests/pbx/regression.spec.ts",
    "manualReason": "Requires SIPp load tests and statistical comparison of results against previous version baseline",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Most UI-driven configuration and verification steps via Playwright"
    ],
    "notYet": [
      "Requires SIPp load tests and statistical comparison of results against previous version baseline",
      "Requires external SIP endpoints or physical phones for media/audio validation"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  },
  {
    "id": "pbx-regression-check-security_hardening_and_vulnerability_scan_baseline",
    "group": "pbx-regression",
    "module": "pbx",
    "action": "check",
    "description": "Verify security hardening settings and compare vulnerability scan baseline against previous version",
    "status": "partial",
    "file": "tests/pbx/regression.spec.ts",
    "partialNotes": "Security config checks via portal automated; full CVE scan baseline requires Trivy/OpenVAS in CI pipeline",
    "steps": [
      "Open admin portal or repository URL in browser context",
      "Execute the main verification or configuration action described in the test",
      "Capture evidence (screenshot, log, API response)",
      "Assert expected outcome"
    ],
    "automatable": [
      "Portal UI configuration and verification steps (already partially automated)",
      "Data extraction and reporting of current settings"
    ],
    "notYet": [
      "Security config checks via portal automated; full CVE scan baseline requires Trivy/OpenVAS in CI pipeline",
      "Requires external SIP endpoints or physical phones for media/audio validation",
      "Full CVE / dependency scanning (Trivy, Grype, OWASP Dependency-Check) in CI pipeline"
    ],
    "dependencies": [
      {
        "label": "Admin Portal",
        "value": "https://pbx.local:4443 (configure via $BASE_URL)"
      },
      {
        "label": "Repository URL",
        "value": "${BASE_URL}/downloads or $REPO_URL"
      },
      {
        "label": "Protocol",
        "value": "HTTPS + SIP (UDP/TCP/TLS) + RTP/SRTP"
      },
      {
        "label": "Credentials",
        "value": "Admin user with sufficient privileges (portal + SSH where needed)"
      },
      {
        "label": "Test Data",
        "value": "Clean test tenant or lab PBX instance (recommended isolated environment)"
      }
    ]
  }
]