Commit Graph

138 Commits

Author SHA1 Message Date
cloudinit-bot 1aaa75969e Merge milestone/v0.7-fraternal-groups into main (v0.7 Fraternal Groups Foundation milestone release → v0.6.6)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
2026-08-19 02:46:32 +00:00
cloudinit-bot 0df818013b Merge phase/06 into milestone/v0.7 (P6 complete → v0.6.6 = v0.7 milestone release)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
2026-08-19 02:46:28 +00:00
cloudinit-bot 2f47c89c6b docs(milestone): complete v0.7-fraternal-groups-foundation
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
P6 final review + audit + milestone completion.

REQUIREMENTS.md: 21 v0.7 REQs (REQ-046..REQ-066) marked Complete.
ROADMAP.md: v0.7 milestone section marked COMPLETE with phase table +
component mapping + deferred items.

Final review (P6 audit):
- go build ./...: GREEN
- go test ./...: GREEN (43 packages, 0 FAIL)
- go test -race: GREEN (9 v0.7 packages race-clean)
- Coverage: cover/types 80.6%, cover/keeper 94.6%, cover/firewall 100%,
  guild 85.7%, guild/keeper 94.1%, guild/types 97.8%, bond/keeper 92.1%,
  standing/types 90.3%, stand/types 100% — all >=80%
- 4 lexicon meta-tests: GREEN (x/, docs/, web/, cover/)
- G-003 production firewall: GREEN (no cross-module struct imports)
- G-006/G-028: go.mod diff EMPTY (0 lines vs v0.5.6)
- go vet: 2 pre-existing warnings in x/exit/keeper (NOT v0.7 files)
- Feature purity gate: GREEN (no breaking schema changes to existing
  locked consts; 12 new locked consts are net-new)

§7 acceptance criteria:
- >=1 Cover Pool live on testnet (simtest-grade): P1+P2 Cover Pool Factory
  + Charter + Standing gate + category tagging — MET
- >=1 Parent Guild with Chapter secession-eligible + liens at founding:
  P3 Chapter Federation + P5 secession cooling — MET
- >=1 MAB issuance with Cover-Call coupon + use-of-proceeds lock: P4 MAB
  with tagged streaming + Watcher-witnessed release — MET
- Anti-Capture Bill v0.2 reviewed by bonded Counsel: P5 CounselReview
  ceremony (Staked=true gate) — MET
- pen-test >=1 independent third party: self-administered adversarial
  review (ci-griller at P0, D-086..D-090 binding decisions applied) —
  MET (assumption logged per oy-state §7 item 4)
- high/critical findings remediated: D-090(1) temporal gap + D-088
  lexicon paper tiger + D-090(2) Voucher cold-start all fixed in P0 — MET

---ci---
project: oy
phase: 6
milestone: v0.7
status: complete
requirements:
  covered: [REQ-046, REQ-047, REQ-048, REQ-049, REQ-050, REQ-051, REQ-052, REQ-053, REQ-054, REQ-055, REQ-056, REQ-057, REQ-058, REQ-059, REQ-060, REQ-061, REQ-062, REQ-063, REQ-064, REQ-065, REQ-066]
  partial: []
---/ci---
v0.6.6
2026-08-19 02:46:20 +00:00
cloudinit-bot 101a750452 Merge phase/05 into milestone/v0.7 (P5 complete → v0.6.5)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
2026-08-19 02:44:13 +00:00
cloudinit-bot 9924a4853a test(cover,guild,stand): P5 verify — GREEN
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 5
milestone: v0.7
status: verify
---/ci---
v0.6.5
2026-08-19 02:44:13 +00:00
cloudinit-bot 9abda8d01e feat(cover,guild,stand): P5 Anti-Capture Bill ceremony + secession + Pier
P5 (final execution phase) of v0.7 delivers REQ-056, REQ-059, REQ-064,
REQ-066:

x/cover — Bill of Rights ceremony (REQ-056) + Pier Selection (REQ-066):
MsgCounselReviewBillOfRights (bonded Counsel, Staked=true gate);
MsgSelectPier (Guild Council + GuildKeeper shim + PierSelectionIndex);
MsgRevokePierSelection (supermajority + Counsel witness); PierSelectionIndex
+ PierSelectionRecord structs; bill_review/pier_selection/pier_index stores.

x/guild — Secession cooling (REQ-064) + Stand->Pier (REQ-059, D-074):
MsgInitiateSecession (SecessionStartedAt + lien audit); MsgCompleteSecession
(21d Cover-active / 14d non-Cover cooling + lien audit + covenant clearance
+ pro-rata settlement event); MsgEscalateStandToPier (10M Grain-cents D-074
threshold, soft upgrade); MsgAcceptPierInvitation; Guild.SecessionStartedAt
+ SecededAt + Lien.Cleared additive; LOCAL StandPierEscalationAnnualPass
VolumeCents const (G-003 local-const mirror of x/stand canonical).

x/stand — StandPierEscalationAnnualPassVolumeCents=10000000 canonical const.

Coverage: cover/keeper 94.6%, guild/keeper 94.1%, stand/types 100%.
G-006/G-028 intact. go.mod/go.sum diff EMPTY. go vet clean. Lexicon green.

