Initial project blueprint

This commit is contained in:
2026-07-03 20:51:36 +03:00
commit 7d6cc1c83e
25 changed files with 1486 additions and 0 deletions
+99
View File
@@ -0,0 +1,99 @@
# Принцип: нет жестких запретов в коде
## Требование
В проекте не должно быть hardcoded-запретов вида:
```text
if tool == "command.run": deny
if sql contains "DELETE": deny
if action == "filesystem": deny
```
Так делать нельзя.
## Правильный подход
Код должен классифицировать действие и спросить policy engine.
```text
action → classify → policy.check → decision
```
Policy decision:
```json
{
"decision": "allow | confirm | manual | disabled_by_config",
"reason": "string",
"requires_confirmation": true,
"preview": {}
}
```
## Пример
Команда:
```text
file.write D:/Projects/test.txt
```
Tool возвращает metadata:
```json
{
"risk_level": "write",
"resource": "filesystem",
"preview_available": true
}
```
Policy проекта:
```json
{
"filesystem": {
"mode": "confirm"
}
}
```
Результат:
```text
Нужно подтверждение.
```
Если policy:
```json
{
"filesystem": {
"mode": "full_auto"
}
}
```
Результат:
```text
Выполнить сразу.
```
## Режимы
```text
full_auto — выполнять без подтверждения
confirm — спросить подтверждение
manual — показать план и ждать ручного запуска
disabled — отключено настройкой
```
`disabled` допустим только как настройка проекта, а не как зашитый запрет.
## Зачем
Пользователь сам выбирает уровень риска.
Система не должна становиться бесполезной из-за того, что разработчик заранее запретил все потенциально опасные действия.