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 18 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all 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.
Copy link
Contributor

@Hornan7 Hornan7 Oct 7, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This mandates that the CC must provide rationale for at least `no` votes.
This mandates that the CC must provide rationale for `Yes, `No` and `Abstain` votes.

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 😃👍

Copy link

@Willburn Willburn Oct 7, 2024

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 :)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This mandates that the CC must provide rationale for at least `no` votes.
This mandates that the CC must provide rationale for `Yes, `No` and `Abstain` votes.

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 😃👍

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.

Copy link
Contributor

@Hornan7 Hornan7 Oct 9, 2024

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.

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.

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.

Copy link
Collaborator Author

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

Copy link
Contributor

@Hornan7 Hornan7 Oct 9, 2024

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. 😇👍

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