craig-intake as the single public intake portal
## Summary Make `craig-intake` the single themed public intake portal for **all** deployments, delete craig-web's duplicate public `/report`, and add integration aids + mandated-reporter signing. Keeps the edge/BFF service split (ADR-017); the consolidation is recorded in **ADR-043**. Plan: [craig-intake-portal-consolidation.adoc](https://gitlab.com/gadhs/application/ccwis/craig/-/blob/main/docs/modules/ROOT/pages/plans/craig-intake-portal-consolidation.adoc) (committed in !806). ## Phases Phase 1 Theming foundation · Phase 2 Integration aids · Phase 3 Parity migration (i18n/a11y/wizard/attachments/org-keys + mount UI in integrated mode) · Phase 4 Mandated signing (server-side enforced) · Phase 5 Remove craig-web `/report` (outright, no shim). ## Phase 1 children - [x] #709 committed plan + ADR-036 amendment + ADR-043 (weight: 3) - [x] #710 share the token→CSS renderer in craig-state-bundle (weight: 5) - [x] #711 theme the standalone edge from the active bundle (weight: 3) - [x] #712 convert intake-public.css to design tokens (weight: 3) ## Phase 2 children (integration aids) Plan: [craig-intake-portal-phase2-integration-aids.adoc](https://gitlab.com/gadhs/application/ccwis/craig/-/blob/main/docs/modules/ROOT/pages/plans/craig-intake-portal-phase2-integration-aids.adoc) - [x] #713 debug JSON panel — emit the exact CpsRequest, PII-guarded (weight: 3) - [x] #714 gated keyring GET /keys metadata list + same-origin proxy (weight: 3) - [x] #715 view-keys page + top nav (weight: 2) - [x] #716 feat(i18n): extract shared craig-i18n crate + refactor craig-web (P3.1) (weight: 5) - [x] #717 feat(intake): edge adopts craig-i18n — Askama + locale routing + externalize strings (P3.2) (weight: 5) - [x] #718 feat(intake): staged accessible wizard parity + extend axe audit to the edge (P3.3) (weight: 5) - [x] #719 feat(intake): public attachments POST endpoint forwarding to cases (P3.4) (weight: 3) - [x] #720 feat(intake): attachments upload UI on the success view (P3.5) (weight: 2) - [x] #721 feat(intake): mount the embedded themed UI in integrated mode — L7 (P3.6) (weight: 2) ## Phase 4 children (mandated-reporter signing — SHINES-scoped) Plan: [craig-intake-portal-phase4-mandated-signing.adoc](https://gitlab.com/gadhs/application/ccwis/craig/-/blob/main/docs/modules/ROOT/pages/plans/craig-intake-portal-phase4-mandated-signing.adoc) - [x] #726 docs(plan): Phase 4 plan + ADR-043 amendment (weight: 2) - [x] #727 feat(intake): record the signer on accepted signed reports — PII-free audit event (P4.1) (weight: 3) - [x] #728 feat(intake): browser mandated-reporter signing on the public report form (P4.2) (weight: 5) - [x] #729 feat(intake): mandated-signing approval-gate UX (P4.3) (weight: 3) - [x] #730 feat(intake): structural gate — Signed backend rejects unsigned mandated on /public (P4.4) (weight: 2) - [x] #738 docs(plan): commit the Phase 5 plan + ADR-043 stub (P5.0) (weight: 2) ## Phase 5 prerequisite — edge public-form parity remediation Plan: [craig-intake-edge-public-form-parity-remediation.adoc](https://gitlab.com/gadhs/application/ccwis/craig/-/blob/main/docs/modules/ROOT/pages/plans/craig-intake-edge-public-form-parity-remediation.adoc) - [x] #742 docs(plan): commit edge public-form parity remediation plan (R0) (weight: 1) - [x] #741 feat(intake): edge public-form parity R1 — 911 banner + is_victim + core narrative (Phase-5 prereq) (weight: 3) - [x] #739 feat(intake): edge public-form parity R2 — reporter + adult/child fields (weight: 5) - [x] #740 feat(intake): edge public-form parity R3 — deep narrative (educational neglect + CSEC) (weight: 3) - [x] #736 chore(web): remove the public /report flow; route /report to the edge (P5.1) (weight: 5) - [x] #737 chore(docs): archive Phase 5 + the consolidation program; close epic &60 (P5.2) (weight: 2) Deferred follow-ups (related, not children): #731 integrated/cases-backed individual signing (relates #723); #732 keyring-receipt hardening (relates #691).
epic