Skip to content

Add CI/CD pipeline, expand test coverage to 96%, ship sample documents - #1

Merged
ridaken merged 2 commits into
mainfrom
ci-coverage-samples
Jun 27, 2026
Merged

Add CI/CD pipeline, expand test coverage to 96%, ship sample documents#1
ridaken merged 2 commits into
mainfrom
ci-coverage-samples

Conversation

@ridaken

@ridaken ridaken commented Jun 27, 2026

Copy link
Copy Markdown
Owner

What

First real PR into main, establishing the feature-branch → PR workflow.

CI/CD (.github/workflows/ci.yml)

  • Gate job on every PR and push, matrix Python 3.11/3.12/3.13:
    • ruff check (lint)
    • pytest with a coverage gate (--cov-fail-under=90)
    • python -m build (sdist + wheel)
  • Release job on push to main after gates pass: computes the next patch
    version from git tags, tags vX.Y.Z, and publishes a GitHub Release with
    generated notes. Mirrors the actual-ai-categorizer tag-based model (no
    version-bump commit-back, so no CI loop).

Test coverage 63% → 96%

Added test_cli, test_client (fake httpx, no network), test_lock,
test_proposals, test_schema, test_extract, test_apply, test_pipeline_edges,
test_ledger. Configured ruff + coverage in pyproject.toml; fixed all lint findings.

Samples

Committed samples/inbox/ (receipt PDF, invoice docx, crayon-drawing PNG), a
regenerator script, and a runnable samples/config.yaml. .gitignore tracks the
inputs + demo config but ignores generated outputs and coverage artifacts.

Verification

ruff check . clean; pytest → 73 passed, 1 skipped (POSIX-only lock test), 96%.

Note

On merge, the release job needs the repo's Actions setting at Read and write
permissions
(Settings → Actions → General → Workflow permissions) to create the
tag/release. The first release will be v0.1.0.

🤖 Generated with Claude Code

Tom and others added 2 commits June 26, 2026 23:32
CI (.github/workflows/ci.yml): gate job runs ruff lint + pytest (with a
--cov-fail-under=90 gate) + package build across Python 3.11/3.12/3.13 on every
PR and push. A release job on push to main computes the next patch version from
git tags, tags it, and publishes a GitHub Release with generated notes (mirrors
the actual-ai-categorizer tag-based model).

Tests: added test_cli, test_client (fake httpx), test_lock, test_proposals,
test_schema, test_extract, test_apply, test_pipeline_edges, test_ledger. Coverage
63% -> 96%. Configured ruff + coverage in pyproject and fixed all lint findings.

Samples: committed samples/inbox (receipt PDF, invoice docx, drawing PNG) plus a
regenerator script and a runnable samples/config.yaml; .gitignore tracks the inputs
and demo config but ignores generated outputs (library/state/logs/proposals) and
coverage artifacts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
test_collision_resolution_same_batch imported _make_pdf from tests.conftest,
which only resolves when the repo root is on sys.path (true locally, not on CI
-> ModuleNotFoundError: No module named 'tests'). Expose the helper as a
`make_pdf` conftest fixture and consume it via the fixture instead.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ridaken
ridaken merged commit 7a0c3db into main Jun 27, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant