82ae6cf5a2
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---
83 lines
3.4 KiB
Markdown
83 lines
3.4 KiB
Markdown
# 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
|
|
|
|
1. **Real value** — the mesh holds real production, not speculation.
|
|
2. **Sustainability** — fees are floored and capped; the protocol cannot drain its users.
|
|
3. **Mission-lock** — the Six Principles and fee covenant are immutable; no council can amend them.
|
|
4. **Openness** — anyone may join; the mesh is a public good.
|
|
5. **Ownership** — Holders own their Stash and their Reach; custody is theirs.
|
|
6. **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:
|
|
|
|
```sh
|
|
go build ./...
|
|
go test ./...
|
|
```
|
|
|
|
## Docs
|
|
|
|
The docs site is [MkDocs Material](https://squidfunk.github.io/mkdocs-material/)
|
|
(a build-only Python dep; **not** a Go dep — `go.mod` is unchanged). To
|
|
preview locally:
|
|
|
|
```sh
|
|
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) — scans `x/**/*.go`.
|
|
- `lexicon_meta_docs/lexicon_meta_docs_test.go` (v0.3) — scans `README.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. |