Immutable
release. Only release title and notes can be modified.
What's Changed
This PR establishes the v0.9.0 API and CLI contracts for OCSF Toolkit. It replaces the eventschema-owned pipeline with the new eventpipeline API, makes enrichment and validation configuration more explicit, adds opt-in observable deduplication, improves benchmark comparison tooling, and refreshes release documentation and automation.
Highlights
- Replace the
eventschemapublic API witheventpipeline, including reusable schema loaders for files, fs.FS, bytes, and readers. - Construct pipelines through explicit options: select enum-sibling and observable actions independently, configure validation, issue levels, observable filtering, and path notation.
- Introduce typed validation and processing-issue codes/levels, with per-code policy controls in both the Go API and CLI.
- Add opt-in generated-observable deduplication. Default enrichment now preserves all generated candidates; generated-only deduplication is available through
WithObservableDeduplication(...)/--deduplicate-observables generated. - Simplify CLI configuration and reporting: component action flags replace the old negation retention flags; summaries are opt-in via
--summary; validation findings no longer suppress selected output. - Improve schema compilation/loading structure, processing allocation coverage, benchmark comparison tooling, and release verification.
- Update examples, architecture and behavior documentation, migration guidance, changelog, OCSF 1.9.0 fixtures, and validator-comparison documentation.
Breaking changes
v0.9.0 intentionally changes both the public Go API and CLI behavior while the project remains pre-1.0. Notable migrations include:
- Library pipeline construction moves from
eventschema.Schemamethods toeventpipeline.NewPipeline(eventpipeline.WithSchema(schema), ...). - Combined enrichment/removal processors are replaced with independently configurable enum-sibling and observable actions. In the CLI,
--enrichand--unenrichremain shorthands. - Added per-code issue-level validation-level controls.
- In the library:
WithIssueLevel(...)/WithAllIssueLevels(...)andWithValidationLevel(...)/WithAllValidationLevels(...). - In the CLI:
--issue-leveland--validation-level.
- In the library:
- Library
WithWarnOnMissingRecommended()and CLI--warn-on-missing-recommendedare removed.- In the library, use
WithValidationLevel(validation.AttributeRecommendedMissing, validation.LevelWarning)instead. - In the CLI, use
--validation-level validation_attribute_recommended_missing=warninginstead.
- In the library, use
- CLI summary output is no longer printed by default; request it with
--summary. - CLI
--skip-invalid-outputis removed; validation errors affect exit status when requested but do not suppress configured output.
See CHANGELOG.md for the complete migration table and behavioral details.
New Contributors
- @SynqlyGabriel made their first contribution in #1, adding schema loading from
io.Reader, allowing applications to supply embedded schemas. - @lkwdwrd made their first contribution in #3, reducing enrichment allocations and adding representative benchmark and allocation-regression coverage.
- @rmouritzen-splunk made their first contribution in #2, with API and performance improvements.
Full Changelog: v0.8.0...v0.9.0