Merge _configs/ into config/ for single configuration directory. Update all path references. Changes: - Move _configs/* to config/ - Update .gitignore for new patterns - No code references to _configs/ found Impact: -1 root directory (layout_conventions.md compliance)
494 lines
14 KiB
Markdown
494 lines
14 KiB
Markdown
# Installation System: Current vs Proposed
|
|
|
|
**Quick Reference:** Understanding the improvements to target installation with configs and wrappers
|
|
|
|
---
|
|
|
|
## Current System (Status Quo)
|
|
|
|
### Installation Flow
|
|
|
|
```
|
|
User runs: install-cli.nu all
|
|
|
|
↓
|
|
|
|
1. COMPILE
|
|
└─ cargo build --release (workspace)
|
|
|
|
↓
|
|
|
|
2. INSTALL BINARIES
|
|
├─ cargo install --path syntaxis-cli
|
|
│ └─ Binary → ~/.cargo/bin/workspace
|
|
├─ cargo install --path syntaxis-tui
|
|
│ └─ Binary → ~/.cargo/bin/syntaxis-tui
|
|
├─ cargo install --path syntaxis-api
|
|
│ └─ Binary → ~/.cargo/bin/syntaxis-api
|
|
└─ cargo install --path syntaxis-dashboard
|
|
└─ No binary (library)
|
|
|
|
↓
|
|
|
|
3. CLEANUP (optional)
|
|
└─ Remove target/ directories
|
|
|
|
↓
|
|
|
|
RESULT: Binaries in ~/.cargo/bin/, everything else user's responsibility
|
|
```
|
|
|
|
### Configuration Management
|
|
|
|
```
|
|
Where configs are:
|
|
├── syntaxis/syntaxis-api-config.template.toml ❌ Still named "syntaxis-api"
|
|
└── syntaxis/configs/features/*.toml.template
|
|
|
|
How binaries find config:
|
|
├─ Hardcoded path "configs/default.toml"
|
|
├─ Environment variable CONFIG_PATH (if set by user)
|
|
└─ No standardized discovery
|
|
|
|
Where configs end up:
|
|
└─ Nowhere! (User must manually copy/manage)
|
|
|
|
Result:
|
|
❌ Configs not deployed
|
|
❌ Binaries can't find configs
|
|
❌ No installation tracking
|
|
```
|
|
|
|
### User Experience
|
|
|
|
```
|
|
$ just scripts-install
|
|
✅ workspace: Installed successfully
|
|
✅ syntaxis-tui: Installed successfully
|
|
✅ syntaxis-api: Installed successfully
|
|
|
|
$ workspace --version
|
|
❌ Error: Config file not found at configs/default.toml
|
|
|
|
$ nano syntaxis-api.toml
|
|
# Manually edit configuration
|
|
|
|
$ WORKSPACE_CONFIG_PATH=/home/user/syntaxis-api.toml syntaxis-api
|
|
# User must manually set environment variable
|
|
```
|
|
|
|
### Problems with Current System
|
|
|
|
| Problem | Impact | Severity |
|
|
|---------|--------|----------|
|
|
| Config templates not deployed | User must manually copy configs | 🔴 Critical |
|
|
| Binaries can't find deployed configs | Application fails to start | 🔴 Critical |
|
|
| No standard config location | Different users have different setups | 🟠 High |
|
|
| No installation tracking | Can't verify what's installed | 🟠 High |
|
|
| Config filename wrong (lifecycle) | Confusion about which project | 🟡 Medium |
|
|
| No wrapper scripts | No automatic environment setup | 🟡 Medium |
|
|
| Manual environment setup | Users forget to set variables | 🟡 Medium |
|
|
|
|
---
|
|
|
|
## Proposed System (After Phase 1-4)
|
|
|
|
### Installation Flow
|
|
|
|
```
|
|
User runs: just scripts-install
|
|
|
|
↓
|
|
|
|
1. COMPILE
|
|
└─ cargo build --release (workspace)
|
|
|
|
↓
|
|
|
|
2. INSTALL BINARIES
|
|
├─ cargo install --path syntaxis-cli
|
|
│ └─ Binary → ~/.cargo/bin/workspace
|
|
├─ cargo install --path syntaxis-tui
|
|
│ └─ Binary → ~/.cargo/bin/syntaxis-tui
|
|
├─ cargo install --path syntaxis-api
|
|
│ └─ Binary → ~/.cargo/bin/syntaxis-api
|
|
└─ cargo install --path syntaxis-dashboard
|
|
└─ No binary (library)
|
|
|
|
↓
|
|
|
|
3. DEPLOY CONFIGURATIONS (NEW)
|
|
├─ Create ~/.config/core/
|
|
├─ Copy syntaxis-api-config.template.toml
|
|
├─ Copy configs/features/*.toml.template
|
|
└─ Validate all configurations
|
|
|
|
↓
|
|
|
|
4. INSTALL WRAPPERS (NEW - Phase 2)
|
|
├─ Rename ~/.cargo/bin/workspace → ~/.cargo/bin/workspace.real
|
|
├─ Create wrapper script at ~/.cargo/bin/workspace
|
|
│ └─ Finds config, sets up environment, calls .real binary
|
|
└─ Same for syntaxis-tui, syntaxis-api
|
|
|
|
↓
|
|
|
|
5. REGISTER IN MANIFEST (NEW)
|
|
├─ Create .syntaxis/manifest.toml
|
|
├─ Track installed binaries (name, version, path)
|
|
├─ Track deployed configs (type, location)
|
|
└─ Save installation metadata
|
|
|
|
↓
|
|
|
|
6. VERIFY INSTALLATION (NEW)
|
|
└─ Test each wrapper, validate configs, print summary
|
|
|
|
↓
|
|
|
|
RESULT: Fully configured, ready-to-run binaries with tracked installation
|
|
```
|
|
|
|
### Configuration Management
|
|
|
|
```
|
|
Where configs are:
|
|
├─ syntaxis/syntaxis-api-config.template.toml ✅ Renamed, correct name
|
|
├─ syntaxis/configs/features/auth.toml.template
|
|
├─ syntaxis/configs/features/database.toml.template
|
|
├─ syntaxis/configs/features/cache.toml.template
|
|
├─ syntaxis/configs/features/health.toml.template
|
|
├─ syntaxis/configs/features/metrics.toml.template
|
|
├─ syntaxis/configs/features/multi_tenant.toml.template
|
|
├─ syntaxis/configs/features/rate_limit.toml.template
|
|
├─ syntaxis/configs/features/projects.toml.template ✅ NEW
|
|
├─ syntaxis/configs/features/tasks.toml.template ✅ NEW
|
|
├─ syntaxis/configs/features/phases.toml.template ✅ NEW
|
|
└─ syntaxis/configs/features/audit.toml.template ✅ NEW
|
|
|
|
Where configs end up:
|
|
├─ ~/.config/core/syntaxis-api.toml ✅ Standard location
|
|
└─ ~/.config/core/features/*.toml ✅ Feature configs
|
|
|
|
How binaries find config:
|
|
├─ Wrapper script sets WORKSPACE_CONFIG_DIR
|
|
├─ Automatic find-config utility discovers:
|
|
│ ├─ ~/.config/core/
|
|
│ ├─ .project/
|
|
│ └─ .coder/
|
|
└─ Code respects environment variables
|
|
|
|
Installation tracking:
|
|
└─ .syntaxis/manifest.toml tracks:
|
|
├─ syntaxis-api version, path, installation date
|
|
├─ All deployed feature configs
|
|
├─ Configuration versions
|
|
└─ Enable/disable status
|
|
|
|
Result:
|
|
✅ All configs deployed automatically
|
|
✅ Binaries can find configs
|
|
✅ Standard location (~/.config/)
|
|
✅ Installation fully tracked
|
|
```
|
|
|
|
### User Experience
|
|
|
|
```
|
|
$ just scripts-install
|
|
🔨 Installing syntaxis binaries...
|
|
✅ workspace: Installed successfully
|
|
✅ syntaxis-tui: Installed successfully
|
|
✅ syntaxis-api: Installed successfully
|
|
|
|
📋 Configurations deployed to:
|
|
~/.config/core/
|
|
├─ syntaxis-api.toml
|
|
└─ features/
|
|
├─ auth.toml
|
|
├─ database.toml
|
|
├─ cache.toml
|
|
├─ health.toml
|
|
├─ metrics.toml
|
|
├─ multi_tenant.toml
|
|
├─ rate_limit.toml
|
|
├─ projects.toml
|
|
├─ tasks.toml
|
|
├─ phases.toml
|
|
└─ audit.toml
|
|
|
|
✅ Registered 1 binary and 11 configurations in manifest
|
|
|
|
Next steps:
|
|
workspace --version # Test workspace CLI
|
|
syntaxis-tui # Launch TUI
|
|
syntaxis-api # Start REST API
|
|
|
|
$ workspace --version
|
|
syntaxis v0.1.0
|
|
|
|
Config loaded from: ~/.config/core/syntaxis-api.toml
|
|
Data directory: ~/.local/share/core/
|
|
|
|
$ nano ~/.config/core/syntaxis-api.toml
|
|
# User can easily edit configuration
|
|
|
|
$ syntaxis-api
|
|
Config loaded ✅
|
|
Features enabled:
|
|
✅ database (SQLite)
|
|
✅ auth (JWT)
|
|
✅ metrics (Prometheus)
|
|
✅ rate_limit (enabled)
|
|
✅ health (enabled)
|
|
|
|
Server listening on 0.0.0.0:8080
|
|
```
|
|
|
|
### Benefits of Proposed System
|
|
|
|
| Improvement | Before | After | Impact |
|
|
|-------------|--------|-------|--------|
|
|
| **Config Deployment** | Manual copy | Automatic | 🟢 Saves 5 mins |
|
|
| **Config Discovery** | User setup env var | Automatic with wrapper | 🟢 Just works |
|
|
| **Config Location** | Scattered | ~/.config/core/ | 🟢 Standard |
|
|
| **Installation Tracking** | Manual notes | manifest.toml | 🟢 Automatic audit |
|
|
| **Config Naming** | "syntaxis-api" (wrong) | "syntaxis-api" (correct) | 🟢 No confusion |
|
|
| **Workspace Features** | Missing (projects, tasks, etc.) | Complete templates | 🟢 Extensible |
|
|
| **User Onboarding** | Complex setup | Single command | 🟢 User friendly |
|
|
| **Environment Setup** | Manual variables | Wrapper handles | 🟢 Reliable |
|
|
| **Uninstallation** | Scattered cleanup | Manifest-tracked | 🟢 Clean removal |
|
|
|
|
---
|
|
|
|
## Implementation Phases
|
|
|
|
### Phase 1: Configuration Deployment ✅ Ready to Start
|
|
**Duration:** 1-2 weeks
|
|
|
|
```
|
|
Current: ❌ Configs not deployed
|
|
After: ✅ Configs automatically deployed during installation
|
|
✅ Workspace-specific templates created
|
|
✅ Standard config location established
|
|
✅ Installation tracked in manifest
|
|
```
|
|
|
|
**What Gets Done:**
|
|
- Rename syntaxis-api → syntaxis-api
|
|
- Create projects, tasks, phases, audit templates
|
|
- Update installation script to copy configs
|
|
- Create installation guide
|
|
|
|
**User Impact:** "Configs are automatically deployed where they belong"
|
|
|
|
---
|
|
|
|
### Phase 2: Wrapper Scripts 🔜 Next
|
|
**Duration:** 1-2 weeks
|
|
|
|
```
|
|
Current: ❌ No wrapper scripts
|
|
After: ✅ Wrapper scripts setup environment
|
|
✅ Config auto-discovery
|
|
✅ Env variables automatically set
|
|
✅ Binary execution just works
|
|
```
|
|
|
|
**What Gets Done:**
|
|
- Create wrapper script generator
|
|
- Rename binaries, create wrapper scripts
|
|
- Setup environment variables
|
|
- Document wrapper architecture
|
|
|
|
**User Impact:** "Binaries just work, no manual setup needed"
|
|
|
|
---
|
|
|
|
### Phase 3: Manifest Enhancement 🔜 Later
|
|
**Duration:** 1 week
|
|
|
|
```
|
|
Current: ❌ No version/config tracking
|
|
After: ✅ Full installation audit trail
|
|
✅ Easy rollback capability
|
|
✅ Config version management
|
|
```
|
|
|
|
**What Gets Done:**
|
|
- Extend manifest.toml schema
|
|
- Add config validation
|
|
- Track configuration versions
|
|
- Support rollback
|
|
|
|
**User Impact:** "Can track and rollback installations"
|
|
|
|
---
|
|
|
|
### Phase 4: Documentation & Testing 🔜 Final
|
|
**Duration:** 1 week
|
|
|
|
```
|
|
Current: ❌ Scattered documentation
|
|
After: ✅ Complete guides (Installation, Configuration, Wrapper)
|
|
✅ Integration tests
|
|
✅ Troubleshooting guide
|
|
```
|
|
|
|
**What Gets Done:**
|
|
- Create docs/installation-guide.md
|
|
- Create docs/configuration.md
|
|
- Create WRAPPER_GUIDE.md
|
|
- Add integration tests
|
|
|
|
**User Impact:** "Clear documentation for every scenario"
|
|
|
|
---
|
|
|
|
## Side-by-Side Comparison: CLI Usage
|
|
|
|
### Current System
|
|
|
|
```bash
|
|
# Step 1: Install (works)
|
|
$ just scripts-install
|
|
✅ workspace: Installed
|
|
|
|
# Step 2: Try to run (fails)
|
|
$ workspace --version
|
|
Error: Config not found at configs/default.toml
|
|
|
|
# Step 3: Manual setup (user must do this)
|
|
$ export CONFIG_PATH=/home/user/workspace.toml
|
|
$ cp syntaxis-api.toml /home/user/workspace.toml
|
|
$ nano /home/user/workspace.toml # Edit
|
|
|
|
# Step 4: Run again (works if config is correct)
|
|
$ workspace --version
|
|
syntaxis v0.1.0
|
|
|
|
# User must repeat steps 3-4 for each command
|
|
$ export CONFIG_PATH=/home/user/workspace.toml && syntaxis-api
|
|
```
|
|
|
|
### Proposed System (After Phase 1)
|
|
|
|
```bash
|
|
# Step 1: Install (includes configs)
|
|
$ just scripts-install
|
|
✅ workspace: Installed
|
|
✅ Configs deployed to ~/.config/core/
|
|
|
|
# Step 2: Run immediately (just works)
|
|
$ workspace --version
|
|
syntaxis v0.1.0
|
|
Config: ~/.config/core/syntaxis-api.toml
|
|
|
|
# Step 3: Customize if needed
|
|
$ nano ~/.config/core/syntaxis-api.toml
|
|
|
|
# Step 4: Run again with custom config (automatically picked up)
|
|
$ syntaxis-api
|
|
Features loaded from: ~/.config/core/
|
|
Server listening on 0.0.0.0:8080
|
|
|
|
# No environment variables needed, no manual setup
|
|
```
|
|
|
|
---
|
|
|
|
## Architecture Summary
|
|
|
|
### Current
|
|
```
|
|
┌─────────────────┐
|
|
│ User runs CLI │
|
|
└────────┬────────┘
|
|
│
|
|
├─ Binary installed
|
|
│
|
|
└─ ❌ Config not found
|
|
❌ Env var not set
|
|
❌ Fails to start
|
|
```
|
|
|
|
### Proposed
|
|
```
|
|
┌─────────────────────────────────────┐
|
|
│ 1. just scripts-install │
|
|
│ (Compile + Install + Deploy) │
|
|
└────────┬────────────────────────────┘
|
|
│
|
|
├─ Binaries to ~/.cargo/bin/
|
|
├─ Configs to ~/.config/core/
|
|
├─ Wrappers setup environment
|
|
└─ Manifest tracks installation
|
|
|
|
┌─────────────────────────────────────┐
|
|
│ 2. User runs binary (e.g., syntaxis-api) │
|
|
└────────┬────────────────────────────┘
|
|
│
|
|
├─ Wrapper script executes
|
|
│ ├─ Find config file
|
|
│ ├─ Set environment variables
|
|
│ └─ Validate configuration
|
|
│
|
|
└─ Binary starts with config loaded
|
|
✅ Server running
|
|
✅ Features enabled
|
|
✅ Listening on port 8080
|
|
```
|
|
|
|
---
|
|
|
|
## Key Differences Table
|
|
|
|
| Aspect | Current | Proposed |
|
|
|--------|---------|----------|
|
|
| **Config Deployment** | Manual | Automatic during install |
|
|
| **Config Location** | User responsibility | ~/.config/core/ |
|
|
| **Config Discovery** | Hardcoded path | Automatic + env var support |
|
|
| **Environment Setup** | User must setup | Wrapper script does it |
|
|
| **Installation Tracking** | None | .syntaxis/manifest.toml |
|
|
| **Getting Started** | 5+ manual steps | 1 command (just scripts-install) |
|
|
| **Troubleshooting** | Complex | Clear error messages + docs |
|
|
| **Config Templates** | Incomplete | Complete with workspace features |
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
### For Understanding
|
|
1. Read **INSTALLATION_ARCHITECTURE.md** for full design
|
|
2. Read **PHASE_1_IMPLEMENTATION.md** for first tasks
|
|
3. This document (quick reference)
|
|
|
|
### For Implementation
|
|
1. **Start Phase 1** when ready:
|
|
- 30 mins: Rename config files
|
|
- 1 hour: Create workspace feature templates
|
|
- 1 hour: Update installation script
|
|
- 1 hour: Create documentation
|
|
- Total: ~4 hours per developer
|
|
|
|
2. **Phase 1 Success Criteria:**
|
|
- ✅ Configs deployed to ~/.config/core/
|
|
- ✅ Installation script updated
|
|
- ✅ Templates created for projects, tasks, phases, audit
|
|
- ✅ Documentation added
|
|
- ✅ All tests pass
|
|
|
|
3. **Then Phase 2:**
|
|
- Wrapper script implementation
|
|
- Environment setup automation
|
|
- Testing
|
|
|
|
---
|
|
|
|
**Document Version:** 1.0
|
|
**Status:** Ready to Share
|
|
**Created:** November 15, 2025
|
|
|
|
See **INSTALLATION_ARCHITECTURE.md** for full technical details.
|
|
See **PHASE_1_IMPLEMENTATION.md** for implementation checklist.
|