release: v1.3.0 (Phase 1 CivicCore extraction) - #32
Merged
Merged
Conversation
Mechanics-only release. No API or UI changes. Bumps version across all source surfaces and adds the [1.3.0] CHANGELOG section per the release- hardening directive. ## What's in v1.3.0 Phase 1 CivicCore extraction landed: civiccore v0.1.0 is now consumed as a release-wheel dependency. Two-layer Alembic migration order (civiccore first via subprocess, then records-side). Migration idempotency guards on 14 records-side migrations. CI merge bar hardened with 3 ADR-0003 migration gate tests. scripts/verify-release.sh 6-step gate. .dockerignore build hardening (frontend build context -99.6%, api -49%; frontend now builds on clean clones). Full bullet list: CHANGELOG.md [1.3.0] section. ## Files changed (3a — version bumps, 3b — CHANGELOG) 20 files touched. Canonical version of record: - backend/pyproject.toml: version = "1.2.0" -> "1.3.0" Mirrors (each one matches the canonical): - backend/app/config.py APP_VERSION - frontend/package.json - docs/openapi.json - docs/UNIFIED-SPEC.md (current-release header + version-lockstep block) - docs/SUPERVISOR.md (operator lockstep instruction) - docs/index.html, docs/architecture/*.html, docs/admin-manual-it.html, docs/user-manual-staff.html, docs/civicrecords-ai-manual.html (titles, badges, footers) - docs/generate_pdfs.py (current-release prose constant) - docs/generate_docx.py (Status section body_para — adds v1.3.0 entry above v1.2.0) - frontend/src/components/app-shell.tsx (footer) - frontend/src/pages/Dashboard.test.tsx, Settings.test.tsx (mock /admin/status payloads + assertion strings) - README.md, README.txt (Status section: new v1.3.0 entry above v1.2.0; Current build pointer bumped) - CHANGELOG.md ([1.3.0] - 2026-04-25 section added above [1.2.0]; [Unreleased] reset to empty Keep-a-Changelog template) ## Files NOT changed (intentionally — historical, fixture, deprecated) - CHANGELOG.md [1.2.0] section (history) - backend/tests/test_civiccore_migration_gates.py (Gate 2 tests upgrade FROM v1.2.0 — that's the contract, not the current version) - backend/tests/fixtures/schema_v1_2_0.sql (v1.2.0 baseline fixture; never rename) - HTML manuals' "v1.2.0 UPDATE NOTICE" historical change-blocks - docs/UNIFIED-SPEC.md "[NEW in v1.2.0]" legend / "As of v1.2.0..." feature-set narrative - docs/SUPERVISOR.md "post-v1.2.0 on master" line (will become post-v1.3.0 after this tag ships, per directive's "After v1.3.0 ships" section) - docs/github-discussions-seed.md (v1.2.0 launch-event prose) - All deprecated/RETRACTED docs and CHANGE-CONTROL.md history ## Civiccore wheel pin — confirmed unchanged backend/pyproject.toml stays exactly: civiccore @ https://github.com/CivicSuite/civiccore/releases/download/v0.1.0/civiccore-0.1.0-py3-none-any.whl Image-build git requirement: confirmed already removed (was needed for git+https; the wheel URL removed it at PR #26). ## Binary doc artifacts — deferred to follow-up #31 The committed binary artifacts (README.docx/.pdf, README-FULL.pdf, USER-MANUAL.docx/.pdf, docs/civicrecords-ai-manual.docx/.pdf, docs/UNIFIED-SPEC.docx, etc.) are content-stale relative to this source bump. Per Path B ruling (2026-04-25), source-only ship + tracked follow-up issue (#31). Hard Rule 0's "all four in sync" obligation is tracked there, not skipped. ## Refs - Dev directive: dev_directive_civicsuite_step2b_step3_2026-04-24.md - Canonical sequence: project_civicsuite_release_hardening.md - Phase 1 merge (PR #24): 0cd5a7a - civiccore wheel pin (PR #26): ca11d08 - Step 2b real fixture (PR #28): 3825cc4 - .dockerignore (PR #29): fe5d7e3 - Binary-regen follow-up: #31 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release: v1.3.0 (Phase 1 CivicCore extraction)
Mechanics-only release. No API or UI changes. v1.3.0 cuts the records side after Phase 1 CivicCore extraction, with the release path hardened through Step 2b (real v1.2.0 schema fixture for Gate 2) and pre-Step-3 build hygiene (
.dockerignore, PR #29).What's in v1.3.0
See
CHANGELOG.md[1.3.0]for the full bullet list. Highlights:civiccorev0.1.0 is a declared dependency (release wheel, not source). Shared models (User, Role, Department, audit_log) and migrations live in civiccore.civiccore.migrations.runner.upgrade_to_head(), then records-side.scripts/verify-release.sh6-step gate..dockerignore(PR #29).Operator upgrade notes (will appear in the GitHub release body too)
Operators upgrading from v1.2.0 need exactly three things:
civiccore-0.1.0automatically from the GitHub release URL. Docker Compose users: rebuild the backend image (docker compose build backend).docker compose up, civiccore migrations run first via the app startup path, then records migrations. Manual Alembic users: run civiccore's runner first (python -c "from civiccore.migrations.runner import upgrade_to_head; upgrade_to_head()") beforealembic upgrade head. Fresh installs unaffected.3d Verification Log
bash scripts/verify-release.sh— all 6 steps greenanalytics/router.py,connectors/rest_api.py,main.py— carried from PR #29's run, not a release blocker). Version lockstep:1.3.0across 4 surfaces (backend/pyproject.toml,frontend/package.json,CHANGELOG.md,docs/UNIFIED-SPEC.md). All 6 required docs present (README.md,CHANGELOG.md,CONTRIBUTING.md,LICENSE,.gitignore,docs/index.html).collected == passed) is enforced — every collected test ran and passed; nopytest.skip, noxfail, no swallowed errors. The 3 ADR-0003 migration gates (test_gate1_fresh_install,test_gate2_upgrade_from_v1_2,test_gate3_civiccore_first_install) are inside this suite.Dashboard.test.tsx+Settings.test.tsx.ruff: 0 violationsdocker compose exec -T api ruff check .exit 1, "Found 82 errors" (72 auto-fixable). None introduced by v1.3.0 source bumps. CI workflow (.github/workflows/ci.yml) does not run ruff anywhere. Path B ruling (mechanics-only release; lint cleanup deserves its own focused PR with the CI gate as a forcing function — issue #33 covers both the cleanup and the CI wiring).Out of scope (tracked separately)
Refs
dev_directive_civicsuite_step2b_step3_2026-04-24.mdproject_civicsuite_release_hardening.md0cd5a7a(PR #24)ca11d08(PR #26)3825cc4(PR #28)fe5d7e3(PR #29)🤖 Generated with Claude Code