Skip to content

Fix wrong author and year when importing PDFs with creator-app metadata - #16247

Draft
koppor wants to merge 11 commits into
mainfrom
pdf-merge-author-crosscheck
Draft

Fix wrong author and year when importing PDFs with creator-app metadata#16247
koppor wants to merge 11 commits into
mainfrom
pdf-merge-author-crosscheck

Conversation

@koppor

@koppor koppor commented Jul 14, 2026

Copy link
Copy Markdown
Member

Related issues and pull requests

No existing issue found — searched JabRef/jabref and jabref-koppor for reports about wrong authors/years from PDF document properties.

🤖 PR Description

Importing a PDF exported from an office suite took the author from the PDF document properties, which usually contain the account name of whoever exported the file — not the authors of the work (real-world example: a SummerSoc 2018 paper by Krieger, Breitenbücher, Képes, and Leymann imported as author "Markus Richter", year 7056). PdfMergeMetadataImporter now cross-checks author candidates against the text of the PDF's leading pages: an unconfirmed author is replaced by a text-confirmed candidate, or dropped when it appears nowhere in the document (guarded so JabRef-written XMP metadata survives re-import). PdfContentImporter additionally only extracts plausible years, so digit runs like postal codes or URL fragments are no longer imported as year.

Analogies

Like honey, this PR combines the output of many workers (importer candidates) and filters out what does not belong in the comb; like chocolate, it removes a bitter surprise hidden under a trustworthy-looking wrapper (metadata that is confidently wrong); and like the moon, the imported entry now only reflects light that actually comes from the document itself.

jabref-contrib-policy:4.2:reviewed​:ok

Steps to test

  1. Take a PDF produced by Microsoft Word whose document properties contain an "Author" who is not an author of the work (Word stamps the OS account name into the metadata; pdfinfo/document properties show it).
  2. Make sure Grobid is disabled, then use File → Import into current library and select the PDF.
  3. Before this change: the entry gets author = the document-properties name (e.g. "Markus Richter") and possibly a nonsense year (e.g. 7056 from the postal code "70569 Stuttgart" on the first page).
  4. With this change: the bogus author is dropped (or replaced by the authors printed on page 1 when another importer extracts them), and year is only set to a plausible value.

Result of importing the SummerSoc 2018 example PDF (docinfo author "Markus Richter"; entry ends up with no author instead, correct title, year 2018 instead of 7056):

Imported entry: empty author, correct title, year 2018

AI usage

Claude Code (model claude-fable-5)

AI CHECKLIST.md walkthrough

1. Code self-review

Nullability and control flow

  • No == null / != null checks — JSpecify annotations (@NullMarked, @Nullable, @NonNull) used instead.
  • No Objects.requireNonNull(...) — nullability expressed via JSpecify annotations.
  • [/] New classes annotated with @NullMarked (org.jspecify.annotations.NullMarked). — no new top-level production class; only a private nested record.
  • Optional consumed with ifPresent / ifPresentOrElse / map / orElseThrow — never orElse(unusedValue) nor an isPresent() + get() block.
  • [/] StringUtil.isBlank(...) used instead of s == null || s.isBlank(). — no null-or-blank checks needed; isBlank() only called on guaranteed non-null strings.

Exceptions

  • No catch (Exception e) — only specific exceptions are caught.
  • No throw new RuntimeException(...) / IllegalStateException(...) — these tear down the whole application.
  • Logged exceptions are passed as the last logger argument (LOGGER.info("...", e)), not concatenated into the message string.

