Files
synapbus/specs/006-admin-cli-docker-fixes/data-model.md
T
Algis DumbrisandClaude Opus 4.6 9dd27c4b9b feat: admin CLI & Docker fixes — alpine base, channels create/join, absolute socket path
Switch Docker runtime from scratch to alpine:3.19 so kubectl exec works
for admin CLI operations. Add `synapbus channels create` and
`synapbus channels join` CLI commands with corresponding admin socket
handlers. Change default socket path to /data/synapbus.sock (absolute).
Also add Helm envFrom support and NodePort configuration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 14:54:13 +02:00

43 lines
1.8 KiB
Markdown

# Data Model: Admin CLI & Docker Fixes
**Feature**: 006-admin-cli-docker-fixes
**Date**: 2026-03-15
## No Schema Changes
This feature does not introduce any new database tables, columns, or migrations. All operations use existing entities:
### Existing Entities Used
#### Channel (existing)
- `id` (int64): Auto-increment primary key
- `name` (string): Unique, normalized channel name
- `description` (string): Optional description
- `type` (string): "standard", "blackboard", "auction"
- `is_private` (bool): Whether channel requires invite
- `is_system` (bool): Whether channel is system-managed
- `created_by` (string): Agent name of creator
- `created_at` (timestamp): Creation time
#### Membership (existing)
- `channel_id` (int64): FK to channels
- `agent_name` (string): Name of member agent
- `role` (string): "owner", "member"
- `joined_at` (timestamp): When the agent joined
### Data Flow
```
CLI Command Admin Socket Handler Channel Service
─────────────────────────────────────────────────────────────────────────────
channels create --name X → channels.create {name, desc} → CreateChannel(req)
channels join --ch X --ag Y → channels.join {channel, agent} → GetChannelByName(X)
→ JoinChannel(id, Y)
```
### Validation Rules (existing, no changes)
- Channel names: lowercase, alphanumeric + hyphens, 1-64 chars, no leading/trailing hyphens
- Agent names: must exist in the agent registry
- Channel join: idempotent (re-joining a channel the agent is already in is a no-op)
- Private channels: require a pending invite before join