Skip to content

DRAFT: PoC OIE orchestrator (Modules A→B→C) - #996

Draft
northdpole wants to merge 1 commit into
mainfrom
feat/oie-poc-orchestrator
Draft

DRAFT: PoC OIE orchestrator (Modules A→B→C)#996
northdpole wants to merge 1 commit into
mainfrom
feat/oie-poc-orchestrator

Conversation

@northdpole

@northdpole northdpole commented Jul 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds a PoC/demo orchestrator that sequences GSoC Module A (Harvester) → Module B (Noise Filter) → Module C (Librarian) for one pipeline_run_id.
  • Does not modify Modules A/B/C. Missing entry points become TODO: / todo stage results in the orchestrator only.
  • CLI: python scripts/run_oie_demo_pipeline.py (Makefile: make oie-demo-pipeline).

GSoC A/B/C readiness (PR survey, 2026-07-24)

Module A — Harvester (stacked #920#983#985#986#987)

Independently runnable? Partially — library components + unit tests only
PoC/Demo ready? No end-to-end. Tip #987 has config/git/change-detect/file-filter/diff retrieve·parse·normalize, but no chunking/ChangeRecord emit, no harvest_input writer, no CLI. #987 CI Test failing.
Orchestrator entry? No — no run_harvester / --run_harvester

Module B — Noise Filter (merged W1–4 #913/#928/#947/#976; open #989)

Independently runnable? Yes — stages on main via scripts/evaluate_noise_filter.py (needs LLM for Stage 2)
PoC/Demo ready? Stages yes; full DB pipeline needs #989 (harvest_input/knowledge_queue + run_noise_filter)
Orchestrator entry? Yes on #989: noise_filter.pipeline.run_noise_filter(session, pipeline_run_id, …) and cre.py --run_noise_filter --run_id …

Module C — Librarian (merged W1–4; open #974#990#991)

Independently runnable? Yes dry-run on main: python cre.py --librarian_dry_run [--librarian_source JSONL] (C.0→C.2)
PoC/Demo ready? Yes for fixture JSONL dry-run (needs embeddings DB / API). No graph writes (W8). Full C.0→C.4 envelopes on #991 (LibrarianPipeline) still dry-run.
Orchestrator entry? Yes (partial)cre_main.run_librarian on main; LibrarianPipeline.run(at=…) on #991 (not yet wired into cre_main)

Orchestrator behavior on this PR

  1. A — default skipped; --run-a records todo (no entry to call).
  2. B — calls run_noise_filter if importable (Add harvest_input and knowledge_queue models with pipeline support #989); else todo.
  3. C — calls run_librarian (works on main today with fixture JSONL). Notes when LibrarianPipeline is importable (week_6b: Module C (The Librarian) — C.4 envelope emitter + C.0→C.4 pipeline glue #991+) but still uses run_librarian until a component factory exists.

Test plan

Depends on (not included)

Scaffold a demo runner that calls Module B/C entry points when present and
records TODO stages for Module A's missing harvester entry and unmerged hooks,
without modifying the GSoC module packages.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro Plus

Run ID: 60ad7e9d-6717-4807-b122-dc090aed3edb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/oie-poc-orchestrator

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.

northdpole pushed a commit that referenced this pull request Aug 18, 2026
…ator

Until now the only place that knew how to construct a real retriever, reranker and
scaler was `cre_main.run_librarian`, inline. That is why the OIE orchestrator (#996)
could not drive `LibrarianPipeline`: it had the pipeline class but no way to produce
the components it takes. This module is that seam.

Everything here is construction only — no rows are read, no run is executed.
Callers that want a run use `queue_runner.run_librarian_queue`.

The DB and embedding imports are deliberately function-local. The rest of the
librarian package is hermetically testable precisely because it never imports the
database at module scope, and this is the one boundary where that stops being true;
keeping the imports inside the call preserves it for everyone else.

`load_config` now warns when `CRE_LIBRARIAN_TEMPERATURE` is still the 1.0 default,
because 1.0 is the identity transform — an uncalibrated softmax. Thresholding τ
against an uncalibrated confidence is not a smaller version of the right thing, it
is a different thing, so the run says so out loud rather than looking fine.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant