Humboldt targets 100 % conformance to the official MicroProfile Telemetry 2.1 TCK across the three suites (tracing + metrics + logs), with W3C TraceContext + Baggage propagation and OTEL_* / MP_TELEMETRY_* 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

M7b delivered (2026-05-21) — complete Arquillian adapter, first official TCK test OpenTelemetryBeanTest PASS (2/2).

Signal Real passing tests Step

Tracing

✅ 4 / ~50 (OpenTelemetryBeanTest, TracerTest, ExporterSpiTest)

M7c.2 — unblock HTTP

Metrics

✅ 24 / ~50 (CDI counters/gauges/histos + JVM*)

M7c.2 — unblock HTTP histograms

Logs

✅ 3 / ~10 (JulTest, ServerInstanceTest)

M7c

Baggage

✅ W3C propagator delivered in M3

TCK tests in M7c.2

Config

OTEL_* env vars delivered in M6c

TCK tests in M7c.2

Detailed status and categorization of remaining failures: see TCK.md in the repo. Exact counter to be confirmed after each run (see tck-runs/).

M7c failure categorization (first official run, 2026-05-21)

Tests run: 138, Failures: 62, Errors: 0, Skipped: 73

Category Failures Cause / action

A. Unresolved @ArquillianResource URL

56

HTTP tests. Start Chappe HTTP + Cassini in HumboldtDeployableContainer.deploy(), expose the port through ProtocolMetaData → HTTPContext.

B. Failed to deploy …​war

8

Missing classes/deps in the ShrinkWrap war crashing extractBeanClasses or VaubanContainer.build(). Case-by-case investigation.

C. injected{Span, Baggage, Tracer} null

12

MP Telemetry spec §"Required CDI beans": missing producers for Span.current(), Baggage.current(). To be added in HumboldtTelemetryProducers.

D. NoSuchMethod commons.io.input.Tailer.builder()

24

commons-io version conflict between TCK metrics deps and our classpath. Force commons-io 2.16+ in humboldt-tck/pom.xml.

The 4 categories partially overlap (a JvmMemory test can fail on URL and on Tailer at the same time). Addressing one category may unblock more tests than the counter suggests.

Running the TCK

cd humboldt
sdk env

# Smoke — a single test to validate the install
./run-official-tck-telemetry-2.1.sh

# Full suite (M7c+) — equivalent of the official 138+ test TCK
./run-official-tck-telemetry-2.1.sh all

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

The script:

  1. Uses mvnw (Maven 4) 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 = minimal bootstrap (no HTTP) for pure CDI tests such as OpenTelemetryBeanTest. Useful for iterating on category-C bugs without paying the Chappe startup cost.

Runner Maven profiles

Profile Effect

tck-official

Full suite (tracing + metrics + logs). Imports all 3 TCK artifacts.

tck-cdi-bean

CDI-only subset — no Chappe/Cassini.

tck-trace-only

Tracing suite only (M7c fast iteration).

tck-metrics-only

Metrics suite only.

tck-logs-only

Logs suite only.

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 archived in humboldt/tck-runs/<date>/ for traceability.

Quality gate

Before any merge to main:

  1. humboldt-tck smoke PASS.

  2. No regression of the full-suite counter (see consolidated BENCH.md).

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

Next: Reference and Migration.