architect/prospective/filesystem.md

type: standard
aspect: structure
title: "Стандарт файловой системы платформы"
status: draft
version: 0.2.0
date: 2026-04-10
owner: architect
project: platform-update


Стандарт файловой системы платформы

Где и как хранить файлы платформы: пространства, классы, структуры папок, правила хранения, белые и чёрные списки, хуки и аудит.

Главный принцип:

$WORKSPACE = исходники (source) — документация, код на языках
$DATASPACE = результат обработки — скомпилированное, форматированное, данные

Если файл создаётся руками или агентом как текст — он в $WORKSPACE.
Если файл является результатом компиляции, рендеринга или форматирования — он в $DATASPACE.


1. ДВА ПРОСТРАНСТВА

Платформа использует два пространства хранения с одинаковой иерархией проектов. Одна и та же сущность (например, проект pirotehnika) имеет своё представление в обоих пространствах.

export WORKSPACE=/opt/claude-workspace    # ИСХОДНИКИ (git)
export DATASPACE=/mnt/beget-s3            # РЕЗУЛЬТАТ ОБРАБОТКИ + ДАННЫЕ (S3)

1.1. $WORKSPACE — Код и документы

Параметр Значение
Что лежит Исходный код, документация, конфигурация, шаблоны, стили, шрифты
Где /opt/claude-workspace
Хранение Git
Бэкап Git remote + внешние бэкапы

Что разрешено — только текстовые файлы:
- Код (.py, .js, .ts, .tsx, .jsx, .php, .go, .c, .cpp, .h, .sh, .bat, .ps1)
- Документация (.md, .ai.md, .txt, .rst)
- Конфигурация (.yaml, .json, .toml, .ini, .conf, .xml, .env.example)
- Web-код (.html, .css, .scss, .less)
- Шаблоны (.twig, .tpl, .j2)
- SQL-скрипты (схемы и миграции)
- Шрифты (.woff2, .ttf — код для браузера)
- Специальные (.gitignore, .gitkeep, .editorconfig, Dockerfile, Makefile, LICENSE)

Что запрещено — всё что файлы/данные:
- Вся графика (.svg, .ico, .jpg, .jpeg, .png, .gif, .webp) — в $DATASPACE
- Видео, аудио (.mp4, .mp3, .wav)
- Документы (.pdf, .docx, .doc)
- Данные (.csv, .xlsx, .xls, .ods)
- Базы данных (.db, .sqlite)
- Зависимости (venv/, node_modules/, __pycache__/)
- Секреты (.env, .key, .pem, .credentials.md)

1.2. $DATASPACE — Данные и медиа

Параметр Значение
Что лежит Структурированные данные, прайсы, изображения, видео, аудио, PDF, базы, бэкапы
Где /mnt/beget-s3
Хранение S3 (Beget)
Бэкап S3 versioning

Что разрешено:
- Таблицы (.xlsx, .xls, .csv, .ods)
- Базы данных (.db, .sqlite)
- JSON-данные (большие объёмы)
- Архивы данных (.zip, .tar.gz)
- Вся графика (.svg, .ico, .jpg, .jpeg, .png, .gif, .webp)
- Видео (.mp4, .avi, .mov, .webm)
- Аудио (.mp3, .wav)
- Документы (.pdf, .docx, .doc, .rtf)
- Логи приложений, бэкапы БД

Что запрещено:
- Исходный код
- Конфиги приложений

1.3. Сводная таблица

Пространство Что лежит Хранение Бэкап
$WORKSPACE Код, документация, конфигурация Git Git remote
$DATASPACE Данные, изображения, медиа, дампы S3 (Beget) S3 versioning

Принцип: Одна иерархия — два носителя. Структура проектов в обоих пространствах совпадает.


2. ТРИ КЛАССА ФАЙЛОВ

Любой файл принадлежит одному из трёх классов:

