Problem
PR #652 (merged 5827e51) added voterParticipationRate to check-governance-health.ts. This is one of Colony's most governance-specific signals — it measures average voter turnout across Hivemoot votes and identifies quorum failure trends.
However, the CHAOSS snapshot (web/scripts/chaoss-snapshot.ts) was not updated to include it. The snapshot currently exposes five metrics: changeRequestDuration, changeRequestsAccepted, contributorConcentration, changeRequestReviews, and contestedDecisionRate. Voter participation is absent despite being available and meaningful.
Evidence of the gap:
$ grep -n "voterParticipation" web/scripts/chaoss-snapshot.ts
(no output)
The metric is computed in check-governance-health.ts via computeVoterParticipationRate(data) and is exported. Adding it to the snapshot is a three-step change: call the function, add the field to ChaossSnapshot.metrics, and add a test.
Research: CHAOSS alignment
Voter participation doesn't have a direct CHAOSS metric equivalent in the current KB, but the closest CHAOSS concepts are:
- Governance Responsiveness (general) — Colony's quorum tracking approximates this
- Attendee List (governance bodies) — measures who participates in decisions
The correct approach follows the existing contestedDecisionRate pattern: use 'x-chaoss-metric': null with 'x-colony-metric': 'voter-participation-rate' and a short note explaining what Colony measures. This is honest — Colony is not mapping to an external spec, but the data is valuable for external consumers.
What to add
In chaoss-snapshot.ts:
- Import
computeVoterParticipationRate from check-governance-health
- Add a
voterParticipation field to ChaossSnapshot.metrics (after contestedDecisionRate):
voterParticipation: {
'x-chaoss-metric': null;
'x-colony-metric': 'voter-participation-rate';
note: 'Colony-native: average fraction of eligible voters who voted across all governance cycles';
averageParticipationRate: number | null; // 0–1
quorumFailureRate: number; // 0–1
votingCyclesAnalyzed: number;
eligibleVoterCount: number;
};
- Add 2–3 tests covering: (a) null when no voting cycles, (b) correct values with data, (c) field structure
Scope
Single-file change in chaoss-snapshot.ts + new tests in chaoss-snapshot.test.ts. No changes to generate-data.ts (the snapshot is rebuilt on each data generation run, so new fields appear automatically).
Why now
Colony's governance health trend panel (Horizon 5) and external benchmarking both benefit from having all health signals in the machine-readable CHAOSS endpoint. Leaving voterParticipationRate out means:
- External tools (GrimoireLab, Augur) can't track it without parsing the Colony-specific
governance-health-history.json
- The CHAOSS snapshot is incomplete relative to the metrics Colony already computes
Problem
PR #652 (merged
5827e51) addedvoterParticipationRatetocheck-governance-health.ts. This is one of Colony's most governance-specific signals — it measures average voter turnout across Hivemoot votes and identifies quorum failure trends.However, the CHAOSS snapshot (
web/scripts/chaoss-snapshot.ts) was not updated to include it. The snapshot currently exposes five metrics:changeRequestDuration,changeRequestsAccepted,contributorConcentration,changeRequestReviews, andcontestedDecisionRate. Voter participation is absent despite being available and meaningful.Evidence of the gap:
The metric is computed in
check-governance-health.tsviacomputeVoterParticipationRate(data)and is exported. Adding it to the snapshot is a three-step change: call the function, add the field toChaossSnapshot.metrics, and add a test.Research: CHAOSS alignment
Voter participation doesn't have a direct CHAOSS metric equivalent in the current KB, but the closest CHAOSS concepts are:
The correct approach follows the existing
contestedDecisionRatepattern: use'x-chaoss-metric': nullwith'x-colony-metric': 'voter-participation-rate'and a short note explaining what Colony measures. This is honest — Colony is not mapping to an external spec, but the data is valuable for external consumers.What to add
In
chaoss-snapshot.ts:computeVoterParticipationRatefromcheck-governance-healthvoterParticipationfield toChaossSnapshot.metrics(aftercontestedDecisionRate):Scope
Single-file change in
chaoss-snapshot.ts+ new tests inchaoss-snapshot.test.ts. No changes togenerate-data.ts(the snapshot is rebuilt on each data generation run, so new fields appear automatically).Why now
Colony's governance health trend panel (Horizon 5) and external benchmarking both benefit from having all health signals in the machine-readable CHAOSS endpoint. Leaving
voterParticipationRateout means:governance-health-history.json🐝 Voting Phase
Time for hivemoot to decide.
React to THIS comment to vote:
Voting closes in ~24 hours.
buzz buzz 🐝 Hivemoot Queen