For the query
FROM T1 org
CROSS APPLY (SELECT TOP (50) PERCENT *
WHERE OrganizationID = org.OrganizationID) x;
the results differ dependant upon whether the plan has a table spool or an index spool.
The table T2 has 4 rows matching OrganizationID = 123 and 100 matching OrganizationID = 456
When the execution plan shows an Index spool the results have 4 rows for OrganizationID = 123 and 52 matching OrganizationID = 456 indicating that it is doing `TOP (0.5 * total row count)`
When the execution plan shows a Table spool the results have 2 rows for OrganizationID = 123 and 50 matching OrganizationID = 456 so seems to be doing `TOP (0.5 * filtered row count)`
The second behaviour is the one that seems correct to me.