┌─────────────────────────────────────────────────────┐
│ СЛУЖЕБНЫЕ                                           │
│                                                     │
│ Описывают место/сущность для обрабатывающей системы │
│ Читают: git, AI (Claude), файловая система          │
│                                                     │
│ Примеры: README.md  CLAUDE.md  AI.md  INDEX.md      │
│          .gitignore  .cache  .tmp  __pycache__/     │
├─────────────────────────────────────────────────────┤
│ СОДЕРЖАТЕЛЬНЫЕ                                      │
│                                                     │
│ Несут знание и смысл — для людей и агентов          │
│ Читают: люди, AI-агенты                             │
│                                                     │
│ Примеры: Концепция, Стандарт, Инструкция, Практика  │
│          STATUS.md  TODO.md  LICENSE  Шаблоны       │
├─────────────────────────────────────────────────────┤
│ ТЕХНИЧЕСКИЕ                                         │
│                                                     │
│ Являются реализацией — создаются и исполняются      │
│ Читают: инструменты (docker, python, node)          │
│                                                     │
│ Примеры: Код (.py .js .php), Конфигурация (.yml)    │
│          Данные (.csv .json), Тесты, Бинарные       │
└─────────────────────────────────────────────────────┘

2.1. Характеристики классов

Класс Для кого Без них Типичные примеры
Служебные Система (git, AI, ФС, IDE) Система не ориентируется в папках, AI не понимает контекст, git коммитит лишнее CLAUDE.md, AI.md, README.md, INDEX.md, .gitignore, .gitkeep, .editorconfig, __pycache__/, node_modules/, venv/, .env, .cache
Содержательные Люди / AI-агенты Нет знаний — нет платформы Концепции, Стандарты, Инструкции, Практики, ADR, Тикеты, STATUS.md, TODO.md, LICENSE, Шаблоны-документы
Технические Инструменты (docker, python, node, браузер) Ничего не работает Код (.py, .js, .php), конфигурация (.yml), данные (.csv, .json), тесты, бинарные

2.2. Служебные файлы — ключевой признак

Служебные файлы не несут знания о предметной области. Они описывают место или сущность для обрабатывающей системы. Их задача — дать ориентиры: что здесь лежит, как это читать, что игнорировать.


3. КАКОЙ КЛАСС В КАКОЕ ПРОСТРАНСТВО

Класс $WORKSPACE (git) $DATASPACE (S3)
Служебные CLAUDE.md, AI.md, INDEX.md, README.md, .gitignore, .gitkeep, .editorconfig .cache (не бэкапить)
Содержательные *.md — концепции, стандарты, инструкции, практики, ADR, тикеты, шаблоны
Технические — код .py, .js, .php, .ts, .sh, .go
Технические — конфиг .yaml, .json, .toml, .ini
Технические — данные .csv < 100 KB (fixtures, тесты) .csv > 100 KB, .xlsx, .xls, .ods
Технические — графика .svg, .ico, .jpg, .jpeg, .png, .gif, .webp
Технические — шрифты .woff2, .ttf, .otf, .eot
Технические — медиа .mp4, .avi, .mov, .mp3, .wav, .pdf, .docx
Технические — БД .sql (схемы, миграции) .db, .sqlite (данные)

4. СТРУКТУРА $WORKSPACE

Платформа состоит из шести слоёв. Каждый отвечает на один вопрос:

arch/       ← ЧТО МЫ ЗНАЕМ?        стандарты, методология
project/    ← КАК МЫ УПРАВЛЯЕМ?    процессы, фазы, документы
domains/    ← ЧТО МЫ СТРОИМ?       IT / производство / бизнес / данные
infra/      ← ГДЕ ЭТО РАБОТАЕТ?    серверы, деплой, поддержка
system/     ← ЧЕМ МЫ РАБОТАЕМ?     общие библиотеки, коннекторы, MCP
services/   ← КТО ОБСЛУЖИВАЕТ?     планировщик, мониторинг
$WORKSPACE/

