feat(forms): add isolated Form A consultation testing
This commit is contained in:
25 files changed
+1046
-253
No files matched your search
@@ -4,7 +4,7 @@ Date: **2026-10-18** · Plan version **1.7 revision 2026-10-28** · Governing co
|
||||
|
||||
**Planning only. Do not execute any batch from this document without separate authorization.** Phase 9 establishes decisions and bounded implementation authority. Phase 10 retains final production integration acceptance, rollback and cutover. The user stages, signs and pushes.
|
||||
|
||||
> **Form A reconciliation — 2026-10-28 (current implementation evidence, no production release approval):** Form A — **AIA | Website | General Enquiries** (`262946078314059`) has owner-confirmed direct EN/ES synthetic submission, native thank-you, generic no-answer/no-PDF staff notification, autoresponder delivery, fixed hidden Reply-To, no-webhook/integration, conditional-email and language evidence. The owner also reports successful isolated Astro-iframe synthetic submission and confirmation on English contact, Spanish contact and one ABA landing placement; record that third route explicitly before release rather than inferring it. This completes functional submission acceptance for the reported samples, not seven-route responsive, accessibility, telemetry/privacy, deployment or site-release acceptance. Its hidden presentation field is **Advanced → Field Details → Unique Name = `formContext`** (exact case). The current Astro adapter is implemented only for gated, non-indexing isolated tests: `/contact`, `/es/contact`, `/lp/aba-therapy`, `/lp/aba-insurance`, `/lp/aba-ahcccs`, `/lp/aba-private-pay`, and `/lp/early-intervention`; the five landing journeys now use fixed `formContext=landing`, superseding their earlier Form B mapping. Physical Form B is retired. Form A `consultation` and Form C remain future work; their Jotform field keys and IDs must not be guessed.
|
||||
> **Form A reconciliation — 2026-10-28 (current implementation evidence, no production release approval):** Form A — **AIA | Website | General Enquiries** (`262946078314059`) has owner-confirmed direct EN/ES synthetic submission, native thank-you, generic no-answer/no-PDF staff notification, autoresponder delivery, fixed hidden Reply-To, no-webhook/integration, conditional-email and language evidence. The owner also reports successful isolated Astro-iframe synthetic submission and confirmation on English contact, Spanish contact and one ABA landing placement; record that third route explicitly before release rather than inferring it. This completes functional submission acceptance for the reported samples, not seven-route responsive, accessibility, telemetry/privacy, deployment or site-release acceptance. Its hidden presentation field is **Advanced → Field Details → Unique Name = `formContext`** (exact case). The current Astro adapter is implemented only for gated, non-indexing isolated tests: `/contact`, `/es/contact`, `/lp/aba-therapy`, `/lp/aba-insurance`, `/lp/aba-ahcccs`, `/lp/aba-private-pay`, and `/lp/early-intervention`; the five landing journeys now use fixed `formContext=landing`, superseding their earlier Form B mapping. Physical Form B is retired. Form A `consultation` now has a separate nine-route isolated-test adapter; Form C remains future work. Jotform field keys and IDs must not be guessed.
|
||||
|
||||
> **Production-gate addendum — 2026-10-28:** The local adapter now also supports the same seven Form A placements only when `PUBLIC_AIA_FORMS_MODE=live`, `PUBLIC_AIA_FORMS_LIVE_APPROVED=true`, `PUBLIC_AIA_FORMS_ENVIRONMENT=production`, and `PUBLIC_AIA_FORM_A_PRODUCTION_APPROVED=true` are all set. This is a build-time configuration contract, not a deployed environment or site-release authorization. It leaves Form C, drawers and every unrelated lead surface in their off/mock path. An indexing-enabled release artifact is compatible with the gate, but `PUBLIC_ALLOW_INDEXING` never enables a form.
|
||||
|
||||
@@ -24,9 +24,9 @@ The confirmation is limited. Recipient access and Form A retention/deletion cont
|
||||
|---|---|---|---|---|
|
||||
| F-001 | `/contact` | `en/contact.mdx` | `pages/ContactPage.astro` → `ContactForm.astro` | A EN |
|
||||
| F-002 | `/es/contact` | `es/contact.mdx` | Same | A ES |
|
||||
| F-003 | `/client-consultation` | `en/client-consultation.md` | `FormShell.astro` via PageLayout | Form A / planned `consultation` EN |
|
||||
| F-004 | `/es/client-consultation` | `es/client-consultation.md` | Same | Form A / planned `consultation` ES |
|
||||
| F-005 | `/schedule-consultation` | `en/schedule-consultation.mdx` | Same | Form A / planned `consultation` EN |
|
||||
| F-003 | `/client-consultation` | `en/client-consultation.md` | `FormShell.astro` via PageLayout | Form A / `consultation` EN, isolated-test only |
|
||||
| F-004 | `/es/client-consultation` | `es/client-consultation.md` | Same | Form A / `consultation` ES, isolated-test only |
|
||||
| F-005 | `/schedule-consultation` | `en/schedule-consultation.mdx` | Same | Form A / `consultation` EN, isolated-test only |
|
||||
| F-006 | `/referrals` | `en/referrals.mdx` | Same; preserve `#form-title` | C EN |
|
||||
| F-007 | `/aba-therapy` | `en/aba-therapy.mdx` | `ServiceInquiryDrawer.astro` | Form A / planned `consultation`; drawer redesign |
|
||||
| F-008 | `/autism-evaluations` | `en/autism-evaluations.mdx` | Same | Form A / planned `consultation`; referral-assistance approval |
|
||||
@@ -34,11 +34,11 @@ The confirmation is limited. Recipient access and Form A retention/deletion cont
|
||||
|
||||
Nine instances = 7 EN + 2 ES, three implementations. Eleven GET search instances remain separate. No Arabic enquiry form or Spanish referral route is created. EN/ES-capable logical forms do not imply new published routes.
|
||||
|
||||
The five imported landing-page journeys—`/lp/aba-therapy`, `/lp/aba-insurance`, `/lp/aba-ahcccs`, `/lp/aba-private-pay` and `/lp/early-intervention`—are current gated Form A isolated-test placements with fixed `formContext=landing&language=en`. This supersedes their earlier Form B mapping. Physical Form B is retired; other service-consultation routes are planned Form A `consultation` targets and are not current iframe placements. The landing panels are not additional native form implementations, and Form A is absent from off/mock/indexing output.
|
||||
The five imported landing-page journeys—`/lp/aba-therapy`, `/lp/aba-insurance`, `/lp/aba-ahcccs`, `/lp/aba-private-pay` and `/lp/early-intervention`—are current gated Form A isolated-test placements with fixed `formContext=landing&language=en`. This supersedes their earlier Form B mapping. Physical Form B is retired; the nine documented consultation routes are current isolated-test-only Form A placements and are never production-eligible. The landing panels are not additional native form implementations, and Form A is absent from off/mock/indexing output.
|
||||
|
||||
### Discrepancies and supersession notes
|
||||
|
||||
1. October 17 proposed possible event/fundraising consolidation into general enquiries. October 18 explicitly preserves the Event Submission Form separately; fundraising still needs approval. Tour currently points to `/client-consultation`, a planned Form A `consultation` route whose service list has no tour choice; its CTA disposition requires an intake/operations decision.
|
||||
1. October 17 proposed possible event/fundraising consolidation into general enquiries. October 18 explicitly preserves the Event Submission Form separately; fundraising still needs approval. Tour currently points to `/client-consultation`, a Form A `consultation` isolated-test route whose service list has no tour choice; its CTA disposition requires an intake/operations decision.
|
||||
2. October 17 proposed one chosen contact channel. Form A retains its existing conditional email/phone behavior; the planned consultation context adds only service interest. Operations must approve any additional field or contact-preference change; do not implement the old alternative.
|
||||
3. The older report allowed date/time/source notification extensions after review. Initial contract now explicitly defers them; use only the exact generic template after notification approval.
|
||||
4. The older inventory knew no confirmed lead source. The supplied October 18 evidence preserves `250727122848156` as a **historical structural reference only**. The revised owner decision rejects cloning or repurposing it; it is not a validated schema or active embed destination.
|
||||
@@ -99,7 +99,7 @@ For off mode prefer non-form fallback markup without editable lead controls or a
|
||||
|
||||
Mock fixtures must be synthetic and inert to external requests, including Enter and native submission paths; Playwright aborts unapproved requests before transmission. Fixture URLs/assets must not appear in the production route manifest. Live descriptors must not leak into off/mock emitted bundles through shared imports—scan generated HTML, scripts and preload hints.
|
||||
|
||||
Parent component preserves approved page design, explanatory text, iframe title, hosted fallback and responsive width/height. The Form A adapter currently uses owner-verified fixed `language=en|es` and `formContext=contact|landing` values only; `consultation` remains unconfigured and must not be emitted; it forwards no visitor data. Cross-origin child labels/errors must be verified in Jotform; Astro locale and CSS do not localize/fix them. The first-party fallback remains hidden without layout space, appears only after a 15-second missing-load timeout, and has a localized noscript version. Loading/error UI must not claim it can inspect the child DOM. A frame load is not proof of availability, application initialization or accepted submission.
|
||||
Parent component preserves approved page design, explanatory text, iframe title, hosted fallback and responsive width/height. The Form A adapter uses fixed `language=en|es` and `formContext=contact|landing|consultation` values selected only by its typed allowlists; it forwards no visitor data. `consultation` is emitted only by the separately approved non-indexing isolated-test gate and never by the production resolver. Cross-origin child labels/errors must be verified in Jotform; Astro locale and CSS do not localize/fix them. The first-party fallback remains hidden without layout space, appears only after a 15-second missing-load timeout, and has a localized noscript version. Loading/error UI must not claim it can inspect the child DOM. A frame load is not proof of availability, application initialization or accepted submission.
|
||||
|
||||
Drawer decision is a prerequisite for replacing its live content: retain timer only if approved and incapable of loading vendor resources without the approved trigger; otherwise use an explicitly approved open/load interaction or full-page fallback. Preserve Escape/initial focus/restoration and test cross-origin focus boundaries. No wholesale dialog replacement.
|
||||
|
||||
@@ -223,7 +223,7 @@ Source changes require a newly named offline reconciliation using explicit final
|
||||
|
||||
First recommended authorized batch: **Batch A**, final Form A consultation/Form C specifications and owner field approval, using the now-complete owner-supplied 27-asset roster as historical context only. First safe **code** batch is C's off/mock contact slice after its explicit authorization; it can avoid external account changes while B is pending, but cannot invent Jotform settings.
|
||||
|
||||
The companion CSV records limited owner-confirmed Form A portions of JF-01, JF-04, JF-06, JF-07 and OA-05. Pending facts still include actual question IDs/types/defaults/options, conditional routing, real translations/locale URLs, default email behavior, thank-you/POST behavior, blank-form isolation and supported success signaling. Form A recipient access and retention/deletion are owner-verified; detailed role and retention-policy records remain outside the repository. Form A exists, but its `consultation` context has no route or production activation approval; Form C remains pending and physical Form B is retired. Tour/event/fundraising separation must be retained.
|
||||
The companion CSV records limited owner-confirmed Form A portions of JF-01, JF-04, JF-06, JF-07 and OA-05. Pending facts still include actual question IDs/types/defaults/options, conditional routing, real translations/locale URLs, default email behavior, thank-you/POST behavior, blank-form isolation and supported success signaling. Form A recipient access and retention/deletion are owner-verified; detailed role and retention-policy records remain outside the repository. Form A `consultation` has nine isolated-test routes but no production activation approval; Form C remains pending and physical Form B is retired. Tour/event/fundraising separation must be retained.
|
||||
|
||||
Any approval record must identify approver role, date, exact form/environment/version, sanitized evidence and scope. An account label ENABLED, a BAA, a successful static build or a generic vendor help article cannot close these gates. Keep the real screen-reader, authorized visual/non-Chromium, fluent-language, clinical, financial and policy/source-provenance requirements from SESSION_HANDOFF.
|
||||
|
||||
@@ -246,3 +246,30 @@ Version 1.5, 2026-10-28: records owner-reported embedded synthetic submission an
|
||||
Version 1.6, 2026-10-28: adds the exact production-gate configuration for Form A and its seven fixed placements. It does not activate an environment, change the Jotform account, map Forms B/C, or authorize a production release.
|
||||
|
||||
Version 1.7, 2026-10-28: records the owner-approved two-physical-form architecture. Physical Form B is retired; Form A gains a planned, unconfigured `consultation` context and Form C remains a future referral form. The exact future route/component matrix, service-interest options, evaluation explanation and pre-activation owner actions are in [the two-form integration specification](phase-9-two-form-integration-specification-2026-10-28.md). No source component, current seven-route gate, Jotform configuration or deployment changed.
|
||||
|
||||
## Version 1.8 addendum — 2026-10-29 consultation isolated-test implementation
|
||||
|
||||
The owner reports that Form A's `consultation` context is configured in Jotform. Astro implements it for a separate, non-indexing isolated-test build only; the repository has not inspected the configured Builder rules or submitted data. It extends `FormAIframeContext` to the fixed value `consultation` and uses the existing trusted Form A URL builder. No Jotform field identifier, service-option value or condition identifier is represented in source.
|
||||
|
||||
| Placement class | Routes | Locale and activation behavior |
|
||||
|---|---|---|
|
||||
| Standalone consultation | `/client-consultation`, `/es/client-consultation`, `/schedule-consultation` | Fixed `formContext=consultation`; EN for the first and third routes, ES for the second |
|
||||
| Service drawer | `/aba-therapy`, `/autism-evaluations`, `/learner-social-club` | EN. An accessible button opens the native dialog; only then does the adapter assign its fixed iframe URL. |
|
||||
| Service drawer | `/es/aba-therapy`, `/es/autism-evaluations`, `/es/learner-social-club` | Same shared drawer and behavior in ES, with a fixed `language=es` URL and localized parent controls/fallback. |
|
||||
|
||||
Every consultation placement requires all of the following build-time values:
|
||||
|
||||
```sh
|
||||
PUBLIC_AIA_FORMS_MODE=isolated-test
|
||||
PUBLIC_AIA_FORMS_ENVIRONMENT=isolated-test
|
||||
PUBLIC_AIA_FORMS_ISOLATED_TEST_APPROVED=true
|
||||
PUBLIC_AIA_FORMS_LIVE_APPROVED=false
|
||||
PUBLIC_AIA_FORMS_CONSULTATION_TEST_APPROVED=true
|
||||
PUBLIC_ALLOW_INDEXING=false
|
||||
```
|
||||
|
||||
The original seven contact/landing placements are the complete production allowlist. `PUBLIC_AIA_FORM_A_PRODUCTION_APPROVED=true`, whether alone or with the consultation flag, does not authorize these nine routes. Off, mock, normal staging, indexing-enabled and production builds emit no consultation iframe. For the six drawers, the static artifact contains a deferred adapter; its fixed source is assigned only after the visitor opens the dialog, so static iframe counts and on-demand browser requests must be reported separately.
|
||||
|
||||
The shared `ServiceInquiryDrawer.astro` keeps legacy off/mock behavior scoped outside the isolated consultation test. In the authorized test it removes the legacy child-information surface, uses localized English/Spanish drawer copy, relies on the native dialog's close/Escape/backdrop/focus-restoration behavior, and provides a localized no-JavaScript hosted-form path. It does not auto-open or load Jotform merely because the closed drawer is present. The fixed iframe keeps `referrerpolicy="no-referrer"`, `sandbox="allow-forms allow-scripts allow-same-origin"`, its 15-second hosted fallback, no Jotform helper, no cross-origin DOM access and no `postMessage` handler.
|
||||
|
||||
The previously proposed conditional Autism Diagnostic Evaluation explanation is superseded. The consultation form must not add that note or imply in-clinic diagnostic availability. The AIA client advocate will explain available options and coordination with qualified diagnostic providers in the later conversation. Required owner acceptance remains: rendered service question/choices/conditions, English/Spanish translations and validation, synthetic submission/confirmation, notification boundary, responsive/error sizing, keyboard/dialog behavior, real screen-reader review, telemetry/privacy review and any future production route authorization.
|
||||
Reference in new issue
Block a user