| Discovery | Routes, parameters and roles enumerated from the running application, including client-side code read for endpoints the interface never links to. | What actually answers: live hosts, the services on them, and the versions those services advertise — worked out from responses rather than from the asset list. | Languages, frameworks and entry points in the tree, and which of them take input from outside the application. |
| Discovery is where the three diverge furthest. One starts from a URL, one from an address range and one from a checkout, and each produces a different kind of map for planning to work from. |
| Planning | A mindmap of the application, and test cases generated from it with one credential per role in hand. | Per-service test sets, ordered by what the exposed surface actually offers rather than by a fixed checklist. | The sinks worth reaching, and the candidate paths that might reach them from an entry point. |
| Scanning | The generated cases worked against the running application; behaviour that suggests a defect becomes a candidate. | Service and configuration checks across the hosts that responded, producing candidates per host and per port. | Data flow traced from entry point to sink across the tree. Each trace is a candidate, and none of them is a finding yet. |
| Exploitation | The candidate is exploited against the live application, with the request and the response captured as they happened. | Entry is proved against the exposed service. Movement past the host it landed on is an approval gate rather than a default. | Reachability is proved: the file, the line, and the path that reaches that line. A path nothing can reach is dropped. |
| Reporting | Findings against the application, each with its exploit artefact, a CVSS v4.0 vector and the CWE. | Findings against the host and the service, with the proof of entry and the same severity and CWE record. | The file, the line, the reaching path and the change that closes it, written against the idiom the repository already uses. |
| QA | That every finding reproduces against the application as it was scoped. | That each proof of entry names the host, the service and the port it was obtained on. | That each finding names a file and a line that exist in the commit that was reviewed. |
| QA is the phase that varies least. In every class the gate runs on the finished report before it reaches you, and a finding that does not hold goes back to the phase that produced it. |