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:
- Атрибут —
_base.htmlставит<body data-brand-level="{{ doc.brand_level | default('full') }}">. - CSS-компонент —
document-system/components/brand-levels.cssподключён в_base.html: monogram→.doc-invoice-wordmark { display: none }(прячет текст «GOLDJAXE» на обложке и в recap инвойса);unbranded→.doc-invoice-brandи.doc-invoice-recap-mark{ display: none }(прячет куб + подпись целиком).- Колонтитул —
render.py→add_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 на соответствие.