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---
3.4 KiB
OpenYield
OpenYield is a jurisdiction-light, public-good mesh for real production — a protocol organized around Holders, Stands, and the Six Principles, designed to hold real value without the words or the shapes that invite capture. The mesh runs on OY Chain (Layer 1), a canonical state layer for the Bread unit, the Storage Pools (Stash, Vault, Root-Pool), Standing, Watcher attestations, and the Pact / Council / Partner surface. It is anti-greed by construction: Mission Lock fixes the Six Principles and fee covenant so no council can amend them, and the 8% coupon cap on bonds is a mission-locked ceiling, not a parameter.
The Six Principles
- Real value — the mesh holds real production, not speculation.
- Sustainability — fees are floored and capped; the protocol cannot drain its users.
- Mission-lock — the Six Principles and fee covenant are immutable; no council can amend them.
- Openness — anyone may join; the mesh is a public good.
- Ownership — Holders own their Stash and their Reach; custody is theirs.
- Self-service — a Holder can act without a custodian; the mesh is jurisdiction-light.
Bread unit & scale
The unit of value is Bread, scaled in 11 tiers: Grain → Crumb → Bread → Loaf → Batch → Cake → Bakery → Granary → Mill → Harvest → Earth.
Status
v0.3 (Bearers & Documentation) — in progress. The codebase is a skeleton +
tests layer (Go types + keeper stubs + invariant tests, zero external Go deps)
matching the v0.1/v0.2 pre-MVP pattern. See .ciagent/oy/ROADMAP.md for the
phase plan and .ciagent/oy/PROJECT.md for governance.
Build & test
OpenYield is pure Go with zero external dependencies (go.mod has no
require lines; go 1.22). From the repo root:
go build ./...
go test ./...
Docs
The docs site is MkDocs Material
(a build-only Python dep; not a Go dep — go.mod is unchanged). To
preview locally:
mkdocs serve
# or build to a static site/ dir:
mkdocs build
The site lives under docs/ (see mkdocs.yml for the nav). Publishing CI is
deferred to v0.4 (D-046); v0.3 ships the source.
Lexicon firewall
OpenYield bans 10 financial terms as standalone words (REQ-012) across all Go
source (x/**/*.go) and all docs (README.md + docs/**/*.md). The banned
terms are the words you would expect a legacy financial institution to use;
this README and the docs describe them only by their safe replacements, so
the firewall itself never trips. The firewall is enforced in code by two
sibling Go tests:
lexicon_meta_test.go(v0.2) — scansx/**/*.go.lexicon_meta_docs/lexicon_meta_docs_test.go(v0.3) — scansREADME.md+docs/**/*.md.
Both use lexicon.FindBannedTerm (word-boundary, case-insensitive), so
"OpenYield" is safe (word-boundary does not match the banned term inside an
identifier) but the standalone banned term is not — docs say "real
production" / "real return", and a Holder's identity is Holder /
Reach, never the banned word for a custodial position. See
docs/shared/lexicon.md for the glossary of safe replacements.
Governance
.ciagent/oy/PROJECT.md— full vision, decisions (D-0xx), assumptions..ciagent/oy/PLANS.md— phase plans (v0.1, v0.2, v0.3)..ciagent/oy/REQUIREMENTS.md— REQ coverage matrix..ciagent/oy/ROADMAP.md— release roadmap.