Skip to content
Merged
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
Binary file added .DS_Store
Binary file not shown.
261 changes: 261 additions & 0 deletions ruled_labels/specs_polkadot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
---
name: paritytech/polkadot
description: Import from paritytech/polkadot
version: 0.0.1
labels:
- name: A0-please_review
description: Pull request needs code review.
color: "666666"
- name: A1-needs_burnin
description: Pull request needs to be tested on a live validator node before merge. DevOps is notified via matrix
color: c7def8
- name: A2-insubstantial
description: "Pull request requires no code review (e.g., a sub-repository hash update)."
color: C6C7F8
- name: A3-in_progress
description: Pull request is in progress. No review needed at this stage.
color: DBC6F8
- name: A4-companion
description: A PR that needs a companion PR to merge in parallel for one of its downstream dependencies.
color: EEF8C0
- name: A5-stale
description: Pull request did not receive any updates in a long time. No review needed at this stage.
color: F2C5F8
- name: A6-backport
description: Pull request is already reviewed well in another branch.
color: F8C5E7
- name: B0-silent
description: Changes should not be mentioned in any release notes
color: f9f0f4
- name: B1-note_worthy
description: Changes should be noted in the release notes
color: f9f0f4
- name: C1-low
description: PR touches the given topic and has a low impact on builders.
color: eeeeee
- name: C3-medium
description: PR touches the given topic and has a medium impact on builders.
color: eebb00
- name: C5-high
description: PR touches the given topic and has a high impact on builders.
color: D4C5F9
- name: C7-critical
description: PR touches the given topic and has a critical impact on builders.
color: E99695
- name: D1-audited 👍
description: PR contains changes to critical logic that has been properly reviewed and externally audited.
color: "006600"
- name: D2-notlive 💤
description: PR contains changes in a runtime directory that is not deployed to a chain that requires an audit.
color: 0052CC
- name: D3-trivial 🧸
description: PR contains trivial changes in a runtime directory that do not require an audit.
color: FBCA04
- name: D5-nicetohaveaudit ⚠️
description: PR contains trivial changes to logic that should be properly reviewed.
color: aa6600
- name: D9-needsaudit 👮
description: PR contains changes to fund-managing logic that should be properly reviewed and externally audited.
color: "880000"
- name: E0-runtime_migration
description: PR introduces code that might require downstream chains to run a runtime upgrade.
color: "221133"
- name: E1-database_migration
description: PR introduces code that does a one-way migration of the database.
color: "112233"
- name: E2-dependencies
description: Pull requests that update a dependency file.
Copy link
Member

Choose a reason for hiding this comment

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

Could we automatically enforce this through the CI by checking for changes in the Cargo.lock files?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Copy link
Collaborator

Choose a reason for hiding this comment

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

I think so but I need more info about the logic how it should be checked/triggered. It seems that it's going to be a custom job.

Copy link
Member

Choose a reason for hiding this comment

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

Me neither. @the-right-joyce could you please put it into a new issue so we can keep track of it? https://github.com/paritytech/ci_cd/issues

color: "222211"
- name: E3-host_functions

Choose a reason for hiding this comment

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

What's the point of this? it seems like a pure subset of the next item.

description: PR adds new host functions which requires a node release before a runtime upgrade.
color: f9f2f2
- name: E4-node_first_update
description: This is a runtime change that will require all nodes to be update BEFORE the runtime upgrade.
color: e8d7d7
- name: E5-needs_cumulus_pr
description: This is an issue that needs to be implemented upstream in Cumulus.
color: "444475"
- name: F0-breaks_everything
description: This change breaks the underlying networking, sync or related and thus will cause a fork.
color: bdadad
- name: F1-breaks_authoring
description: This change breaks authorities or authoring code.
color: e99695
- name: F2-breaks_consensus
description: This change breaks consensus or consensus code.
color: "5319e7"
- name: F3-breaks_API
description: This PR changes public API; next release should be major.
color: cdadad
- name: I0-consensus
description: Issue can lead to a consensus failure.
color: f6d9e9
- name: I1-panic
description: The node panics and exits without proper error handling.
color: 17b25d
- name: I2-security
description: "The node fails to follow expected, security-sensitive, behaviour."
color: D62209
- name: I3-bug
description: Fails to follow expected behavior.
color: FB3701
- name: I4-annoyance
description: "Code behaves within expectations, however this “expected behaviour” itself is at issue."
color: F76E02
- name: I5-tests
description: Tests need fixing, improving or augmenting.
color: f3a603
- name: I6-benchmarks
description: Benchmarks need fixing, improving or augmenting.
color: f3a603
- name: I6-documentation
description: Documentation needs fixing, improving or augmenting.
color: fbca04
- name: I7-refactor
description: Code needs refactoring.
color: dbea04
- name: I8-footprint
description: An enhancement to provide a smaller (system load, memory, network or disk) footprint.
color: 34C302
- name: I9-optimisation
description: An enhancement to provide better overall performance in terms of time-to-completion for a task.
color: 009B40
- name: J0-enhancement
description: An additional feature request.
color: 006b75
- name: J1-meta
description: A specific issue for grouping tasks or bugs of a specific category.
color: 0C7BAD
- name: J2-unconfirmed
description: Issue might be valid, but it's not yet known. It should not be worked on until it is verified.
color: "000000"
- name: J3-intended
description: Issue describes a behavior which turns out to work as intended. Closer should explain why.
color: b10d11
- name: J4-duplicate
description: Issue is a duplicate. Closer should comment with a link to the duplicate.
color: D62209
- name: J5-wont_fix
description: "Issue is in principle valid, but this project will not address it. Closer should explain why."
color: FB3701
- name: J6-invalid
Copy link
Member

Choose a reason for hiding this comment

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

