I am building a pcf dataset control specifically targeting canvas app deployment. The control needs to be flexible to lots of different views, so it needs to be able to handle any data types being thrown at it. The issue is that when I actually go to test this in a canvas app, every single column comes through as SingleLine.Text, regardless of what was actually inserted:

Take a look at the debugger screenshot above. We have a few random columns; some are optionsets (statuscode) others are DateOnly (pcx_due) but everyone of them shows up as SingleLine.Text, both in the context.parameters.dataset.columns object and in the dataset.records[x] object.
OK, so you might think I am crazy here. Maybe I just didn't pay attention to my deployment and grabbed bad data - not so:

The Canvas App itself recognizes the data types we're looking at, and lists them as DateTime and "Complex" but for some reason when the data hits the PCF, everything is a String.
OK, so at this point I thought, "maybe this is a manifest thing. I am not specifying the columns in the dataset there to keep it open for whatever view comes in, but maybe I actually need to, so I added a row for pcx_due:
<data-set name="dataSet" display-name-key="Dataset_Display_Key">
<property-set name="pcx_due" display-name-key="Due Date" description-key="Due Date" of-type="DateAndTime.DateOnly" required="true"/>
</data-set>
But this had zero impact whatsoever; the datatypes are unchanged and as far as I can tell, adding this to the manifest resulted in no change to the pcf execution context whatsoever.
In most cases, I don't really care. Optionsets, for example I only want to work with labels anyway so the String representation is fine by me. but the Date one is really a headache. Because I am only getting the integer representation of the date and the object is called a String regardless of its reality, it isn't really possible for me to tell the difference between a date and an integer, so I don't know how to render the value in UI.
I assume I just skipped something in the manifest or canvas app setup, but I just don't see it. Can someone point to what I missed here?