Въпросите, които Митко най-вероятно ще зададе

Само за теб, Костадин. Отговорите са проверени в кода към 11.11.2026. Оранжевата линия е там, където честният отговор е „още не“. Кажи го така, Митко ще го провери.

Как да го водиш: Митко гледа детайлите, затова не продавай. Започни с това какво получава програмистът (пакетът) и къде е кодът, после покажи живия прототип на Стената. При неудобен въпрос: „това е в отворените, ето защо“.

Прототипът и кодът

Това код за production ли е?

Не. Прототипът е справка за подредба, състояния, движение и поведение. Production кодът, живите данни и интеграциите са негова работа.

Има две части. prototype/public/demo/app е демото на приложението: чист HTML, CSS и JS модули, 7 страници (начало, каталог, заглавие, плейър, абонамент, арена, мач). Това е основата 1:1, върху която дизайнерите правят версии. prototype/ е Next.js 15 + React 19 със static export, който държи /atlas/, /design-system/ и /lab/.

Защо има два прототипа?

Демото е копие на реалното приложение, за да се променя „върху одобреното“. Next.js частта е витрината на дизайн системата: атлас на компонентите и страница с токените.

Живият прототип на Стената вече ползва демото, не /lab/. В /lab/ имаше само Theater макет (hero, филтри, ред).

Откъде идват цветовете и шрифтовете? Как да ги вземем в нашия стек?

Един източник: design-system/tokens.css (CSS променливи) и components.css. DESIGN.md е генериран от тях. Те са чист CSS, така че ги превеждате в каквото ползвате.

Шрифтове: Manrope за текст, Unbounded за заглавия; размерите са само от скалата --t-*. Проверка при всеки commit (check-design.mjs) спира нова стойност извън токените.

Скалата --t-* още не е сверена докрай с Figma променливите, а DESIGN.md е чернова, докато дизайнерите не го прегледат.

Какви данни има вътре? Има ли API?

Няма API и няма живи данни. Има снимка на данни и превключвател ?data=demo|today|future|edge; edge показва липсващи метаданни, дълги текстове и бавно зареждане.

Веригата „програма → запис → каталог“ в Theater е хипотеза, докато техническият екип не я потвърди. Няма EPG, плащане и TV навигация.

Версии, Стената и живият прототип

Какво точно е „версия“?

Замразена карта: точният commit, автор, бележка, статус, история и снимки на 390 и 1440 px. Пази се във versions/<екран>/<версия>/meta.json.

Статусите: чернова → за-одобрение → одобрено → в-разработка → готово, плюс „върнато“ от всяка стъпка. „Одобрено“ слага само PM, проверено по Git имейла в .github/team.json.

Как живият прототип сменя секция с друга версия, без да билдва?

Всяка версия е git diff на демото между merge-base с main и нейния commit. На Стената service worker прилага избраните патчове в браузъра с jsdiff, върху копие на демото от main.

Изборът стои в адреса: ?pp=player&pv=theatre-player/…-mila-a, така че линкът се праща. Две версии в различни редове се показват заедно. Ако пипат един и същ ред, по-късната пада към основата и панелът го казва. Двоични и изтрити файлове не се патчват. Кодът е в scripts/lib/stena-proto.mjs.

Към 11.11 е PR, още не е в main. Проверено локално: тестове, wall-qa 52/52 и ръчно на каталога и плейъра.

Какво става, ако двама пипнат един и същ файл?

На Стената: виж горното, конфликтът се показва, нищо не се чупи. В Git: task.mjs update спира при конфликт и човек избира.

Предложението за „двама на един екран“: общо проучване, всеки прави своя вариант в отделен файл, в main влиза само избраният. То още е решение за среща.

Колко бързо се обновява Стената?

