final case class SetAttr(path: List[Int], expect: String, name: String, value: String)
Sets one attribute. value is the raw text (the DOM's setAttribute does not parse entities); a bare boolean attribute travels as the empty string, because the DOM cannot tell disabled from disabled="" and the differ does not pretend to.