syntaxis/.claude/PROJECT_RULES.md
Jesús Pérez 9cef9b8d57 refactor: consolidate configuration directories
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)
2025-12-26 18:36:23 +00:00

191 lines
6.7 KiB
Markdown

# Project Rules & Principles - syntaxis
## Core Rules
- Follow Rust guidelines from `dev-system/languages/rust/guidelines/`
- PAP = **Project's Architecture Principles** (configuration-driven, zero unsafe, 100% tests)
- **Configuration-driven**, never hardcoded (use TOML + Serde)
- Never patch with hardcoded fallbacks - fix the parsing instead
- Only essential error messages, suppress stack traces except DEBUG
## Project Overview
**syntaxis** is a standalone, production-grade project management platform extracted from the Tools ecosystem:
- **Purpose**: Orchestrate project lifecycle, task definitions, and status tracking
- **Foundation**: VAPORA SST (Software Specification & Tasks) integration
- **Architecture**: Modular monorepo with 6+ operational crates
- **Status**: ✅ Production-ready with 632+ tests passing
## Mandatory Standards
### Code Quality
| Rule | Standard | Status |
|------|----------|--------|
| **Safety** | `#![forbid(unsafe_code)]` - Zero unsafe | ✅ Pass |
| **Errors** | `Result<T>` with `?` operator, no `unwrap()` | ✅ Pass |
| **Documentation** | 100% public API documented (rustdoc) | ✅ Pass |
| **Tests** | 632+ tests, 15+ per module | ✅ Pass |
| **Format** | `cargo fmt --all` required | ✅ Pass |
| **Linting** | `cargo clippy --all-targets` must pass | ✅ Pass |
| **Audit** | `cargo audit` - no vulnerabilities | ✅ Pass |
### Error Handling
Use `thiserror` pattern:
```rust
use thiserror::Error;
#[derive(Error, Debug)]
pub enum WorkspaceError {
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("Database error: {0}")]
Database(String),
}
// Always: fn operation() -> Result<T> { ... }
```
### Module Structure
```rust
mod error; // Error types (thiserror)
mod types; // Domain types (Project, Task, Phase)
mod config; // Configuration (TOML + Serde)
mod managers; // Business logic (ProjectManager, PhaseManager)
mod persistence;// Database layer (SQLite)
mod tracking; // Task state tracking (for VAPORA)
#[cfg(test)] mod tests { ... }
```
## Professional Standards
- **Role**: Rust Senior Developer - idiomatic, production-grade code
- **Language**: English only (docs, strings, code)
- **Approach**: TDD (test-driven development)
- **Stack**: NuShell for scripts, Rust for executables
- **Tools**: Justfile for automation, cargo for builds
## Infrastructure
- Use `scripts/` directory for infrastructure
- Declarative & modular via configuration (TOML)
- NuShell for bash-type commands (not Python)
- Rust for executables (not Python)
## Project Tracking
- **NEVER remove `.coder` directory** - contains project lifecycle tracking
- `.coder/` structure: `PHASE_*.md`, `STATUS.md`, `SUMMARY.md`, `COMPLETION.md`
- Tracks migration from syntaxis → syntaxis
## Git & Development
- **NO git commands** unless explicitly requested
- No "ready to commit?" questions - proceed when guidelines met
- Fix bugs completely, don't simplify
- Auto-fix based on guidelines when appropriate
## Architecture Patterns
### Workspace Structure
```
syntaxis/
├── shared/ # Shared libraries
│ ├── rust-api/ # Shared REST API library (93 tests)
│ ├── rust-tui/ # Shared TUI utilities
│ └── rust/ # Shared utilities
├── syntaxis/ # Main project
│ ├── crates/ # 6-8 crates
│ │ ├── syntaxis-core/ # Core library (173 tests)
│ │ ├── syntaxis-cli/ # CLI tool
│ │ ├── syntaxis-tui/ # Terminal UI (10 tests)
│ │ ├── syntaxis-dashboard/# Web Dashboard (52 tests)
│ │ ├── dashboard-client/ # Dashboard client (4 tests)
│ │ ├── dashboard-shared/ # Shared dashboard types (5 tests)
│ │ ├── syntaxis-api/ # REST API (excluded - in progress)
│ │ └── syntaxis-vapora/ # VAPORA adapter (excluded - planned)
│ ├── docs/ # Documentation
│ ├── scripts/ # Build scripts (NuShell)
│ └── Cargo.toml # Workspace manifest
├── .coder/ # Project tracking (NEVER REMOVE)
├── .claude/ # Claude Code guidelines (local)
├── .project/ # dev-system installation
├── Cargo.toml # Root workspace
├── Cargo.lock # Dependency lock
├── Justfile # Build recipes
└── README.md # Project overview
```
### Configuration-Driven Design
- All settings via TOML + Serde
- Zero hardcoded values
- Environment variables for secrets (API keys, DB URLs)
- Feature flags for optional functionality
### Database Layer
```rust
// SQLite with async runtime (tokio)
use sqlx::{sqlite::SqlitePool, Row};
// Connection pooling for performance
let pool = SqlitePool::connect("sqlite:workspace.db").await?;
```
### REST API (axum)
```rust
// Tower middleware stack
use axum::{extract, middleware};
use tower::ServiceBuilder;
let app = ServiceBuilder::new()
.layer(middleware::TraceLayer::new_for_http())
.service(routes);
```
### Multi-Interface Architecture
- **CLI** (`workspace`): Command-line tool via clap
- **TUI** (`syntaxis-tui`): Terminal UI via ratatui
- **Dashboard** (`syntaxis-dashboard`): Web UI via Leptos
- **REST API** (`syntaxis-api`): Backend via axum (in progress)
## Important Notes
⚠️ **NEVER**:
- Remove `.coder` directory
- Use `unsafe` code
- Use `unwrap()` in production code
- Hardcode configuration values
- Simplify code when bugs are found
**ALWAYS**:
- Format, lint, test, document
- **Fix bugs completely** - don't simplify code when issues are found
- Use proper error handling with Result<T>
- Document public APIs with rustdoc
- Write tests first (TDD)
## Crate Status
| Crate | Type | Tests | Binaries | Status |
|-------|------|-------|----------|--------|
| syntaxis-core | lib | 173 | - | ✅ Active |
| syntaxis-cli | bin | - | `workspace` | ✅ Active |
| syntaxis-tui | bin | 10 | `syntaxis-tui` | ✅ Active |
| syntaxis-dashboard | lib | 52 | - | ✅ Active |
| syntaxis-api | bin | - | `syntaxis-api` | 🟡 WIP* |
| syntaxis-vapora | lib | - | - | 🟡 Planned* |
| shared-api-lib | lib | 93 | - | ✅ Shared |
*Excluded from workspace members - being developed separately
## VAPORA Integration
syntaxis is designed as the foundation SST (Software Specification & Tasks) for VAPORA:
- Task state tracking with audit trail
- Phase-based project orchestration
- Enterprise-grade change tracking
- Integration hooks for VAPORA orchestration engine
## For Details
- [CODE_STANDARDS.md](./.claude/CODE_STANDARDS.md) - Build, test, verification
- [DEVELOPMENT.md](./.claude/DEVELOPMENT.md) - Workflow, patterns, documentation