Add optional Docling extraction provider - #737
Conversation
|
Workflow state fingerprint for Keepalive Loop Reporter. Do not edit. |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 57 minutes Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThis PR adds an optional Docling-backed extraction provider, a field-accuracy evaluation harness, and tests for both paths. It also introduces the ChangesDocling provider and evaluation harness
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant Caller
participant Docling as DoclingPrimaryExtractionProvider
participant Converter as DocumentConverter
participant Regex as PrimaryRegexExtractionProvider
Caller->>Docling: extract(source_doc_id, content)
Docling->>Converter: convert(temp file from content)
Converter-->>Docling: converted document
Docling->>Docling: export document to text
Docling->>Regex: extract(exported text as bytes)
Regex-->>Docling: extracted fields
Docling-->>Caller: ExtractedDocumentResult(method="docling-primary")
Possibly related issues
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
🤖 Keepalive Loop StatusPR #737 | Agent: Codex | Iteration 0/12 Current State
Last Codex Run
To retry:
🔍 Failure Classification| Error type | infrastructure | |
Keepalive Work Log (click to expand)
|
|
Workflow state fingerprint for Agents Gate Followups. Do not edit. |
|
Runner dispatch state for codex on PR #737. Do not edit. |
|
Autofix attempts exhausted for this head. Latest Gate summary: Please investigate manually. |
|
| Field | Value |
|---|---|
| Exit Code | 1 |
| Error Category | unknown |
| Error Type | codex |
| Run | View logs |
🔧 Suggested Recovery
Capture logs and context; retry once and escalate if the issue persists.
📝 What to do
- Check the workflow logs for detailed error output
- If this is a configuration issue, update the relevant settings
- If the error persists, consider adding the
needs-humanlabel for manual review - Re-run the workflow once the issue is resolved
Output summary
You've hit your usage limit. Visit https://chatgpt.com/codex/settings/usage to purchase more credits or try again at Jul 7th, 2026 2:01 AM.
|
Autofix attempts exhausted for this head. Latest Gate summary: Please investigate manually. |
There was a problem hiding this comment.
Pull request overview
Adds an optional Docling-backed extraction provider that conforms to the existing provider Protocols, and introduces a small field-level accuracy evaluation harness to measure extraction correctness on real-document sample bytes—while keeping Docling out of core installs via an optional extra.
Changes:
- Added
DoclingPrimaryExtractionProviderimplementingExtractionProvider/MultiModalExtractionProvider, performing Docling conversion then mapping into existing canonical field extraction. - Introduced a field-level accuracy evaluation harness (
evaluate_field_accuracy) and a test exercising it on sample bytes. - Added an
extraction-doclingoptional extra for installing Docling.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/extraction/test_field_accuracy_evaluation.py | Adds a unit test validating the new field-accuracy evaluation harness on sample bytes. |
| tests/extraction/providers/test_docling_primary.py | Adds Protocol conformance and behavior tests for the optional Docling provider. |
| src/inv_man_intake/extraction/providers/docling_primary.py | Introduces the optional Docling-backed provider and conversion/normalization logic. |
| src/inv_man_intake/extraction/evaluation/field_accuracy.py | Implements the field-level accuracy evaluation harness and report model. |
| src/inv_man_intake/extraction/evaluation/init.py | Creates the evaluation package namespace. |
| pyproject.toml | Adds extraction-docling optional extra dependency definition. |
|
Runner dispatch state for autofix on PR #737. Do not edit. |
|
Autofix attempts exhausted for this head. Latest Gate summary: Please investigate manually. |
|
Closer review-fix update for #737:
Validation: All passed locally. Pushed |
Provider Comparison ReportProvider Summary
📋 Full Provider Details (click to expand)openai
anthropic
Agreement
DisagreementNo major disagreements detected. Unique Insights
🔍 LangSmith Traces |
|
Workflow state fingerprint for Agents Verifier. Do not edit. |
|
📋 Follow-up issue created: #765 Verification concerns have been analyzed and structured into a follow-up issue. Next steps:
|
Closes #713
Automated Status Summary
Scope
The extraction layer is built around a provider Protocol (
src/inv_man_intake/extraction/providers/base.py:204ExtractionProvider;:218MultiModalExtractionProvider), but current providers are fixture/parser-backed — the README's own throughput line admits the demo runs on synthetic fixtures. The moat commercial peers (Canoe, Accelex) actually sell is proven real-document extraction accuracy. The Protocol seam means a real extractor can be added without touching the scoring/queue/provenance pipeline. Latent opportunity (not a break).Context for Agent
Related Issues/PRs
Tasks
src/inv_man_intake/extraction/providers/docling_primary.pyimplementingExtractionProvider(and/orMultiModalExtractionProvider) —pyproject.tomloptional extraextraction-docling.ExtractedFieldcontract.tests/extraction/providers/test_docling_primary.py::test_docling_provider_conforms_to_protocol(Protocol conformance viaisinstanceagainst the@runtime_checkableProtocol; skip cleanly if the optional dep is absent).Acceptance criteria
tests/extraction/providers/test_docling_primary.py::test_docling_provider_conforms_to_protocolpasses (or skips with a clear reason when theextraction-doclingextra is not installed), asserting the provider satisfiesExtractionProvider.isinstanceagainst the runtime-checkable Protocol returns False); revert → passes.