Skip to main content

Proposals

Proposals are the primary mechanism for changing the knowledge graph, authority records, and governance policies. This document covers proposal types, the submission process, and lifecycle.

Proposal types

Field proposals

Changes to the knowledge graph taxonomy:

TypeDescriptionThreshold
CreateAdd a new field to the taxonomy67%, 5+ votes
UpdateModify field name, description, or relationships60%, 3+ votes
MergeCombine two or more fields into one67%, 5+ votes
DeprecateMark a field as obsolete75%, 7+ votes

Facet proposals

Changes to the PMEST classification system:

TypeDescriptionThreshold
Create facet valueAdd a new value to a facet60%, 3+ votes
Update facet valueModify facet value metadata60%, 3+ votes
Deprecate facet valueMark a facet value as obsolete67%, 5+ votes

Authority proposals

Changes to authority records:

TypeDescriptionThreshold
Create authorityAdd a new authority record75%, 7+ votes
Update authorityModify authority record60%, 3+ votes
Merge authoritiesCombine duplicate records75%, 7+ votes
Link externalAdd link to Wikidata, LCSH, etc.60%, 3+ votes

Tag promotion

Elevating user tags to authority terms:

PhaseDescription
Automatic nominationTag used by 3+ users on 10+ preprints
Community voteStandard proposal process (60%, 3+ votes)

Creating a proposal

Required fields

interface Proposal {
type: ProposalType;
title: string; // Concise summary (max 100 chars)
description: string; // Detailed rationale (500-2000 words)
changes: ProposalChanges; // Specific modifications
evidence?: Evidence[]; // Supporting materials
relatedProposals?: string[]; // Links to related proposals
}

Field proposal example

{
"type": "create_field",
"title": "Add Quantum Machine Learning field",
"description": "Quantum Machine Learning (QML) is an emerging interdisciplinary field at the intersection of quantum computing and machine learning. The field has grown significantly since 2018, with dedicated conferences (QML Workshop at NeurIPS, QTML) and journals (Quantum Machine Intelligence). This proposal adds QML as a child of both cs.QC (Quantum Computing) and cs.LG (Machine Learning).",
"changes": {
"action": "create",
"field": {
"name": "Quantum Machine Learning",
"id": "cs.QML",
"description": "Algorithms and theory combining quantum computing with machine learning techniques",
"aliases": ["QML"],
"parentFields": ["cs.QC", "cs.LG"],
"relatedFields": ["cs.AI", "quant-ph"],
"wikidataId": "Q96207645"
}
},
"evidence": [
{
"type": "publication_count",
"source": "OpenAlex",
"value": 4523,
"asOf": "2025-01-01"
},
{
"type": "conference",
"name": "QTML 2024",
"url": "https://qtml2024.org"
}
]
}

Proposal lifecycle

┌─────────┐     ┌────────────┐     ┌────────┐     ┌─────────┐
│ Draft │────►│ Discussion │────►│ Voting │────►│ Outcome │
└─────────┘ └────────────┘ └────────┘ └─────────┘
│ │ │ │
│ │ │ │
▼ ▼ ▼ ▼
Author Comments Tallied Enacted
refines & revisions votes or archived

Phase 1: Draft

Duration: Unlimited (until submitted)

  • Author creates and refines proposal
  • Can save drafts before submission
  • Not visible to community

Phase 2: Discussion

Duration: 7 days (14 for controversial)

Activities:

  • Community members comment
  • Author can revise proposal
  • Related discussions linked
  • Expert opinions solicited

Revisions during discussion:

  • Minor edits allowed anytime
  • Major changes restart discussion period
  • Changes logged in revision history

Phase 3: Voting

Duration: 5 days (plus extensions if needed)

  • No further changes to proposal
  • Votes cast by eligible users
  • Real-time tally displayed
  • Quorum monitored

Phase 4: Outcome

ResultCriteriaNext steps
ApprovedThreshold met, quorum metChanges enacted
RejectedThreshold not metArchived for 6 months
ExpiredQuorum not met after extensionsCan resubmit
WithdrawnAuthor withdrawalArchived immediately

After approval

When a proposal is approved:

  1. Governance PDS update: Changes written to the Governance PDS
  2. Cache invalidation: Redis cache cleared for affected records
  3. Search reindex: Elasticsearch updated with new classifications
  4. Graph update: Neo4j updated with new nodes/relationships
  5. Notification: Affected users notified

Timeline:

  • Most changes: Within 1 hour
  • Authority record changes: Within 24 hours (manual review)
  • Major taxonomy changes: Within 7 days (staged rollout)

Best practices

Writing effective proposals

  1. Be specific: Clearly state what changes and why
  2. Provide evidence: Link to publications, conferences, or databases
  3. Address objections: Anticipate concerns in the description
  4. Scope appropriately: One logical change per proposal
  5. Use plain language: Avoid jargon; explain technical terms

During discussion

  • Respond promptly to questions
  • Incorporate constructive feedback
  • Thank contributors for engagement
  • Avoid arguing; let votes decide

Common rejection reasons

ReasonHow to avoid
Insufficient evidenceProvide publication counts, conferences, expert endorsements
Overlap with existing fieldsSearch thoroughly before proposing
Too broad/narrowConsult similar fields for appropriate scope
Poor descriptionHave someone else review before submitting
Controversial without consensusBuild support during discussion phase

Special proposal types

Batch proposals

For related changes that should be decided together:

{
"type": "batch",
"title": "Reorganize Computational Biology subfields",
"proposals": [
{ "type": "create_field", ... },
{ "type": "update_field", ... },
{ "type": "merge_fields", ... }
],
"rationale": "These changes are interdependent and should be evaluated as a whole"
}

Batch proposals:

  • Voted on as a single unit
  • Use highest threshold among component proposals
  • All succeed or all fail

Amendment proposals

To modify an in-progress proposal:

{
"type": "amendment",
"targetProposal": "proposal-123",
"changes": {
"field.description": "Updated description text..."
}
}

Amendments:

  • Only during discussion phase
  • Require original author approval or 60% vote
  • Reset discussion period if substantial

Proposal API

Create proposal

POST /xrpc/pub.chive.governance.createProposal

{
"type": "create_field",
"title": "...",
"description": "...",
"changes": { ... }
}

List proposals

GET /xrpc/pub.chive.governance.listProposals?status=voting&type=field

Get proposal

GET /xrpc/pub.chive.governance.getProposal?id=proposal-123

Cast vote

POST /xrpc/pub.chive.governance.castVote

{
"proposalId": "proposal-123",
"vote": "approve",
"comment": "Well-researched proposal with clear evidence."
}

Next steps