Skip to content

docs(module-b): add GSoC 2026 mid-evaluation blog - #1004

Open
manshusainishab wants to merge 2 commits into
OWASP:mainfrom
manshusainishab:docs/module-b-mideval-blog
Open

docs(module-b): add GSoC 2026 mid-evaluation blog#1004
manshusainishab wants to merge 2 commits into
OWASP:mainfrom
manshusainishab:docs/module-b-mideval-blog

Conversation

@manshusainishab

Copy link
Copy Markdown
Contributor

What

Adds my GSoC 2026 mid-evaluation blog for Module B (Noise/Relevance Filter) under docs/Mid_eval_blog_gsoc2026/.

To commit it, .gitignore gets one targeted exception!docs/Mid_eval_blog_gsoc2026/GSoC_2026_Mid_Evaluation_Blog_Draft.md. The blanket *.md ignore rule is otherwise unchanged, so no other docs start getting tracked.

Content

The post walks through the first half of the project:

  • Why Module B is the pipeline's cost gate, and why its two failure modes aren't equally bad
  • The recall-first decision (never drop security knowledge) and how it reshaped labeling + prompting
  • The three-stage gate: regex path filter → sanitize → cheap dedicated LLM classifier
  • The eval harness and how label corrections — not just prompt tuning — drove the gains

Mid-eval numbers in the post are cross-checked against the eval-run logs: 93% agreement, 100% KNOWLEDGE recall, 0 knowledge leakage on the 100-example benchmark, including the confusion matrix and the score progression (82% → 87% → 91%/3-lost → 93%).

Scope

Docs only — no code or schema changes.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Summary by CodeRabbit

  • Documentation
    • Added a GSoC 2026 mid-evaluation blog post covering the Noise/Relevance Filter project, its architecture, evaluation results, lessons learned, and future integration plans.
    • Updated repository tracking configuration to include the new blog draft.

Walkthrough

Adds a GSoC 2026 mid-evaluation blog post about the Module B noise and relevance filter, including its design, evaluation process, benchmark results, lessons learned, and planned production integration. Updates .gitignore to preserve the Markdown draft.

Changes

GSoC 2026 Module B blog

Layer / File(s) Summary
Pipeline context and evaluation setup
.gitignore, docs/Mid_eval_blog_gsoc2026/module_B_mideval_blog.md
Documents the OpenCRE pipeline, Module B responsibilities, recall-first policy, temporary Module A replacement, labeled dataset, data format, and interface.
Filter stages and evaluation refinement
docs/Mid_eval_blog_gsoc2026/module_B_mideval_blog.md
Describes the three-stage filter, evaluation harness, label corrections, prompt refinement, and title-only chunk handling.
Results, lessons, and production integration
docs/Mid_eval_blog_gsoc2026/module_B_mideval_blog.md
Adds benchmark results, scorecard data, lessons learned, and the planned nightly pipeline integration.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • OWASP/OpenCRE#976: Documents the same Module B filter work, including evaluation, prompt tuning, dataset updates, and benchmark results.

Suggested reviewers: northdpole, paoga87, robvanderveer

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely identifies the addition of the GSoC 2026 Module B mid-evaluation blog.
Description check ✅ Passed The description directly explains the documentation addition, its content, targeted .gitignore change, and docs-only scope.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (1)
docs/Mid_eval_blog_gsoc2026/GSoC_2026_Mid_Evaluation_Blog_Draft.md (1)

95-101: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Make the runtime label names explicit.

application/utils/noise_filter/schemas.py defines ClassifyResult.label as KNOWLEDGE, NOISE, or UNCERTAIN. This document uses KEEP and DROP in the classifier and scorecard sections. Define these as benchmark aliases and use the runtime names in contract-facing descriptions. Otherwise, readers can mistake KEEP or DROP for valid production payload values.

Also applies to: 146-174

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/Mid_eval_blog_gsoc2026/GSoC_2026_Mid_Evaluation_Blog_Draft.md` around
lines 95 - 101, Update the document’s classifier and scorecard sections to state
that KEEP and DROP are benchmark aliases for the runtime labels KNOWLEDGE and
NOISE. Use KNOWLEDGE, NOISE, and UNCERTAIN in contract-facing descriptions and
examples, while retaining the aliases only where explicitly discussing benchmark
terminology.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/Mid_eval_blog_gsoc2026/GSoC_2026_Mid_Evaluation_Blog_Draft.md`:
- Line 137: Update the “Where things stood at the mid evaluation” heading to use
the hyphenated compound form “Where things stood at the mid-evaluation,”
matching the document title.
- Line 11: Update the sentence in the evaluation blog draft by adding an em dash
or sentence-ending punctuation after “all the time” before “someone,” while
preserving the surrounding examples and meaning.
- Around line 155-163: Update the confusion-matrix discussion to explicitly
state that zero UNCERTAIN examples means uncertainty classification and
human-review handoff were not evaluated. If the benchmark is intended to
validate all three labels, add representative UNCERTAIN cases and update the
matrix and related results accordingly.

