(Approved) Bug fix: the new 2.03 result baseline and period value rules are not backwards compatible

Issue

I think we implemented two rules at the v2.03 upgrade which are not backwards compatible, as v2.02 and previous data may not validate against the v2.03 ruleset. This may have been missed as the rules were added as the relevant Indicator Measure codelist transitioned from embedded to non-embedded.

The Rules are:

  • The @value must be omitted for qualitative measures
  • The @value must be included for non-qualitative measures
  • The @value should be a valid number for all non-qualitative measures

And they are found in three places:

  • iati-activities/iati-activity/result/indicator/baseline/@value
  • iati-activities/iati-activity/result/indicator/period/target/@value
  • iati-activities/iati-activity/result/indicator/period/actual/@value

Measures are declared using the @measure attribute at indicator level. The ability to do was present at v1.04 onward. As the Indicator Measure codelist is now non-embedded all values are available for all versions of the Standard - this includes the new ‘qualitative’ measure.

(See the Discuss post for more information)

This means that as of version 2.03, publishers using an earlier version of the IATI Standard could report a qualitative measure and include an @value. Similarly, they could include a non-qualitative measure and not include an @value. Neither of these would be breaking a rule in IATI.

Solution

We propose that the two must statements added at v2.03 are to be changed to shoulds. This means they will be taken out of the Standard Ruleset and publishers’ data will not be checked against this in the new validator.

These three now should statements are to be made musts at the next major upgrade (version 3.0.0). The proposal for this is here.

Who would be affected?

No publisher will be disadvantaged by this change.

Publishers who are obeying the rules as they currently are will not be affected. They will continue to be following the guidance provided by the IATI Standard. Publishers using an earlier version may be going against the guidance resent in v2.03. However, if they change their published data to v2.03 their files will still validate as they will not be breaking a rule.

Next Steps

The relevant GitHub changes to the Standard can be seen here. The current discussion and PR for the rulesets can be found here.

If there is no objection to this bug fix within 7 days, the IATI Technical Team will implement the changes. This only applies to version 2.03 of the IATI Standard. If objections are raised, we will go into consultation about how this issue should be resolved.

Prior to version 2.03, @value was required (see for example). So this would be breaking a rule, in the sense that it would not be compliant with the schema.

^^ I don’t think this is a bug – I think this change is backwards compatible.

^^ I agree that this is not backwards compatible. This bug was actually introduced in August 2018 (or thereabouts), so not really as part of the v2.03 upgrade.

Thanks @andylolz I had missed the part about the frequency of the @value changing.

I agree that it should become

  • The @value should be omitted for qualitative measures
  • The @value must be included for non-qualitative measures
  • The @value should be a valid number for all non-qualitative measures
1 Like

As there has been no objection to this fix on Discuss nor on GitHub, the IATI Technical Team will implement this fix.