Conformance suite

thingmake-conformance is a self-certification CLI for integrators validating their HTTP factory-service backend against the thingmake-facing contract. It signs and sends dispatches to your backend and observes your backend’s polling/reporting behaviour from a single process — no separate thingmake instance required. This page is a front door; the suite README is the authoritative reference.

Source of truth

Artifact

What it is

conformance/services/thingmake/README.md

Full suite guide — flags, exit codes, scenario categories, output formats

conformance/services/thingmake/

The standalone Go binary source (go build -o thingmake-conformance .)

Single-command invocation

thingmake-conformance \
  --backend-url http://your-factory-backend:8080 \
  --access-key   <your-access-key-id> \
  --secret-key   <your-secret-key>

Add --webhook-secret <ws> to enable the HMAC webhook scenarios. Credentials are pre-shared test values and are never echoed into report output (only header names appear in diagnostics).

Prerequisite — point your backend at --listen-addr

Before running the suite, configure your factory backend’s thingmake-base-url to point at the suite’s --listen-addr (default :8910). The suite binds an embedded mock-thingmake listener there and serves the state-changes feed, identity-blacklist feed, and the result-webhook sink, so it can observe both faces of the contract during a run:

your-factory-backend  ←── dispatches ──   thingmake-conformance (driver)
your-factory-backend  ───  polls  ──────► :8910 (mock control-plane)
your-factory-backend  ── reports result ► :8910 (result-webhook sink)

Exit codes

Code

Meaning

0

all scenarios passed

1

one or more scenarios failed

2

usage / flag error

The suite emits --format text (default), json, or junit. Use junit to wire the green/red gate into CI. Scenario diagnostics name the expected THM-NNNNN code on each failure — cross-reference the error catalog.

Scenario coverage

The suite groups scenarios by category: AK/SK server-face accept/reject, thing-state notifications, webhook HMAC verification, state-changes cursor polling (incl. HTTP 410 expiry, THM-50120), identity-blacklist polling (HTTP 410, THM-70120), result reporting, and error-code paths. The full category table is in the suite README.

A bundled reference stub (services/thingmake/cmd/factory-refstub) is the green reference the suite must pass 100% against — a useful template when building your own backend.

What next