Skip to content

v0.0.1

Choose a tag to compare

@akhundMurad akhundMurad released this 23 Jan 16:24
· 85 commits to main since this release

πŸŽ‰ Pacta v0.0.1 β€” Initial Release

Architecture Testing & Architecture-as-Code for Python

We're excited to announce the first release of Pacta β€” a static analysis tool that enforces architectural rules in your codebase, catching violations in pull requests rather than post-mortems.

⚠️ Experimental Release β€” Breaking changes may occur in future versions.


Highlights

Pacta helps teams maintain clean architecture by:

  • Defining architecture as code using a simple YAML model
  • Enforcing dependency rules between architectural layers
  • Tracking violations over time with snapshot versioning
  • Failing only on new violations using baseline mode (so you're not blocked by legacy debt)

Features

Architecture Modeling

  • Define your system using YAML-based architecture models (architecture.yml)
  • Model containers (services/components) with code mappings
  • Define architectural layers (UI, Application, Domain, Infrastructure)
  • Support for Domain-Driven Design bounded contexts

Rule Enforcement

  • Custom rule DSL for defining architectural constraints
  • Layer dependency enforcement (e.g., Domain cannot import from Infrastructure)
  • Multiple severity levels: ERROR, WARNING, INFO
  • Both forbid and allow actions for fine-grained control

Snapshot & Baseline

  • Save architecture snapshots and version them like code
  • Baseline mode: fail only on new violations, not legacy debt
  • Snapshot diffing to understand what changed between versions
  • Git integration for automatic commit/branch metadata

Reporting

  • Human-readable text output with color support

  • JSON output for CI/CD integration

  • Quiet mode (summary only) and verbose mode (full details)

  • Clear exit codes:

    • 0 β€” success
    • 1 β€” violations
    • 2 β€” error

Plugin Architecture

  • Extensible analyzer interface for multi-language support
  • Automatic analyzer discovery via Python entry points
  • Stable configuration contract for plugin compatibility

Supported Languages

Language Status
Python βœ… Full support
Java πŸ”œ Planned
Go πŸ”œ Planned
TypeScript πŸ”œ Planned
C# πŸ”œ Planned

Installation

Command:

pip install pacta

Requirements: Python 3.10+


Documentation

Full documentation is available: https://akhundmurad.github.io/pacta/


⚠️ Known Limitations

  • Python is the only supported language in this release
  • Breaking changes may occur before v1.0
  • AGPL-3.0 license (copyleft)

Contributing

Contributions are welcome! Please see the repository for contribution guidelines.


License

AGPL-3.0-only