While https://gerrit.wikimedia.org/r/#/c/170576/ addresses this issue in ChangeOpClaim, we have use of $entity->getClaims() in other ChangeOp classes:
./ChangeOpClaimRemove.php: $claims = new Claims( $entity->getClaims() );
./ChangeOpMainSnak.php: $claims = new Claims( $entity->getClaims() );
./ChangeOpQualifier.php: $claims = new Claims( $entity->getClaims() );
./ChangeOpQualifierRemove.php: $claims = new Claims( $entity->getClaims() );
./ChangeOpReference.php: $claims = new Claims( $entity->getClaims() );
./ChangeOpReferenceRemove.php: $claims = new Claims( $entity->getClaims() );
./ChangeOpsMerge.php: foreach ( $this->fromItem->getClaims() as $fromClaim ) {
./ChangeOpsMerge.php: foreach ( $this->toItem->getClaims() as $claim ) {
./ChangeOpStatementRank.php: $claims = new Claims( $entity->getClaims() );
For an Item, that returns claims. For Property, getClaims() is not implemented so uses Entity::getClaims which returns an empty array!
This is going to be problematic for statements on properties, as well as perhaps other issues in ChangeOps. (and simply the confusion about Claims vs. Statements, since the api modules are called things like 'wbsetclaim')
Version: unspecified
Severity: major
Whiteboard: u=dev c=backend p=0