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---
46 lines
2.0 KiB
Markdown
46 lines
2.0 KiB
Markdown
# Maps & Pay
|
|
|
|
**Maps** and **Pay** are the day-to-day Mesh Experience a Nomad uses on the
|
|
mesh. Maps finds services; Pay settles them. Both run over the
|
|
[bearers](bearers.md) and read the [Mirror](../shared/watchers-mirror.md) so a
|
|
Nomad can find and pay for a service on a surveillance-resistant bearer
|
|
without an internet connection to OY Chain.
|
|
|
|
## Maps
|
|
|
|
Maps is the directory of services a Nomad can reach. A service is anything
|
|
a Partner or a Stand exposes to the mesh: a Care service, a SIM, a Vault,
|
|
a Mailbox (preview of v0.3 P5 — see [Pacts](pacts.md) for the Hub API). Maps
|
|
is sorted by geographic proximity (REQ-007): a Nomad physically closer to a
|
|
service or its operator is shown that service first. There is no paid
|
|
ranking; the order is proximity, not promotion.
|
|
|
|
## Pay
|
|
|
|
Pay is how a Nomad settles a service. A payment is a transfer of Bread
|
|
from the Nomad's [Stash](stash.md) to the service operator's Stash, signed
|
|
by the Nomad's [Reach](reach.md). The fee covenant floors and caps the fee;
|
|
inside a Guild, a Hand-Pass is free at the protocol level (REQ-017). Pay
|
|
runs over any bearer, first-to-deliver-wins.
|
|
|
|
## Authorize, don't hand over
|
|
|
|
For recurring services a Nomad does not re-sign every payment. Instead
|
|
the Nomad opens a [Window](window.md) to the service: a scoped,
|
|
time-limited, rate-limited, revocable capability that lets the service pull
|
|
value from the Stash within bounds the Nomad set. The Window is audited;
|
|
the Nomad can revoke it at any time. This is the self-service principle in
|
|
practice: the Nomad delegates a capability, not custody.
|
|
|
|
## Find, pay, verify
|
|
|
|
A Nomad's loop is:
|
|
|
|
1. **Find** a service on Maps.
|
|
2. **Pay** once, or **authorize** a [Window](window.md) for recurring use.
|
|
3. **Verify** the service against the Watcher attestations on the Mirror
|
|
(see [Watchers & Mirror](../shared/watchers-mirror.md)).
|
|
|
|
See [Stash](stash.md) for where the Bread comes from, [Window](window.md)
|
|
for the delegation primitive, and [Standing](standing.md) for how a
|
|
service operator's history is measured. |