This has been a big change, I'm now 3 days and a 3000 line diff in and I finally got all the remote configuration settings converted to the new up-front parsing.

Seems like quite a lot of work, since the only user-visible improvement is these error messages:

# git annex initremote demo type=directory directory=../foo encryption=none foo=bar
initremote demo
git-annex: Unexpected fields: foo

# git annex initremote demo type=directory directory=../foo encryption=none exporttree=true
initremote demo
git-annex: Bad value for exporttree (expected yes or no)

But this involved paying down technical debt in a big code base, so of course it was expensive.

Anyway, it should now be relatively easy to implement git annex initremote --list-params-for=S3