Verification

Test cases verifying requirements. Each test directive :verifies: one or more req parents (or building-block / architecture parents on arc42-structured pages).

Used filter: types(test)

ID

Title

Status

Verifies

TEST_0100

ExponentialBackoff invariants

open

REQ_0233

TEST_0101

ConnectorHealth state-machine transitions

open

REQ_0230; REQ_0234

TEST_0102

MqttRouting wildcard demux predicate

open

REQ_0254

TEST_0103

ChannelDescriptor validation

open

REQ_0201; REQ_0221

TEST_0110

JsonCodec round-trip property test

open

REQ_0210; REQ_0212

TEST_0111

Codec encode error on undersized buffer

open

REQ_0213

TEST_0112

Codec decode error propagation

open

REQ_0214

TEST_0120

ChannelWriter → ChannelReader round-trip

open

REQ_0205; REQ_0223

TEST_0121

Sequence-number monotonicity

open

REQ_0202

TEST_0122

Timestamp populated at send

open

REQ_0203

TEST_0123

Correlation ID round-trip

open

REQ_0204

TEST_0124

Per-channel size — 4 KB, 64 KB, 1 MB

open

REQ_0201; BB_0010

TEST_0125

Payload-overflow rejection

open

REQ_0201

TEST_0126

Service naming derived from descriptor

open

REQ_0206; BB_0011

TEST_0130

QoS 0 round-trip

open

REQ_0252

TEST_0131

QoS 1 round-trip

open

REQ_0252

TEST_0132

Retained-message publish + subscribe

open

REQ_0253

TEST_0133

Wildcard subscription with `+`

open

REQ_0254

TEST_0134

Wildcard subscription with `#`

open

REQ_0254

TEST_0135

Username/password authentication

open

REQ_0255

TEST_0136

TLS connection (developer-machine only)

open

REQ_0256

TEST_0137

Reconnect after broker bounce

open

REQ_0232; REQ_0233

TEST_0138

HealthEvent emitted on every transition

open

REQ_0234

TEST_0139

Outbound bridge saturation → BackPressure

open

REQ_0260

TEST_0140

Inbound bridge saturation → DroppedInbound

open

REQ_0261

TEST_0150

In-process gateway smoke

open

REQ_0241; ARCH_0020

TEST_0151

Separate-process gateway smoke

open

REQ_0242; ARCH_0021

TEST_0152

SIGINT clean exit within 5-second budget

open

REQ_0243; ARCH_0013

TEST_0153

No control-plane envelopes flow

open

REQ_0244; REQ_0291

TEST_0160

Bridge handoff under arbitrary interleaving

open

REQ_0259; BB_0022

TEST_0161

Health state-machine under concurrent updates

open

REQ_0230; REQ_0234

TEST_0170

Zero allocations in steady-state dispatch

open

REQ_0060

TEST_0180

Cap exhaustion and oversize alloc both fail-closed

open

REQ_0300; REQ_0301

TEST_0181

Steady-state cap behaviour under burst

open

REQ_0300

TEST_0182

lock() then alloc panics

open

REQ_0302

TEST_0183

Counter accuracy

open

REQ_0303

TEST_0184

Concurrent alloc/dealloc safety smoke

open

REQ_0304

TEST_0190

Histogram percentile accuracy

open

REQ_0100

TEST_0191

Per-task max jitter under synthetic period violation

open

REQ_0101

TEST_0192

Overrun counter increments exactly per overrun cycle

open

REQ_0102

TEST_0193

Push and pull stat paths agree

open

REQ_0103

TEST_0194

Allocation-free telemetry update

open

REQ_0104

TEST_0200

EthercatConnector trait surface

open

REQ_0310

TEST_0201

EthercatRouting field round-trip

open

REQ_0311

TEST_0202

Single MainDevice per gateway instance

open

REQ_0312

TEST_0203

Bus reaches OP before traffic accepted

open

REQ_0313

TEST_0204

Static PDO map accepted from options

open

REQ_0314

TEST_0205

PDO mapping applied during PRE-OP to SAFE-OP

open

REQ_0315

TEST_0206

Cycle time configurable

open

REQ_0316

TEST_0207

Missed ticks are skipped not queued

open

REQ_0317

TEST_0208

Distributed Clocks bring-up is opt-in

open

REQ_0318

TEST_0209

Up requires OP and matching working counter

open

REQ_0319

TEST_0210

Working-counter mismatch transitions to Degraded

open

REQ_0320

TEST_0211

Tokio sidecar contained inside connector crate

open

REQ_0321

TEST_0212

Bridge channels are bounded with configurable capacity

open

REQ_0322

TEST_0213

Outbound bridge saturation surfaces as BackPressure

open

REQ_0323

TEST_0214

Inbound bridge saturation surfaces as DroppedInbound

open

REQ_0324

TEST_0215

Gateway opens raw socket on Linux with CAP_NET_RAW

open

REQ_0325

TEST_0216

PDI bit-slice byte-aligned round-trip

open

REQ_0326; REQ_0327

TEST_0217

PDI bit-slice unaligned round-trip

open

REQ_0326; REQ_0327

