zinit 0.3.9

Process supervisor with dependency management
Documentation
# ADR-003: API Compatibility with zinit.vibed

## Status

Accepted (Mostly Implemented)

## Context

zinit aims to be compatible with the zinit.vibed API (defined in `reference/openrpc.json`) while maintaining its own design principles.

## Decision

### Implemented

| Feature | Notes |
|---------|-------|
| `rpc.discover` | Returns OpenRPC spec |
| `service.is_running` | Simple bool check |
| `service.delete` | Alias to `service.remove` |
| `service.monitor` | Alias to `service.add` (no persist) |
| `service.register` | Alias to `service.add` (persist) |
| `service.start_all` | Starts all User-class services |
| `service.stop_all` | Stops all User-class services |
| `service.delete_all` | Deletes all User-class services |
| `status` field | start/stop/ignore in config |
| `class` field | user/system in config |
| `/etc/zinit/system/` | PID1 mode system services |

### Won't Implement

| Feature | Reason |
|---------|--------|
| `system.reboot` RPC | Dangerous if not PID1; use CLI -> pid1 signal |
| `system.poweroff` RPC | Same reason |
| `service.list` format change | Breaking change, low value |
| Positional params | Named params work fine |

### Deferred

| Feature | Notes |
|---------|-------|
| `service.stats` | CPU/memory from /proc |
| `logs.filter` | Filter logs by service name |
| `xinit.*` module | Socket activation (separate feature) |

## Consequences

- Compatible with existing zinit.vibed tooling
- ServiceClass system protects critical services from bulk ops
- Clear separation of concerns (RPC vs signal for dangerous ops)