Skip to content

feat(auth): retire fakeidp — Keycloak is the IdP everywhere - #2315

Merged
cyberantonz merged 2 commits into
constructorfabric:mainfrom
cyberantonz:feat/2198-retire-fakeidp
Aug 7, 2026
Merged

feat(auth): retire fakeidp — Keycloak is the IdP everywhere#2315
cyberantonz merged 2 commits into
constructorfabric:mainfrom
cyberantonz:feat/2198-retire-fakeidp

Conversation

@cyberantonz

@cyberantonz cyberantonz commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Part of #2198 (ADR-0003). Deletes the fakeidp OIDC test double and migrates its last consumers to the in-stack Keycloak.

What

  • Deleted: the fakeidp crate, its helm subchart, the umbrella chart dependency/values/helpers wiring, the compose service + auth-fakeidp profile, the CI component entry, and Dockerfile workspace-skeleton references.
  • functional-ci (k3s smoke): now deploys the in-stack Keycloak subchart (shared MariaDB, DB created by the existing pre-install hook), realm generated by insight-seed-realm and applied via the keycloak-config-cli hook Job. The workflow installs uv and runs the keycloak-realm make target; deploy timeout raised 5m → 10m to cover Keycloak first boot.
  • Gateway e2e rigs (main + downstream-verify): the fakeidp container is replaced with a realm-importing Keycloak; the pytest client now drives the real HTML login form (cookie jar + login-actions/authenticate POST).
  • Seed/stand tooling: AUTH_MODE / --auth-mode removed; the whole roster gets login rows keyed on persona uuid (matching the generated realm's sub); IDP_SOURCE_TYPE defaults to keycloak.
  • Docs: DESIGNs updated to the Keycloak-only reality; ADR-0001/0002/0003 get dated status-history notes (historical rationale untouched); ADR-0003 registered in the cfs artifact registry, clearing pre-existing dangling refs.
  • gitops Makefile: keycloak-realm reads .keycloak.devUserEmail (the .fakeidp.* key is gone).

The chart-side removal is inert for deployed environments: every published chart line defaults fakeidp.deploy: false, and the sibling insight-gitops cleanup (dropping the now-dead overrides) is prepared separately.

Verification

  • cargo check --workspace + cargo fmt --check clean; authenticator oidc unit tests pass (7/7).
  • Gateway e2e: 11/11 passed locally against the real Keycloak login form; downstream-verify e2e: 6/6 passed.
  • Seed unit suite: 38 tests OK; render_profile --check passes.
  • helm dependency update + full helm template render with the functional-ci overlay: clean, zero fakeidp strings, config-cli hook + Keycloak DB CREATE/GRANT present.
  • docker compose config, pre-commit run (full changed set), and cfs validate/check-language on touched spec artifacts: green.
  • Only remaining risk needs a real run: functional-k3s hook/readiness ordering (authenticator discovery is per-login, so the post-install realm hook should not deadlock the atomic wait) — proven by this PR's own merge-queue run.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Local, CI, and end-to-end authentication now use bundled Keycloak with generated roster realms.
    • Keycloak login and realm-import flows are integrated into development, deployment, and testing workflows.
    • Identity seeding now supports complete roster login mappings.
  • Bug Fixes

    • Removed obsolete authentication-mode configuration and legacy provider references.
  • Documentation

    • Updated setup, deployment, troubleshooting, and architecture guidance for Keycloak-based authentication.

@cyberantonz
cyberantonz requested a review from a team as a code owner August 7, 2026 04:15
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@cyberantonz, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 9 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7167721d-7522-44a2-a77c-428bfddf999e

📥 Commits

Reviewing files that changed from the base of the PR and between 4070fcb and 4e74747.

⛔ Files ignored due to path filters (2)
  • charts/insight/Chart.lock is excluded by !**/*.lock
  • src/backend/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (74)
  • .cf-studio/config/artifacts.toml
  • .claude/skills/file-bug-insight/SKILL.md
  • .env.compose.example
  • .github/workflows/functional-k3s.yml
  • .github/workflows/gateway.yml
  • CONTRIBUTING.md
  • charts/insight/Chart.yaml
  • charts/insight/templates/NOTES.txt
  • charts/insight/templates/_helpers.tpl
  • charts/insight/templates/secrets.yaml
  • charts/insight/values.yaml
  • deploy/HELM_DEPLOY.md
  • deploy/compose/authenticator-fullauth.yaml
  • deploy/compose/insight-init.sh
  • deploy/compose/keycloak/README.md
  • deploy/gitops/.gitignore
  • deploy/gitops/Makefile
  • deploy/gitops/environments/functional-ci/values.yaml
  • deploy/gitops/environments/local/inventory.yaml.template
  • deploy/gitops/environments/local/values.yaml.template
  • deploy/gitops/scripts/compose-app-secrets.sh
  • deploy/gitops/secrets-store.yaml.template
  • dev-compose.sh
  • docker-compose.yml
  • docs/components/backend/authenticator/DESIGN.md
  • docs/components/backend/authenticator/specs/ADR/0001-per-environment-idp-selection.md
  • docs/components/backend/authenticator/specs/ADR/0002-real-idp-on-deployed-stands.md
  • docs/components/backend/authenticator/specs/ADR/0003-keycloak-identity-broker.md
  • docs/components/deployment/specs/DESIGN.md
  • scripts/ci/components.py
  • src/backend/Cargo.toml
  • src/backend/services/analytics/Dockerfile
  • src/backend/services/authenticator/Dockerfile
  • src/backend/services/authenticator/config/insight.yaml
  • src/backend/services/authenticator/src/config.rs
  • src/backend/services/authenticator/src/identity.rs
  • src/backend/services/authenticator/src/oidc.rs
  • src/backend/services/authenticator/tests/common/kc.rs
  • src/backend/services/authenticator/tests/e2e_refresher.rs
  • src/backend/services/authenticator/tests/run-e2e.sh
  • src/backend/services/fakeidp/Cargo.toml
  • src/backend/services/fakeidp/Dockerfile
  • src/backend/services/fakeidp/README.md
  • src/backend/services/fakeidp/helm/Chart.yaml
  • src/backend/services/fakeidp/helm/templates/_helpers.tpl
  • src/backend/services/fakeidp/helm/templates/deployment.yaml
  • src/backend/services/fakeidp/helm/templates/ingress.yaml
  • src/backend/services/fakeidp/helm/templates/service.yaml
  • src/backend/services/fakeidp/helm/values.yaml
  • src/backend/services/fakeidp/src/lib.rs
  • src/backend/services/fakeidp/src/main.rs
  • src/backend/services/fakeidp/tests/boot.rs
  • src/backend/services/fakeidp/tests/flow.rs
  • src/backend/services/fakeidp/users.yaml
  • src/backend/services/gateway/tests/.gitignore
  • src/backend/services/gateway/tests/conftest.py
  • src/backend/services/gateway/tests/docker-compose.e2e.yml
  • src/backend/services/gateway/tests/downstream-verify/README.md
  • src/backend/services/gateway/tests/downstream-verify/conftest.py
  • src/backend/services/gateway/tests/downstream-verify/docker-compose.e2e.yml
  • src/backend/services/gateway/tests/downstream-verify/run-e2e.sh
  • src/backend/services/gateway/tests/run-e2e.sh
  • src/backend/services/identity-resolution/Dockerfile
  • src/ingestion/tests/e2e/lib/api_coverage.py
  • src/ingestion/tools/seed/PROFILE.md
  • src/ingestion/tools/seed/insight_seed/identity.py
  • src/ingestion/tools/seed/insight_seed/manifest.py
  • src/ingestion/tools/seed/insight_seed/profiles.py
  • src/ingestion/tools/seed/seed-job.yaml.tpl
  • src/ingestion/tools/seed/seed-stand.sh
  • src/ingestion/tools/seed/tests/test_identity.py
  • tests/lib/insight_stand/manifest.py
  • tests/lib/insight_stand/session.py
  • tests/stand/api/identity/test_internal.py
📝 Walkthrough

Walkthrough

The change retires fakeidp and makes Keycloak the authentication provider across Compose, GitOps, Helm, CI, seed generation, authenticator configuration, and gateway end-to-end tests. Keycloak realms are generated from roster data and imported before test and CI deployments.

Changes

Keycloak migration

Layer / File(s) Summary
Seed identity contracts
src/ingestion/tools/seed/*, tests/stand/api/identity/test_internal.py
AUTH_MODE is removed. IDP_SOURCE_TYPE defaults to keycloak. Login mappings now cover every roster person and use roster UUIDs.
Runtime and deployment configuration
docker-compose.yml, dev-compose.sh, charts/insight/*, deploy/gitops/*
Fakeidp settings and service definitions are removed. Keycloak issuer, realm, client, database, and generated-user settings are configured.
Gateway end-to-end flow
src/backend/services/gateway/tests/*
Fixtures generate and import a Keycloak realm, submit the real HTML login form, wait for discovery, and remove generated artifacts during teardown.
CI and platform integration
.github/workflows/*, src/backend/Cargo.toml, src/backend/services/*/Dockerfile, scripts/ci/components.py
CI installs uv, generates realms, and allows more deployment time. Fakeidp workspace and build references are removed.
Authenticator contracts and documentation
src/backend/services/authenticator/*, CONTRIBUTING.md, docs/components/*, deploy/HELM_DEPLOY.md
Authenticator documentation, fixtures, ADRs, and operational guidance describe Keycloak and record fakeidp retirement.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related issues

Possibly related PRs

Sequence Diagram(s)

sequenceDiagram
    participant CI as CI workflow
    participant Seed as insight-seed-realm
    participant Keycloak
    participant Authenticator
    participant GatewayE2E as Gateway E2E fixture

    CI->>Seed: Generate roster realm
    Seed-->>CI: Write realm import
    CI->>Keycloak: Start with imported realm
    GatewayE2E->>Keycloak: Request authorization
    Keycloak-->>GatewayE2E: Return HTML login form
    GatewayE2E->>Keycloak: Submit roster credentials
    Keycloak->>Authenticator: Send OIDC callback
    Authenticator-->>GatewayE2E: Establish authenticated session
Loading

Suggested reviewers: ktursunov, mozhaev-dev

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: retiring fakeidp and using Keycloak as the identity provider.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
charts/insight/Chart.yaml (1)

77-82: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Bump the umbrella chart version to publish the dependency change.

charts/insight/Chart.yaml still declares version: 0.5.90 while adding insight-keycloak. Bump the chart version, and if charts/insight/Chart.lock is tracked, regenerate it and ensure it lists insight-keycloak without insight-fakeidp.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/insight/Chart.yaml` around lines 77 - 82, Update the umbrella chart
metadata in Chart.yaml by incrementing its declared chart version from 0.5.90 to
the next release version for the added insight-keycloak dependency. If
Chart.lock is tracked, regenerate it so it includes insight-keycloak and
excludes insight-fakeidp.
🧹 Nitpick comments (2)
docker-compose.yml (1)

686-688: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove the obsolete AUTH_MODE injection.

get_login_id_pairs() no longer reads AUTH_MODE; it always returns the whole roster UUID pairs, and login-IdP rows are selected by get_idp_source_type() using IDP_SOURCE_TYPE. Keep this comment with IDP_SOURCE_TYPE and remove the AUTH_MODE line from the seed-sample environment block.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docker-compose.yml` around lines 686 - 688, Remove the obsolete AUTH_MODE
environment injection from the seed-sample environment block. Update the
adjacent comment to reference IDP_SOURCE_TYPE instead, while preserving its
explanation of get_login_id_pairs and get_idp_source_type behavior.
dev-compose.sh (1)

460-470: 🗄️ Data Integrity & Integration | 🔵 Trivial | 💤 Low value

Remove the stale AUTH_MODE migration warning.

get_login_id_pairs no longer uses AUTH_MODE; it returns (person.uuid, person.uuid) for the Keycloak realm profile. The Job also uses IDP_SOURCE_TYPE via SEED_IDP_SOURCE_TYPE. Keep setting AUTHENTICATOR_IDP_SOURCE_TYPE in dev-compose.sh, but drop the AUTH_MODE="keycloak", stale get_login_id_pairs comment, and export AUTH_MODE.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@dev-compose.sh` around lines 460 - 470, Remove the obsolete AUTH_MODE warning
block and the AUTH_MODE assignment/export from the setup flow. In
dev-compose.sh, retain the existing AUTHENTICATOR_IDP_SOURCE_TYPE configuration,
but delete the stale get_login_id_pairs comment and any AUTH_MODE-related
environment handling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/functional-k3s.yml:
- Around line 190-197: Update the “Generate Keycloak realm” workflow step to
invoke the `make keycloak-realm` target in required mode, ensuring it fails when
the selected `GITOPS_ENV` has `keycloak.deploy` set to anything other than true.
Preserve the existing environment and Kubernetes context arguments.

In @.github/workflows/gateway.yml:
- Around line 16-17: Update the pull-request path filter in the workflow to
include the Keycloak realm’s dependent source files, covering
insight_seed/config.py, insight_seed/profiles.py, or the broader insight_seed
source pattern alongside keycloak_realm.py, so roster and configuration changes
trigger the workflow.

In `@src/backend/services/gateway/tests/downstream-verify/README.md`:
- Around line 45-48: Update the command code fence in the downstream
verification README to specify the bash language on its opening fence, while
leaving the contained commands unchanged.

In `@src/ingestion/tests/e2e/lib/api_coverage.py`:
- Around line 156-158: Update the back-channel logout comment near
e2e_backchannel to one line, remove the unmatched closing parenthesis, and
accurately state that the test client observes 401 responses after session
termination as well as 400 responses for malformed logout tokens.

In `@tests/lib/insight_stand/session.py`:
- Line 154: Update the error message in LoginSession._start() to report that the
/auth/login request failed to redirect to the stand’s configured external IdP,
rather than asking whether Keycloak is available. Keep the existing status-code
detail and use the configured IdP terminology supported by LoginSession.

---

Outside diff comments:
In `@charts/insight/Chart.yaml`:
- Around line 77-82: Update the umbrella chart metadata in Chart.yaml by
incrementing its declared chart version from 0.5.90 to the next release version
for the added insight-keycloak dependency. If Chart.lock is tracked, regenerate
it so it includes insight-keycloak and excludes insight-fakeidp.

---

Nitpick comments:
In `@dev-compose.sh`:
- Around line 460-470: Remove the obsolete AUTH_MODE warning block and the
AUTH_MODE assignment/export from the setup flow. In dev-compose.sh, retain the
existing AUTHENTICATOR_IDP_SOURCE_TYPE configuration, but delete the stale
get_login_id_pairs comment and any AUTH_MODE-related environment handling.

In `@docker-compose.yml`:
- Around line 686-688: Remove the obsolete AUTH_MODE environment injection from
the seed-sample environment block. Update the adjacent comment to reference
IDP_SOURCE_TYPE instead, while preserving its explanation of get_login_id_pairs
and get_idp_source_type behavior.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 91c5e248-64f8-4a01-9407-2ffe9a9dccd0

📥 Commits

Reviewing files that changed from the base of the PR and between 7eb1a15 and 64d6ba1bbb7752f5e9f9bd85ad1725e3fe00f837.

⛔ Files ignored due to path filters (2)
  • charts/insight/Chart.lock is excluded by !**/*.lock
  • src/backend/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (74)
  • .cf-studio/config/artifacts.toml
  • .claude/skills/file-bug-insight/SKILL.md
  • .env.compose.example
  • .github/workflows/functional-k3s.yml
  • .github/workflows/gateway.yml
  • CONTRIBUTING.md
  • charts/insight/Chart.yaml
  • charts/insight/templates/NOTES.txt
  • charts/insight/templates/_helpers.tpl
  • charts/insight/templates/secrets.yaml
  • charts/insight/values.yaml
  • deploy/HELM_DEPLOY.md
  • deploy/compose/authenticator-fullauth.yaml
  • deploy/compose/insight-init.sh
  • deploy/compose/keycloak/README.md
  • deploy/gitops/.gitignore
  • deploy/gitops/Makefile
  • deploy/gitops/environments/functional-ci/values.yaml
  • deploy/gitops/environments/local/inventory.yaml.template
  • deploy/gitops/environments/local/values.yaml.template
  • deploy/gitops/scripts/compose-app-secrets.sh
  • deploy/gitops/secrets-store.yaml.template
  • dev-compose.sh
  • docker-compose.yml
  • docs/components/backend/authenticator/DESIGN.md
  • docs/components/backend/authenticator/specs/ADR/0001-per-environment-idp-selection.md
  • docs/components/backend/authenticator/specs/ADR/0002-real-idp-on-deployed-stands.md
  • docs/components/backend/authenticator/specs/ADR/0003-keycloak-identity-broker.md
  • docs/components/deployment/specs/DESIGN.md
  • scripts/ci/components.py
  • src/backend/Cargo.toml
  • src/backend/services/analytics/Dockerfile
  • src/backend/services/authenticator/Dockerfile
  • src/backend/services/authenticator/config/insight.yaml
  • src/backend/services/authenticator/src/config.rs
  • src/backend/services/authenticator/src/identity.rs
  • src/backend/services/authenticator/src/oidc.rs
  • src/backend/services/authenticator/tests/common/kc.rs
  • src/backend/services/authenticator/tests/e2e_refresher.rs
  • src/backend/services/authenticator/tests/run-e2e.sh
  • src/backend/services/fakeidp/Cargo.toml
  • src/backend/services/fakeidp/Dockerfile
  • src/backend/services/fakeidp/README.md
  • src/backend/services/fakeidp/helm/Chart.yaml
  • src/backend/services/fakeidp/helm/templates/_helpers.tpl
  • src/backend/services/fakeidp/helm/templates/deployment.yaml
  • src/backend/services/fakeidp/helm/templates/ingress.yaml
  • src/backend/services/fakeidp/helm/templates/service.yaml
  • src/backend/services/fakeidp/helm/values.yaml
  • src/backend/services/fakeidp/src/lib.rs
  • src/backend/services/fakeidp/src/main.rs
  • src/backend/services/fakeidp/tests/boot.rs
  • src/backend/services/fakeidp/tests/flow.rs
  • src/backend/services/fakeidp/users.yaml
  • src/backend/services/gateway/tests/.gitignore
  • src/backend/services/gateway/tests/conftest.py
  • src/backend/services/gateway/tests/docker-compose.e2e.yml
  • src/backend/services/gateway/tests/downstream-verify/README.md
  • src/backend/services/gateway/tests/downstream-verify/conftest.py
  • src/backend/services/gateway/tests/downstream-verify/docker-compose.e2e.yml
  • src/backend/services/gateway/tests/downstream-verify/run-e2e.sh
  • src/backend/services/gateway/tests/run-e2e.sh
  • src/backend/services/identity-resolution/Dockerfile
  • src/ingestion/tests/e2e/lib/api_coverage.py
  • src/ingestion/tools/seed/PROFILE.md
  • src/ingestion/tools/seed/insight_seed/identity.py
  • src/ingestion/tools/seed/insight_seed/manifest.py
  • src/ingestion/tools/seed/insight_seed/profiles.py
  • src/ingestion/tools/seed/seed-job.yaml.tpl
  • src/ingestion/tools/seed/seed-stand.sh
  • src/ingestion/tools/seed/tests/test_identity.py
  • tests/lib/insight_stand/manifest.py
  • tests/lib/insight_stand/session.py
  • tests/stand/api/identity/test_internal.py
💤 Files with no reviewable changes (19)
  • src/backend/services/fakeidp/helm/templates/service.yaml
  • deploy/compose/keycloak/README.md
  • src/backend/services/authenticator/Dockerfile
  • src/backend/services/fakeidp/helm/Chart.yaml
  • src/backend/services/fakeidp/README.md
  • src/backend/services/fakeidp/tests/boot.rs
  • src/backend/services/fakeidp/tests/flow.rs
  • src/backend/services/fakeidp/Dockerfile
  • charts/insight/templates/NOTES.txt
  • src/backend/services/fakeidp/users.yaml
  • src/backend/services/fakeidp/helm/templates/deployment.yaml
  • src/backend/services/fakeidp/src/lib.rs
  • src/backend/services/fakeidp/src/main.rs
  • src/backend/services/identity-resolution/Dockerfile
  • src/backend/services/fakeidp/helm/values.yaml
  • src/backend/services/fakeidp/helm/templates/_helpers.tpl
  • src/backend/services/fakeidp/Cargo.toml
  • src/backend/services/fakeidp/helm/templates/ingress.yaml
  • src/backend/services/analytics/Dockerfile

Comment thread .github/workflows/functional-k3s.yml Outdated
Comment thread .github/workflows/gateway.yml Outdated
Comment thread src/backend/services/gateway/tests/downstream-verify/README.md Outdated
Comment thread src/ingestion/tests/e2e/lib/api_coverage.py Outdated
Comment thread tests/lib/insight_stand/session.py Outdated
@cyberantonz
cyberantonz force-pushed the feat/2198-retire-fakeidp branch from 1a04091 to 15a386e Compare August 7, 2026 05:03
@cyberantonz
cyberantonz enabled auto-merge August 7, 2026 05:03
cyberantonz and others added 2 commits August 7, 2026 13:05
…torfabric#2198)

Deletes the fakeidp OIDC test double (crate, helm subchart, umbrella
wiring, compose service, CI component) and migrates its last consumers:

- functional-ci (k3s smoke): in-stack Keycloak subchart on the shared
  MariaDB, realm generated by insight-seed-realm and applied via the
  keycloak-config-cli hook; workflow installs uv and runs keycloak-realm.
- gateway e2e rigs (main + downstream-verify): realm-importing Keycloak
  container; the pytest client drives the real login form. Both suites
  pass locally (11 + 6).
- seed/stand tooling: AUTH_MODE/--auth-mode removed; the whole roster
  gets login rows keyed on persona uuid; IDP_SOURCE_TYPE defaults to
  keycloak.
- docs: DESIGNs updated, ADR-0001/0002/0003 get dated status notes;
  ADR-0003 registered in the cfs artifact registry (fixes pre-existing
  dangling refs).

Completes the fakeidp retirement tracked in constructorfabric#2198 (ADR-0003).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Anton Zelenov <antonz@constructor.tech>
…DE plumbing, comment trims

CodeRabbit follow-ups on constructorfabric#2315: the functional-k3s realm step fails when
keycloak.deploy != true instead of silently skipping; gateway.yml triggers
on the whole insight_seed package (the realm generator imports config +
profiles); the seed container's AUTH_MODE env and dev-compose export are
dropped (nothing reads AUTH_MODE anymore); misleading Keycloak-liveness
error hint and stale back-channel comment fixed; wordier new comments
trimmed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Anton Zelenov <antonz@constructor.tech>
@cyberantonz
cyberantonz force-pushed the feat/2198-retire-fakeidp branch from 15a386e to 4e74747 Compare August 7, 2026 05:06
@cyberantonz
cyberantonz added this pull request to the merge queue Aug 7, 2026
Merged via the queue into constructorfabric:main with commit c2aef31 Aug 7, 2026
69 checks passed
@cyberantonz
cyberantonz deleted the feat/2198-retire-fakeidp branch August 7, 2026 05:53
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.

2 participants