27b565c965
---ci--- project: oy phase: 1 milestone: v0.6 status: execute ---/ci---
112 lines
4.6 KiB
Markdown
112 lines
4.6 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.6 (Nomad Web UI) — in progress.** v0.5 shipped the Bearers Runtime
|
|
(simtest-grade keeper handlers for 8 x/ modules). v0.6 adds the project's
|
|
first UI: a Go `html/template` + HTMX prototype Web UI in `web/` where a
|
|
visitor can sign up to be a Nomad (create a Reach + open a Stash) and
|
|
exercise basic functionality around Reach, Stash, Window, Standing, and
|
|
Bloom. All data is generated test fixtures — no real chain. 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 ./...
|
|
```
|
|
|
|
## Web UI
|
|
|
|
The Nomad Web UI (v0.6) is a Go `html/template` server with HTMX progressive
|
|
enhancement, served by a mock HTTP server in `web/` that instantiates the
|
|
real `x/*/types` structs from in-memory fixtures. No node, no build step,
|
|
no real chain. To run it:
|
|
|
|
```sh
|
|
go run ./web
|
|
# opens on http://localhost:8080 (PORT env var overridable)
|
|
```
|
|
|
|
Five screens, all reachable from the home nav:
|
|
|
|
- `/reach` — create a Reach (sign up to be a Nomad) + Reach list/detail
|
|
- `/stash/{holderID}` — Stash dashboard (Grain balance + Bread scale + 90-day maturity)
|
|
- `/window` — Window authorization (open/lifecycle/audit log)
|
|
- `/standing/{reachID}` — Standing + Freeholder signals progress
|
|
- `/bloom/{stashID}` — Bloom accrual view
|
|
|
|
HTMX is a single vendored JS file (`web/static/htmx.min.js`), NOT a Go
|
|
dependency — `go.mod` stays unchanged (G-006).
|
|
|
|
## 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`), all docs (`README.md` + `docs/**/*.md`), and all web UI
|
|
files (`web/**/*.{html,js,go}`). 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 three 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`.
|
|
- `lexicon_meta_web/lexicon_meta_web_test.go` (v0.6) — scans
|
|
`web/templates/**` + `web/static/**` + `web/**/*.go`.
|
|
|
|
All three 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. |