- .github/workflows/ci.yml: two jobs — frontend (tsc --noEmit, lint, build, Playwright) and backend (Postgres 16 + odoo:19 --test-enable --test-tags encoach_api) — catches regressions before merge. - docs/adr/: start an Architecture Decision Record trail with 0001 canonical directory layout, 0002 JWT refresh flow, 0003 paginated response envelope, 0004 RAG metadata + chunking. - docs/PROJECT_SUMMARY.md §21 Hardening Release: full recap of the AI quality loop, compliance, Paymob, i18n, and CI work shipped in this drop, plus new DB tables, REST routes, frontend routes, verification results, and operator-facing configuration. - README.md refreshed for the v4 split-repo doctrine and the new feature surface. - new_project/DEPRECATED.md: formal retirement notice pointing at backend/ as the canonical tree. Made-with: Cursor
646 B
646 B
ADR {NUMBER}: {TITLE}
- Status: Proposed | Accepted | Superseded by ADR-XXXX
- Date: YYYY-MM-DD
- Deciders: @handle1, @handle2
Context
What is the problem? What forces are at play (technical, business, social)? Keep this short; link out to source files or tickets for depth.
Decision
What did we decide to do? Use imperative voice. Be specific enough that a new engineer can understand the scope by reading this section alone.
Consequences
- Positive: …
- Negative / trade-offs: …
- Follow-up work: …
Alternatives considered
- Option A — why it was rejected.
- Option B — why it was rejected.