Files
breadcrumb-the-shire/agent-system/runs/AUTH-LOGIN-A11Y-REGRESSION-001/plan.json

129 lines
4.9 KiB
JSON
Raw Normal View History

2026-03-07 21:21:47 +01:00
{
"task_id": "AUTH-LOGIN-A11Y-REGRESSION-001",
"summary": "Isolierter Fix fuer den QG-001 Blocker im Auth-Login-Flow: fehlender Tenant-Label-Marker login-tenant-select-label in der choose_tenant-Stage wiederherstellen, Accessibility-Semantik intakt halten und Full PHPUnit wieder gruen bekommen.",
"assumptions": [
"Der Fehler ist eine Regression im Markup von pages/auth/login(login).phtml und nicht in Service- oder Auth-Logik.",
"Der bestehende Contract-Test AuthLoginAccessibilityContractTest bleibt bestehen und wird nicht abgeschwaecht.",
"Es sind keine DB- oder Backend-Flow-Aenderungen erforderlich."
],
"scope": {
"in": [
"Tenant-Auswahl-Markup in pages/auth/login(login).phtml (choose_tenant stage)",
"Bei Bedarf minimale, additive CSS-Korrektur in web/css/pages/app-login.css fuer legend/label Darstellung",
"Verifikation ueber bestehenden Architecture-Contract-Test und Full PHPUnit"
],
"out": [
"Theme-Flow oder Tenant-Switch Logik ausserhalb Auth-Login",
"Aenderungen an Auth-Service-Businesslogik in lib/Service/Auth",
"Neues UI-Redesign oder Umbau des gesamten Auth-Login-Bereichs"
]
},
"guardrails": {
"required_guard_ids": [
"GR-UI-009",
"GR-UI-013",
"GR-UI-010",
"GR-TEST-001"
],
"required_quality_gate_ids": [
"QG-001",
"QG-002",
"QG-003",
"QG-006"
]
},
"success_criteria": [
{
"id": "SC-001",
"criterion": "Die choose_tenant-Stage enthaelt wieder eine klare textuelle Gruppenbezeichnung mit dem Marker login-tenant-select-label im Fieldset-Kontext."
},
{
"id": "SC-002",
"criterion": "AuthLoginAccessibilityContractTest ist gruen ohne Abschwaechung der Assertions."
},
{
"id": "SC-003",
"criterion": "QG-001 (Full PHPUnit) laeuft wieder erfolgreich ohne diesen Fail."
},
{
"id": "SC-004",
"criterion": "Keine Regression bei PHPStan/CoreStarterkitContract/CS-Check."
}
],
"implementation_steps": [
{
"id": "S1",
"title": "Regression reproduzieren und Ursache fixieren",
"description": "Aktuellen Failure in AuthLoginAccessibilityContractTest bestaetigen und die fehlende Marker-Stelle im choose_tenant Fieldset lokalisieren.",
"guard_refs": [
"GR-TEST-001",
"GR-UI-009"
]
},
{
"id": "S2",
"title": "Tenant-Label semantisch wiederherstellen",
"description": "In pages/auth/login(login).phtml innerhalb von fieldset.login-tenant-fieldset eine textuelle Gruppenbezeichnung mit Klasse login-tenant-select-label einfuegen (bevorzugt als legend), i18n-konform mit t().",
"guard_refs": [
"GR-UI-013",
"GR-UI-010"
]
},
{
"id": "S3",
"title": "Darstellung stabilisieren",
"description": "Nur falls notwendig minimale additive CSS-Anpassung fuer legend/label vornehmen, ohne bestehende Tastatur- oder Screenreader-Semantik zu verschlechtern.",
"guard_refs": [
"GR-UI-009",
"GR-UI-013"
]
},
{
"id": "S4",
"title": "Gates ausfuehren und evidenzbasiert abschliessen",
"description": "QG-001, QG-002, QG-003 und QG-006 ausfuehren und in execution-report dokumentieren.",
"guard_refs": [
"GR-TEST-001",
"GR-UI-009"
]
}
],
"tests": [
"docker compose exec php vendor/bin/phpunit tests/Architecture/AuthLoginAccessibilityContractTest.php --no-progress",
"docker compose exec php vendor/bin/phpunit",
"docker compose exec php vendor/bin/phpstan analyse -c phpstan.neon --no-progress",
"docker compose exec php vendor/bin/phpunit tests/Architecture/CoreStarterkitContractTest.php",
"docker compose exec php composer cs:check"
],
"acceptance_checks": [
"SC-001: login-tenant-select-label ist in pages/auth/login(login).phtml im choose_tenant-Fieldset vorhanden und textuell befuellt.",
"SC-002: AuthLoginAccessibilityContractTest meldet PASS.",
"SC-003: Full PHPUnit (QG-001) meldet PASS ohne den bisherigen Tenant-Label-Fehler.",
"SC-004: QG-002, QG-003 und QG-006 melden PASS."
],
"ux_notes": {
"affected_patterns": [
"Auth tenant selection fieldset in login choose_tenant stage"
],
"ui_states_required": [
"error",
"success"
],
"a11y_touchpoints": [
"Fieldset/legend semantics for tenant radio group",
"Text label visibility for tenant selection group",
"Keyboard-operable radio selection unchanged"
]
},
"risks": [
{
"risk": "Visuelle Nebenwirkung durch legend-Einfuehrung im bestehenden Login-Layout.",
"mitigation": "Nur minimale additive CSS-Anpassung, keine strukturellen Layout-Umbauten."
},
{
"risk": "Scheinbarer Fix durch Test-Anpassung statt Markup-Korrektur.",
"mitigation": "Contract-Test nicht abschwaechen; Marker semantisch im Template wiederherstellen."
}
]
}