All notable changes to trishul-snmp are documented here.
Format follows Keep a Changelog.
Versioning follows Semantic Versioning.
from_bundle() now assigns simulation rules for dynamic syntax types — counters (Counter32, Counter64, and variants) get a CounterRule that increments on every poll, timetick/timestamp syntaxes (TimeTicks, TimeStamp, TimeInterval) get an UptimeRule, and gauges (Gauge32, Unsigned32) get a RandomNumericRule(min=0, max=1000). Previously all three were frozen at 0 as static values, making the simulator non-responsive over time.CounterRule, RandomNumericRule, UptimeRule, and TimestampRule let InMemoryObjectSource serve dynamic OID values (monotonically-increasing counters, random gauges, auto-incrementing timeticks, epoch timestamps) without any application-side callback code. The SimulationRule protocol is public for custom rules.InMemoryObjectSource.from_bundle() — class method that auto-populates a source from a MibBundle, generating scalar .0 instances and column instances up to max_instances, with syntax-appropriate default values and optional deprecated-object filtering.MibBundle iteration helpers — iter_objects(), iter_notifications(), and search() allow callers to iterate or substring-search bundle nodes in memory without a separate database, enabling browser UIs and catalog features to query the bundle directly.NotificationEvent.to_dict() — returns a fully JSON-safe dict representation of a notification event, including varbinds and member bindings, suitable for WebSocket broadcast or storage without additional application-side serialization.V2cNotifier now supports outbound trap and inform send, and V2cNotificationListener supports inbound trap/inform receive with automatic inform acknowledgement.decode_notification() turns captured BER payloads into the same public NotificationEvent model used by the live listener.V2cResponder, InMemoryObjectSource, and CallbackObjectSource now cover GET, GET_NEXT, and GET_BULK for tests, demos, and simulator-style use.scripts/validate_ecosystem.py now creates an isolated venv, validates tsmi CLI bundle output, exercises live manager flows against a real agent, and checks local notification and responder behavior end to end.NotificationEvent now carries notification OID/name/description, uptime, and declared member bindings derived from compiled JSON metadata when available.tsnmp now includes trap, inform, listen, and decode-notification in addition to the manager polling commands.scripts/benchmark_snmpd.py compares raw vs enriched API and CLI paths against a live SNMP agent.tsmi sidecar contract validation from tsnmp display-policy behavior.MODULE::symbol.0 when an exact .0 alias is an OBJECT IDENTIFIER for a scalar OBJECT-TYPE, without changing low-level exact lookup semantics.V2cManager is the primary public API.get, get_next, get_bulk, walk, and bulkwalk.translate, get, getnext, getbulk, walk, bulkwalk, and version.See v0.1.0 release notes for the fuller release summary.