├── CLAUDE.md                     навигатор для Claude Code
├── README.md                     публичное описание
├── AI.md                         контекст для AI агентов
├── INDEX.md                      оглавление workspace
├── .gitignore

├── arch/                         СЛОЙ 1: ЗНАНИЯ
   ├── architect.ai.md           агент архитектора
   ├── AI.md
   ├── CLAUDE.md
   ├── theory/                   теория (LOCKED)
   ├── concept/                  концепция платформы
   ├── standards/                стандарты
   ├── patterns/                 паттерны
   ├── decisions/                ADR
   └── templates/                шаблоны документов

├── project/                      СЛОЙ 2: УПРАВЛЕНИЕ
   ├── CLAUDE.md
   ├── @projector.module/        модуль проектирования
   ├── @manager.module/          модуль управления
   ├── @tester.module/           модуль тестирования
   ├── org/                      клиентские проекты
      ├── it/
      ├── production/          
      ├── business/            
      └── data/                
   └── sys/                      системные проекты платформы

├── domains/                      СЛОЙ 3: ИСПОЛНЕНИЕ
   ├── @it.domain/               домен IT 
      ├── @drupal.coder/
      ├── @react.coder/
      └── @python.coder/
   ├── @production.domain/      
   ├── @business.domain/        
   └── @data.domain/            

├── infra/                        СЛОЙ 4: ИНФРАСТРУКТУРА
   ├── @executor.module/         модуль деплоя
   ├── @support.module/          модуль поддержки
   └── servers/                  конфиги серверов

├── system/                       СЛОЙ 5: ОБЩЕЕ
   ├── library/                  общий код, утилиты
   ├── data/                     общие данные
   ├── @mcp.service/             MCP серверы для Claude
   └── connectors/
       ├── @ozon.connector/
       └── @telegram.connector/

├── services/                     СЛОЙ 6: СЕРВИСЫ ОБСЛУЖИВАНИЯ
   ├── @scheduler.service/       планировщик задач
   └── @monitor.service/         мониторинг платформы

└── archive/                      архив устаревшего

5. ИМЕНОВАНИЕ МОДУЛЕЙ И АГЕНТОВ

5.1. Модуль

Модуль — автономная функциональная единица. Всегда в папке @name.type/.

Правило: @{имя}.{тип}/

Тип Где Что
.module project/, infra/ процессный модуль (управление)
.domain domains/ диспетчер домена исполнения
.coder domains/@it.domain/ IT стек
.maker domains/@production.domain/ производственная специализация
.flow domains/@business.domain/ бизнес-процессная специализация
.data domains/@data.domain/ специализация данных
.service system/, services/ платформенный сервис
.connector system/connectors/ интеграция с внешней системой

Примеры:

@projector.module/      процессный модуль проектирования
@it.domain/             диспетчер IT домена
@drupal.coder/          стек Drupal
@ozon.connector/        коннектор Ozon
@scheduler.service/     сервис планировщика

5.2. Агент

Агент — определение роли для Claude Code. Файл {имя}.ai.md внутри модуля или компонента.

Правило: {имя}.ai.md

arch/
  architect.ai.md           агент архитектора (уровень компонента)

project/@projector.module/
  projector.ai.md           агент проектора (уровень модуля)

domains/@it.domain/
  it.ai.md                  агент домена IT

domains/@it.domain/@drupal.coder/
  drupal.ai.md              агент стека Drupal

Claude Code читает {имя}.ai.md → берёт роль → становится агентом.

5.3. Служебные файлы AI

Файл Для кого Назначение
CLAUDE.md Claude Code CLI навигатор папки: что здесь, куда идти
AI.md AI агент служебный контекст папки для AI
{имя}.ai.md определение агента (роль, правила, протоколы)

Правила создания CLAUDE.md:

