Skip to content

Commit 0545ab7

Browse files
committed
feat: Initial release of Cardinality Guardian v1.0.0 — Production-grade OTel processor
0 parents  commit 0545ab7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+4740
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Bug Report
2+
description: File a report to help us improve Cardinality Guardian
3+
labels: [bug, triage]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
### 🛡️ Cardinality Guardian Bug Report
9+
Thank you for helping us harden the processor! Please provide as much detail as possible.
10+
- type: textarea
11+
id: description
12+
attributes:
13+
label: Description
14+
description: A clear and concise description of what the bug is.
15+
placeholder: "e.g., The processor is not stripping labels on ExponentialHistograms when X is configured."
16+
validations:
17+
required: true
18+
- type: textarea
19+
id: reproduction
20+
attributes:
21+
label: Steps to Reproduce
22+
description: How can we see this behavior ourselves?
23+
placeholder: |
24+
1. Configure processor with limit X
25+
2. Send metric Y with cardinality Z
26+
3. Observe...
27+
validations:
28+
required: true
29+
- type: textarea
30+
id: environment
31+
attributes:
32+
label: Environment
33+
description: Versions, OS, and Collector configuration.
34+
placeholder: |
35+
- Collector Version: v0.148.0
36+
- Cardinality Guardian: v1.0.0
37+
- OS: Linux/macOS
38+
validations:
39+
required: true
40+
- type: textarea
41+
id: expected-behavior
42+
attributes:
43+
label: Expected Behavior
44+
description: What did you expect to happen?
45+
- type: checkboxes
46+
id: checkboxes
47+
attributes:
48+
label: Checklist
49+
options:
50+
- label: I have verified this is not a duplicate issue.
51+
required: true
52+
- label: I have checked the [FAQ.md](https://github.com/YElayyat/otel-cardinality-processor/blob/main/FAQ.md) for answers.
53+
required: true
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Feature Request
2+
description: Suggest an idea for this project
3+
labels: [enhancement]
4+
body:
5+
- type: textarea
6+
id: problem
7+
attributes:
8+
label: Is your feature request related to a problem?
9+
description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
10+
validations:
11+
required: true
12+
- type: textarea
13+
id: solution
14+
attributes:
15+
label: Describe the solution you'd like
16+
description: A clear and concise description of what you want to happen.
17+
validations:
18+
required: true
19+
- type: textarea
20+
id: alternatives
21+
attributes:
22+
label: Describe alternatives you've considered
23+
description: A clear and concise description of any alternative solutions or features you've considered.
24+
- type: textarea
25+
id: context
26+
attributes:
27+
label: Additional context
28+
description: Add any other context or screenshots about the feature request here.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Security Report
2+
description: Report a security vulnerability
3+
body:
4+
- type: markdown
5+
attributes:
6+
value: |
7+
### 🕵️ Security Reporting
8+
**STOP! Please do NOT open a public issue for security vulnerabilities.**
9+
10+
To protect the community, we use [GitHub's Private Vulnerability Reporting](https://github.com/YElayyat/otel-cardinality-processor/security/advisories/new) feature.
11+
12+
1. Go to the [Security Tab](https://github.com/YElayyat/otel-cardinality-processor/security)
13+
2. Click **Report a vulnerability**
14+
3. Fill out the private disclosure form.
15+
16+
Thank you for practicing responsible disclosure!

.github/workflows/ci.yml

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
test:
14+
name: Unit Tests
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- uses: actions/setup-go@v5
20+
with:
21+
go-version: "1.25"
22+
23+
- name: Verify dependencies
24+
run: |
25+
go mod tidy
26+
git diff --exit-code go.mod go.sum
27+
28+
- name: Run unit tests with coverage
29+
run: go test -race -coverprofile=coverage.txt -covermode=atomic ./...
30+
31+
- name: Upload coverage reports to Codecov
32+
uses: codecov/codecov-action@v4
33+
with:
34+
token: ${{ secrets.CODECOV_TOKEN }}
35+
file: ./coverage.txt
36+
fail_ci_if_error: false
37+
38+
e2e:
39+
name: End-to-End Tests
40+
runs-on: ubuntu-latest
41+
timeout-minutes: 20
42+
steps:
43+
- uses: actions/checkout@v4
44+
45+
- uses: actions/setup-go@v5
46+
with:
47+
go-version: "1.25"
48+
49+
- name: Run E2E tests
50+
run: make e2e
51+
52+
lint:
53+
name: Lint
54+
runs-on: ubuntu-latest
55+
steps:
56+
- uses: actions/checkout@v4
57+
58+
- uses: actions/setup-go@v5
59+
with:
60+
go-version: "1.25"
61+
62+
- name: Install golangci-lint from source
63+
run: make install-lint
64+
65+
- name: Run linter
66+
run: make lint
67+
68+
govulncheck:
69+
name: Vulnerability Scan
70+
runs-on: ubuntu-latest
71+
steps:
72+
- uses: actions/checkout@v4
73+
74+
- uses: actions/setup-go@v5
75+
with:
76+
go-version: "1.25"
77+
78+
- name: Install govulncheck
79+
run: go install golang.org/x/vuln/cmd/govulncheck@latest
80+
81+
- name: Run govulncheck
82+
run: govulncheck ./...

.gitignore

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# If you prefer the allow list template instead of the deny list, see community template:
2+
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
3+
#
4+
# Binaries for programs and plugins
5+
*.exe
6+
*.exe~
7+
*.dll
8+
*.so
9+
*.dylib
10+
11+
# Test binary, built with `go test -c`
12+
*.test
13+
14+
# Code coverage profiles and other test artifacts
15+
*.out
16+
coverage.*
17+
*.coverprofile
18+
profile.cov
19+
20+
# Dependency directories (remove the comment below to include it)
21+
# vendor/
22+
23+
# Go workspace file
24+
go.work
25+
go.work.sum
26+
27+
# env file
28+
.env
29+
30+
# Editor/IDE
31+
# .idea/
32+
# .vscode/
33+
34+
# Linter and agent caches
35+
.cache/
36+
.local/
37+
build/
38+
39+
# Benchmark results (machine-specific, not committed)
40+
test/benchmark/results/
41+
*.prof

0 commit comments

Comments
 (0)