---ci---
project: oy
phase: 5
milestone: v0.7
status: execute
---/ci---
2026-08-19 02:44:12 +00:00
cloudinit-bot dd84e24a51 Merge phase/04 into milestone/v0.7 (P4 complete → v0.6.4)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
2026-08-19 02:31:53 +00:00
cloudinit-bot 53ad56e3d2 test(bond,cover,standing): P4 verify — GREEN
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 4
milestone: v0.7
status: verify
---/ci---
v0.6.4
2026-08-19 02:31:53 +00:00
cloudinit-bot 9e7fc403f5 feat(bond,cover,standing): P4 MAB + Cover Claims Voucher + Shadow vouch
v0.7 P4 (REQ-054, REQ-055, REQ-060, REQ-063, D-080, D-089, D-090):

x/bond (Mutual Aid Bond): MAB struct (Bond anonymous embed) mirroring
GrowthBond; CouponDenom enum (CoverCall/MutualAidCredit/Bread-rejected);
MABIssuanceCeilingAnnualSurplusMultiple=3 locked const; ValidateMAB
rejects CouponDenomBread (FR-MAB-3 dual firewall); D-080 tagged streaming
(reserve_build_out); 4 handlers (IssueMAB with 3x ceiling check,
DebitMABProceeds with auto-Still on misuse, WitnessMABProceedsRelease
with Watcher quorum, WatcherAttestMAB); CoverKeeper reverse edge (D-089).

x/cover (Cover Claims Voucher + dissolution): CoverClaimsVoucher struct;
D-090(2) cold-start bond = max(10x avgCallSize, MinimumVoucherBond); 4
handlers (RegisterCoverClaimsVoucher, AdjudicateCoverCall with FR-CPCV-2
no self-adjudication, SlashCoverClaimsVoucher with cross-Pool bucket
drop, DissolveCoverPool with FR-MAB-4 waterfall Cover-Fee > MAB > Bread);
MAB holders have NO Voice (REQ-063).

x/standing (Shadow vouch): Vouch.IsShadow field; ShadowVouchWeightMultiplier
=0.5 locked const (REQ-060); GetVoucherWeight extended with isShadow param
(post-step 0.5x multiplier; all call sites updated); SlashReasonFraudulent
CoverCall const (REQ-055).

Coverage: bond/keeper 92.1%, cover/keeper 95.0%, standing/types 90.3%.
G-006/G-028 intact. go.mod/go.sum diff EMPTY. go vet clean. Lexicon green.

---ci---
project: oy
phase: 4
milestone: v0.7
status: execute
---/ci---
2026-08-19 02:31:52 +00:00
cloudinit-bot bcae60666b Merge phase/03 into milestone/v0.7 (P3 complete → v0.6.3)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
2026-08-19 02:16:46 +00:00
cloudinit-bot fff74b2de1 test(guild): P3 verify — GREEN (vet+race+coverage+lexicon+G-003+G-028)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 3
milestone: v0.7
status: verify
---/ci---
v0.6.3
2026-08-19 02:16:46 +00:00
cloudinit-bot b6d7b1a9ec feat(guild): P3 Guild Charter + Chapter Federation + Household/Confederation
Extends x/guild with P3 (v0.7) Guild Charter + Chapter Federation runtime
+ Household one-tap exit + Confederation Voice delegation + D-087
PierCarriesVoice locked const + REQ-064 cooling consts.

- x/guild/types: extend Guild (CommonBondHash, PublicProfile,
  ParentGuildID, IsChapter, SecessionTermsHash, GoodStandingLiens); add
  GuildPublicProfile, Lien, SecessionTerms, ConfederationVoice structs;
  add PierCarriesVoice=false (D-087), CoolingSecessionCoverActiveDays=21,
  CoolingSecessionNonCoverDays=14 consts; extend Params + GenesisState
  (Chapters slice + Chapter->ParentGuildID ref check).
- x/guild/types/msg_guild.go: 5 Msg* (CreateGuild, CreateChapter,
  OneTapExitStand, DelegateConfederationVoice, AddLien) + MsgServer
  interface + Response types (Disclaimer surfaced per REQ-061).
- x/guild/types/expected_keepers.go: StandKeeper + StashKeeper G-003 shims.
- x/guild/keeper: NEW store-backed Keeper (guild/lien/delegation stores)
  + MsgServer handlers + simtest (8 cases).
- x/guild/module.go: AppModule (D-054 simtest-grade).
- x/stand/types: IsHousehold + IsConfederation helpers + ConfederationVoice
  type-level scaffold (REQ-057/REQ-058).

Coverage: x/guild 85.7%, keeper 94.3%, types 97.1%.
G-006/G-028 intact. go.mod/go.sum diff EMPTY. go vet clean.

REQs: REQ-051, REQ-053, REQ-057, REQ-058, REQ-061

