Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIP-0136? | Governance metadata - Constitutional Committee vote rationale #878

Open
wants to merge 21 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
210 changes: 210 additions & 0 deletions CIP-0136/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
---
CIP: 136
Title: Governance metadata - Constitutional Committee votes
Category: Metadata
Status: Proposed
Authors:
- Ryan Williams <[email protected]>
- Eystein Magnus Hansen <[email protected]>
Implementors: []
Discussions:
- https://github.com/cardano-foundation/CIPs/pull/878
Created: 2024-07-17
License: CC-BY-4.0
---

## Abstract

The Conway ledger era ushers in on-chain governance for Cardano via [CIP-1694 | A First Step Towards On-Chain Decentralized Governance](https://github.com/cardano-foundation/CIPs/blob/master/CIP-1694/README.md), with the addition of many new on-chain governance artifacts.
Some of these artifacts support the linking of off-chain metadata, as a way to provide context to on-chain actions.

The [CIP-100 | Governance Metadata](https://github.com/cardano-foundation/CIPs/tree/master/CIP-0100) standard provides a base framework for how all off-chain governance metadata can be formed and handled.
This standard was intentionally limited in scope, so that it can be expanded upon by more specific subsequent CIPs.

This proposal aims to provide a specification for the off-chain metadata vocabulary that can be used to give context to Constitutional Committee (CC) votes.

## Motivation: why is this CIP necessary?

The high-level motivation for this proposal is to provide a standard which improves legitimacy of Cardano's governance system.

### Clarity for governance action authors

Governance action authors are likely to have dedicated a significant amount of time to making their action meaningful and effective (as well as locking a significant deposit).
If this action is not able to be ratified by the CC, it is fair for the author to expect a reasonable explanation from the CC.

Without reasonable context being provided by the CC votes, authors may struggle to iterate upon their actions, until they are deemed constitutional.
This situation could decrease perceived legitimacy in Cardano's governance.

### Context for other voting bodies

By producing a standard we hope to encourage all CC members to attach rich contextual metadata to their votes.
This context should show CC member's decision making is fair and reasonable.

This context allows the other voting bodies to adequately check the power of the CC.

### CC votes are different to other types of vote

The CC and their votes are fundamentally very different from the other voting bodies.
This makes reusing standards from these voting bodies problematic.

### Inclusion within interim constitution

Cardano's [Interim Constitution Article VI Section 4](https://github.com/IntersectMBO/interim-constitution/blob/75155526ce850118898bd5eacf460f5d68ceb083/cardano-constitution-0.txt#L330) states:

```txt
Constitutional Committee processes shall be transparent.
The Constitutional Committee shall publish each decision.
When voting no on a proposal, the Committee shall set forth the basis
for its decision with reference to specific Articles of this Constitution
that are in conflict with a given proposal.
```

This mandates that the CC must provide rationale for at least `no` votes.
Ryun1 marked this conversation as resolved.
Show resolved Hide resolved
Specifying a structure and common vocabulary for this improves the efforts to be transparent.

### Tooling

By creating and implementing these metadata standards we facilitate the creation of tooling that can read and write this data.
Such tooling greatly expands the reach and effectiveness of rationales as it allows for rich user interfaces to be created.
i.e. translation tools, rationale comparison tools,

## Specification

We define a specification for fields which can be added to CC votes.

### Extended Body Vocabulary

The following properties extend the potential vocabulary of [CIP-100](https://github.com/cardano-foundation/CIPs/tree/master/CIP-0100)'s `body` property.

#### `summary`

- A short text field. Limited to `200` characters.
- Authors SHOULD use this field to clearly state their stance on the issue.
- Authors SHOULD use this field to succinctly describe their rationale.
- Authors SHOULD give a brief overview of the main arguments will support your position.
- This SHOULD NOT support markdown text styling.
- Compulsory.

#### `rationaleStatement`

- A long text field.
- Authors SHOULD use this field to fully describe their rationale.
- Authors SHOULD discuss their arguments in full detail.
- This field SHOULD support markdown text styling.
- Compulsory.

#### `precedentDiscussion`

- A long text field.
- The author SHOULD use this field to discuss what they feel is relevant precedent.
- This field SHOULD support markdown text styling.
- Optional.

#### `counterargumentDiscussion`

- A long text field.
- The author SHOULD use this field to discuss significant counter arguments to the position taken.
- This field SHOULD support markdown text styling.
- Optional.

#### `conclusion`

- A long text field.
- The author SHOULD use this field to conclude their rationale.
- This SHOULD NOT support markdown text styling.
- Optional.

#### `internalVote`

- A custom object field.
- This field SHOULD be used to reflect any internal voting decisions within CC member.
- This field SHOULD be used by members who are constructed from organizations or consortiums.
- Optional.

##### `constitutional`

- A positive integer.
- The author SHOULD use this field to represent a number of internal votes for the constitutionality of the action.

##### `unconstitutional`

- A positive integer.
- The author SHOULD use this field to represent a number of internal votes against the constitutionality of the action.

##### `abstain`

- A positive integer.
- The author SHOULD use this field to represent a number of internal abstain votes for the action.

##### `didNotVote`

- A positive integer.
- The author SHOULD use this field to represent a number of unused internal votes.

### Extended `references` Vocabulary

Here we extend CIP-100's `references` field.

#### `RelevantArticles`

- We add to CIP-100's `@type`s, with a type of `RelevantArticles`.
- Authors SHOULD use this field to list the relevant constitution articles to their argument.

### Application

CC must include all compulsory fields to be considered CIP-XXX compliant.
As this is an extension to CIP-100, all CIP-100 fields can be included within CIP-XXX compliant metadata.

### Test Vector

// todo

See [test-vector.md](./test-vector.md) for examples.

### Versioning

This proposal should not be versioned, to update this standard a new CIP should be proposed.
Although through the JSON-LD mechanism further CIPs can add to the common governance metadata vocabulary.

## Rationale: how does this CIP achieve its goals?

// todo - fill in details

### `summary`

- useful for users to quickly see a preview of the whole rationale
- gives tooling the option to show a high level intro

### `rationaleStatement`

### `precedentDiscussion`

### `counterargumentDiscussion`

### `conclusion`

### `internalVote`

### `relevantArticles`

## Path to Active

### Acceptance Criteria

- [ ] This standard is supported by two different tooling providers used to submit governance actions to chain.
- [ ] This standard is supported by two different chain indexing tools, used to read and render metadata.

### Implementation Plan

#### Solicitation of feedback

- [ ] Run two online workshops to gather insights from stakeholders.
- [ ] Seek community answers on all [Open Questions](#open-questions).

#### Implementation

- [ ] Author to provide example metadata and schema files.

## Copyright

This CIP is licensed under [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode).
54 changes: 54 additions & 0 deletions CIP-0136/cip-136.common.jsonld
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"@context": {
"@language": "en-us",
"CIP100": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0100/README.md#",
"CIP136": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0136/README.md#",
"hashAlgorithm": "CIP100:hashAlgorithm",
"body": {
"@id": "CIP136:body",
"@context": {
"references": {
"@id": "CIP100:references",
"@container": "@set",
"@context": {
"GovernanceMetadata": "CIP100:GovernanceMetadataReference",
"Other": "CIP100:OtherReference",
"label": "CIP100:reference-label",
"uri": "CIP100:reference-uri",
"RelevantArticles": "CIP136:RelevantArticles"
}
},
"summary": "CIP136:summary",
"rationaleStatement": "CIP136:rationaleStatement",
"precedentDiscussion": "CIP136:precedentDiscussion",
"counterargumentDiscussion": "CIP136:counterargumentDiscussion",
"conclusion": "CIP136:conclusion",
"internalVote": {
"@id": "CIP136:internalVote",
"@context": {
"constitutional": "CIP136:constitutional",
"unconstitutional": "CIP136:unconstitutional",
"abstain": "CIP136:abstain",
"didNotVote": "CIP136:didNotVote"
}
}
}
},
"authors": {
"@id": "CIP100:authors",
"@container": "@set",
"@context": {
"did": "@id",
"name": "http://xmlns.com/foaf/0.1/name",
"witness": {
"@id": "CIP100:witness",
"@context": {
"witnessAlgorithm": "CIP100:witnessAlgorithm",
"publicKey": "CIP100:publicKey",
"signature": "CIP100:signature"
}
}
}
}
}
}
Loading