docs(P00): clarify — log D-074..D-084 (v0.7 scope + 8 PO recommendations)
CLARIFY stage for v0.7. All 8 oy-spec §8 open questions resolved by accepting PO recommendations as binding (D-074..D-080) plus the 3 interactive scope-shaping rulings (D-081 scope, plus D-082 phase order, D-083 no IDEATE, D-084 new x/cover module). Key decisions: - D-074: TBD-X = $100k annual Pass volume (REQ-059) - D-075: TBD-Z density formula locked for v0.8 USZ (REQ-095) - D-076: Sovereign Anchors = separate SPEC (experimental v0.7) - D-077: Standing gate binds at Factory runtime (REQ-049) - D-078: Watcher/Voucher cap = 5% Bloom annual (v0.8 REQ-096) - D-079: Anti-Crowding-Out = x/cover/firewall + meta-test (defense in depth) - D-080: MAB lock = tagged streaming + Watcher-witnessed release - D-081: §7 authoritative — v0.7 = REQ-046..066 only; Cluster A-C = v0.8 - D-082: P1 firewall-first → P2 charter+council → P3 guild/chapter → P4 MAB/voucher → P5 anti-capture/secession/pier → P6 final - D-083: no IDEATE (no --ideate flag; scope pre-seeded from §7) - D-084: new x/cover module (D-039 precedent; x/pact PactCover stays as cross-reference) REQUIREMENTS.md extended with v0.7 REQ-046..REQ-066 table + v0.8 deferred REQ-067..REQ-097 traceability. PROJECT.md extended with v0.7 scope + D-074..D-084 clarification decisions. ---ci--- project: oy phase: 0 milestone: v0.7 status: clarify ---/ci---
This commit is contained in:
@@ -6,9 +6,9 @@
|
||||
"project": "oy",
|
||||
"phase": 0,
|
||||
"phase_role": "pre_execution",
|
||||
"stage": "specify",
|
||||
"stage": "clarify",
|
||||
"attempts": 0,
|
||||
"updated_at": "2026-08-19T00:00:00Z",
|
||||
"updated_at": "2026-08-19T00:01:00Z",
|
||||
"next_milestone": null,
|
||||
"previous_milestone": {
|
||||
"milestone": "v0.6",
|
||||
|
||||
+141
-2
@@ -62,7 +62,124 @@ OpenYield (OY) is a durable, anti-greed, jurisdiction-light financial layer —
|
||||
- D-009: Rebased history to fix v1.0 → v0.1 in ---ci--- blocks
|
||||
|
||||
## Milestone
|
||||
v0.6 — Nomad Web UI (in progress; feature type; tags run on the v0.5.x patch line)
|
||||
v0.7 — Fraternal Groups Foundation (in progress; feature type; tags run on the v0.6.x patch line)
|
||||
|
||||
### v0.7 Scope (Fraternal Groups Foundation — Cover Pools + Chapter Federation + Mutual Aid Bonds + Anti-Capture Bill v0.2)
|
||||
|
||||
v0.7 adapts the 1890–1930 fraternal benefit-society model for borderless
|
||||
digital service. It delivers Cover Pools (insurance-like commitment pools
|
||||
with mission-locked reserve floors + Standing gates), Chapter Federation
|
||||
(Parent/Chapter Guild model with secession terms + good-standing liens
|
||||
declared at founding), Mutual Aid Bonds (Cover-Call-couponed bonds with
|
||||
issuance ceiling 3× annual surplus, use-of-proceeds locked to reserve
|
||||
build-out), and the Anti-Capture Bill of Rights v0.2 (13 rights codified,
|
||||
non-amendable, non-waivable by any Charter). This is the milestone that
|
||||
unblocks the v0.1 Q7 "Cover Pool seniority mechanics" deferred item —
|
||||
REQ-046..REQ-050 supply the seniority/gate math and promote `x/pact` Cover
|
||||
from skeleton to a dedicated `x/cover` module runtime (D-039 precedent:
|
||||
`x/hub` split out of `x/pact`'s `PactHubAPI` in v0.3).
|
||||
|
||||
Simtest-grade runtime (D-020 pattern continues — no live chain launch, no
|
||||
mainnet). Cover Pool "live on testnet" (§7 acceptance) = `x/cover` keeper
|
||||
message handlers + simtest-grade end-to-end flows, not mainnet deployment.
|
||||
No `app.go`/`cmd/oyd` exists in the repo; v0.7 does not create one.
|
||||
|
||||
New module: `x/cover` (Cover Pool Factory + Anti-Crowding-Out firewall +
|
||||
Anti-Capture Bill of Rights). The existing `x/pact` `PactCover` enum value
|
||||
remains as a cross-reference (G-003 by-ID-string pattern).
|
||||
|
||||
- **REQ-046** Cover Pool Factory runtime — Factory rejects category launches below in-force reserve floor; supports Cover-Charter deployment; Watcher attestation pipeline operational; category staging per REQ-065.
|
||||
- **REQ-047** Cover Pool reserve target floor 1.5× annual contributions — LOCKED; mission-lock semantic enforced; below-floor auto-pause of Cover-Fee routing.
|
||||
- **REQ-048** Cover Pool reserve target ceiling 2.5× (governance-tunable within 1.5×–2.5×) — Watcher escalation after 12 months; Pool Council MAY vote within bounded range.
|
||||
- **REQ-049** Cover Pool Standing gate minimums — LOCKED; Travel ≥ Trusted 4.0; Health-MCS ≥ Preferred 4.5; Pool MAY tighten but NEVER loosen below protocol minimum. Binds at Factory runtime (D-077).
|
||||
- **REQ-050** Cover-Fee tagging at protocol layer — LOCKED; Cover-Fee Grains carry `category_tag`; settlement rejects category-mismatched Calls (FR-COVER-11); Pool-level fungibility preserved for net-reserve accounting.
|
||||
- **REQ-051** Guild Charter + Common Bond requirement — LOCKED; at formation: Common Bond declared + hash-pinned; Public Profile published (bond summary, disclaimers, Mason count or "private", Pier wrapper if any).
|
||||
- **REQ-052** Cover-Charter (SoB, dispute path, gate, holding period) — LOCKED; distinct from governance charter; signed by Pool Host + witnessed by Watcher at deployment; amendments require Pool supermajority + 7-day cooling + Watcher + Counsel; protocol does NOT enforce SoB content (FR-CHTR-5).
|
||||
- **REQ-053** Chapter Federation (Parent/Chapter, secession terms, liens at founding) — Parent Guild + Chapters; Chapters inherit + may tighten but not loosen; secession terms coded at founding; good-standing liens at founding (not freely increasable); Chapter retains mesh-level Voice (Pier does NOT carry Voice per FR-VOICE-6).
|
||||
- **REQ-054** Mutual Aid Bond (issuance ceiling 1×–3×, coupons in Cover Calls) — LOCKED; issuance ceiling mission-locked at 3× annual surplus; coupons payable in Cover Calls or mutual-aid credits (NEVER Bread); coupon rate bounded by `CouponCapBps=800`; use-of-proceeds locked to reserve build-out; default recapture per FR-MAB-7; Watcher attestation at deployment + quarterly audit. Enforcement: tagged streaming + Watcher-witnessed release (D-080, defense in depth).
|
||||
- **REQ-055** Cover Claims Voucher role + bond + slashing — Specialization of Voucher role; bond default 10× avg Call size per Pool; reviews each Call independently (no self-adjudication, FR-CPCV-2); slashing via §9.4 mechanism with cross-Pool applicability (NFR-SEC-8); bounded earnings.
|
||||
- **REQ-056** Anti-Capture Bill of Rights v0.2 — LOCKED; 13 rights codified in code; cannot be amended or waived by any Charter; covers one-tap exit, no tax on personal Stash, audit-able Voice, cooling, Watcher inspection, Freeholder voucher, Counsel escalation, Anchored-Bread conversion, Wayfarer's Record, secession (founding terms), non-Cover-access, category-mismatch refusal.
|
||||
- **REQ-057** Household simplified — no formal Council, one-tap exit — Household Stand may operate without formal Council; one-tap exit is the dispute path.
|
||||
- **REQ-058** Confederation Voice — one-Stand-one-Vote, internal bundle — LOCKED; Confederation aggregates member Stand Voice one-per-Stand; member Stands may bundle delegated Voice internally via §19 delegation.
|
||||
- **REQ-059** Stand→Pier-customer boundary — escalation rule ($100k per D-074) — When annual Pass volume > $100k, Stand is invited to Hub API; soft upgrade, not a ban.
|
||||
- **REQ-060** Shadow vouch partial credit — 50% weight in Freeholder signal — LOCKED; Shadow vouch weight = 0.5× in Community Endorsement signal (vs 1.0× for non-Shadow vouch).
|
||||
- **REQ-061** Disclaimer cadence — per charter signing — LOCKED; jurisdictional disclaimer surfaced at every charter signing; not session-bounded.
|
||||
- **REQ-062** Pool governance hybrid (Host + 3 elected + Watcher observer) — LOCKED; Cover Pool Council = Pool Host + 3 Masons elected by Pool-eligible Masons + Watcher observer seat; Cover Calls require majority with Watcher observer present. No Anchor seat (Anchor no-Voice §5).
|
||||
- **REQ-063** MAB holder — surplus seniority only, no Voice at dissolution — LOCKED; Mutual Aid Bond holders rank after Cover-Fee contributors but before Bread holders in Pool-surplus distributions (FR-MAB-4); NO Voice in Pool dissolution decisions (claimants, not Masons).
|
||||
- **REQ-064** Secession cooling — 21d Cover-active / 14d non-Cover — LOCKED; Chapter secession cooling: 21 Mesh-days if Cover-active, 14 Mesh-days if non-Cover; secured at founding, not reducible; lien audit required; Cover Call / Bond covenant clearance required before secession completes.
|
||||
- **REQ-065** Cover Pool category staging — Phase 2/3/4 — LOCKED; Phase 2: Travel + Health-MCS + Income-Pause; Phase 3: Equipment/Loss + Life-Burial + Road-Side; Phase 4: Cyber-Skimming + Guild-Internal-Mutual-Aid; Factory respects staging and rejects out-of-phase launches.
|
||||
- **REQ-066** Pier selection — Guild Council chooses, reversible, Pier Selection Index — Guild Council chooses Pier at formation; reversible by Cover Pool supermajority + Counsel witness; mesh maintains Pier Selection Index; Pier-Routed Legal Wrapper OPTIONAL (§5 default-no-wrapper).
|
||||
|
||||
### Milestone Type
|
||||
Feature (REQ-046..REQ-066 are feat-class primitives + test adjuncts for the firewall). Phase 0 → `v0.6.0`; execution phases `v0.6.1..v0.6.5`; final phase patch `v0.6.6` IS the v0.7 milestone release. No separate minor tag. The final-phase audit enforces the feature purity gate (no breaking schema changes; G-003 production firewall intact; G-006 go.mod unchanged — `x/cover` keeper uses existing cosmos-sdk runtime substrate).
|
||||
|
||||
### Out of Scope (v0.7)
|
||||
- Real blockchain interaction / mainnet / IBC / real bearer transports (D-020 continues; runtime = simtest-grade keeper handlers)
|
||||
- A real `oyd` daemon / `app.go` / `cmd/oyd` (no chain runtime exists; deferred to v0.8+)
|
||||
- Sovereign Anchor SPEC (`oy-sovereign-anchors` forthcoming; experimental, not load-bearing per §5/D-076)
|
||||
- USZ classification runtime (v0.8 — depends on Anchor pre-commitment framework, REQ-095)
|
||||
- Cluster A–E + Infrastructure Economics (REQ-067..REQ-097, all v0.8 per D-081)
|
||||
- Pier-Routed Legal Wrapper (OPTIONAL per §5; default-no-wrapper; not implemented as code)
|
||||
- Authentication / sessions / real key management (mock; deferred to v0.8+)
|
||||
- Persistence (mock store; deferred to v0.8+)
|
||||
- The 5 P1+ mainnet-readiness items deferred from v0.5 (governance spam deposit, CLOB batch auction, real IBC simtest, CLOB perf, emitMatchEventHook) — those are v0.8+ mainnet-readiness
|
||||
- SignalKind 4→5 expansion (deferred to v0.8+ governance vote)
|
||||
|
||||
### Prior Milestones
|
||||
- v0.1 — OpenYield Foundation Init (COMPLETE; pre-MVP foundation skeleton; released as v0.0.9)
|
||||
- v0.2 — The Mesh (COMPLETE; skeleton + tests; released as v0.1.5)
|
||||
- v0.3 — Bearers & Documentation (COMPLETE; feature; released as v0.2.6)
|
||||
- v0.4 — Refinement (COMPLETE; NFR; released as v0.3.4)
|
||||
- v0.5 — Bearers Runtime (COMPLETE; feature; released as v0.4.8)
|
||||
- v0.6 — Nomad Web UI (COMPLETE; feature; released as v0.5.6)
|
||||
|
||||
## Prior Milestone
|
||||
v0.6 — Nomad Web UI (complete; feature type; tags ran on the v0.5.x patch line)
|
||||
|
||||
### v0.6 Scope (Nomad Web UI MVP — generated test data, no real chain)
|
||||
|
||||
v0.6 is the project's first UI milestone. It delivers a working prototype Web
|
||||
UI where a person can sign up to be a Nomad (create a Reach + open a Stash)
|
||||
and exercise basic functionality around the (Reach, Stash) components, plus
|
||||
Window authorization, Standing progress, and Bloom accrual views. All data is
|
||||
generated as test fixtures — there is no real blockchain interaction, no live
|
||||
chain launch, no real bearer transports (D-020 continues to govern network
|
||||
deployment). The UI is a greenfield Go `html/template` + HTMX layer served by
|
||||
a Go mock HTTP server that instantiates the real `x/*/types` structs (Reach,
|
||||
Stash, Window, FreeholderSignals, BloomRecord) populated from in-memory
|
||||
fixtures. No keeper, no Cosmos runtime, no `app.go` (none exists in the repo).
|
||||
|
||||
This milestone is the prerequisite for real-world MVP testing: it makes the
|
||||
Nomad path visible and exercisable in a browser. Wiring the UI to a real `oyd`
|
||||
daemon (once one exists) is deferred to v0.7+ (no `app.go`, `cmd/`, or `main.go`
|
||||
exists in the repo today).
|
||||
|
||||
- **REQ-040** Nomad Reach signup Web UI — Go HTTP mock server (`web/`) + "Create a Reach" form + Reach list/detail; grounds the UI in `x/identity/types.Reach`. "Sign up" maps to "Create a Reach" (the word "account" is banned per REQ-012).
|
||||
- **REQ-041** Stash dashboard Web UI — balance in Grain + Bread-scale conversion (using `x/bread/types.BreadScaleAll()`) + 90-day maturity progress bar (`x/stash/types.StashActivity.IsMature`).
|
||||
- **REQ-042** Window authorization Web UI — form to open a Window (scope + duration + rate-limit), lifecycle view (Open→Active→Revoked/Expired via `x/window/types.Window.Activate/Revoke/Expire`), audit log.
|
||||
- **REQ-043** Standing + Freeholder signals progress Web UI — computed from mock `Rating`/`Vouch`/`Slash` records using the locked constants + `GetStandingBucket`/`ComputeDiversityBonus`/`GetVoucherWeight`; 4-signal progress (`FreeholderSignals.IsFreeholderEligible`).
|
||||
- **REQ-044** Bloom accrual Web UI — per-Stash `BloomRecord` view (`AccruedGrain`, `RateBasisPoints`), computed from mock data; shows the 4.5% target rate.
|
||||
- **REQ-045** Extend REQ-012 lexicon firewall to scan `web/templates/**` + `web/static/**` (new `lexicon_meta_web_test.go`). Firewall-first: lands in P1 before content.
|
||||
|
||||
### Milestone Type
|
||||
Feature (all execution phases are `feat` except REQ-045 which is `test`). Phase 0 → `v0.5.0`; execution phases `v0.5.1..v0.5.5`; final phase patch `v0.5.6` IS the v0.6 milestone release. No separate minor tag. The final-phase audit enforces the feature purity gate (no breaking schema changes; G-003 production firewall intact; G-006 go.mod unchanged unless a runtime dep is GRILL-approved — HTMX is a vendored static asset, not a Go dep).
|
||||
|
||||
### Out of Scope (v0.6)
|
||||
- Real blockchain interaction / mainnet / IBC / real bearer transports (D-020 continues)
|
||||
- A real `oyd` daemon / `app.go` / `cmd/oyd` (no chain runtime exists; deferred to v0.7+)
|
||||
- Real Anchors onboarding / Hub API B2B / real custody (simtest/mock only)
|
||||
- Authentication / sessions / real key management (mock; a Reach is created by form submission, stored in-memory)
|
||||
- Persistence (mock store is in-memory; resets on restart)
|
||||
- i18n / multi-language UI
|
||||
- Real Standing oracle / real Bloom accrual engine (computed from fixtures using locked constants)
|
||||
- The 5 P1+ mainnet-readiness items deferred from v0.5 (governance spam deposit, CLOB front-running, real IBC simtest, CLOB perf, emitMatchEventHook testability) — those are v0.7+ mainnet-readiness, not UI work
|
||||
|
||||
### Prior Milestones
|
||||
- v0.1 — OpenYield Foundation Init (COMPLETE; pre-MVP foundation skeleton; released as v0.0.9)
|
||||
- v0.2 — The Mesh (COMPLETE; skeleton + tests; released as v0.1.5)
|
||||
- v0.3 — Bearers & Documentation (COMPLETE; feature; released as v0.2.6)
|
||||
- v0.4 — Refinement (COMPLETE; NFR; released as v0.3.4)
|
||||
- v0.5 — Bearers Runtime (COMPLETE; feature; released as v0.4.8)
|
||||
|
||||
### v0.6 Scope (Nomad Web UI MVP — generated test data, no real chain)
|
||||
|
||||
@@ -307,4 +424,26 @@ Auto-decided defaults logged per clarify workflow Step 4 (full autonomy → acce
|
||||
| D-070 | **G-003 firewall scope: `web/` importing `x/*/types` is app-layer consumption, not a cross-`x/` production import.** G-003 (production import firewall) prohibits production struct imports across `x/<module>/types` packages. `web/` is not an `x/` module — it is the application layer that consumes protocol types, exactly as a future `cmd/oyd` would. The G-003 firewall stays intact: no `x/` module gains a production import of another `x/` module's types via `web/`. GRILL reviews this boundary. | G-003's intent is to prevent cross-module coupling inside the protocol layer. The application layer consuming types is the intended consumption direction. `web/` importing `x/identity/types` is no different from `cmd/oyd` importing it (when one exists). | 0.85 | [treat `web/` as an `x/` module (wrong — it is not protocol); forbid `web/` from importing `x/*/types` (would force TS/JSON fixtures, losing the grounding in locked constants)] |
|
||||
| D-071 | **"Sign up" = create a Reach + open a Stash atomically.** The Nomad entry path per `docs/nomads/reach.md` is "a Nomad starts with a Reach and a Stash". The signup form creates both atomically: a `Reach` with `IsNomad=true` + a `Stash` with `HolderID` matching the Reach's `HolderID` and `BalanceGrain` seeded to a test value (e.g., 500,000 Grain = 50 Bread). No KYC, no custodian (REQ-001 self-service principle). The UI labels this "Create a Reach" (lexicon-clean; "account" is banned). | The docs define the Nomad starting state as Reach + Stash. Creating only a Reach would leave the Nomad unable to view a Stash dashboard (P2) — the atomic creation matches the docs and makes the happy path contiguous. | 0.82 | [create Reach only, defer Stash creation to a separate flow (fractures the happy path); create Reach + Stash + Window all at signup (over-scope for an MVP)] |
|
||||
| D-072 | **Phase ordering** (provisional, planner finalizes): P1 Web foundation + Reach signup + lexicon firewall extension (REQ-040 + REQ-045 — same `web/` territory, vertical slice, firewall-first) → P2 Stash dashboard (REQ-041, depends on Reach existing) → P3 Window authorization (REQ-042, depends on Stash existing) → P4 Standing + Freeholder signals (REQ-043, depends on Reach existing) → P5 Bloom accrual (REQ-044, depends on Stash existing) → P6 final review + audit + milestone ship. Each phase independently shippable; P1 lands the foundation + firewall first (lexicon-clean by construction). | P1 bundles the web foundation + Reach signup + the firewall extension (same `web/` territory, vertical slice). P2..P5 each add one screen, ordered by the Nomad happy path (Reach → Stash → Window → Standing → Bloom). Vertical slices, each phase shippable. | 0.82 | [different wave ordering; bundle Stash + Window in one phase] |
|
||||
| D-073 | **Bread-scale source of truth = `x/bread/types` code constants, NOT `docs/shared/bread-scale.md`.** The code constants (`GrainsPerBread=10000`, `BreadScaleAll()` table) are the locked, tested values; the docs table is aspirational/outdated (states 1,000× ratios that do not match the code). The UI uses the code constants for all Bread-scale conversions. A doc-fix for `docs/shared/bread-scale.md` is flagged as a P1+ follow-up (not a v0.6 deliverable — docs were a v0.3 deliverable; this is a doc-drift fix, not a UI feature). | The code constants are tested (`x/bread/types/types_test.go` asserts them); the docs are not. Using the code as the source of truth keeps the UI consistent with the protocol layer. | 0.90 | [use the docs table (wrong — not tested, disagrees with code); fix the docs in v0.6 (out of scope — doc-drift fix, not a UI feature)] |
|
||||
| D-073 | **Bread-scale source of truth = `x/bread/types` code constants, NOT `docs/shared/bread-scale.md`.** The code constants (`GrainsPerBread=10000`, `BreadScaleAll()` table) are the locked, tested values; the docs table is aspirational/outdated (states 1,000× ratios that do not match the code). The UI uses the code constants for all Bread-scale conversions. A doc-fix for `docs/shared/bread-scale.md` is flagged as a P1+ follow-up (not a v0.6 deliverable — docs were a v0.3 deliverable; this is a doc-drift fix, not a UI feature). | The code constants are tested (`x/bread/types/types_test.go` asserts them); the docs are not. Using the code as the source of truth keeps the UI consistent with the protocol layer. | 0.90 | [use the docs table (wrong — not tested, disagrees with code); fix the docs in v0.6 (out of scope — doc-drift fix, not a UI feature)] |
|
||||
|
||||
## Clarification Decisions (Phase 0 v0.7 — CLARIFY, autonomy=full)
|
||||
|
||||
Auto-decided defaults logged per clarify workflow Step 4 (full autonomy → accept defaults, log decisions). No `--ideate` flag this run; v0.7 scope is pre-seeded from oy-spec v3 §7 (Fraternal Groups Foundation, REQ-046..REQ-066) and ratified at CLARIFY. All 8 §8 open questions resolved by accepting PO recommendations as binding (D-074..D-081). The D-001 refinement-only filter does NOT apply (v0.7 is a feature milestone). Three scope-shaping questions were validated interactively with the user before CLARIFY:
|
||||
|
||||
1. **v0.7 scope (§7 vs §8 Q4)** — user ruled: §7 only (REQ-046..REQ-066, 21 REQs). Cluster A+B+C are v0.8 (D-081).
|
||||
2. **Accept all other PO recommendations** — user ruled: yes, accept all 7 (D-074..D-080) as binding.
|
||||
3. **Generate oy-state v2 at P0 start** — user ruled: yes (done at SPECIFY).
|
||||
|
||||
| ID | Decision | Rationale | Confidence | Alternatives |
|
||||
|----|----------|-----------|------------|--------------|
|
||||
| D-074 | **TBD-X = $100k annual Pass volume** for Stand→Pier-customer boundary escalation (REQ-059). When a Stand's annual Pass volume exceeds $100k (10,000,000 Grain-cents at GrainsPerBread=10000), the Stand is invited to the Hub API as a soft upgrade (not a ban). The threshold is a new `x/stand` const `StandPierEscalationAnnualPassVolumeCents=10000000` (not locked — Pool/Council may tune within bounds). | §8 Q1 PO rec accepted at full autonomy. $100k is the natural inflection where a Stand's activity volume resembles a small Pier-customer more than a personal Holder; soft upgrade preserves self-service (Principle 6). | 0.85 | [$50k (too aggressive — flags mature Households); $250k (too lax — delays Hub API onboarding)] |
|
||||
| D-075 | **TBD-Z density formula for USZ classification (REQ-095, v0.8)** = `<10 Holders per km² AND strategic value ≥ mission score, OR sovereign request, OR mission-aligned override via Mesh Council supermajority`. The formula is locked now (oy-state §3) but the USZ runtime is v0.8 (depends on Anchor pre-commitment framework). | §8 Q2 PO rec accepted. The 3-criteria OR structure matches the spec's "≥3 criteria" requirement (density + strategic value + mission-aligned override) while allowing sovereign request as a separate path. | 0.80 | [pure density threshold (ignores strategic value); Mesh Council sole arbiter (no objective floor)] |
|
||||
| D-076 | **Sovereign Anchors = separate SPEC `oy-sovereign-anchors`**, not folded into `oy-pier`. v0.7 status: experimental, not load-bearing. The `oy-spec` §5 constraint forbids USZ infrastructure financing via Sovereign Anchor partnerships from being load-bearing until the separate SPEC ships. | §8 Q3 PO rec accepted. Sovereign Anchors are infrastructure-scale (reserve entities, banking partners, multi-jurisdiction custody) — a different design surface than the Pier-Routed Legal Wrapper (which is OPTIONAL per §5). Folding them into `oy-pier` would conflate legal-wrapper-scale with infrastructure-scale. | 0.85 | [fold into oy-pier (conflates scales); fold into oy-spec (too large for the net-new-only diff)] |
|
||||
| D-077 | **Standing gate enforcement timing = Cover Pool Factory runtime (v0.7/P1)**, not first live Cover Pool deployment. The `CoverStandingGateTrusted=4.0` and `CoverStandingGatePreferred=4.5` consts bind at the `x/cover` Factory layer — every Pool the Factory launches inherits the protocol minimum; Pool Council MAY tighten but the Factory rejects any launch below the floor. | §8 Q5 PO rec accepted. Gates are protocol-layer invariants (REQ-049 locked=yes); deferring them to first-live-Pool would allow a window where a Pool could launch below the floor. Factory-runtime binding closes the window. | 0.88 | [first-live-Pool binding (allows a below-floor window); per-Pool configurable with no floor (violates REQ-049 locked)] |
|
||||
| D-078 | **Watcher/Voucher operating-expense compensation cap = 5% of Root-Pool Bloom annually** (REQ-096, v0.8). The absolute $TBD-W cap is deferred to v0.8 P0 (needs Root-Pool Bloom size estimate). v0.7 does not implement Watcher/Voucher compensation (Cluster E + Infra Economics are v0.8 per D-081). | §8 Q6 PO rec accepted. 5% Bloom is bounded by the protocol's own yield (not a transfer-payment analog); the absolute cap prevents Bloom-rate collapse if Bloom grows large. Deferring $TBD-W avoids hardcoding a USD figure that depends on mainnet Bloom size. | 0.82 | [10% (too high — risks Bloom-rate dilution); 1% (too low — may not cover Watcher ops); no absolute cap (unbounded if Bloom grows)] |
|
||||
| D-079 | **Anti-Crowding-Out Covenant enforcement = separate `x/cover/firewall` package (runtime) + `lexicon_meta_cover`-style meta-test (test-time)**, defense in depth. The runtime subpackage rejects any code path that would route Cover-Fees outside contributor-pool semantics (e.g., to Root-Pool operating expenses, transfer payments, or non-Cover destinations). The meta-test rejects doc/string drift that would describe such routing. This parallels the lexicon_meta pattern (D-044/D-069 firewall-first). | §8 Q7 PO rec accepted. The covenant is a §1/§2.3 SPEC-001 invariant — "Cover-Fees never crowd out the contributor pool". A separate firewall (not embedded in Factory validation) makes the invariant visible, testable, and resistant to Factory-layer refactors. Defense in depth: runtime rejects the code path, meta-test rejects the doc drift. | 0.84 | [embed in Factory validation (invisible, refactorable); meta-test only (no runtime gate — docs clean but code could route around)] |
|
||||
| D-080 | **MAB use-of-proceeds lock enforcement = tagged streaming + Watcher-witnessed release**, defense in depth. MAB proceeds are tagged with `use_of_proceeds=reserve_build_out` at issuance; the `x/bond` keeper streams tagged Grain to the `x/cover` reserve only, with auto-Still on any misuse detection (attempt to route to a non-reserve destination). Watcher attestation witnesses each release at quarterly audit (REQ-054). | §8 Q8 PO rec accepted. Tagged streaming makes the lock enforceable at the keeper layer (not just auditable post-hoc); Watcher-witnessed release adds the human-attestation layer. Defense in depth: keeper auto-Stills on misuse, Watcher catches what the keeper misses. | 0.85 | [Watcher-quorum-only release (no runtime gate — relies on Watcher catching misuse after the fact); unrestricted + audit-only (no enforcement, just detection)] |
|
||||
| D-081 | **v0.7 scope = §7 authoritative — REQ-046..REQ-066 only (21 REQs).** Cluster A+B+C (REQ-067..REQ-081) are v0.8, NOT v0.7, despite §8 Q4 PO rec suggesting Cluster A+B+C ship in v0.7. The §7 v0.7 acceptance text lists only REQ-046..REQ-066; the §7 v0.8 acceptance text lists REQ-067..REQ-097 with the const firewall extensions. §7 is the milestone contract; §8 Q4 was a recommendation the PO can override — and did, by accepting the "§7 only" interactive ruling before CLARIFY. | §7 acceptance text is the authoritative milestone contract (it lists the REQs and the acceptance criteria). §8 Q4 was a sequencing recommendation, not a binding scope ruling. Shipping 36 REQs in v0.7 would create a mega-milestone with coupled territories (fraternal primitives + their risk mitigations are different vertical slices). v0.7 = foundation; v0.8 = hardening. | 0.90 | [§8 Q4 — Cluster A+B+C in v0.7 (36 REQs, coupled territories); §7 + partial Cluster A only (REQ-067..072, 27 REQs — still couples fraternal + trust-minimization)] |
|
||||
| D-082 | **v0.7 phase ordering** (provisional, planner finalizes): P1 Cover Pool firewall + foundation (REQ-046/047/049/050 — firewall-first, same `x/cover` territory) → P2 Cover-Charter + Council + staging (REQ-048/052/062/065 — extends `x/cover` + `x/council`) → P3 Guild Charter + Chapter Federation (REQ-051/053/057/058/061 — extends `x/guild`, `x/stand`) → P4 MAB + Cover Claims Voucher (REQ-054/055/060/063 — extends `x/bond`, `x/standing`, `x/cover`) → P5 Anti-Capture Bill + secession + Pier (REQ-056/059/064/066 — cross-cutting, lands last as it constrains all prior surfaces) → P6 final review + audit + milestone ship. Each phase independently shippable; P1 lands the firewall + locked floors first (firewall-first pattern per D-044/D-069/D-079). | The 21 REQs cluster into 5 vertical slices by module territory + dependency. P1 is the spine (Factory + firewall + locked floors + gates + tagging); everything else hangs off it. P5 lands last because the Anti-Capture Bill constrains all prior surfaces (non-amendable rights that P1-P4 code must not violate). | 0.82 | [governance-first (REQ-062 first — but it depends on Factory); MAB-first (REQ-054 — but it depends on Cover Pool reserve existing); single mega-phase (couples territories)] |
|
||||
| D-083 | **No IDEATE stage in v0.7** (no `--ideate` flag this run). The feature scope was pre-seeded from oy-spec v3 §7 (REQ-046..REQ-066) and ratified at CLARIFY with all 8 §8 questions resolved. The D-001 refinement-only filter does NOT apply (v0.7 is a feature milestone). | run.md §IDEATE is conditional on `--ideate`. This invocation has no `--ideate`. | 1.00 | [run IDEATE anyway] |
|
||||
| D-084 | **New module `x/cover`** (Cover Pool Factory + Anti-Crowding-Out firewall + Anti-Capture Bill of Rights). The existing `x/pact` `PactCover` enum value remains as a cross-reference (G-003 by-ID-string pattern). This mirrors the D-039 precedent (`x/hub` split out of `x/pact`'s `PactHubAPI` in v0.3) — when a PactType grows into a first-class protocol surface with its own keeper + firewall, it graduates to a dedicated module. The `x/pact` `PactCover` enum value stays as a typed cross-reference so `x/pact` tests still pass; `x/cover` owns the runtime. | REQ-046 (Factory runtime), REQ-047 (reserve floor in `x/pact/cover` per spec text — interpreted as `x/cover` since that's where the Factory lives), REQ-050 (Cover-Fee tagging at protocol layer), REQ-052 (Cover-Charter), REQ-055 (Cover Claims Voucher), REQ-056 (Anti-Capture Bill) all need a home. A dedicated `x/cover` module is the D-039 pattern; keeping them in `x/pact` would overload `x/pact` (which is a 6-Pact enum skeleton, not a Cover Pool runtime). The spec text "codified in `x/pact/cover`" is read as "the Cover surface, which graduated from `x/pact`" — `x/cover` is the graduated module. GRILL ratifies. | 0.82 | [keep everything in `x/pact` (overloads the 6-Pact enum module); create 3 micro-modules (`x/coverpool`, `x/covercharter`, `x/anticapture` — fragments the Cover surface)] |
|
||||
@@ -139,7 +139,72 @@ fixtures. No keeper, no Cosmos runtime, no `app.go`.
|
||||
> module); G-006 go.mod unchanged (HTMX is a vendored static asset, not a Go
|
||||
> dep). The final-phase audit enforces the feature purity gate.
|
||||
|
||||
## IDEATE Traceability (Phase 0 v0.6 — IDEATE stage, autonomy=full)
|
||||
## v0.7 Milestone Requirements (Fraternal Groups Foundation — Feature)
|
||||
|
||||
v0.7 adapts the 1890–1930 fraternal benefit-society model for borderless
|
||||
digital service. It delivers Cover Pools (mission-locked reserve floors +
|
||||
Standing gates), Chapter Federation (Parent/Chapter Guild model with
|
||||
secession terms + good-standing liens at founding), Mutual Aid Bonds
|
||||
(Cover-Call-couponed, 3× annual surplus ceiling, use-of-proceeds locked to
|
||||
reserve build-out), and the Anti-Capture Bill of Rights v0.2 (13 rights
|
||||
codified, non-amendable, non-waivable). This milestone unblocks the v0.1 Q7
|
||||
"Cover Pool seniority mechanics" deferred item — REQ-046..REQ-050 supply the
|
||||
seniority/gate math and promote `x/pact` Cover from skeleton to a dedicated
|
||||
`x/cover` module runtime (D-084, D-039 precedent).
|
||||
|
||||
Simtest-grade runtime (D-020 pattern continues — no live chain launch, no
|
||||
mainnet). Cover Pool "live on testnet" (§7 acceptance) = `x/cover` keeper
|
||||
message handlers + simtest-grade end-to-end flows. No `app.go`/`cmd/oyd`
|
||||
exists; v0.7 does not create one. New module: `x/cover` (Factory + Anti-
|
||||
Crowding-Out firewall + Anti-Capture Bill of Rights). The existing `x/pact`
|
||||
`PactCover` enum value remains as a cross-reference (G-003 by-ID-string).
|
||||
|
||||
| ID | Requirement | Vision § | Priority | Status | Phase |
|
||||
|----|-------------|----------|----------|--------|-------|
|
||||
| REQ-046 | Cover Pool Factory runtime — Factory rejects category launches below in-force reserve floor; supports Cover-Charter deployment; Watcher attestation pipeline operational; category staging per REQ-065 | §16 | High | Not started | v0.7/P1 |
|
||||
| REQ-047 | Cover Pool reserve target floor 1.5× annual contributions — LOCKED; mission-lock semantic enforced; below-floor auto-pause of Cover-Fee routing | §16 | High | Not started | v0.7/P1 |
|
||||
| REQ-048 | Cover Pool reserve target ceiling 2.5× (governance-tunable within 1.5×–2.5×) — Watcher escalation after 12 months; Pool Council MAY vote within bounded range | §16 | High | Not started | v0.7/P2 |
|
||||
| REQ-049 | Cover Pool Standing gate minimums — LOCKED; Travel ≥ Trusted 4.0; Health-MCS ≥ Preferred 4.5; Pool MAY tighten but NEVER loosen below protocol minimum. Binds at Factory runtime (D-077) | §16, §9.3 | High | Not started | v0.7/P1 |
|
||||
| REQ-050 | Cover-Fee tagging at protocol layer — LOCKED; Cover-Fee Grains carry `category_tag`; settlement rejects category-mismatched Calls (FR-COVER-11); Pool-level fungibility preserved for net-reserve accounting | §16 | High | Not started | v0.7/P1 |
|
||||
| REQ-051 | Guild Charter + Common Bond requirement — LOCKED; at formation: Common Bond declared + hash-pinned; Public Profile published (bond summary, disclaimers, Mason count or "private", Pier wrapper if any) | §12 | Medium | Not started | v0.7/P3 |
|
||||
| REQ-052 | Cover-Charter (SoB, dispute path, gate, holding period) — LOCKED; distinct from governance charter; signed by Pool Host + witnessed by Watcher at deployment; amendments require Pool supermajority + 7-day cooling + Watcher + Counsel; protocol does NOT enforce SoB content (FR-CHTR-5) | §16 | High | Not started | v0.7/P2 |
|
||||
| REQ-053 | Chapter Federation (Parent/Chapter, secession terms, liens at founding) — Parent Guild + Chapters; Chapters inherit + may tighten but not loosen; secession terms coded at founding; good-standing liens at founding (not freely increasable); Chapter retains mesh-level Voice (Pier does NOT carry Voice per FR-VOICE-6) | §12 | High | Not started | v0.7/P3 |
|
||||
| REQ-054 | Mutual Aid Bond (issuance ceiling 1×–3×, coupons in Cover Calls) — LOCKED; issuance ceiling mission-locked at 3× annual surplus; coupons payable in Cover Calls or mutual-aid credits (NEVER Bread); coupon rate bounded by `CouponCapBps=800`; use-of-proceeds locked to reserve build-out; default recapture per FR-MAB-7; Watcher attestation at deployment + quarterly audit. Enforcement: tagged streaming + Watcher-witnessed release (D-080) | §17 | High | Not started | v0.7/P4 |
|
||||
| REQ-055 | Cover Claims Voucher role + bond + slashing — Specialization of Voucher role; bond default 10× avg Call size per Pool; reviews each Call independently (no self-adjudication, FR-CPCV-2); slashing via §9.4 mechanism with cross-Pool applicability (NFR-SEC-8); bounded earnings | §9.4, §15 | High | Not started | v0.7/P4 |
|
||||
| REQ-056 | Anti-Capture Bill of Rights v0.2 — LOCKED; 13 rights codified in code; cannot be amended or waived by any Charter; covers one-tap exit, no tax on personal Stash, audit-able Voice, cooling, Watcher inspection, Freeholder voucher, Counsel escalation, Anchored-Bread conversion, Wayfarer's Record, secession (founding terms), non-Cover-access, category-mismatch refusal | §8.2 [3] | High | Not started | v0.7/P5 |
|
||||
| REQ-057 | Household simplified — no formal Council, one-tap exit — Household Stand may operate without formal Council; one-tap exit is the dispute path | §11 | Low | Not started | v0.7/P3 |
|
||||
| REQ-058 | Confederation Voice — one-Stand-one-Vote, internal bundle — LOCKED; Confederation aggregates member Stand Voice one-per-Stand; member Stands may bundle delegated Voice internally via §19 delegation | §11 | Medium | Not started | v0.7/P3 |
|
||||
| REQ-059 | Stand→Pier-customer boundary — escalation rule ($100k per D-074) — When annual Pass volume > $100k (10M Grain-cents), Stand is invited to Hub API; soft upgrade, not a ban | §11, §13 | Medium | Not started | v0.7/P5 |
|
||||
| REQ-060 | Shadow vouch partial credit — 50% weight in Freeholder signal — LOCKED; Shadow vouch weight = 0.5× in Community Endorsement signal (vs 1.0× for non-Shadow vouch) | §9.1 | Medium | Not started | v0.7/P4 |
|
||||
| REQ-061 | Disclaimer cadence — per charter signing — LOCKED; jurisdictional disclaimer surfaced at every charter signing; not session-bounded | §11 | Low | Not started | v0.7/P3 |
|
||||
| REQ-062 | Pool governance hybrid (Host + 3 elected + Watcher observer) — LOCKED; Cover Pool Council = Pool Host + 3 Masons elected by Pool-eligible Masons + Watcher observer seat; Cover Calls require majority with Watcher observer present. No Anchor seat (Anchor no-Voice §5) | §16 | High | Not started | v0.7/P2 |
|
||||
| REQ-063 | MAB holder — surplus seniority only, no Voice at dissolution — LOCKED; MAB holders rank after Cover-Fee contributors but before Bread holders in Pool-surplus distributions (FR-MAB-4); NO Voice in Pool dissolution decisions (claimants, not Masons) | §17 | Medium | Not started | v0.7/P4 |
|
||||
| REQ-064 | Secession cooling — 21d Cover-active / 14d non-Cover — LOCKED; Chapter secession cooling: 21 Mesh-days if Cover-active, 14 Mesh-days if non-Cover; secured at founding, not reducible; lien audit required; Cover Call / Bond covenant clearance required before secession completes | §4.6 [3] | Medium | Not started | v0.7/P5 |
|
||||
| REQ-065 | Cover Pool category staging — Phase 2/3/4 — LOCKED; Phase 2: Travel + Health-MCS + Income-Pause; Phase 3: Equipment/Loss + Life-Burial + Road-Side; Phase 4: Cyber-Skimming + Guild-Internal-Mutual-Aid; Factory respects staging and rejects out-of-phase launches | §16 | High | Not started | v0.7/P2 |
|
||||
| REQ-066 | Pier selection — Guild Council chooses, reversible, Pier Selection Index — Guild Council chooses Pier at formation; reversible by Cover Pool supermajority + Counsel witness; mesh maintains Pier Selection Index; Pier-Routed Legal Wrapper OPTIONAL (§5 default-no-wrapper) | §13 | Medium | Not started | v0.7/P5 |
|
||||
|
||||
> REQ-046..REQ-066 are NEW in v0.7. All are `feat`-class primitives (Cover
|
||||
> Pool Factory, Cover-Charter, Chapter Federation, MAB, Cover Claims Voucher,
|
||||
> Anti-Capture Bill) + a `test` adjunct for the Anti-Crowding-Out firewall
|
||||
> (D-079, ships in P1 firewall-first). No breaking schema changes to the
|
||||
> locked-const firewall; G-003 production firewall intact (`x/cover` is a new
|
||||
> module that references `x/pact`/`x/standing`/`x/bond` by ID-string only);
|
||||
> G-006 go.mod unchanged (`x/cover` keeper uses existing cosmos-sdk runtime
|
||||
> substrate). The final-phase audit enforces the feature purity gate.
|
||||
|
||||
### v0.8+ Milestone Requirements (Risk Mitigations + Infrastructure Economics — Deferred)
|
||||
|
||||
> All 31 REQs (REQ-067..REQ-097) are deferred to v0.8 per D-081 (§7
|
||||
> authoritative). Listed here for traceability; not started this milestone.
|
||||
|
||||
| ID | Requirement | Vision § | Priority | Status | Target milestone |
|
||||
|----|-------------|----------|----------|--------|------------------|
|
||||
| REQ-067..REQ-072 | Cluster A — Trust-minimization attacks (audit cadence, bridge pause, Eye quorum, Watcher fork-recovery, Anchor concentration cap, RWA venue) | §7, §16, §20, §6 | High | Deferred | v0.8 |
|
||||
| REQ-073..REQ-076 | Cluster B — Economic structural (sovereign reserve, Root Basket liquidity, MAB default recapture, Forex multi-venue) | §6, §13, §17 | High/Medium | Deferred | v0.8 |
|
||||
| REQ-077..REQ-081 | Cluster C — Capture & centralization (governance capture, Processor FCFS, Partner/Pier capture, Pool governance capture, secession abuse) | §19, §15, §13, §16, §4.6 | High/Medium | Deferred | v0.8 |
|
||||
| REQ-082..REQ-086 | Cluster D — Identity & reputation (Sybil, Window abuse, vouching cascade, norm chilling, registry identity) | §9.2, §10, §9.1, §9.4, §4.9, §11 | High/Medium | Deferred | v0.8 |
|
||||
| REQ-087..REQ-091 | Cluster E — Adoption & organic (cycle defaults, charter ambiguity, cross-chain drift, fee-covenant override, adverse selection) | §16, §11, §7, §20, §18, §19 | Medium/High | Deferred | v0.8 |
|
||||
| REQ-092..REQ-097 | Infrastructure Economics (relay fee schedule, coverage standing bonus, IYB with subordination, USZ classification, Watcher/Voucher compensation, Anchor no-Voice) | §15, §9.1, §17, §13, §7, §19 | High/Medium | Deferred | v0.8 |
|
||||
|
||||
The IDEATE stage ran the three ideation tiers (mechanical, backend-enriched,
|
||||
cross-project) on the v0.6 milestone scope and ratified 6 ideas (IDEATE-09..
|
||||
|
||||
Reference in New Issue
Block a user