Skip to content

docs(agents): park #272 egress physical-filter NO_HOLE - #276

Closed
AdamRickards wants to merge 182 commits into
mainfrom
docs/park-272-egress-filter
Closed

AdamRickards wants to merge 182 commits into
mainfrom
docs/park-272-egress-filter

Conversation

@AdamRickards

Copy link
Copy Markdown
Owner

Schema NO_HOLE: index_filter ingress-only. Related #272 #195

User docs: three-gate and get_dns SVGs
Linguist hides data languages; schema and wire YAML are the product. Closes #18.
POST /v1/run {name} maps get_dns.read to the existing inspect harness. Writes stay 400. Closes #20.
load_all_method_metadata re-parsed the same wire files once per
attribute (~50s cold --inspect). Memoize the two loaders. Closes #22.
fix(tests): cache wire YAML loads in audit_common to fix ~50s --inspect overhead
Read-only sidecar over release_matrix --inspect
run_inspect returns per-protocol status, raw, and parity_diffs.
Timeouts come from tests/inspect.yaml. passed means at least one
protocol returned data; diffs stay for issue proof. Closes #24.
fix(sidecar): return structured per-protocol inspect results with protocol-aware timeouts
run_inspect crashed NameError on every live POST /v1/run after #25.
Import once at module scope (None if napalm missing). Offline test
calls run_inspect directly, not through sidecar fake. Closes #26.
fix(tests): restore missing get_network_driver import in run_inspect
…s so a working protocol never reports as failed

Combined open()+call against one timeout_s was failing healthy MOPS
(open ~1.46s + get_dns ~0.6s vs a 2s getter-only budget). YAML now
declares per-protocol open/call budgets; close() still runs on a
call-phase timeout. Fixes #28.
Each protocol owns open/call/close on one thread (NILS discover_one
pattern). Overall wait is max(open+call), not sequential sum, and
the caller never close()s another thread's device. Fixes #32.
Keeps #28 YAML open_timeout_s/call_timeout_s and open_ms/call_ms.
refactor(harness): split inspect budgets and fan out protocols as independent workers
Fixes #34. POST /v1/run {name, trace:true} returns protocols.ssh.cli
so #33 can be judged from the table parser's input. Default polls stay
compact. Extra keys still 400.
feat(sidecar): optional trace copies SSH show text onto inspect result
…, and cleans back to main

Fixes #36. op: pr looks up the GitHub author and 403s before fetch unless
YAML allow_pr_authors matches (AdamRickards). Fake transport never gits.
feat(sidecar): POST /v1/sync pulls main, checks out an allowlisted PR, and cleans back to main
Fixes #33. Overlay declares key_column: 0 so the live show "No. 1"
becomes servers key "1", matching mops/snmp INDEX. Schema primary_key
address is unchanged (separate inspect-map question).
fix(wire): SSH dns servers table keys by No. column, not row_num
SSH show network hidiscovery reports read-write/read-only. Schema
canonical is readWrite/readOnly (value_map 1/2). Overlay tags the
Operating mode read with value_map hidiscovery_mode so sidecar
mops/ssh match without a Python rewrite.

Closes #45
Sub-table primary_key was the not-accessible INDEX
(hm2TrafficClassPriority / hm2CosMapIpDscpValue). SNMP walks of those
OIDs return no rows. Drive from the accessible value columns instead;
the walk suffix is the map key, same as napalm-hios 1.17.

SSH overlay keys those value columns by the show-table index column,
and adds show classofservice ip-dscp-mapping.

Closes #58
#79)

INDEX hm2UserName is accessible-for-notify; 1.17 never walks it.
Drive get_users from hm2UserAccessRole and decode IMPLIED suffix to name.
vlan_id SNMP was walking not-accessible CurrentTable INDEX.
Walk accessible StaticName instead; suffix is vlan_id (1.17 same-wire).
MOPS and SSH sources unchanged.
YAML bound ipNetToPhysical* (empty SNMP). 1.17 walks accessible
Media columns; suffix is ifIndex.ip. age has no Media column (0.0).
SSH Physical overlay leftover, not this ticket.
get_ipv6_neighbors and get_ipv6_neighbors_table share Physical
INDEX (empty SNMP). Same family as ARP: accessible Media columns,
suffix ifIndex.ip. 1.17 has no ND getter. SSH leftover not this ticket.
INDEX sFlowRcvrIndex is not-accessible. 1.17 walks Owner and takes
1-8 from the suffix. MOPS/SSH unchanged. Sampler/poller DataSource
is a compound OID suffix, not this ticket.
INDEX DataSource is not-accessible. 1.17 walks accessible Receiver
and takes ifIndex from {oid_len}.1.3.6…ifIndex.instance. Regex
2.2.1.1.(ifIndex) fits MOPS OID and SNMP suffix. SSH leftover.
INDEX lldpRemLocalPortNum is not-accessible. 1.17 walks accessible
lldpRemSysName at 1.0.8802 and takes localPortNum from the second
sub-id of timeMark.localPortNum.remIndex. No key_field so list_append
keeps multiple remIndex per port. Rem columns these getters use
moved to the IEEE tree. MOPS/SSH unchanged.
INDEX snmpTargetAddrName is not-accessible. 1.17 walks accessible
snmpTargetAddrTAddress and decodes the IMPLIED dest name from the
suffix. Getter-only PK override; create/delete catalog unchanged.
AdamRickards and others added 25 commits September 13, 2026 17:13
…#232)

