Files
aia-website/www/reports/phase-9-form-a-consultation-isolated-test-2026-10-29.md
T

9.5 KiB

Phase 9 — Form A consultation isolated-test integration

Recorded: 2026-10-29 UTC Scope: Form A (262946078314059) consultation context in local, non-indexing isolated-test builds Status: implemented and locally verified without a Jotform submission; owner acceptance pending

Purpose and boundary

This batch retires no additional physical form: Form A serves the owner-reported configured consultation context and Form C remains the future professional-referral form. It does not activate a production consultation route, modify the Jotform account, submit a form, route answers through Astro or Contabo, or add analytics, advertising, conversion tracking, webhooks, cookies, query forwarding, service preselection, child/clinical/payment/booking collection, a Jotform helper, cross-origin DOM access, or postMessage handling.

The pre-existing production resolver remains frozen at seven Form A contact/landing paths. The following nine paths are a separate isolated-test allowlist:

Surface Route Locale Fixed context and browser behavior
Standalone /client-consultation EN formContext=consultation&language=en; iframe receives its fixed source during render
Standalone /es/client-consultation ES formContext=consultation&language=es; iframe receives its fixed source during render
Standalone /schedule-consultation EN formContext=consultation&language=en; iframe receives its fixed source during render
Service drawer /aba-therapy EN Explicit opener assigns the fixed EN source only after the native dialog opens
Service drawer /autism-evaluations EN Explicit opener assigns the fixed EN source only after the native dialog opens
Service drawer /learner-social-club EN Explicit opener assigns the fixed EN source only after the native dialog opens
Service drawer /es/aba-therapy ES Explicit opener assigns the fixed ES source only after the native dialog opens
Service drawer /es/autism-evaluations ES Explicit opener assigns the fixed ES source only after the native dialog opens
Service drawer /es/learner-social-club ES Explicit opener assigns the fixed ES source only after the native dialog opens

Each URL comes from the typed, fixed route/locale/context mapping. No route may derive the form ID, language, context or parameter values from visitor input, queries, referrers or page labels.

Activation contract

All six values are required for the nine consultation surfaces:

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

Missing, invalid, contradictory or indexing-enabled values fail closed. The production values PUBLIC_AIA_FORMS_MODE=live, PUBLIC_AIA_FORMS_LIVE_APPROVED=true, PUBLIC_AIA_FORMS_ENVIRONMENT=production and PUBLIC_AIA_FORM_A_PRODUCTION_APPROVED=true continue to permit only /contact, /es/contact, the four named ABA landing pages and /lp/early-intervention. The consultation-test flag cannot expand that production list.

The adapter retains referrerpolicy="no-referrer", sandbox="allow-forms allow-scripts allow-same-origin", fixed context-sensitive dimensions, localized accessible titles, its conditional 15-second hosted-form fallback and localized no-JavaScript fallback. A frame load only stops the fallback timer; it is not evidence of Jotform initialization, an accepted submission, a conversion or a healthy cross-origin application.

Shared bilingual drawer behavior

ServiceInquiryDrawer.astro now uses one typed English/Spanish implementation. In authorized consultation-test mode it removes the legacy child-information surface, renders a visible keyboard-accessible opener and uses a native dialog with a localized close name. The drawer does not auto-open. Opening assigns the already validated source once, starts the adapter timer and focuses the close control. Escape, close-button and backdrop paths use the existing dialog behavior and restore focus to the trigger. Closing and reopening does not create another iframe or reset its source. The rendered parent supplies localized instructions and a no-JavaScript hosted path; Jotform's child text remains a separate owner language-acceptance item.

The owner superseded the earlier diagnostic-evaluation explanatory-note requirement. The implementation adds no conditional note. AIA's client advocate will discuss available options and coordination with qualified diagnostic providers in the later conversation. The parent and Form A must not imply current in-clinic diagnostic availability, a diagnosis or a completed diagnostic-provider hire.