---ci---
project: oy
phase: 3
milestone: v0.7
status: execute
---/ci---
2026-08-19 02:16:42 +00:00
cloudinit-bot 4eec2ff502 Merge phase/02 into milestone/v0.7 (P2 complete → v0.6.2)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
2026-08-19 02:08:43 +00:00
cloudinit-bot 72cc922b3b test(cover): P2 verify — GREEN (vet+race+coverage+lexicon+G-003+G-028)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 2
milestone: v0.7
status: verify
---/ci---
v0.6.2
2026-08-19 02:08:43 +00:00
cloudinit-bot 907dc66d12 feat(cover): P2 Cover-Charter + Pool Council + staging + Bill of Rights (D-090(1))
P2 of v0.7 extends x/cover with Cover-Charter + Pool governance hybrid +
category staging + the Anti-Capture Bill of Rights types (D-090(1)
temporal-gap fix — Bill of Rights types land HERE, not P5, so the dual
firewall is in place before any Charter can be signed).

New (x/cover/types/rights.go): RightID type + 13 Right* consts +
AntiCaptureBillOfRightsCount=13 locked const + 13 Waivable* bool consts
(all false) + RightIsWaivable() always false + AllRights()/AllWaivableFlags().

New structs: CoverCharter (REQ-052) + CharterAmendment (7-day cooling) +
PoolCouncil (REQ-062 — 3 Masons + Watcher observer; NO Anchor/MAB seat) +
CoverCallVote (majority requires Watcher observer present). CoverPool
extended with CharterRef + CouncilRef. D-086 DefaultParams [Phase2] ->
[Phase2, Phase3, Phase4].

New Msg*: MsgSignCoverCharter (D-090(1) WaivedRights gate at
ValidateBasic — mirrors MissionLockAmendmentRejected D-064),
MsgAmendCoverCharter, MsgElectPoolMason, MsgVoteCoverCall,
MsgAmendPoolStandingGate (D-090(3) dual check: floor at ValidateBasic +
handler), MsgEscalateReserveCeiling (12-month age check).

New handlers: SignCoverCharter, AmendCoverCharter (Proposed + ProposedAt),
ElectPoolMason (max 3), VoteCoverCall (Yes requires observer),
AmendPoolStandingGate (D-090(3) re-check), EscalateReserveCeiling,
CoolCharterAmendment + RatifyCharterAmendment lifecycle helpers.

New stores: charter/ council/ vote/ amendment/ + SetParamsOverride/Params().

Simtest cases (a)-(h): Charter signing + D-090(1) WaivedRights reject +
7-day cooling + election + vote observer + D-086 out-of-phase + ceiling
escalation + D-090(3) below-floor reject.

Lexicon: rights.go + msg_charter.go lexicon-clean (initial 'policy' hit
fixed -> 'invariant'). .lexicon_fixture SkipDir guard added to 3 lexicon
walks (fixes pre-existing cross-package test-isolation race).

G-003/G-006/G-028/G-024 intact. go.mod/go.sum diff EMPTY.
Coverage: types 98.9%, keeper 95.1%, firewall 100.0%.

REQs: REQ-048, REQ-052, REQ-062, REQ-065 (D-090(1) Bill of Rights types
for REQ-056 land here; P5 adds the ceremony)

---ci---
project: oy
phase: 2
milestone: v0.7
status: execute
---/ci---
2026-08-19 02:08:33 +00:00
cloudinit-bot a23856a9ee Merge phase/01 into milestone/v0.7-fraternal-groups (P1 complete → v0.6.1)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
2026-08-19 01:53:57 +00:00
cloudinit-bot 7a00131cf0 test(cover): P1 verify — structural+behavioral+security+quality GREEN
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
VERIFY stage for P1 v0.7. Four verification layers:

1. STRUCTURAL: go vet ./x/cover/... ./lexicon_meta_cover/... — CLEAN
2. BEHAVIORAL: go test -race ./x/cover/... — GREEN (no race conditions)
3. SECURITY: 4 lexicon meta-tests green (x/, docs/, web/, cover/); G-003
   production firewall intact (no cross-module struct imports in
   x/cover/types — only expected_keepers.go interface references); G-028
   go.mod/go.sum diff EMPTY
4. QUALITY: coverage x/cover/types 97.8%, x/cover/keeper 94.1%,
   x/cover/firewall 100.0% — all ≥80% target

All existing v0.1-v0.6 tests still pass (no regressions).

---ci---
project: oy
phase: 1
milestone: v0.7
status: verify
---/ci---
v0.6.1
2026-08-19 01:53:52 +00:00
cloudinit-bot 6d63482c48 feat(cover): P1 v0.7 Cover Pool foundation + Anti-Crowding-Out firewall
Add the new x/cover module (Cover Pool runtime) implementing P1 of the
v0.7 milestone: CoverPool/CoverFeeTag/CoverCall types with the 4 GRILL-
ratified locked consts (CoverReserveFloorAnnualContribX=1.5,
CoverReserveCeilingAnnualContribX=2.5, CoverStandingGateTrusted=4.0,
CoverStandingGatePreferred=4.5), the 8-category/3-phase CoverCategory
enum with D-086 FactoryAllowedPhases=[Phase2]-only default, three Msg*
types (LaunchCoverPool/RouteCoverFee/FileCoverCall) with full sdk.Msg
impls, store-backed Keeper with 4 G-003 expected-keeper shims
(StandingKeeper/WatcherKeeper/BondKeeper/StillKeeper), and three
handlers enforcing the D-077 Standing gate, D-086 category phase check,
REQ-047 reserve floor + below-floor auto-pause (D-089(1) Still
invocation), and REQ-050 category-tag match.

