Skip to content

IAM/Profile Clean Compose Smoke ​

Scope ​

This smoke proves the IAM/Profile runtime slice on a clean, isolated Docker Compose project. It starts service-owned Postgres databases, runs IAM/Profile migrations, boots iam-service and profile-service, and verifies the real HTTP health/readiness/JWKS endpoints.

This is clean-runtime evidence only. It does not approve default /api/auth*, profile, or KYC route promotion.

Run ​

Parser/self-test:

bash
cd go-platform
IAM_PROFILE_CLEAN_COMPOSE_SELF_TEST=1 make test-iam-profile-clean-compose

Live clean Compose smoke:

bash
cd go-platform
IAM_PROFILE_CLEAN_COMPOSE_CONFIRM=clean-runtime \
IAM_PROFILE_HOST_POSTGRES_PORT=55435 \
IAM_PROFILE_HOST_IAM_PORT=18081 \
IAM_PROFILE_HOST_PROFILE_PORT=18082 \
IAM_PROFILE_CLEAN_COMPOSE_ARTIFACT_DIR=output/qa/iam-profile-clean-compose-$(date +%Y%m%d-%H%M%S) \
make test-iam-profile-clean-compose

When the IAM/Profile/migrator images already exist locally, avoid a network image build by using local-image mode:

bash
cd go-platform
IAM_PROFILE_CLEAN_COMPOSE_CONFIRM=clean-runtime \
IAM_PROFILE_CLEAN_COMPOSE_USE_LOCAL_IMAGES=1 \
IAM_PROFILE_IAM_IMAGE=hoctapaz/iam-service:local \
IAM_PROFILE_PROFILE_IMAGE=hoctapaz/profile-service:local \
IAM_PROFILE_MIGRATOR_IMAGE=hoctapaz/migrator:local \
IAM_PROFILE_HOST_POSTGRES_PORT=55435 \
IAM_PROFILE_HOST_IAM_PORT=18081 \
IAM_PROFILE_HOST_PROFILE_PORT=18082 \
IAM_PROFILE_CLEAN_COMPOSE_TIMEOUT=240 \
IAM_PROFILE_CLEAN_COMPOSE_ARTIFACT_DIR=output/qa/iam-profile-clean-compose-$(date +%Y%m%d-%H%M%S) \
make test-iam-profile-clean-compose

The script removes the isolated Compose project and volumes by default. Set IAM_PROFILE_CLEAN_COMPOSE_KEEP=1 only when debugging a failed run.

Latest Local Proof ​

On 2026-07-10, the build-mode clean Compose smoke passed with artifacts under:

txt
output/qa/iam-profile-clean-compose-20260710-1555/

Artifact files:

  • iam-health.json
  • iam-ready.json
  • iam-jwks.json
  • profile-health.json
  • profile-ready.json
  • iam-service-migrations.status
  • profile-service-migrations.status
  • iam-profile-ports.override.yml

The run used:

  • Docker Compose build mode for IAM, Profile, and migrator images
  • Host ports 5543, 18081, and 18082
  • Compose project hoctapaz-iam-profile-clean-20260710

The captured status files recorded:

  • iam-service-migrations exited 0
  • profile-service-migrations exited 0

The captured HTTP responses recorded:

  • IAM /healthz: service=iam-service, status=ok, goVersion=go1.22.12
  • IAM /readyz: service=iam-service, status=ready, checks.self=ok
  • IAM JWKS: meta.status=symmetric-signing-compatibility
  • Profile /healthz: service=profile-service, status=ok, goVersion=go1.22.12
  • Profile /readyz: service=profile-service, status=ready, checks.self=ok

The command built the images in the isolated project, then removed the project, containers, network, and Postgres volume after the pass. The port/volume preflight confirmed no smoke resources remained afterward.

The earlier local-image/no-build proof remains useful when registry access is unavailable, but the latest evidence above proves the normal Compose build path on the current source tree.

Cutover Boundary ​

Use this smoke as clean service-runtime and migration-ordering evidence only. Default route promotion still requires production-like populated target validation with the captured backfill run report, UUID readiness/FK/promotion checks on the same target DSNs, gateway/browser proof through api-gateway, and rollback evidence.

Go-platform documentation is generated from repository Markdown.