TEST_0218

Adjacent PDI bit slices do not interfere

open

REQ_0326

TEST_0219

Per-channel routing registry has stable iteration order

open

REQ_0328

TEST_0220

Outbound end-to-end (plugin send → PDI slice via mock)

open

REQ_0326; REQ_0328

TEST_0221

Inbound end-to-end (PDI slice via mock → plugin recv)

open

REQ_0327; REQ_0328

TEST_0222

Loopback round-trip (plugin → mock → plugin)

open

REQ_0326; REQ_0327

TEST_0240

Harness builds and runs on Linux non-RT

open

REQ_0111

TEST_0241

NDJSON schema validation

open

REQ_0111

TEST_0242

Harness telemetry agrees with stats_snapshot

open

REQ_0113

TEST_0300

ZenohRouting field validation

open

REQ_0401

TEST_0301

ZenohConnector implements Connector with ZenohRouting

open

REQ_0400

TEST_0302

Pub/sub end-to-end against MockZenohSession

open

REQ_0402; REQ_0407; REQ_0408; REQ_0445

TEST_0303

Query round-trip against MockZenohSession

open

REQ_0420; REQ_0421; REQ_0422; REQ_0423; REQ_0424; REQ_0426; REQ_0427

TEST_0304

Codec failure paths for queries

open

REQ_0427

TEST_0305

Outbound bridge saturation surfaces as BackPressure

open

REQ_0404; REQ_0405

TEST_0306

Inbound bridge saturation surfaces as DroppedInbound

open

REQ_0406; REQ_0428

TEST_0307

Query timeout emits 0x03 terminator

open

REQ_0425

TEST_0308

Health state machine on MockZenohSession lifecycle

implemented

REQ_0440; REQ_0442

TEST_0309

REQ_0441 anti-req — no ReconnectPolicy on session loss

implemented

REQ_0441

TEST_0310

zenoh-integration feature gates the real zenoh dep

implemented

REQ_0444; REQ_0445

TEST_0311

Cross-platform support

implemented

REQ_0446

TEST_0312

Two-peer real session pub/sub

draft

REQ_0440; REQ_0443

TEST_0313

Client-mode router smoke

draft

REQ_0440; REQ_0443

TEST_0314

Tokio sidecar contained inside taktora-connector-zenoh

implemented

REQ_0403

TEST_0400

parse() accepts a representative Beckhoff EL3001 ESI

open

REQ_0500; REQ_0504

TEST_0401

Parser compiles under no_std + alloc

open

REQ_0501

TEST_0402

Parser is independent of ethercrab

open

REQ_0503

TEST_0403

Vendor-specific elements survive as RawXml

open

REQ_0505

TEST_0404

Parse errors carry line and column

open

REQ_0506

TEST_0410

Name sanitisation handles ESI naming edge cases

open

REQ_0511

TEST_0411

Revision collision produces distinct idents

open

REQ_0512

TEST_0412

PDO entry dedup collapses structurally identical layouts

open

REQ_0513

TEST_0413

TokenStream emission, not string formatting

open

REQ_0514

TEST_0420

EL3001 backend output snapshot

open

REQ_0521; REQ_0522; REQ_0523; REQ_0524

TEST_0421

Generated registry covers every emitted device

open

REQ_0525

TEST_0422

Generated module compiles under no_std + alloc

open

REQ_0526

TEST_0423

Backend is the sole ethercrab consumer in the toolchain

open

REQ_0520

TEST_0424

Object-dictionary emission gated by feature flag

open

REQ_0533

TEST_0430

EsiDevice trait shape compiles for a hand-written device

open

REQ_0530

TEST_0431

EsiConfigurable async trait shape compiles

open

REQ_0531

TEST_0432

ethercat-esi-rt is the trait home, not taktora-internal

open

REQ_0532

TEST_0440

Builder writes a parseable Rust file to OUT_DIR

open

REQ_0540; REQ_0541

TEST_0441

cargo rerun-if-changed emitted per ESI input

open

REQ_0542

TEST_0442

Output passes prettyplease formatting

open

REQ_0543

TEST_0450

cargo esi expand emits a single device's code

open

REQ_0550

TEST_0451

cargo esi list enumerates devices

open

REQ_0551

TEST_0452

CLI output matches build helper output byte-for-byte

open

REQ_0552

TEST_0460

Verifier passes on matching ESI + SII pair

open

REQ_0560

TEST_0461

Verifier reports the differing field

open

REQ_0561

TEST_0462

Verifier reuses ethercat-esi parser

open

REQ_0562

TEST_0463

Verifier exit codes follow the documented matrix

open

REQ_0563

TEST_0470

Repeated codegen runs produce byte-identical output

open

QG_0010; REQ_0543

TEST_0471

Input-file ordering does not affect output

open

QG_0010; REQ_0512; REQ_0513

TEST_0472

Layering integrity check (Cargo.toml audit)

open

QG_0011; REQ_0503; REQ_0520

TEST_0500

CanConnector trait surface

open

REQ_0600

TEST_0501

CanRouting field round-trip

open

REQ_0601; REQ_0615

TEST_0502

