filtering – Issues Applying Selections to Hierarchical Datasets

I have a large dataset in the format below. I’m able to graph them as polygons easily enough, but am having trouble doing fine selections of the coordinates in Dataset format for further checks and processing. (I have other functions downstream that do geographic intersections that are being thrown off.) Some days I feel like I’m finally starting to understand Mathematica dataset operators, and other days I’m just confused.

ds = {{<|lat -> 49.275, lng -> -123.03|>, <|lat -> 49.2753, lng -> -123.03|>, <|lat -> 49.2753, lng -> -123.03|>, <|lat -> 49.275, lng -> -123.03|>, <|lat -> 49.275, lng -> -123.03|>},
{<|lat -> 49.275, lng -> -123.029|>, <|lat -> 49.2753, lng -> -123.029|>, <|lat -> 49.2753, lng -> -123.029|>, <|lat -> 49.275, lng -> -123.029|>, <|lat -> 49.275, lng -> -123.029|>}, 
{<|lat -> 49.275, lng -> -123.029|>, <|lat -> 49.275, lng -> -123.029|>, <|lat -> 49.2753, lng -> -123.029|>, <|lat -> 49.2753, lng -> -123.029|>, <|lat -> 49.275, lng -> -123.029|>}}
// Dataset

I have a simple check that I wanted to break out because I will probably add complexity later. I thought applying it to the dataset would be straightforward but nothing is being returned from the several configurations I’ve tried. I thought I was following the “Select Elements from Dataset” doc closely, but I’m still not connecting what’s written there to the behaviour I’m seeing in this example. I assumed the operators would take the little mini-dataset polygon as input but I assume something else is happening instead.

testcoords(shape_) := shape(Min, "lat") > 40 

testcoords(ds((2))). (* true *)

ds(Select(testcoords)) 
(* returns empty Dataset *)

ds(All, Select(testcoords)) 
(* returns {} ... *)

How can I configure a selection operator to check each polygon?