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 deliberately out of reactor (standalone POM Model 4.0.0, no <parent>) to work around the incompatibility between ShrinkWrap Maven Resolver 3.3 and Maven Model 4.1.0 — the same constraint as cassini-tck, champollion-tck, foy-tck.

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 out-of-reactor 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 JPMS).

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

Fast profile (a single targeted test)

cd humboldt-tck
mvn -ntp -f pom.xml -Ptck-cdi-bean 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.

Architecture constraint: out-of-reactor

humboldt-tck stays in Model 4.0.0 standalone even when the rest of the reactor moves to 4.1.0. The reason, as recalled in the repo’s CLAUDE.md:

ShrinkWrap Maven Resolver 3.3 (transitive dependency of the official TCK) relies on maven-resolver 1.9 / maven-model 3.9, which cannot parse Maven Model 4.1.0 POMs. Its ClasspathWorkspaceReader scans the current reactor and crashes on every Vidocq POM (implicit version through parent). Until upstream ShrinkWrap supports Model 4.1, this module must stay detached — do not re-attach it to the parent <modules>, do not add a <parent>, do not build it through mvn -pl. Always go through run-official-tck-telemetry-2.1.sh.

Reproduce locally

cd humboldt-tck
mvn -ntp -f pom.xml -Ptck-official 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.