smaramwbc/statewave - Open Source PR Review Scorecard

Open-source memory runtime for AI agents — reproducible, provenance-tagged context bundles instead of query-time retrieval. Apache-2.0, self-hosted on Postgres + pgvector, Python + TypeScript SDKs.

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

External PR Merge Rate: 80%

Response Time: -

First Timer Success: 75%

Frequently Asked Questions

Is smaramwbc/statewave welcoming to first-time open-source contributors?

smaramwbc/statewave has a recorded first-timer success rate of 75.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 smaramwbc/statewave respond to incoming external pull requests in approximately 0.0 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 69.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 69.6 places smaramwbc/statewave in the S tier.

What is the external contributor pull request merge rate for smaramwbc/statewave?

The external contributor pull request merge rate for smaramwbc/statewave is 80.0%, based on public PR activity from non-core contributors.

Are there Good First Issues available in smaramwbc/statewave?

smaramwbc/statewave currently has 26 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

smaramwbc
smaramwbc/statewaveS•Elite314
GitHub
Back to Explorer
smaramwbc

smaramwbc/statewave

314
InactiveS•Elite(70/100)Python

Open-source memory runtime for AI agents — reproducible, provenance-tagged context bundles instead of query-time retrieval. Apache-2.0, self-hosted on Postgres + pgvector, Python + TypeScript SDKs.

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Empathetic Technical Mentor

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

Collaborative maintainer environment in smaramwbc/statewave. Reviews community pull requests with focus on project quality.

What Contributors Actually Say

Discussions in smaramwbc/statewave focus heavily on practical implementation feedback, code formatting standards, and issue reproduction details.

Hidden Friction Signals

Unlinked PRs without issue context and changes that fail automated test suites face the highest review friction.

Unwritten Rules

  • •1) Keep PR scope strictly aligned with the linked issue.
  • •2) Ensure local linters pass before opening a review.
  • •3) Maintain full test coverage for modified logic.

Top PR Submission Do's

  • •Add or update tests for changed behavior before requesting review
  • •Update docs or README when behavior changes
  • •Include context and link to the related issue