Verification record

  • npm run check: passed with 0 errors, 0 warnings and 0 hints.
  • Focused resolver, artifact and nonproduction tests: 21 passing tests.
  • Guarded browser verification uses loopback Astro preview, blocks every external request before transmission and supplies only a local Jotform fixture. It verifies all nine routes at 320, 390, 768 and 1440px; static rendering and deferred drawer loads are recorded separately. Result details, screenshot directory and the final validation/audit outcomes are added to this report after the complete regression pass.

No automated check submits form data or treats a frame load as a conversion. The guarded tests establish parent-page routing, gating, accessibility hooks and request timing only; they cannot verify the actual Jotform dropdown, conditions, localized child UI, validation, confirmation, notification or telemetry behavior.

Remaining acceptance

The Jotform owner and applicable operations, clinical, privacy/security and English/Spanish reviewers must still accept the actual consultation dropdown's visibility, requiredness, five display choices, condition behavior, translations, validation, confirmation and notification boundary. Required browser acceptance includes real embedded loading, responsive/error expansion, keyboard traversal across the iframe boundary, no-JavaScript hosted fallback, real screen-reader behavior and Jotform runtime/telemetry privacy review. A separate owner decision and production allowlist change are required before any consultation surface is eligible for production. Form C remains uncreated and unmapped.

Completed local evidence

The guarded consultation browser runner passed 45 checks: nine routes at 320, 390, 768 and 1440px, plus nine no-JavaScript checks. It recorded 36 full-page screenshots in /tmp/aia-form-a-consultation-NUdKYz and one held-request timeout check. The local request guard intercepted 40 attempted Jotform GETs, all to one of the two fixed consultation URLs; it fulfilled ordinary checks from a local fixture and held one timeout request. No request was transmitted to Jotform. It observed no non-GET/HEAD request, production API request, analytics request, advertising request or WebSocket request. This is parent-page browser evidence only, not a test of the real Jotform child application.

The original seven Form A routes were also rerun with the guarded isolated-test browser runner: 35 checks across the seven paths at the same four widths plus no-JavaScript and fallback states. The resulting request ledger contains only intercepted GET attempts to the fixed Form A URLs and pre-existing Leaflet resources; no request was transmitted and no non-read request was attempted.

Focused resolver/artifact/nonproduction tests passed 21/21. The existing Form A preview stylesheet test was reconciled to the owner-maintained .form-all Jotform selector and passed 4/4 without modifying integrations/jotform/aia-form-a.css. Campaign tests passed 11/11. Core suites passed: Markdown 20/20, publication 33/33, SEO 35/35, Library 53/53, routes 10/10 and Phase 8 contrast 5/5. astro check reported zero diagnostics. Normal staging, mock, indexing-enabled, production-gated and isolated-test artifacts all passed the artifact verifier:

Artifact mode HTML routes Sitemap URLs hreflang links Form A frames Deferred drawer frames
Normal staging/off 128 0 0 0 0
Mock 128 0 0 0 0
Indexing-enabled/off 127 109 180 0 0
Production-gated 127 109 180 7 0
Consultation isolated-test 128 0 0 10 6

In the isolated artifact, ten static frames are the seven frozen contact/landing paths plus the three standalone consultation pages. The six service-drawer adapters retain an approved source only as deferred data until a visitor opens the dialog. The final normal staging build was restored: 128 noindex,nofollow pages, an empty sitemap, zero hreflang links and zero Form A frames. Link, image and blog audits reported 0 broken internal links, 0 missing mapped page images and 0 blog-audit failures.

Later consolidated owner revision, 2026-10-30

The explicit-only drawer behavior above is the earlier checkpoint's historical evidence. The subsequent consolidated pass replaces it with four-second/50% automatic opening, global 30-day expiry-only suppression, existing CTA override and bilingual service-specific introductory copy. Iframe sources remain deferred until opening, which may now be automatic under the authorized test mode. The production allowlist is unchanged. See the current consolidated report for tests, privacy boundaries and remaining owner acceptance. Historical test counts above are not claims about the revised behavior.