What a property describes, for the FB-only fast path.
This is the corollary of invariant 4 the C++ can only state in prose:
property_hash isolates content from placement — every placement or
format property moves the hash; FB_ID and IN_FENCE_FD do not. A
property misclassified as content would let a real change skip the test.
Here it is data, consumed by PropTag::class’s exhaustive match. A new
variant added without a classification does not compile, so the failure the
C++ warns about — a property silently treated as content — cannot reach a
running system.
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Any change here must move the hash, forcing a re-test. Getting this
wrong in the permissive direction — calling a placement property
content — is what would let a real geometry change skip validation.