# Platform Validators

Reusable validation functions for configuration values.

## Validators

### Port Validator (`port-validator.ncl`)

Validates port numbers:
- Valid range: 1024-65535 (excludes system ports < 1024)
- Checks for unreserved ports
- Predicate functions for validation

Functions:
- `is_valid_port(port)` - Returns bool
- `is_unreserved_port(port)` - Returns bool
- `validate_port(port)` - Returns {valid, error}
- `is_system_port(port)` - Returns bool

### Budget Validator (`budget-validator.ncl`)

Validates cost tracking configuration:
- Role budget limits (must be > 0)
- Threshold percentages (0-100)
- Budget windows (daily/weekly/monthly)
- Complete budget limit validation

Functions:
- `is_valid_budget(cents)` - Returns bool
- `is_valid_threshold(percent)` - Returns bool
- `is_valid_window(window)` - Returns bool
- `validate_role_limits(limits)` - Returns {valid, errors}
- `validate_threshold(percent)` - Returns {valid, error}

## Usage Pattern

```nickel
let port_validator = import "validators/port-validator.ncl" in

assert port_validator.is_valid_port 8080

let result = port_validator.validate_port 9001
if result.valid then
  "Port OK"
else
  "Port error: %{result.error}"
```

## References

- Parent: `../README.md`
- Constraints: `../constraints/README.md`
- Values: `../values/README.md`
