operations: enforce community capability limits

This commit is contained in:
a.tolmachev
2026-05-03 17:55:35 +00:00
parent 1f0818d660
commit 82b7b7278e
22 changed files with 612 additions and 324 deletions
+28 -65
View File
@@ -2,49 +2,49 @@
## Current
### `feat/edition-capability-model`
### `feat/community-surface-trim`
Status: in_progress
Goal:
- ввести capability model по редакциям и перестать смешивать Community и premium surface.
- привести открытую редакцию к честному product surface и убрать расхождение между текущим кодом и edition policy.
Main code areas:
- `crates/crank-core/src/*`
- `apps/admin-api/src/service.rs`
- `apps/admin-api/src/app.rs`
- `apps/ui/js/*`
- `apps/ui/html/*`
- `apps/ui/js/wizard.js`
- `apps/ui/js/wizard-model.js`
- `apps/ui/js/agents.js`
- `apps/ui/js/settings.js`
- `apps/ui/js/i18n.js`
- `docs/product-editions.md`
- `docs/frontend-roadmap.md`
- `docs/architecture.md`
- `docs/mcp-interface.md`
Implementation slices:
1. Ввести серверную модель capabilities:
- protocols
- auth modes
- security levels
- workspace/user/agent limits
2. Отдавать capability flags в `admin-api`.
3. Привести UI к capability gating вместо скрытых продуктовых допущений.
4. Зафиксировать Community defaults в docs и runtime config.
1. Скрыть или честно заблокировать:
- `WebSocket`
- `SOAP`
- `gRPC streaming`
- streaming execution modes
- `elevated/strict` security levels
в Community.
2. Привести copy и feature affordances к open-core границе.
3. Добавить edition-aware explanation в wizard и agents UI.
Progress:
- done: shared capability payload exists in `crank-core` and `admin-api`;
- done: authenticated `/api/admin/capabilities` exposes Community defaults to UI;
- done: first UI consumer uses capability payload in `Settings`;
- done: `protocol-capabilities` is edition-aware and Community wizard hides premium protocol cards;
- in_progress: surface Community-only security guidance inside wizard flow;
- pending: add server-side validation so unsupported protocol and security-level drafts are rejected, not only hidden in UI.
- done: Community wizard protocol list hides premium protocol cards;
- done: Community security note is shown inside wizard flow;
- done: server-side Community enforcement rejects unsupported protocols and premium security levels;
- pending: убрать или честно заблокировать оставшиеся Community-incompatible streaming affordances;
- pending: привести Agents/Settings copy к окончательной open-core границе.
DoD:
- UI знает, какие функции входят в текущую редакцию;
- Community не показывает рабочие controls для premium-only features;
- capability checks существуют не только в UI, но и на сервере.
- Community UX не создает ложного ожидания наличия premium functionality;
- protocol set и security levels совпадают в docs, UI и runtime contracts.
Verification:
- API tests for capability payloads;
- frontend smoke for hidden/locked states;
- manual verification on Community build.
- e2e checks for wizard protocol list;
- manual Community smoke;
- localized copy review.
## Next
@@ -83,43 +83,6 @@ Verification:
- unit tests for credential-kind enforcement;
- docs sync check.
### `feat/community-surface-trim`
Status: ready
Goal:
- привести открытую редакцию к честному product surface и убрать расхождение между текущим кодом и edition policy.
Main code areas:
- `apps/ui/js/wizard.js`
- `apps/ui/js/wizard-model.js`
- `apps/ui/js/agents.js`
- `apps/ui/js/settings.js`
- `apps/ui/js/i18n.js`
- `docs/product-editions.md`
- `docs/architecture.md`
- `docs/mcp-interface.md`
Implementation slices:
1. Скрыть или честно заблокировать:
- `WebSocket`
- `SOAP`
- `gRPC streaming`
- streaming execution modes
- `elevated/strict` security levels
в Community.
2. Привести copy и feature affordances к open-core границе.
3. Добавить edition-aware explanation в wizard и agents UI.
DoD:
- Community UX не создает ложного ожидания наличия premium functionality;
- protocol set и security levels совпадают в docs, UI и runtime contracts.
Verification:
- e2e checks for wizard protocol list;
- manual Community smoke;
- localized copy review.
## Planned
### `feat/frontend-commercial-polish`