Skip to content

SLR : Adding Routing Dispatch to StudyFetcher#16098

Merged
calixtus merged 19 commits into
JabRef:mainfrom
faneeshh:slr-routing-dispatch
Jul 20, 2026
Merged

SLR : Adding Routing Dispatch to StudyFetcher#16098
calixtus merged 19 commits into
JabRef:mainfrom
faneeshh:slr-routing-dispatch

Conversation

@faneeshh

Copy link
Copy Markdown
Collaborator

Related issues and pull requests

SLR related routing work.

PR Description

StudyFetcher previously sent every query through the standard search path regardless of catalog. This PR adds routing dispatch in performSearchOnQueryForFetcher: if a StudyQuery has a catalogSpecific override for the active fetcher, the raw query string is sent directly via performRawSearchQuery / performRawSearchQueryPaged, bypassing the query transformer.

If no override is present the standard path runs unchanged. This makes the catalogSpecific field in study.yml actually functional end-to-end.

Analogies

Like honey, this PR is specific to its source — each catalog gets exactly the query it was meant to receive, not a generic one-size-fits-all version. Like chocolate, it works in two forms (paged and plain) while tasting the same to the researcher writing their study definition. Like the moon, it only shows one face at a time — either the raw path or the standard path fires, never both.

Steps to test

  1. Create a study definition with a catalogSpecific override on a query for IEEEXplore
  2. Run a crawl and verify the IEEE results reflect the native query, not the transformed one
  3. Verify catalogs without a catalogSpecific entry still return results normally via the standard path
  4. Run StudyFetcherTest and all three tests should pass

AI usage

Claude Sonnet 4.6

Checklist

  • I own the copyright of the code submitted and I license it under the MIT license
  • If AI tools were used, I disclosed them in the "AI usage" section and reviewed, understood, and take full ownership of all AI-generated code
  • I manually tested my changes in running JabRef (always required)
  • I added JUnit tests for changes (if applicable)
  • [/] I added screenshots in the PR description (if change is visible to the user)
  • [/] I added a screenshot in the PR description showing a library with a single entry with me as author and as title the issue number
  • [/] I described the change in CHANGELOG.md in a way that can be understood by the average user (if change is visible to the user)
  • I checked the user documentation for up to dateness and submitted a pull request to our user documentation repository

@qodo-free-for-open-source-projects

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Add catalog-specific routing dispatch to StudyFetcher (raw query bypass)
✨ Enhancement 🧪 Tests 🕐 10-20 Minutes

Grey Divider

Description

• Route StudyQuery execution per fetcher using catalogSpecific native query overrides.
• Bypass query transformation when an override exists; preserve standard search path otherwise.
• Add unit tests covering paged, non-paged, and fallback behavior.
Diagram

graph TD
  A["StudyFetcher"] --> B["performSearchOnQueryForFetcher"] --> C{"catalogSpecific override?"}
  C -->|yes| D["Raw search"] --> E["SearchBasedFetcher / Paged"] --> F["FetchResult + QueryResult"]
  C -->|no| G["Standard search"] --> E
  subgraph Legend
    direction LR
    _proc["Process"] ~~~ _dec{"Decision"}
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Apply paging/limits to raw override path (symmetry with standard path)
  • ➕ Consistent result limiting behavior across override and non-override queries
  • ➕ Supports catalogs requiring multiple pages for complete results
  • ➖ Requires defining how to page native queries (some catalogs may not support it meaningfully)
  • ➖ Slightly more code and more test cases
2. Move routing into fetchers (strategy/policy per fetcher)
  • ➕ Keeps StudyFetcher orchestration simpler; fetcher owns interpretation of native query
  • ➕ Allows per-catalog nuance (paging, throttling, query validation) without StudyFetcher branching
  • ➖ More invasive refactor across multiple fetchers/interfaces
  • ➖ Harder to ensure consistent behavior in one place

Recommendation: The current approach is a good incremental step: it makes study.yml catalogSpecific functional end-to-end with minimal disruption. Consider a follow-up to clarify/align semantics for raw overrides on paged fetchers (e.g., whether to fetch multiple pages and enforce resultLimits) to avoid unexpected truncation or unbounded results depending on catalog behavior.

Files changed (2) +96 / -8

Enhancement (1) +17 / -8
StudyFetcher.javaDispatch to raw search APIs when a catalogSpecific override exists +17/-8

Dispatch to raw search APIs when a catalogSpecific override exists

• Adds a per-fetcher lookup of StudyQuery.catalogSpecific and routes execution accordingly. For paged fetchers, the override triggers performRawSearchQueryPaged; otherwise the existing paged + limit logic remains. For non-paged fetchers, the override triggers performRawSearchQuery; otherwise performSearch is used.

jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java

Tests (1) +79 / -0
StudyFetcherTest.javaAdd unit tests for catalogSpecific routing behavior +79/-0

Add unit tests for catalogSpecific routing behavior

• Introduces tests verifying that catalogSpecific overrides call raw-search methods for both paged and plain fetchers and that the standard path is used when no override is present. Uses Mockito to assert the non-selected path is never invoked.

