Anti-goals and cross-cutting traceability

The following requirements are explicitly rejected — captured for the record so future readers see what the toolchain deliberately does not do, and why. Each rejected requirement :satisfies: CANopen device-driver codeg... (FEAT_0060) to keep the umbrella’s traceability complete.

Requirement: NO DCF support this round REQ_0790
status: rejected
satisfies: FEAT_0060

The toolchain shall not parse DCF (Device Configuration File) inputs this round. EDS describes a device’s shape; DCF describes per-node configuration (chosen RPDO/TPDO mapping, node-id, SDO-write-at-bringup values). DCF support is a follow-on spec; adding it later does not require an IR break because the EDS IR already carries the shape DCF references.

Requirement: NO CAN-FD payload support in PdoOut REQ_0791
status: rejected
satisfies: FEAT_0060

PdoOut::payload shall not support CAN-FD’s 64-byte payload this round. Lifting heapless::Vec<u8, 8> to a const-generic capacity (heapless::Vec<u8, N>) is a follow-on. See heapless::Vec<u8, 8> for Pd... (ADR_0084).

Requirement: NO proc-macro front-end REQ_0792
status: rejected
satisfies: FEAT_0060

The toolchain shall not offer a canopen_device!("foo.eds") proc-macro form. The IDE-discoverability gain does not justify the doubled codegen surface or the worse compile-time profile. cargo eds expand (cargo eds expand emits one ... (REQ_0770)) covers the inspection use case. Mirrors NO proc-macro front-end (REQ_0591).

Requirement: NO unification of EtherCAT and CANopen runtime traits REQ_0793
status: rejected
satisfies: FEAT_0060

CanOpenDevice shall not be merged with EsiDevice / EsiConfigurable. EtherCAT’s cyclic-bit-buffer model and CANopen’s event-driven-frame model are different transport semantics; forcing them into one trait would leak a fake “process image” into CANopen and mis-model event-triggered TPDOs. This requirement closes the loop on NO unification of EtherCAT ... (REQ_0592) by delivering the separate trait family the rejection reserved.

Requirement: NO runtime EDS parsing REQ_0794
status: rejected
satisfies: FEAT_0060

The toolchain shall not parse EDS files at application runtime. All EDS parsing happens at build time in canopen-eds-build or in the CLI tools. Consumers of the generated modules shall not need to ship EDS files alongside their binary. Mirrors NO runtime XML parsing (REQ_0593).

Requirement: NO modification of taktora-connector-can runtime REQ_0795
status: rejected
satisfies: FEAT_0060

This spec shall not require any change to the runtime contracts of CAN (SocketCAN) reference c... (FEAT_0046) “CAN reference connector”. A thin adapter that maps any CanOpenDevice into the connector’s frame plumbing is a follow-on spec; this umbrella stops at producing typed devices that implement canopen-eds-rt traits. Mirrors NO modification of taktora-... (REQ_0594).

Requirement: NO automatic vendor library scraping REQ_0796
status: rejected
satisfies: FEAT_0060

The toolchain shall not download, scrape, or otherwise fetch EDS files from vendor websites or update servers. EDS files are inputs the user drops into an eds/ directory; provenance is the user’s responsibility. Mirrors NO automatic vendor library... (REQ_0595).

Requirement: NO live-bus verifier this round REQ_0797
status: rejected
satisfies: FEAT_0060

canopen-eds-verify shall not open a SocketCAN interface, send live SDO upload requests, or otherwise touch a real bus. Verification is strictly offline — EDS file vs. captured JSON dump (Verifier ingests EDS plus J... (REQ_0780)). Live verification belongs in the follow-on taktora-connector-can adapter spec where the bus is already at hand.


Cross-cutting traceability

Every requirement in this chapter (excluding rejected anti-goals) carries a :satisfies: link to its capability-cluster feat; every cluster feat :satisfies: CANopen device-driver codeg... (FEAT_0060). Architectural specifications refining these requirements are emitted in CANopen device-driver codegen — architecture (arc42). Verification artefacts are emitted in CANopen device-driver codegen — verification.

Used filter: types(feat)

ID

Title

Status

Satisfies

FEAT_0060

CANopen device-driver codegen toolchain

open

FEAT_0061

Shared OD core

open

FEAT_0060

FEAT_0062

EDS parser

open

FEAT_0060

FEAT_0063

Codegen IR and backend trait

open

FEAT_0060

FEAT_0064

taktora-connector-can codegen backend

open

FEAT_0060

FEAT_0065

Runtime trait surface

open

FEAT_0060

FEAT_0066

Build helper (build.rs glue)

open

FEAT_0060

FEAT_0067

