Contributing
How to contribute to the Incidentary open-source SDKs.
Contributing to the SDKs
Incidentary is not open source, but the SDKs are. Contributions are welcome for the Node.js, Python, and Go SDKs.
| SDK | Repository |
|---|---|
| Node.js | github.com/incidentary/sdk-node |
| Python | github.com/incidentary/sdk-python |
| Go | github.com/incidentary/sdk-go |
Before opening a PR
- Bug fixes: open an issue first to confirm the behavior is unintended. Include a minimal reproduction.
- New features: open an issue to discuss the feature before writing code. SDK features must not require changes to the ingest API, which is not open source.
- Wire format changes: the wire format is frozen at v1. PRs that change field names, types, or semantics will not be merged. See Wire Format for what "frozen" means.
Development setup
Each SDK has its own development instructions in its repository's CONTRIBUTING.md. The general pattern is the same across all three:
- Clone the SDK repository
- Install dependencies per the language's toolchain
- Run the test suite against the local mock ingest server
- Submit a PR against
main
The mock ingest server is included in each SDK repository. It validates that the SDK sends correctly-shaped wire format payloads without requiring a live Incidentary account.
Commit conventions
All three SDK repositories use Conventional Commits:
type: lowercase subject| Type | When to use |
|---|---|
feat | New capability |
fix | Bug fix |
refactor | Code change with no behavior change |
docs | Documentation only |
test | Tests |
chore | Tooling, dependency updates |
Subjects must be lowercase. fix: Correct flush interval will be rejected; fix: correct flush interval is correct.
What belongs in the SDK
The SDKs are responsible for:
- Capturing causal events from instrumented HTTP, queue, job, and webhook operations
- Propagating trace context via
x-incidentary-trace-idandx-incidentary-parent-ceheaders - Buffering and flushing events to the ingest endpoint in the correct wire format
- Managing the pre-arm capture window based on local anomaly signals
The SDKs are not responsible for:
- Assembling the causal graph (that happens server-side)
- Creating or closing incidents
- Any logic that requires access to the Incidentary API beyond the ingest endpoint