This document is the starting point for people who maintain, review, test, or extend LLDP-Runner. It assumes familiarity with enterprise networking and basic Python concepts, but it does not assume prior knowledge of the codebase.
PRIMER.md explains SNMP collection, evidence, claims, clusters, and reversible decisions in operational terms.ARCHITECTURE.md describes the complete runtime and data flow.dev/ARCHITECTURE.md provides a shorter contributor map of the code.dev/FLOW-DIAGRAMS.md maps collection, resolver, and graph-rematerialization flow to current source boundaries.dev/MODULES.md identifies the purpose of each package and module family.dev/SCHEMA.md lists current JSON contract versions and their main sections.dev/STATE-AND-SCHEMAS.md explains durable state, immutable evidence, graph materialization, and migration practice.dev/TESTING.md describes test layers and release gates.dev/RELEASES.md describes patch and source-bundle preparation.dev/CONTRIBUTING.md lists coding and review practices.LLDP-Runner is a coordinator/worker application:
CLI and configuration
|
v
coordinator + SQLite state
|
+--> worker processes
| +--> ICMP
| +--> SNMP SYSTEM-MIB
| +--> IF-MIB / ENTITY-MIB
| +--> CDP / LLDP / LLDPv2
|
v
immutable observations and claims
|
v
deferred entity and relationship resolution
|
v
graph + compatibility projection + reports
The coordinator is the only process that mutates canonical state. Workers collect facts and return structured results. This boundary reduces duplicate scheduling decisions and makes pause/resume behavior auditable.
ifIndex and lldpLocalPort; equal numbers in different namespaces are not automatically the same interface.From the source root with the project environment active:
python -m compileall -q src tests
pytest -q
bash -n scripts/lrun-bundle-diffWhen installed development tools are available:
ruff check src tests
ruff format --check src tests
ty checkSee dev/TESTING.md before interpreting a successful unit test as release readiness. Network protocol work also requires production-shaped fixtures and, where possible, two consecutive live discovery runs.