jablib/src/test/java/org/jabref/logic/crawler/StudyFetcherTest.java

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Raw paged search ignores limits ✓ Resolved 📘 Rule violation ≡ Correctness
Description
When a catalogSpecific override is present for a PagedSearchBasedFetcher, the code only fetches
page 0 via performRawSearchQueryPaged(...) and bypasses the existing paging/limit logic used in
the standard path. This can silently truncate results (e.g., for IEEE where pageNumber affects
start_record) and makes override behavior inconsistent and harder to maintain and reason about.
Code

jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java[R64-66]

+                if (catalogOverride != null) {
+                    fetchResult.addAll(basedFetcher.performRawSearchQueryPaged(catalogOverride, 0).getContent());
+                } else {
Evidence
The override branch introduces a special-case that hard-codes a single call to
performRawSearchQueryPaged(..., 0) instead of reusing the standard behavior that computes a
per-catalog limit (via DEFAULT_RESULT_LIMIT/resultLimits), iterates over `ceil(limit /
pageSize) pages, and truncates the final list to limit`, which conflicts with PR Compliance ID 3’s
requirement for maintainable, non-duplicated logic. This has real semantic impact because IEEE’s
paging logic derives start_record from pageNumber, so requesting only page 0 effectively caps
results to one page (often ~20) even when the default limit is higher (e.g., 100). Additionally, per
PR Compliance ID 16, tests should reflect behavior changes; the added/updated test asserts only a
single page-0 call in the override path and does not cover or validate the expected paging/limit
behavior for overrides.

AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions): AGENTS.md: Keep Code Small, Focused, and Maintainable (SRP, No Duplication, No Premature Abstractions)
AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Update Tests for Behavior Changes and Follow JabRef JUnit Conventions: AGENTS.md: Testing Standards: Up...

Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated
Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated

@LoayTarek5 LoayTarek5 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

small things to address, great works as usual

Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated
Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated
Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated
@github-actions github-actions Bot added status: changes-required Pull requests that are not yet complete and removed status: no-bot-comments labels Jun 27, 2026

@LoayTarek5 LoayTarek5 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Also i notice that two behaviors are not covered
one for an override fetching multiple pages, respecting the limit
and other of an override on an unmigrated fetcher not crashing the crawl

@faneeshh

Copy link
Copy Markdown
Collaborator Author

I still need to update the tests to use the same pattern as noOverrideFallsBackToStandardPath( ) and write 2 new tests for the two behaviors that we just added.

@faneeshh
faneeshh requested a review from LoayTarek5 June 28, 2026 00:42
@github-actions github-actions Bot added status: no-bot-comments and removed status: changes-required Pull requests that are not yet complete labels Jun 28, 2026

@LoayTarek5 LoayTarek5 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

almost done

Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated
Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated
Comment on lines +37 to +41
when(pagedFetcher.performRawSearchQueryPaged(anyString(), anyInt()))
.thenReturn(new Page<>("native:query", 0, List.of()));
when(pagedFetcher.performRawSearchQueryPaged("native:query", 0))
.thenReturn(new Page<>("native:query", 0, List.of(new BibEntry())));

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The paged tests only page 0, so the multi-page loop (the thing that was fixed) isn't actually verified

Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated
@github-actions github-actions Bot added status: changes-required Pull requests that are not yet complete and removed status: no-bot-comments labels Jun 28, 2026
@github-actions github-actions Bot added status: no-bot-comments status: changes-required Pull requests that are not yet complete and removed status: changes-required Pull requests that are not yet complete status: no-bot-comments labels Jun 28, 2026
@faneeshh
faneeshh force-pushed the slr-routing-dispatch branch from edcd873 to e48d353 Compare June 28, 2026 20:48
@github-actions github-actions Bot added status: changes-required Pull requests that are not yet complete and removed status: no-bot-comments labels Jul 7, 2026
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Your pull request conflicts with the target branch.

Please merge with your code. For a step-by-step guide to resolve merge conflicts, see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.

@faneeshh
faneeshh requested review from LoayTarek5 and koppor July 17, 2026 05:07

@LoayTarek5 LoayTarek5 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Just fix the checkstyle, other than that, it is LGTM.

@faneeshh

Copy link
Copy Markdown
Collaborator Author

Just fix the checkstyle, other than that, it is LGTM.

It's probably just flaky, the checkstyle tests are passing locally on my InteliJ

@LoayTarek5 LoayTarek5 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

this is cause of ci Checkstyle failure

Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated
Co-authored-by: Loay Tarek Mostafa <142718879+LoayTarek5@users.noreply.github.com>
@github-actions github-actions Bot added status: no-bot-comments and removed status: changes-required Pull requests that are not yet complete labels Jul 18, 2026
@LoayTarek5

Copy link
Copy Markdown
Collaborator

@koppor any final review

LoayTarek5
LoayTarek5 previously approved these changes Jul 19, 2026
Comment thread jablib/src/main/java/org/jabref/logic/crawler/StudyFetcher.java Outdated
@calixtus
calixtus added this pull request to the merge queue Jul 20, 2026
@github-actions github-actions Bot added the status: to-be-merged PRs which are accepted and should go into the merge-queue. label Jul 20, 2026
Merged via the queue into JabRef:main with commit 45bd4ae Jul 20, 2026
53 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component: slr status: awaiting-second-review For non-trivial changes status: no-bot-comments status: to-be-merged PRs which are accepted and should go into the merge-queue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants