Why does a gutter of 1fr break this grid layout?

While I don’t know the answer to the question, I can somewhat simplify your attempt at that specific layout.

Unsurprisingly, I believe this is bound to be a single-page layout:

#set page(flipped: true, margin: 0.5cm)
#set par(justify: true)
#set text(1.3em)

#let announcement(ann) = block(above: 1fr, ann)

#let n-day = {
  let day = datetime.today().day()
  let n-days = ("st", "nd", "rd").map(it => super(it))
  str(day) + if calc.rem(day, 10) - 1 not in (0, 1, 2) { return }
  else { n-days.at(calc.rem(day, 10) - 1) } + sym.space
}

#grid(
  rows: (3em, 1fr),
  columns: (2fr, 4fr, 4fr),
  column-gutter: 0.5cm,
  // stroke: black,
  inset: 1em,
  grid.cell(rowspan: 2)[ // Left
    #set align(center)
    #circle(width: 100%)
    #set align(bottom)
    #rotate(
      reflow: true,
      270deg,
      text(2em, lorem(5))
    )
  ],
  grid.cell(
    colspan: 2,
    text(2em, n-day + datetime.today().display("[month repr:long], [year]")),
  ),
  [ // Middle
    = Meeting Roles
    #lorem(10)
    #announcement(lorem(15))
    #announcement(lorem(30))
    #announcement(lorem(20))
    #announcement(lorem(40))
  ],
  [ // Right
    = Meeting Agenda
    #lorem(100)
  ],
)
Output


The question reminds me of these posts: