Basekick-Labs/arc - Open Source PR Review Scorecard

Open, SQL-native time-series database for telemetry you need to keep. 34M+ records/sec ingestion, 8M+ rows/sec queries. InfluxDB Line Protocol and Telegraf compatible. Open Parquet on your storage. Single binary. S3/Azure native. Air-gap ready. AGPL-3.0.

C-Rank Grade: S (Elite) - 72/100

External PR Merge Rate: 61%

Response Time: 14h

First Timer Success: 50%

Frequently Asked Questions

Is Basekick-Labs/arc welcoming to first-time open-source contributors?

Basekick-Labs/arc has a recorded first-timer success rate of 50.0%. Repositories ranked S typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in Basekick-Labs/arc respond to incoming external pull requests in approximately 13.7 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 71.6 C-Rank™ score (S Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 71.6 places Basekick-Labs/arc in the S tier.

What is the external contributor pull request merge rate for Basekick-Labs/arc?

The external contributor pull request merge rate for Basekick-Labs/arc is 61.1%, based on public PR activity from non-core contributors.

Are there Good First Issues available in Basekick-Labs/arc?

Basekick-Labs/arc currently has 5 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

Basekick-Labs
Basekick-Labs/arcS•Elite678
GitHub
Back to Explorer
Basekick-Labs

Basekick-Labs/arc

678
Active (30d)S•Elite(72/100)Go

Open, SQL-native time-series database for telemetry you need to keep. 34M+ records/sec ingestion, 8M+ rows/sec queries. InfluxDB Line Protocol and Telegraf compatible. Open Parquet on your storage. Single binary. S3/Azure native. Air-gap ready. AGPL-3.0.

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Active Open-Source Maintainer

Warmth Score
7.8/10
Patience Score
8.2/10
Nitpick Rate
20%

Growing Go project in Basekick-Labs/arc welcoming community pull requests and bug fixes.

Top PR Submission Do's

  • •Ensure code complies with Go style conventions
  • •Keep PRs scoped and well-documented
  • •Include relevant test coverage for changes

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit unlinked PRs without context
  • •Do not break existing automated test suites
  • •Do not mix unrelated refactors with feature work
Response Velocity
13 hours
Standard maintainer review cycle

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
61.1%
Moderate PR acceptance rate

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
50.0%
Accepts new contributor PRs

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
11 core
Highly collaborative maintainer core
Diagnostic Health HUD
61.1%
Merge Gauge
50.0%
1st-Timer
Community Vibe59/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for Basekick-Labs/arc
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/Basekick-Labs/arc)](https://getmerged.abhishekco.de/Basekick-Labs/arc?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

Found while reviewing #906. Problem internal/storage/local.go, in LocalBackend.ListUnusable (line 1129 on main @ 5b52a65), the long comment above the .part carve-out ends with: // (though see #762: no caller enumerates staged partials under the data // root yet, and ListStaged reports them under the base key). Both halves are stale: reclaimStagedPartials in internal/api/databases.go enumerates staged partials under database/ on every DROP DATABASE, and the edge-sync sweep in internal/edgesync/receive.go does the same under .sync-staging/. Callers exist. Since #906, ListStaged no longer reports every .part file under its base key: a partial whose stripped key DeleteStaged would refuse is omitted there and is reported by this very function instead. That is the relationship the comment should state. #762 is closed. What to change Rewrite the parenthetical to describe the current contract: ListStaged returns only keys DeleteStaged accepts (#772), the two reclaim loops consume it, and a

📅 Opened Oct 4, 2026💬 1 comment
Quality: 100/100Contribute

Found while reviewing #830. Problem internal/audit/middleware.go builds an AuditEvent from c.Path(), c.IP(), c.Get("User-Agent"), c.Get("x-arc-database"), c.Params(...) and c.Query("db"), then hands the event to Logger.LogEvent, which only enqueues the pointer on a channel. The batch writer (writerLoop) serializes the fields up to a second later. Arc runs Fiber with Immutable=false (see the note in internal/api/msgpack.go), so every one of those accessors returns a string that aliases a pooled buffer: c.Query is app.getString(QueryArgs().Peek(key)), c.Path() is app.getString(c.pathBuffer) on the pooled Ctx, and c.Get reads the request header buffer. Once the handler returns, the connection's RequestCtx and the Ctx go back to their pools and the next request overwrites those bytes. An audit row can therefore record a later request's path, database or user agent, or garbage. #830 adds path and reason from c.Query to the same event through audit.DetailLocalsKey, which the review asks to c

📅 Opened Sep 15, 2026💬 3 comments
Quality: 90/100Contribute

Found while running the #633 end-to-end check. Problem validateWhereClause (internal/api/delete.go) applies dangerousKeywordPattern.FindString(where) to the raw WHERE text, before any string-literal masking. A literal that happens to contain a forbidden word is rejected as if it were SQL: POST /api/v1/delete {"database":"icedb","measurement":"m","where":"host = 'drop'","confirm":true} {"success":false,"error":"WHERE clause contains forbidden keyword: DROP"} Any tag or field value such as status = 'delete-pending', action = 'update', kind = 'alter' is undeletable through the API. The value is data, not SQL. Fix shape Mask string literals with the shared sqlutil masker (the same normalization the query path uses before its own gating) and run the keyword and prefix scans on the masked form. Keep the unmatched-quote check on the raw text. Add a regression test with a literal containing each forbidden keyword, plus one proving '; DROP TABLE x -- outside a literal is still refused. Not a

📅 Opened Sep 15, 2026💬 4 comments
Quality: 90/100Contribute

Summary Ingest appends "time" to a measurement's sort keys; compaction does not. With any custom sort key configured, compaction re-sorts the data by the configured columns only, dropping the time ordering that ingest established within each group. The comment directly above the compaction call site claims the opposite: // Build ORDER BY clause from sort keys // This ensures compacted files maintain the same sort order as ingested files orderByClause := buildOrderByClause(j.SortKeys) internal/compaction/job.go:744-746 Root cause config.ParseSortKeys deliberately returns only the additional columns — time is documented as being appended "at the usage site": // Users only configure ADDITIONAL sort columns - the "time" column is always // appended automatically at the usage site (getSortKeys in arrow_writer.go). internal/config/sort_keys.go:9-13 There are two usage sites, and only one does the append. Ingest appends it — internal/ingest/arrow_writer.go:1003-1013: // Always ensure "tim

📅 Opened Sep 14, 2026💬 0 comments
Quality: 90/100Contribute

Split out of #762 (item 3). The first half is sized for a first contribution; the second half is a design call and is explicitly out of scope here. Problem internal/storage/local.go ListStaged (line 1163) walks for *.part, strips PartSuffix, and reports the result as the key the partial belongs to. DeleteStaged (line 1044) resolves that key through stagedPath (line 985), which validates the key body. Two consequences: A partial whose key fails validateKeyBody (a legacy partial of a key that is illegal today) is reported by ListStaged and then refused by DeleteStaged: the enumerator's output is not accepted by its own deleter. reclaimStagedPartials (internal/api/databases.go:790-809) pipes one into the other, so DROP DATABASE logs a warning for that file on every run and never reclaims it. A committed object whose real name ends in .part (legal before #744) is reported as a partial of a different key, and DeleteStaged on that key removes the committed object: ListStaged("") -> "db/cpu

📅 Opened Sep 13, 2026💬 0 comments
Quality: 90/100Contribute
Looking for more Go beginner tasks?Explore Go GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for Basekick-Labs/arc

When evaluating whether to contribute to Basekick-Labs/arc, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of Basekick-Labs/arc acknowledge new external contributions in approximately 13 hours. Out of all submitted pull requests from non-core authors in the last 180-day window, 61.1% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to Basekick-Labs/arc

01

Is Basekick-Labs/arc welcoming to first-time open-source contributors?

Basekick-Labs/arc has a recorded first-timer success rate of 50.0%. Repositories ranked Elite typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~13 hours. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 71.6 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 71.6 places Basekick-Labs/arc in the Elite tier.

04

What is the external contributor pull request merge rate for Basekick-Labs/arc?

The external pull request merge rate is 61.1%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in Basekick-Labs/arc?

Yes, Basekick-Labs/arc currently has 5 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for Basekick-Labs/arc are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.