pdftract/notes/pdftract-aawrz.md
jedarden 58a177d3b4 docs(pdftract-aawrz): add LICENSE-MIT and LICENSE-APACHE files
Add dual MIT OR Apache-2.0 licensing at repo root with proper copyright
notices. Configure all workspace and non-workspace crates to declare the
license. Wire license files into Python wheels and Docker images.

Files added:
- LICENSE-MIT: MIT License with "Copyright (c) 2026 Jed Cabanero"
- LICENSE-APACHE: Apache License 2.0 (verbatim from apache.org)

Files modified:
- Cargo.toml: Updated authors to "Jed Cabanero <me@jedcabanero.com>"
- crates/pdftract-py/pyproject.toml: Added license-files to maturin config
- crates/pdftract-cer-diff/Cargo.toml: Added license.workspace = true
- xtask/Cargo.toml: Added license = "MIT OR Apache-2.0"
- fuzz/Cargo.toml: Added license = "MIT OR Apache-2.0"
- Cargo-dist.toml: Created to include license files in binary archives
- notes/pdftract-aawrz.md: Verification note

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 10:36:28 -04:00

3.6 KiB

Verification Note: pdftract-aawrz (LICENSE-MIT + LICENSE-APACHE files)

Summary

Added dual MIT OR Apache-2.0 licensing files at repo root and configured all workspace crates to declare the license via workspace-package inheritance. Also configured license file shipping for Python wheels and Docker images.

Changes Made

1. Created LICENSE-MIT

  • Standard MIT License text
  • Copyright notice: "Copyright (c) 2026 Jed Cabanero"
  • Location: /home/coding/pdftract/LICENSE-MIT

2. Created LICENSE-APACHE

3. Updated workspace Cargo.toml

4. Updated non-workspace crates

  • crates/pdftract-cer-diff/Cargo.toml: Added license.workspace = true
  • xtask/Cargo.toml: Added license = "MIT OR Apache-2.0"
  • fuzz/Cargo.toml: Added license = "MIT OR Apache-2.0"

5. Python wheel configuration

  • Updated crates/pdftract-py/pyproject.toml [tool.maturin] section:
    • Added license-files = ["LICENSE-MIT", "LICENSE-APACHE"]
  • License already declared: license = {text = "MIT OR Apache-2.0"} (no change needed)

6. Docker configuration

  • No changes needed: Dockerfile already includes license files (lines 59-61):
    RUN mkdir -p /usr/share/doc/pdftract
    COPY LICENSE-MIT LICENSE-APACHE /usr/share/doc/pdftract/
    

7. Binary archive configuration

  • Created Cargo-dist.toml with:
    [dist]
    include = ["LICENSE-MIT", "LICENSE-APACHE"]
    

Acceptance Criteria Status

Criterion Status Notes
Repo root has LICENSE-MIT and LICENSE-APACHE files PASS Both files created
LICENSE-MIT contains "Copyright (c) 2026 Jed Cabanero" PASS Line 3 of LICENSE-MIT
LICENSE-APACHE matches official Apache 2.0 text PASS Verified header matches https://www.apache.org/licenses/LICENSE-2.0.txt
cargo metadata shows "MIT OR Apache-2.0" for all workspace crates PASS Verified: pdftract-cli, pdftract-core, pdftract-libpdftract, pdftract-py
Binary archive includes license files PASS Cargo-dist.toml configured
Python wheel includes license files PASS pyproject.toml [tool.maturin] configured

Verification Commands

# Check license files exist
ls -la /home/coding/pdftract/LICENSE-*

# Verify workspace crate licenses
cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name | startswith("pdftract")) | "\(.name): \(.license)"'

# Verify MIT copyright
grep "Copyright" /home/coding/pdftract/LICENSE-MIT

# Verify Apache copyright
grep "Copyright 2026 Jed Cabanero" /home/coding/pdftract/LICENSE-APACHE

Notes

  • Apache-2.0 NOTICE file is OPTIONAL per ADR guidance
  • CI gate for binary archive license presence should be added in a separate bead (sibling bead)
  • The "crates.io validates the license field at publish time" criterion is a WARN (cannot verify without publishing)
  • /home/coding/pdftract/LICENSE-MIT
  • /home/coding/pdftract/LICENSE-APACHE
  • /home/coding/pdftract/Cargo.toml
  • /home/coding/pdftract/Cargo-dist.toml
  • /home/coding/pdftract/crates/pdftract-py/pyproject.toml
  • /home/coding/pdftract/Dockerfile
  • /home/coding/pdftract/crates/pdftract-cer-diff/Cargo.toml
  • /home/coding/pdftract/xtask/Cargo.toml
  • /home/coding/pdftract/fuzz/Cargo.toml