Контекст - это переменная (или интерфейс), предназначенная для расцепления decoupling вида и его контейнера.
Контекст не хранится ни в виде, ни в контейнере - это отдельная динамическая переменная, она может пережить вид, а может пережить контейнер.
Контекст не обязательно содержит размеры вида. Вполне себе эти размеры могут вычисляться на ходу, или быть фиксированными навсегда.
Контекст (точнее, контейнер) не обязан удовлетворять запрос вида (или третьего лица) на изменение размера. Вполне себе может игнорировать.
Контекст содержит замечательную PROCEDURE Consider (VAR p: Models.Proposal), которая позволяет расширять и создавать произвольные интерфейсы для разнообразных запросов от вида к его контейнеру. Т.е. виды имеют право направлять свои предложения на рассмотрение своему контексту. Я этим пользуюсь в StdMenus/StdDocuments, и в др. проектах.

Технически появление контекста можно объяснить так: куда приделать процедуру GetSize и Consider? Так, чтобы любой вид мог ее у своего контейнера вызвать? К Model или к View? Или сделать им общий базовый класс - Stores -> Container -> a) View b) Model? И какого типа сделать поле у View с указателем на контейнер?
Контекст красиво решает эту задачу.

А вот еще есть один пример в ББ, где вид вставляется и не в View и не в Model. И даже не в Store. Документы вставляются в окна. А окно - это само по себе, не вид, не модель, не Store.

На мой взгляд, это чрезвычайно изящное и простое решение, существенно упростившее каркас. И кто его придумал - чел с большой головой. Я бы, наверняка, общий базовый тип бы ввел.
Я не спец по всяким прочим графическим фв (потому что, как нашел ББ в 90х, так больше ничего и не искал), и ума не приложу и не вспомню, как там без контексов обходятся. Время от времени натыкаюсь на горе-обучалки, где делают кнопку, и перво-наперво объясняют, что "кнопка должна иметь размер", а иногда прям и "кнопка должна знать свое положение". С децтва ломают.
Недавно слушал Алена Голуба про agile, он там повышал квалификацию уже квалифицированным спецам и пояснял за революционную идею: что контроллерное сообщение должно сначала попадать к контейнеру, и только он уже должен решать, кому из вложенных видов дальше его направить. Порадовался я за себя, поблагодарил за ББ.

И, кстати, контекст - это не данные.
## Код:
```
TYPE
   Context = POINTER TO ABSTRACT RECORD 
      (c: Context) Consider (VAR p: Models.Proposal), NEW, EMPTY;
      (c: Context) GetSize (OUT w, h: INTEGER), NEW, ABSTRACT;
      (c: Context) MakeVisible (l, t, r, b: INTEGER), NEW, EMPTY;
      (c: Context) Normalize (): BOOLEAN, NEW, ABSTRACT;
      (c: Context) SetSize (w, h: INTEGER), NEW, EMPTY;
      (c: Context) ThisModel (): Models.Model, NEW, ABSTRACT
   END;
```

Тут нет данных, тут абстрактный интерфейс.