Skip to content

chore(ci): update GitHub Actions runtime pins - #4

Merged
scottconverse merged 1 commit into
mainfrom
cleanup/node24-actions
Apr 28, 2026
Merged

chore(ci): update GitHub Actions runtime pins#4
scottconverse merged 1 commit into
mainfrom
cleanup/node24-actions

Conversation

@scottconverse

Copy link
Copy Markdown
Contributor

Updates GitHub Actions runtime pins to avoid the Node 20 deprecation path observed during the cleanup sprint.

Changes:

  • actions/checkout@v4 -> @v5
  • actions/setup-python@v5 -> @v6
  • actions/upload-artifact@v4 -> @v7 where present

No product code changes.

@scottconverse
scottconverse merged commit 8f8d7ce into main Apr 28, 2026
2 checks passed
@scottconverse
scottconverse deleted the cleanup/node24-actions branch April 28, 2026 18:00
scottconverse added a commit that referenced this pull request Jun 28, 2026
…obustness, coverage, honesty)

Adversarial verification panel (4 lenses) found 0 Blocker / 1 Critical / 2 Major / 6 Minor.
All resolved:

Critical — trusted-write secret was embedded in the staff page served over an unauthenticated GET:
- Removed server-rendered token from render_staff_page; the operator now pastes the token into a
  field kept in sessionStorage and sent only as X-CivicAccess-Write-Token on save/export.
- Added test_staff_page_never_leaks_the_write_token (asserts the env secret never appears in the page).

Major — Postgres-default selection and the async->sync conversion had zero coverage:
- Added tests/test_database_url_selection.py: _sync_database_url scheme flip + credential/marker
  preservation + sqlite passthrough; _review_database_url precedence (override > DATABASE_URL > SQLite).

Major — backup/restore proof only covered the SQLite dev fallback, not the Postgres default store:
- Added test_postgres_review_and_audit_survive_reconnect (default-store durability across a fresh
  engine); scoped/reworded the SQLite test (backup taken while live) and the gap #4 evidence.

Minor:
- Constant-time token comparison (hmac.compare_digest).
- _sync_database_url now rewrites only the URL scheme via sqlalchemy make_url (robust to passwords/
  db names containing scheme-marker substrings).
- CHANGELOG no longer overclaims the records_export audit is in the review transaction.
- Removed the discredited "v1.0.0" label from four module docstrings; verify-release.sh now greps
  civicaccess/*.py to keep it out.

Full verify-release.sh PASSED against real Postgres: 45 passed, docs/placeholder/ruff gates,
0.4.0 wheel+sdist build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant