Metadata-Version: 2.4
Name: open-quality-cli
Version: 0.1.0
Summary: Command-line interface for the Open Quality 0.1 specification
License-Expression: GPL-3.0-only
Project-URL: Homepage, https://github.com/duanribeiro/open-quality
Project-URL: Repository, https://github.com/duanribeiro/open-quality
Project-URL: Issues, https://github.com/duanribeiro/open-quality/issues
Keywords: quality,quality-as-code,software-quality,open-quality
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Quality Assurance
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: PyYAML>=6.0
Requires-Dist: jsonschema>=4.18
Provides-Extra: dev
Requires-Dist: black<26,>=24.0; extra == "dev"
Dynamic: license-file

# Open Quality

Open Quality is an experimental, vendor-neutral specification for **Quality as Code**: the practice of representing software-quality expectations and governance as declarative, version-controlled artifacts.

The specification defines a **Quality Contract** that can describe:

- what quality means for a software system;
- which requirements and measurable targets apply;
- which workflow and stages a change must pass through;
- who owns work and who must approve decisions;
- which refinement documentation supports a quality decision.

Open Quality is not a test framework, workflow engine, certification, AI product, or hosted platform. It is an open format that tools may author, validate, evaluate, visualize, or execute.

## Status

Version `0.1.0` is an experimental foundation intended to invite feedback. Names and structures may change before `1.0.0`.

## Repository map

```text
.
├── MANIFESTO.md
├── PRINCIPLES.md
├── SPECIFICATION.md
├── schema/v0.1/
├── examples/minimal/
└── docs/
```

## Start with the minimal contract

The example in [`examples/minimal`](examples/minimal/README.md) describes a small release process for a payment API. Each YAML document declares one resource using a common envelope:

```yaml
specVersion: "0.1"
kind: QualityRequirement
metadata:
  id: api-availability
  name: API availability
spec:
  statement: The API must remain available to customers.
  priority: critical
  qualityMeasures:
    - qualityMeasure: availability-rate
      target: {operator: greaterThanOrEqual, value: 99.9, unit: percent}
```

Read [`SPECIFICATION.md`](SPECIFICATION.md) for the normative model and [`docs/syntax.md`](docs/syntax.md) for authoring conventions.

## Install

The optional command-line interface requires Python 3.10 or later. Clone the
repository, create an isolated environment, and install the local project:

```bash
git clone <repository-url>
cd open-quality
python3 -m venv .venv
source .venv/bin/activate
python -m pip install .
```

After the first public release, install it globally with `pipx`:

```bash
pipx install open-quality-cli
```

For local development, install the formatter as well:

```bash
python -m pip install -e ".[dev]"
```

## Quick start

Validate the minimal Quality Contract included with the repository:

```bash
oq validate examples
```

Explore the example and run the project's checks:

```bash
oq graph examples
make check
```

`oq validate` confirms the contract is structurally valid. `oq graph` renders
its workflow dependencies, and `oq evaluate` evaluates requirement targets
against a state file. Run `oq` without arguments to see the available commands.

Before opening a pull request, run `make format` to apply the project's Black
formatting standard and `make check` to verify formatting, compilation, and
tests.

## Core resources

| Resource | Purpose |
|---|---|
| `Project` | Entry point and scope of a Quality Contract |
| `QualityRequirement` | A quality expectation and its acceptance target |
| `Workflow` | Ordered or dependent stages in a quality process |
| `Stage` | A reusable phase of work, verification, or decision |
| `QualityMeasure` | A measurement referenced by requirements |
| `Artifact` | A refinement document required to support a quality decision |
| `Role` | A responsibility used for ownership or approval |
| `ApprovalPolicy` | Rules that determine who must approve and how |

## Contributing

Open an issue before proposing a new core resource. See
[`CONTRIBUTING.md`](CONTRIBUTING.md), [`GOVERNANCE.md`](GOVERNANCE.md),
[`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md), and [`SUPPORT.md`](SUPPORT.md).

## Compatibility and releases

Open Quality is currently at specification version `0.1.0` and is experimental.
The CLI supports Python 3.10 and later. Versioned schemas live under
[`schema/v0.1`](schema/v0.1); tools should select schemas by the contract's
`specVersion` rather than assuming future compatibility.

Until `1.0.0`, the project may make breaking changes. Each release will be
tagged, documented in [`CHANGELOG.md`](CHANGELOG.md), and identify its schema
compatibility and migration notes where needed. After `1.0.0`, releases will
follow semantic versioning: patch releases are backward-compatible fixes,
minor releases add backward-compatible functionality, and major releases may
contain breaking changes.

## License

Copyright © 2026 Duan Ribeiro.

Open Quality is licensed under the GNU General Public License v3.0. Any copy,
redistribution, or modified version must retain the applicable copyright and
license notices, state its changes, and be distributed under GPL-3.0. See
[`LICENSE`](LICENSE) and [`NOTICE`](NOTICE).
