Layer-Tier Governance Model

Overview

Bitcoin Commons implements dual-dimensional governance combining Layers (repository architecture) and Tiers (action classification). When both apply, the system uses the most restrictive wins rule, taking the highest signature requirement and longest review period.

PR action tiers (1–5) are defined in governance action-tiers.yml with narrative in docs/ACTION_TIERS.md. Emergency classes use emergency-tiers.yml only.

Layer System

The layer system maps repository architecture to governance requirements:

LayerRepositoryPurposeSignaturesReview Period
1blvm-specConstitutional6-of-7180 days
2blvm-consensusConstitutional6-of-7180 days
3blvm-protocolImplementation4-of-590 days
4blvm-node / blvmApplication3-of-560 days
5blvm-sdkExtension2-of-314 days

Note: For consensus rule changes, Layer 1–2 require 365 days review period.

Tier System

The tier system classifies changes by action type:

TierTypeSignaturesReview Period
1Routine Maintenance3-of-57 days
2Feature Changes4-of-530 days
3Consensus-Adjacent5-of-590 days
4Emergency Actions4-of-50 days
5Governance Changes5-of-5180 days

Tier 5 special process (wider maintainer pool and emergency keyholders) is documented in governance GOVERNANCE.md, not in action-tiers.yml.

Combination Rules

When both Layer and Tier requirements apply, the system takes the most restrictive (highest) requirements:

LayerTierFinal SignaturesFinal ReviewSource
116-of-7180 daysLayer 1
126-of-7180 daysLayer 1
136-of-7180 daysLayer 1
146-of-7180 daysLayer 1
156-of-7180 daysLayer 1
216-of-7180 daysLayer 2
226-of-7180 daysLayer 2
236-of-7180 daysLayer 2
246-of-7180 daysLayer 2
256-of-7180 daysLayer 2
314-of-590 daysLayer 3
324-of-590 daysLayer 3
335-of-590 daysTier 3
344-of-590 daysLayer 3
355-of-5180 daysTier 5
413-of-560 daysLayer 4
424-of-560 daysCombined Layer 4 + Tier 2
435-of-590 daysTier 3
444-of-560 daysCombined Layer 4 + Tier 4
455-of-5180 daysTier 5
513-of-514 daysCombined Layer 5 + Tier 1
524-of-530 daysTier 2
535-of-590 daysTier 3
544-of-514 daysCombined Layer 5 + Tier 4
555-of-5180 daysTier 5

Examples

ExampleLayerTierResultSource
Bug fix in blvm-protocol3 (4-of-5, 90d)1 (3-of-5, 7d)4-of-5, 90dLayer 3
New feature in blvm-sdk5 (2-of-3, 14d)2 (4-of-5, 30d)4-of-5, 30dTier 2
Consensus change in blvm-spec1 (6-of-7, 180d)3 (5-of-5, 90d)6-of-7, 180dLayer 1
Emergency fix in blvm-node4 (3-of-5, 60d)4 (4-of-5, 0d)4-of-5, 60dCombined Layer 4 + Tier 4

Implementation

Code: threshold.rs

#![allow(unused)]
fn main() {
pub fn get_combined_requirements(layer: i32, tier: u32) -> (usize, usize, i64) {
    let (layer_sigs_req, layer_sigs_total) = Self::get_threshold_for_layer(layer);
    let layer_review = Self::get_review_period_for_layer(layer, false);
    let (tier_sigs_req, tier_sigs_total) = Self::get_tier_threshold(tier);
    let tier_review = Self::get_tier_review_period(tier);
    // Take most restrictive
    (layer_sigs_req.max(tier_sigs_req), layer_sigs_total.max(tier_sigs_total), layer_review.max(tier_review))
}
}

Test: cd blvm-commons && cargo test threshold

Published tables above are derived from the same max-rule at book build time (mdbook-governance-vars). Merge enforcement in blvm-commons still uses hardcoded values in threshold.rs until that code loads YAML (see plan backlog).

Configuration

  • config/repository-layers.yml - Layer definitions
  • config/action-tiers.yml - Tier definitions (docs/ACTION_TIERS.md)
  • config/emergency-tiers.yml - Emergency classes (separate from action tiers)
  • config/tier-classification-rules.yml - PR classification

See Also