Commit Graph

94 Commits

Author SHA1 Message Date
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
cloudinit-bot 4166de5a4b feat(P1): web foundation — main.go, server.go, HTMX vendored, base+home templates (REQ-040)
Go 1.22 net/http.ServeMux + html/template + http.FileServer for static.
HTMX 2.0.10 vendored as web/static/htmx.min.js (NOT go get; G-006).
base.html layout with nav to all 5 screens. home.html overview.

---ci---
project: oy
phase: 1
milestone: v0.6
status: execute
---/ci---
2026-08-18 13:43:53 +00:00
cloudinit-bot 9811aaabbb feat(P1): lexicon firewall for web surface (REQ-045)
Add lexicon_meta_web/ sibling meta-test mirroring lexicon_meta_docs/. Scans
web/templates/**/*.html + web/static/**/*.js + web/**/*.go using the shared
lexicon.FindBannedTerm (no detection reimplementation). Includes G-009
self-test table (lexicon.SyntheticBannedStrings), banned-terms count (10),
openyield/european false-positive guard, and G-013 walk-coverage (injects a
synthetic banned-term fixture into web/templates/.lexicon_fixture/ and
asserts the walk finds it). Firewall passes green with zero web content
(closed by the walk-coverage test).

---ci---
project: oy
phase: 1
milestone: v0.6
status: execute
---/ci---
2026-08-18 12:07:14 +00:00
cloudinit-bot 5be8c51c60 checkpoint(p0): v0.6 phase 0 complete → v0.5.0
---ci---
project: oy
phase: 0
milestone: v0.6
status: complete
---/ci---
2026-08-18 12:05:43 +00:00
cloudinit-bot d3537249fb Merge phase/00 into milestone/v0.6-nomad-web-ui (P0 complete → v0.5.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
---ci---
project: oy
phase: 0
milestone: v0.6
status: complete
---/ci---
v0.5.0
2026-08-18 12:05:23 +00:00
cloudinit-bot 74bf4d6aaf decision(P00): mvp/ux gate — verified 3 sections present
PLAN.md has User-Facing Surface (L2111), Happy Path (L2125),
UX Acceptance Criteria (L2141). Gate PASSES at full autonomy.

---ci---
project: oy
phase: 0
milestone: v0.6
status: mvp_ux_check
---/ci---
2026-08-18 12:05:15 +00:00
cloudinit-bot b9fac60a47 docs(P00): grill — v0.6 adversarial review (D-078+, G-025+)
---ci---
project: oy
phase: 0
milestone: v0.6
status: grill
---/ci---
2026-08-18 12:05:00 +00:00
cloudinit-bot 66e27f7bb8 checkpoint(p0): plan complete → grill next
---ci---
project: oy
phase: 0
milestone: v0.6
status: plan
---/ci---
2026-08-18 12:02:43 +00:00
cloudinit-bot 949b1acf50 docs(P00): create phase plans — v0.6 Nomad Web UI
---ci---
project: oy
phase: 0
milestone: v0.6
status: plan
---/ci---
2026-08-18 12:02:28 +00:00
cloudinit-bot d066885b60 docs(P00): ideate — ratify REQ-040..REQ-045 (Nomad Web UI)
IDEATE stage ratified 6 ideas (IDEATE-09..IDEATE-14) at full autonomy.
User pre-validated 5 screens + stack via interactive questions at CLARIFY.
REQ-040 Reach signup, REQ-041 Stash dashboard, REQ-042 Window auth,
REQ-043 Standing+Freeholder signals, REQ-044 Bloom accrual, REQ-045
lexicon firewall extension to web/. D-001 filter does NOT apply (feature).

---ci---
project: oy
phase: 0
milestone: v0.6
status: ideate
---/ci---
2026-08-18 11:58:09 +00:00
cloudinit-bot e62f783fa1 checkpoint(p0): research complete → ideate next
---ci---
project: oy
phase: 0
milestone: v0.6
status: research
---/ci---
2026-08-18 11:57:38 +00:00
cloudinit-bot 6597cbebd8 docs(P00): research — v0.6 Nomad Web UI MVP findings
---ci---
phase: 0
milestone: v0.6
status: research
decisions:
  - id: D-074
    decision: HTMX 2.0.10 vendored as web/static/htmx.min.js (single JS file, no build step, no go get — G-006 preserved)
    rationale: htmx.org docs confirm dependency-free single-file install; 2.0.10 is current stable (v4 in beta, Summer 26 target)
    confidence: 0.95
    alternatives: [htmx 1.x (IE support, unnecessary), pin a newer beta (instability risk)]
  - id: D-075
    decision: lexicon_meta_web_test.go scans web/**/*.{html,js,go} as a new sibling firewall (package lexicon_meta_web, subdir lexicon_meta_web/)
    rationale: web/ is a new top-level dir NOT under x/ — the existing lexicon_meta_test.go (x/**/*.go) does not cover it; mirror the lexicon_meta_docs/ subdir pattern with G-013 walk-coverage + G-009 self-test + G-014 shared SyntheticBannedStrings()
    confidence: 0.85
    alternatives: [extend lexicon_meta_test.go to also walk web/ (mixes x/ and web/ concerns), separate .go and .html/.js tests (more files)]
  - id: D-076
    decision: Go 1.22 net/http.ServeMux is the sole router for web/ (method+path patterns, r.PathValue); gorilla/mux NOT used by web/ despite being a transitive cosmos-sdk dep
    rationale: go.mod:3 confirms go 1.22; enhanced ServeMux covers GET/POST + path params for all 5 screens; G-006 zero-dep preserved (no third-party router)
    confidence: 0.95
    alternatives: [gorilla/mux (breaks G-006 for web/, unnecessary), chi/router (new dep)]
  - id: D-077
    decision: frontend-engineer activated for v0.6 with territory web/** (templates, static, handlers, store, main.go, lexicon_meta_web_test.go); backend-engineer co-owns the mock store x/*/types integration
    rationale: first UI milestone — frontend-engineer was deactivated since v0.3 (no UI work); Go html/template + HTMX stack (no node/React) aligns with frameworks; constraints bind G-006 (vendored HTMX), G-003 (app-layer type import), REQ-012 (lexicon), D-073 (bread-scale code constants)
    confidence: 0.90
    alternatives: [keep frontend-engineer deactivated and have backend-engineer own templates (wrong skill fit), activate docs-writer instead (no docs-content work in v0.6)]
---ci---

v0.6 §1: Go html/template + HTMX architecture — server layout (web/main.go,
handlers/, store/, templates/, static/), base template pattern, HTMX 2.0.10
vendoring (single JS file, no build step, G-006 preserved), progressive
enhancement via HX-Request header (fragment vs full-page dispatch), html/template
contextual auto-escaping (XSS prevention).

v0.6 §2: Mock server data model — exact struct shapes verified from source for
all 6 modules (identity Reach, stash Stash+StashActivity+IsMature, window
Window+Scope+RateLimit+Activate/Revoke/Expire, standing Rating/Vouch/Slash/
FreeholderSignals+helpers, bread GrainsPerBread=10000+BreadScaleAll 11 tiers,
bloom BloomRecord+TargetBloomRateBasisPoints=450). Import paths use module
github.com/oy/openyield. Bread-scale code constants are the source of truth
(D-073) — docs/shared/bread-scale.md is outdated (claims 1000x ratios; code
uses 100x).

v0.6 §3: Lexicon firewall extension — pattern to mirror from
lexicon_meta_test.go (x/**/*.go) and lexicon_meta_docs/ (docs/**/*.md); new
lexicon_meta_web/ subdir + package lexicon_meta_web scanning
web/**/*.{html,js,go}; 10 banned terms verified from lexicon.go:30-41 (bank,
deposit, interest, yield, currency, dollar, euro, account, savings, depositor);
G-013 walk-coverage + G-009 self-test + G-014 shared helper.

v0.6 §4: HTTP routing — Go 1.22 net/http.ServeMux method+path patterns
confirmed (go.mod:3); r.PathValue() for path params; gorilla/mux (go.mod:75
transitive) NOT used by web/ per G-006.

v0.6 §5: PERSONAS.md update — frontend-engineer activation (YAML frontmatter
format documented); territory web/**, frameworks Go 1.22+html/template+HTMX+
ServeMux (NO node/React), constraints G-006/G-003/REQ-012/D-073; backend-engineer
co-owns mock store type integration; security/cosmos/mesh/data-engineers
deactivate for v0.6 (UI-only, no runtime).

v0.6 §6: ARCHITECTURE.md update — proposed section outline appended after
line 514 (v0.5 section end); 7 subsections mirroring v0.5 density.
2026-08-18 11:57:23 +00:00
cloudinit-bot 4876c49aa0 docs(P00): clarify — v0.6 decisions D-066..D-073
User-validated stack: Go html/template + HTMX, Go mock API server,
new web/ dir, all 5 screens. Lexicon firewall extended to web/.
Bread-scale source of truth = x/bread/types code constants.

---ci---
project: oy
phase: 0
milestone: v0.6
status: clarify
---/ci---
2026-08-18 11:54:59 +00:00
cloudinit-bot 68298d81b3 docs(init): validate specification — v0.6 Nomad Web UI
---ci---
project: oy
phase: 0
milestone: v0.6
status: specify
---/ci---
2026-08-18 11:54:06 +00:00
cloudinit-bot 6502a5abd0 docs(audit): fix PROJECT.md v0.5 status drift (in progress → complete)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
Audit (ci-audit workflow) found PROJECT.md line 64 said 'v0.5 — Bearers
Runtime (in progress...)' but the milestone is COMPLETE (ROADMAP.md
COMPLETE, checkpoint milestone_complete=true, release v0.4.8 shipped).
Fixed to 'complete' to match reconstruction state.

---ci---
project: oy
phase: 8
milestone: v0.5
status: audit
requirements:
  covered: []
  partial: []
---/ci---
2026-08-18 11:21:14 +00:00
cloudinit-bot a6a08b0c1b checkpoint(milestone): v0.5 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
---ci---
project: oy
phase: 8
milestone: v0.5
status: complete
requirements:
  covered: [REQ-033, REQ-034, REQ-035, REQ-036, REQ-037, REQ-038, REQ-039]
  partial: []
---/ci---
2026-08-18 03:42:34 +00:00
cloudinit-bot 6c34650a0d Merge milestone/v0.5-bearers-runtime into main (v0.5 Bearers Runtime 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
v0.5 Bearers Runtime — 7 runtime REQs (REQ-033..039) shipped as feature.
8 modules promoted to runtime (MsgServer + simtest). cosmos-sdk v0.50.8 +
ibc-go v8.2.1 added (G-006 controlled exception). G-003 + locked-const
firewalls intact. 8 keeper packages ≥80% coverage. 5 GRILL decisions
ratified; 8 binding fixes landed; 5 P1+ flagged for v0.6+.

---ci---
project: oy
phase: 8
milestone: v0.5
status: complete
requirements:
  covered: [REQ-033, REQ-034, REQ-035, REQ-036, REQ-037, REQ-038, REQ-039]
  partial: []
---/ci---
v0.4.8
2026-08-18 03:42:01 +00:00
cloudinit-bot 4369b3e4cc checkpoint(milestone): v0.4 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
v0.4 Refinement (NFR) milestone complete. Release v0.3.4 (id 752).
All milestone branches deleted (local + remote); tags preserve history.
HEAD on main. NFR purity gate GREEN. Next run starts a new milestone.

---ci---
project: oy
phase: 4
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
phase_role: final
milestone_complete: true
milestone_release_tag: v0.3.4
release_id: 752
requirements:
  covered: [REQ-029, REQ-030, REQ-031, REQ-032]
  partial: []
---/ci---
2026-08-17 23:36:26 +00:00
cloudinit-bot d4830bb108 Merge milestone/v0.4-refinement into main (v0.4 Refinement NFR 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
v0.4 milestone complete. NFR type, tags v0.3.x. Final phase patch v0.3.4
IS the milestone release (D-008). 4 NFR REQs (REQ-029..REQ-032) shipped.
NFR purity gate GREEN (zero feat: commit subjects). go.mod unchanged.
G-003 production firewall intact. Coverage: x/hub 93.3%, x/council 96.4%.

---ci---
project: oy
phase: 4
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
phase_role: final
milestone_complete: true
requirements:
  covered: [REQ-029, REQ-030, REQ-031, REQ-032]
  partial: []
---/ci---
2026-08-17 23:35:58 +00:00
cloudinit-bot c1a973f8af Merge phase/04 (final) into milestone/v0.4-refinement (P4 complete → v0.3.4 milestone release)
---ci---
project: oy
phase: 4
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
phase_role: final
milestone_complete: true
---/ci---
2026-08-17 23:35:55 +00:00
cloudinit-bot 21926e8adb docs(milestone): complete OpenYield v0.4 (Refinement — NFR)
docs-build / go test ./... (lexicon firewall + all x/* tests) (push) Has been cancelled
docs-build / mkdocs build (docs site artifact) (push) Has been cancelled
Milestone v0.4 complete. NFR type, tags v0.3.x. Four NFR REQs shipped:
- REQ-029 lexicon.SyntheticBannedStrings() shared helper (G-014 closed)
- REQ-030 x/hub↔x/bond cross-const equality test (A-304 closed, G-015)
- REQ-031 council lifecycle divergence docs + regression guard (AUDIT §193)
- REQ-032 .gitea/workflows/docs-build.yml docs build CI (D-046 landed)

NFR purity gate GREEN: zero feat: commit subjects in the milestone.
go.mod unchanged (G-006). G-003 production firewall intact. Coverage:
x/hub 93.3%, x/council 96.4% (both above 80% target).

Phases: P0 -> v0.3.0, P1 -> v0.3.1, P2 -> v0.3.2, P3 -> v0.3.3,
P4 -> v0.3.4 (milestone release).

Requirements covered: REQ-029, REQ-030, REQ-031, REQ-032 (all complete).
Live-runtime promotions of v0.3 Bearers skeletons deferred to v0.5+
(feat:-class, rejected by D-001 refinement-only filter).

---ci---
project: oy
phase: 4
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
phase_role: final
milestone_complete: true
requirements:
  covered: [REQ-029, REQ-030, REQ-031, REQ-032]
  partial: []
---/ci---
v0.3.4
2026-08-17 23:35:48 +00:00
cloudinit-bot d74515cd1d docs(P4): v0.4 final review + audit — PASS, NFR purity GREEN
REVIEW.md v0.4 section: 7 adversarial probes PASS; 0 P0; 3 P2 nits
(mkdocs link warnings, upload-artifact v4 compat, NFR gate precision).
Confidence 0.90.

AUDIT.md v0.4 section: reconstruction test PASS (phase progression,
tags v0.3.0..v0.3.3, .ciagent evidence); file/branch/commit discipline
PASS; build/test/coverage sanity PASS (x/hub 93.3%, x/council 96.4%).
NFR purity gate GREEN (zero feat: commit subjects). 0 critical issues.
Confidence 0.90.

---ci---
project: oy
phase: 4
milestone: v0.4
status: review
tag_base: v0.3.x
milestone_type: nfr
phase_role: final
---/ci---
2026-08-17 23:34:52 +00:00
cloudinit-bot a36561337a checkpoint(p3): v0.4 phase 3 complete → v0.3.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
P3 shipped: tag v0.3.3, release id 751. REQ-032 covered. Branch
oy/phase/03 deleted. All execution phases complete. Next: P4 final
review + audit + milestone ship.

---ci---
project: oy
phase: 3
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
phase_release_tag: v0.3.3
---/ci---
2026-08-17 23:33:58 +00:00
cloudinit-bot 7fa5628dc2 Merge phase/03 into milestone/v0.4-refinement (P3 complete → v0.3.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.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
---/ci---
2026-08-17 23:33:39 +00:00
cloudinit-bot 3b7883c092 verify(P3): docs build CI — 4 layers 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
Structural: YAML schema valid; jobs go-test + docs-build; docs-build
needs go-test (G-016 OK). Behavioral: local mkdocs build succeeds (site/
produced); go test ./... green. Security: go.mod unchanged (G-006 intact);
Python deps isolated to docs-build job. Quality: .gitignore covers site/.
NFR purity: zero commit SUBJECTS starting with feat: (grep -E '^feat:'
exit 1 on subject-only check). NOTE: git log --grep matches message BODIES
too (prose mentions 'feat:'); the P4 audit gate uses subject-only check
(git log --format='%s' | grep -E '^feat:').

---ci---
project: oy
phase: 3
milestone: v0.4
status: verify
tag_base: v0.3.x
milestone_type: nfr
reqs: [REQ-032]
---/ci---
v0.3.3
2026-08-17 23:33:36 +00:00
cloudinit-bot 1969b96d3d chore(ci): docs build CI workflow (REQ-032, D-046, D-051, G-016)
Add .gitea/workflows/docs-build.yml: on push, go-test job runs go test ./...
(lexicon firewall + all x/* tests), then docs-build job (needs: go-test per
G-016 firewall-gates-docs-build) installs mkdocs + mkdocs-material, runs
mkdocs build, uploads site/ as a CI artifact. go.mod unchanged (Python deps
isolated to the docs-build job; G-006 intact). Full Gitea Pages publishing
deferred per D-051 (no hosting target configured).

.gitignore: add site/ (mkdocs build output; never committed).

Verification: YAML parses; docs-build needs go-test; go test ./... green;
go.mod unchanged; local mkdocs build succeeds (site/ produced).

---ci---
project: oy
phase: 3
milestone: v0.4
status: execute
tag_base: v0.3.x
milestone_type: nfr
reqs: [REQ-032]
---/ci---
2026-08-17 23:33:02 +00:00
cloudinit-bot d149916288 checkpoint(p2): v0.4 phase 2 complete → v0.3.2
P2 shipped: tag v0.3.2, release id 750. REQ-031 covered. Branch
oy/phase/02 deleted. Next: P3 docs build CI.

---ci---
project: oy
phase: 2
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
phase_release_tag: v0.3.2
---/ci---
2026-08-17 23:32:22 +00:00
cloudinit-bot c4cbd59c11 Merge phase/02 into milestone/v0.4-refinement (P2 complete → v0.3.2)
---ci---
project: oy
phase: 2
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
---/ci---
2026-08-17 23:32:07 +00:00
cloudinit-bot a6d33a58b3 verify(P2): lifecycle divergence docs + regression guard — 4 layers green
Structural: go vet clean. Behavioral: TestSignalKindShapeIntentional PASS;
existing council tests PASS. Security: no locked-const change
(SignalKindCount==4 preserved). Quality: x/council/types coverage 96.4%
(improved from v0.3; new intent test adds coverage). NFR purity: zero
feat: commits in P2 (only docs + test).

---ci---
project: oy
phase: 2
milestone: v0.4
status: verify
tag_base: v0.3.x
milestone_type: nfr
reqs: [REQ-031]
---/ci---
v0.3.2
2026-08-17 23:32:02 +00:00
cloudinit-bot 7d1468b442 docs(arch): council lifecycle divergence decisions (REQ-031, AUDIT §193)
Add ARCHITECTURE.md §"Council Voice/Council Interface — Lifecycle Type
Divergence Decisions (v0.4)": documents P1-1 (Proposal/VoteOption absent,
deferred to v0.5+ governance runtime — feat: rejected by D-001), P1-2
(SignalKind 4-vs-5: the 4-source shape is intentional per AUDIT rationale;
Freeholder is eligibility, Guild is council tier, Capital is committed-
capital per vision §9.1), P2 (bearers ValidateGenesis no-op correct per spec).

test(council): TestSignalKindShapeIntentional regression guard (REQ-031)

Add intent-assertion test locking the 4-source SignalKind shape with the
AUDIT §193 P1-2 rationale in the doc comment. A future agent changing
SignalKindCount 4→5 must update this test, surfacing the rationale. No
locked-const change, no production .go files modified (D-050).

Verification: go test ./... green; only types_test.go modified in x/**.

---ci---
project: oy
phase: 2
milestone: v0.4
status: execute
tag_base: v0.3.x
milestone_type: nfr
reqs: [REQ-031]
---/ci---
2026-08-17 23:31:55 +00:00
cloudinit-bot 92966cb9c5 checkpoint(p1): v0.4 phase 1 complete → v0.3.1
P1 shipped: tag v0.3.1, release id 749. REQ-029, REQ-030 covered.
Branch oy/phase/01 deleted. Next: P2 lifecycle divergence docs+guard.

---ci---
project: oy
phase: 1
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
phase_release_tag: v0.3.1
---/ci---
2026-08-17 23:31:16 +00:00
cloudinit-bot 838bd06a9d Merge phase/01 into milestone/v0.4-refinement (P1 complete → v0.3.1)
---ci---
project: oy
phase: 1
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
---/ci---
2026-08-17 23:30:50 +00:00
cloudinit-bot 57c7dc5ff5 verify(P1): lexicon+const hardening — 4 layers green
Structural: go build ./... + go vet clean. Behavioral: both meta-tests
PASS consuming SyntheticBannedStrings(); 3 new cross-const tests PASS.
Security: lexicon firewalls green (x/ + docs/); G-003 production firewall
intact (no production import of x/bond/types in x/hub/types). Quality:
x/hub/types coverage 93.3% (v0.3 floor preserved; new test adds coverage).

---ci---
project: oy
phase: 1
milestone: v0.4
status: verify
tag_base: v0.3.x
milestone_type: nfr
reqs: [REQ-029, REQ-030]
---/ci---
v0.3.1
2026-08-17 23:30:46 +00:00
cloudinit-bot 2ca0e1aa4b refactor(lexicon): shared SyntheticBannedStrings() helper (REQ-029, G-014)
Add lexicon.SyntheticBannedStrings() — single source for the synthetic
self-test table consumed by BOTH meta-tests. Refactor
TestLexiconMetaSelfTestTable (lexicon_meta) and TestLexiconMetaDocsSelfTestTable
(lexicon_meta_docs) to consume the helper; remove the byte-identical
duplicated 10-string table from both. Closes the G-014 drift risk.

test(hub): cross-package const-equality test (REQ-030, A-304, G-015)

Add x/hub/types/cross_const_test.go: test-only import of x/bond/types
(G-003 test-exempt). TestLendingCouponCapMatchesBondCap + TestLendingCoupon-
FloorMatchesBondFloor assert cross-equality; TestConstsAreMissionLocked800And0
(G-015) asserts absolute 800/0 values — catches paired drift. Closes A-304.

Verification: go test ./... green; old synthetic table gone (grep 0);
go.mod unchanged; G-003 production firewall intact.

---ci---
project: oy
phase: 1
milestone: v0.4
status: execute
tag_base: v0.3.x
milestone_type: nfr
reqs: [REQ-029, REQ-030]
---/ci---
2026-08-17 23:30:30 +00:00
cloudinit-bot cc0940d9f8 checkpoint(p0): v0.4 phase 0 complete → v0.3.0
Phase 0 shipped: tag v0.3.0, release id 748. Branch oy/phase/00 deleted.
Next: P1 lexicon+const hardening (oy/phase/01-lexicon-const-hardening).

---ci---
project: oy
phase: 0
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
phase_release_tag: v0.3.0
release_id: 748
---/ci---
2026-08-17 23:29:20 +00:00
cloudinit-bot 0bb14bd1a1 Merge phase/00 into milestone/v0.4-refinement (P0 complete → v0.3.0)
Phase 0 (pre-execution) complete. Tags v0.3.0. Next: P1 lexicon+const
hardening (oy/phase/01-lexicon-const-hardening).

---ci---
project: oy
phase: 0
milestone: v0.4
status: complete
tag_base: v0.3.x
milestone_type: nfr
---/ci---
2026-08-17 23:28:49 +00:00
cloudinit-bot b55255614f decision(P00): mvp/ux gate — auto-generated
Auto-generated 3 MVP/UX sections (full autonomy): User-Facing Surface
(4 surfaces: lexicon firewall, cross-const test, docs CI, ARCHITECTURE.md
section), Happy Path (2 scenarios: add banned term / const drift), UX
Acceptance Criteria (6 explicit criteria incl NFR purity gate). Gate
passes — all three sections present.

---ci---
project: oy
phase: 0
milestone: v0.4
status: mvp_ux_check
tag_base: v0.3.x
milestone_type: nfr
---/ci---
v0.3.0
2026-08-17 23:28:34 +00:00
cloudinit-bot d88d2eaeb8 docs(P00): grill — v0.4 NFR adversarial review (G-015, G-016)
Nine-axis scorecard: 8 PASS + 1 CONDITIONAL→fixed. SHIP Phase 0 (0.84).
G-015: cross-const test MUST assert absolute 800/0 values (paired-drift
guard) — already in P1-02-01. G-016: docs-build job MUST need go-test
(firewall-gates-docs-build, no false-green) — applied to P3-01-01.
D-001 filter enforced; NFR purity gate enforceable.

---ci---
project: oy
phase: 0
milestone: v0.4
status: grill
tag_base: v0.3.x
milestone_type: nfr
---/ci---
2026-08-17 23:28:11 +00:00
cloudinit-bot 5e06b14ddf docs(P00): create phase plans — v0.4 NFR (P1..P4, 12 tasks)
P1 lexicon+const hardening (REQ-029/030). P2 lifecycle divergence docs+
guard (REQ-031). P3 docs build CI (REQ-032). P4 final review+audit+ship.
D-001 refinement-only filter governs all tasks. NFR purity gate in P4.
Tags v0.3.x. No cross-phase hard blockers (independent vertical slices).

---ci---
project: oy
phase: 0
milestone: v0.4
status: plan
tag_base: v0.3.x
milestone_type: nfr
---/ci---
2026-08-17 23:27:33 +00:00
cloudinit-bot 28d73c8b2c docs(P00): research findings — v0.4 NFR research R-029..R-032 + PERSONAS.md
R-029 lexicon shared helper (G-014 drift confirmed: byte-identical synthetic
tables in both meta-tests). R-030 cross-const test (hub/bond 800/0 LOCAL
consts, G-003 test-exempt import). R-031 lifecycle divergence (AUDIT §193
P1-1/P1-2 are feat:-class, rejected by D-001; v0.4 = document + regression
guard only). R-032 docs CI (.gitea/workflows, build+artifact, no Pages
publish). PERSONAS.md: backend-engineer + lead-developer only; v0.3
frontend/docs-writer deactivated.

---ci---
project: oy
phase: 0
milestone: v0.4
status: research
tag_base: v0.3.x
milestone_type: nfr
---/ci---
2026-08-17 23:26:33 +00:00
cloudinit-bot 46c2c4ef6c docs(P00): clarify — v0.4 NFR scope decisions D-047..D-053
Auto-decided defaults (autonomy=full). v0.4 = refinement-only NFR.
D-047 NFR type, tags v0.3.x. D-048 lexicon shared helper (G-014).
D-049 cross-const test (A-304). D-050 REQ-031 = document only, no feat:
enum additions (D-001 filter). D-051 docs CI = .gitea/workflows build+artifact
(no Pages publish). D-052 phase ordering. D-053 no IDEATE (no flag this run).

---ci---
project: oy
phase: 0
milestone: v0.4
status: clarify
tag_base: v0.3.x
milestone_type: nfr
---/ci---
2026-08-17 23:25:20 +00:00
cloudinit-bot 0cac4b0b32 docs(init): validate specification
Establish v0.4 refinement-only NFR milestone. Tags run on v0.3.x line.
Scope sourced from v0.3 forward-references (REVIEW P2/A-304, AUDIT §193,
GRILL G-014, D-046): REQ-029 lexicon shared helper, REQ-030 cross-const
test, REQ-031 lifecycle type review, REQ-032 docs build CI. Zero feat:
phases by construction.

---ci---
project: oy
phase: 0
milestone: v0.4
status: specify
tag_base: v0.3.x
milestone_type: nfr
---/ci---
2026-08-17 23:24:46 +00:00
cloudinit-bot 97a25dd0b6 checkpoint(milestone): v0.3 complete — clear for next milestone 2026-08-17 22:36:04 +00:00
cloudinit-bot 82ae6cf5a2 docs(milestone): complete OpenYield v0.3 (Bearers & Documentation)
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---
v0.2.6
2026-08-17 22:35:36 +00:00
cloudinit-bot 47fa79148c docs(milestone): complete OpenYield v0.2 (The Mesh)
---ci---
project: oy
phase: 5
milestone: v0.2
status: complete
phase_role: final
milestone_complete: true
---/ci---

Checkpoint: v0.2 milestone complete. Merged to main, tagged v0.1.5 (milestone release,
release id 732 on Gitea). All milestone branches deleted. Per run.md, checkpoint cleared
for next run (v0.3 The Bearers per ROADMAP Phase 3).
2026-08-17 21:41:56 +00:00