TYPO3 upgrade closure
One job: decide whether Contract A is actually proven.
Preconditions
- Graph and identity validate; Baseline A verifies byte-for-byte.
- Migration and applicable specialist nodes are passed/skipped with evidence.
- Stateful migrations reached fixed points; source content fingerprint remains immutable.
Workflow: proof graph
Read ../typo3-upgrade-run/references/closure-currentness.md. After the last migration/build,
reconcile the target content epoch first; then use t3u closure-start and bind every check to it.
- Reconcile every expected DB/file/schema/generated-asset change in the content-transition ledger;
seal the target editorial epoch. Unledgered content drift is
INVALID.
- Capture target with the exact sealed renderer, origins, URLs, seed, viewports, states, workers, and
stabilization inputs.
- Compare HTTP/metadata for all URLs, normalized DOM for all HTML, and pixels for the sealed tiered
sample. Missing evidence is not zero.
- Run component sentinels before/after: cookie consent first/reject/accept/settings, sliders settled
and operated, navigation/focus, forms/Mailpit, search order/empty/pagination, media, login/reset/404,
language and project-critical flows.
- Verify backend login, expected module inventory, editor roles, cache/task/data write round-trip,
runtime logs, scheduler/search as applicable, Composer audit, schema, and migration idempotence.
Use
typo3-playwright: non-admin save/reopen, RTE page/record/file link dialogs, actual plugin
previews, media/video and category fields. Test mobile filters a second time after AJAX results
replacement and UTF-8 search/suggest when present. Verify the web PHP runtime, not only CLI.
- Redirects is mandatory: package/module present, intended editor group can read/create/edit only in
authorized scope, unrelated actions remain denied, and frontend redirect response is correct.
- Run version-pinned Lighthouse repeated on fixed URLs and axe over representative visible states.
Report medians/ranges and all findings. Automated green is not WCAG conformance.
Use
--mode verify before closure, not the optional Contract B optimization mode.
- Re-run the complete final measurement unchanged and require the same verdict.
Classification and routes
- HTTP+DOM+pixels → routing/template/content recovery.
- DOM+pixels → markup/template recovery.
- pixels only → classify CSS, assets, fonts, images, content, session/consent, or harness.
- component failure → interaction recovery; search order is output, not incidental index state.
- malformed/missing/hash/input mismatch → harness recovery and
INVALID, not site findings.
- policy/identity/credential/approval failure → blocked security path.
There is no “minor acceptable” regression. Repair it or obtain acceptance for a specifically shown
declared change with before/after evidence. Do not refresh Baseline A or relax measurement.
Closure certificate
Close only with zero unapproved regressions and passing t3u closure-check, graph-validate and
validate-run. Missing/failed/skipped checks cannot be waived by a narrative summary. Record:
project/remote/branch/HEAD, core/PHP, dataset date, source/target hashes, graph hash, backup/restore,
commands and exit codes, coverage, declared changes, residual risks, and exact next local step. State
that no staging/live action occurred. Contract B remains locked until countersigned.
Use closure-verify before the deadline to record complete proof awaiting actual human acceptance.
This receipt can be accepted later only while its source/data/renderer inputs and artifacts remain
current. Never set contract fields manually. node-close --node contract-a-gate validates proof and
human acceptance before updating them. Changed source/data make earlier closure stale; evidence-only
commits do not invalidate their own reports. Preserve
history and obtain current evidence. A missing source baseline cannot be recreated after upgrade.
Boundaries
Use typo3-wcag22-aa-agentic for a separate conformance programme and typo3-security for approved
hardening. Their visible changes belong to Contract B after this closure.
1---2name: typo3-upgrade-closure3description: Prove and close Contract A after a whole-site TYPO3 14.3 upgrade. Use when the target is stable for target-content-epoch reconciliation, exhaustive HTTP/DOM comparison, tiered pixel proof, consent/slider/search/form sentinels, backend login/module/write checks, Redirects rights, runtime/Composer/schema checks, Lighthouse/axe evidence, regression classification, idempotence, or deciding whether the final upgrade may close when cookie dialogs/carousels were not operated. Produces the certificate and local handover. Never performs the main migration, rebaselines, accepts unexplained differences, or deploys.4---56# TYPO3 upgrade closure78One job: decide whether Contract A is actually proven.910## Preconditions1112- Graph and identity validate; Baseline A verifies byte-for-byte.13- Migration and applicable specialist nodes are passed/skipped with evidence.14- Stateful migrations reached fixed points; source content fingerprint remains immutable.1516## Workflow: proof graph1718Read `../typo3-upgrade-run/references/closure-currentness.md`. After the last migration/build,19reconcile the target content epoch first; then use `t3u closure-start` and bind every check to it.20211. Reconcile every expected DB/file/schema/generated-asset change in the content-transition ledger;22 seal the target editorial epoch. Unledgered content drift is `INVALID`.232. Capture target with the exact sealed renderer, origins, URLs, seed, viewports, states, workers, and24 stabilization inputs.253. Compare HTTP/metadata for all URLs, normalized DOM for all HTML, and pixels for the sealed tiered26 sample. Missing evidence is not zero.274. Run component sentinels before/after: cookie consent first/reject/accept/settings, sliders settled28 and operated, navigation/focus, forms/Mailpit, search order/empty/pagination, media, login/reset/404,29 language and project-critical flows.305. Verify backend login, expected module inventory, editor roles, cache/task/data write round-trip,31 runtime logs, scheduler/search as applicable, Composer audit, schema, and migration idempotence.32 Use `typo3-playwright`: non-admin save/reopen, RTE page/record/file link dialogs, actual plugin33 previews, media/video and category fields. Test mobile filters a second time after AJAX results34 replacement and UTF-8 search/suggest when present. Verify the web PHP runtime, not only CLI.356. Redirects is mandatory: package/module present, intended editor group can read/create/edit only in36 authorized scope, unrelated actions remain denied, and frontend redirect response is correct.377. Run version-pinned Lighthouse repeated on fixed URLs and axe over representative visible states.38 Report medians/ranges and all findings. Automated green is not WCAG conformance.39 Use `--mode verify` before closure, not the optional Contract B optimization mode.408. Re-run the complete final measurement unchanged and require the same verdict.4142## Classification and routes4344- HTTP+DOM+pixels → routing/template/content recovery.45- DOM+pixels → markup/template recovery.46- pixels only → classify CSS, assets, fonts, images, content, session/consent, or harness.47- component failure → interaction recovery; search order is output, not incidental index state.48- malformed/missing/hash/input mismatch → harness recovery and `INVALID`, not site findings.49- policy/identity/credential/approval failure → blocked security path.5051There is no “minor acceptable” regression. Repair it or obtain acceptance for a specifically shown52declared change with before/after evidence. Do not refresh Baseline A or relax measurement.5354## Closure certificate5556Close only with zero unapproved regressions and passing `t3u closure-check`, `graph-validate` and57`validate-run`. Missing/failed/skipped checks cannot be waived by a narrative summary. Record:58project/remote/branch/HEAD, core/PHP, dataset date, source/target hashes, graph hash, backup/restore,59commands and exit codes, coverage, declared changes, residual risks, and exact next local step. State60that no staging/live action occurred. Contract B remains locked until countersigned.61Use `closure-verify` before the deadline to record complete proof awaiting actual human acceptance.62This receipt can be accepted later only while its source/data/renderer inputs and artifacts remain63current. Never set contract fields manually. `node-close --node contract-a-gate` validates proof and64human acceptance before updating them. Changed source/data make earlier closure stale; evidence-only65commits do not invalidate their own reports. Preserve66history and obtain current evidence. A missing source baseline cannot be recreated after upgrade.6768## Boundaries6970Use `typo3-wcag22-aa-agentic` for a separate conformance programme and `typo3-security` for approved71hardening. Their visible changes belong to Contract B after this closure.