Metadata-Version: 2.5
Name: sigantry
Version: 1.0.0
Summary: Governance, drift detection, and rollback engine for Microsoft Fabric CI/CD pipelines.
Project-URL: Homepage, https://github.com/Bralabee/sigantry
Project-URL: Documentation, https://bralabee.github.io/sigantry
Project-URL: Repository, https://github.com/Bralabee/sigantry
Project-URL: Issues, https://github.com/Bralabee/sigantry/issues
Project-URL: Changelog, https://github.com/Bralabee/sigantry/blob/main/CHANGELOG.md
Author-email: JToye Digital <bralabala@gmail.com>
License: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.11
Requires-Dist: azure-identity<2.0,>=1.25.1
Requires-Dist: azure-keyvault-secrets<5.0,>=4.10
Requires-Dist: azure-monitor-ingestion<2.0,>=1.1
Requires-Dist: fabric-cicd<2.0,>=1.0
Requires-Dist: httpx<0.29,>=0.28
Requires-Dist: jinja2<4.0,>=3.1
Requires-Dist: jsonschema<5.0,>=4.20
Requires-Dist: msal<2.0,>=1.31
Requires-Dist: msfabricpysdkcore<0.4,>=0.3.1
Requires-Dist: pydantic-settings<3,>=2
Requires-Dist: pydantic<3.0,>=2.9
Requires-Dist: pyjwt[crypto]<3.0,>=2.10
Requires-Dist: pynacl<2.0,>=1.6
Requires-Dist: pyrate-limiter<5.0,>=4.1
Requires-Dist: rich<16.0,>=13.9
Requires-Dist: tenacity<10.0,>=9.0
Requires-Dist: typer<1.0,>=0.15
Provides-Extra: dev
Requires-Dist: build<2.0,>=1.2; extra == 'dev'
Requires-Dist: mypy<2.0,>=1.19; extra == 'dev'
Requires-Dist: pre-commit<5.0,>=4.5; extra == 'dev'
Requires-Dist: pytest-cov<8.0,>=7.1; extra == 'dev'
Requires-Dist: pytest-doctestplus<2.0,>=1.3; extra == 'dev'
Requires-Dist: pytest-mock<4.0,>=3.15; extra == 'dev'
Requires-Dist: pytest<10.0,>=9.0; extra == 'dev'
Requires-Dist: respx<0.24,>=0.21; extra == 'dev'
Requires-Dist: ruff<0.16,>=0.15; extra == 'dev'
Requires-Dist: twine<8.0,>=7.0; extra == 'dev'
Requires-Dist: types-pyyaml<7.0,>=6.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material<10.0,>=9.7.6; extra == 'docs'
Requires-Dist: mkdocs<2.0,>=1.6; extra == 'docs'
Requires-Dist: mkdocstrings[python]<1.0,>=0.26; extra == 'docs'
Provides-Extra: test
Requires-Dist: build<2.0,>=1.2; extra == 'test'
Requires-Dist: freezegun<2.0,>=1.5; extra == 'test'
Requires-Dist: jsonschema<5.0,>=4.20; extra == 'test'
Requires-Dist: pytest-cov<8.0,>=7.1; extra == 'test'
Requires-Dist: pytest-mock<4.0,>=3.15; extra == 'test'
Requires-Dist: pytest<10.0,>=9.0; extra == 'test'
Requires-Dist: respx<0.24,>=0.21; extra == 'test'
Requires-Dist: twine<8.0,>=7.0; extra == 'test'
Description-Content-Type: text/markdown

# Sigantry