---

Nitpick comments:
In `@docs/Mid_eval_blog_gsoc2026/GSoC_2026_Mid_Evaluation_Blog_Draft.md`:
- Around line 95-101: Update the document’s classifier and scorecard sections to
state that KEEP and DROP are benchmark aliases for the runtime labels KNOWLEDGE
and NOISE. Use KNOWLEDGE, NOISE, and UNCERTAIN in contract-facing descriptions
and examples, while retaining the aliases only where explicitly discussing
benchmark terminology.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro Plus

Run ID: 1d4aa745-ab68-43c5-b6d6-4a9a352b084f

📥 Commits

Reviewing files that changed from the base of the PR and between 15f36f6 and 202385a.

📒 Files selected for processing (2)
  • .gitignore
  • docs/Mid_eval_blog_gsoc2026/GSoC_2026_Mid_Evaluation_Blog_Draft.md


If you haven't heard of OpenCRE before, it's OWASP's **Common Requirement Enumeration** — think of it as a huge map that connects security standards, cheat sheets, testing guides, and tools together. Instead of jumping between different security resources, OpenCRE tries to bring all those connections into one place.

The problem the maintainers wanted to solve this year sounds simple, but it's actually pretty tricky. Security knowledge across OWASP projects keeps changing all the time someone adds a better SSRF example, someone fixes a testing guide for subdomain takeovers, someone updates a CSRF recommendation. All of that is valuable, but until now there wasn't an automated way to detect those changes and bring them into OpenCRE.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add punctuation before “someone”.

The sentence currently reads “keeps changing all the time someone adds”. Add an em dash or a sentence break before “someone”.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/Mid_eval_blog_gsoc2026/GSoC_2026_Mid_Evaluation_Blog_Draft.md` at line
11, Update the sentence in the evaluation blog draft by adding an em dash or
sentence-ending punctuation after “all the time” before “someone,” while
preserving the surrounding examples and meaning.


---

## Where things stood at the mid evaluation

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Hyphenate “mid-evaluation”.

Use the same compound form as the document title: Where things stood at the mid-evaluation.

🧰 Tools
🪛 LanguageTool

[grammar] ~137-~137: Use a hyphen to join words.
Context: .... --- ## Where things stood at the mid evaluation After several rounds of test...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/Mid_eval_blog_gsoc2026/GSoC_2026_Mid_Evaluation_Blog_Draft.md` at line
137, Update the “Where things stood at the mid evaluation” heading to use the
hyphenated compound form “Where things stood at the mid-evaluation,” matching
the document title.

Source: Linters/SAST tools

Comment thread docs/Mid_eval_blog_gsoc2026/module_B_mideval_blog.md
Un-ignore the mid-eval blog (targeted .gitignore exception; *.md stays ignored otherwise) and commit it as module_B_mideval_blog.md. Covers the Noise/Relevance Filter build-out, the recall-first decision, and mid-eval results (93% agreement, 100% KNOWLEDGE recall, 0 leakage) verified against the eval-run logs.
@manshusainishab
manshusainishab force-pushed the docs/module-b-mideval-blog branch from 202385a to 4a43bec Compare August 3, 2026 21:41

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
docs/Mid_eval_blog_gsoc2026/module_B_mideval_blog.md (1)

71-73: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Mark KEEP and DROP as evaluation aliases.

The production ClassifyResult.label contract in application/utils/noise_filter/schemas.py at Lines [127]-[165] accepts KNOWLEDGE, NOISE, and UNCERTAIN. This document presents KEEP and DROP as emitted labels. State the mapping clearly at the interface description, or readers may implement payloads that fail schema validation.

Also applies to: 97-97

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/Mid_eval_blog_gsoc2026/module_B_mideval_blog.md` around lines 71 - 73,
Update the Module B interface description to identify KEEP and DROP as
evaluation aliases for the production ClassifyResult.label values KNOWLEDGE and
NOISE, respectively; retain UNCERTAIN unchanged and make clear that emitted
production payloads must use the schema-supported labels.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@docs/Mid_eval_blog_gsoc2026/module_B_mideval_blog.md`:
- Around line 71-73: Update the Module B interface description to identify KEEP
and DROP as evaluation aliases for the production ClassifyResult.label values
KNOWLEDGE and NOISE, respectively; retain UNCERTAIN unchanged and make clear
that emitted production payloads must use the schema-supported labels.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro Plus

Run ID: 239fe626-b603-4937-98a4-08d334f18cec

📥 Commits

Reviewing files that changed from the base of the PR and between 202385a and 4a43bec.

📒 Files selected for processing (2)
  • .gitignore
  • docs/Mid_eval_blog_gsoc2026/module_B_mideval_blog.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • .gitignore

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