Files
aia-website/www/reports/phase-8-checkpoint-manifest-2026-10-15.md
T

332 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 8 checkpoint manifest and final validation — 2026-10-15 UTC
**READY FOR USER-SIGNED PHASE 8 COMMIT**
Technical checkpoint preparation only. No human accessibility, language, financial,
clinical, legal/privacy or production approval is asserted. All P9-01–P9-10 remain
Pending decision. No staging, signing, push, deployment or integration activation
was performed. This document is the exact path authority for user staging.
## Starting state and inventory reconciliation
Branch `faithful-astro-migration`; HEAD `8e64d322092b1fa6e0f648ddf26a665c80588198`.
Index empty. No loopback preview process remained; the user's ordinary Chromium
and MCP service were not disturbed. No old Phase 7 staging aid exists.
Actual starting inventory: **27 modified tracked + 1 tracked deletion + 34 untracked
= 62 paths**, including the five protected exclusions. Thus **57 intended Phase 8
paths**, not the earlier 55 estimate. The two additions since that estimate are
`phase-8-badge-correction-evidence-2026-10-15.json` and the `18-21-22-820Z` offline
report. They document the subsequently authorized badge correction. No unexplained
path or commit appeared. Preparing the handoff and this manifest adds two paths:
**59 approved = 28 modified + 1 deleted + 30 added** (rename detection disabled).
The temporary staging aid is a 60th non-checkpoint working path, not an addition
to the approved set. With exclusions and aid, final status contains 65 paths.
Only documentation changed during this preparation. Application, tooling, test,
asset and historical JSON evidence bytes remain unchanged from preparation start.
All original Phase 8 changes were retained. No protected contents were inspected,
hashed or modified. Earlier Phase 8 route reports are included as historical
implementation evidence; only the 18:21 artifact matches the current source.
The four specifically excluded October 11–13 reports remain outside this scope.
## Reviewed cumulative implementation
- Contrast and persistent underlines for prose/FAQ/contact/form links; focus for
navigation, language menu, skip link, cards, byline and Arabic diagram regions.
- Source-layout-preserving director-grid correction at 320px.
- Explicit Arabic article UI messages and number/title bidi isolation; existing
English/Spanish behavior and the likes/views script are unchanged.
- DTT/NET peer H2 sections and consultation Start Here H2, with original words,
fragments and H3 visual size. No numerical-skip-only WCAG conclusion.
- Native service dialogs preserved. Four Chromium scenarios and a minimal native
control reproduced the browser-chrome boundary without application background
focus escape; visible-browser/real-AT acceptance remains open.
- Spanish HSA/FSA localization carryover, one section after ESA/before Financial
Help. APROBADO asset is 500×425 RGBA, identical alpha to original and identical
color pixels outside its 192×42 lettering rectangle at (154,188). Original EN
homepage/image remain byte-identical to HEAD. Financial/fluent review pending.
- Spanish privacy collection heading restored: eleven H2s and four list items.
Removing the added heading/whitespace reproduces the previous policy exactly;
date, frontmatter, links, contact and legal wording are preserved.
- Complete Tour `.md` → `.mdx` pair below: one route, identical metadata, nine
ordered source photos/captions, controls/thumbnails, focus, restrained live
announcements, no rotation/animation, full no-JS fallback, consultation CTA.
- Existing optional local browser environment, guarded browser scripts, focused
tests and evidence are included. No package upgrade, new production API,
backend, advertising, publication-policy or hosting change.
## Evidence reviewed without repeating completed browser runs
| Evidence population | Recorded result | Checkpoint evidence check |
|---|---|---|
| Initial system Chromium run | 122 unique routes, 50 desktop + 50 mobile full-page captures, 50 no-JS routes, 40 passing interactions + one native-dialog review | 100 representative capture hashes present and matching |
| Bounded follow-up | 30 grouped checks, four native-dialog scenarios, seven actual-200%-zoom routes, Arabic diagram checks | All 194 referenced capture hashes match; includes historical/superseded zoom frames |
| Consolidated follow-up | Five distinct routes, 21 grouped checks, two contrast/reduced-motion probes, 20 full-page captures, two 200%-zoom routes/26 overlapping frames, four element crops | All 50 referenced hashes match |
| Badge correction | EN/ES at 320/390/768/1440, eight passing checks and eight section captures | All eight hashes match; current asset hash matches |
| Real screen reader / authorized reviewer sign-off | Zero sessions / no sign-offs supplied | Pending; not inferred from automation |
Playwright 1.61.0 / Chromium 151.0.7922.75, DPR 1 except documented native zoom.
Counts are separate runs/populations, not additive unique routes or human approvals.
Screenshots remain under their recorded `/tmp` paths, outside Git; they are
available now but not guaranteed durable. No capture was recreated to satisfy a
reference. Source evidence and summaries, not browser profiles/cookies, are included.
Network guards allowed exact loopback GET/HEAD only, denied external origins,
WebSockets and website service workers. Earlier map requests and the isolated
synthetic fixture POST were blocked and recorded as attempts. No production
API/like/form/advertising/authentication interaction was transmitted. No new
browser session or public retrieval was needed for checkpoint preparation.
Tour public evidence: ordinary TLS validation succeeded, HTTP 200, cache HIT with
October 3 prerender observed October 15. Spanish privacy: cache-qualified capture
after failed TLS validation and certificate-insecure fallback. Neither proves
current origin freshness; Spanish additionally lacks authenticated provenance.
Trusted Spanish-source comparison, legal/privacy and fluent review remain mandatory.
No insecure retrieval or new production crawl was performed.
## Final validation (sequential, October 15)
Environment: Node 24.18.0, npm 11.16.0, Astro 7.1.5, Linux/Nix.
`TMPDIR=/tmp ASTRO_TELEMETRY_DISABLED=1` used for the established environment;
no application workaround or dependency change. Logs: `/tmp/aia-p8-checkpoint/`.
| Command from www | Actual result |
|---|---|
| `npm run check` | 101 files, 0 errors/warnings/hints |
| `npm run test:markdown` | 20 pass, 0 fail |
| `npm run test:publication` | 33 pass, 0 fail |
| `npm run test:seo` | 35 pass, 0 fail |
| `npm run test:library` | **53 pass, 0 fail** |
| `npm run test:routes` | 10 pass, 0 fail |
| `node --test tools/phase8.test.mjs` | 5 pass, 0 fail |
| Regression total | **156 pass, 0 fail** |
| `npm run build` | Pass, 122 routes |
| `PUBLIC_ALLOW_INDEXING=true npm run build` | Pass, 122 routes |
| `npm run audit:links` | 0 broken internal links |
| `npm run audit:images` | 0 missing mapped images |
| `npm run audit:blog` | 0 content audit failures |
| Final `npm run build` (normal staging) | Pass, 122 routes, last completed build |
| `node --experimental-strip-types tools/audit-phase8.mjs /tmp/aia-p8-checkpoint/static.json` | 122 routes, 0 failures/review findings |
| Explicit offline consistency check (below) | Pass, no network/writes |
| `git diff --check` | Pass |
No unexpected validation failure or source correction was required in this pass.
Library coverage directly checks HSA section order/assets, eleven privacy headings,
collection list, Arabic names/bidi, Tour inventory/one route and semantic headings.
Content comparison confirms unchanged privacy wording, Tour metadata and original
EN homepage/artwork; API script, redirects and P9 register are byte-identical to HEAD.
| Invariant | Signed Phase 7 → final Phase 8 |
|---|---|
| HTML / unique canonicals | 122/122 → 122/122 |
| Indexing sitemap | 108 → 108 |
| Hreflang links / routes | 180/55 → 180/55 |
| Validated translation sets | 25 → 25 |
| Library / locale search records | 74; 55/12/7 → unchanged |
| Author archives / redirect definitions | 9/9 → 9/9 |
| Library visible/schema FAQ answers / articles | 182/30 → 182/30 |
| Both English page-6 routes | Five cards each |
| Tour / Arabic homepage | One Tour; Arabic home unpublished |
| Final staging | 122 noindex,nofollow; sitemap 0; hreflang 0 |
Raw all-site FAQ totals include non-Library pages and are not the Library 182/30
metric. Syndicated canonicals, noindex author archives, metadata-only search,
translation graph, pagination and original publication dates remain intact.
Final explicit source-matching evidence:
`route-reconciliation-2026-10-15-offline-18-21-22-820Z.json`.
Fingerprint: `8453ffad597e2f2414343b634997bf204cbdd59fc00c3d8d122babef8a632cb5`.
Schema 2, 133 dispositions, 70 historical requests, 122 local routes. Historical
production sitemap 102 is not the current indexing-enabled sitemap 108.
After the final staging build:
```sh
npm run audit:routes -- --check --evidence reports/route-reconciliation-2026-10-15-offline-18-21-22-820Z.json
```
Passed; no redundant report generated for documentation-only changes.
## Handoff and documentation disposition
`SESSION_HANDOFF.md` identifies Phase 8 as technically completed for checkpoint
purposes, signed Phase 7 as the previous checkpoint, and the future checkpoint as
the commit containing the update (no invented SHA). It preserves Phase 6C/7 history,
source qualifications, final metrics and all release gates. Next: Phase 9 decision
review/evidence gathering; no automatic integration implementation. Phase 10
retains final QA, rollback and cutover authorization.
Dated current-status pointers were added to Phase 8 acceptance, browser,
consolidated and accessibility reports; migration-summary gains current orientation
and this preparation record. Historical failures, original file/test counts and
badge-generation evidence were retained. Host-browser instructions now acknowledge
corrected headings and technical readiness while keeping human review pending.
No historical JSON/source evidence was overwritten.
## Exact approved paths
M = modified tracked; D = tracked deletion; A = currently untracked addition.
Each row is a literal repository-relative Git path. This table is machine-readable
by the verification procedure below. The two Tour paths deliberately count separately.
| Status | Path |
|---|---|
| M | `AUTONOMOUS-CODEX.md` |
| M | `flake.nix` |
| M | `www/README.md` |
| A | `www/public/assets/images/hsa-fsa-accepted-es.png` |
| M | `www/reports/SESSION_HANDOFF.md` |
| M | `www/reports/accessibility-audit.md` |
| M | `www/reports/migration-summary.md` |
| A | `www/reports/phase-8-badge-correction-evidence-2026-10-15.json` |
| A | `www/reports/phase-8-browser-evidence-2026-10-15.json` |
| A | `www/reports/phase-8-browser-verification-2026-10-15.md` |
| A | `www/reports/phase-8-checkpoint-manifest-2026-10-15.md` |
| A | `www/reports/phase-8-consolidated-evidence-2026-10-15.json` |
| A | `www/reports/phase-8-consolidated-followup-2026-10-15.md` |
| A | `www/reports/phase-8-consolidated-source-evidence-2026-10-15.json` |
| A | `www/reports/phase-8-followup-evidence-2026-10-15.json` |
| A | `www/reports/phase-8-host-browser-verification-2026-10-14.md` |
| A | `www/reports/phase-8-static-evidence-2026-10-14.json` |
| A | `www/reports/phase-8-visual-accessibility-acceptance-2026-10-14.md` |
| A | `www/reports/route-reconciliation-2026-10-14-offline-07-32-07-044Z.json` |
| A | `www/reports/route-reconciliation-2026-10-15-offline-05-28-09-425Z.json` |
| A | `www/reports/route-reconciliation-2026-10-15-offline-06-41-27-766Z.json` |
| A | `www/reports/route-reconciliation-2026-10-15-offline-17-31-09-013Z.json` |
| A | `www/reports/route-reconciliation-2026-10-15-offline-17-41-40-404Z.json` |
| A | `www/reports/route-reconciliation-2026-10-15-offline-18-21-22-820Z.json` |
| A | `www/reports/route-reconciliation-2026-10-15-offline.json` |
| M | `www/src/components/BlogCard.astro` |
| M | `www/src/components/BlogPostFooter.astro` |
| M | `www/src/components/ContactForm.astro` |
| M | `www/src/components/FAQAccordion.astro` |
| A | `www/src/components/ImageCarousel.astro` |
| M | `www/src/components/LanguageSwitcher.astro` |
| M | `www/src/components/LikeViewCounter.astro` |
| M | `www/src/components/MainNav.astro` |
| M | `www/src/components/MobileNav.astro` |
| M | `www/src/components/home/HomeDirector.astro` |
| M | `www/src/components/pages/ContactPage.astro` |
| M | `www/src/content/blog/en/aba-therapy-dtt-net-guide.md` |
| M | `www/src/content/pages/en/schedule-consultation.mdx` |
| D | `www/src/content/pages/en/tour.md` |
| A | `www/src/content/pages/en/tour.mdx` |
| M | `www/src/content/pages/es/index.md` |
| M | `www/src/content/pages/es/privacy-policy.mdx` |
| A | `www/src/data/tour-gallery.json` |
| M | `www/src/layouts/BlogPostLayout.astro` |
| M | `www/src/styles/blog.css` |
| M | `www/src/styles/components.css` |
| M | `www/src/styles/forms.css` |
| M | `www/src/styles/layout.css` |
| M | `www/src/styles/typography.css` |
| A | `www/src/utils/article-messages.ts` |
| A | `www/tools/audit-phase8.mjs` |
| M | `www/tools/library.test.mjs` |
| A | `www/tools/phase8-browser.mjs` |
| A | `www/tools/phase8-consolidated.mjs` |
| A | `www/tools/phase8-followup.mjs` |
| A | `www/tools/phase8-interactions.mjs` |
| A | `www/tools/phase8.test.mjs` |
| A | `www/tools/playwright-smoke.mjs` |
| M | `www/tools/seo.test.mjs` |
## Exact exclusions and local-only artifacts
Never inspect, stage or delete the five protected/excluded files:
- `merge-plan.md`
- `www/reports/route-reconciliation-2026-10-11-offline.json`
- `www/reports/route-reconciliation-2026-10-12-offline.json`
- `www/reports/route-reconciliation-2026-10-13-offline.json`
- `www/reports/route-reconciliation-2026-10-13-offline-06-16-06-857Z.json`
`.phase8-stage-paths.nul` is a sixth excluded working file created solely as the
user's temporary staging aid. It contains 59 unique NUL-separated entries, each
prefixed `:(top,literal)`, exactly matching the table. It excludes itself. The old
`.phase7-stage-paths.nul` is absent. No dist, caches, profiles, private environment
files, patient data or unrelated paths are approved. All five original exclusions
remain untouched and untracked. Index remains empty.
## User-controlled staging and signing
From the repository root, first verify branch/HEAD/status and an empty index:
```sh
git branch --show-current
git rev-parse HEAD
git status --short --untracked-files=all
git diff --cached --name-only
```
Expected branch `faithful-astro-migration`, HEAD
`8e64d322092b1fa6e0f648ddf26a665c80588198`. Stop on any unexplained change.
```sh
git add --pathspec-from-file=.phase8-stage-paths.nul --pathspec-file-nul
git diff --cached --check
git diff --cached --stat --no-renames
git diff --cached --name-status --no-renames
```
Verify exact membership and change types, not just a count:
```sh
python3 - <<'PYVERIFY'
from pathlib import Path
import re, subprocess
rows = re.findall(r'^\| ([AMD]) \| `([^`]+)` \|$', Path('www/reports/phase-8-checkpoint-manifest-2026-10-15.md').read_text(), re.M)
expected = {p: s for s, p in rows}
raw = Path('.phase8-stage-paths.nul').read_bytes().split(b'\0')
assert raw.pop() == b''
prefix = b':(top,literal)'
assert all(x.startswith(prefix) for x in raw)
aid = [x[len(prefix):].decode() for x in raw]
assert len(rows) == len(expected) == len(aid) == len(set(aid)) == 59
assert set(aid) == set(expected)
parts = subprocess.check_output(['git','diff','--cached','--name-status','--no-renames','-z']).decode().split('\0')
assert parts.pop() == ''
staged = dict(zip(parts[1::2], parts[0::2]))
assert staged == expected, {'missing': sorted(set(expected)-set(staged)), 'extra': sorted(set(staged)-set(expected)), 'wrong_status': [p for p in expected.keys() & staged.keys() if expected[p] != staged[p]]}
print('Exact 59-path staged manifest, change types and literal staging aid match.')
PYVERIFY
```
Only after reviewing the diff and successful membership validation, run in the
normal host terminal (Codex does not run these commands):
```sh
git commit -S -m "fix(a11y): reconcile responsive layouts and multilingual UI"
git log -1 --show-signature
git verify-commit HEAD
git rev-parse HEAD HEAD^
git show --format= --name-status --no-renames HEAD
git status --short --untracked-files=all
```
The new parent must be `8e64d322092b1fa6e0f648ddf26a665c80588198`.
Confirm 59 committed paths with renames disabled and no unexpected tracked changes.
Expected remaining untracked paths: five exclusions plus the temporary staging aid.
The user may remove only the aid after verifying the commit. Do not push automatically,
amend to insert the SHA, or alter signing configuration to bypass a signing failure.
## Remaining acceptance and next session
Pending: real screen reader, authorized full-page visual/source comparison,
non-Chromium acceptance, fluent Spanish/Arabic (including controls/credentials),
Arabic diagram clinical/language acceptance, HSA/FSA financial claims, general
clinical/organizational/program eligibility, both policies' privacy/legal approval,
and authenticated Spanish-policy comparison. Recorded browser checks are not sign-off.
P9-01 landing-page ownership; P9-02 portal security; P9-03 forms/API/privacy;
P9-04 likes/views isolation; P9-05 analytics/consent/advertising; P9-06 clinical and
organizational claims; P9-07 policies/provenance; P9-08 author SEO; P9-09 hosting,
TLS/routes/rollback; P9-10 production go/no-go: **all Pending decision**.
Phase 9 kickoff: verify the actual user-reported signed Phase 8 commit on
`faithful-astro-migration`; read policy, handoff, this manifest and decision register;
review P9-01–10 with supporting evidence, owner roles, dependencies and explicit
acceptance criteria. Gather decisions, do not infer approvals or implement unresolved
integrations. Preserve exclusions, human gates and Phase 10 cutover responsibilities.
No staging, signing, push, deployment, live configuration or integration activation.