Style and idioms

  • New BibEntry objects built with withers (withField, not setField).
  • Modern Java used: List.of() / Map.of() / Set.of(), Path.of(), SequencedCollection / SequencedSet, text blocks.
  • Regexes use a precompiled Pattern.compile(...) constant, not String.matches(...).
  • [/] Background work uses org.jabref.logic.util.BackgroundTask, not new Thread(). — no background work added.
  • No commented-out code, no trivial comments restating the code, no AI-disclosure comments in source.
  • Markdown Javadoc (///) uses Markdown syntax, not JavaDoc inline tags: `code` instead of {@code}, [ClassName] instead of {@link}.

User-facing text

  • [/] All user-facing text localized (Localization.lang in Java, % prefix in FXML). — no user-facing strings added.
  • [/] Sentence case (not Title Case); no trailing !; labels do not end with :.
  • [/] Variance expressed with placeholders ("...: %0"), not string concatenation.

Security

  • [/] User-controlled data is HTML-escaped before being written into any text/html response (XSS). — no HTTP/HTML output touched.

Tests

  • Behavior changes in org.jabref.model / org.jabref.logic have added or updated tests. — new PdfMergeMetadataImporterOfflineTest (11 tests) plus updated/added cases in PdfContentPartialImporterTest.
  • Tests assert object contents (assertEquals), use plain JUnit asserts (not AssertJ), have no @DisplayName, do not catch exceptions, and use @TempDir instead of manual temp directories.

2. Verification commands

  • ./gradlew :jablib:check — passed (with xvfb).
  • ./gradlew checkstyleMain checkstyleTest checkstyleJmh — passed for :jablib (only module touched).
  • ./gradlew modernizer — passed for :jablib.
  • ./gradlew --no-configuration-cache rewriteDryRun reports no changes.
  • ./gradlew javadoc:jablib:javadoc passed.
  • npx markdownlint-cli2CHANGELOG.md (the only Markdown changed): 0 errors.
  • [/] Docker intellij-format container — Docker not usable on this machine; used IntelliJ idea format with .idea/codeStyles/Project.xml instead (same code style).

3. Documentation

  • CHANGELOG.md entry added (end-user wording; PR link, since no issue exists).
  • Searched jabref and jabref-koppor issues for a related issue — no confident match found, so no closes reference.
  • [/] Requirement added to docs/requirements/<area>.md — heuristic bug fix, not a new feature.
  • [/] Developer documentation under docs/ — no behavior/architecture change at the documented level.

4. Pull request

  • PR body built from .github/PULL_REQUEST_TEMPLATE.md, every section filled.
  • All checklist items kept and marked [x], [ ], or [/].
  • All HTML comments removed from the PR body.
  • PR created with gh pr create --body-file <file> (not --body).
  • The CHANGELOG.md TODO placeholder was replaced with the real PR-number link after PR creation, then committed and pushed.

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 — checked: the import/XMP pages do not describe the old wrong behavior, so no documentation change is needed

🤖 Generated with Claude Code

koppor and others added 2 commits July 14, 2026 05:26
The document information dictionary of office-produced PDFs names the
person who exported the file, not the authors of the work. The merge
importer now verifies author candidates against the text of the leading
pages, prefers text-confirmed candidates, and drops a single-person
creator-style author that appears nowhere in the document.

Also restrict content-importer year extraction to plausible values so
postal codes and URL digit runs are no longer imported as year.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the status: changes-required Pull requests that are not yet complete label Jul 14, 2026
@qodo-free-for-open-source-projects

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Fix PDF import: avoid exporter-account authors and implausible years

🐞 Bug fix 🧪 Tests 📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Cross-check merged PDF authors against leading-page text to avoid exporter account names.
• Prefer text-confirmed author candidates; drop unconfirmed single-person creator-style authors.
• Extract years only from standalone, plausible 4-digit values (skip postal codes/URLs).
Diagram

graph TD
  A([User imports PDF]) --> B["PdfMergeMetadataImporter"] --> E["Merge + author cross-check"] --> F["Imported BibEntry"]
  B --> C["Candidate importers"] --> E
  B --> D["Leading pages text"] --> E
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. De-prioritize / ignore docinfo/XMP author unconditionally
  • ➕ Very simple; no PDF text extraction cost
  • ➕ Eliminates creator-account authors reliably for office-exported PDFs
  • ➖ Also discards legitimate metadata-only authors for scanned PDFs or slides
  • ➖ Hard to scope safely across all producer tools and XMP variants
2. Heuristic blacklist by PDF producer (e.g., Word/Office)
  • ➕ Targeted change with minimal risk to other PDFs
  • ➕ Avoids parsing PDF text
  • ➖ Producer strings are inconsistent/spoofable; needs ongoing maintenance
  • ➖ Misses other tools that also write creator/account-name authors
3. Always prefer Grobid/ML-based extraction when available
  • ➕ Often yields high-quality bibliographic metadata
  • ➕ Reduces need for custom heuristics
  • ➖ Grobid can be disabled/offline; adds dependency on external service/quality
  • ➖ Not a complete solution for the no-Grobid path this PR targets

Recommendation: The PR’s approach (cross-checking author candidates against leading-page text and only dropping creator-style single-person authors when unconfirmed) is the best tradeoff: it’s producer-agnostic, preserves JabRef-written metadata via the citationKey/explicit-type guard, and is backed by focused offline tests. The main thing to watch in review is false negatives for short/ambiguous family names and performance of text extraction (kept to first 1–2 pages).

Files changed (5) +372 / -6

Bug fix (2) +150 / -5
PdfContentImporter.javaFilter extracted years to standalone, plausible 4-digit values +11/-3

Filter extracted years to standalone, plausible 4-digit values

• Updates year extraction to avoid matching inside longer digit runs and iterates over candidates until a plausible year is found (>=1500 and <= current year + 2). This prevents postal codes and URL fragments from being imported as the entry year.

jablib/src/main/java/org/jabref/logic/importer/fileformat/pdf/PdfContentImporter.java

PdfMergeMetadataImporter.javaCross-check merged author against leading-page text and drop creator-account authors +139/-2

Cross-check merged author against leading-page text and drop creator-account authors

• Extends merging to include leading-page PDF text extraction and validates author fields against that text. Unconfirmed merged authors can be replaced by a better-confirmed candidate, or cleared when they look like a single-person creator/account name from non-bibliographic metadata (while preserving JabRef-written metadata via citation key/explicit type guards).

jablib/src/main/java/org/jabref/logic/importer/fileformat/pdf/PdfMergeMetadataImporter.java

Tests (2) +220 / -1
PdfContentPartialImporterTest.javaAdd regression coverage for year plausibility and digit-run handling +34/-1

Add regression coverage for year plausibility and digit-run handling

• Updates an existing test expectation to the correct year and adds new cases ensuring year extraction does not pick postal codes and prefers plausible years over other 4-digit numbers.

jablib/src/test/java/org/jabref/logic/importer/fileformat/pdf/PdfContentPartialImporterTest.java

PdfMergeMetadataImporterOfflineTest.javaAdd offline test suite for author cross-checking behavior +186/-0

Add offline test suite for author cross-checking behavior

• Introduces a new non-network test class covering dropping/replacing unconfirmed authors, normalization behavior (diacritics/hyphenation), whole-word matching, and safeguards for JabRef-written metadata. Includes an end-to-end PDFBox-generated Word-style PDF ensuring docinfo author is not imported.

jablib/src/test/java/org/jabref/logic/importer/fileformat/pdf/PdfMergeMetadataImporterOfflineTest.java

Documentation (1) +2 / -0
CHANGELOG.mdDocument fixes for PDF import author/year extraction +2/-0

Document fixes for PDF import author/year extraction

• Adds changelog entries describing the author cross-check during PDF import and the new plausible-year filtering to prevent bogus years from being imported.

CHANGELOG.md

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

qodo-free-for-open-source-projects Bot commented Jul 14, 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. CHANGELOG entries keep [TODO] ✓ Resolved 📘 Rule violation ⚙ Maintainability
Description
The new CHANGELOG “Fixed” entries still end with [TODO] placeholders instead of a real issue/PR
reference, which violates the project’s changelog linking/quality requirements. If merged as-is,
this can ship unfinished release notes and breaks normal changelog conventions.
Code

CHANGELOG.md[R64-65]

+- We fixed an issue where importing a PDF could set the author to the person stored in the PDF's document properties (typically the account name of whoever exported the file, e.g. from Microsoft Word) instead of the authors of the work: author candidates are now cross-checked against the text of the PDF's first pages. [TODO]
+- We fixed an issue where importing a PDF could extract an implausible year (e.g. from a postal code or a link printed on the first page). [TODO]
Evidence
PR compliance requires changelog entries to avoid placeholder or broken references and to follow
correct linking conventions. In CHANGELOG.md[64-65], the two newly added bullets under ### Fixed
both explicitly end with [TODO], demonstrating that the required issue/PR reference/linking step
was not completed.

AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage: AGENTS.md: CHANGELOG.md rules: only user-visible entries, end-user wording, no extra blank lines, and correct issue/PR linking/TODO usage
CHANGELOG.md[64-65]
CHANGELOG.md[62-65]
Best Practice: Learned patterns

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Two new changelog bullets under `### Fixed` in `CHANGELOG.md` still end with `[TODO]`, which is a placeholder and should not remain in merged release notes. Replace these placeholders with the correct issue/PR reference(s) (or remove them) so the changelog is compliant and ready for publication.
## Issue Context
PR compliance requires changelog entries to avoid placeholder/broken references and use correct linking conventions. This PR states no related issue exists; in that case, the changelog entry should link to the PR (or to an issue if one gets created). The wording of the bullets appears final, but the trailing `[TODO]` indicates the reference/linking step was not completed.
## Fix Focus Areas
- CHANGELOG.md[64-65]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. /// comment uses {@link} ✓ Resolved 📘 Rule violation ⚙ Maintainability
Description
The new Markdown Javadoc (///) in the test file uses {@link ...} inline tags instead of
Markdown-style links (e.g., [PdfMergeMetadataImporter]). This violates the required Markdown
Javadoc style and reduces consistency across documentation comments.
Code

jablib/src/test/java/org/jabref/logic/importer/fileformat/pdf/PdfMergeMetadataImporterOfflineTest.java[R29-30]

+/// Tests for {@link PdfMergeMetadataImporter} that work without network access, complementing
+/// {@link PdfMergeMetadataImporterTest} (which is tagged as fetcher test and thus not run by default).
Evidence
PR Compliance ID 14 requires Markdown Javadoc comments (///) to use Markdown syntax rather than
JavaDoc inline tags. The newly added comment at PdfMergeMetadataImporterOfflineTest.java[29-30]
uses {@link PdfMergeMetadataImporter} and {@link PdfMergeMetadataImporterTest}.

AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax: AGENTS.md: Use Markdown Javadoc comments (///) for multi-line comments with Markdown syntax
jablib/src/test/java/org/jabref/logic/importer/fileformat/pdf/PdfMergeMetadataImporterOfflineTest.java[29-30]

Agent prompt

...

Comment thread CHANGELOG.md Outdated
@koppor
koppor marked this pull request as draft July 14, 2026 23:47
Relocate the leading-page text extraction and author-validation helpers
from PdfMergeMetadataImporter into PdfContentImporter, the class that
already owns reading text from a PDF and reasoning about authors. The
merge importer now only invokes them. Behavior is unchanged.

Also use Markdown links in the new /// Javadoc and parameterize the
uniform single-candidate cross-check cases in the offline test with
@CsvSource.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

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.

koppor and others added 7 commits July 18, 2026 01:01
Add JavaDoc to mergeCandidates and rename its misleading `documentText`
parameter to `leadingPagesText` (extractLeadingPagesText only reads the
first two pages). Mark PdfContentImporter @NullMarked and annotate the
leading-pages-text parameter @nullable, consuming it with
Objects.requireNonNullElse instead of an ad-hoc `== null` check in the test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CI's IntelliJ formatter cannot handle a wrapped @PARAM in /// Javadoc.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CI's IntelliJ formatter column-aligns consecutive @PARAM descriptions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the real paper/creator names with obvious placeholders (Alice Doe,
Bob Smith, Eve Void, ...), keeping every property each case tests
(diacritics, hyphenation, substring-not-word, exotic XMP separators,
multi-person).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

The requested changes were not addressed for 3 days. Please follow-up in the next 7 days or your PR will be automatically closed. You can check the contributing guidelines for hints on the pull request process.

@github-actions github-actions Bot added the status: stale Issues marked by a bot as "stale". All issues need to be investigated manually. label Aug 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status: changes-required Pull requests that are not yet complete status: stale Issues marked by a bot as "stale". All issues need to be investigated manually.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants