Skip to content

v0.2.2

Latest

Choose a tag to compare

@Mattral Mattral released this 04 Jul 06:12

🐦 PromptCanary v0.2.2

Detect silent behavioral drift in LLM providers β€” before it breaks production.

This is a stabilization release. No new features β€” every change here exists
to make the project's own CI, packaging, and public-facing links trustworthy.
If you're evaluating PromptCanary for the first time, this is the version to start with.

What's Fixed

Two CI-only mypy failures, both caused by the same root issue: local
development environments had accumulated packages over time that were never
declared in pyproject.toml, so checks passed locally but failed in CI's
genuinely clean install.

  • types-PyYAML was missing from [dev] extras β€” without it, yaml.dump()
    returns Any instead of str, which mypy --strict correctly flags
    against CanarySuite.to_yaml_template()'s declared return type.
  • pandas was declared in [viz] extras but never actually used anywhere
    in the codebase β€” its only effect was pulling in numpy transitively.
    numpy 2.5's type stubs require Python 3.12+ to parse, conflicting with
    this project's deliberate python_version = "3.10" mypy target (chosen
    because we support 3.10+). Removed the unused dependency rather than
    working around the symptom. Full investigation in DECISION_LOG.md ADR-011.

Both were caught by adopting clean-room verification as standard
practice: installing only what pyproject.toml declares into a fresh,
disposable virtualenv before every release, rather than trusting a
long-lived dev environment. This is now documented as a permanent step in
CONTRIBUTING.md's new Release Checklist.

What's Corrected

  • Fixed the placeholder GitHub org across the entire project. Every
    badge, URL, and cross-reference β€” 32 occurrences across the README, CI
    workflows, issue templates, pyproject.toml, mkdocs.yml, docstrings,
    and documentation pages β€” pointed to a placeholder org. All now correctly
    point to the real repository.
  • Fixed a related inconsistency: the documentation URL pointed to a
    ReadTheDocs domain that was never configured; the actual deploy target
    (GitHub Pages, via the existing docs.yml workflow) is now referenced
    correctly everywhere.
  • New badge row on the README: CI status, PyPI version, Python version,
    license, Ruff, mypy, a live view counter, and a one-click Colab launch
    badge for the notebooks.
  • New notebooks/README.md with direct "Open in Colab" links for all four
    notebooks β€” anyone can now run the interactive examples with zero local
    setup.