When I have moved labels in the past (using the Move Label... button) QGIS has automatically edited the layer's attribute table by adding two fields, auxiliary_storage_labeling_positionx and auxiliary_storage_labeling_positiony. The layer thus carried those two fields (with the position values) into the future, even when used in other projects.
However, I recently came upon a situation where QGIS did not modify the layer's attribute table, and instead stored the two fields in the project (presumably in the .qgd file).
This occurs with both 3.22.11 and 3.26.3, where I have a Geopackage layer containing a single point. When I move the point's label, I am asked, as usual, to supply the primary key (as always, I select the fid). However, no change is made to the layer's attribute table. Instead, the label styling window (below) shows the fields as data-defined, and stored in the project.
Furthermore, the Layer Properties shows the two position fields, but highlighted in green (I presume the green color indicates project storage, rather than attribute table):
Based on this earlier question, I now know how to convert the project location to the attribute table.
Furthermore, I can see advantages as well as disadvantages to storing this information in either the attribute table or the project.
But why is QGIS now defaulting the label position storage location to the project instead of the attribute table, and how can I get it to default to the attribute table?