При всеки push към task/** или main, без таймер. Днес (11.11) веригата от push до готова Стена е около 1 минута: билд ~40 с, публикуване ~10 с, Стената ~10 с. Отворена Стена проверява на всеки 10 с и предлага „Покажи“.

Дизайнерът не трябва да прави push ръчно: скритият бекъп стига до GitHub поне на 30 минути, а „покажи ми“ записва веднага. Локалната Стена е готова мигновено.

Как гарантирате, че одобреното не се променя след одобрение?

Одобрението сочи точен commit. Пакетът за програмиста се строи от този commit, не от днешния main. Сливането е само с --merge, без squash, точно за да не изчезнат commit-ите, към които сочат версиите.

Force push и сливане без зелени проверки се спират от hooks и от правилата, но задължителната защита на main в GitHub иска платен план. Дотогава умишлено заобикаляне е възможно.

Предаване към програмистите

Какво получавам точно?

node scripts/design-version.mjs handoff <екран>/<версия> прави папка и zip: README (кой одобри, кога, commit, какво трябва да прави екранът), SPEC.md към момента на одобрението, снимките 390 и 1440, source/prototype, source/design-system и meta.json с историята.

Работи само за одобрени версии. Списъкът на одобреното е docs/FOR-DEV.md или филтърът „За DEV“ на Стената.

В пакета пише „No specification available“. Къде са спецификациите?

Към 11.11 има една: specs/theatre/browse.md. Пакетът взема SPEC.md и случаите „какво трябва да прави екранът“ от там. Без спецификация README-то казва „питай PM“.

Основните версии (osnova) са снимки на текущото приложение и нямат спецификация. Спецификациите ги пише PM със spec-builder; това е работата, която липсва, преди пакетите да са пълни.

Къде са състоянията (hover, focus, празно, грешка, зареждане)?

Днес в /atlas/: всеки компонент със състоянията и къде се ползва, плюс ?data=edge за крайните случаи.

Не са пълни за всеки компонент и още не влизат в пакета. Това е в плана, следващото по ред след живия прототип.

Как задавам въпрос на дизайнера?

Слага статус „върнато“ с бележка. Това маха одобрението; дизайнерът прави нова версия, PM одобрява отново. В началото на работата слага „в-разработка“, QA слага „готово“.

Таблет, TV, достъпност, производителност?

Снимките и проверките са само на 390 и 1440 px. Таблет и TV не се проверяват. Достъпността се гледа в прегледа (noisy-review), но няма автоматичен axe. Няма бюджет за производителност. Ако той има изисквания тук, това е точно мястото да ги добави като проверка.

Сигурност и надеждност

Кодът от задачите е недоверен. Как не изтичат тайните?

Билдът и публикуването са разделени. pregled.yml билдва кода на задачата без никакви тайни. pregled-deploy.yml тръгва през workflow_run, проверява произхода и само качва готовите файлове, без да пуска кода. Стената се строи с генератора от main.

Кой вижда Стената и прегледите?

Всеки, който знае адреса: Cloudflare Pages без вход. Ограничаването до фирмени имейли (Cloudflare Access) иска карта в акаунта. В данните няма имейли, само имена.

Как разпознавате човека? Не може ли да се фалшифицира?

По Git имейла на компютъра (design-task.mjs whoami), не по Claude или GitHub акаунта. Затова работи и с общ акаунт.

Да, Git имейлът се сменя на ръка. Надеждната проверка е прегледът преди сливане. Защитата пази от грешки, не от умишлено заобикаляне от човек с достъп.

Какво пази „основата“ (правилата и скриптовете)?

Два слоя. guard-foundation.mjs в Claude Code спира редакция на защитените пътища без изречението на PM. commit-msg спира commit към тях без ред „Одобрено-от“ и пази и Codex, и терминала.

Codex няма проверка преди редакция, само при commit.

Как е тествано всичко това?

npm test пуска всички проверки, включително 35 тестови файла в scripts/tests/, и върви и в GitHub. npm run qa:wall отваря Стената headless на 390 и 1440 и търси преливане, грешки в конзолата и счупени снимки. npm run qa:flow пуска истински агент през целия път на дизайнера в чисто копие, с локален origin, и оценява записа.

Тест с двама души на два компютъра още не е правен. Windows не е тестван.

Ако пита „защо така“

Защо не просто Figma + Dev Mode?

Figma остава за референции и одобрени екрани. Разликата е, че вариантите се правят в истинския продукт, със състояния и данни, и програмистът получава код от точния одобрен commit, не картинка.

Ще стане ли това за Elemental и други проекти?

Планът е отделно хранилище за всеки проект, общ комплект за механиката (скриптове, hooks, умения) и общо място за профилите. Още нищо не е преподредено. Дотогава нов проект тръгва като копие на основата без дизайн системата, прототипа и личните папки.