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 isprotocol_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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pgc_domains-2.0.1.tar.gz.
File metadata
- Download URL: pgc_domains-2.0.1.tar.gz
- Upload date:
- Size: 18.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cf9fd95cef31b9c92652e85eefd812148a2eb15f2129b9bbf1da0d43c18be31
|
|
| MD5 |
0eb5c2fb340c690a3d56acd1236e13f8
|
|
| BLAKE2b-256 |
8b2306c51e94ff0584463ac419da7954c3352ac76114184d6ab3cf027009109d
|
File details
Details for the file pgc_domains-2.0.1-py3-none-any.whl.
File metadata
- Download URL: pgc_domains-2.0.1-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c3117f339f8bf2ef7f7ccaff4c8a3a95584a8237be79b0e19f057211e01858f
|
|
| MD5 |
c318478cd0b2e913391a8a3b6aa1e0ce
|
|
| BLAKE2b-256 |
db60d59ed7c38e3a5fdd12bf8c047be75b1c7bf9e6f60bd8898ad9e43add9fae
|