# Platform Values

Constants, limits, defaults, and enumeration values.

## Value Files

### Limits (`limits.ncl`)

Platform limits and constraints:
- Port limits (1024-65535)
- Connection limits per mode
- Worker thread limits
- Agent instance limits
- Timeout limits
- Pool size limits
- Storage limits

Example:
```nickel
let limits = import "values/limits.ncl" in
let max_workers = limits.workers.max  # 32
```

### Defaults (`defaults.ncl`)

Default values applied to all modes:
- Server defaults (host, port, workers)
- Database defaults (URL, credentials)
- Monitoring defaults (log level, metrics)
- Security defaults (TLS disabled by default)
- Storage defaults (paths, backup settings)

Example:
```nickel
let defaults = import "values/defaults.ncl" in
let default_port = defaults.server.port  # 8080
```

### Ranges (`ranges.ncl`)

Enumeration values and valid ranges:
- Log levels: [trace, debug, info, warn, error]
- Auth methods: [jwt, oauth2, mfa]
- Storage backends: [filesystem, s3, azure]
- Budget windows: [daily, weekly, monthly]
- LLM providers: [claude, openai, gemini, ollama]
- Deployment modes: [solo, multiuser, enterprise]
- Protocol schemes: [ws, wss, http, https, file]

Example:
```nickel
let ranges = import "values/ranges.ncl" in
let valid_modes = ranges.deployment_modes  # ["solo", "multiuser", "enterprise"]
```

## Usage Pattern

```nickel
let limits = import "values/limits.ncl" in
let defaults = import "values/defaults.ncl" in
let ranges = import "values/ranges.ncl" in

# Check against limits
assert port > limits.port.min && port < limits.port.max

# Use defaults
let config = {
  port = defaults.server.port,
  workers = 4,
}

# Validate enum
assert std.array.contains ranges.log_levels "info"
```

## References

- Parent: `../README.md`
- Constraints: `../constraints/README.md`
- Validators: `../validators/README.md`
