diff --git a/docs/web-grammars-html-css-framing.md b/docs/web-grammars-html-css-framing.md
index 8378e56..732f99b 100644
--- a/docs/web-grammars-html-css-framing.md
+++ b/docs/web-grammars-html-css-framing.md
@@ -1,11 +1,11 @@
# Web grammars (HTML + CSS) + HTML injections — framing
-**Revision 3 — pre-implementation. Ground truth: canonical `main` @
-`4daa1b8` (after LaTeX #144 and inline-math-docs #145), 2026-07-23. Status:
-framing only; no implementation.** Rev 2 settled the capture set, injection
-scope, and LSP claim (round 1); rev 3 corrects the `#match?` predicate analysis
-(tree-sitter evaluates it natively) and refreshes the folding footprint to the
-current branch (round 2). See §0.1.
+**Revision 4 — implemented on branch `web-grammars` (PR #146). Ground truth:
+canonical `main` @ `4daa1b8` (after LaTeX #144 and inline-math-docs #145),
+2026-07-23.** Rev 2 settled the capture set, injection scope, and LSP claim
+(round 1); rev 3 corrected the `#match?` predicate analysis (round 2); rev 4
+names the intended `@attribute` retro-paint on the already-bundled rust/lua/yaml
+grammars — verified on a Rust buffer and pinned by a test (round 3). See §0.1.
## 0.1 Revision history
@@ -44,6 +44,17 @@ current branch (round 2). See §0.1.
`overlay.rs`/`daemon.rs`/`syntax.rs`. §0 now lists the real set; the
zero-overlap conclusion is unchanged (stronger, if anything).
+### Round 3 (rev 3 → rev 4)
+
+- **R3-1 (medium).** Q#WEB4 verified which captures pmacs *lacks* but not the
+ reverse: which already-bundled grammars *use* `@attribute`. Three do — rust
+ (`attribute_item`), lua (``), yaml (directives) — so the new
+ `("attribute", fg(3))` entry retro-paints their previously-unpainted spans
+ yellow. Named in Q#WEB4 as intended (verified on a Rust buffer: uniform
+ yellow, an improvement over unpainted), and pinned by
+ `rust_attribute_repaints_via_shared_attribute_capture`. `tag` is unaffected
+ (HTML/CSS only).
+
Add tree-sitter **HTML** and **CSS** grammars so `.html`/`.htm` and `.css`
buffers get lexical highlighting, and — the north-star payoff — light up
HTML's embedded-language **injections**: `