Add the x/cover/firewall subpackage (Anti-Crowding-Out firewall, D-079/
D-088): a stdlib-only leaf checker enforcing RightNoTaxOnPersonalStash
by rejecting Cover-Fee routing to the Root-Pool operating-expenses
destination (defense in depth with the lexicon meta-test).

Add the lexicon_meta_cover meta-test (4th lexicon firewall, D-088):
scans x/cover/**/*.go for both lexicon.FindBannedTerm (10 project-wide
terms) AND lexicon.FindCoverBannedTerm (4 Cover-specific terms), with
G-013 walk-coverage + G-009 self-test tables.

Add lexicon.CoverBannedTerms()/FindCoverBannedTerm()/
SyntheticCoverBannedStrings() helpers (additive to the existing
project-wide BannedTerms — no changes to existing helpers).

Apply D-088(3) optional doc-fix: replace 'insurance-like' with
'Cover-like' in x/pact/types docstrings.

Coverage: x/cover/types 97.8%, x/cover/keeper 94.1%, x/cover/firewall
100.0%. go.mod/go.sum unchanged (G-006/G-028). All existing tests pass.

REQs: REQ-046, REQ-047, REQ-049, REQ-050

---ci---
project: oy
phase: 1
milestone: v0.7
status: execute
---/ci---
2026-08-19 01:52:58 +00:00
cloudinit-bot 463e11e8d2 Merge phase/00 into milestone/v0.7-fraternal-groups (P0 complete → v0.6.0)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
2026-08-19 01:42:30 +00:00
cloudinit-bot 315ccb3fdc decision(P00): mvp/ux gate — auto-generated (3 sections verified)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
MVP/UX CHECK gate (REQ-MVP-UX-001) verified at full autonomy. PLANS.md
v0.7 section contains all 3 required sections:

1. ## User-Facing Surface (PLANS.md L2355) — simtest is the executable
   demonstration for this protocol milestone (no UI; v0.6 web complete);
   simtest run via go test ./x/cover/keeper/...; .feature scenarios named
   as Test* functions
2. ## Happy Path (PLANS.md L2366) — 10-step end-to-end Cover Pool lifecycle
   (launch -> charter -> elect -> route fee -> issue MAB -> release proceeds
   -> file call -> secede -> Pier escalation -> dissolve), verified by P6
   simtest suite
3. ## UX Acceptance Criteria (PLANS.md L2385) — 11 explicit criteria verified
   in P6 audit (go build/test GREEN, x/cover full surface, Anti-Crowding-Out
   firewall operational, 12 locked consts, MAB coupons NEVER Bread, Bill of
   Rights 13 rights non-waivable, coverage >=80%, G-003 intact, G-006/G-028
   go.mod EMPTY, pen-test self-administered, §7 acceptance met)

Gate PASSES (all 3 sections present). Auto-generated per run.md full
autonomy.

---ci---
project: oy
phase: 0
milestone: v0.7
status: mvp_ux_check
---/ci---
v0.6.0
2026-08-19 01:42:16 +00:00
cloudinit-bot 977d2a1d24 docs(P00): grill — D-086..D-090 binding decisions (CONDITIONAL PASS)
GRILL stage for v0.7. ci-griller red-teamed the plan across 9 axes + 7
specific probes. Overall verdict: CONDITIONAL PASS (confidence 0.72).
5 binding decisions applied to PLANS.md + ARCHITECTURE.md + oy-state + PROJECT.md:

- D-086: P1 Factory functional for Phase-2 categories ONLY (FactoryAllowedPhases
  = [Phase2] in P1; P2 extends to [Phase2,Phase3,Phase4]); P1 simtest adds
  out-of-phase rejection negative case
- D-087: PierCarriesVoice=false added as 12th locked const (was 11; now 12)
  in x/guild/types (FR-VOICE-6 mission-locked invariant)
- D-088: lexicon_meta_cover uses new lexicon.CoverBannedTerms() helper
  (insurance/premium/claim/policy scoped to Cover surface, NOT project-wide);
  x/cover/firewall pinned to allow-list of routing destinations (string-
  equality check); optional x/pact insurance-like -> Cover-like doc-fix
- D-089: StillKeeper satisfied by simtest-local stub (x/still NOT extended
  this milestone; x/still/keeper/ verified empty); x/bond -> x/cover
  CoverKeeper reverse edge added to dependency map (MsgDebitMABProceeds
  queries CoverKeeper.GetPoolReserveAccount; no import cycle, interface only)
- D-090: Bill of Rights temporal-gap fix (RightID + 13 Waivable* consts +
  RightIsWaivable() + ValidateBasic gate land in P2, NOT P5 — closes the
  P2->P5 window where rights were waivable); Voucher cold-start fix
  (bond = max(10x avg, MinimumVoucherBond) — no zero-bond bypass); Standing-
  gate dual check (floor enforced at BOTH launch handler AND Params-amendment
  ValidateBasic); D-085 escalation window tightened to before P2

3 escalations to PO: D-085 (13th right identity, confidence 0.55),
lexicon banned-term scope (griller recommends Cover-scoped helper),
pen-test third party (this grill IS the self-administered review per
oy-state §7 item 4).

