Core Profile
The core profile is the baseline conformance requirement for every Stemix IDP
reference implementation. Any stack that does not pass core is not considered
compliant, regardless of what other profiles it declares.
Why it exists
The core profile answers one question: does this implementation expose the
fundamental HTTP surface that the platform depends on? It makes no claims about
semantic correctness — those belong to the operational profile. It checks
shape only: reachability, content-type, and the presence of required fields.
Health and readiness endpoints follow the IETF
draft-inadarei-api-health-check-06 standard. See
ADR-0011 for the
full contract specification.
Layer 1 spec
Source: tests/features/core.feature
Scenarios (5 total)
Web server responds to GET /
Precondition: The web server is running.
Assertion: GET / returns an HTTP status code in the 2xx range.
Web server health endpoint returns the expected shape
Precondition: The web server is running.
Assertions:
GET /healthreturns an HTTP status code in the 2xx rangeContent-Typeresponse header containsapplication/health+json- Response body is a valid JSON object
- JSON object contains a
statusfield - JSON object contains a
serviceIdfield - JSON object contains a
descriptionfield
BFF root returns a JSON status envelope
Precondition: The BFF server is running.
Assertions:
GET /returns an HTTP status code in the 2xx rangeContent-Typeresponse header containsapplication/json- Response body is a valid JSON object
- JSON object contains a
statusfield of type string - JSON object contains a
servicefield of type string
BFF health endpoint returns the expected shape
Precondition: The BFF server is running.
Assertions:
GET /healthreturns an HTTP status code in the 2xx rangeContent-Typeresponse header containsapplication/health+json- Response body is a valid JSON object
- JSON object contains a
statusfield - JSON object contains a
serviceIdfield - JSON object contains a
descriptionfield
BFF readiness endpoint returns the expected shape
Precondition: The BFF server is running.
Assertions:
GET /readinessreturns an HTTP status code in the 2xx rangeContent-Typeresponse header containsapplication/health+json- Response body is a valid JSON object
- JSON object contains a
statusfield - JSON object contains a
checksfield
Layer 2 harness
Source: tests/src/profiles/core.ts
The TypeScript harness is derived from the .feature file above. When they
disagree, the .feature file is authoritative.
Stack declarations
All stacks must declare "core" in their stack.json contractProfiles array:
{
"contractProfiles": ["core", "operational"]
}
Related
- Contract Test Harness — Full harness guide
- Operational Profile — Semantic correctness checks
- ADR-0005 — Capability contract and conformance profiles
- ADR-0009 — Gherkin as Layer 1 format
- ADR-0011 — IETF health endpoint contract