--- phase: quick-260921-bi2 verified: 2026-09-21T09:47:00Z status: passed score: 9/9 must-haves verified covered_files: [".planning/quick/260921-bi2-lint-rueckstand-abbauen-mechanische-fixe/260921-bi2-PLAN.md",".planning/quick/260921-bi2-lint-rueckstand-abbauen-mechanische-fixe/260921-bi2-SUMMARY.md","apps/api/scripts/rls-scratch-check.mjs","apps/api/src/auth/auth.service.ts","apps/api/src/auth/decorators/current-user.decorator.ts","apps/api/src/auth/interceptors/force-password-change.interceptor.ts","apps/api/src/auth/strategies/jwt.strategy.ts","apps/api/src/calendar/calendar.service.ts","apps/api/src/calendar/dto/create-calendar-source.dto.ts","apps/api/src/calendar/providers/caldav.provider.ts","apps/api/src/calendar/providers/exchange.provider.ts","apps/api/src/calendar/providers/ics.provider.ts","apps/api/src/cert-manager/cert-manager.service.spec.ts","apps/api/src/cert-manager/cert-manager.service.ts","apps/api/src/crypto/crypto.service.ts","apps/api/src/desktop/desktop.service.spec.ts","apps/api/src/desktop/desktop.service.ts","apps/api/src/dkv/dkv-export.service.ts","apps/api/src/dkv/dkv-parser.service.ts","apps/api/src/dkv/dkv-parser.validate.ts","apps/api/src/dkv/dkv.controller.ts","apps/api/src/dkv/dkv.service.spec.ts","apps/api/src/dkv/dkv.service.ts","apps/api/src/favorites/icon-discovery.service.ts","apps/api/src/groups/groups.service.spec.ts","apps/api/src/groups/groups.service.ts","apps/api/src/inbox/imap.provider.spec.ts","apps/api/src/ldap/ldap-config.service.spec.ts","apps/api/src/ldap/ldap.service.spec.ts","apps/api/src/ldap/ldap.service.ts","apps/api/src/prisma/prisma-tenant.extension.spec.ts","apps/api/src/tenders/adapters/cosinex.adapter.spec.ts","apps/api/src/tenders/adapters/doe-opendata.adapter.spec.ts","apps/api/src/tenders/adapters/email-alert.adapter.spec.ts","apps/api/src/tenders/adapters/email-alert.adapter.ts","apps/api/src/tenders/adapters/netserver.adapter.spec.ts","apps/api/src/tenders/adapters/rss.adapter.spec.ts","apps/api/src/tenders/adapters/rss.adapter.ts","apps/api/src/tenders/tender-digest.scheduler.spec.ts","apps/api/src/tenders/tender-digest.scheduler.ts","apps/api/src/tenders/tender-fingerprint.ts","apps/api/src/tenders/tender-ingestion.service.spec.ts","apps/api/src/tenders/tender-matching.service.ts","apps/api/src/tenders/tender-normalizer.service.spec.ts","apps/api/src/tenders/tender-normalizer.service.ts","apps/api/src/tenders/tender-rss-feed.service.spec.ts","apps/api/src/tenders/tender-scheduler.service.spec.ts","apps/api/src/user/user.controller.ts","apps/desktop/src/setup.html","apps/web/src/app/(auth)/login/page.tsx","apps/web/src/app/(auth)/reset-password/[token]/page.tsx","apps/web/src/app/(auth)/reset-password/page.tsx","apps/web/src/app/(portal)/admin/groups/components/DeleteGroupDialog.tsx","apps/web/src/app/(portal)/admin/groups/components/GroupFormModal.tsx","apps/web/src/app/(portal)/admin/groups/page.tsx","apps/web/src/app/(portal)/admin/layout.tsx","apps/web/src/app/(portal)/admin/ldap/page.tsx","apps/web/src/app/(portal)/admin/modules/page.tsx","apps/web/src/app/(portal)/admin/tenants/page.tsx","apps/web/src/app/(portal)/admin/users/page.tsx","apps/web/src/app/(portal)/change-password/page.tsx","apps/web/src/app/(portal)/marketplace/[slug]/page.tsx","apps/web/src/app/(portal)/marketplace/components/ActivationDialog.tsx","apps/web/src/app/(portal)/marketplace/components/CategoryFilter.tsx","apps/web/src/app/(portal)/marketplace/components/MarketplaceCard.tsx","apps/web/src/app/(portal)/marketplace/components/MarketplaceSearch.tsx","apps/web/src/app/(portal)/marketplace/components/StatusFilter.tsx","apps/web/src/app/(portal)/marketplace/components/TenantContextSelector.tsx","apps/web/src/app/(portal)/marketplace/components/Toast.tsx","apps/web/src/app/(portal)/marketplace/page.tsx","apps/web/src/app/(portal)/modules/[category]/[moduleSlug]/module-shell.tsx","apps/web/src/app/(portal)/modules/[category]/components/ModuleCard.tsx","apps/web/src/app/(portal)/modules/[category]/page.tsx","apps/web/src/app/(portal)/modules/cert-manager/cert-manager.test.tsx","apps/web/src/app/(portal)/modules/cert-manager/components/ConvertTab.tsx","apps/web/src/app/(portal)/modules/cert-manager/components/DropZone.tsx","apps/web/src/app/(portal)/modules/cert-manager/components/InspectTab.tsx","apps/web/src/app/(portal)/modules/cert-manager/components/PasswordField.tsx","apps/web/src/app/(portal)/modules/cert-manager/components/SplitTab.tsx","apps/web/src/app/(portal)/modules/dkv-fleet/settings/components/VehicleTable.tsx","apps/web/src/app/(portal)/modules/tender-radar/settings/components/EmailAlertConfigForm.tsx","apps/web/src/app/(portal)/page.tsx","apps/web/src/app/(portal)/settings/layout.tsx","apps/web/src/app/icon.svg","apps/web/src/components/admin/admin-sidebar.tsx","apps/web/src/components/dashboard/edit-mode-toggle.tsx","apps/web/src/components/dashboard/widget-catalog-modal.tsx","apps/web/src/components/dashboard/widget-registry.tsx","apps/web/src/components/dashboard/widgets/calculator-widget.tsx","apps/web/src/components/dashboard/widgets/clock-widget.tsx","apps/web/src/components/dashboard/widgets/favorites-widget.tsx","apps/web/src/components/dashboard/widgets/note-widget.tsx","apps/web/src/components/dashboard/widgets/search-widget.tsx","apps/web/src/components/dashboard/widgets/widget-wrapper.tsx","apps/web/src/components/layout/header.tsx","apps/web/src/components/layout/sidebar-footer.tsx","apps/web/src/components/layout/sidebar.tsx","apps/web/src/components/locale-switcher.tsx","apps/web/src/components/modules/module-access-denied.tsx","apps/web/src/components/settings/account-settings-form.tsx","apps/web/src/components/settings/calendar-settings-panel.tsx","apps/web/src/components/settings/calendar-source-form.tsx","apps/web/src/components/settings/search-provider-form.tsx","apps/web/src/components/settings/settings-sidebar.tsx","apps/web/src/components/settings/widget-settings-panel.tsx","apps/web/src/components/theme-toggle.tsx","apps/web/src/lib/auth-actions.ts","apps/web/src/messages/de.json","apps/web/src/messages/en.json","apps/web/src/middleware.ts","biome.json","docs/anleitung-entwicklung.md"] covered_digest: "v1:sha256:d7552864f2e6d3eacbdd144ddac34117636e8ccb23da588ae1eef353463901b8" behavior_unverified: 1 overrides_applied: 0 behavior_unverified_items: - truth: "In den drei Formularseiten der Verwaltung (Mandanten, Benutzer, LDAP) sendet der echte Absendeknopf weiterhin ab, und ein Klick auf Abbrechen/Schliessen loest KEIN Absenden mehr aus (useButtonType-Korrektur, 52 Fundstellen)." test: "pnpm dev starten (nicht gegen den Testserver), die drei Seiten Mandanten/Benutzer/LDAP oeffnen, je Formular den Absendeknopf klicken (muss abschicken) und Abbrechen/Schliessen klicken (darf NICHT abschicken)." expected: "Absenden funktioniert weiterhin unveraendert; jede Nebenschaltflaeche (Abbrechen, Schliessen, Zeilenaktionen) sendet das umgebende Formular nicht mehr ab." why_human: "Statische Zaehlung (grep auf type=\"submit\"/