Top PR Friction Pitfalls (Don'ts)

  • •Do not leave requested test coverage unresolved
  • •Do not ship user-facing changes without matching docs
  • •Do not mix unrelated refactors in a single PR
Response Velocity
-
No reviewer activity recorded

Average Response Latency

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

Merge Efficiency
80.0%
High acceptance rate for external PRs

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
75.0%
Strong first-timer PR acceptance rate

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
8 core
Highly collaborative maintainer core
Diagnostic Health HUD
80.0%
Merge Gauge
75.0%
1st-Timer
Community Vibe55/100

Embed C-Rank Badge

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

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

Active Good First Issues (5)

View on GitHub

Affected Component server/api/episodes.py, server/db/repositories.py (insert_episode) Bug Description Idempotent ingest dedupes the row, but the API still reports the replay as a new creation: insert_episode() (repositories.py:60-101), on an idempotency-key conflict, returns the existing episode instead of inserting. The caller can't tell that happened, so create_episode goes on to: return 201 Created, and fire the episode.created webhook again (episodes.py:61) for an episode that was created earlier. The batch route has the same problem. episodes_created=len(rows) (episodes.py:122) counts replays as created, and episodes.batch_created reports the inflated count. The idempotency key exists precisely so connectors can retry and re-run seeds safely (the docstring says re-ingest becomes "a no-op"). But every retry still sends a duplicate episode.created to webhook consumers, so cache-invalidation or audit consumers see creations that didn't happen. #282 fixed the same kind of spurious e

📅 Opened Oct 5, 2026💬 0 comments
Quality: 75/100Contribute

Affected Component server/api/episodes.py, server/schemas/requests.py Bug Description idempotency_key is validated as a request field (str | None, max_length=512, requests.py:48). For older clients, the server also falls back to reading it from metadata, but that fallback skips all validation: # server/api/episodes.py:51 (and :102 for the batch route) idempotency_key=body.idempotency_key or body.metadata.get("idempotency_key"), metadata is a free-form dict, so metadata.idempotency_key can be any JSON value, and it goes straight into a String(512) column (server/db/tables.py:40): "metadata": {"idempotency_key": 123} → asyncpg rejects an int for a text parameter → DataError "metadata": {"idempotency_key": "<600 chars>"} → StringDataRightTruncationError "metadata": {"idempotency_key": {"a": 1}} → same DataError isn't handled by register_exception_handlers (only OperationalError maps to 503), so all three come back as 500 internal_error for what is a client input problem. In the

📅 Opened Oct 5, 2026💬 0 comments
Quality: 75/100Contribute

Affected Component server/core/middleware.py — RequestIDMiddleware Bug Description The server trusts any X-Request-ID a client sends, with no length or character check: # server/core/middleware.py:19-33 request_id = request.headers.get(_HEADER) or uuid.uuid4().hex[:16] request.state.request_id = request_id structlog.contextvars.bind_contextvars(request_id=request_id) ... response.headers[_HEADER] = request_id That value then: is bound into every log line for the request (request_started, request_finished, and anything logged downstream), is echoed in the response header, and is copied into error bodies (server/core/errors.py:39 _request_id). So a client can send a multi-kilobyte request id and have it written into every log line for that request, which inflates log storage and pollutes whatever indexes request ids in the log pipeline. A request id is meant to be a short correlation token. Expected Behavior A client-supplied id is accepted only if it looks like a correlation id, e.g

📅 Opened Oct 5, 2026💬 0 comments
Quality: 75/100Contribute

Affected Component server/core/ratelimit.py — RateLimitMiddleware._check_memory Bug Description The in-memory rate limiter adds a key for every client IP it ever sees and never removes one: # server/core/ratelimit.py:30 self._hits: dict[str, list[float]] = defaultdict(list) # :66-79 timestamps = self._hits[key] self._hits[key] = [t for t in timestamps if t > window_start] # prunes the list... ... self._hits[key].append(now) # ...but the key stays forever An IP that made one request a week ago still has an entry, with an empty list after its next prune, and only if it ever comes back. Nothing iterates over idle keys. On a long-running public deployment the dict grows with the number of distinct client IPs seen since startup, with no upper bound. memory is the default strategy (server/core/config.py:142), so this is the code path every deployment with STATEWAVE_RATE_LIMIT_RPM > 0 uses unless it opts into distributed. The distributed limiter alrea

📅 Opened Oct 5, 2026💬 0 comments
Quality: 75/100Contribute

Affected Component README.md, server/core/ratelimit.py (docstring) Description The default for STATEWAVE_RATE_LIMIT_STRATEGY is documented in four places, and two of them are wrong: Where Says server/core/config.py:142 (the real default) rate_limit_strategy: str = "memory" server/core/settings_catalogue.py:396+ "memory (default, single-process)" ✅ .env.example:90 # STATEWAVE_RATE_LIMIT_STRATEGY=memory ✅ README.md:271 default distributed ❌ server/core/ratelimit.py:5 (module docstring) (default: "distributed") ❌ This matters for anyone running more than one replica. If they trust the README, they turn on STATEWAVE_RATE_LIMIT_RPM and assume the limit is shared through Postgres. In fact each process keeps its own in-memory window, so the effective limit is RPM × number of workers. Expected Behavior The README and the docstring say the default is memory, and say that multi-replica deployments need distributed. Suggested fix README.md:271: change the default colum

📅 Opened Oct 5, 2026💬 0 comments
Quality: 75/100Contribute
Looking for more Python beginner tasks?Explore Python 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 smaramwbc/statewave

When evaluating whether to contribute to smaramwbc/statewave, 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 smaramwbc/statewave acknowledge new external contributions in approximately -. Out of all submitted pull requests from non-core authors in the last 180-day window, 80.0% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to smaramwbc/statewave

01

Is smaramwbc/statewave welcoming to first-time open-source contributors?

smaramwbc/statewave has a recorded first-timer success rate of 75.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 ~-. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 69.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 69.6 places smaramwbc/statewave in the Elite tier.

04

What is the external contributor pull request merge rate for smaramwbc/statewave?

The external pull request merge rate is 80.0%. 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 smaramwbc/statewave?

Yes, smaramwbc/statewave currently has 26 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 smaramwbc/statewave 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.