Skip to content

RC release for docker build fix#1577

Merged
TheLastCicada merged 8 commits into
developfrom
v2-rc2
Apr 10, 2026
Merged

RC release for docker build fix#1577
TheLastCicada merged 8 commits into
developfrom
v2-rc2

Conversation

@TheLastCicada

@TheLastCicada TheLastCicada commented Apr 10, 2026

Copy link
Copy Markdown
Contributor

Note

Medium Risk
Adds new 409 conflict behavior to multiple V2 DELETE endpoints unless ?force=true, which can affect clients and deletion workflows. Docker base image and native module build steps also change CI/build behavior, with moderate risk of environment-specific breakage.

Overview
V2 DELETE endpoints now enforce referential integrity guards for methodology, program, stakeholder, and label: deletions return 409 Conflict with reference counts when dependent records exist (including staged INSERT/UPDATE rows), unless ?force=true is provided.

Build/CI hardening: adds a GitHub Actions docker-smoke-test workflow that builds the image, verifies sqlite3 loads, starts the container, and hits health endpoints; updates the Dockerfile to use node:24-trixie and rebuild sqlite3 from source after npm install. Docs and both integration/live tests are updated to cover the new guard/force-delete behavior and messages.

Reviewed by Cursor Bugbot for commit 64299a6. Bugbot is set up for automated code reviews on this repo. Configure here.

TheLastCicada and others added 8 commits April 7, 2026 13:00
The v2/unit/split example used incorrect v1 field names (unitOwner,
countryJurisdictionOfOwner) and was missing supported optional fields.
Add field reference tables and fix the example to use the correct v2
field names: unitCurrentOwner, unitStatusReason, unitStatusDate.
docs(V2): document optional fields for unit split endpoint
Add referential integrity guards for methodology, program, stakeholder, and
label deletes so they block when links exist in committed tables or in
staged INSERT/UPDATE rows, with explicit force-delete override support.

Extend integration coverage for live and staged reference conflicts and
update live API delete helpers/docs to reflect and exercise the guard flow.
Address bugbot findings: add `committed: false` to the staging query
to prevent double-counting references after commit but before sync
cleanup, and replace the local toSnakeCase with the existing export
from v2-camel-to-snake.js.
…ards-staging

fix(V2): guard shared deletes against staged references
The node:24 image defaults to Debian Bookworm (glibc 2.36), but the
sqlite3 prebuilt binary requires glibc 2.38. This causes a fatal
GLIBC_2.38-not-found crash at startup, putting all CADT pods into
CrashLoopBackOff.

Two-part fix:
- Switch base image from node:24 (Bookworm) to node:24-trixie
  (Debian 13 stable, glibc 2.41) so prebuilt native binaries are
  compatible with the container's C library
- Add npm rebuild sqlite3 --build-from-source as a safety net so the
  native addon is always compiled against the container's actual glibc
Build the Docker image and verify it works on every PR and push to
develop/main/v2-*. Two checks:

1. Native module load — catches glibc mismatches like the GLIBC_2.38
   error that put all CADT pods into CrashLoopBackOff
2. Container startup — runs the app with USE_SIMULATOR=true and waits
   for the "Server listening" log message
fix: upgrade to node:24-trixie and rebuild sqlite3 from source
@TheLastCicada TheLastCicada merged commit cde8247 into develop Apr 10, 2026
25 checks passed
@TheLastCicada TheLastCicada deleted the v2-rc2 branch April 10, 2026 16:58
@TheLastCicada TheLastCicada restored the v2-rc2 branch April 10, 2026 21:14
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