Cajas de nivel dentro y fuera de bloque dentro de la caja de contenedor de bloques

En la especificación CSS en el apartado 9.2.1 dijo:

A excepción de los cuadros de tabla, que se describen en un capítulo posterior y los elementos reemplazados, un cuadro de nivel de bloque también es un cuadro de contenedor de bloques. Un cuadro de contenedor de bloques contiene solo cuadros de nivel de bloque o establece un contexto de formato en línea y, por lo tanto, contiene solo cuadros de nivel en línea. Considere el marcado:

Anonymous text
Some text Another some text
Another anonymous text

y estilos:

 div#d{ width: 300px; height: 300px; background: aqua; } 

En mi caso, div#d contiene cuadros de nivel de bloque y en línea. Pero en el seg. 9.2.1.1 dijo que

si una caja de contenedor de bloques (como la generada para el DIV anterior) tiene un cuadro de nivel de bloque dentro (como el P anterior), entonces lo forzamos a tener solo cuadros de nivel de bloque dentro de él.

P: ¿Por qué podemos poner dentro del elemento de nivel de bloque (por ejemplo, div ) elementos en línea y bloque y se mostrarán como elementos en línea y bloque, pero en la especificación dicho cuadro de contenedor de bloques contiene solo cuadros a nivel de bloque o establece una línea contexto de formato y, por lo tanto, contiene solo cuadros de nivel en línea.

Estoy confundido. ¿Puedes disipar mis dudas?

La especificación continúa diciendo:

Los recuadros de línea antes del descanso y después del descanso están encerrados en recuadros de bloque anónimos, y el recuadro de nivel de bloque se convierte en un hermano de esos recuadros anónimos

Por lo tanto, los elementos en línea están envueltos en “bloques anónimos” (generados por el motor CSS en el navegador e invisibles para su inspector DOM), que son de nivel de bloque, y todos los elementos secundarios del contenedor son por lo tanto de nivel de bloque, en lugar de mezcla de elementos en bloque y en línea.