Перейти к содержанию

15 · Canonical enforcement — 3 уровня бренда документов

1 · Суть

Документ холдинга = единый canonical Document System (4 шрифта, bronze #998018, белый фон, 8pt baseline — LOCKED params) + override-слой бренда.

Override-слой переключает только видимость логотипа и подписи GOLDJAXE. Layout, типографика, цвета, отступы — не меняются ни на одном уровне. Это не три параллельные дизайн-системы, а один canonical с переключателем шапки.

🔴 ЖЕЛЕЗОБЕТОННОЕ. 3 уровня бренда — НЕ повод переверстывать документ. Меняется логотип-слот, и только он. См. memory feedback_three_brand_levels_application.

2 · Три уровня

Уровень На обложке Колонтитул Use case
full (default) золотой куб + подпись «GOLDJAXE» + реквизиты «GOLDJAXE» печатается Внешние документы: КП клиентам, договоры подряда, оферта, инвойсы external, презентации
monogram золотой куб + реквизиты, подпись «GOLDJAXE» скрыта «GOLDJAXE» печатается Внутренние документы команде: handoff, ТЗ, ADR, аудит-отчёт, меморандум, cover-standalone
unbranded только реквизиты юрлица, бренд-блок GOLDJAXE скрыт «GOLDJAXE» не печатается Документы юрлиц без endorsement GOLDJAXE: Vegasoft internal, ИП-договоры без бренд-связки

full — состояние по умолчанию: отсутствие атрибута или data-brand-level="full" оставляет документ ровно таким, каким он был до Этапа 3. Нулевой риск регресса для всех апрувнутых эталонов.

3 · Как реализовано

Три точки, всё остальное canonical:

  1. Атрибут_base.html ставит <body data-brand-level="{{ doc.brand_level | default('full') }}">.
  2. CSS-компонентdocument-system/components/brand-levels.css подключён в _base.html:
  3. monogram.doc-invoice-wordmark { display: none } (прячет текст «GOLDJAXE» на обложке и в recap инвойса);
  4. unbranded.doc-invoice-brand и .doc-invoice-recap-mark { display: none } (прячет куб + подпись целиком).
  5. Колонтитулrender.pyadd_running_footer(... brand_level=...): при unbranded подпись «GOLDJAXE» в нижнем колонтитуле каждой страницы не печатается. Классификация (CONFIDENTIAL / INTERNAL) и нумерация остаются — это свойства документа, не бренд.

Реквизиты юрлица (блок .doc-invoice-entity) задаются из YAML и показаны на всех трёх уровнях — для unbranded это единственный идентификатор отправителя.

4 · Как поставить уровень

В YAML-данных документа — поле brand_level:

type: handoff
brand_level: monogram      # full (default) | monogram | unbranded
entity:
  name: ВЕГАСОФТ, ООО      # для unbranded — реквизиты конкретного юрлица
  lines:
    - ИНН 0000000000 · ОГРН 0000000000000

Поле опционально. Без него — full.

5 · Decision tree — какой уровень выбрать

Создаю документ X
   ↓
Кто получатель и от чьего имени документ?
   ├─ Внешний (клиент / партнёр), от имени GOLDJAXE
   │     → FULL
   ├─ Внутренний (команда холдинга), от имени GOLDJAXE
   │     → MONOGRAM
   └─ От имени юрлица БЕЗ права endorsement GOLDJAXE
         (Vegasoft · ИП-договор без бренд-связки · AMDASA)
         → UNBRANDED

6 · Brand endorsement matrix

unbranded существует из-за юридической изоляции части юрлиц от бренда GOLDJAXE. Уровень бренда по умолчанию для каждого юрлица:

Юрлицо «by GOLDJAXE» разрешено? Уровень по умолчанию
GOLDJAXE FZ-LLC да (это сам GOLDJAXE) full
Q-Check да (endorsement matrix) full / monogram
Q-Vision да (endorsement matrix) full / monogram
Vegasoft нет (юр-изоляция от CEO) unbranded
ИП Архангельский зависит от документа full / unbranded
AMDASA нет (temp, до NOC) unbranded

Полная матрица endorsement — goldjaxe-skills/skills/goldjaxe-document-writer/references/entity-stamps.md. 3 уровня бренда и endorsement matrix — разные правила: уровень управляет CSS-видимостью логотипа, matrix управляет юридическим правом на бренд-связку.

7 · Анти-паттерны — никогда

  • ❌ Менять layout / типографику / цвета / отступы между уровнями. Уровень трогает только логотип-слот.
  • ❌ Заводить отдельный шаблон или CSS под каждый уровень. Это override-слой поверх одного canonical, не три системы.
  • ❌ Создавать новые templates «потому что 3 уровня бренда» (прецедент промаха Brand OS v1.0, 13-15.05.2026).
  • ❌ Хардкодить логотип в HTML документа. Видимость — только через data-brand-level.
  • ❌ Путать уровень бренда с brand endorsement matrix — это независимые правила.
  • ❌ Оставлять подпись «GOLDJAXE» в колонтитуле unbranded-документа — render.py обязан её скрыть.

8 · Связи

  • Реализация: document-system/components/brand-levels.css · templates/_base.html · generator/render.py
  • Каталог эталонов: brand-os/templates-index.md (раздел 7 — декомпозиция по brand-level)
  • LOCKED params: playbook 02 · memory feedback_locked_document_params_v2
  • Правило-источник: memory feedback_three_brand_levels_application
  • Decision: goldjaxe-wiki/wiki/command/decisions/2026-05-15-brand-os-v2-canonical-enforcement.md

Re-entry якорь

«прочти контекст three-brand-levels» / «делай как playbook 15» / «brand-levels override»

→ Перечитать этот playbook + проверить brand-levels.css на соответствие.