I think the issue is coming up because of the relationship between your widgets and categories table.
When there are many records related, it is going to choose only the first record from which to return the value. You have this because you have the two constants equal to each other. In essence, a many-to-many relationship (I believe, without looking at the specifics of the constant calc)
The dropdown list should not be based on a relationship (related values only), but rather the table (all values from that table). Inside that field where the dropdown is located, store the value of the category ID that you get from choosing a category. Then use that value to fill the join table record.
So you can get rid of the relationship between widgets and categories and just use the dropdown to show values from that table.
What about the field “that utilizes the value list of categories”? (Ideally a global field …)
Since you're using a value list to fill it with the desired category/ID, you can simply use the value stored there for the new join table record; it is the selection.
By looking into Categories::_pk_CatID or Categories_List::_pk_CatID, you will either always get a 1 (Categories_list), or a result that depends on which related join table records you have (Categories); either way, it's bound to be incorrect, since the the selection field has no impact on these relationships.
For some reason I thought I needed a relationship for the list but low and behold it works well without. Thanks for the clarification