From 10243113dc57221d52ddaf830753e261f8a6cc26 Mon Sep 17 00:00:00 2001 From: giles Date: Wed, 1 Jul 2026 13:56:30 +0000 Subject: [PATCH] =?UTF-8?q?host:=20Part=20A=20=E2=80=94=20type-block=20GRA?= =?UTF-8?q?MMAR=20(a=20Composition=20field=20declares=20which=20blocks=20i?= =?UTF-8?q?t=20permits)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The type now GOVERNS the composition, not just declares the slot. A Composition field carries its grammar: {:name "body" :type "Composition" :blocks (…card types…) :allow ("cond" "each")}. :blocks absent -> any card subtype (back-compat); :allow absent -> both control blocks. - host/blog--{field-decl, allowed-blocks, allows-control?, block-allowed?, comp-violations}. - The editor PALETTE is the grammar: one