Skip to content

fix: pre-release hardening from the v0.7.0 review (#121) - #123

Merged
fvadicamo merged 6 commits into
developfrom
fix/pre-release-hardening
Jul 18, 2026
Merged

fix: pre-release hardening from the v0.7.0 review (#121)#123
fvadicamo merged 6 commits into
developfrom
fix/pre-release-hardening

Conversation

@fvadicamo

Copy link
Copy Markdown
Contributor

What

Addresses the four Major production findings (plus the release-relevant doc) from CodeRabbit's review of the v0.7.0 release PR #121. All on already-merged code; verified against source before applying.

  • docs(deploy): published-image examples referenced VEKTRA_VERSION=0.6.1 (never published; INFRA-007 ships its first image at 0.7.0) → 0.7.0
  • fix(scripts): reindex.sh silently overwrote NAMESPACE with a 3rd positional arg (--cleanup 1 tenant-a tenant-b deleted from tenant-b) → now rejected
  • fix(index): reindex reached status=completed even on a partial store write → raises when len(stored) != len(chunk_embeddings) (job marked failed)
  • fix(ingest): cleanup_soft_deleted_task held a Postgres connection open across per-doc vector-store network deletes → split into two short-lived sessions
  • test(index): chunk-lifecycle precondition asserted total > 0 (fixture could satisfy it without the target doc) → asserts doomed_id is in the results

Not included (deliberately)

  • Rejected: CodeRabbit's request to restore removed VEKTRA_RERANK_TOP_K as a deprecated property (test_config.py) — contradicts DEBT-013's intent and the project's no-backward-compatibility policy.
  • Deferred to backlog: 9 minor test-strengthening / edge-case findings (a DEBT entry will track them). Not blockers for the release.

Testing

  • make lint green (ruff + mypy 77 files + import-linter 8/8)
  • make test green (800 passed, 3 skipped); the integration test change runs in CI (deselected locally) and mirrors the existing post-delete result shape

Why now

These feed the v0.7.0 develop -> main release PR #121 before tagging.

🤖 Generated with Claude Code

fvadicamo and others added 5 commits July 18, 2026 15:04
The getting-started walkthrough and deploy/docker-compose.image.yml.example referenced VEKTRA_VERSION=0.6.1, a tag that was never published (INFRA-007 ships its first image at 0.7.0). Point operators at the tag this release actually publishes.

Addresses CodeRabbit #121 (comment 3608554399).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Francesco Vadicamo <f.vadicamo@gmail.com>
Every positional argument after the second silently replaced NAMESPACE, so 'reindex.sh --cleanup 1 tenant-a tenant-b' would delete from tenant-b. Reject a third positional argument with a clear error instead.

Addresses CodeRabbit #121 (comment 3608554401).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Francesco Vadicamo <f.vadicamo@gmail.com>
A provider returning fewer ids than requested still let the job reach status=completed, so an operator could switch the active version to an incomplete index. Raise when len(stored) != len(chunk_embeddings); run_reindex's handler marks the job failed with the message.

Addresses CodeRabbit #121 (comment 3608554413).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Francesco Vadicamo <f.vadicamo@gmail.com>
cleanup_soft_deleted_task held one Postgres connection open across per-document vector-store delete calls (external network I/O), risking pool exhaustion on a large backlog. Split into two short-lived sessions with the external deletions in between; behaviour (skip-empty, per-doc error skip, final log) is unchanged.

Addresses CodeRabbit #121 (comment 3608554417).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Francesco Vadicamo <f.vadicamo@gmail.com>
The precondition asserted found[total] > 0, which the shared fixture text could satisfy without the target document being indexed. Assert doomed_id is in the returned results, mirroring the post-delete check.

Addresses CodeRabbit #121 (comment 3608554407).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Francesco Vadicamo <f.vadicamo@gmail.com>
@fvadicamo fvadicamo added documentation Improvements or additions to documentation component:ingest vektra-ingest component component:index vektra-index component labels Jul 18, 2026
@github-actions github-actions Bot added the infra Infrastructure, Docker, deployment label Jul 18, 2026
@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@fvadicamo, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 21 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a9fb5f71-e88d-40cf-969b-051243f57a04

📥 Commits

Reviewing files that changed from the base of the PR and between 385311c and 6eccfd5.

⛔ Files ignored due to path filters (1)
  • .s2s/BACKLOG.md is excluded by !.s2s/**
📒 Files selected for processing (6)
  • deploy/docker-compose.image.yml.example
  • docs/getting-started/index.md
  • scripts/reindex.sh
  • tests/integration/test_chunk_lifecycle.py
  • vektra-index/src/vektra_index/reindex.py
  • vektra-ingest/src/vektra_ingest/jobs.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/pre-release-hardening

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Records the nine minor CodeRabbit findings from the #121 release review that were deferred (test-strengthening plus two minor edges), and the one rejected on policy grounds (restoring removed VEKTRA_RERANK_TOP_K). The four Major items were fixed in this same PR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Francesco Vadicamo <f.vadicamo@gmail.com>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the Vektra version to 0.7.0, refactors positional argument handling in reindex.sh, improves an integration test assertion, and adds a chunk count verification check during reindexing. Additionally, it optimizes the soft-delete cleanup task in vektra-ingest by splitting database operations into two short-lived sessions to avoid holding a connection open during external network I/O. The reviewer recommended using the public get_session_factory() function instead of directly accessing the private _session_factory variable in both database sessions to maintain proper encapsulation.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread vektra-ingest/src/vektra_ingest/jobs.py
Comment thread vektra-ingest/src/vektra_ingest/jobs.py
@fvadicamo
fvadicamo merged commit 7314d2f into develop Jul 18, 2026
24 checks passed
@fvadicamo
fvadicamo deleted the fix/pre-release-hardening branch July 18, 2026 17:41
fvadicamo added a commit that referenced this pull request Jul 18, 2026
Release v0.7.0. New endpoints (documents/{id}/chunks, index-versions/{version} cleanup), REQ-010 error envelope at the document root, top_k bounds, Qdrant chunk-path correctness via the VectorStoreProvider Protocol, GHCR publish on tag (INFRA-007), and the storage-correctness / CI-integrity hardening.

- 81 commits since v0.6.0; CHANGELOG [0.7.0] - 2026-07-18; 8 components + runtime __version__ at 0.7.0
- Docs audited and aligned (config var count 59->66 + 2 vars documented; image examples 0.6.1->0.7.0)
- Pre-release review: 4 Major CodeRabbit findings fixed (#123); 9 minor deferred to DEBT-036; RERANK_TOP_K backward-compat request rejected on policy
- Excluded: PR #99 (TECH-005 eval, ground truth pending)

Tests: lint + unit green; integration (pgvector + qdrant) + NFR gates green
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component:index vektra-index component component:ingest vektra-ingest component documentation Improvements or additions to documentation infra Infrastructure, Docker, deployment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant