Known Discrepancies (CLAUDE.md ↔ Code)

Where CLAUDE.md (or other historical docs) disagrees with the current code. The code is authoritative; this page records the delta so readers coming from the project memory do not get tripped up.

This list is a point-in-time snapshot (library v2.6.0). It is updated opportunistically, not on a schedule.

Agent environments directory

Where Says Actual

CLAUDE.md ("File Paths", "Agent Requirements")

/home/jenkins/agent/qa-envs/

/opt/qa-envs/ (default of QAConfig.Paths.AGENT_ENVS_DIR, overridable via QA_AGENT_ENVS_DIR). See src/com/qa/config/QAConfig.groovy line 57.

If your agents were provisioned under the old path, set QA_AGENT_ENVS_DIR=/home/jenkins/agent/qa-envs as a global env var rather than relocating the directories.

Service catalogue — extras

Service mentioned by Present in compose-{mysql,oracle}.yml?

saml — listed in CLAUDE.md

No. A resources/services/saml/ directory exists but no Compose block references it in v2.6.0.

clickhouse-jdbc-bridge — listed in CLAUDE.md

No. Only jdbc-bridge is declared; the resources/services/clickhouse-jdbc-bridge/ directory is inactive.

shared-library — listed in CLAUDE.md as a "service"

No. It is a helper directory used by syncSharedLibStep, not a deployable Compose service.

Source of truth: a grep of ^ [a-z]: between services: and the next top-level key in each compose-.yml. The canonical list is in Reference → Service catalogue.

Postgres bundle

README says there is a compose-postgres.yml. There is not. postgres is a service inside both compose-mysql.yml and compose-oracle.yml, gated behind a Compose profile, and selected by DATABASE_TYPE=postgres.

Service count

README says "17+ service templates"; the actual count in v2.6.0 is 23 services per bundle (24 distinct services counting mysql and oracle as bundle-specific). See services table.

Network name

QAConfig.Defaults.NETWORK_NAME_SUFFIX = '_net' suggests envs use ${ENV_NAME}_net networks. In practice v2.6.0 compose bundles declare a top-level project name: ft-services-{mysql,oracle} and rely on the implicit <project>_default network. The _net suffix is reserved for future per-env networking; today there is no per-env network.

QA_ADMIN_USERS default

Historical docs mention qa-admin as the default. The current default (commit d2b969b) is admin. Both CLAUDE.md and QAConfig.RBAC.ADMIN_USERS agree on admin in v2.6.0; this note is here only for operators migrating from pre-2.6 instances.

vars/ inventory

CLAUDE.md lists the main *Step.groovy files. The actual directory additionally contains editSchemaStep.groovy and updateStep.groovy — both are part of the legacy schema flow and not mentioned in CLAUDE.md. They remain functional but should not be used for new work.

Healthchecks

Commit e15a019 removed "unused healthchecks" from both bundles, yet many services still carry a healthcheck: block. The commit targeted services where the healthcheck endpoint was wrong or pointed at a binary that was never running — in the remaining services the healthcheck is the gate for condition: service_healthy in dependencies.yaml. CLAUDE.md does not currently distinguish these — treat the presence of healthcheck: in a service block as authoritative.