Drop duplicate alias floor; keep canonical get_ip_addresses (floors 50→49).
Schema alias unchanged; catalog already has get_ip_addresses.read.

Co-authored-by: Jaysue <jaysue@users.noreply.github.com>
- #233 get_arp_inspection vlans: DaiVlanIndex not-accessible — walk
  DynArpInspEnable + value_from_index (sibling #39).
- #234 get_mac_address_table: TpFdbAddress not-accessible — walk Port
  with fixed_string MAC index + key_format mac; port/status same keys.
- #235 get_signal_contact sense_ps_state: key PS table by hm2SigConID
  so contact rows join (was hm2PSID / raw OID suffix).

Related: #233 #234 #235
When leftovers need Engine primitive or human eyes, park on
hitl-engine-park.md and keep soft Schema/Docs/Test hops moving —
do not widget-stall A′/B.

Co-authored-by: Architect <architect@users.noreply.github.com>
Co-authored-by: Architect <architect@users.noreply.github.com>
Eleven secondary leaves (MAU×4, power/cable×3, signal, flow,
track, mtu) keep SNMP write OIDs for SET but lose gather walks so
get_interfaces stays on seven IF-MIB reads under the call budget.
MOPS reads unchanged. Related: #47.
)

Replace stub defaults source/priority (no attrs → both_absent) with
dot1p/ip_dscp wired to hm2NetVlanPriority and hm2NetIpDscpPriority
(MOPS+SNMP already in netconfig.yaml). Related: #240.
- #243: dot1qvlanindex mops → StaticEntry (CurrentEntry absent Offline)
- #244/#245: primary_key enabled + key_map ifindex (storm_control);
  drop empty name: {} pk that shaped to {}

Offline FeatureEngine mops: get_vlans/egress n=2; auto_disable/poe n=1.
Related: #243 #244 #245
 #251) (#252)

- #250: ports compute coerces None/'None' so missing UntaggedPorts
  does not empty get_vlans.ports
- #251: hm2AutoDisableIntfOperState value_map 1/2 → true/false

Offline FeatureEngine: ports={'1/1':'T','1/2':'T'}; enabled=False.
Related: #250 #251 #193
…253) (#254)

Method-scoped raw+compute: missing UntaggedPorts was ifindex-mapped to
string 'None'; gather untagged_ports_raw, compute list default.
Feature wire kept for get_vlans ports / set_vlan_egress.

Offline: untagged_ports=[]; get_vlans ports still {'1/1':'T',...}.
Related: #253 #193
Co-authored-by: Architect <architect@users.noreply.github.com>
…ble (#193) (#257)

Capture current Offline FeatureEngine shapes (no invent). Floors=52.
Skip get_poe (status null fixture) and get_route_to (unfloorable).

Co-authored-by: Test bot <test-bot@users.noreply.github.com>
* docs(agents): reconcile Effort board to floors=52 / A′ / soft SSH

* docs(agents): park PR #76 get_optics for HITL revive-or-close
* docs(agents): fold open-issue orphans into Effort board / park

* docs(agents): park Engine cycle-0 #30 #115 #116
Mark local-agents-refactor poke #1 done after #155; say "pipeline
trace" in ENGINE_PRINCIPLES; stop calling the legacy audit tuple "from
debug". Docs-only — no Engine/adapter meaning change.
…otocol (#266)

Map Bindings Database Location local→'' so SSH database_file matches
MOPS/SNMP empty RemoteFileName when storage is local (#44). Map show
network parms Protocol none/local→static so SSH matches schema MIB 1
decode used by MOPS/SNMP (#54). Same overlay pattern as #45/#77.

Related:#44 Related:#54
Nine secondary leaves (utilization×5, RMON×3, late_collisions) keep SNMP
write OIDs for SET but lose gather walks so get_interface_statistics stays
on thirteen IF-MIB counter reads under the call budget. MOPS unchanged.
Related: #264 #46.
…46) (#271)

Wire counter leaves + ifdescr identity to CLI.json HIT show interface
counters (paired_rows / regex_extract \\S+ per 1.17 whitespace layout).
Method-scope name → ifdescr so get_interfaces keeps show port ifname.
Utilization/RMON/late_collisions stay without SSH (defaults). Related: #46.
* fix(schema): get_optics keyed by detected SFP, SSH show sfp

Drive get_optics identity from hm2SfpDiagEntry (MIB: Entry for a
detected SFP) instead of if.ifname, so cpu/vlan/empty cages are not
left-joined with defaults 0.0. SSH overlay reads show sfp, not show port.

Closes #55

* fix(schema): get_optics name from walked hm2SfpDiagEntry column

Scalar hm2sfpdiagtable + lookup resolve:"key" left MOPS/SNMP at n=0:
SNMP/MOPS GET of the table OID returns {}, so _apply_lookup takes the
dict-match branch and drops keys. SSH parser:none returns a string and
worked. Drive primary_key from accessible walked hm2sfpcurrenttxpower
(1.17 / get_users pattern); keep show sfp overlays and index_filter.

Related: #55
@AdamRickards

Copy link
Copy Markdown
Owner Author

Architect: closing this one. #383 supersedes it (merged 2f342a6, docs-only, hitl-engine-park.md, which now has the #272 row). This branch is on pre-scrub history and touches 100+ files, so it can't be merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant