precursor 0.2.3

Pre-protocol payload tagging, similarity clustering, and packet/firmware triage CLI.
# Sigma Integration Notes

Last updated: February 14, 2026

## What is implemented now

Precursor can now ingest Sigma YAML detection selectors with:

- `--sigma-rule <PATH>`: load one or more Sigma rule files.
- Selector values under `detection` are converted to named PCRE captures.
- Sigma `condition` expressions are parsed and enforced before records are emitted.
- Basic field modifiers are mapped:
  - `|contains`
  - `|startswith`
  - `|endswith`
  - `|re`

Generated capture names are emitted in `tags` as:
- `sigma_<rule-id>_<selector>_<index>`
- `sigma_<rule-id>_<selector>_<field>_<index>` for nested field selections.

Rule-level fields are emitted when a Sigma rule condition passes:
- `sigma_rule_matches`
- `sigma_rule_ids`

## Current limits

- No support yet for Sigma pipelines, backend mappings, or field normalization layers.
- `condition` support currently covers selector references, `and/or/not`, and `N of` / `all of` forms.
- No support yet for advanced modifier combinations such as `|contains|all`, CIDR operators, and value transforms.

## Why this still matters

For payload/log triage, Sigma keyword selectors already provide high-signal pivots.
This is especially useful for:

- shell command telemetry
- pre-parser packet or payload strings
- rapid rule prototyping before full SIEM translation

## Next feature increments

1. Add explicit field extraction mapping (for JSON inputs, e.g. `.CommandLine`).
2. Add support for `|contains|all`, CIDR, and encoding modifiers.
3. Emit Sigma metadata (`title`, `id`, `level`) into report fields.
4. Add parity tests against a larger subset of SigmaHQ rules.

## References

- Sigma Linux suspicious shell commands rule:
  - https://github.com/SigmaHQ/sigma/blob/master/rules/linux/builtin/lnx_shell_susp_commands.yml
- Sigma specification repository:
  - https://github.com/SigmaHQ/sigma-specification