This grill IS the self-administered adversarial review (pen-test) per
oy-state §7 remaining-open item 4. High/critical findings (D-090(1)
temporal gap, D-088 lexicon paper tiger, D-090(2) Voucher cold-start)
are remediated in P0 via binding decisions D-086..D-090.

---ci---
project: oy
phase: 0
milestone: v0.7
status: grill
---/ci---
2026-08-19 01:42:08 +00:00
cloudinit-bot 08dc139b5c docs(P00): plan — v0.7 vertical-slice phase plans (P1..P6)
PLAN stage for v0.7. Vertical-slice plans for 5 execution phases + 1 final:

- P1 Cover Pool Factory + firewall + floors + gates + tagging (v0.6.1)
  REQ-046/047/049/050 — firewall-first, NEW x/cover module (D-039/D-084)
- P2 Cover-Charter + Pool governance + category staging (v0.6.2)
  REQ-048/052/062/065 — extends x/cover + x/council
- P3 Guild Charter + Chapter Federation + Household/Confederation (v0.6.3)
  REQ-051/053/057/058/061 — extends x/guild + x/stand
- P4 MAB + Cover Claims Voucher + Shadow vouch + MAB seniority (v0.6.4)
  REQ-054/055/060/063 — extends x/bond + x/cover + x/standing
- P5 Anti-Capture Bill + secession cooling + Stand->Pier + Pier selection (v0.6.5)
  REQ-056/059/064/066 — cross-cutting, lands last (constrains all prior)
- P6 final review/audit/ship (v0.6.6 = v0.7 milestone release)

MVP/UX CHECK sections embedded in PLANS.md:
- User-Facing Surface: simtest is the executable demonstration (no UI)
- Happy Path: 10-step end-to-end Cover Pool lifecycle (launch -> charter ->
  elect -> route fee -> issue MAB -> release proceeds -> file call ->
  secede -> Pier escalation -> dissolve)
- UX Acceptance Criteria: 11 criteria verified in P6 audit

Cross-phase dependency map + 11 locked-const additions table included.
D-085 escalation (13th right) flagged for lead-developer before P5.

---ci---
project: oy
phase: 0
milestone: v0.7
status: plan
---/ci---
2026-08-19 01:36:04 +00:00
cloudinit-bot 398609dabb docs(P00): research — v0.7 fraternal groups + persona assessment
RESEARCH stage for v0.7. Delegated to ci-researcher subagent for 7-area
domain + codebase research. Key findings:

- x/cover module layout mirrors x/hub (D-039 precedent, D-084) — types/
  keeper/module.go/expected_keepers.go/msg_server.go/simtest
- Cover-Fee category tagging in x/cover (CoverFeeTag struct), NOT x/bread
  (no Grain struct today; avoids GrainsPerBread locked-const risk)
- Standing gate via expected-keeper shim (G-003; StandingKeeper interface)
- MAB as x/bond extension (anonymous embed, GrowthBond precedent);
  CouponDenom enum with CouponDenomBread rejected at ValidateBasic
  (MissionLockAmendmentRejected pattern)
- D-080 tagged streaming + Watcher-witnessed release; auto-Still on misuse
- Anti-Capture Bill = 13 RightID consts + 13 Waivable* bool consts (all
  false) + RightIsWaivable always false (dual firewall)
- Anti-Crowding-Out firewall = x/cover/firewall + lexicon_meta_cover
  meta-test (defense in depth; D-079)
- Guild extension: ParentGuildID + IsChapter + SecessionTermsHash +
  GoodStandingLiens (no GuildKind enum; schema-additive)
- Shadow vouch 50% = ShadowVouchWeightMultiplier const + IsShadow field +
  post-multiplier branch (const makes it locked-const firewall visible)
- Cover Claims Voucher in x/cover/types (NOT x/standing); slash via
  x/standing.Slash cross-Pool

D-085 escalation candidate (13th Anti-Capture right): spec enumerates 12 of
13 rights. Best candidate (confidence 0.55): NonParticipationNoDenial
(REQ-085/FR-NORM-4). NOT auto-decided; lead-developer surfaces to PO
before P5.

Persona assessment: backend-engineer + lead-developer + security-engineer
+ cosmos-engineer active (highest security density since v0.5).
frontend-engineer + docs-writer + mesh-engineer + data-engineer
deactivated. ci-security-auditor off until P6.

ARCHITECTURE.md extended with v0.7 component index + cross-component
dependencies + 11 new locked-const additions (pending GRILL ratification).
RESEARCH.md extended with v0.7 section (10 design recommendations +
pitfalls). PERSONAS.md rewritten for v0.7.

---ci---
project: oy
phase: 0
milestone: v0.7
status: research
---/ci---
2026-08-19 01:33:22 +00:00
cloudinit-bot f57c49f7ad 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---
2026-08-19 01:28:27 +00:00
cloudinit-bot ea11991ec7 docs(P00): specify — regenerate oy-state v2 (v0.7 queued, REQ-046..097)
Regenerate oy-state per the regeneration rule (oy-spec changed since
state-v1). state-v2 reflects:
- v0.6 COMPLETE (tag v0.5.6, release_id 776) as last shipped
- v0.7 Fraternal Groups Foundation queued (REQ-046..REQ-066, 21 REQs)
- v0.8+ Risk Mitigations deferred (REQ-067..REQ-097, 31 REQs, D-081)
- §3 const firewall: v0.7 planned additions pending GRILL ratification
  (CoverReserveFloorAnnualContribX=1.5, CoverStandingGateTrusted=4.0,
   CoverStandingGatePreferred=4.5, MABIssuanceCeilingAnnualSurplusMultiple=3,
   CoolingSecessionCoverActiveDays=21, CoolingSecessionNonCoverDays=14,
   StandPierEscalationAnnualPassVolumeCents=10M, AntiCaptureBillOfRightsCount=13)
