id: K5 number: 5 title: Voting Mechanics layer: kernel notes: >- Ballots in v0 are public. Ballot secrecy with cryptographic tallying is acknowledged future work; making that change is a major amendment. clauses: - id: K5.1 title: Ballots text: >- A ballot is a signed record naming the proposal, the voting citizen, a choice of yes, no, or abstain, the time of casting, and the content hash of the exact proposed constitution it approves or rejects. The signature is made with the citizen's registered key over the canonical form of the ballot body. A ballot whose content hash does not match the proposal under decision is invalid. - id: K5.2 title: Voting windows text: >- Each class carries a voting window measured from the moment voting opens. Ballots cast outside the window are invalid. parameters: voting_days_major: type: integer value: 7 forkable: true min: 3 max: 30 voting_days_minor: type: integer value: 5 forkable: true min: 2 max: 30 voting_days_patch: type: integer value: 3 forkable: true min: 1 max: 30 - id: K5.3 title: Revision text: >- A citizen may recast their ballot any number of times before the window closes. Only the latest valid ballot of each citizen counts. - id: K5.4 title: Publicity text: >- Ballots are public records and are bound into the ledger when cast. parameters: ballot_visibility: type: string value: "public" forkable: false description: v0 supports only public ballots. - id: K5.5 title: No vote buying enforcement hook text: >- Offering or accepting consideration in exchange for a ballot is grounds for suspension under clause K2.3. The test suite must include adversarial scenarios for vote markets, and a ratified amendment may not weaken those scenarios without the major-class thresholds.