Milestone v0.3 complete. Feature type, tags v0.2.x. Two work-streams shipped under one feature milestone: (A) Bearers skeleton + tests (D-020 pattern, 7 x/* packages, zero ext deps): - x/bridge (NEW): BridgeStatus enum (4), BridgeRoute by-ID-string refs - x/exit (NEW): ExitStatus enum (5), ExitRoute, DEXSwap (opaque venue) - x/bearers (EXT): OYSATLink surveillance-resistant LOCKED, OYQRCode idempotent - x/partner (EXT): AnchorCredential (custody-provider-id empty in skeleton) - x/hub (NEW): HubService enum (3), LendingCouponCapBps=800 LOCAL const (A-304) - x/services (NEW): ServiceKind enum (4), window-id by-ID-string ref (A-307) - x/bond (EXT): GrowthBond, ClampGrowth G-012 underflow guard, secondary market All packages >=93.3% coverage. Both lexicon firewalls green. G-003 intact. (B) Documentation deliverable (REQ-027 complete, 26-page MkDocs Material site): - README.md + mkdocs.yml + docs/index.md - docs/shared/ (7 pages): Six Principles, Bread Scale, Storage Pools, Watchers/Mirror, Lexicon, Vision - docs/nomads/ (8 pages): Reach, Stash, Bearers, Maps-Pay, Pacts, Standing, Window - docs/freeholders/ (8 pages): Signals, Standing, Stands-Guilds, Councils-Voice, Bonds, Partner Spectrum, Anchor Preview - docs/reference/ (2 pages): Architecture, Components - REQ-028: lexicon firewall extended to docs/ + README.md (lexicon_meta_docs_test.go, 5 tests incl G-013 walk-coverage + G-014 shared self-test) Phases: P0 -> v0.2.0, P1 -> v0.2.1, P2 -> v0.2.2, P3 -> v0.2.3, P4 -> v0.2.4, P5 -> v0.2.5, P6 -> v0.2.6 (milestone release). Requirements covered: REQ-010, REQ-022, REQ-023, REQ-024, REQ-025, REQ-026 (skeleton), REQ-027, REQ-028 (complete). IDEATE-01..08 ratified and delivered. ---ci--- project: oy phase: 6 milestone: v0.3 status: complete tag_base: v0.2.x phase_role: final milestone_complete: true requirements: covered: [REQ-010, REQ-022, REQ-023, REQ-024, REQ-025, REQ-026, REQ-027, REQ-028] partial: [] ---/ci---
2.3 KiB
Councils & Voice
OpenYield governs itself through three Councils (REQ-011, vision §19): the Mesh Council, the Guild Council, and the Stand Council. Each Freeholder participates through the Councils, weighted by Voice — a multi-source weight that combines Stash, Standing, Vouch, Freeholder status, and Guild membership. The Mission Lock makes the covenant non-amendable: no Council can vote to change the Six Principles or the fee covenant.
The three Councils
- Mesh Council — the mesh-wide Council. Handles protocol-level proposals that affect every Holder and every Stand.
- Guild Council — the Council for Guilds. Handles Guild-scope proposals, referenced by guild-id.
- Stand Council — the Council for a single Stand, referenced by stand-id. Handles Stand-scope proposals (e.g., Vault use, Bond issuance).
The three-tier shape mirrors the three Storage Pools: a Council exists at each layer where custody is held.
Multi-source Voice
Voice is not one number. It is a weighted tally from five sources (locked as
the VoiceSource enum in x/council): Stash, Standing, Vouch, Freeholder,
and Guild. A Freeholder with high Standing and a long-held
Stash carries more Voice than a freshly-minted one. The
TallyResult mirrors the Cosmos SDK x/gov
shape so the governance layer can wire to standard tooling. The VoteOption
enum is Yes / No / Abstain — there is no "no-with-veto", an anti-greed
design choice.
Mission Lock
The Mission Lock is a locked const bool in x/council
(MissionLockAmendable = false). The Six Principles, the fee covenant
(ceiling 0.1% / floor 0.01% / 1-Grain minimum), and the bond coupon cap
(8% / 0%) cannot be amended by any Council vote. This is the
firewall that keeps the mesh a public good: governance can act within the
covenant, never on the covenant.
How a Freeholder participates
A Freeholder submits or votes on proposals in the Councils they belong to.
Each vote is weighted by multi-source Voice; the tally follows x/gov
semantics. See Bonds for the coupon cap the Mission Lock protects,
and Standing for the metric that weights a Freeholder's Voice.