Converting a YAML file to huddle and back again to YAML will not work. This is because the implementation of huddle2yaml does not pay attention to the internal types that are introduced by the YAML parser to support dictionaries and lists. The following piece of code solves it:

    proc ::yaml::_imp_huddle2yaml {data {offset ""}} {
        set nextoff "$offset[string repeat { } $yaml::_dumpIndent]"
        switch -glob -- [huddle type $data] {
            "int*" -
            "str*" {
                set data [huddle get_stripped $data]
                return [_dumpScalar $data $offset]
            }
            "sequence" -
            "list" {
                set inner {}
                set len [huddle llength $data]
                for {set i 0} {$i < $len} {incr i} {
                    set sub [huddle get $data $i]
                    set tsub [huddle type $sub]
                    set sep [expr {[string match "str*" $tsub] || [string match "int*" $tsub] ? " " : "\n"}]
                    lappend inner [join [list $offset - $sep [_imp_huddle2yaml $sub $nextoff]] ""]
                }
                return [join $inner "\n"]
            }
            "mapping" -
            "dict" {
                set inner {}
                foreach {key} [huddle keys $data] {
                    set sub [huddle get $data $key]
                    set tsub [huddle type $sub]
                    set sep [expr {[string match "str*" $tsub] || [string match "int*" $tsub] ? " " : "\n"}]
                    lappend inner [join [list $offset $key: $sep [_imp_huddle2yaml $sub $nextoff]] ""]
                }
                return [join $inner "\n"]
            }
            default {
                return $data
            }
        }
    }