Humboldt passes the official MicroProfile Telemetry 2.1 TCK — 85/85 PASS across the three suites (tracing + metrics + logs), with W3C TraceContext + Baggage propagation and OTEL_* configuration. The humboldt-tck runner is part of the reactor but gated behind the tck Maven profile (TCK harmonisation — same pattern as the vidocq-runtime-tck-* runners and the dirac pilot): a plain mvn install neither downloads nor runs anything TCK-related.

Target

100 % conformance to the official MicroProfile Telemetry 2.1 TCK across the three suites:

  • microprofile-telemetry-tracing-tck:2.1

  • microprofile-telemetry-metrics-tck:2.1

  • microprofile-telemetry-logs-tck:2.1

TCK coordinates publicly confirmed on Maven Central (M7.1 audit, 2026-05-21).

TCK stack

  • TestNG + Arquillian + ShrinkWrap (not JUnit).

  • Humboldt Arquillian adapter: HumboldtDeployableContainer (deploys through Vauban + Chappe + Cassini), HumboldtCdiEnricher (CDI bean injection into @Test), runtime hook withExtraSpanExporter to plug the TCK’s InMemorySpanExporter.

  • The TCK imports its own copy of io.opentelemetry:opentelemetry-sdk for its internal fixtures — that is OK on the profile-gated runner; it does not pollute the production classpath.

Current status

M7 complete — 85/85 PASS. The full official suite (tracing + metrics + logs, as composed by the tck-official profile) runs green:

Tests run: 85, Failures: 0, Errors: 0, Skipped: 0

First achieved on 2026-05-24, re-verified stable on main on 2026-06-01 (./run-official-tck-telemetry-2.1.sh all, Temurin 25, Maven 3.9.16). Every run is archived with its raw counters in tck-runs/; consolidated status lives in TCK.md.

The road to green (M7b Arquillian adapter, M7c failure clusters — @ArquillianResource URL wiring, ShrinkWrap deployments, required CDI beans, commons-io conflicts) is preserved in the dated reports under tck-runs/ for archaeology.

Running the TCK

cd humboldt
sdk env

# Smoke — local harness tests to validate the install
./run-official-tck-telemetry-2.1.sh

# Full official suite — 85 tests (tracing + metrics + logs)
./run-official-tck-telemetry-2.1.sh all

# Targeted test
./run-official-tck-telemetry-2.1.sh -Dtest=BasicAppTest

The script:

  1. Uses the Maven wrapper mvnw (Maven 3.9.16) when present, otherwise falls back to system mvn.

  2. Passes maven.test.skip=true (instead of -DskipTests) — required since M7c.12 because humboldt-rest test-compile fails (microprofile.rest.client.api outside the module path under strict Java Modules).

  3. humboldt-rest tests remain manually runnable through mvn test -pl humboldt-rest.

Fast profile (a single targeted test)

./mvnw -ntp -Ptck,tck-cdi-bean -pl humboldt-tck test

Profile tck-cdi-bean = runs only OpenTelemetryBeanTest from the tracing TCK, validating the Arquillian → HumboldtContainer → Vauban CDI chain without paying the full-suite cost.

Runner Maven profiles

The runner defines three profiles (read them in humboldt-tck/pom.xml); they combine with the reactor-level tck gate (-Ptck,<profile>):

Profile Effect

tck-smoke (active by default)

Local harness tests only (HumboldtTckSmokeTest, bridge tests, Arquillian boot smoke) — does not run the official suites.

tck-cdi-bean

A single official test, OpenTelemetryBeanTest (tracing TCK) — minimal CDI bootstrap.

tck-official

Full official suite (85 tests) via tck-suite.xml, scanning all three TCK artifacts (tracing + metrics + logs).

Runner architecture

humboldt-tck is an in-reactor module gated behind the tck Maven profile of humboldt-parent (TCK harmonisation — same pattern as the vidocq-runtime-tck-* runners of the Vidocq runtime and the dirac pilot): a plain mvn install neither downloads nor runs anything TCK-related, and the release reactor never sees the module.

Historically humboldt-tck was a standalone out-of-reactor POM: ShrinkWrap Maven Resolver 3.3, transitive to the official TCK, could not parse Model 4.1.0 POMs and crashed on the Vidocq reactor. That constraint disappeared with the workspace-wide migration to Maven 3.9.16 / Model 4.0.0, so the runner is safe in-reactor.

Reproduce locally

./mvnw -ntp -Ptck,tck-official -pl humboldt-tck test 2>&1 | tee /tmp/tck-humboldt.log

# Sort failures by category
grep -E "Tests run|FAILED|ERROR" /tmp/tck-humboldt.log

Run artifacts (logs, Surefire reports, InMemorySpanExporter span dumps) are placed under humboldt-tck/target/surefire-reports/, and each significant run is archived as a dated report in tck-runs/ for traceability.

Quality gate

Before any merge to main:

  1. humboldt-tck smoke PASS.

  2. No regression of the full-suite counter — 85/85 must stay green (see TCK.md and tck-runs/).

  3. No new import io.opentelemetry.sdk.* in application code (architecture constraint #1 from CLAUDE.md).

Next: Reference and Migration.