Classical CAN round-trip via MockCanInterface

open

REQ_0610; REQ_0612; REQ_0613; REQ_0614

TEST_0503

CAN-FD round-trip via MockCanInterface

open

REQ_0611; REQ_0613

TEST_0504

Per-iface filter union

open

REQ_0622; REQ_0623

TEST_0505

Multi-iface inbound demux

open

REQ_0620; REQ_0621; REQ_0624

TEST_0506

Bus-off → Down → ReconnectPolicy reopen

open

REQ_0633; REQ_0634

TEST_0507

error-passive → Degraded → recovery

open

REQ_0630; REQ_0632; REQ_0635

TEST_0508

Tokio sidecar contained inside taktora-connector-can

open

REQ_0605

TEST_0509

Outbound bridge saturation surfaces as BackPressure

open

REQ_0606; REQ_0607

TEST_0510

Inbound bridge saturation surfaces as DroppedInbound

open

REQ_0606; REQ_0608

TEST_0511

socketcan-integration feature gates the real socketcan dep

implemented

REQ_0603; REQ_0604

TEST_0512

Linux raw-socket smoke against vcan0

implemented

REQ_0502; REQ_0613; REQ_0614

TEST_0513

Error frames not exposed to plugin

open

REQ_0631; REQ_0636; REQ_0643

TEST_0514

Per-iface routing registry has stable iteration order

open

REQ_0625

TEST_0600

Identity, DictEntry, PdoEntry round-trip

open

REQ_0702

TEST_0601

fieldbus-od-core has no transport deps

open

REQ_0700

TEST_0602

fieldbus-od-core compiles under no_std + alloc

open

REQ_0701

TEST_0603

ethercat-esi re-exports lifted types

open

REQ_0703; REQ_0704

TEST_0610

parse() accepts a representative Maxon EPOS4 EDS

open

REQ_0720; REQ_0722; REQ_0726

TEST_0611

Parser compiles under no_std + alloc

open

REQ_0721

TEST_0612

Parser is independent of codegen and transport

open

REQ_0721

TEST_0613

Unknown sections survive as RawSection

open

REQ_0724

TEST_0614

Parse errors carry line and column

open

REQ_0723

TEST_0615

Liberal-quirk parsing emits warnings without failing

open

REQ_0725

TEST_0620

Name sanitisation handles EDS naming edge cases

open

REQ_0731

TEST_0621

Revision collision produces distinct idents

open

REQ_0732

TEST_0622

PDO entry dedup collapses structurally identical layouts

open

REQ_0733

TEST_0623

TokenStream emission, not string formatting

open

REQ_0730; REQ_0734

TEST_0624

One EDS file equals one device

open

REQ_0735

TEST_0630

EPOS4 backend output snapshot

open

REQ_0741; REQ_0742; REQ_0743; REQ_0744

TEST_0631

Generated registry covers every emitted device

open

REQ_0745

TEST_0632

Generated module compiles under no_std + alloc

open

REQ_0748

TEST_0633

Backend is the sole canopen-eds-rt consumer in the toolchain

open

REQ_0740

TEST_0634

Object-dictionary emission gated by feature flag

open

REQ_0747

TEST_0635

Dummy entries skipped in PDO struct fields

open

REQ_0744

TEST_0636

Bring-up SDO writes emitted from EDS

open

REQ_0746

TEST_0640

CanOpenDevice trait shape compiles for a hand-written device

open

REQ_0750; REQ_0754; REQ_0755

TEST_0641

CanOpenConfigurable async trait shape compiles

open

REQ_0751

TEST_0642

canopen-eds-rt is the trait home, not taktora-internal

open

REQ_0752

TEST_0643

PdoOut payload uses heapless::Vec<u8, 8>

open

REQ_0753

TEST_0644

RPDO rejected outside Operational state

open

REQ_0756

TEST_0650

Builder writes a parseable Rust file to OUT_DIR

open

REQ_0760; REQ_0761

TEST_0651

cargo rerun-if-changed emitted per EDS input

open

REQ_0762

TEST_0652

Output passes prettyplease formatting

open

REQ_0763

TEST_0653

Parser warnings surface as cargo:warning lines

open

REQ_0764

TEST_0660

cargo eds expand emits a single device's code

open

REQ_0770

TEST_0661

cargo eds list enumerates devices

open

REQ_0771

TEST_0662

CLI output matches build helper output byte-for-byte

open

REQ_0772

TEST_0670

Verifier passes on matching EDS + dump pair

open

REQ_0780

TEST_0671

Verifier reports the differing field

open

REQ_0781

TEST_0672

Verifier reuses canopen-eds parser

open

REQ_0782

TEST_0673

Verifier exit codes follow the documented matrix

open

REQ_0783

TEST_0674

Verifier rejects unknown schema version

open

REQ_0784

TEST_0680

Repeated codegen runs produce byte-identical output

open

QG_0014; REQ_0763

TEST_0681

Input-file ordering does not affect output

open

QG_0014; REQ_0732; REQ_0733

TEST_0682

Layering integrity check (Cargo.toml audit)

open

QG_0015; REQ_0721; REQ_0740