`.
+
+### Timing
+
+In terms of timing, any attributes added to or removed from the root element should follow the timing applied
+to elements inside of the template:
+
+```html
+
+
+
+
+```
+
+In other words, in the above example, if `clazz` changes, then the root element's `class` attribute should be changed
+in the same tick as when the ``'s `class` changes.
+
+The above also applies to the timing of when event listeners are attached using `on*`.
+
+No guarantees are made about the ordering of changes made to `` compared to the ordering of changes made to elements inside of the template. I.e. there is no guarantee that changes to the root occur before changes to an in-template element, or vice-versa.
+
+The ordering of changes made to the element itself (i.e. between the categories of `class`, other attributes, and event listeners) is also not guaranteed. (Nor is it guaranteed for in-template elements in any other RFC.)
+
+### Precedence
+
+Attributes and event listeners added using `` may conflict with those added by the parent component:
+
+```html
+
+
+
+
+
+```
+
+```html
+
+
+
+
+
+```
+
+In cases of conflict, the following rules apply:
+
+- `lwc:spread` precedence applies [as normal](https://github.com/salesforce/lwc-rfcs/pull/52) within the `` element itself.
+- For event listeners such as `onclick`, both event listeners are attached.
+- For the `class` attribute, strings are concatenated with a single whitespace (`" "`) character (e.g. `"foo quux"` in the above example). No attempt is made to deduplicate duplicate strings.
+- For all other attributes, the parent overrides the child's attribute (e.g. `data-foo` would be `"bar"` in the above example).
+
+The reason for this is to allow a component to set defaults for its root's behavior, while still allowing consumers to override those defaults.
+
+Note that, in case of conflict with programmatically-modified attributes or event listeners (e.g. `this.className = 'foo'` in a `renderedCallback`), the framework makes no attempt to merge the programmatically-added values with the framework-added values (similar to how classes in [light DOM scoped styles](https://rfcs.lwc.dev/rfcs/lwc/0116-light-dom-scoped-styles) work today). Developers should be encouraged to rely on the framework rather than doing their own manual manipulations.
+
+## Drawbacks
+
+Implementing this feature does require additional complexity, and moves us further away from standard custom element syntax.
+
+## Alternatives
+
+### Calling it "host" instead of something else ("root," "toplevel," etc.)
+
+Other frameworks call this feature "host." And there is some precedent in LWC, since even [light DOM scoped styles](https://github.com/salesforce/lwc-rfcs/pull/50) allow for styling the root tag of a light DOM component using `:host` in `*.scoped.css`.
+
+"Root" may also sound like it refers to the [shadow root](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot), so it could be even more confusing.
+
+For non-shadow components, it is a bit odd to call it "host," but this seems to be the least confusing name overall.
+
+### Placing attributes on the root `` tag.
+
+Historically in LWC, `` is used to designate a reusable tree of HTML, e.g. in `for:each` and [scoped slots](https://github.com/salesforce/lwc-rfcs/pull/63). The root `` does not actually refer to the root/host element.
+
+Also, because `` supports attributes and directives that generally would apply to normal `HTMLElement`s, it makes
+sense to represent it as a pseudo-normal HTML element.
+
+### Supporting `lwc:ref`
+
+Supporting `lwc:ref` is technically feasible, but doesn't make much sense, as there are already alternatives. In shadow DOM, developers can use `this.template.host`, and in light DOM, they can use `this`.
+
+Also, the whole point of this feature is to avoid needing programmatic access to the root/host element. So adding `lwc:ref` would be counter-productive.
+
+## Adoption strategy
+
+This proposal can be adopted as a net-new feature and does not have backwards-compatibility implications. `lwc:host` is
+not a pre-existing built-in HTML element, and it's extremely unlikely that anyone is creating runtime elements with this name.
+
+It may be possible to write codemods that look for simple usages of e.g. `this.template.host.classList.add('foo')`
+and replace it with ``. A linting rule could also be valuable here.
+
+# How we teach this
+
+This feature is LWC-specific (not based on an existing web standard) and will have to be taught as such. The existence of
+similar mechanisms in other frameworks (e.g. Stencil and Angular) does provide some reference points that help with teaching.
+
+However, the fact that, for the most part, we can just say "`` behaves like a normal element" makes it easier to teach this. Developers can reuse their existing knowledge to understand how it works.
+
+# Unresolved questions
+
+None at this time.