Где Создавать?
Корень workspace ✅ обязательно
Компоненты (arch/, project/, domains/, infra/, system/, services/) ✅ обязательно
Модули (@name.type/) ✅ если есть нюансы
Вложенные папки внутри модуля (library/, instructions/) ❌ не создавать

Правила создания AI.md:

Где Создавать?
Модули (@name.type/) ✅ обязательно
Компоненты с агентом ✅ если нужен контекст
Обычные папки ❌ не создавать

5.4. Четыре корневых файла

В корне workspace обязательно присутствуют все четыре:

$WORKSPACE/
  CLAUDE.md    ← навигатор для Claude Code
  AI.md        ← контекст для AI агентов
  README.md    ← публичное описание для людей
  INDEX.md     ← оглавление всего workspace

7. СТРУКТУРА $DATASPACE

$DATASPACE/
│
├── projects/                    ← Данные проектов (зеркало projects/ в $WORKSPACE)
│   ├── org/                     ← Клиентские проекты
│   └── sys/                     ← Системные данные
│
├── media/                       ← Вся графика, видео, аудио, документы
├── backup/                      ← Бэкапы БД, git, критических файлов
└── archive/                     ← Архив

Детальная структура — после согласования правил именования и матрицы типов документов.


8. МАРШРУТИЗАЦИЯ ПРОЕКТОВ

Адрес проекта определяет режим Проектора автоматически:

