When opendmarc is compiled with WITH_SPF, the Milter HELO phase should not be ignored, otherwise helo_domain is never defined.
Proposed change in opendmarc/opendmarc.c mlfi_negotiate:
unsigned long protosteps = ( #if !WITH_SPF SMFIP_NOHELO | #endif /* !WITH_SPF */ SMFIP_NOUNKNOWN | SMFIP_NOBODY | SMFIP_NODATA | SMFIP_SKIP );
(the #if/#endif) was added to surround SMFIP_NOHELO.
Good catch. This has been fixed and should be in the next release.
It doesn't look like this got into 1.3.1.
The patch was applied after 1.3.1 was released.
Fixed in 1.3.2.