code wiki / (root) / nx_commons_govern.nx

nx_commons_govern.nx

buildroot/runtime/nx_commons_govern.nx

7654 B140 linesdepth 2pulls 2 transitivereach 1 importersview sourcekind librarytopic commons
docsdependenciesstructsconstsfunctions

about

nx_commons_govern.nx -- WHO gets to change the rules, and what NO majority may change. KNOWN GOOD MATCHED: nx_council_gate (in-estate, 7/7, grounded in two-person rule / quorum / change-management CAB research). Its properties are adopted, not reinvented: * DENY BY DEFAULT -- a high-blast action is refused unless a quorum authorises it * DISTINCT-ROLE quorum -- N approvals from N different roles, not N clicks from one faction * ANY REJECT IS FAIL-SAFE -- one principled objection sinks a proposal that otherwise had quorum * votes derive from REAL evidence, never forgeable literals THE GAP THAT MATTERS FOR A COMMONS: in nx_council_gate everything is amendable given enough quorum. That is correct for engineering change management and FATAL for a commons, because it is precisely how capture works. You do not need to break the rules if you can afford to change them. The operator's question was "excluded no matter what power they may try to wield" -- and no quorum threshold answers that, because a sufficiently resourced actor buys the quorum. ★★★★★★ THE ANSWER IS NOT A HIGHER THRESHOLD. IT IS A CLASS OF RULES THAT IS NOT VOTABLE AT ALL. This estate already has the shape: Rule 26 (never brick) is not a trade-off to be balanced against convenience, it is an absolute enforced mechanically, and the genesis gate flags any node lacking the guarantee RED rather than weighing it. Constitutional clauses here work the same way: a proposal touching one is VOID -- not "denied pending more support", VOID -- and the vote is never even counted. 100% approval of every member returns the same answer as zero. The clauses are the floors that make the currency what it is. Each is here because removing it is the FIRST move an extractive faction would make: CG_CLAUSE_HOUR_FLOOR -- nobody's hour is ever worth less than an hour (devalue labour) CG_CLAUSE_SPREAD_CAP -- the 3:1 bound on valued-hour spread (reintroduce 48:1) CG_CLAUSE_HEARSAY_K -- corroboration needs K>=2 independent witnesses (self-attestation) CG_CLAUSE_PARTY_EXCL -- a beneficiary never corroborates its own claim (buy your own witness) CG_CLAUSE_NEVER_BRICK -- Rule 26 (inherited absolute) TWO FURTHER IMPROVEMENTS over the known good, both bite-proven in the gate: 1. THE PROPOSER MAY NOT APPROVE ITS OWN PROPOSAL. Same principle as witness party-exclusion one layer up: an approver with a stake is a participant. nx_council_gate counts distinct roles but does not exclude the author. 2. NO SINGLE MEMBER'S WEIGHT MAY DECIDE. A whale holding most of the standing is capped, so quorum cannot be reached by one party however much standing it earned. Earned standing buys influence; it must never buy sovereignty. Integer only, thresholds named (law 11). license_tier: ORIGINAL No hw writes (Rule 26).

dependencies 1 imports · 1 importers

nx_syscalls.nx nx_commons_govern.nx nx_commons_govern_gate.nx

imports: nx_syscalls.nx

imported by: nx_commons_govern_gate.nx

structs

none

consts

43const CG_CLAUSE_NONE: i64 = 0
44const CG_CLAUSE_HOUR_FLOOR: i64 = 1
45const CG_CLAUSE_SPREAD_CAP: i64 = 2
46const CG_CLAUSE_HEARSAY_K: i64 = 3
47const CG_CLAUSE_PARTY_EXCL: i64 = 4
48const CG_CLAUSE_NEVER_BRICK: i64 = 5
49const CG_CLAUSE_N: i64 = 6
52const CG_VOID: i64 = 0 - 2 // touches a constitutional clause; the vote is not even counted
53const CG_DENY: i64 = 0 - 1 // lawful proposal, insufficient support
54const CG_ALLOW: i64 = 1
56const CG_QUORUM: i64 = 3 // distinct approving roles required (matches nx_council_gate)
57const CG_WEIGHT_CAP_PERMIL: i64 = 400 // no single member may carry >40% of the deciding weight

functions

60func cg_is_constitutional(clause: i64) -> i64
called by 1: cg_decide
68func cg_effective_weight(member_standing: i64, total_standing: i64) -> i64
called by 1: main
79func cg_valid_approvals(ids: *i64, roles: *i64, st: *i64, n: i64, proposer: i64) -> i64
called by 1: cg_decide
103func cg_decide(clause: i64,
125func cg_plain_quorum_decide(ids: *i64, roles: *i64, st: *i64, n: i64, rejects: i64) -> i64
called by 1: main