Docs: Bump constitution to v1.3.0 — require PostgreSQL for integration tests
§2.5: Remove the planned PostgreSQL→SQLite refactor note; prohibit alternative database engines in integration tests. §5.2: Explicitly require a real PostgreSQL instance for integration tests; ban SQLite — a GROUP BY/HAVING production bug was masked by SQLite's permissive dialect in feature 007. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
<!--
|
<!--
|
||||||
SYNC IMPACT REPORT
|
SYNC IMPACT REPORT
|
||||||
==================
|
==================
|
||||||
Version change: 1.1.1 → 1.2.0
|
Version change: 1.2.0 → 1.3.0
|
||||||
Ratified: 2026-05-01 | Last amended: 2026-05-03
|
Ratified: 2026-05-01 | Last amended: 2026-05-06
|
||||||
|
|
||||||
Principles introduced (first population from docs/CONSTITUTION.md):
|
Principles introduced (first population from docs/CONSTITUTION.md):
|
||||||
- §2 Architecture Principles (6 sub-principles)
|
- §2 Architecture Principles (6 sub-principles)
|
||||||
@@ -94,10 +94,11 @@ The constitution acknowledges all three; the spec governs which is built.
|
|||||||
|
|
||||||
### 2.5 Database abstraction
|
### 2.5 Database abstraction
|
||||||
|
|
||||||
PostgreSQL is the Phase 1 database. All DB access MUST go through a repository
|
PostgreSQL is the database. All DB access MUST go through a repository layer
|
||||||
layer (one repository class per domain aggregate). Raw SQL or an ORM is
|
(one repository class per domain aggregate). Raw SQL or an ORM is acceptable,
|
||||||
acceptable, but no query logic MAY live outside a repository. This makes the
|
but no query logic MAY live outside a repository. No alternative database
|
||||||
planned PostgreSQL → SQLite refactor a repository-layer change only.
|
engine (SQLite, DuckDB, in-memory substitutes) MAY be used in integration
|
||||||
|
tests — dialect differences mask production bugs.
|
||||||
|
|
||||||
### 2.6 No speculative abstraction
|
### 2.6 No speculative abstraction
|
||||||
|
|
||||||
@@ -179,8 +180,11 @@ before any implementation step.
|
|||||||
### 5.2 Test pyramid
|
### 5.2 Test pyramid
|
||||||
|
|
||||||
- **Unit tests** — pure logic, repository mocks, no I/O
|
- **Unit tests** — pure logic, repository mocks, no I/O
|
||||||
- **Integration tests** — API routes tested against a real (test) database
|
- **Integration tests** — API routes tested against a real PostgreSQL instance
|
||||||
and a real (test) S3-compatible bucket (e.g. MinIO in Docker)
|
and a real S3-compatible bucket (e.g. MinIO in Docker). SQLite and other
|
||||||
|
in-memory database substitutes are **prohibited** — PostgreSQL-specific
|
||||||
|
behaviour (GROUP BY enforcement, JSON operators, constraint handling) MUST
|
||||||
|
be exercised by the test suite.
|
||||||
- **E2E tests** — Angular + API, minimal set covering the core happy paths
|
- **E2E tests** — Angular + API, minimal set covering the core happy paths
|
||||||
|
|
||||||
Unit and integration tests are required. E2E tests are best-effort in v1.
|
Unit and integration tests are required. E2E tests are best-effort in v1.
|
||||||
@@ -284,7 +288,8 @@ Phase 1 design is complete.
|
|||||||
| 1.1.0 | 2026-05-02 | Adopted into Spec Kit memory; fixed duplicate §4.3 → §4.4; strengthened "should" language to MUST/MUST NOT; added §9 Governance |
|
| 1.1.0 | 2026-05-02 | Adopted into Spec Kit memory; fixed duplicate §4.3 → §4.4; strengthened "should" language to MUST/MUST NOT; added §9 Governance |
|
||||||
| 1.1.1 | 2026-05-03 | Clarify that the only acceptable form of image transformation or editing is thumbnail generation |
|
| 1.1.1 | 2026-05-03 | Clarify that the only acceptable form of image transformation or editing is thumbnail generation |
|
||||||
| 1.2.0 | 2026-05-03 | §2.4: Mark Phase 2 (JWT bearer auth) complete, reword phase status; §6: Add PyJWT to tech stack table; §8: Remove username/password auth from out-of-scope (now shipped) |
|
| 1.2.0 | 2026-05-03 | §2.4: Mark Phase 2 (JWT bearer auth) complete, reword phase status; §6: Add PyJWT to tech stack table; §8: Remove username/password auth from out-of-scope (now shipped) |
|
||||||
|
| 1.3.0 | 2026-05-06 | §2.5: Remove planned PostgreSQL → SQLite refactor note; prohibit alternative database engines in integration tests. §5.2: Explicitly require PostgreSQL for integration tests; prohibit SQLite — a production HAVING/GROUP BY bug was masked by SQLite's permissive dialect. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Version**: 1.2.0 | **Ratified**: 2026-05-01 | **Last Amended**: 2026-05-03
|
**Version**: 1.3.0 | **Ratified**: 2026-05-01 | **Last Amended**: 2026-05-06
|
||||||
|
|||||||
Reference in New Issue
Block a user