feat(go): add Phase 1 parity sidecar

This commit is contained in:
Luna 2026-07-10 05:02:50 -07:00
parent 65f5be6420
commit f02509aab5
22 changed files with 947 additions and 6 deletions

View file

@ -64,6 +64,12 @@ Project docs:
> detectors, and JSON output. The bash version and the Python version share one
> red-team harness, so every signature is exercised against both.
Phase 1 now also has an **experimental Go sidecar** under `go-agent/`. It emits
the same `enodia.event.v1` envelope, captures an injectable `/proc` process
view, and ports `deleted_exe` as the first parity-checked poll detector. It is
stdout-only and does not replace, install over, or write state for the Python
daemon; Python remains authoritative until subsystem parity is complete.
## Why these detectors
Every detector keys on a behavior that is **cheap to observe** and **expensive
@ -162,6 +168,14 @@ enodia_sentinel/
└── monitor.py runs the probe on a thread, routes events → rules
```
The parallel Phase 1 tree is intentionally isolated:
```text
go-agent/
├── cmd/enodia-sentinel-go/ experimental JSONL sidecar
└── internal/ config · model · system · detectors · schema · loop
```
Three complementary detection paths feed one Alert → snapshot pipeline:
- **Poll** — every few seconds, sweep `/proc`/`ss` (catches anything lingering).
@ -290,6 +304,8 @@ drill only sets the env var on a throwaway process.
```bash
make test # stdlib unittest suite, no runtime deps
make test-go # stdlib-only Go sidecar unit tests
make parity-go # shared fixture: Go output vs Python oracle
```
Detectors are pure functions over an injectable `SystemState`, so tests build