Путь Режим Заказчик Результат
project/org/* PRO-PRO Оператор / клиент остаётся в проекте
project/sys/* PRO-SYS Архитектор system/library/, arch/

PRO-SYS строит платформу и пополняет банк знаний.
PRO-PRO использует банк знаний и производит продукт клиента.


9. ЗАЩИЩЁННЫЕ ФАЙЛЫ

Заблокированные файлы маркируются суффиксом .fx.md:

QUESTIONS.fx.md   ← нельзя изменить без явного согласования
MERKABA.fx.md

Правило именования: {name}.fx.md

Pre-commit hook блокирует изменения любого *.fx.md файла.

Защищённые файлы платформы

Путь Маркер Почему
architect/theory/*.md .fx.md Фундамент, меняется никогда
architect/concept/PLATFORM.md защищён Главный документ платформы
architect/concept/METAMODEL.md защищён Метамодель — описывает описание
CLAUDE.md (корневой) защищён AI читает первым
architect/concept/PROJECTOR.md .fx.md Жизненный цикл проекта

Изменение защищённых файлов — только через согласование с Архитектором и документирование в CHANGELOG.


10. БЕЛЫЙ СПИСОК (разрешено в git)

 КОД
.py .js .ts .tsx .jsx .php .go .c .cpp .h .sh .bat .ps1

 ДОКУМЕНТАЦИЯ
.md .ai.md .txt .rst

 КОНФИГУРАЦИЯ
.yaml .yml .json .toml .ini .conf .xml .env.example

 WEB
.html .css .less .scss

 ШАБЛОНЫ
.twig .tpl .j2

 SQL
.sql

 СПЕЦИАЛЬНЫЕ
.gitignore .gitkeep .editorconfig Dockerfile Makefile LICENSE

 СПЕЦИАЛЬНЫЕ
.gitignore .gitkeep .editorconfig Dockerfile Makefile LICENSE

11. ЧЁРНЫЙ СПИСОК (запрещено в git)

 ВСЯ ГРАФИКА
.svg .ico .jpg .jpeg .png .gif .webp

 ШРИФТЫ
.woff2 .ttf .otf .eot

 МЕДИА
.mp4 .avi .mov .mp3 .wav

 ДОКУМЕНТЫ
.pdf .docx .doc .rtf

 ДАННЫЕ
.xlsx .xls .ods .csv

 БАЗЫ ДАННЫХ
.db .sqlite

 АРХИВЫ ДАННЫХ
.zip .tar .gz (если содержат данные, не код)

 CREDENTIALS
.env .key .pem (приватные)
.credentials.md

 ВРЕМЕННЫЕ
.pyc .log .tmp .cache

 ЗАВИСИМОСТИ
venv/ node_modules/ __pycache__/
.so .exe .pak

12. .gitignore — БАЗОВЫЙ ШАБЛОН

Базовый шаблон для всех проектов платформы:

# Зависимости
venv/
node_modules/
__pycache__/

# Компиляция
*.pyc
*.pyo
*.so
*.exe

# Базы данных
*.db
*.sqlite
*.sqlite3

# Credentials
.env
*.key
*.pem
.credentials.md

# Временные
*.log
*.tmp
*.cache
.DS_Store
Thumbs.db

# Вся графика (файлы, не документы — всегда в $DATASPACE)
*.svg
*.ico
*.jpg
*.jpeg
*.png
*.gif
*.webp

# Данные
*.xlsx
*.xls
*.ods

# Медиа
*.mp4
*.avi
*.mov
*.mp3
*.wav

# Документы
*.pdf
*.docx
*.doc

# Архивы данных
*.zip
*.tar.gz

# IDE
.idea/
.vscode/
*.swp
*.swo

# Нет исключений для графики — вся графика в $DATASPACE

12. PRE-COMMIT HOOKS

12.1. Блокировка изменений защищённых файлов (.fx.md)

#!/bin/bash
# Блокировка изменений файлов *.fx.md

LOCKED=$(git diff --cached --name-only | grep "\.fx\.md$")

if [ -n "$LOCKED" ]; then
  echo "❌ ОШИБКА: Попытка изменить защищённый файл:"
  echo "$LOCKED"
  echo ""
  echo "Файлы *.fx.md заблокированы."
  echo "Требуется согласование с Архитектором."
  exit 1
fi

echo "✅ Защищённые файлы не затронуты"
exit 0

12.2. Блокировка запрещённых типов

Файл: .git/hooks/pre-commit

#!/bin/bash
# Блокировка запрещённых типов файлов в git

BLACKLIST=".svg .ico .jpg .jpeg .png .gif .webp .xlsx .xls .csv .pdf .docx .mp4 .mp3 .db .sqlite"

echo "Проверка запрещённых файлов..."

for ext in $BLACKLIST; do
  FILES=$(git diff --cached --name-only --diff-filter=A | grep "$ext$")

  if [ -n "$FILES" ]; then
    echo "❌ ОШИБКА: Попытка добавить $ext файл в git:"
    echo "$FILES"
    echo ""
    echo "Файлы $ext запрещены в git."
    echo "Используйте \$DATASPACE."
    exit 1
  fi
done

echo "✅ Проверка пройдена"
exit 0

Установка:

chmod +x .git/hooks/pre-commit

13. АУДИТ: КОМАНДЫ ПРОВЕРКИ

13.1. Аудит git-репозитория на запрещённые типы

# Найти все запрещённые файлы в git
git ls-files | grep -E '\.(svg|ico|jpg|jpeg|png|gif|webp|xlsx|xls|csv|pdf|mp4|mp3|db|sqlite)$'

# Если вывод не пустой → нарушение стандарта

13.2. Поиск растровых изображений в проектах

# Найти всю графику в workspace (потенциальные нарушения)
find /opt/claude-workspace \( -name "*.svg" -o -name "*.ico" -o -name "*.jpg" -o -name "*.png" -o -name "*.gif" -o -name "*.webp" \) | grep -v ".git"

13.4. Поиск venv/node_modules в git

# Найти venv в git (должно быть пусто)
git ls-files | grep -E '(venv|node_modules|__pycache__)/'

СВЯЗАННЫЕ ДОКУМЕНТЫ


Статус: draft 0.2.0
Дата: 2026-04-10
Следующий шаг: Обсудить и утвердить → стать стандартом architect/standards/structure/structure-filesystem.md