Swasti · mForm V2→V3
Posture
  • PM design (05) is design authority
  • V2 JSONs (03) are content source, not design source
  • rel-mis (02) is reference, not template

All notes

01
Kickoff brief AUTHORITY Source of truth

Single-page collated brief: context, programs, pain points, decisions, action items A1–A25, open questions, risks. §10 is the import-pipeline plan.

05
PM design sheet AUTHORITY Design authority

PM's lifecycle tracking sheet, 12 tabs. Health Screening + Livelihood form designs. BMI/HB/BP/RBS lookup tables. BP New Logic. Workflow status taxonomy. Custom Fields catalog.

03
V2 mForm JSON shape CONTENT SOURCE Source-side analysis

13 V2 form JSONs (1000–1012, skip 1012). `order` is the universal join key. Self-link decoder. Three known dump gaps. Content source — not design source.

04
mform-to-frappe conversion skill TOOLING Tooling

5 phases × 7 recipes × 3 vendored skills, 82 files. "Four files in parity" output: Doctype JSON + .py + .js + .dart. Validation _id table. ~14 anti-patterns from rel-mis.

04a
A14c — Validation source resolution RESOLVED Resolution note

Validations come from per-question keys + input_type-implicit, not the null `validation[].condition`. A14c resolved without mForm team input.

02
rel-mis Frappe context REFERENCE Reference (NOT template)

What good looks like in the rel-mis Frappe app. Two deltas vs Swasti called out at the top: simpler geography, import-first bootstrap.

06
Aspire design system UI UI reference

Astro 5.14 + Tailwind 3.4 + MDX. Editorial sans, crimson + ochre. Reusable starter for all Dhwani project KBs — this site uses it.

07
frappe-mobile-sdk STACK Mobile runtime

Branch om/offline_improvement v2.1.0. Flutter pub package. Offline-first SQLite sync, dynamic form rendering from Frappe Doctype metadata, bulk-fetch.

08
frappe-mobile-control STACK Frappe app

Branch om/mobile-sync-bulk-fetch. Frappe v16.13 companion app. mobile_auth.* + mobile_sync.* APIs, bulk-fetch endpoint, Mobile Configuration Single Doctype.

09
MongoDB masters export STACK A14 unblocked

Direct read access to V2 prod Mongo (mformv2_swastihealthprod). 20 collections + 4 derived files exported to JSONL — 185 schemes, 31 docs, full geography (16/31/131/1963/3967), 8 roles, 481 users. Three surprises: `forms` is header-only (questions live in `tempforms`); `formdynamicoptions` has dual semantics (master vs per-response); 107 schemes are actually 185.

10
Livelihood workflow (PM Miro) LIVE A20 design authority

PM (Fahimuddin) shared the Livelihood workflow Miro on 2026-05-06; PM (Shweta) finalised the open questions on 2026-05-27. SHG/FPCL qualification → goat-purchase check (FU1) → up to 10 monthly repayment follow-ups (FU2–FU11) → terminal close on either "Loan fully repaid, flow closed" (loan_fully_repaid=Yes) or "Loan Repayment Not Completed" (visit 10 without full repayment). Per-FU statuses: "Nth Month Payment Completed" for Regular / Irregular, "Nth Month Payment Delayed" for Defaulted (SWF-2026-00140 — non-terminal). Sequence gate enforced — Repayment FU is locked until at least one Goat Purchase FU has been filed (SWF-2026-00139). Backend + Flutter UI shipped, verified end-to-end on staging.

11
Member form authoritative flow (PM video) NEW Member rebuild authority

PM Fahim walkthrough of V2 production, 2026-05-19. One continuous scroll ordered by V2 `viewSequence` (we were rendering by `order` — wrong). Consent at top with popup gate, single "Additional Details" collapsible at viewSeq 33, Donor/Partner auto-populate on Grampanchayat, "Get" button on Individual Facilitator, post-submit branches on Civic ID Yes/No → Document App vs Scheme+Health. Source of truth for the Member screen rebuild; replaces all earlier IA decisions.

14
Repos, environments & deployment HOW-TO Operational reference

Two GitHub repos (Flutter app + Frappe app), the staging→uat→main branch flow, four environments with distinct Android applicationIds, the local build + Firebase / Play Store release path, and the per-environment Frappe backend layout. Read this before the release runbook.

15
Release runbook HOW-TO How-to

How a change ships to testers end-to-end: push the Frappe app → staging auto-migrates → build the APK → upload to Firebase → notify on Teams. Includes the three things a NEW doctype needs (files + perms patch + Mobile Configuration manifest row) and the migrate-failure checklist that explains "No options available" dropdowns.

16
Creating a surveyor (mobile user) HOW-TO How-to

The exact steps to create a field surveyor who can log into the app. A surveyor is just a Frappe User with two roles — the non-obvious gate is "Mobile User" (mobile-control rejects any login without it), and "Swasti Surveyor" grants the data permissions. Session login, no API keys. Includes a troubleshooting table.

17
Tester feedback tracker HOW-TO Operational

Link to the shared Excel tracker, how we triage tester bugs (Frappe-first; Frappe items are ours, not deferred), and a live per-item status snapshot incl. the marital ↔ scheme-eligibility decisions and the open Frappe-side items.

Reading paths

Source artefacts

All notes read from kickoff materials at ~/Dhwani/swasti-mform-migration/kickoff/:

  • kickoff/notes/0X-*.md — the markdown source files for each note
  • kickoff/screenshots/ — 22 frames from the screenshare walkthrough
  • kickoff/transcript/full-transcript.md — raw Fathom transcript with embedded action items
  • kickoff/video/kickoff.mp4 — local copy of the recording
  • raw/mform-forms/ — extracted V2 form JSONs (1000–1012)
  • raw/mform-to-frappe-skill/ — extracted conversion skill (5 phases, 82 files)
  • raw/pm-design/ — PM xlsx + per-tab extracted JSON+MD
  • raw/sdk/frappe-mobile-sdk/ — cloned SDK on om/offline_improvement
  • raw/frappe-mobile-control/ — cloned Frappe app on om/mobile-sync-bulk-fetch

Last updated 2026-06-05