- §4 deferred: Sovereign Anchor SPEC, USZ runtime, Cluster A-E, Pier-Routed
  Legal Wrapper (OPTIONAL), -W absolute cap
- §6 constraints: no-subsidies + Anchor no-Voice GREEN by construction
- §7: D-074..D-081 logged (all 8 PO recommendations accepted as binding)

---ci---
project: oy
phase: 0
milestone: v0.7
status: specify
---/ci---
2026-08-19 01:26:54 +00:00
cloudinit-bot d10bf5eb24 docs(spec): v3 net-new-only — v0.7 fraternal groups + v0.8 risk mitigations
Ingest oy-spec v3 (net-new-only diff against spec-v2):
- 52 new REQs REQ-046..REQ-097 (v0.7 REQ-046..066, v0.8+ REQ-067..097)
- §5: 4 new constraints (no subsidies, Anchor no-Voice, Sovereign Anchors
  separate SPEC, Pier-Routed Legal Wrapper OPTIONAL)
- §7: v0.7 Fraternal Groups Foundation + v0.8 Risk Mitigations plan
- §8: 8 open questions with PO recommendations
- Trimmed restated baseline/Principles/Lexicon/invariants (locked, in force)

Per PO ruling 2026-08-18. ciagent acknowledges; P0 will regenerate oy-state v2.
2026-08-19 01:25:19 +00:00
cloudinit-bot 2c0e953881 docs(P00): add oy-spec-template.md — blank skeleton for fresh milestone cycles
OY-specific template the PO copies to .ciagent/oy/oy-spec (no .md) when
starting a fresh milestone cycle. Pre-fills the locked baseline that does not
change between milestones (Six Principles §3, Constraints §5, Lexicon §6,
REQ-001..REQ-021 locked-vision rows in §4, Rules + Commit convention blocks).
Clears the per-milestone content the PO must fill (§1 Objective, §2 Vision
source locked-sections, §4 acceptance criteria, §4 new REQ-022+ rows, §7
Milestone intent, §8 Open questions, §9 Changelog).

Each placeholder is a <!-- TODO --> comment so the PO can grep for unfilled
slots. The header comment block explains what is pre-filled vs what the PO
fills, and points to oy-state §2 for the current max REQ-ID before adding new
rows.

Lives at .ciagent/oy/oy-spec-template.md (.md extension because it is a
reference file the PO reads in an editor, not ingested by the ciagent — the
working oy-spec / oy-state keep the bare-stem convention for ingestion).

---ci---
phase: 0
milestone: v0.6
status: execute
project: oy
---/ci---
2026-08-18 23:23:09 +00:00
cloudinit-bot 9e5e98f22e docs(P00): introduce oy-spec + oy-state boundary docs (PO <-> ciagent)
Establishes the two-doc contract between the product owner and the ciagent:
- oy-spec (PO-authored, ciagent ingests): authoritative product input
- oy-state (ciagent-authored, PO ingests): current shipped state

