Лента/TalkLedger/№ 12

Статус — это не поле, а состояние действия

У решения появляется признак: принято, отменено, утратило актуальность.

Статус почти всегда моделируют как поле.

У решения появляется признак:
принято, отменено, утратило актуальность.

Эта модель выглядит естественной.
И именно поэтому она опасна.

Она скрывает логическую ошибку.

Ошибка начинается здесь

Когда решение фиксируют как факт выбора, возникает простой вопрос:

действует ли оно сейчас?

Если у системы нет модели действия, появляется поле.
Поле начинает отвечать за всё сразу:

  • время;
  • применимость;
  • конфликт;
  • прекращение.

Это не инженерное решение.
Это заглушка.

Решение — факт. И на этом уровне статус невозможен

Решение — это факт выбора.

Факт не бывает:

  • активным;
  • неактивным;
  • устаревшим;
  • конфликтным.

Факт либо был, либо нет.

Если к факту добавляют статус,
меняют не модель —
меняют смысл слова «факт».

Здесь обычно делают вид, что всё в порядке

Говорят:

«Ну это просто удобное поле»

Нет.

В этот момент модель уже сломана.
Просто это ещё не видно.

Единственное место, где статус имеет смысл

Решение может воздействовать на систему.
А может — не воздействовать.

Оно может:

  • начать действовать позже;
  • действовать ограниченно;
  • перестать действовать вовсе.

Это не свойства решения.
Это свойства его действия.

Статус не описывает объект.
Он описывает состояние процесса.

Если статус — поле решения, система ничего не понимает

Если статус принадлежит решению, система:

  • не знает, когда действие прекратилось;
  • не знает, почему оно больше не применяется;
  • не различает конфликт и отмену;
  • переписывает прошлое при каждом изменении.

Это не управление.
Это журнал правок без смысла.

Активность и неактуальность — не характеристики выбора

Активность означает одно:
действие применяется сейчас.

Неактуальность означает другое:
действие не применяется при текущих условиях.

Факт выбора при этом не меняется.
Никогда.

Если меняется «решение» —
значит, его никогда не существовало как факт.

Конфликт — не дефект решения

Конфликт возникает не внутри решения.

Он возникает между действиями.

Решения могут быть:

  • корректными;
  • обоснованными;
  • логичными в момент принятия.

И всё равно их действия несовместимы.

Фиксация конфликта —
это не принятие нового решения.

Это регистрация состояния системы.

Контекст не спрашивает разрешения

Контекст меняется сам.

Он не принадлежит решению.
Он не обязан быть стабильным.

Изменение контекста может остановить действие решения:

  • без отмены;
  • без редактирования;
  • без признания ошибки.

Прошлое не переписывается.
Меняется применимость.

Почему статус всё-таки обязателен

Статус действительно необходим.

Если невозможно определить,
оказывает ли решение воздействие на систему сейчас,
оно не может быть использовано как элемент управления.

Но это означает не то, что статус — поле решения.

Это означает, что
у действия решения должно существовать определимое состояние.

Без этого решение не существует в системе координат проекта
не как запись,
а как управляющий элемент.

Единственная непротиворечивая модель

Других вариантов нет.

  • решение — факт выбора;
  • действие решения — процесс во времени;
  • статус — состояние действия;
  • конфликт — состояние системы;
  • контекст — независимая ось изменений.

Если статус хранится в решении —
модель противоречива.

Формальное следствие

Один объект не может описывать всё.

Факт выбора, состояние действия, изменение условий и противоречия
— это разные вещи.

Если они не разведены,
система не управляется.

Она только помнит.