PM design sheet — Swasti V3 form designs (authoritative)
Companion to
01-kickoff-brief.md,03-mform-json-analysis.md,04-mform-to-frappe-skill.md. The PM (Fahimuddin) has been maintaining this spreadsheet throughout the project lifecycle. Per the post-kickoff feedback (feedback_swasti_redesign_not_mirror.md), this sheet is the design authority over the V2 form JSONs. Where they conflict, sheet wins.Source:
~/Dhwani/swasti-mform-migration/raw/pm-design/pm-form-design.xlsx(116 KB, 12 tabs). Extracted per-tab JSON + Markdown:~/Dhwani/swasti-mform-migration/raw/pm-design/extracted/.
1. Headline findings
- The new Livelihood program design is fully specified here. This is the only authoritative source for the 4th program — V2 has no analog. ~22 questions across Section 2 (SHG/FPCL eligibility) + Section 3 (Follow-up 1 - goat purchase + market channels) + later sections (loan repayment monthly follow-ups). Different domain entirely (SHG/FPCL/livestock/microfinance).
- Health Screening is being redesigned, not just migrated. BMI/HB/BP/RBS thresholds rewritten in
HS Logicstab; BP scoring switched to “higher of Sys/Dia → 6-status outcome matrix” (BP New Logic); 12+ DRIS comments flag specific V2 quirks for change (“not calculated in decimals”, “for normal added the range 18.5-22.9”, “corrected range by adding custom regex”, etc.). (formId, order) → fieldnameregistry confirmed.HS Statuses and card detailsrow 3 explicitly:Health Screening (1010) || Current Status (order 36). The PM has been thinking in this exact join key — A16.1 design is right.- Status workflow is consolidated and renumbered.
Status of Apply For Scheme Doculists 16 Scheme statuses + 11 Document statuses with Sl. no, Open/Closed flag, trigger logic — single source of truth for closure terminals. Replaces the V2’s scattered terminal-status array (closedItselfin form 1011). - Custom-fields catalog in
Apply for Scheme and Apply For Documentenumerates every value for Occupation/Marital/Religion/Caste/Civic IDs. Partially resolves A14b — these masters are here, the 107 schemes themselves are not. A14a(Kannada/Telugu translations) — NOT resolved here. Only English in the entire sheet.- Validation language is plain English, not regex. “0-160 KG”, “10 Digits”, “Cannot be a Future Date” — needs translation to Frappe
mandatory_depends_on/ regex /validate()checks. The conversion skill’svalidation-layer-matrix.mdis the reference.
2. Tab inventory
| # | Tab | Rows (non-empty) | Purpose | Design / Data / Tracking |
|---|---|---|---|---|
| 1 | HS Statuses and card details | 44 | Map (form, question order, status option) → action; carries Miro link | Design |
| 2 | HS Test Cases | 15 | Manual test scenarios per age/gender/status | Tracking |
| 3 | HS Logics | 37 | BMI/HB/BP/RBS lookup tables (the actual thresholds) | Design (logic) |
| 4 | BP New Logic | 25 | Redesigned BP scoring — “higher of Sys/Dia” + 6 lookup tables | Design (logic) |
| 5 | HS Testing tracker | 36 | Bug-tracker style log (date, form, tester, issue, comments) | Tracking |
| 6 | Health Screening | 138 | Full HS form design | Design (forms) |
| 7 | Livelihood | 120 | Full Livelihood (4th program) form design — only authoritative source | Design (forms) |
| 8 | Hierarchy | 12 | Phase 1/Phase 2 organisation hierarchy + roles per level | Design (org) |
| 9 | Add Member Workflow | 28 | Member onboarding fields + validations (per-row) | Design (forms) |
| 10 | Update Member | 5 | Minimal update flow (lookup, edit, save) | Design (forms) |
| 11 | Status of Apply For Scheme Docu | 28 | Scheme (16) + Document (11) workflow status taxonomy | Design (workflow) |
| 12 | Apply for Scheme and Apply For Document | 89 | Full Scheme + Document workflow design; Diceflow v4.11.4 reference | Design (forms) |
3. Common form-design column model
All form-design tabs (Health Screening, Livelihood) share this column shape:
| Col | Field | Notes |
|---|---|---|
| 1 | (DRIS comment) | Free-text PM/dev annotation — open questions, change rationale |
| 2 | S.NO | Hierarchical numbering (1.0, 1.1, 1.2, 2.0, …) — establishes section grouping |
| 3 | Heading | Section heading at top-of-section row only |
| 4 | Question | Visible label |
| 5 | Question Type | Auto populate from Member Form / Auto Calculate / Single select / Multi Select / Number / Number, allows decimal upto N / Text / Date / Boolean |
| 6 | Mandatory | Yes / No |
| 7 | Dropdown | Inline option list (next rows continue with one option per row) |
| 8 | Condition for Num | Numeric range — 0-160 KG, 0.1 - 2.5 m, 0-20, 70-200, 50-120, 50-550 |
| 9 | Logic & Status | Closure / open rules: “Close the Form / Workflow will close here with Status …”, “Open the Form / Open the 3rd Follow-up after 15 days”, auto-calc rules |
| 10 | Skip Logic | Plain English: “If 6.3 is ‘Others’, then enable the text box”, “If Gender = Female then show this question” |
| 11 | Comments | PM design notes |
| 12 | DRIS comment | Dev review feedback / open questions |
Mapping into the conversion skill’s output:
| PM column | Conversion skill target |
|---|---|
Question Type = Auto populate from Member Form | fetch_from = "<member_doc>.<field>" — resolves P2 by design |
Question Type = Auto Calculate | read_only = 1 + computed in server validate() + client script (validation _id "5" in skill mapping) |
Mandatory = Yes | reqd = 1 if always-visible; mandatory_depends_on if conditionally shown (validation _id "1" per skill) |
Condition for Num = 0-160 KG | min/max per-question keys in V2 JSON, or regex via skill validation mapping |
| Skip Logic | depends_on eval expression |
| Logic & Status (Close/Open the Form) | Workflow state machine — see Status of Apply For Scheme Docu for the canonical state list |
4. Health Screening (form 1010 in V2 JSON) — design vs. V2 deltas
138 rows in the sheet vs. 90 questions in V2 JSON 1010.json. The design has strictly more structure than the V2 dump.
Section structure (per design)
- 1.0 Member Details (12 fields, all
Auto populate from Member Form) — Name, Father’s/Spouse, DOB, Age, Address, Phone, Gender, Religion, Occupation, Annual Income, Marital, Caste, Disabled, plus1.12 Are you Pregnant?(visible if Gender=Female) and1.13 Blood Group (+/-). - 2.0 BMI Calculation Section — Weight (0–160 kg, dec≤2), Height (0.1–2.5 m, dec≤2), BMI (auto), BMI Status Adults (auto, 5 statuses), BMI Status Child (auto, 4 statuses).
- 3.0 Screening — HB Value (0–20, dec≤1) + HB Status (auto), BP Value 1 with SBP (0–250) + DBP (60–110) + BP Status (auto), 1st Diabetes Level / RBS (50–550, no decimals).
- (implicit) 4.0 Initial determination — first closure rules (“Close the Screening Form, no need for Follow-ups” If HB status = No Anaemia AND…).
- 5.0 Follow-up 1 (referral centre visit) — Doctor’s screening values, Status of Follow-up (auto from values), close conditions.
- 6.0 Follow-up 2 (medication adherence) — Q on regular meds, side effects multi-select, refer to Doctor, diet plan, education, “Do you want to do 3rd Follow-up?”.
- 7.0 Follow-up 3 — diet/exercise compliance, education provided.
- 8.0 Re-screening — Auto-populate prior values, re-measure, re-status (matrix at R130-R138 — HB×BP×RBS → Status outcome).
Closure logic (extracted)
- “If HB status - No Anaemia OR BP status - Normal OR RBS status - Normal” → close, status =
Member has normal health status(perHS Statusesrow 3). - 8 outcome rows (R131-R138) define the final 3-axis status matrix (HB × BP × RBS) → 5 final form statuses (“Member Under Medication and Improved”, “Managing”, “Needs Close Monitoring”, etc.).
DRIS comments visible (open questions to PM)
- “moved here” (1.13 Blood Group placement)
- “for normal added the range as 18.5–22.9” (BMI threshold)
- “corrected range by adding custom regex” (height)
- “not calculated in decimals” / “not recorded in decimal” (RBS, BP)
- “which BMI standard WFH or WFA, also on further agewise classification of bmi statuses”
- “are we not going to profiling child less than 5 yr olds”
- “why logic needed”, “why only Hb here”, “clarify statuses why need so many”
- “please add statuses” (5.1.3 Follow-up status)
- “on need to add here” (8.1 Status of Screening)
Deltas vs. V2 JSON 1010
- V2 has 90 questions, design has more sub-questions (bottom-line: design splits some computed/group-show rows; V2 inlines).
- V2 self-link via
getDynamicOptionon 1011. Design replaces with explicit “Follow-up 1 / 2 / 3 / Re-screening” sections, each withAuto populate from Follow-up 1 / Group show. In V3 these become a parent record + child audit-log entries (D3). - V2 stores HB/BP/RBS status as user-selected enum. Design says
Auto Calculate / Single select— server-side compute from numeric values, not user-pick. The lookup tables are inHS Logics.
5. Livelihood (NEW PROGRAM — only authoritative source)
120 rows in the sheet. No V2 JSON exists for this program — design is canonical.
Section structure
- 1.0 Member Details (8 fields, all
Auto populate from Member Form) — same pattern as HS. - 2.0 SHG eligibility & loan:
- 2.0 Are you a Member of SHG? (Yes/No → if No, close form: “Member not in SHG - Closing the Form”)
- 2.1 Name of SHG (Text, skip if 2.0 = No)
- 2.2 Since when you are member of SHG (Number, 0-30 years)
- 2.3 Are you a shareholder of Meshavaram FPCL?
- 2.4–2.10 (omitted for brevity — likely additional eligibility/profile)
- 2.11 Have you participated in a village-level awareness campaign on goat rearing?
- 2.12 Have you received a revolving fund loan from the project?
- 2.13 Date (DD/MM/YYYY) of receipt (Date, skip if 2.12 = No)
- 2.14 Amount Received (Number, default 10000)
- 2.15 When you want to do the Follow-up? (Single select: 7 / 10 / 15 days)
- Closure: 2.12=Yes → “Member received Loan - Moving to Follow-up”; 2.12=No → close.
- 3.0 Follow-up 1 - Livelihood (“should be completed only once”, monthly cadence based on date of receipt of loan):
- 3.1 Count of male/female goats purchased using revolving fund (Multi-select Male/Female)
- 3.2 Number of male goats (0-5, skip if 3.1=Female only)
- 3.3 Number of female goats (0-5, skip if 3.1=Male only)
- 3.4 Goat insurance done? (Yes/No)
- 3.5–3.6 Which market channels do you use to sell goats? (Multi-select: Local Market, Broker, …)
- (implicit later sections) monthly loan-repayment follow-ups.
Key rule
- Livelihood Follow-up 1 is single-instance (“should not allow multiple”). This is different from HS/Scheme self-link multi-instance follow-ups. V3 must enforce this constraint.
- Monthly cadence of loan-repayment follow-ups — derived from the receipt date (2.13).
Implications for the import pipeline (A16)
- A16.1 (registry): No V2 JSON for Livelihood, so no
(formId, order)registry needed for it. Doctype is built directly from this sheet. - A16.2 (skill run): Skip the skill for Livelihood — author Doctype directly from PM design.
- A16.4 (master data): No new masters introduced beyond what Member already provides + the SHG/FPCL/market dropdowns enumerated in this tab.
6. HS Logics — calculation rules (design authority for compute fields)
Tab structure: 4 lookup-table groups side-by-side: BMI / Hemoglobin / Blood Pressure / Blood Sugar.
BMI (Adults, ≥18)
| BMI (kg/m²) | Result | Interpretation |
|---|---|---|
| < 18.5 | Underweight | ”Your are UNDERWEIGHT, please consult with physician or nutritionist.” |
| 18.6 – 22.9 | Normal | ”Your BMI is in NORMAL, …” |
| (rest of 5-status table to be re-checked) | Overweight (At risk) / Moderate Obesity / Severe | … |
Hemoglobin (4 cohorts × 5 statuses)
- Children (0–14 years), M/F: No Anemia ≥11.0, Mild 10.0–10.9, Moderate 7.0–9.9, Severe <7.0, High Hemoglobin >18.0
- Men (≥15), Male: ≥13.0 / 11.0–12.9 / 8.0–10.9 / <8.0 / >18.0
- Women (≥15), Female: ≥12.0 / 11.0–11.9 / 8.0–10.9 / <8.0 / >18.0
- Pregnant Female: ≥11.0 / 10.0–10.9 / 7.0–9.9 / <7.0 / >18.0
Blood Pressure (13+, M/F)
- Systolic ≤80 AND Diastolic ≤70 → Low
- Systolic >100 AND ≤120 AND Diastolic >60 AND ≤80 → Normal
- Systolic >120 AND ≤139 AND Diastolic … → High Normal
- Systolic ≥140 AND ≤159 (Pregnant: ≥140 + Diastolic constraints) → Slightly High
- (continued — 6 statuses total: Low / Normal / High Normal / Slightly High / Moderate High / Severe High)
Blood Sugar (all ages)
- Single set of thresholds — extract from columns 22+ when full-rendering the sheet.
A16 implication: these tables drive a server-side compute helper per metric. Encode as Python lookup in Frappe app (NOT relying on JSON-encoded thresholds in V2 — those are wrong per DRIS comments).
7. BP New Logic (redesign — supersedes V2 BP encoding)
Tab opens with: Result = Higher value between Sys & Dia.
6 lookup tables, one per Systolic level (1=Low, 2=Normal, 3=High Normal, 4=Slightly High, 5=Moderate High, 6=Severe High). Each has columns Sys, Dia, Result. The result is always max(Sys_level, Dia_level).
Concrete rule:
sys_level = bucket(systolic) # 1..6
dia_level = bucket(diastolic) # 1..6
bp_status_level = max(sys_level, dia_level)
bp_status = STATUS_NAMES[bp_status_level]
The 36-row matrix in the sheet is a regression fixture — every (sys_level, dia_level) → result is enumerated. Use it as-is for unit testing the Frappe BP compute.
8. Workflow status taxonomy (Status of Apply For Scheme Docu)
Single source of truth for closure terminals — supersedes V2 form 1003’s closedItself array.
Apply for Scheme — 16 statuses
| Sl | Status name | Open/Closed | Trigger |
|---|---|---|---|
| 1 | Collect Details | Open | Form opening till “Do you have all relevant documents to proceed” |
| 8 | Scheme selected/Docs verified | Open | When “Do you have all relevant documents” = Yes |
| 6 | Application Filled | Open | Q.24 Application Filled |
| 7 | Application Verified | Open | When Application Verified |
| 3 | Application submitted to Govt department for approval | Open | When Application Submitted |
| 5 | Approved | Open | Follow-up Q14 = Approved |
| 12 | Application Approved & Benefits received | Closed | Q.15 = Yes → form closes |
| 15 | Application approved & Benefits not received | Closed | Q.15 = No, 2 times |
| 9 | Closed | Closed | Visible on Update Member |
| 10 | Relevant Documents Missing | Closed | — |
| 13 | Application Delayed & Closed | Closed | — |
| (4 more not listed in sample) |
Apply for Document — 11 statuses
| Sl | Status name | Open/Closed | Trigger |
|---|---|---|---|
| 1 | Collect Details | Open | — |
| 2 | Application submitted | Open | Q.20 Application Submitted |
| 3 | Application Filled | Open | Q.20 Application Filled |
| 4 | Application approved & Follow up task created | Open | When Application Approved |
| 5 | Application Delayed | Open | Q.14 Application Status = Delayed |
| 6 | Application verified | Open | Q.20 Application Filled |
| 7 | Application Approved & Document not received yet | Closed | 3rd time document not received |
| 8 | Application Rejected | Closed | Q.17 any rejected reason |
| 9 | Application Approved & Document Received | Closed | ”Did you receive document” answered |
| 10 | Application Delayed & Closed | Closed | 3rd time delayed |
| 11 | closed | Closed | Visible on Update Member |
Note the “3rd time” repeat-count rule — both workflows close after a 3rd consecutive delay/non-receipt. Encode as a delay-counter in the audit-log (A16.3).
9. Apply for Scheme + Apply for Document workflow design
89 rows. Tab opens with: Apply for SP Workflow - Documented as in version 4.11.4 of Diceflow — confirms the V2 platform name is Diceflow (mForm V2 = Diceflow v4.11.4).
Custom Fields catalog (resolves part of A14b — these masters are HERE)
| Field | Type | Values |
|---|---|---|
| Occupation Status | Single select | Employed / Unemployed / Not Applicable |
| Marital Status | Single select | Unmarried / Married / Widow / Separated / Divorced / Not Applicable |
| Religion | Single select | Hindu / Christian / Muslim / Sikh / Jainism |
| Caste Category | Single select | General / SC / ST / MBC / BC / OBC / FC |
| Do you have any disability? | Boolean | Yes / No |
| Family Annual Income | Number | — |
| Civic IDs | Multi-Select | List of 9 (specific IDs not enumerated in this sheet — confirm with PM) |
Workflow shape
- User Role: Individual Facilitator executes the workflow.
- Step 1: Select Member.
- Step 2: Show Details collected from Add Member workflow + previously stored in Diceflow. Pull Occupation Status, Annual Income, … from Member configuration.
- Step 3+ (continued) — questionnaire steps Q.14, Q.15, Q.17, Q.20, Q.24 referenced in the status taxonomy above. These Q numbers should map to V2 form 1002 (Scheme Application) + 1003 (Scheme Followup)
ordervalues — verify on registry build.
Validations (notable)
- “If Date of Birth or Gender of the Member is not stored in the Member configuration, …” (validation rule — confirm completion behaviour)
- Migrant Status, Disability Type, Own Land status are deliberately NOT captured in the Apply for Scheme workflow (per row 2 — done in I4WE separately).
Document closure rule (R89)
- “If No, Close Workflow, Document Not received, Enter Reason” — final question on the document follow-up.
10. Hierarchy + role model
12 rows. Phase 1 + Phase 2 organisational tree:
Phase 1
| Level | Roles |
|---|---|
| Country / Donor | Country Lead, Country MEAL Lead, SP MEAL Lead |
| Partner | Partner Manager |
| State | State Lead |
| District | District Coordinator (Phase 1) / District Facilitator (Phase 2) |
| Block | Block Coordinator |
| Individual Facilitator | Individual Facilitator |
Phase 2 — same shape, different role names per level
Implication for Frappe permissions / scoping:
- This is the role-based access model. Different from rel-mis’s
User Program Assignment + UPA Geographywhich scopes by geography hierarchy. - Per the feedback memory (
feedback_swasti_rel_mis_reference.md), do NOT lift rel-mis’s UPA model for Swasti. This sheet’s role-by-level model is the design. - A V3 design call: Frappe Role doctype mapping per level + standard Frappe permission rules (or a thin custom
User Role Assignmentdoctype if multi-program is needed).
11. Add Member Workflow + Update Member
Add Member (28 rows) — member-create form
| Field | Required? | Validation |
|---|---|---|
| Name | Mandatory | — |
| Father’s/Spouse Name | Mandatory | — |
| Date of Birth | Mandatory | Cannot be a future date. Today or earlier. |
| Phone Number | Mandatory | Must be 10 digits |
| Gender | Mandatory | — |
| Name of the Panchayat | Mandatory (Dropdown) | From geography master |
| Name of the Village or Block | Mandatory (Dropdown) | From geography master |
| Occupation Status | Mandatory | (per Custom Fields catalog above) |
| Annual Income | Mandatory | — |
| Marital Status | Mandatory | (per Custom Fields catalog above) |
| (more rows omitted) |
Update Member (5 rows)
- Step 1: Enter Name (while firing workflow)
- Step 2: Lookup for the Member with this Name for the Location of the User ← important: lookup is scoped to the user’s location
- Step 3: Display the values stored as defaults
- Step 4: All fields except Name can be updated and stored back
- Step 5: (continued)
Note “for the Location of the User” — this is the geography scoping model in plain English. It’s user-scoped (i.e., scoped to the user’s assigned location), not a UPA-style multi-geography expansion. Confirms our feedback memory: simpler than rel-mis.
12. Resolution of open questions from §10 of the brief
| Open question | Source-of-truth | Status |
|---|---|---|
| A14a (Kannada/Telugu translations) | This sheet | ❌ NOT resolved — only English present. Still open with mForm team. |
| A14b (master data values) | This sheet | ⚠️ PARTIAL — Custom Fields catalog (Occupation/Marital/Religion/Caste/Civic IDs) is here. The 107 schemes, document master, donor master, and geography hierarchy are NOT here. Still need from mForm team. |
| A14c (validation rules) | Already resolved (04a-validation-source-resolution.md) | ✅ Fully resolved. PM sheet provides plain-English validations as additional reference (e.g., “10 digits”, “0-160 KG”). |
| A14 overall (mForm V2 access method) | This sheet | ❌ NOT resolved — sheet is design-side. Still open. |
| A18 (rare input_types 13/29/30) | This sheet | ❌ NOT addressed. Still need a sample. |
| Self-link unwind logic | This sheet | ✅ Decoded. Status of Apply For Scheme Docu provides the canonical state machine + 3rd-time delay/non-receipt closure rule. |
(formId, order) → fieldname registry | This sheet | ✅ Validated approach. PM uses the same join key — see HS Statuses and card details row 3. |
13. Mapping to A16 import-pipeline jobs
| A16 sub-job | What the sheet provides | What’s still missing |
|---|---|---|
A16.1 — Cross-form (formId, order)→fieldname registry | One concrete example (HS_Statuses R3: 1010, order 36 = Current Status). Confirms the design intent. | Need to walk all 13 V2 JSONs and produce the full registry. |
| A16.2 — Skill run, per-form, gated | Per-form target design: question types, mandatoriness, ranges, skip logic, auto-calc. Use as acceptance criteria when verifying skill output. | Skill must produce four-files-in-parity (DocType JSON + .py + .js + .dart) per form; sheet doesn’t define those, just the contract they must satisfy. |
| A16.3 — Self-link collapse → audit log | Status taxonomy (Scheme 16 + Document 11). Closure rules with 3rd-time delay logic. Auto-populate-from-prior-follow-up pattern. | Implementation of the collapse during member+response import. |
| A16.4 — Master-data hydration | Custom Fields catalog (Occupation/Marital/Religion/Caste/Disability/Civic IDs) for the member DocType. | 107 schemes (eligibility filters + portal links), document master, donor master, geography hierarchy — not here. Still need from mForm team. |
| A16.5 — Member + response import | Add Member Workflow + Update Member define the canonical member DocType shape. Geography lookup scoped to user’s location. | Member data + response history — comes from the V2 instance once A14 access is confirmed. |
| (new) A16.0 — Greenfield Livelihood | Full design in Livelihood tab. | Author Doctype directly from sheet — skip the conversion skill since no V2 JSON exists. |
14. Action items emerging from the sheet
| # | Owner | Action |
|---|---|---|
| A19 | Dev team | Reconcile every PM-design row vs. corresponding V2 JSON row; produce a delta report per form (questions added / removed / renamed / re-ranged). Feed into A16.2 acceptance. |
| A20 | Dev team | Author the Livelihood Doctype directly from the Livelihood tab (no V2 JSON to import from). Use the mform-to-frappe skill’s templates for shape, but inputs are this sheet not a JSON. |
| A21 | Dev team | Encode HS Logics BMI/HB/BP/RBS lookup tables as Frappe Python helpers — server validate() + client script (mirror). Use the BP New Logic 36-row matrix as regression fixture. |
| A22 | Abhijit/PM | Resolve all DRIS-comment open questions on the Health Screening tab (BMI standard WFH/WFA, profiling for <5yr, “why only Hb here”, “clarify statuses why need so many”, etc.). |
| A23 | Dev team | Build the canonical WorkflowStatus Doctype from Status of Apply For Scheme Docu (27 rows for Scheme + Document). Encodes the open/closed terminal flag + trigger logic per status. |
| A24 | PM/Abhijit | Confirm whether the Custom Fields Civic IDs “List of 9” can be enumerated in this sheet or if we need to source it elsewhere (gov portal? screenshot 12 of kickoff already shows the list visually — extract from there if needed). |
| A25 | Dev team | Treat HS Test Cases (15 rows) as regression fixtures for the BMI/HB/BP compute helpers. Add to QA suite (per A10). |
15. Open questions surfaced by the sheet
- The DRIS-flagged BMI standard ambiguity — WFH (Weight-for-Height) vs. WFA (Weight-for-Age) for child BMI. Critical for the
BMI Status (Child)compute helper. Open with PM. - Profiling members under 5 years — per row 25 DRIS comment. If yes, need a separate <5yr BMI cohort. If no, hard-fail on attempt.
- Civic IDs list — sheet says “List of 9” but doesn’t enumerate. Likely matches kickoff screenshots
30-civic-id-multiselect-35min.jpg/12-civic-id-doc-33min.jpg— confirm. - Phase 1 vs Phase 2 — sheet defines two organisational hierarchies. When does Swasti switch phases? Both must be supported, or one is forward-looking?
- “For the Location of the User” in Update Member — single location or all assigned locations? If multiple, this is a P1/P2 nuance the design hasn’t fully spelled out.
Livelihood Follow-up 1 single-instanceconstraint — what error/UX when a user attempts a 2nd? Frappe doesn’t enforce single-instance child records natively; needs custombefore_inserthook.- Rare input types 13/29/30 (from
03-mform-json-analysis.md) — not addressed in this sheet. Likely safe to defer until skill run encounters them.
16. References
- Source xlsx:
~/Dhwani/swasti-mform-migration/raw/pm-design/pm-form-design.xlsx - Per-tab JSON+MD extracted:
~/Dhwani/swasti-mform-migration/raw/pm-design/extracted/ - Cross-references:
01-kickoff-brief.md §10— import pipeline plan, A14–A18 action items03-mform-json-analysis.md— V2 form JSON shape, 13 forms, self-link decoder04-mform-to-frappe-skill.md— conversion skill, validation_idtable, four-files-in-parity rule04a-validation-source-resolution.md— A14c resolution02-reliance-frappe-context.md— rel-mis Frappe shape (REFERENCE; do not lift UPA/multi-geography model)
feedback_swasti_redesign_not_mirror.md— V2 forms are content source, not design authority