Skip to content

Define a tested BibLaTeX structural compatibility profile#587

Draft
claell wants to merge 5 commits into
sciunto-org:mainfrom
claell:test/105-biblatex-contract
Draft

Define a tested BibLaTeX structural compatibility profile#587
claell wants to merge 5 commits into
sciunto-org:mainfrom
claell:test/105-biblatex-contract

Conversation

@claell

@claell claell commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a synthetic BibLaTeX fixture covering @set, @xdata, richer entry types and fields, dates, UTF-8, annotations, extended names, and custom data-model names.
  • Require canonical parse/write cycles to retain the ordered structural inventory without a dialect flag.
  • Document the boundary between structural preservation and Biber's data-model semantics.
  • Reserve BibTeX/BibLaTeX conversion for a later opt-in mapping with explicit loss reporting.

Closes #586. Closes #105.

Dependency and commit structure

The first three commits are the exact entry-type case-preservation work already under review in PR #570. The BibLaTeX contract tests and boundary documentation are the final two commits. The branch runs against current main; after #570 merges, it should be rebased so those prerequisite diffs disappear from this PR.

The nested Biber-comment feature from #372 / PR #585 is intentionally not included or claimed by this branch.

Validation

  • pytest -p no:cacheprovider -W error tests/test_biblatex_contract.py: 4 passed.
  • Complete upstream suite: 2,584 passed, 12 skipped, with the four existing deprecation warnings in tests/test_entrypoint.py.
  • Complete pre-commit hook suite: passed.
  • Biber 2.21 --tool --validate-datamodel accepted the exact synthetic fixture, completed data-model validation, and emitted no warnings.

Review note

Most of this PR is an explicit compatibility contract rather than new schema interpretation. Maintainer review should confirm that the parser is intended to remain schema-agnostic and that preserving custom entry/field names without a dialect flag is the correct boundary.

AI assistance

This pull request was prepared with ChatGPT Codex using GPT-5.6 Sol with high reasoning effort. Codex assisted with standards review, fixture design, dependency separation, documentation, and validation. Automated validation is not a substitute for maintainer review.

claell added 5 commits July 16, 2026 16:31
* Retain source spelling while classifying block types case-insensitively.
* Cover splitter behavior and parse-write round trips with regression tests.
* Preserve source spelling in the parser default.
* Provide optional lowercase normalization as middleware.
* Retain citation-key spelling through the public round trip.
* Preserve custom field-key casing without implicit normalization.
* Verify richer entry types, fields, dates, annotations, and extended names.
* Preserve set, xdata, and custom data-model records without a dialect flag.
* Validate the synthetic standard-profile fixture with Biber 2.21.
* Distinguish structural preservation from Biber data-model semantics.
* List the separately tested BibLaTeX extensions.
* Reserve data-model conversion for explicit, loss-reporting transformations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Define a tested BibLaTeX structural compatibility profile biblatex/biber @set entry

1 participant