Commit graph

10 commits

Author SHA1 Message Date
0e1161de39
reliability: unbounded scan audit complete, handoff finalized
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
- Zero unbounded scans found. Every query has hard LIMIT, deterministic
  ORDER BY, and time-bounded filters
- Design strengths: QueryBuilder discipline, GiST indexes on all spatial
  queries, zoom-capped cumulative limits in historical loader
- 6 low-severity edges documented (missing explicit LIMIT, ILIKE index,
  intermediate CTE limits)
- Handoff: all remaining reliability items now done
2026-07-26 15:34:51 -05:00
2b64beac34
reliability: N+1 query audit complete, handoff updated
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
- Audit found no high-severity N+1 patterns. Cache layers and batch queries
  already eliminate classic patterns in hot paths
- Two medium-priority edge cases documented: InfoLive double-query per update,
  popup weather fallback cache key mismatch
- Handoff: marked reliability #4 as done
2026-07-26 15:32:51 -05:00
e1da1716b1
refactor: split MapLive.Index into focused modules
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
- State (177 lines): mount assigns, defaults, slideover, connection status
- Events (540 lines): 22 handle_event handlers, rate limiting, URL helpers
- Subscriptions (122 lines): PubSub setup, spatial registration, cleanup
- BoundsUpdater (172 lines): bounds pipeline, validation, debouncing
- index.ex: 2,062 -> 1,202 lines (42% reduction)
- Credo: initial_historical_completed, bounds_update_timer added to ignored_assigns
  (consumed by extracted modules, invisible to credo)
- All 361 map_live tests pass across multiple random seeds
- Handoff: marked maintainability #1 as done
2026-07-26 15:30:08 -05:00
eb389af64b
reliability: bound ingress buffers, payload limits, overflow telemetry
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
- PacketProducer: 15s periodic buffer depth telemetry, overflow events
- MobileChannel: 500-packet ring buffer with overflow drops, payload validation
  (query max 20 chars, callsign max 20 chars, results capped at 200,
   bounds area max 1000 sq deg), rejection telemetry
- PromEx: buffer depth/max/overflow metrics, mobile overlay, payload rejected
- Tests: 2491 passed, 0 failures
- Handoff document: marked reliability #1 and #2 as done
2026-07-26 15:10:54 -05:00
4e92bbfc9f
docs: supervision tree ownership map, naming issues documented
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
- Mapped 18 top-level children + 2 nested supervisors in application.ex
- Ownership: Is->PacketPipelineSupervisor (ingestion), PartitionManager (retention),
  SpatialPubSub (broadcast), CleanupScheduler+PacketCleanupWorker (bad-packet cleanup)
- Removed Exq comment fossil from application.ex:72
- Known naming issues: PacketCleanupWorker only handles bad_packets,
  PostgresNotifier scope narrower than name, PacketConsumer is 776-line multi-concern
- Handoff document: marked maintainability #2 as done
2026-07-26 14:59:55 -05:00
a4991c1401
docs: callsign naming distinction, test coverage review, handoff updates
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
- Aprsme.Callsign: enhanced @moduledoc with explicit AX.25 vs transport-safe
  identifier distinction, four validation layers documented
- Test coverage review: confirmed no gaps from deleted packet_pipeline_integration_test
  All ingestion scenarios covered across 5 test files; 2491 passed, 0 failures
- Handoff document: marked maintainability #4 (callsign naming), #6 (test coverage) as done
2026-07-26 14:57:42 -05:00
9ba4dac53a
maintainability: obsolete config cleanup, focused migration tests
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
- Removed stale .dialyzer_ignore.exs entry for deleted packet_replay_test.exs
- Removed orphaned :initialize_replay_delay config key from test.exs
- Updated CLAUDE.md: StreamingPacketsPubSub -> SpatialPubSub
- Added migration_validation_test.exs: 12 tests covering geometry GiST indexes,
  counter reconciliation, and partition boundary cutoff behavior
- Updated handoff document: marked maintainability #3 and #5 as done
2026-07-26 14:15:39 -05:00
9f45937a82
security: sobelow triage, admin route review, k8s secrets hardening
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
- Admin route authorization: all routes verified with dual protection, negative tests exist
- Sobelow: regenerated .sobelow-skips (14 documented findings, no stale entries)
- k8s: moved APRS_PASSWORD to APRS_PASSCODE secretKeyRef in deployment
- Handoff document: marked remaining security items #4-6 as done
2026-07-26 14:08:27 -05:00
0f2195ef9d
security: CSP nonces, RemoteIp CIDR gating, rate limiting, NetworkPolicies, deadlock fixes
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
- Content-Security-Policy: nonce-based per-request plug replacing unsafe-inline scripts
- RemoteIp: CIDR-based trust gating via InetCidr, skips forwarded headers from untrusted peers
- Rate limiting: auth pipeline (20/min), LiveView event handlers, existing mobile channel limits
- NetworkPolicy: 4 k8s policies (web ingress, cluster, metrics, egress) for least-privilege networking
- PartitionManager: deadlock retry with exponential backoff in drop_partition
- Tests: reduced parallelism (max_cases 4), packets_test async:false to prevent trigger contention
- k8s: APRS_PASSWORD -> APRS_PASSCODE secretRef, vendor/aprs submodule hardened
2026-07-26 14:04:56 -05:00
b0832e5a9c
refactor: harden packet delivery and operations
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
2026-07-26 13:11:26 -05:00