# Parameter Registry — Canonical Names, Defaults, and Floors **Status:** v0.1 · Normative · Single source of truth for parameter names This registry consolidates every kernel parameterization point into one table. It is normative for three artifacts, which MUST agree with it exactly: - `spec/module.schema.json` (machine validation) - `examples/family.config.json` and `examples/dao.config.json` (worked configs) - the per-article "Parameterization" sections of the kernel annotations **Rules of the registry:** 1. Parameter paths are dot-notation under the `parameters` object of a module config. 2. **Kernel default** applies when a module omits the parameter (Art VII: omission means inherit). 3. **Floor/Ceiling** values are kernel-enforced bounds. The JSON Schema encodes every bound marked *(enforced)*; bounds marked *(textual)* are stated in kernel text and checked by the test suite (Milestone 2) because JSON Schema cannot express them (cross-field relations). 4. Adding, renaming, or re-bounding a parameter is a **kernel-minor** change; removing one or tightening a floor is **kernel-major** (Art III). ## Registry | Parameter path | Type | Kernel default | Floor / Ceiling | Kernel art. | family | dao | |---|---|---|---|---|---|---| | `suffrage.criteria` | string[] | `["accepted-by-existing-citizens"]` | non-empty *(enforced)* | II | `["resides-in-household"]` | `["proof-of-personhood","accepted-membership-pledge"]` | | `suffrage.minimumAge` | integer\|null | `null` (capacity-based) | ≥ 0 *(enforced)* | II | `8` | `null` | | `suffrage.onboardingWaitDays` | integer | `14` | ≥ 0 *(enforced)* | II | `0` | `30` | | `suffrage.proxyVoting` | boolean | `false` | — | II | `false` | `true` | | `suffrage.exitGraceDays` | integer | `30` | ≥ 0 *(enforced)* | II | `30` | `14` | | `voting.method` | enum | `"majority"` | one of: majority, approval, ranked, consent, score *(enforced)* | IV | `"consent"` | `"approval"` | | `voting.weighting` | const | `"equal"` | **fixed** `"equal"` *(enforced; Art V invariant)* | V | `"equal"` | `"equal"` | | `voting.secretBallot` | boolean | `false` | tallies always public on ledger *(textual, Art X)* | IV | `false` | `true` | | `voting.tieBreak` | enum | `"status-quo"` | one of: status-quo, random, second-round *(enforced)* | IV | `"status-quo"` | `"status-quo"` | | `voting.defaultPeriodDays` | integer | `7` | ≥ 1 *(enforced)* | IV | `1` | `5` | | `quorum.base` | fraction | `0.5` | 0 < x ≤ 1 *(enforced)* | IV | `0.8` | `0.15` | | `quorum.escalated` | fraction | `0.6` | ≥ `quorum.base` *(textual)* | IV | `1.0` | `0.25` | | `quorum.adaptiveDecay.enabled` | boolean | `false` | — | IV | `false` | `true` | | `quorum.adaptiveDecay.halvingPeriodDays` | integer | `30` | ≥ 1 *(enforced)* | IV | — | `14` | | `quorum.adaptiveDecay.floor` | fraction | `0.1` | > 0 *(enforced; decay may never reach zero)* | IV | — | `0.05` | | `amendment.proposalSponsors` | integer | `2` | ≥ 1 *(enforced)* | III | `1` | `12` | | `amendment.reviewPeriodDays` | integer | `7` | ≥ 1 *(enforced)* | III | `3` | `14` | | `amendment.votingPeriodDays` | integer | `7` | ≥ 1 *(enforced)* | III | `2` | `7` | | `amendment.cooldownDays` | integer | `30` | ≥ 0 *(enforced)* | III | `14` | `60` | | `amendment.thresholds.patch` | fraction | `0.5` | ≥ 0.5 *(enforced)* | III | `0.5` | `0.5` | | `amendment.thresholds.minor` | fraction | `0.6` | ≥ 0.5 *(enforced)* | III | `0.6` | `0.6` | | `amendment.thresholds.major` | fraction | `0.75` | ≥ 0.667 *(enforced; Art III floor: kernel-major requires ≥ ⅔)* | III | `0.8` | `0.7` | | `fork.assetSplitRule` | enum | `"pro-rata"` | one of: pro-rata, negotiated, none *(enforced)* | VI | `"negotiated"` | `"pro-rata"` | | `fork.minimumFaction` | fraction | `0.1` | 0 < x ≤ 0.5 *(enforced; a majority can never be required to "fork away from itself")* | VI | `0.2` | `0.1` | | `fork.noticePeriodDays` | integer | `14` | ≥ 0 *(enforced)* | VI | `30` | `21` | | `emergency.enabled` | boolean | `false` | — | VIII | `true` | `true` | | `emergency.declarationAuthority` | enum | `"council"` | one of: designated-steward, council, supermajority-snap-vote *(enforced)* | VIII | `"designated-steward"` | `"council"` | | `emergency.maxDurationDays` | integer | `30` | 1 ≤ x ≤ 90 *(enforced ceiling)* | VIII | `7` | `14` | | `emergency.renewalThreshold` | fraction | `0.6` | ≥ 0.5 *(enforced)* | VIII | `0.6` | `0.66` | | `emergency.autoSunset` | const | `true` | **fixed** `true` *(enforced; Art VIII)* | VIII | `true` | `true` | | `emergency.suspendableScopes` | enum[] | `[]` | subset of: userland-rules, spending-limits, scheduling *(enforced; suffrage, invariants, and the amendment process are never suspendable — Art VIII)* | VIII | `["scheduling","spending-limits"]` | `["spending-limits"]` | | `disputes.forum` | enum | `"full-vote"` | one of: full-vote, council, jury, external-arbiter *(enforced)* | IX | `"full-vote"` | `"jury"` | | `disputes.jurySize` | integer | `9` | ≥ 3 *(enforced)* | IX | — | `9` | | `disputes.selectionMethod` | enum | `"sortition"` | one of: sortition, election, rotation *(enforced)* | IX | — | `"sortition"` | | `disputes.termDays` | integer | `180` | ≥ 1 *(enforced)* | IX | — | `90` | | `disputes.appealTo` | enum | `"none"` | one of: full-vote, none *(enforced; kernel-interpretation disputes always appealable to full vote — textual, Art IX)* | IX | `"none"` | `"full-vote"` | ## Textual constraints not expressible in the schema These are kernel-text constraints validated by the Milestone 2 test harness, listed here so no one mistakes schema validity for kernel validity: 1. `quorum.escalated ≥ quorum.base`. 2. `amendment.thresholds.minor ≥ amendment.thresholds.patch` and `major ≥ minor`. 3. If `voting.secretBallot` is `true`, aggregate tallies and turnout MUST still publish to the ledger (Art X); only individual ballots may be sealed. 4. If `disputes.forum` is `"jury"`, `jurySize`, `selectionMethod`, and `termDays` MUST be set. 5. `emergency.suspendableScopes` may never include anything affecting Art II, III, V, or VI — the enum is the enforcement, but module authors composing custom scopes in userland inherit this prohibition. 6. A module's `userland.rules` may add obligations but may not subtract from any Art V invariant (Art VII supremacy ordering).