netapi: Decisions & Risks
1. Decision Log
| Date | Decision | Rationale | Decided By |
|---|---|---|---|
2025 (initial) |
Language: Python |
Richest network automation ecosystem (netmiko, ncclient, scrapli, ciscoisesdk). Fastest prototyping for validating patterns across vendors. |
Evan Rosado |
2025 (initial) |
Atomic Design architecture |
Composability from primitives to workflows mirrors how network operations actually compose. Prevents the one-off script graveyard. |
Evan Rosado |
2026-03-25 |
Remove genie/pyats from parsing extra |
Unfixed CVE in pyasn1 dependency creates transitive vulnerability. Security > convenience. |
Evan Rosado |
2026-03-25 |
Unified exception hierarchy |
Bare |
Evan Rosado |
2026-03-25 |
Apache-2.0 license |
Permissive for commercial use. Consistent with Kubernetes, Docker ecosystem. Allows Kora (Go rewrite) to exist as separate commercial product. |
Evan Rosado |
2026-03-25 |
Keep netapi private, Kora public |
netapi is the battle-tested proving ground. Kora is the clean-room public product. Private repo protects proprietary patterns while public repo builds community. |
Evan Rosado |
2026-03-25 |
dsec for credential management |
No |
Evan Rosado |
2. Risk Assessment
| Risk | Likelihood | Impact | Mitigation | Contingency |
|---|---|---|---|---|
Test coverage stays at 1/10 — regressions ship silently |
High |
High |
Phase 1 commercialization focuses entirely on pytest infrastructure. Block PyPI publish until 70% coverage. |
Freeze feature development until tests exist for all ISE clients |
Dependency CVEs in transitive packages |
Medium |
High |
Dependabot enabled. Quarterly audit of all extras. genie/pyats already removed as precedent. |
Pin vulnerable packages, document known CVEs, provide workarounds |
netapi stays private too long — Kora never launches |
Medium |
High |
Kora Phase 1 has hard deadline (June 2026). netapi patterns are already validated — porting is translation, not invention. |
Ship netapi to PyPI as-is with ISE-only scope if Kora stalls |
Python ecosystem loses relevance for network automation |
Low |
Medium |
Go rewrite (Kora) hedges this bet. Atomic Design patterns are language-agnostic. |
Accelerate Kora timeline, maintain netapi for existing users |
Vendor API breaking changes (ISE, pfSense, WLC) |
Medium |
Medium |
Version-pinned API clients. Integration test suite against lab instances. Change detection in CI. |
Deprecate affected vendor module version, document migration path |
Burnout — 18 vendors is too much surface area |
High |
High |
ISE is the flagship. Other vendors are opportunistic. Do not chase feature parity across all 18. |
Freeze vendor count. Deepen ISE/WLC/pfSense only. Community handles the rest via Kora plugins. |