Skip to main content

Governance PDS

The Governance PDS is a dedicated Personal Data Server that stores all community-approved governance data. This makes Chive's governance ATProto-native and portable.

Overview​

did:plc:chive-governance

The Governance PDS stores:

  • Authority records
  • Facet definitions
  • Field taxonomy
  • Organizational records
  • Approved proposals
  • Reconciliation history

Why a Governance PDS?​

ATProto-native benefits​

BenefitDescription
PortabilityGovernance data can move to different hosts
VerifiabilityAll records are cryptographically signed
InteroperabilityAny ATProto AppView can index the data
TransparencyPublic, auditable record of decisions

Comparison with traditional approaches​

ApproachGovernance PDSCentral database
Data locationDecentralized PDSChive servers only
OwnershipCommunityPlatform
PortabilityFull export/importRequires migration
VerificationCryptographicTrust-based
FailoverAny compliant hostSingle point of failure

Record types​

Graph nodes​

Knowledge graph nodes stored in the Governance PDS:

// Collection: pub.chive.graph.node
interface GraphNodeDocument {
$type: 'pub.chive.graph.node';
id: string;
kind: 'type' | 'object';
subkind: string;
label: string;
alternateLabels: string[];
description: string;
externalIds: ExternalId[];
status: 'proposed' | 'provisional' | 'established' | 'deprecated';
createdAt: string;
updatedAt: string;
}

interface ExternalId {
source: string; // 'wikidata', 'lcsh', 'viaf', 'fast', 'orcid', 'ror'
value: string;
}

Subkind values by kind:

KindSubkinds
typeendorsement-kind, license, methodology, paper-type
objectfield, facet, institution, author, eprint

Graph edges​

Relationships between nodes are stored as separate edge records:

// Collection: pub.chive.graph.edge
interface GraphEdgeDocument {
$type: 'pub.chive.graph.edge';
sourceUri: string;
targetUri: string;
relationSlug: 'broader' | 'narrower' | 'related' | 'sameAs';
weight: number;
status: 'proposed' | 'established' | 'deprecated';
createdAt: string;
}

Approved proposals​

// Collection: pub.chive.governance.approvedProposal
interface ApprovedProposalDocument {
$type: 'pub.chive.governance.approvedProposal';
id: string;
originalProposalUri: string;
type: ProposalType;
title: string;
changes: ProposalChanges;
votingSummary: VotingSummary;
approvedAt: string;
enactedAt: string;
}

Reconciliation records​

// Collection: pub.chive.governance.reconciliation
interface ReconciliationDocument {
$type: 'pub.chive.governance.reconciliation';
authorityId: string;
externalSource: string;
externalId: string;
confidence: number;
evidenceType: string;
reconciler: string; // DID of person/automated
timestamp: string;
}

Architecture​

Cache strategy​

Multi-level caching​

LevelStorageTTLPurpose
L1Redis5 minutesHot data, low latency
L2Governance PDSAuthoritativeSource of truth fallback
L3PostgreSQLUntil invalidationIndexed for queries

Cache invalidation​

When governance data changes:

Security​

Access control​

OperationWho can perform
Read recordsAnyone
Create nodeGraph editors
Update nodeGraph editors (via proposal)
Create edgeGraph editors
Update edgeGraph editors (via proposal)
Sign recordsAuthorized administrators

Audit trail​

All changes include provenance:

{
"record": {},
"sig": "z...",
"provenance": {
"proposal": "at://did:plc:.../pub.chive.graph.proposal/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"approvedAt": "2025-01-15T10:30:00Z",
"approvedBy": "did:plc:admin..."
}
}

Operations​

Backup and recovery​

# Export full repository
atproto repo export did:plc:chive-governance --output backup.car

# Verify integrity
atproto repo verify backup.car

# Restore to new PDS (if needed)
atproto repo import backup.car --target new-pds.example.com

Monitoring​

Metrics tracked:

  • Record count by type
  • Write latency
  • Firehose lag
  • Cache hit rates
  • Sync status with AppView

Failover​

If the Governance PDS becomes unavailable:

  1. AppView continues operating from cached data
  2. Write operations queued
  3. Failover PDS activated from most recent backup
  4. DNS updated to point to failover
  5. Queued writes replayed

Migration path​

The Governance PDS is transitioning to become the authoritative source for all governance data. During the transition, both PostgreSQL and the Governance PDS receive writes. The target state is for the Governance PDS to be primary, with PostgreSQL serving only as an indexed cache.

API access​

Read from Governance PDS​

GET https://pds.chive.pub/xrpc/com.atproto.repo.listRecords?
repo=did:plc:chive-governance&
collection=pub.chive.governance.authorityRecord&
limit=50
GET /xrpc/pub.chive.graph.getAuthority?id=authority-123

The AppView provides:

  • Faster response (cached)
  • Additional computed fields
  • Cross-references resolved
  • Search capability

Next steps​