Files
openyield/x
cloudinit-bot c1aa274ab1 docs(P05): complete Bearers skeleton II phase
P5 complete. Bearers skeleton II (D-020/D-035 pattern, zero ext deps):
- x/hub/types (NEW): HubService enum (3), LendingCouponCapBps=800 LOCAL
  const cross-documented to D-028 (A-304, no x/bond import), ClampLendingCoupon.
- x/services/types (NEW): ServiceKind enum (4), window-id + operator-reach-id
  by-ID-string refs (A-307, G-003).
- x/bond/types (EXT): GrowthBond, ClampGrowth with G-012 underflow guard
  (currentBps >= cap returns 0, no uint32 underflow), OrderSide/OrderStatus/
  SecondaryOrder. D-028 regression (800/0 consts unchanged).
Coverage: hub 93.3%, services 100%, bond 95.1%. Both firewalls green. G-003 intact.

---ci---
project: oy
phase: 5
milestone: v0.3
status: complete
tag_base: v0.2.x
phase_role: execution
requirements:
  covered: [REQ-024, REQ-025, REQ-026]
  partial: []
---/ci---
2026-08-17 22:27:23 +00:00
..

Component 1: OY Chain & Mirror — Phase 1 Skeleton

Status

v0.0.1 — skeleton with type definitions and locked-constant tests

Vision References

  • §7: Architecture — Three Layers and the Mirror
  • §3: Still/Stir (pause/resume)

Modules

x/watcher — Watcher Bond & Attestation Quorum

  • types.Watcher — bonded Watcher (§7: 100,000 Bread minimum bond)
  • types.Attestation — daily reserve snapshot signed by a Watcher
  • types.ReserveSnapshot — off-chain reserve state (off-chain total, on-chain Bread, basket breakdown)
  • types.QuorumStatus — QuorumMet / QuorumLost / StaleEpoch
  • types.SlashReason — InsufficientBond / StaleAttestation / GeographicCollusion / Forgery

Locked constants (§7):

  • MinBond = 100000 (100,000 Bread)
  • Quorum = 6 (6-of-9)
  • MaxWatchers = 9
  • AttestationEpochHours = 24 (daily)

x/mirror — Reserve Ratio Publication

  • types.NavPerBread — Net Asset Value per Bread (§4.2)
  • types.ReserveRatio — real-time published ratio with quorum flag

x/still — Pause/Resume (Still/Stir)

  • types.StillState — StirActive / StillPaused (§3)
  • types.StillReason — CouncilVote / QuorumLost / SecurityAlert
  • types.StillRecord — tracks pause events
  • Auto-still on quorum lost (§4.2: Forge/Fold blocked until quorum restored)

Tests

12 tests, all passing:

  • Watcher: MinBond, Quorum, MaxWatchers, AttestationEpoch, DefaultParams (5)
  • Still: DefaultStillState, AutoStillOnQuorumLost, StillStates (3)
  • Mirror: DefaultPublishInterval, ModuleName, NavPerBreadStruct, ReserveRatioQuorum (4)

What's NOT in this skeleton (deferred to P1 completion)

  • Cosmos SDK app.go full integration (requires SDK v0.50+ dependency resolution)
  • Keeper implementations (BondWatcher, SubmitAttestation, VerifyQuorum, SlashWatcher)
  • CLI commands (oyd tx watcher bond, oyd query watcher quorum)
  • Proto definitions (Buf-generated types)
  • CometBFT consensus setup
  • Genesis import/export

Next Steps (P1 continuation)

  1. Resolve Cosmos SDK v0.50 dependency tree
  2. Implement keeper logic with store operations
  3. Add proto definitions and code generation
  4. Wire modules into app.go
  5. Build oyd daemon
  6. Integration test: 9 Watchers bond, submit attestations, verify quorum