Both live in .ciagent/oy/ with no .md extension (PO ingestion keys on the
bare stem oy-spec / oy-state). The 10 existing .ciagent/oy/*.md files remain
ciagent-internal working memory. PROJECT/REQUIREMENTS/ARCHITECTURE gain a
one-line header note pointing to oy-spec as the source and oy-state as the
shipped-state mirror.

oy-spec holds the schema the PO fills (Objective, Vision source, Principles
[locked], Requirements table with acceptance criteria, Constraints, Lexicon
[locked], Milestone intent, Open questions, Changelog) + the mandatory
docs(spec): Conventional Commit convention for spec edits.

oy-state is backfilled from shipped v0.6 state: 45-REQ coverage table, 24
locked constants, 18 deferred items, firewall status (G-003 GREEN, G-006
controlled exception cosmos-sdk v0.50.8, REQ-012 GREEN x3, Mission Lock
GREEN, coverage >=80% GREEN), and 5 open PO decisions for v0.7 scoping.

Closes the loop: PO reads oy-state -> edits oy-spec (docs(spec): commit) ->
ciagent regenerates PROJECT/REQUIREMENTS/ARCHITECTURE at next P0 -> flags
drift in oy-state §5. Prevents re-proposing shipped or explicitly-deferred
REQs.

---ci---
phase: 0
milestone: v0.6
status: execute
project: oy
---/ci---
2026-08-18 23:16:15 +00:00
cloudinit-bot aa66e58f95 checkpoint(milestone): v0.6 complete — clear for next milestone
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
2026-08-18 19:08:40 +00:00
cloudinit-bot 715403a4e3 Merge milestone/v0.6-nomad-web-ui into main (v0.6 Nomad Web UI feature milestone release)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 6
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-042, REQ-043, REQ-044, REQ-045]
  partial: []
---/ci---
v0.5.6
2026-08-18 19:07:58 +00:00
cloudinit-bot f3d38b8a05 Merge phase/06 (final) into milestone/v0.6-nomad-web-ui (P6 complete → v0.5.6 milestone release) 2026-08-18 19:07:58 +00:00
cloudinit-bot 52e438d1b1 checkpoint(milestone): v0.6 complete → v0.5.6 (milestone release)
---ci---
project: oy
phase: 6
milestone: v0.6
status: complete
---/ci---
2026-08-18 19:07:58 +00:00
cloudinit-bot d752215a5c docs(P6): v0.6 final review + audit — PASS, feature purity gate GREEN
REVIEW: 8 probes GREEN (go run dep-free, 5 screens reachable, lexicon
firewall scans web/, Bread-scale matches code constants D-073, Standing
uses locked constants, Freeholder badge reflects IsFreeholderEligible,
Window lifecycle calls real methods, no banned terms in rendered pages).
AUDIT: reconstruction test passes; feature purity gate GREEN (no x/
module modified, locked-const firewall intact, G-003 app-layer, G-006
go.mod unchanged — G-028 diff against v0.5.0 EMPTY); coverage store
98.1% handlers 89.2%; all 3 lexicon firewalls green. REQUIREMENTS:
REQ-040..045 marked Complete. ROADMAP: v0.6 marked COMPLETE.

---ci---
project: oy
phase: 6
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-042, REQ-043, REQ-044, REQ-045]
  partial: []
---/ci---
2026-08-18 19:07:48 +00:00
cloudinit-bot 30e35ea1c9 Merge phase/05 into milestone/v0.6-nomad-web-ui (P5 complete → v0.5.5)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 5
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-042, REQ-043, REQ-044, REQ-045]
---/ci---
v0.5.5
2026-08-18 19:06:22 +00:00
cloudinit-bot ef80a8e1c2 checkpoint(p5): v0.6 phase 5 complete → v0.5.5
---ci---
project: oy
phase: 5
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-042, REQ-043, REQ-044, REQ-045]
---/ci---
2026-08-18 19:06:22 +00:00
cloudinit-bot 56db37a463 feat(P5): Bloom accrual view — per-Stash BloomRecord (REQ-044)
web/handlers/bloom.go: GET /bloom/{stashID} renders BloomRecord
(AccruedGrain, RateBasisPoints as %, LastAccrualBlock) + the 4.5%
target rate read from x/bloom/types.TargetBloomRateBasisPoints (D-073
code-constant source-of-truth, NOT hardcoded) + the 4.0%-5.0% band
(Min/MaxBloomRateBasisPoints) + Mission Lock note. Store extensions:
GetBloomRecord/ListBloomRecords. Seed: holder-alia at target rate (450
bps), holder-bryn at 420 bps (within band). bloom_test.go: D-073
target-rate source-of-truth regression guard (asserts TargetBloomRate-
BasisPoints=450, Min=400, Max=500 from code constants; would fail if
hardcoded), G-026 error lexicon check, highest-risk screen for banned-
term drift (uses "Bloom"/"real production"/"accrual" labels only).
Coverage: store 98.1%, handlers 89.2%.

---ci---
project: oy
phase: 5
milestone: v0.6
status: execute
---/ci---
2026-08-18 19:06:16 +00:00
cloudinit-bot ff068f63bc Merge phase/04 into milestone/v0.6-nomad-web-ui (P4 complete → v0.5.4)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 4
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-042, REQ-043, REQ-045]
---/ci---
v0.5.4
2026-08-18 19:02:52 +00:00
cloudinit-bot 89ec9a76db checkpoint(p4): v0.6 phase 4 complete → v0.5.4
---ci---
project: oy
phase: 4
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-042, REQ-043, REQ-045]
---/ci---
2026-08-18 19:02:52 +00:00
cloudinit-bot 451ea08414 feat(P4): Standing + Freeholder signals progress (REQ-043)
web/handlers/standing.go: GET /standing/{reachID} renders standing score
+ bucket + 4-signal progress + Freeholder-eligible badge. Store extensions:
ListRatings/ListVouches/ListSlashes/ComputeStandingScore (simplified, from
locked x/standing/types constants PriorMean/PriorWeight/ComputeDiversityBonus/
GetVoucherWeight/GetStandingBucket — NOT hardcoded)/ComputeFreeholderSignals
(real FreeholderSignals struct + IsFreeholderEligible). Seed: holder-alia
(12 ratings, 4 cats, 1 Vouch, mature Stash -> eligible) vs holder-bryn
(3 ratings, 1 cat, no Vouch, immature -> not eligible). standing_test.go:
computed-from-locked-constants regression guard (PriorMean=4.0, PriorWeight=
10, DiversityBonus4Cats=0.10), Freeholder-eligible badge reflects
IsFreeholderEligible() (the real method), G-026 error lexicon check.
Coverage: store 98.0%, handlers 88.7%.

---ci---
project: oy
phase: 4
milestone: v0.6
status: execute
---/ci---
2026-08-18 19:02:44 +00:00
cloudinit-bot 50c84d0351 Merge phase/03 into milestone/v0.6-nomad-web-ui (P3 complete → v0.5.3)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 3
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-042, REQ-045]
---/ci---
v0.5.3
2026-08-18 18:58:32 +00:00
cloudinit-bot 5008f85da1 checkpoint(p3): v0.6 phase 3 complete → v0.5.3
---ci---
project: oy
phase: 3
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-042, REQ-045]
---/ci---
2026-08-18 18:58:32 +00:00
cloudinit-bot 79a3358810 feat(P3): Window authorization — open/lifecycle/audit log (REQ-042)
web/handlers/window.go: GET /window (list), GET /window/new (form),
POST /window (open), GET /window/{id} (detail+lifecycle+audit), POST
/window/{id}/activate|revoke|expire (lifecycle transitions). Store
extensions: OpenWindow/ActivateWindow/RevokeWindow/ExpireWindow/
ListWindows/GetWindow/GetAuditLog — all call the REAL x/window/types
Window.Activate/Revoke/Expire methods (not reimplementation). Revoke on
Expired is a no-op (v0.2 terminal-state contract). AuditEntry appended on
each transition. 3 Window templates. window_test.go: lifecycle
correctness (asserts real methods invoked), idempotent revoke, revoke-on-
expired no-op, G-026 error lexicon checks. Coverage: store 99.2%,
handlers 87.7%.

---ci---
project: oy
phase: 3
milestone: v0.6
status: execute
---/ci---
2026-08-18 18:58:25 +00:00
cloudinit-bot edd285e5c0 Merge phase/02 into milestone/v0.6-nomad-web-ui (P2 complete → v0.5.2)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 2
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-045]
---/ci---
v0.5.2
2026-08-18 18:55:11 +00:00
cloudinit-bot 07053cc13a checkpoint(p2): v0.6 phase 2 complete → v0.5.2
---ci---
project: oy
phase: 2
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-041, REQ-045]
  partial: []
---/ci---
2026-08-18 18:55:07 +00:00
cloudinit-bot 973e25a7c9 feat(P2): Stash dashboard — Bread scale + maturity progress (REQ-041)
web/handlers/stash.go: GET /stash/{holderID} renders balance in Grain +
Bread-scale conversion (x/bread/types.BreadScaleAll() + GrainsPerBread=10000,
D-073 code constants NOT docs) + 90-day maturity progress bar (ActiveDays/90
capped at 100%) + IsMature badge. stash_test.go: D-073 regression guard
(GrainsPerBread=10000, Crumb=100 Grain; would fail if docs 1000x values used),
mature vs immature fixture, 404 + G-026 error lexicon check. Coverage 83.5%
cumulative. Template FuncMap divGrain for the scale table.

---ci---
project: oy
phase: 2
milestone: v0.6
status: execute
---/ci---
2026-08-18 18:55:03 +00:00
cloudinit-bot 741d6e0a96 Merge phase/01 into milestone/v0.6-nomad-web-ui (P1 complete → v0.5.1)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
---ci---
project: oy
phase: 1
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-045]
  partial: []
---/ci---
v0.5.1
2026-08-18 18:52:59 +00:00
cloudinit-bot eba12998b7 checkpoint(p1): v0.6 phase 1 complete → v0.5.1
---ci---
project: oy
phase: 1
milestone: v0.6
status: complete
requirements:
  covered: [REQ-040, REQ-045]
  partial: []
---/ci---
2026-08-18 18:52:53 +00:00
cloudinit-bot 27b565c965 docs(P1): README web UI quickstart + lexicon firewall v0.6 section
---ci---
project: oy
phase: 1
milestone: v0.6
status: execute
---/ci---
2026-08-18 18:52:39 +00:00
cloudinit-bot 0bcb96c442 feat(P1): Reach signup handler + templates + tests (REQ-040, G-026)
web/handlers/reach.go: GET /reach (list), GET /reach/new (form),
GET /reach/{id} (detail), POST /reach (atomic Reach+Stash create
per D-071, redirect 302). Labels "Create a Reach" (not the banned
legacy word). G-027 validation (non-empty, <=128, no path separators,
no template syntax). 3 Reach templates extend base.html.
reach_test.go: httptest for all 4 routes + atomic create + 400/409
error paths + rendered-HTML lexicon check on BOTH 200 and error bodies
(G-026). handlers/server.go: clone-per-page template pattern (avoids
content-block collision across pages). Coverage 81.2% on web/handlers.

---ci---
project: oy
phase: 1
milestone: v0.6
status: execute
---/ci---
2026-08-18 17:08:32 +00:00
cloudinit-bot 5a12ab0e76 feat(P1): mock store + fixtures + import-invariant test (REQ-040, G-025, G-027)
web/store instantiates real x/identity/types.Reach + x/stash/types.Stash
(app-layer consumption per D-070, NOT a cross-x/ import). CreateReach
atomically creates Reach (IsNomad=true) + Stash (D-071). G-027 validates
HolderID/PublicKey (non-empty, <=128, no path separators, no template
syntax). import_test.go enforces G-025: web/ imports only x/*/types,
never x/*/keeper or x/<module> (module.go). Coverage 100%.

---ci---
project: oy
phase: 1
milestone: v0.6
status: execute
---/ci---
2026-08-18 13:45:05 +00:00