Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 49 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,70 @@
# Lab Colors

Движок цветовых систем с ProgramWire v1 runtime. Публичный пакет строит и проверяет цветовые Program-графы; конкретное применение результата остаётся у потребителя.
Компилятор и runtime цветовых контрактов для приложений и дизайн-систем.
Вы объявляете источники цвета, связи, подложки и ограничения. Lab Colors
проверяет граф и вычисляет допустимые результаты при изменении наблюдаемых
условий. Приложение задаёт смысл токенов и применяет полученные цвета.

## Публичный API
## Начать работу

Установка, исполняемый Quick Start и актуальный контракт публичного API находятся только в [packages/colors/README.md](packages/colors/README.md).
Для JavaScript и TypeScript используйте пакет `@labpics/colors` с ядром на
Rust/WASM. [Установка и первый пример](packages/colors/README.md#установка)
показывают путь от объявления графа до чтения цвета: `compileProgramWire` →
`updateObserved` → outputs.

Первый сценарий: установите пакет по инструкции и выполните [«Первый маршрут»](packages/colors/README.md#первый-маршрут), чтобы получить проверенный цвет одного output. Команды и код сценария поддерживаются только в этом разделе.
Для оценки из командной строки запустите пример из корня checkout с Rust
версии, указанной в [Cargo.toml](Cargo.toml), или новее:

Корневой README намеренно не дублирует API-пример. Так изменение runtime-поверхности имеет одного владельца и не требует синхронно поддерживать второй фрагмент документации.
```sh
cargo run --quiet --locked -p labcolors-evaluate-cli -- \
crates/labcolors-evaluate-cli/examples/declared-point.json
```

Транспортный CLI имеет отдельный узкий контракт: [crates/labcolors-transport-cli/README.md](crates/labcolors-transport-cli/README.md). Он только разбирает, сериализует и инспектирует certificate envelope и не владеет цветовой или certificate-семантикой.
Результат — JSON-отчёт с оценкой объявленной sRGB8-точки и LCEN-сертификатом.
[Руководство CLI](crates/labcolors-evaluate-cli/README.md) описывает вход,
ожидаемый результат и коды отказов.

## Архитектурные границы
## Границы библиотеки

- ProgramWire v1 — канонический бинарный формат объявления Program-графа.
- Невалидные декларации и неподдерживаемые состояния завершаются типизированным отказом без silent fallback.
- Семантика графа принадлежит Core; адаптеры не вводят собственные правила решения.
- DOM и CSS не принадлежат движку: потребитель материализует только допущенный результат.
- Научные, продуктовые и инвентаризационные доказательства не подменяют друг друга.
- **Приложение** владеет именами токенов, состояниями компонентов, дизайном и
отображением. Для ядра идентификаторы токенов непрозрачны.
- **[Core](crates/labcolors-core/README.md)** владеет цветовой математикой,
графом зависимостей и проверкой ограничений. ProgramWire v1 задаёт бинарный
формат графа; недопустимые входы возвращают явные ошибки.
- **WASM и CLI** передают запросы ядру. Отдельный
[labcolors-transport](crates/labcolors-transport-cli/README.md) разбирает,
сериализует и инспектирует LCEN-envelope без вычисления цвета.

Проверка относится к объявленной модели и переданным наблюдениям. Она не
подтверждает фактическую отрисовку браузера или человеческое восприятие;
DOM и CSS остаются у приложения.

## Разработка

```bash
cargo test --workspace
npm --prefix packages/colors test
Проверка Rust workspace из корня репозитория:

```sh
cargo test --workspace --locked
```

Требования к инструментам и команды JS/WASM-пакета указаны в
[packages/colors/package.json](packages/colors/package.json).
[GitHub Actions](https://github.com/Labpics-Team/lab-colors/actions/workflows/ci.yml)
показывает результаты CI.

## Зависимости

У `labcolors-core` в конфигурации по умолчанию ноль рантайм-зависимостей. Необязательная capability `ext09-extractor` имеет отдельные зависимости, объявленные в [манифесте Core](crates/labcolors-core/Cargo.toml). Проверка конфигурации по умолчанию:
У `labcolors-core` по умолчанию ноль рантайм-зависимостей. Необязательная
возможность `ext09-extractor` подключает зависимости из
[манифеста Core](crates/labcolors-core/Cargo.toml). Проверить конфигурацию по
умолчанию:

```bash
```sh
cargo tree -p labcolors-core --edges=no-dev
```

Текущее состояние CI следует читать в [GitHub Actions](https://github.com/Labpics-Team/lab-colors/actions/workflows/ci.yml), а не из статической фразы в документации.
## Лицензии

## Лицензия

MIT


## Оценка в командной строке

[labcolors-evaluate](crates/labcolors-evaluate-cli/README.md) принимает один
ограниченный запрос с каноническим ProgramWire и явной объявленной конвенцией,
исполняет существующее ядро и выдаёт отчёт с LCEN-сертификатом. Это моделируемая
точка, не подтверждение человеческого восприятия или состояния браузера.

```sh
cargo run --quiet --locked -p labcolors-evaluate-cli -- crates/labcolors-evaluate-cli/examples/declared-point.json
```
Исходный код — [MIT](LICENSE). Для встроенных данных действуют CC-BY-4.0 и
CC-BY-SA-4.0; источники и условия использования перечислены в
[NOTICE.md](crates/labcolors-core/NOTICE.md).
Loading