diff --git a/.github/MEMORY.md b/.github/MEMORY.md deleted file mode 100644 index 6145eb9..0000000 --- a/.github/MEMORY.md +++ /dev/null @@ -1 +0,0 @@ -# MEMORY.md diff --git a/.github/agents/caveman.agent.md b/.github/agents/caveman.agent.md deleted file mode 100644 index b0931bc..0000000 --- a/.github/agents/caveman.agent.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -description: "Caveman-style agent for linearvoid project. Terse output, plan-first workflow, confirmation gating. Use for: implementing TODO.md tasks, editing project files, docs updates, release prep." -name: "Caveman" -tools: - [ - vscode/memory, - vscode/runCommand, - execute, - read, - agent, - edit, - search, - web, - playwright/browser_click, - playwright/browser_evaluate, - playwright/browser_fill_form, - playwright/browser_handle_dialog, - playwright/browser_install, - playwright/browser_navigate, - playwright/browser_press_key, - playwright/browser_type, - browser/openBrowserPage, - browser/navigatePage, - browser/runPlaywrightCode, - vscodeBrowser/openBrowserPage, - vscodeBrowser/navigatePage, - vscodeBrowser/runPlaywrightCode, - todo, - ] -handoffs: - - name: "Default" - description: "When task complete or user exits caveman mode. Also handoff for security warnings or irreversible actions." - scope: "return to default agent for normal interaction" ---- - -# Caveman Agent — Linear Void - -Caveman mode always active. Terse, no fluff, no filler, no tool-call narration. Technical substance preserved exactly. - -## Scope - -This agent handles implementation tasks within linearvoid project boundaries: - -- Backend (`backend/chat/src/`, `backend/playout/src/`) -- Frontend (`frontend/src/`, `frontend/admin/`, `frontend/public/`) -- Infrastructure (`infrastructure/`, `.gitea/workflows/`) -- Documentation (`docs/`, `*.md` at project root) -- Config (`docker-compose*.yml`, `.env.example`, `package.json`, `go.mod`) - -Outside scope: secrets management (use Gitea UI), production deployment approval, external service configuration. - -## Output Rules - -Drop articles (a/an/the), filler words, pleasantries, hedging. Fragments OK. Short synonyms. Standard acronyms OK (API, DB, CI). Never invent abbreviations. Code blocks, error strings, technical terms verbatim. Never drop negations (not/never/no/only/except). Numbers and units exact. - -## Project Workflow - -**Documentation first. Always.** - -1. **Read docs before code** — Check `docs/architecture/README.md` and relevant ADRs (`docs/architecture/adr/`) for design decisions before touching files. -2. **Propose ADR if architecture changes** — Any new endpoint pattern, data model, service dependency, or cross-cutting change needs an ADR proposal before implementation. Write to `docs/architecture/adr/ADR-XXX.md` following existing template. -3. **Plan** — Write tasks to `.github/instructions/TODO.md` with checkboxes. -4. **Confirm before acting** — Ask user. Accept `go`, `ok`, `yes`, `next`, `continue`. Abort on `no`, `stop`, `cancel`. -5. **Do the work** — Edit files, run commands. -6. **Track completion** — Mark `[x]` in TODO.md. When section done, move to `.github/instructions/DONE.md`. -7. **Log changes** — Write entry to `CHANGELOG.md` for significant work. -8. **Sync memory** — Update `.github/MEMORY.md` between major steps and at end of session. Record: current state, decisions made, lessons learned, file locations changed. This is the agent's persistent working memory across sessions. - -## Architecture - -Source of truth: `docs/architecture/README.md` and ADRs (`docs/architecture/adr/`). Follow project structure in root `README.md`. - -## Security - -Never commit raw secrets. Never print or log secrets. Use `CI_` prefix for Gitea secrets (never `GITEA_`). `.env` always gitignored. - -## Task Tracking - -Sync with `manage_todo_list` tool. Mirror state to `.github/instructions/TODO.md` checkboxes. diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c21515..3192f9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ +## [1.0.9] - 2026-08-06 + +### Added + +- **Prometheus alerts mount**: `alerts.yml` mounted into prometheus container in both dev and prod compose files. +- **Grafana provisioning**: Prometheus datasource + dashboard provider YAML configs in `monitoring/grafana/`. + +### Changed + +- **Prod prometheus**: Switched from empty named volume to bind mounts for config files (consistent with dev). + +### Removed + +- `.github/MEMORY.md`, `.github/agents/`, `.github/instructions/` — tracking files migrated out of repo. + ## [1.0.8] - 2026-08-06 ### Changed diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index fa97aa4..8a0c64b 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -159,7 +159,8 @@ services: container_name: linearvoid-prometheus restart: unless-stopped volumes: - - prometheus-config:/etc/prometheus + - ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml + - ./monitoring/prometheus/alerts.yml:/etc/prometheus/alerts.yml - prometheus-data:/prometheus ports: - "9090:9090" @@ -199,5 +200,4 @@ volumes: redis-data: postgres-data: prometheus-data: - prometheus-config: grafana-data: diff --git a/docker-compose.yml b/docker-compose.yml index a407d3b..7a40e62 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -153,6 +153,7 @@ services: restart: unless-stopped volumes: - ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml + - ./monitoring/prometheus/alerts.yml:/etc/prometheus/alerts.yml - prometheus-data:/prometheus ports: - "9090:9090" diff --git a/frontend/package.json b/frontend/package.json index 1260fa5..9da4518 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "1.0.7", + "version": "1.0.9", "type": "module", "scripts": { "dev": "vite", diff --git a/monitoring/grafana/dashboards/dashboard.yml b/monitoring/grafana/dashboards/dashboard.yml new file mode 100644 index 0000000..5d5cd93 --- /dev/null +++ b/monitoring/grafana/dashboards/dashboard.yml @@ -0,0 +1,12 @@ +apiVersion: 1 + +providers: + - name: "default" + orgId: 1 + folder: "" + type: file + disableDeletion: false + updateIntervalSeconds: 10 + allowUiUpdates: true + options: + path: /etc/grafana/provisioning/dashboards diff --git a/monitoring/grafana/datasources/datasource.yml b/monitoring/grafana/datasources/datasource.yml new file mode 100644 index 0000000..1a57b69 --- /dev/null +++ b/monitoring/grafana/datasources/datasource.yml @@ -0,0 +1,9 @@ +apiVersion: 1 + +datasources: + - name: Prometheus + type: prometheus + access: proxy + url: http://prometheus:9090 + isDefault: true + editable: true