Skip to main content

business_domains

Real business work, declared as governed protocol.

Registering a participant, cataloguing a book, licensing an AI agent — work that would be worth doing whether or not this platform existed. Each domain here is a directory of declarations: a workflow graph, the contracts its nodes name, the intents that admit a request, the events it announces, the store it writes to. No domain implements admission, routing, persistence, auditing or refusal. It declares them, and the platform enforces what it declared.

New here? Start with ARCHITECTURE.md — what this repository is, what it owns, and a hands-on walkthrough. For the whole picture, see the organization profile.


The domains

Domain Subdomains What it does
blockchain identity, wallet Register a participant, then accept or reject them — keeping a durable record of what they registered with. An accepted person is then given exactly one wallet, whose creation is recorded as a moment on its own trail. Reachable over HTTP and the command line, with a web client.
book_library_mgmt catalog Register works, editions and physical copies; retire and reinstate them; update bibliographic information; search. Ten workflows — the largest surface here — of which six announce the business moments they complete.
ai_governance agent_governance, ai_licensing Admit or deny an AI agent's action; provision, deny and reclaim licences. Two subdomains sharing one namespace.

A domain is a namespace; a subdomain is a division within it. ai_governance is the case that makes the distinction concrete — two subdomains, one compiled domain, neither a fork of the other.

Maturity differs, and it is stated rather than implied. blockchain::identity is functionally complete; two of its validated criteria are not exercised, and both wait on a function that does not exist yet — a timed test, and the transaction half of the wallet claim. blockchain::wallet is delivered and validated, and it is the domain that demonstrates consulting another subdomain's records without writing them. book_library_mgmt now announces: six of its ten acts emit the moments they complete, from the ending that completes them. ai_governance carries no change dossier — deliberately — and is the least exercised.

The wallet is also where a defect and its repair are on the record. Its validation once read 7/9 because the suite registered the same people identity's suite registers, so a shared data root left the unverified-person criterion testing someone already accepted. The suite now seeds people of its own. Both blockchain suites run into one data root, because a domain has one place its records live.

Where this sits

software_governance          conformance_workloads       business_domains
what is GOVERNED             what PROVES the guarantee   what is DONE  ← here
       └──────────────────────────┼──────────────────────────┘
                                  │
                          compiler → assembler
                                  │
                         ┌────────▼────────┐
                         │ sealed snapshot │
                         └────┬───────┬────┘
                              ▼       ▼
                         runtime   inspector

A domain is compiled against an already-compiled governance surface. Governance is never edited to admit a domain — compiling one leaves the platform's identity unchanged. A domain declares its own sources in its own build manifest, so adding one is a sibling directory and nothing upstream is touched.

Run one

./blockchain/client/serve.sh          # http://localhost:8000

Register a name and contact address, then verify that address — accepting or rejecting it. The same path without the browser:

curl -s -X POST http://localhost:8000/blockchain -H 'Content-Type: application/json' \
  -d '{"operation":"blockchain.register_actor",
       "params":{"name":"Ada","contact_address":"ada@example.com"}}'
{ "outcome": "SUCCESS", "result_class": "SUCCESS",
  "result": { "contact_address": "ada@example.com",
              "occurrence": "ACTOR_REGISTERED_UNVERIFIED", "sequence_number": 1 },
  "evidence": [ "trace:traces/blockchain/WF_REGISTER_ACTOR_V0/…" ] }

Accepting an unknown address returns a governed NOT_FOUND without writing anything; registering twice succeeds twice and advances the sequence, because registration is idempotent by declaration. Every response points at the trace for that exact run.

To run a workflow directly against the sealed snapshot, without any web surface:

cd ../protocol_runtime
./run.sh run --wf blockchain::WF_REGISTER_ACTOR_V0 \
             --payload ../business_domains/blockchain/testbed/identity/test_payloads/01_register_actor.json \
             --data-root /tmp/pgc_instance

Layout

blockchain/
  registry/identity/     workflows · intents · contracts · events · actors ·
                         storage structure · runtime bindings · transport contracts
  client/                web client, HTTP binding table, composition launcher
  cr_dossiers/           the governed record of each change, with its baseline pin
  testbed/               payloads, including ones that must be refused

book_library_mgmt/       same shape; subdomain `catalog`; plus implementation/ transforms
ai_governance/           same shape; two subdomains in one namespace

A change to a domain is itself governed

Each domain carries change dossiers — the record of a change from the business problem as stated (P0) through to the authoring mandate (P8), each phase admissible before the next may be authored. Every dossier pins the baseline it was approved against, and that pin stays historical: a completed change is never re-pinned forward.

A change need not author anything. One dossier here produces a two-line diff — a defect correction, fully evidenced, every phase admissible. A lifecycle that can only describe creation cannot describe maintenance.

What this repository is not

  • Not the platform. The governance surface is software_governance; the runtime that executes these domains is protocol_runtime, and it contains no knowledge of any domain here.
  • Not a set of examples. Conformance workloads (conformance_workloads) exist to prove a guarantee; these exist because the work is worth doing. That both compile by the identical path, with no privilege on either side, is the claim.
  • Not a place for platform mechanisms. When a domain needs something neutral the substrate lacks, the substrate gains it — a domain that compensates with a private rule produces a promise stated nowhere and copied everywhere.

Rules

  • A domain declares; it does not implement admission, routing, persistence or auditing.
  • No import of the compiler, the assembler, the runtime, or another domain. Implementations are leaves; cross-domain reference happens through compiled identity.
  • Capability transforms are pure and deterministic. Every effect is a declared capability.
  • All references are by fully-qualified identity, resolved at compile time. No short names.

License

Apache-2.0. See LICENSE and NOTICE.

Download files

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

Source Distribution

pgc_domains-2.0.0.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

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

pgc_domains-2.0.0-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pgc_domains-2.0.0.tar.gz
Algorithm Hash digest
SHA256 d3c426b28456c563c828745d8037b5ac57dfcdbfaea7d8653d8d672a6773aad4
MD5 e177596c0007ec2719c4a4e3eeebcb4e
BLAKE2b-256 50385abc215d7e1e2980a51d71e8c08c0f17ae27b559ce92b21574585a539be2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pgc_domains-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 48801dda6fd7adc1f24aa5b077df3807155c090ad1981d3226c6c6ce33e5402e
MD5 d1ee89a4855c769bc9d1760ea0fe412d
BLAKE2b-256 d87f3abeae3e173502e2bae140a183b230a63600aa5872f928686dc5a8f2031f

See more details on using hashes here.

Release history Release notifications | RSS feed

2.0.1

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