scalio-catalog
Shared code for the Scalio Blueprint governance catalog: one desired state per tenant, used by Foundry (roll
out), Citadel (keep, drift) and Rosetta (document). Concept and decisions BP1-BP12:
https://claude.ai/artifact/8PYfvHPm17KsooerLU95Ar (scalio-docs concepts/governance-catalog.md, ADR 0027).
Format contract: scalio-docs interfaces/catalog-format.md.
Nothing in this package is secret. The catalog content lives in the private repo scalio_blueprint; the signing
seed stays in 1Password.
Documents
| Kind | What | Owner |
|---|---|---|
ResourceType |
Something in a tenant (name as in Microsoft365DSC/UTCM, e.g. AADConditionalAccessPolicy): properties, read/write endpoint, permission |
Scalio |
Control |
One security statement: match, desired values, parameters, severity, texts DE/EN, frameworks | Scalio, MSP, customer |
Baseline |
Versioned bundle of controls with default values | Scalio, MSP |
Blueprint |
Building plan of a whole environment: variables, nodes in catalog resource types with dependsOn, at most one baseline (ADR 0035) |
Scalio (templates), customer (in Foundry) |
Assignment |
Tenant -> baseline@version, mode, channel, values, exceptions, own controls | customer |
Pack |
Header of a signed package | Scalio, MSP |
References: id (highest), id@1.2.3 (exact), id@^1.2 (same major, at least 1.2). Assignments name an exact
version.
Use in an app
from scalio_catalog import Catalog, compare, effective, plan, plan_upgrade, summary, verify
catalog = verify(package_bytes, TRUSTED_CATALOG_KEYS) # signed pack from Compass or the image
eff = effective(catalog, assignment) # baseline + customer layer, master untouched
results = compare(eff, {c.id: read_resource(c) for c in eff.controls}) # app reads the tenant
print(summary(results)) # {"counts": ..., "score": 92}
plan = plan_upgrade(catalog, assignment, "scalio.kmu-standard@1.5.0") # three-way, conflicts listed
rollout = plan(catalog, "scalio.project-workspace@1.0.0", {"project": "Apollo"}, tenant="contoso.ch")
for node in rollout.nodes: # build order; ${node} refs via resolve_refs()
...
assignment = rollout.assignment # baseline of the blueprint, for Citadel/Rosetta
compare statuses: ok, drift, missing, excepted (all deviations covered by an active exception),
not_read, removed (customer removed it), incomplete (a value is missing).
Values (later wins): control default, baseline parameters, value on the baseline entry, assignment values,
assignment controlValues.<control>. Exceptions need a reason, end date and approver; expired ones count as
deviations again and are listed in problems; at most 366 days when approvedAt is given.
Command line
scalio-catalog validate <folders...> check structure, references, texts
scalio-catalog effective <assignment> <folders...> [--today 2026-11-01]
scalio-catalog plan <blueprint> <folders...> --set project=Apollo --tenant contoso.ch
scalio-catalog pack <folder> -o dist sign (CATALOG_SIGNING_KEY or --key-file), --base for other packs
scalio-catalog verify <file> --key <public> check a package
scalio-catalog keygen new key: seed to 1Password, public key into the apps
scalio-catalog schema > catalog-v2.schema.json
Editing in VS Code
Install the YAML extension (Red Hat) and add to the workspace settings of scalio_blueprint:
{ "yaml.schemas": { "./schema/catalog-v2.schema.json": ["controls/**/*.yaml", "baselines/**/*.yaml",
"resource-types/**/*.yaml", "blueprints/**/*.yaml", "pack.yaml"] } }
(scalio-catalog schema > schema/catalog-v2.schema.json writes the file.)
Release
Bump pyproject.toml and __version__, CHANGELOG line, merge, then "Freigeben" in the Scalio Dev cockpit (or
Actions -> Publish with the version). Publishes to PyPI via trusted publishing (no token).
Metadata
Release files for scalio-catalog 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| scalio_catalog-0.2.0.tar.gz | 28.4 kB | With provenance | Details for scalio_catalog-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| scalio_catalog-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for scalio_catalog-0.2.0-py3-none-any.whl |
Total release size: 53.1 kB
Release files / scalio_catalog-0.2.0.tar.gz
| Download URL | scalio_catalog-0.2.0.tar.gz |
|---|---|
| Size | 28.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4977c371b13df5865e197e0c0910cb5f1756cc93e251e72aa4e31e0bdbd3281c
|
|
BLAKE2b-256 checksum How to use checksums |
f6fa64770aae3171010f2967f2891620be3ef981c1fb88188cfde03b3e0c4a04
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / scalio_catalog-0.2.0-py3-none-any.whl
| Download URL | scalio_catalog-0.2.0-py3-none-any.whl |
|---|---|
| Size | 24.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f323d3a6a5dca68f263ead271b90f952fd3e1d113d3bcc3fec2116ce8d90889b
|
|
BLAKE2b-256 checksum How to use checksums |
7e0bccf56e995dbdb3c05d565fb150d30ac51f4874baae770b4f6bee75785ee4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logSecurity for scalio-catalog 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for scalio_catalog-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.