From b2b0274078a9315ade7b79d75af24fb6197d461b Mon Sep 17 00:00:00 2001 From: Sebastian Kern Date: Wed, 30 Sep 2026 13:22:18 +0200 Subject: [PATCH] AGENTS.md: Platzhalter durch echte Befehle aus dem Repo ersetzt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build-, Test-, Lint-, Migrate- und Deploy-Zeile aus docs/deployment.md §5-§10 und den Workflows abgeleitet; Default-Branch master statt main, auch im push-Trigger der Baseline-CI. Offen: Non-goals, Rollback. Claude-Session: https://claude.ai/code/session_01VTEEt6GdcMENphnP22xTUc --- .github/workflows/ci.yml | 2 +- AGENTS.md | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2bf3b17..46a212c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ name: CI on: pull_request: push: - branches: [main] + branches: [master] concurrency: group: ci-${{ github.ref }} diff --git a/AGENTS.md b/AGENTS.md index 6d45708..236d257 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,22 +9,27 @@ Two founders (Sebastian Kern, Raphael Lugmayr), Upper Austria. Brands: Stoicera See `docs/00_ssot.md`. One sentence here: public, reproducible Java legacy modernisation with measured results, for Austrian SMEs and universities. Non-goals: . -Active PRD: `docs/prd/NN_*.md` — read before building. +Active PRD: `docs/PRD.md` — read before building. ## How we work here - Work = GitHub issue. Questions as issue comments, not chat. -- Fresh git worktree per task from `origin/main` (never build on main), PR against `main` with `Closes #NN` and the template Intent · Gherkin · Evidence · Debt taken · Open. Small PRs. CI green before PR. Full loop: `ai/prompts/factory-feature.md`. -- Build: `` · Test: `` · Lint/Typecheck: `` · Migrate: `` -- Deploy: push to `main` → GitHub Actions → Coolify (``) → smoke test → Sentry check. PostHog receives events from `main` (big products). Rollback: ``. -- Preview per PR at ``. +- Fresh git worktree per task from `origin/master` (never build on master), PR against `master` with `Closes #NN` and the template Intent · Gherkin · Evidence · Debt taken · Open. Small PRs. CI green before PR. Full loop: `ai/prompts/factory-feature.md`. +- There is no root pom; every Maven call needs `-f /pom.xml`. Commands per `docs/deployment.md` §5–§7: +- Build: `./mvnw -B verify -f modern/pom.xml` (also runs `npm ci` + Angular build, `ng lint`, `prettier --check`, Spotless, JaCoCo; needs Docker) · legacy: `./mvnw -B verify -f legacy/pom.xml` (JDK 8) +- Run a stand: `docker compose -f modern/docker-compose.yml up -d --wait` (legacy: `legacy/docker-compose.yml`) +- Test: `./mvnw verify -f e2e/pom.xml -Dtarget=legacy|modern` · characterization: `./mvnw verify -f characterization/pom.xml` (legacy; modern needs `-DbaseUrl=… -DdbUrl=… -Dstand=modern`) · both need a running stand +- Lint/Typecheck: part of the modern `verify` above · frontend alone: `npm run lint` in `modern/frontend` +- Migrate: Flyway runs on application start (`spring-boot-starter-flyway`); no separate command. +- Deploy: push to `master` → `.github/workflows/deploy.yml` builds both images to GHCR → triggers the Dokploy compose services `legacy-stand` / `modern-stand` → check with `deploy/verify-live.sh` (`docs/deployment.md` §10). Rollback: `` (no rollback command in the repo yet; images carry an immutable `sha-` tag). +- No per-PR preview: `deploy.yml` runs on `master` only. - Before you request review: check the result against the intent, fix deviations yourself. Copilot review runs automatically on every PR; a second model reviews security. - Decisions with reach → `docs/decisions/` (ADR, one page). Cycle memo → `docs/cycles/`. - After any production change: append one line to `ops/runlog.md` (date · agent · what · rollback). ## Conventions -- Stack: . +- Stack: legacy stand Java 8, Spring Boot 1.5, PostgreSQL 9.6 (preserved on purpose) · modern stand Java 25, Spring Boot 4.1, Flyway, PostgreSQL 18, Angular 22 frontend · Maven Wrapper, Docker Compose. - Money in cents (integer), time zone Europe/Vienna, tenant id on every table. - No new dependency without one sentence of justification in the PR. No speculative abstractions. - Tests: unit for logic, integration for API, one E2E per critical path. Synthetic data only.