Skip to main content

software_governance

The normative platform surface — what a conforming PGC system is allowed to be.

Every governed behavior in a PGC composition resolves, eventually, against a declaration in this repository. It holds the constitutions, invariants, structures, schemas, surface contracts, reserved vocabulary, and the neutral capability transforms and side effects that no single domain owns and every domain depends on.

It is declaration first: constitutions, invariants, structures, schemas and vocabulary that the sibling toolchain reads. It also carries the capability transform and side-effect implementation modules a sealed snapshot binds by fully qualified module path at execution — the only executable code here, and it exists because a snapshot names it.

Install

pip install pgc-governance

This package carries declarations and the implementation modules a sealed snapshot binds at execution. It provides no command of its own — the toolchain packages read it.

Where it fits

A composition is assembled from repositories that each own one concern:

software_governance    the normative surface every composition rests on   (this repo)
conformance_workloads  workloads that prove conformance
business_domains       domains built on the surface

protocol_compiler      source      → compiled projections
snapshot_assembler     projections → assembled snapshot
protocol_runtime       snapshot    → execution
snapshot_inspector     snapshot    → inspection

This repo is the floor of that stack. A domain does not import it — a domain resolves against it, and the compiler is what performs the resolution. If a reference in any domain fails to resolve, either the platform is missing an artifact or the domain leaked one it should have declared itself.

A platform is a composition, never a repository. A Profiled Normative Platform is this surface plus selected workloads plus an optional business domain, per a conformance profile. There are as many platforms as there are profiles.

What it holds

Path Contents
registry/<namespace>/ The governance surface, one directory per namespace — actor, artifact, authority, conformance, execution, governance, lifecycle, structure, transport, vocabulary and others. Each holds its own constitutions, invariants, structures, surface contracts and reserved vocabulary
registry/schema/ SCHEMA_*.json — the declaration substrate, not a namespace of its own
capability_transforms/registry/ Neutral, domain-agnostic capability transform declarations
capability_side_effects/registry/ Neutral capability side-effect declarations
doc/ The surface map, the governance doctrine, and the rulings that settled contested questions

Artifacts declare namespaces of the form fb.<concern>structure::STRUCTURE_IDENTITY_V0, authority::…. fb is a federation boundary: a declaration that a distinct governance authority has jurisdiction over a named set of protocol semantics. It is not a folder, a package, or a deployment unit — see registry/federation/constitutions/CONSTITUTION_FEDERATION_BOUNDARY_V0.md. Domains declare their own namespaces (blockchain::, book_library_mgmt::) and never declare into a platform boundary.

What binds a contributor

Identity is declared, not located. An artifact's namespace comes from the fqdn: key in its own ## Machine block, never from the directory it sits in. The registry is organised one directory per namespace, so the correspondence is currently one-to-one — a navigation convenience, not the source of identity. A file may move without changing what the artifact is.

No code, ever. Normative declarations only: .md protocol source and .json schemas. A directory that would hold .py does not belong in this repository. The compiler, assembler, runtime and inspector that read this surface are siblings, and none of them is vendored here.

Immutable within a spec version. A domain extends the platform by adding artifacts in its own namespace; it never modifies one here. A behavior change is a new version, never an in-place edit.

A namespace is an ownership boundary. Create one only for a first-class concern that can evolve independently and owns a coherent contract — never because several artifacts happen to reference the same artifact kind.

How completeness is verified

The surface is complete and self-supporting iff the external compiler compiles it to a closed snapshot — every reference resolves, zero unresolved FQDNs. Nothing inside this repository can establish that, which is the point: the engine is pointed at the surface and never lives inside it.

protocol_compiler/compile.sh <this repo>

Then diff the resulting closure against doc/GOVERNANCE_SURFACE_MAP.md §6. An unresolved reference is either a missing platform artifact or a leaked domain reference — resolved by adding the former or moving the latter into the domain that owns it.

License

See LICENSE and NOTICE.


The package family

Package Repository Role
pgc-compiler protocol_compiler declarations → compiled projections
pgc-assembler snapshot_assembler projections → sealed snapshot
pgc-runtime protocol_runtime snapshot → governed execution
pgc-inspector snapshot_inspector snapshot → read-only inspection
pgc-transformation transformation change request → protocol artifacts
pgc-governance software_governance the governance surface and its capability implementations
pgc-workloads conformance_workloads the workloads that make conformance observable
pgc-domains business_domains the business domain implementations the composed snapshot binds

pip install pgc brings in the whole family.

Installing the toolchain is one of two steps. The compiler resolves the governance surface from PGC_PLATFORM_ROOT — fail-hard, cwd-independent, zero inference — so the declarations come from a repository you point at, never from a wheel. A registry inside a package would be a second governance surface competing with the repository's, and a build could then be governed by a stale copy.

git clone https://github.com/protocol-governed-computing/software_governance
export PGC_PLATFORM_ROOT=$PWD/software_governance
pgc            # reports what is installed and whether the anchor resolves

PGC_BUILD_ROOT (compiled output, keeping the governance repo read-only) and PGC_DOMAIN_ROOTS (additional domains contributing their own registry/structures) are optional.

Versioning. Two schemes, and the published version follows the second.

  • Internal — each repository's VERSION file, a monotonic composition ordinal. PGC versions the composition rather than each repo: they release together and the governance closure forces lockstep, so the ordinal names which composition a repo belongs to. Development happens on dev/<N> and each cycle is tagged release-<N>. This is not published.
  • PublicPUBLIC_VERSION, tagged on every component repository. The platform is at v2.

The published version is the public one: v2 is 2.0.0. The standard the packages implement is a separate artifact on its own track and is not this number.

The standard these packages implement is published separately: https://doi.org/10.5281/zenodo.22150616

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pgc_governance-2.0.0.tar.gz (49.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pgc_governance-2.0.0-py3-none-any.whl (77.6 kB view details)

Uploaded Python 3

File details

Details for the file pgc_governance-2.0.0.tar.gz.

File metadata

  • Download URL: pgc_governance-2.0.0.tar.gz
  • Upload date:
  • Size: 49.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.10

File hashes

Hashes for pgc_governance-2.0.0.tar.gz
Algorithm Hash digest
SHA256 892de1f2cf99bbd5ed225154425d875422022748a3b5c2bc363f41c0d438371f
MD5 1d6d4bfbebb5af116bb82c536c26f000
BLAKE2b-256 450ae0fcdd2f1ef2d5c898f0a2025d1271165a2a8ec0ef542c3d5752013b2324

See more details on using hashes here.

File details

Details for the file pgc_governance-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: pgc_governance-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 77.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.10

File hashes

Hashes for pgc_governance-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e97c0b2c0508f0f5f8994848af80c7eabfed565215bb0751fee6abfd8621adfb
MD5 fa47cc6b5c2d8cc52e71b190c2554d0c
BLAKE2b-256 47d5f75ad4e9230b37067da759af0b2938c641cda72ecdd1dce1203836855c2b

See more details on using hashes here.

Release history Release notifications | RSS feed

3.0.0

2 files

This release

2.0.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page