2025-11-11 23:38:18 +01:00
## Philosophy
2026-01-14 20:25:25 +01:00
Minimal PHP for modern conveniences. Prioritize longevity (decade-scale maintainability) by avoiding volatile dependencies. Strictly add only what's essential—readable, simple, and future-proof.
2025-11-11 23:38:18 +01:00
2026-01-14 23:15:18 +01:00
## Edit instructions
All edits to this AGENT.md file should be done in a compressed shortform for LLM consumption.
2026-01-14 20:25:25 +01:00
## Core Constraints
**Minimalism:** Only essential tech (HTML, PHP 8.4+, CSS). No JS, frameworks, build tools, or package managers. Comments only for major sections.
2025-11-11 23:38:18 +01:00
2026-01-14 20:25:25 +01:00
**Frontend:**
- Classless, semantic HTML5
- Modern CSS: nesting, `oklch()` , grid, `clamp()` , logical props
- Responsive via fluid typography + flexible layouts
2025-11-11 23:38:18 +01:00
2026-01-14 20:25:25 +01:00
**Security:**
- Path validation blocks traversal
- Files restricted to document root
- Strict MIME types + no direct user-input execution
2025-11-11 23:38:18 +01:00
2026-01-14 20:25:25 +01:00
## Code Style
**PHP:** Modern syntax (arrow functions, null coalescing, match). Type hints where practical. Ternary for simple conditionals. Single-purpose functions.
2025-11-11 23:38:18 +01:00
2026-01-14 20:25:25 +01:00
**CSS:** Variables, native nesting, grid layouts. `clamp()` over `@media` . Relative units > pixels.
2025-11-11 23:38:18 +01:00
2026-01-14 20:25:25 +01:00
**Templates:** Escape output (`htmlspecialchars()` for UGC). Short echo tags (`<?= $var ?>` ).
2026-01-14 23:15:18 +01:00
## Development Environment and workflow
**LLM Agent Testing Protocol:**
**Container isolation:** ALL test data (CSV, temp files, generated content) MUST remain inside container filesystem (not mounted volumes)
*Testing website:** `curl localhost:4040/path` to fetch pages, test forms with `curl -X POST -d "field=value" localhost:4040/path`
- **Test data paths:** Use `/tmp/` or `/var/test/` inside container—never write to `/var/www/html` or mounted dirs during tests
**Running tests:** `podman exec stopplidelsen.no php /path/to/test.php` or `podman-compose run --rm custom php /tmp/test-script.php`
**Syntax checks:** `podman exec stopplidelsen.no php -l /var/www/custom/file.php`
**Cleanup:** `podman-compose down && podman-compose up -d` between test runs