docs(backlog): mark DEBT-028 resolved, file FEAT-025 (quota enforcement unwired)#115
Conversation
…nt unwired) DEBT-028 shipped in #114 (planned -> resolved). Its scope note records what it did NOT do: it corrected the chunk *count* to go through count_chunks(), but nothing in the ingest path calls check_namespace_quota, so the quota is enforced nowhere. FEAT-025 files that gap. REQ-048 (must) names quota enforcement in its Phase 2 scope, the table columns and the (now-correct) check function exist, but an operator can set quota_chunks=1000 and ingest sails past it — a configurable, unenforced control. Same family as DEBT-032: an unbuilt clause of a must requirement, not debt. Tagged medium, not high, because it matters for multi-tenant and the current deployment is single- tenant; not low, because a configurable control that does nothing is a trap. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (1)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Code Review
This pull request updates the backlog to mark the chunk quota counting issue (DEBT-028) as resolved and adds a new planned feature (FEAT-025) to wire namespace quota enforcement into the ingest path. Feedback was provided regarding the proposed approach for FEAT-025, which suggests a direct import from vektra-admin to vektra-ingest, violating the repository's architectural boundary rules. It is recommended to wire these components at a higher integration layer or use a Protocol interface instead.
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.
…review) Review follow-up on #115 (gemini): the proposed approach called check_namespace_quota (in vektra-admin) from vektra-ingest/pipeline.py, which the import-linter contract 'vektra_ingest must not import from other vektra components' forbids (verified: pyproject.toml forbids vektra_admin for vektra_ingest). It would have failed the lint gate. Rewritten to two boundary-respecting options — move the logic into vektra_shared (which vektra_ingest may import), or inject an enforcement hook through the registry that run_ingest already receives — and added a green-import-linter acceptance criterion. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Documentation only. No code changes.
DEBT-028 → resolved
Shipped in #114 (
planned→resolved, PR ref added, acceptance criteria checked). A scope note records what it did not do: it corrected the chunk count to go throughcount_chunks(), but nothing callscheck_namespace_quotain the ingest path — so the quota is enforced nowhere. That gap is now its own entry.FEAT-025 (new, medium)
REQ-048 (priority must) names quota enforcement in its Phase 2 scope. The infrastructure exists — the
namespacestable carriesquota_documents/quota_chunks, andcheck_namespace_quotanow counts correctly through the vector store — but no path calls it. An operator can setquota_chunks=1000and ingest sails straight past it: a configurable, unenforced control.Same family as DEBT-032 (REQ-064's "cleanup afterwards" clause): an unbuilt clause of a must requirement, not debt. Filed as a FEAT because it is a capability to build, not a regression.
On priority — stated honestly: spec-priority (must) and operational urgency diverge. Quota enforcement matters for multi-tenant; the current single-tenant e-learning deployment does not need it today. Tagged medium, not high (raise it when multi-tenant lands), and not low (a configurable control that silently does nothing is a trap — an operator who sets a quota expects it to hold).
🤖 Generated with Claude Code