One other thing I see discrepancy with is missing NodeValueSetter in NodeTemplatePart. I get your reasoning - it also seems a bit faster to not have setter and call splitText in collecting parts instead of initial replacing with collected parts, but I wonder if nodePart.replacementNodes can be useful for processor implementors - it seems to be missing now.
// NodeTemplatePart
++ get replacementNodes() {
++ return this.#parts
++ }
Originally posted by @dy in #38 (comment)