Перейти к содержанию
GrantTapРуководство
Governance и доверие

Restrictions: качество и архитектура

Редактируемые лимиты, POODR, Clean Code и свои Markdown-инструкции.

Концептуальная иллюстрация: зелёные ворота, жетон решения и оранжевая преграда
Правила, в которых можно разобратьсяИллюстрация · ImageGen
В этой главе · 8 разделов

Что задают Restrictions#

Project → Restrictions — правила качества для одного Mesh: числовые проверки изменений и рекомендации агенту о том, как писать код. Здесь можно отредактировать пороги, выбрать стартовый пресет, указать желательную архитектуру и написать собственные инструкции с форматированием.

НастройкаЧто происходитЧто считается подтверждением
Строки файла, строки функции, размер файлаКомпьютер проверяет поддерживаемые операции записи; при превышении применяется Ask или DenyРешение конкретной проверки и её результат
Принципы Clean Code / POODRРекомендации добавляются к сообщениям агенту в выбранном ProjectКомпьютер получил политику; соблюдение проверяется по результату работы
АрхитектураПредпочтение для будущих изменений, с сохранением существующих границПроверка diff, зависимостей и тестов
MarkdownВаш текст сохраняется и передаётся агенту вместе с запросомПолученная редакция политики и последующий результат

Получение настроек не доказывает, что все рекомендации выполнены. Restrictions не заменяют Governance, не предоставляют новые разрешения и не снимают запреты компьютера или провайдера.

Как изменить числа#

  1. Откройте Mesh, выберите нужный Project и перейдите в Restrictions.
  2. В Apply to проверьте область настройки. Для первых опытов оставьте This Mesh.
  3. В Computer checks введите число прямо в поле Maximum lines или Maximum bytes. Для открытия полной формы нажмите название проверки со значком ползунков.
  4. Включите нужную проверку переключателем. Отредактированное значение сохраняется при выключении и повторном включении в текущей форме.
  5. В полной форме выберите Ask или Deny, укажите при необходимости относительные пути и сохраните правило.
  6. Нажмите отдельную кнопку Save restrictions на основной странице. Изменения формы ещё не являются применённой политикой.
ПроверкаСтартовое значение BalancedЕдиницаПри превышении
File line limit300Физические строки файлаDeny
Function line limit100Строки распознанного тела функцииDeny
File size limit65 536Байты UTF-8 содержимогоAsk

Допустимы целые положительные значения до 1 000 000. Ноль, отрицательные значения, пустой активный лимит и произвольный текст блокируют сохранение. Размер в байтах и число видимых символов различаются, особенно для кириллицы и emoji.