Not sure where it fits best: But a reserved label similar to the mentor label would be nice - to indicate that an issue should not be picked up by anyone unless approved.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

and who should be the one to approve this issue?

Copy link
Member

Choose a reason for hiding this comment

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

Just someone from Parity in general. That person should then know why the reserved label was on there.
Currently we often have the case that external contributors "snatch" issues that we had reserved for someone new as on-boarding task.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

do we really want to do this as an open source project?

Copy link
Member

Choose a reason for hiding this comment

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

My problem currently is that some advanced external devs are swooping up easy issues that we ought to keep for new-comers as entry to Substrate.
Even that label won't prevent them from working on it, but hopefully make them ask first.

description: Issue is invalid. Closer should comment why.
color: ABAA8E
- name: J7-mentor
description: An easy task where a mentor is available. Please indicate in the issue who the mentor could be.
color: F76E02
- name: S0-design
description: PR/Issue is in the design stage
color: dd6e83
- name: S1-implement
description: PR/Issue is in the implementation stage
color: c9d7ff
- name: S2-test/monitor
description: PR/Issue is in the testing stage.
color: dbea04
- name: S3-deploy
description: PR/Issue is in the deployment stage
color: 34C302
- name: S4-blocked
description: PR/Issue is blocked, see comments for further information.
color: D5C978
- name: S5-on_ice
description: Work is currently on hold, see comments for further information.
color: "122381"
- name: T0-node
description: This PR/Issue is related to the topic “node”.
color: fbffe0
- name: T1-runtime
description: This PR/Issue is related to the topic “runtime”.
color: F5FCE6
- name: T2-API
description: This PR/Issue is related to APIs.

Choose a reason for hiding this comment

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

Which API? RPC api? runtime api? rust crate api?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

we can extend the options here, right now it's very generic

color: 009B40
- name: T3-relay_chain
description: This PR/Issue is related to the relay chain.
color: ffeeee
- name: T4-parachains_engineering
description: "This PR/Issue is related to Parachains performance, stability, maintenance."
color: 42F808
- name: T5-parachains_protocol
description: This PR/Issue is related to Parachains features and protocol changes.
color: 14C663
- name: T6-XCM
description: This PR/Issue is related to XCM.
color: c5def5
- name: T7-substrate
description: This is an issue that needs to be implemented upstream in Substrate.
color: 1d76db
- name: T8-release
description: This PR/Issue is related to topics touching the release notes.
color: 0052cc
- name: U0-drop_everything
description: Everyone should address the issue now.
color: 32024c
- name: U1-asap
description: "No need to stop dead in your tracks, however issue should be addressed as soon as possible."
color: 470c68
- name: U2-some_time_soon
description: Issue is worth doing soon.
color: "673980"
- name: U3-nice_to_have
description: Issue is worth doing eventually.
color: 856d92
- name: U4-some_day_maybe
description: Issue might be worth doing eventually.
color: d2d1d3

rules:
- name: Require a single Release (B) label
id: single_b
tags: [PR]
spec:
require: !one_of [B*]

- name: Release mentions need criticality (C)
id: require_one_c_when_b1
tags: [PR]
spec:
when: !one_of [B1]
require: !one_of [C*]

- name: Release mentions need a topic "node" or "runtime"
id: require_t0_or_t1_when_b1
tags: [PR]
spec:
when: !one_of [B1]
require: !one_of [T0, T1]

- name: Release mentions can have several topics
id: allow_multiple_t_when_b1
tags: [PR]
spec:
when: !one_of [B1]
require: !some_of [T*]

- name: One single issue status (S) label allowed
id: single_s
tags:
spec:
when: !some_of [S*]
require: !one_of [S*]

- name: One single urgency status (U) label allowed
id: single_u
tags:
spec:
when: !some_of [U*]
require: !one_of [U*]

- name: One single criticality (C) label allowed
id: single_c
tags: [PR]
spec:
when: !some_of [C*]
require: !one_of [C*]

- name: Require single audit (D) label allowed
id: single_d
tags: [audit]
spec:
require: !one_of [D*]
69 changes: 69 additions & 0 deletions ruled_labels/tests_polkadot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Polkadot ruled-labels test cases
spec_file: specs.yaml

specs:
- name: Pass - Pass all
filter:
id: [ single_b, single_d, single_u, single_s, single_c]
labels: [ B1, C1, D1, T1, S4 ]
expected: true

- name: Fail - Require release label
filter:
id: [ single_b ]
labels: [ A1 ]
expected: false

- name: Pass - Release label provided.
filter:
id: [ release_notes ]
labels: [ A1, B0 ]
expected: true

- name: Fail - Only one audit label allowed
filter:
id: [ single_d ]
labels: [ D1, B1, D4 ]
expected: false

- name: Fail - Release needs criticality
filter:
id: [ require_one_c_when_b1 ]
labels: [ B1, T1, D1 ]
expected: false

- name: Fail - Release need a topic.
filter:
id: [ require_t0_or_t1_when_b1 ]
labels: [ B1, D1 ]
expected: false

- name: Pass - Release has a topic.
filter:
id: [ require_t0_or_t1_when_b1 ]
labels: [ B1, D1, T0 ]
expected: true

- name: Pass - PR has multiple topics
filter:
id: [ allow_multiple_t_when_b1 ]
labels: [ B1, T0, T7, D1 ]
expected: true

- name: Fail - Only one criticality label allowed
filter:
id: [ single_c ]
labels: [ B1, C1, C3 ]
expected: false

- name: Fail - Only one urgency label allowed
filter:
id: [ single_u ]
labels: [ B1, U1, U3 ]
expected: false

- name: Fail - Only one status label allowed
filter:
id: [ single_s ]
labels: [ B1, S1, S3 ]
expected: false