CLI inspection (cargo subcommand)

open

FEAT_0060

FEAT_0068

EDS ↔ SDO-dump verification

open

FEAT_0060

Used filter: types(req)

ID

Title

Status

Satisfies

REQ_0700

No transport-specific types in fieldbus-od-core

open

FEAT_0061

REQ_0701

no_std + alloc, no mandatory serde

open

FEAT_0061

REQ_0702

OD type surface

open

FEAT_0061

REQ_0703

ethercat-esi re-exports lifted types

open

FEAT_0061

REQ_0704

canopen-eds uses fieldbus-od-core types

open

FEAT_0061

REQ_0720

Pure parse function with no I/O

open

FEAT_0062

REQ_0721

no_std + alloc, no upstream coupling

open

FEAT_0062

REQ_0722

serde-derive INI backend

open

FEAT_0062

REQ_0723

Parse errors carry line and column

open

FEAT_0062

REQ_0724

Unknown sections captured as RawSection

open

FEAT_0062

REQ_0725

Liberal parsing — warn and continue on quirks

open

FEAT_0062

REQ_0726

IR carries identity, OD, PDO comm + maps

open

FEAT_0062

REQ_0730

CodegenBackend trait shape

open

FEAT_0063

REQ_0731

Naming policy is owned by codegen, not the backend

open

FEAT_0063

REQ_0732

Revision collision handled deterministically

open

FEAT_0063

REQ_0733

Common PDO entry types deduplicated

open

FEAT_0063

REQ_0734

Emission target is proc_macro2 TokenStream

open

FEAT_0063

REQ_0735

One EDS file equals one device

open

FEAT_0063

REQ_0740

Backend crate is the sole canopen-eds-rt dependency

open

FEAT_0064

REQ_0741

One device struct per EDS file

open

FEAT_0064

REQ_0742

Identity const emitted per device

open

FEAT_0064

REQ_0743

PDO declarations emitted as sum types

open

FEAT_0064

REQ_0744

Dummy entries skipped in PDO payload structs

open

FEAT_0064

REQ_0745

Generated module root exposes a registry

open

FEAT_0064

REQ_0746

Bring-up SDO writes emitted from EDS

open

FEAT_0064

REQ_0747

Object dictionary emission is a default-off cargo feature

open

FEAT_0064

REQ_0748

Generated code compiles under no_std + alloc

open

FEAT_0064

REQ_0750

CanOpenDevice trait shape

open

FEAT_0065

REQ_0751

CanOpenConfigurable trait shape for bring-up

open

FEAT_0065

REQ_0752

Traits live in canopen-eds-rt, not taktora-connector-can

open

FEAT_0065

REQ_0753

Frame payloads use heapless::Vec<u8, 8>

open

FEAT_0065

REQ_0754

Frame-per-PDO dispatch shape

open

FEAT_0065

REQ_0755

CanOpenError variant surface

open

FEAT_0065

REQ_0756

RPDO rejected outside Operational state

open

FEAT_0065

REQ_0760

Builder API shape

open

FEAT_0066

REQ_0761

Output written to OUT_DIR

open

FEAT_0066

REQ_0762

Cargo rerun-if directives emitted per EDS input

open

FEAT_0066

REQ_0763

Generated output passes through prettyplease

open

FEAT_0066

REQ_0764

Parser warnings surface as cargo warnings

open

FEAT_0066

REQ_0770

cargo eds expand emits one device's generated code

open

FEAT_0067

REQ_0771

cargo eds list enumerates devices in a glob

open

FEAT_0067

REQ_0772

CLI shares the parser and codegen crates

open

FEAT_0067

REQ_0780

Verifier ingests EDS plus JSON SDO-dump

open

FEAT_0068

REQ_0781

Diagnostic output names the differing field

open

FEAT_0068

REQ_0782

Verifier reuses the parser

open

FEAT_0068

REQ_0783

Verifier exits non-zero on mismatch

open

FEAT_0068

REQ_0784

SDO-dump JSON schema versioned

open

FEAT_0068

REQ_0790

NO DCF support this round

rejected

FEAT_0060

REQ_0791

NO CAN-FD payload support in PdoOut

rejected

FEAT_0060

REQ_0792

NO proc-macro front-end

rejected

FEAT_0060

REQ_0793

NO unification of EtherCAT and CANopen runtime traits

rejected

FEAT_0060

REQ_0794

NO runtime EDS parsing

rejected

FEAT_0060

REQ_0795

NO modification of taktora-connector-can runtime

rejected

FEAT_0060

REQ_0796

NO automatic vendor library scraping

rejected

FEAT_0060

REQ_0797

NO live-bus verifier this round

rejected

FEAT_0060