File paths принимает до 16 относительных путей или glob, по одному на строку. Пустой список означает все подходящие файлы. Пример: src/**/*.swift и Tests/**. Абсолютные пути и переход .. не подходят. Добавленная пользовательская проверка выбирает один из поддерживаемых алгоритмов; одно название «идеальный код» не создаёт проверку качества.

Настоящий экран · учебные данныеRestrictions: редактируемые проверкиЧисла редактируются в полях. Пресет POODR inspired задаёт функцию до 5 строк; на снимке безопасный Demo. Предварительный вариант редактора, безопасные учебные данные.
  1. Введите число в поле; переключатель включает проверку.
  2. Название открывает Ask/Deny и относительные пути.
Сборка 231 · preview · 2026-10-27 · интерфейс EN

Пресеты: Balanced, POODR inspired, Clean Code#

Пресет — редактируемая отправная точка. После выбора приложение запрашивает подтверждение замены рекомендованных лимитов и принципов. Собственные проверки, архитектура и Markdown остаются в форме. Перед отправкой просмотрите изменения; кнопка пресета сама по себе не сохраняет политику на Mac.

### Balanced

Три лимита из таблицы: 300 строк файла, 100 строк функции и 65 536 байт. Дополнительные принципы и числовые цели дизайна очищаются. Это удобный базовый вариант, который затем можно настроить под репозиторий.

### POODR inspired

Пресет вдохновлён подходом Сэнди Мец к небольшим обязанностям, ясным интерфейсам, композиции и проверке поведения. POODR — Practical Object-Oriented Design; пресет GrantTap не является встроенной официальной сертификацией или универсальным набором обязательных норм книги.

В GrantTap он устанавливает функцию до 5 строк как числовую проверку, а 100 строк класса/типа и 4 параметра функции — как редактируемые advisory цели агенту. Лимит файла остаётся 300 строк; размер — 65 536 байт. Все значения можно пересмотреть.

Принципы:

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

Принципы применимы к разным языкам, включая Ruby, Swift, TypeScript и Rust. Целесообразность конкретного порога зависит от языка и существующего проекта. Не дробите связную функцию только ради числа и не выдавайте рекомендацию по классам за parser-enforced запрет.

### Clean Code

Сохраняет предел файла 300 строк, выбирает 30 строк функции и 65 536 байт. Включает все восемь рекомендаций: предыдущие пять, ясные имена и простой поток управления, явную обработку ошибок, отсутствие дублированных знаний без преждевременных абстракций. Цели по классам и параметрам пусты, пока вы не зададите их сами.

В Agent guidance → Clean code principles каждый пункт можно включить отдельно. Пресеты не меняют режим одобрения, native sandbox и ограничения доступа.

Предпочтительная архитектура#

Откройте Agent guidance → Preferred architecture. По умолчанию выбрано Keep existing architecture: сохранять текущие границы. Другие варианты:

ВариантЧто просим у агента
Feature modulesПоведение, публичная точка входа и локальные тесты принадлежат функциональному модулю
Layered architectureЯвные слои представления, приложения, предметной логики и инфраструктуры
Clean ArchitectureЗависимости направлены к независимым сущностям и сценариям
Hexagonal · ports and adaptersПредметная логика общается с внешним миром через порты и адаптеры
Modular monolithБизнес-модули с явными границами внутри одного приложения
MVVM · presentationПроверяемое состояние представления, с логикой вне View

Это одно предпочтение в контексте проекта, а не приказ перестроить весь репозиторий. Применяйте подход постепенно и проверяйте его уместность. Например, MVVM для SwiftUI не определяет архитектуру всей серверной части.

В Design targets · optional можно задать классы/типы и число параметров. Оставьте поле пустым, чтобы не отправлять такую цель. Допустимы 1–1 000 000 строк и 1–1 000 параметров соответственно. Эти два поля являются рекомендациями агенту.

Настоящий экран · учебные данныеРекомендации агенту и цели дизайнаПринципы и цели 100/4 показаны отдельно от машинных проверок. Demo; список прокручен. Предварительный вариант редактора, безопасные учебные данные.
  1. Принципы, архитектура и цели — рекомендации агенту.
  2. Классы и параметры не выдаются за parser-enforced проверки.
Сборка 231 · preview · 2026-10-27 · интерфейс EN

Свои инструкции с форматированием#

В Agent guidance → Project instructions · Markdown доступны вкладки Edit и Preview. Используйте заголовки, списки, жирный текст, code и блоки кода. Кнопки H, B, • и </> добавляют заготовку в конец текста; затем её можно отредактировать. Preview показывает содержимое тем же нативным renderer, что и чат.

Безопасный пример для GrantTap Lab:

markdown
## Границы учебного проекта

- Используй только локальные fixture-данные.
- Сохраняй публичный интерфейс Cart.
- Перед исправлением воспроизведи ошибку тестом.
- Обрабатывай ошибки явно; не скрывай их пустым catch.

### Архитектура

Сохраняй feature modules. Не добавляй новый слой без необходимости
в текущей задаче. Сначала покажи причину и затрагиваемые зависимости.

Доступно 12 000 байт UTF-8, счётчик находится под редактором. Текст сохраняется без потери переносов и Markdown. Встроенный preview не исполняет код и не загружает удалённые изображения. Не помещайте туда пароли, ключи и другие секреты: рекомендации получает coding agent.

Вернитесь на основную страницу и нажмите Save restrictions. Сам выход из редактора не отправляет изменения на компьютер. Настройки остаются инструкциями Project; GrantTap не переписывает AGENTS.md, CLAUDE.md или глобальную конфигурацию coding app.

Настоящий экран · учебные данныеMarkdown: предварительный просмотрРеальный нативный preview заголовка, списка и жирного текста на учебных данных. Предварительный вариант редактора, безопасные учебные данные.
  1. Preview сохраняет заголовки, список и выделение.
  2. Для отправки вернитесь к Save restrictions и дождитесь ответа компьютера.
Сборка 231 · preview · 2026-10-27 · интерфейс EN

Область, доставка и подтверждение#

Apply toПоведение
This MeshНастройки относятся к выбранному Project Mesh
Mesh and repositoryКомпьютер дополнительно экспортирует .granttap/restrictions.json в привязанные checkout
Sync from repositoryКомпьютер читает GrantTap-файл репозитория; поля на телефоне недоступны для редактирования

Экспорт содержит проверки и рекомендации. Он не создаёт commit, не выполняет push и не настраивает pipeline автоматически. Прежде чем коммитить файл, проверьте diff и не добавляйте приватные данные. В режиме Sync нужен точно определённый repository binding; отказ следует исправить, а не обходить выбором другого проекта.

Save restrictions отправляет новую редакцию канонической Project policy существующим привязанным компьютерам. Для недоступного компьютера запрос остаётся в сохраняемой очереди. Пока нет его ответа, показывается ожидание acknowledgement. При несовместимом Mac, конфликте редакций или отказе Engine проверьте сообщение об ошибке и Governance, Engine и Health.

После подтверждения рекомендации добавляются к следующему сообщению или новой Task, запущенной из GrantTap в этом Project. Текст запроса и его идентичность сохраняются. Для новой Task компьютер сначала проверяет принадлежность папки проекту. Другой Project и общий чат без Project не получают эти инструкции.

Уже работающий агент не получает ретроактивную команду перечитать настройки. Сообщения, отправленные напрямую из стороннего coding app, и сторонние CI не обещают такую же автоматическую вставку. Подтверждение хранения политики, получение агентом конкретного запроса и выполнение рекомендаций — разные факты. Подробнее о квитанциях — доставка, о проверяемых утверждениях — доказательства.

Проверить на учебном проекте#

  1. Откройте отдельный GrantTap Lab, выберите This Mesh и убедитесь, что связан нужный тестовый Mac.
  2. Измените File line limit на 42, включите его, выключите и снова включите. В поле должно остаться 42. Не включайте этот экспериментальный лимит в рабочем репозитории.
  3. Выберите POODR inspired, подтвердите локальную замену и проверьте 5 строк функции, 100 строк типа и 4 параметра. Отредактируйте числа под практикум.
  4. Выберите Feature modules, добавьте приведённый Markdown и проверьте Preview. Сохраните Restrictions и дождитесь подтверждения компьютера.
  5. Попросите агента проверить локальный fixture с этими соглашениями. Убедитесь по результату, что сохранён интерфейс, тест воспроизводит поведение и нет внешних операций. Это отдельная явная учебная задача, а не автоматический prompt от формы.
  6. Для проверки измеримого лимита используйте небольшой временный файл в Lab. При превышении ожидайте Deny либо Ask согласно правилу; по неизмеренной форме функции не считайте отсутствие результата доказательством clean.
  7. При repository export просмотрите .granttap/restrictions.json. Команда granttap restrictions check проверяет поддерживаемые числовые правила. Рекомендации обозначены как advisory и не становятся автоматически проверенными. Выход 0 означает отсутствие Deny: сообщения Ask выводятся отдельно и требуют разбора; по одному exit code нельзя объявлять всё проверенным.
  8. Откройте другой Project: его настройки должны остаться прежними. Верните разумные учебные значения или отключите экспериментальную проверку и сохраните новую редакцию.

Если не применяется#

СимптомЧто проверить
Save недоступнаПоложительные числа, поддерживаемые проверки, размер Markdown, готовность Project policy, отсутствие ещё не завершённой отправки
Долго ждёт acknowledgementПравильный Mac, Live-соединение, очередь и доступность Engine; не делайте вывод Applied по одному нажатию
Поля серыеВыбран Sync from repository; изменять нужно файл привязанного репозитория
Агент не учёл пожеланиеНовый ли это запрос из GrantTap, совпадает ли Project, есть ли подтверждённая политика; затем проверьте ограничения и приоритеты инструкций провайдера
Ruby получил AskТело функции не было надёжно измерено текущим checker; нужна проверка, а не ложное разрешение
CI ничего не проверилЭкспорт не подключает pipeline; вызовите поддерживаемую команду из собственного CI и сохраните её результат

Для технического запрета инструмента используйте Governance. Для архитектурного решения с источником и историей — Knowledge. Для переменных и секретов — настройки проекта.