U.S. flagA digital services project by Flexion

closedFinal ProjectGitHub #6

User Story:

As a form filler (Carlos), in order to apply for a government benefit, I want to fill out a published form and submit my responses

Preconditions:

  • A FormProject is published with both DataCollectionSpec and FormSpec (Slices 2-4)
  • Form is accessible without authentication

Acceptance Criteria:

  • Carlos can navigate to a published form
  • Form renders according to the FormSpec (pages, sections, field types)
  • Form validates input against DataCollectionSpec constraints (required fields, patterns, min/max)
  • Carlos can navigate between pages (next/previous)
  • Carlos can review all answers before submitting
  • Submission is captured and linked to the specific spec version (git SHA)
  • Carlos receives confirmation after successful submission
  • Submission data stored as a Submission record

Success Metrics:

  • Form completion rate (started vs. submitted)
  • Average time to complete
  • Validation error rate per field

Notes:

  • Static delivery mode only in this slice — conversational filling is Slice 8
  • Form renderer walks the FormSpec and selects UX patterns per field type
  • Submission links to exact spec version so data interpretation is unambiguous
  • Submission storage is in-memory or file-based for MVP (not production database)

Definition of Done:

  • Acceptance criteria met
  • Threat model updated – any new trust boundaries, data flows, or attack surfaces are reflected in catalog/architecture/threat-model.md
  • Technical documentation updated – architecture docs and decisions are current
  • Form renders all field types from the UX pattern library
  • Tests pass
  • Type checking passes
  • CI pipeline green
  • Deployed and demoable