Eu não acho que a documentação do haproxy charm esteja correta. Eu escrevi um pequeno script para modelar o yaml ingerido pelo haproxy. Seu site-relacionamento-gancho deve ficar assim:
#!/bin/bash
set -eux
host=$(unit-get private-address)
port=80
relation-set "services=[{'server_options': ['maxconn 100'], 'service_name': 'demo', 'servers': [['mindproject', '${host}', '${port}', '']], 'service_options': ['mode http', 'balance leastconn', 'option httpchk GET / HTTP/1.0']}]"
O principal problema com o código que você postou é que você está passando serviços como um dict quando ele está esperando um array. Além disso, a seção de servidores requer quatro parâmetros, mas o último parâmetro, que está documentado no readme como 'opção httpchk GET / HTTP / 1.0', precisa estar na sub-rotina service_options.
Espero que isso ajude!