-
Notifications
You must be signed in to change notification settings - Fork 322
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
Ryun1
wants to merge
18
commits into
cardano-foundation:master
Choose a base branch
from
Ryun1:governance-metadata-cc-rationale
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
ccf875c
init cc vote rationale metadata cip
Ryun1 180c864
Update CIP-governance-metadata-cc-rationale/README.md
Willburn 6150fb9
Update CIP-governance-metadata-cc-rationale/README.md
Ryun1 85b2023
update discussions link to PR
Ryun1 030e302
flesh out notes in motivation
Ryun1 ed09d0f
flesh out
Ryun1 bd4cd53
add notes from review
Ryun1 e302f38
enhance and fix
Ryun1 73e137a
fix formatting
Ryun1 5748374
fix relevantArticles
Ryun1 466baa7
actually fix relevantArticles
Ryun1 2cd4d81
flesh out and tidy
Ryun1 f752e9e
add supporting schema files
Ryun1 a0fbf9c
Update CIP-governance-metadata-cc-rationale/README.md
Ryun1 313aba1
Update CIP-governance-metadata-cc-rationale/README.md
Ryun1 4afc50f
fix typo
Ryun1 c97a80f
rename directory
Ryun1 1369c97
init proper test vectors
Ryun1 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. | ||
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). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some might not realize the true meaning behind the machine-readable "no" in this context due to the way it is written, and it would help preventing any confusion or unnecessary effort to explain their decision when abstaining from voting.
Kudos to the authors of this CIP! I truly appreciate the meticulous effort they put into it. Everything else looks great to me.
Awesome work @Ryun1 , @Willburn 😃👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am neutral on if it should be manditatory for all governance actions or only no as it depends on interpretation (I personally think same as Hornan but maybe others do not). Lowest common denominator seems to be manditatory for a no vote.
I am also curious if we should up the summary field to 300 chars? Have anyone tried to write a summary with the rationales so far? 200 seems a bit too limiting its not a CC tweet :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change suggests that the constitution mandates a rationale for all decision types, which isn't accurate. While we could recommend providing a rationale for all decisions, suggesting it is mandated would be misleading.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is an interesting point. I didn't see any mention of CIP-136 in the Constitution, nor any requirement to use a metadata standard except for governance actions in Article 3, Section 6.
Article 6, Section 5 states: 'The Constitutional Committee shall publish each decision.' This could leave a lot of room for interpretation regarding whether this requirement applies only to a 'No' vote or to all vote types. However, there’s still no mention of mandatory metadata standards for the vote rationales.
Don't get me wrong; I'm just trying to clarify potential confusion in good faith. If this isn't optimal and you have a better suggestion, I would be glad to read it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you please confirm which version of the constitution you are referring to? Article VI Section 5 in the Interim Constitution (https://constitution.gov.tools/en/interim-constitution) refers to tooling. Section 4 refers to publishing a rationale, but it says when "voting no on a proposal".
If the language in this CIP references the constitution, it should accurately represent the current constitution. Maybe it would be safer not to reference the constitution in this CIP, given it can change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Article VI Section 4 is what I was referencing
https://constitution.gov.tools/en/interim-constitution#section-3-4
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you, @Ryun1. Yes, as @phillewis mentioned, it seems I don’t have the correct version. I apologize for that. In mine, it’s in Section 6 😅. I’ll definitely rely on the one from the Intersect repo moving forward. But I’m glad it’s mentioned in Section 4.
Perhaps using the word 'mandate' isn’t the best approach, or as Phil mentioned, referencing the constitution. These are metadata we’re going to use anyway, and over the months, they’ll become standard practice. I wouldn’t mind if there’s no formal mandate to use them, because I’m sure we’ll adopt them as standard practice regardless.
My original intention was to prevent people from thinking that 'mandatory' includes 'abstain from voting' based on how the sentence originally sounded. But if we can easily find a way to phrase it that avoids this confusion, my issue will be resolved. 😇👍