# System Constraints

These are non-negotiable guardrails.

---

## 1. Agent Is Authority

The agent:
- Owns filesystem enforcement
- Owns path normalization
- Owns write restrictions
- Owns upload allowlist
- Owns metadata

The API must NOT duplicate filesystem logic.

---

## 2. Runtime Root Sandbox

No operation may escape runtime root.

All paths:
- Cleaned
- Symlink-resolved
- Verified inside root

---

## 3. No Symlink Deployment Model

Uploads write directly to runtime.

No:
- staging folders
- symlink injection
- delayed deployment

---

## 4. Metadata Is Hidden

`.zlh_metadata.json`
`.zlh-shadow`

Must never be exposed via file APIs.

---

## 5. Upload Allowlist Only

Only:

- `mods/*.jar`
- `world/datapacks/*.zip`

Anything else → 403.

---

## 6. Delete Is Strictly Constrained

No recursive delete.
No directory delete.
One-level file only.

---

## 7. No Curated Inference

If metadata does not exist:
- `source: null`

Do not assume curated status.

---

## 8. Upload Transport

API upload must:
- Stream
- Not buffer entire file
- Not use fetch streaming
- Use raw piping

---

## 9. Timeouts

Upload route must use extended timeout.
Other file routes remain short.

---

## 10. Portal Does Not Enforce Security

Portal may validate for UX.
Agent enforces real policy.
