New network/ecosystem-level state_of_kokonut report: composes existing per-location generators across one, many, or all locations (repeatable --location-id or --all) within a user-specified date range.
Ecosystem-actor view (Network / DAO / Foundation / Genesis / Seeds) of funding raised, funding sources, and per-project participation decisions.
New schema 326_state_of_kokonut_funding.sql (funding_round + project_funding, idempotent) and seed 114_state_of_kokonut_funding.sql (pilot 2021-2024 data).
CLI extended: --location-id is now repeatable and --all selects every location; network-level scope stored as NULL snapshot (UUID-guard added to store_snapshot / fetch_public_interest_context).
Generator isolates per-section failures so one bad location section does not break the composite.
Add a network/ecosystem-level "state_of_kokonut" report that composes existing
per-location generators across one, many, or all locations (--all or repeated
--location-id) within a user-specified date range, plus an ecosystem-actor view
(Network / DAO / Foundation / Genesis / Seeds) of funding raised, funding
sources, and per-project participation.
- New schema (326): funding_round + project_funding tables (idempotent).
- New seed (114): pilot 2021-2024 funding data across the five actors.
- Generator composes farm/financial/social/environmental/governance sections and
isolates per-section failures; network-level scope stored as NULL snapshot.
- CLI extended: --location-id is repeatable and --all selects every location.
- Tests cover registration, UUID-scope guard, rollups, selection parsing, and
section-error isolation.
Co-Authored-By: opencode <opencode@users.noreply.kokonut.network>
Summary
state_of_kokonutreport: composes existing per-location generators across one, many, or all locations (repeatable--location-idor--all) within a user-specified date range.326_state_of_kokonut_funding.sql(funding_round+project_funding, idempotent) and seed114_state_of_kokonut_funding.sql(pilot 2021-2024 data).--location-idis now repeatable and--allselects every location; network-level scope stored as NULL snapshot (UUID-guard added tostore_snapshot/fetch_public_interest_context).tests/test_state_of_kokonut.py(5 passing) covering registration, UUID-scope guard, rollups, selection parsing, section-error isolation.Verification
ruff check services/export/report_generator.py tests/test_state_of_kokonut.py→ All checks passedpython3 -m pytest tests/test_state_of_kokonut.py tests/test_dao_proposal_history.py→ 8 passed--type state_of_kokonut --all --period-start 2021-01-01 --period-end 2024-12-31returns total_raised 815000 across 5 actors; 2023-only filter returns 115000 (genesis + seeds).Scope notes
Follows the 3-step branch → PR → merge flow from AGENTS.md.