[![PyPI version](https://img.shields.io/pypi/v/sigantry.svg)](https://pypi.org/project/sigantry/)
[![Python versions](https://img.shields.io/pypi/pyversions/sigantry.svg)](https://pypi.org/project/sigantry/)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)
[![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)

**Sigantry** is an enterprise-grade governance, drift detection, and rollback engine for Microsoft Fabric CI/CD pipelines.

Built by **JToye Digital**, Sigantry wraps Microsoft's official deployment tooling (`fabric-cicd`, `fab` CLI, and Fabric REST APIs) rather than replacing them. While Microsoft owns the automation lane, Sigantry provides the mission-critical governance layer enterprise platform teams require: **tamper-evident deploy ledgers, automated rollback, scheduled drift detection, destructive-operation gating, and headless PR-review bots**.

---

## Key Capabilities

- 🚀 **Pre-Deployment Safety Probes**: `sigantry preflight` runs four-phase non-destructive simulations (Schema Syntax, Dependency DAG, Entra ID Scope, Capacity State) before deploying.
- 🔄 **Lossless Brownfield Adoption**: `sigantry sync pull` introspects any hand-built Fabric workspace and generates an exact, round-trip lossless `sync.yml` manifest and code tree.
- 🏗️ **Declarative Greenfield Scaffolding**: `sigantry workspace bootstrap` provisions brand-new workspaces, capacity bindings, and medallion folder blueprints from a single `workspace.yml` manifest with idempotent probe-before-act convergence.
- ⚡ **Concurrent Bulk Publishing**: `--bulk` option accelerates workspace deployments via parallel item publishing pools, reducing deploy times by up to 3.8x on multi-item repositories.
- 🛡️ **Automated Release Rollback**: `sigantry deploy run --rollback --to-release <id>` re-publishes the exact historical version of items from immutable ledger snapshots.
- 🔍 **Interactive Drift Detection**: `sigantry diff` continuously compares live Fabric workspaces against Git manifests, outputting rich CLI tables, SemVer JSON, or standalone interactive HTML reports (`--output html`).
- 🛑 **TMDL Breaking Change Impact Guard**: `sigantry pr-bot run --fail-on-breaking` intercepts Power BI semantic model edits in CI/CD, highlighting dropped measures, columns, and tables before downstream reports break.
- 📜 **Tamper-Evident Audit Ledger**: Cryptographic SHA-256 hash-chained JSONL records (`DeployRecord`, `BootstrapRecord`) independently verifiable via `sigantry release verify`.
- 🔌 **11 Protocol Seams**: Pluggable architecture supporting custom notification sinks (Teams, Slack, Email), secret stores (Key Vault, GitHub, ADO), approval gates (OPA, ADO, GHA), and data quality gates.

---

## 60-Second Quickstart

### 1. Installation

```bash
pip install sigantry
```

Verify the installation:

```bash
sigantry --help
sigantry doctor
```

### 2. Adopt an Existing Workspace (Brownfield)

Bring an existing, hand-built Fabric workspace under version-controlled manifest management:

```bash
sigantry sync pull --workspace-id "<YOUR-WORKSPACE-GUID>" --into ./adopted
```

Inspect what was generated:

```bash
head -25 ./adopted/sync.yml
```

Prove the round-trip is lossless (should report 0 folders created and 0 items moved):

```bash
sigantry sync apply --manifest ./adopted/sync.yml --workspace-id "<YOUR-WORKSPACE-GUID>" --dry-run
```

### 3. Detect Drift

Check if anyone has modified, added, or deleted items out-of-band in the Fabric portal:

```bash
sigantry diff --manifest ./adopted/sync.yml --workspace-id "<YOUR-WORKSPACE-GUID>" --fail-on-drift
```

### 4. Bootstrap a Fresh Workspace (Greenfield)

Author a `workspace.yml` blueprint:

```yaml
schema_version: "1.0"
workspace:
  name: "analytics-prod"
  description: "Production Fabric Workspace"
  capacity_id: "<YOUR-CAPACITY-GUID>"
folders:
  blueprint: medallion
git:
  enabled: false
```

Bootstrap with probe-before-act convergence:

```bash
sigantry workspace bootstrap workspace.yml --dry-run
sigantry workspace bootstrap workspace.yml
```

---

## Documentation

Full documentation, architecture guides, and step-by-step tutorials are available at:
👉 **[https://bralabee.github.io/sigantry](https://bralabee.github.io/sigantry)**

---

## License

Sigantry is licensed under the [Apache License, Version 2.0](LICENSE).
