# Dunaversity Implementation Checklist

This checklist extracts the engineering obligations from the controlling brief. The brief remains authoritative.

## Platform and runtime

- [ ] One Flutter/Dart codebase.
- [ ] Studio layout at widths of 1024px and above.
- [ ] Live layout for phones.
- [ ] Shared identity, Realm, permission, content, wallet, ledger, and Record state across both layouts.
- [ ] Flame used only as a placeholder Scene host with Portal entry and exit.
- [ ] Zero-network demo path using `ScriptedModel`.
- [ ] `ApiModel` changes conversation quality only; it cannot change permissions or deterministic outcomes.

## Persistence and authority

- [ ] Drift/SQLite stores relational state and serialized graph data.
- [ ] In-memory typed graph is the permission authority.
- [ ] Permission is checked before any content retrieval.
- [ ] Keyword retrieval is namespaced per Wisdom Drop and filtered by classification and graph access.
- [ ] Every state change executes through one typed `ActionService`.
- [ ] Every Action declares actor, authority source, target, required permission, and confirmation level.
- [ ] Every executed Action appends an immutable Record.
- [ ] UI gesture expresses confirmation level but never grants permission.
- [ ] Permission-matrix tests cover every Action × every Role × both seeded Realms.

## Canonical domain boundary

- [ ] Use only the nodes defined in the brief: Presence, Realm, Role, WisdomDrop, WisdomItem, Badge, Offering, Record, Wallet, and LedgerEntry.
- [ ] Use only the four Roles defined in the brief: Catalyst, Wizard, Creator, and Member.
- [ ] Preserve the four classifications: public, private-to-realm, personal, and secret.
- [ ] Preserve the three Wisdom acceptance states: raw, accepted, and integrated.
- [ ] Preserve Autonomous, Confirmed, Deliberate, and Governed confirmation levels.
- [ ] Ask before introducing new domain nouns.

## Seed

- [ ] Four switchable Presences: Moto, Matt, Aashik, and Paul.
- [ ] Exactly two initial Realm Elements: Kinship Duna and Dunaversity.
- [ ] Ki Stance text and treasury rules from the brief.
- [ ] Matt’s prior simulated 100 USDC join entry and veteran badge where required by the walkthrough.
- [ ] No account creation or real KYC.

## M0 — skeleton

- [ ] Seeded Presence login with selection and passphrase.
- [ ] Ki greets first and names both Realms and the active Presence’s Roles.
- [ ] Enter and leave Dunaversity.
- [ ] Records viewer exposes every Action with actor, authority, and timestamp.

## M1 — Aashik

- [ ] Live conversational course creation demonstrable in under five minutes.
- [ ] Intent restatement, Program name, unique handle check, defaults, and one Confirmed creation.
- [ ] Draft Program has template Stance, Fan badge, and open enrollment.
- [ ] Studio Researcher run through `KiModel` into an auto-created Drop with source lists.
- [ ] Three recorded or typed segments.
- [ ] Scripted QA/QC flag with a keep path and Record.
- [ ] Deliberate press-and-hold publication.
- [ ] Published course appears in the public genesis catalog.

## M2 — Matt

- [ ] Inspect prior simulated join distribution and every ledger hop.
- [ ] One-tap enrollment in the published course.
- [ ] Movement I reader and completion.
- [ ] Fan badge issuance with simulated NFT id and timestamp.
- [ ] Voice/text contribution classified private-to-Program before submission.
- [ ] Contribution appears in the Catalyst queue without classification leakage.

## M3 — Moto

- [ ] Intent and pinned checklist Element.
- [ ] Conversational identity interview, name proposals, handle check, and description draft.
- [ ] Stance interview and versioned Stance artifact.
- [ ] Named Wisdom Drops with add-time Drop, classification, and attribution context.
- [ ] Local file intake, external link intake, and designated-Drop Researcher run.
- [ ] Four unmistakable classification treatments throughout Studio.
- [ ] Structure proposals grounded in actual Drops, selection, and Movement skeleton.
- [ ] Accept Matt’s testimony into a Record, then integrate it in a distinct Curator step.
- [ ] Creator Role grant.
- [ ] Wizard Role grant with explicit exclusions: no Stance, treasury, acceptance, or Luminary naming.
- [ ] Badge definitions.
- [ ] “What’s public” preview.
- [ ] Deliberate publication.

## M4 — money and Scene

- [ ] Deterministic Month Close button.
- [ ] Meter development and learning Compute at fixed simulated rates per model call.
- [ ] Allocate treasury remainder to Programs pro-rata by Compute.
- [ ] Catalyst payback first, including the 1,400 sim-USDC acceptance walkthrough.
- [ ] Apply the Program Squad-sim split rule.
- [ ] Render each hop as a factual walk with immutable Records.
- [ ] Enter, walk, and exit one placeholder Scene in Mastering Agency through a Portal.
- [ ] Permissions are identical before, during, and after the Scene.

## Product safety and presentation

- [ ] Label all money, wallet, chain, NFT, and external effects as SIMULATED.
- [ ] Never imply a real payment occurred.
- [ ] Enforce Wisdom privacy in retrieval, not only in prompts.
- [ ] Dark espresso ground, warm cream typography, Goudy Heavyface display, Avenir-class interface type.
- [ ] Sky blue for action, restrained mint for healthy state, gold exclusively for Deliberate acts.
- [ ] Money is factual and inspectable, never gamified.
- [ ] Keyboard, touch, and reduced-motion paths preserve meaning and authority.

## Required repo artifacts

- [ ] Flutter run instructions in `README.md`.
- [ ] `DECISIONS.md` containing every ambiguity resolved during implementation.
- [ ] Seed script or fixture.
- [ ] Automated tests for permissions and the three acceptance walkthroughs.
