docs: CLAUDE.md update + infrastructure schema + README

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Tyler King 2026-03-18 15:48:05 -04:00
parent 98aa2b0ec7
commit 22eb08f25d
3 changed files with 188 additions and 2 deletions

View file

@ -15,13 +15,27 @@ Consumed by:
| Bascule | `bascule/v1/` | 4 | Session, command, gateway, ceremony | | Bascule | `bascule/v1/` | 4 | Session, command, gateway, ceremony |
| Workspace | `workspace/v1/` | 1 | Workspace management | | Workspace | `workspace/v1/` | 1 | Workspace management |
| Runner | `runner/v1/` | 2 | Pipeline execution | | Runner | `runner/v1/` | 2 | Pipeline execution |
| Schematic | `schematic/v1/` | 1 | Composite meta-artifacts | | Schematic | `schematic/v1/` | 2 | Composite meta-artifacts, infrastructure offerings |
| Attestation | `attestation/v1/` | (if present) | Substrate attestation types |
## Versioning ## Versioning
Proto files use domain-versioned paths (e.g., `quartermaster/v1/`). Breaking changes require a new version directory (e.g., `quartermaster/v2/`). Proto files use domain-versioned paths (e.g., `quartermaster/v1/`). Breaking changes require a new version directory (e.g., `quartermaster/v2/`).
## Build / Lint
```bash
# Lint protos (requires buf)
buf lint
# Breaking change detection
buf breaking --against '.git#branch=main'
```
CI is configured in `.forgejo/workflows/ci.yaml` (buf lint + breaking change detection).
## Related Repos ## Related Repos
- `~/projects/guildhouse-platform/` -- Rust services that implement these APIs - `~/projects/guildhouse/` -- Rust services that implement these APIs
- `~/projects/guildhouse-dashboard/` -- Django dashboard that calls these APIs - `~/projects/guildhouse-dashboard/` -- Django dashboard that calls these APIs
- `~/projects/guildhouse-spire-plugins/` -- Go plugins (copies protos for local codegen)

30
README.md Normal file
View file

@ -0,0 +1,30 @@
# Guildhouse Proto
Canonical Protocol Buffer definitions for all Guildhouse gRPC services.
## Domains
| Domain | Directory | Purpose |
|--------|-----------|---------|
| Quartermaster | `quartermaster/v1/` | Governance, registry, notary, credentials, capabilities, pipelines |
| Bascule | `bascule/v1/` | Session, command, gateway, ceremony |
| Workspace | `workspace/v1/` | Workspace management |
| Runner | `runner/v1/` | Pipeline execution |
| Schematic | `schematic/v1/` | Composite meta-artifacts, infrastructure offerings |
## Consumers
- **guildhouse** (Rust/tonic-build) — via git submodule
- **guildhouse-dashboard** (Python/grpcio-tools) — via git submodule
- **guildhouse-spire-plugins** (Go) — copies proto files for local codegen
## Lint
```bash
buf lint
buf breaking --against '.git#branch=main'
```
## License
Apache License 2.0

View file

@ -0,0 +1,142 @@
syntax = "proto3";
package schematic.v1;
import "google/protobuf/timestamp.proto";
// InfrastructureOffering describes a deployable platform configuration
// available in the Guildhouse catalog. Entities subscribe to offerings
// via accords to provision sites.
message InfrastructureOffering {
string name = 1;
string version = 2;
string description = 3;
OSSpec os = 4;
KubernetesSpec kubernetes = 5;
HardwareRequirements hardware = 6;
GovernanceSpec governance = 7;
NetworkSpec network = 8;
CostModel cost = 9;
string tree_hash = 10;
string status = 11; // draft, published, deprecated
google.protobuf.Timestamp created_at = 12;
google.protobuf.Timestamp published_at = 13;
}
message OSSpec {
// "substrate-nos", "rhel", "ubuntu", "fedora", "debian"
string distribution = 1;
string version = 2;
// "x86_64", "aarch64"
string arch = 3;
// "yocto", "kickstart", "cloud-init", "pxe"
string install_method = 4;
string image_url = 5;
}
message KubernetesSpec {
// "k3s", "kubeadm", "none"
string distribution = 1;
string version = 2;
// "cilium", "kedge", "calico"
string cni = 3;
// "k3s", "kubeadm", "none"
string bootstrap_provider = 4;
}
message HardwareRequirements {
int32 min_cpu_cores = 1;
int64 min_memory_mb = 2;
int64 min_disk_gb = 3;
// "ipmi", "redfish", "idrac", "ilo"
string bmc_type = 4;
int32 min_nics = 5;
bool tpm_required = 6;
}
message GovernanceSpec {
// "basic", "standard", "strict"
string conformance_level = 1;
repeated CeremonyRequirement ceremonies = 2;
}
message CeremonyRequirement {
string operation = 1; // "provision", "upgrade", "decommission"
string tier = 2; // "single", "dual", "multi-party"
}
message NetworkSpec {
// "overlay", "underlay", "dual"
string mode = 1;
bool wireguard_tunnel = 2;
bool vpp_dataplane = 3;
// VXLAN VNI range (if overlay)
int32 vni_start = 4;
int32 vni_end = 5;
}
message CostModel {
// Monthly cost estimate in cents (USD)
int64 monthly_cost_cents = 1;
string billing_entity = 2;
}
// Service for managing InfrastructureOfferings in the catalog.
service InfrastructureOfferingService {
rpc CreateOffering(CreateOfferingRequest) returns (CreateOfferingResponse);
rpc GetOffering(GetOfferingRequest) returns (GetOfferingResponse);
rpc ListOfferings(ListOfferingsRequest) returns (ListOfferingsResponse);
rpc PublishOffering(PublishOfferingRequest) returns (PublishOfferingResponse);
rpc SubscribeToOffering(SubscribeRequest) returns (SubscribeResponse);
}
message CreateOfferingRequest {
InfrastructureOffering offering = 1;
}
message CreateOfferingResponse {
string name = 1;
string version = 2;
string tree_hash = 3;
}
message GetOfferingRequest {
string name = 1;
string version = 2;
}
message GetOfferingResponse {
InfrastructureOffering offering = 1;
}
message ListOfferingsRequest {
string status_filter = 1; // "" for all, "published", "draft"
string os_filter = 2; // filter by OS distribution
}
message ListOfferingsResponse {
repeated InfrastructureOffering offerings = 1;
}
message PublishOfferingRequest {
string name = 1;
string version = 2;
}
message PublishOfferingResponse {
string tree_hash = 1;
string status = 2;
}
message SubscribeRequest {
string offering_name = 1;
string offering_version = 2;
string entity_id = 3;
string accord_id = 4;
}
message SubscribeResponse {
string subscription_id = 1;
string status = 2;
}