---
title: "ADR-0015: Eine installierbare Extension"
manual: "HTTP Guard"
version: "0.1.4"
permalink: "https://docs.typo3.org/permalink/netresearch/nr-http-guard:adr-0015@0.1.4"
source: "Adr/ADR-0015-SingleExtension.rst"
rendered: "2026-10-18T14:31:43+00:00"
---

<a id="decision-single-extension"></a>

# ADR-0015: Eine installierbare Extension {#adr-0015}

-   *Status:* Angenommen
-   *Datum:* 2026-10-09
-   *Ablösung:* ADR-0002, Paket- und Veröffentlichungsvorschlag

## Anlass {#decision-single-extension-context}

Die Extension soll alle Runtimekomponenten und ihr vollständiges Handbuch
enthalten und sich in klassischen TYPO3-Projekten ohne Composer-Aufruf
installieren lassen. Ein zusätzlich erforderliches Library-Paket würde
diesen Installationsweg vom separaten Dependency-Management abhängig machen.
Die Trennung von Policy-/Transportcode und TYPO3-Integration bleibt für
isolierte Prüfung und Adapterentwicklung erforderlich.

## Entscheidung {#decision-single-extension-choice}

Es wird eine TYPO3-Extension `netresearch/nr-http-guard` mit dem
Schlüssel `nr_http_guard` geliefert. Der Sicherheitskern liegt
unter `Classes/HttpGuard/`, seine Runtime-Daten unter
`Resources/Private/HttpGuard/data/`. Die öffentlichen PHP-Namespaces
und APIs bleiben erhalten. TYPO3 registriert beide Produktionsnamespaces
aus den mitgelieferten PSR-4-Metadaten.

Die Extension enthält keine zweite Vendor-Kopie. Klassische Projekte nutzen
die Dependencies des offiziellen Core-Archivs; Composer-Projekte ihre
Projekt-Locks. Die Produktionsconstraints verwenden semantische Bereiche
mit ausdrücklichen Untergrenzen und Hauptversionen. Laufzeitprüfungen
kontrollieren die echte Elternklasse, SDK-Fähigkeiten und Middleware-Struktur.
Eine Factory über das öffentliche cURL-Interface begrenzt jede Lease auf
höchstens einen Aufruf der delegierten Factory, unabhängig von privaten
SDK-Wiederholungszählern.
Feste Core-/SDK-Fixtures bleiben reproduzierbare Teststände. Die aktuell
geprüften offiziellen Core-Archive liefern den Guzzle-8-Graph.

Das vollständige Handbuch, die Anforderungsübersicht und angenommenen
Entscheidungen liegen unter `Documentation/`; gepflegte Tests und
Build-Werkzeuge unter `Tests/` und `Build/`. Die nummerierten
historischen ADRs stehen weiterhin unter [Architekturentscheidungen (ADRs)](https://docs.typo3.org/permalink/netresearch/nr-http-guard:adr-index@0.1.4). Originale
Markdown-Spezifikationen, Rohprotokolle und das optionale fremde Vault-Overlay
bleiben in unveränderter Git-Historie und einem geprüften externen Archiv
erhalten. Sie bilden kein weiteres installierbares Paket.
Original-IDs und heutige Zuordnung stehen
unter [Anforderungen und Sicherheitsinvarianten](https://docs.typo3.org/permalink/netresearch/nr-http-guard:development-requirements@0.1.4).

Die umgesetzte öffentliche Core-RequestFactory-Grenze, das kontrollierte
DNS-Wire-Backend und die einmalige SDK-Factory werden in [ADR-0016: Die öffentliche RequestFactory als URI-Grenze](https://docs.typo3.org/permalink/netresearch/nr-http-guard:adr-0016@0.1.4),
[ADR-0017: Kontrollierte DNS-Abfragen für den Defaultresolver](https://docs.typo3.org/permalink/netresearch/nr-http-guard:adr-0017@0.1.4) und [ADR-0018: Eine native cURL-Handle-Erzeugung je Transferlease](https://docs.typo3.org/permalink/netresearch/nr-http-guard:adr-0018@0.1.4) begründet.

## Betrachtete Alternativen {#adr-0015-alternatives}

Die in [ADR-0002: Gemeinsame Bibliothek statt Vault-Abhängigkeit aller Extensions](https://docs.typo3.org/permalink/netresearch/nr-http-guard:adr-0002@0.1.4) vorgeschlagenen separaten Bibliotheks- und
Adapterpakete benötigen ein zusätzliches Dependency-Management für
klassische TYPO3-Projekte. Die einzelne Extension erfüllt den gewünschten
TER-Installationsweg und erhält die interne Trennung zwischen Sicherheitskern
und Adapter. Eine weitere Vendor-Kopie würde Core-Dependencies duplizieren
und ihre Pflege uneindeutig machen; die Extension nutzt den installierten
Core-Graph.

## Folgen {#decision-single-extension-consequences}

Die Runtime-Ladepfade und Testkonfigurationen ändern sich, die Policyregeln
und APIs bleiben unverändert. Die zusätzliche klassische Dependency-Zeile
erweitert den reproduzierbaren Prüfumfang. Kompatible Patch- und Minor-Updates
innerhalb der semantischen Bereiche benötigen keine neue Extension-Version.
Echte API-Inkompatibilitäten und nicht unterstützte Hauptversionen werden
abgelehnt. Feste und frei aufgelöste native CI-Zellen prüfen Core-, Wire-
und mutationsrelevantes Verhalten. Jeder Lauf bleibt seinem Quellstand und
Dependency-Lock zugeordnet.

Das Paket gilt als GPL-2.0-or-later-Extension mit erhaltenen MIT-Hinweisen
des eingebetteten Kerns. Der interne frameworkunabhängige Aufbau erlaubt
separate Kernprüfungen, ist jedoch kein Versprechen eines zweiten
veröffentlichten Composerprodukts. Alpha-Version **0.1.1 ist auf TER und
Packagist veröffentlicht**, mit einem importierbaren Extension-ZIP. Dies
belegt weder einen Betreiberpilot noch die Bereitstellung des historischen
nr-vault-Referenzpatches. Der Nutzer hat die Alpha-Arbeit und Merges nach
wiederholter unabhängiger Prüfung und grünen einschlägigen Checks ohne
zusätzliche menschliche Freigabe autorisiert.
