Skip to content

chore(filetypedetection): offene kompatibilitaets-punkte finalisieren und rc6 absichern#92

Merged
tomtastisch merged 4 commits intomainfrom
codex/chore/netstandard2-compat-final-rc6
Feb 18, 2026
Merged

chore(filetypedetection): offene kompatibilitaets-punkte finalisieren und rc6 absichern#92
tomtastisch merged 4 commits intomainfrom
codex/chore/netstandard2-compat-final-rc6

Conversation

@tomtastisch
Copy link
Owner

@tomtastisch tomtastisch commented Feb 18, 2026

Ziel & Scope

  • Finale Schliessung der offenen Punkte fuer die netstandard2.0-Kompatibilitaet inkl. fail-closed Semantik fuer Office/OpenOffice/Archive.
  • Keine Aenderung an Public-API-Signaturen; nur interne Robustheits-, Test- und Dokumentationsverbesserungen.
  • RC6-Readiness inkl. auditierbarer Evidence und Versioning-SVT-Nachweise.

Umgesetzte Aufgaben (abhaken)

  • Office/OpenOffice-Aliasauflösung im Registry-SSOT konsolidiert (doc/docx/odt, xls/xlsx/ods, ppt/pptx/odp).
  • Legacy-OLE2-Refinement (LegacyOfficeBinaryRefiner) integriert und fail-closed abgesichert.
  • OpenXML/OpenDocument-Refinement erweitert (inkl. Konflikt-/Ambiguitaetsbehandlung -> Unknown).
  • Archivvalidierung und Extraktion auf echte, extrahierbare Archive (Zip) begrenzt.
  • Fehlklassifikation „Office-Container als Archiv“ im Extraktionspfad beseitigt.
  • Endungspruefung bleibt nachgelagerte Policy und greift nur bei explizitem Verify-Flag.
  • E2E-Matrix-Tests fuer falsche Endungen, korrupte Payloads und Office/OpenDocument-Varianten erweitert.
  • In-Code-Dokumentation in den geaenderten Kernpfaden gem. Policy 045 nachgezogen.
  • Evidence-/Reference-/History-/Changelog-Dokumente auf RC6-Stand aktualisiert.
  • dotnet format --verify-no-changes als blocker erfolgreich erfuellt.

Nachbesserungen aus Review (iterativ)

  • PR-Body auf Governance-Pflichtsektionen und Checklistenstruktur nachgezogen.
  • Lokale run.sh-Gates reproduzierbar mit CI-Context-Env ausgefuehrt.
  • Versioning-SVT lokal gegen RC6-NUPKG (EXPECTED_RELEASE_TAG=v5.2.0-rc.6) erneut verifiziert.
  • Provider-Kompilations- und Marker-Nachweise pro TFM als Artefakt abgelegt.

Security- und Merge-Gates

  • Merge erst bei gruener Required-Check-Matrix, ohne offene Review-Threads und ohne Blocker.
  • security/code-scanning/tools ist Merge-Gate und muss auf 0 offene Alerts stehen.
  • Fail-closed-Verhalten bleibt erhalten: bei Ambiguitaet/Korruption wird Unknown bzw. False geliefert.

Evidence (auditierbar)

  • Build/Test/Pack:
    • dotnet restore FileClassifier.sln -v minimal
    • dotnet restore --locked-mode FileClassifier.sln -v minimal
    • dotnet build FileClassifier.sln -c Release --no-restore -warnaserror -v minimal
    • dotnet test tests/FileTypeDetectionLib.Tests/FileTypeDetectionLib.Tests.csproj -c Release --no-build -v minimal
    • dotnet pack src/FileTypeDetection/FileTypeDetectionLib.vbproj -c Release --no-build -o artifacts/ci/netstandard2-compat/nuget -v minimal
  • TFM-Diagnose:
    • artifacts/ci/netstandard2-compat/build-netstandard2.0.log
    • artifacts/ci/netstandard2-compat/build-net8.0.log
    • artifacts/ci/netstandard2-compat/build-net10.0.log
  • Provider/Core-Proofs:
    • artifacts/ci/netstandard2-compat/provider-compile-proof-short.txt
    • artifacts/ci/netstandard2-compat/provider-marker-proof.txt
    • artifacts/ci/netstandard2-compat/core-forbidden-apis.txt
  • Governance/Versioning/Security:
    • python3 tools/check-doc-consistency.py
    • python3 tools/check-docs.py
    • EXPECTED_RELEASE_TAG=v5.2.0-rc.6 REQUIRE_RELEASE_TAG=1 bash tools/ci/bin/run.sh versioning-svt
    • bash tools/ci/bin/run.sh version-convergence
    • bash tools/ci/bin/run.sh security-nuget
  • Dokumentationsnachweis:
    • docs/audit/compat/003_NETSTANDARD2_COMPAT_EVIDENCE.MD

DoD (mindestens 2 pro Punkt)

Punkt DoD-A (auditierbar) DoD-B (auditierbar)
Fail-closed Office/Archive-Semantik 543 Tests gruen (dotnet test) Matrix-Coverage in tests/FileTypeDetectionLib.Tests/Unit/EndToEndFailClosedMatrixUnitTests.cs
Extraktion nur fuer echte Archive TryValidateArchive(sample.docx) == false (Tests) ArchiveExtractionUnitTests pruefen docx/disguised docx gegen Extraktion
Provider pro TFM korrekt provider-compile-proof-short.txt pro TFM provider-marker-proof.txt zeigt NetStandard2_0/Net8_0Plus
Doku-/Governance-Konformitaet check-doc-consistency.py -> OK check-docs.py -> OK
Versioning-SVT fuer RC6 artifacts/versioning_report.json status pass artifacts/nuget/Tomtastisch.FileClassifier.5.2.0-rc.6.nupkg vorhanden

Copilot AI review requested due to automatic review settings February 18, 2026 08:20
@github-actions github-actions bot added area:docs area:versioning impl:security area:tests feature New compatible feature or datatype versioning:minor New compatible functionality; requires MINOR bump impl:quality and removed impl:security area:tests labels Feb 18, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Diese PR finalisiert die netstandard2.0-Kompatibilitäts-/Policy-Punkte rund um Dateityp-Erkennung mit fail-closed Semantik für Office/OpenDocument/Archive und stabilisiert die RC6-Linie durch zusätzliche E2E-/Matrix-Tests und Doku-/Evidence-Updates.

Changes:

  • Office/OpenDocument-Erkennung gehärtet (OOXML-Marker inkl. xl/workbook.bin, OpenDocument-mimetype-Mapping, Konflikte => Unknown) und Legacy-OLE-Office via LegacyOfficeBinaryRefiner integriert.
  • Archiv-Semantik angepasst: Extraktion/TryValidateArchive akzeptieren nur noch tatsächlich extrahierbare Archive über FileKind.Zip (Office-Container nicht mehr als extrahierbares Archiv behandelt).
  • Alias-Auflösung für Office-/OpenOffice-Endungen in FileTypeRegistry konsolidiert und Testabdeckung deutlich erweitert; Doku/Changelog/History/Evidence aktualisiert.

Reviewed changes

Copilot reviewed 18 out of 18 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/FileTypeDetectionLib.Tests/Unit/OpenXmlRefinerUnitTests.cs Erweiterte Unit-Tests für OOXML/OpenDocument inkl. Konflikt-/Ambiguitätsfälle.
tests/FileTypeDetectionLib.Tests/Unit/LegacyOfficeBinaryRefinerUnitTests.cs Neue Unit-Tests für OLE2-Legacy-Office Marker-Refinement.
tests/FileTypeDetectionLib.Tests/Unit/FileTypeDetectorPrivateBranchUnitTests.cs Zusätzliche Reflection-Tests für Office-Variant-Aliases im Extension-Matching.
tests/FileTypeDetectionLib.Tests/Unit/ExtensionCheckUnitTests.cs Erweiterte Extension-Policy-Tests (verify flag, Office/OpenDocument/Legacy).
tests/FileTypeDetectionLib.Tests/Unit/EndToEndFailClosedMatrixUnitTests.cs Neue E2E-Matrix für fail-closed Verhalten über Detect/Verify/Archive APIs.
tests/FileTypeDetectionLib.Tests/Unit/DetectionDetailAndArchiveValidationUnitTests.cs Archiv-Validation angepasst (DOCX nicht mehr “valides Archiv”) + zusätzliche negative Fälle.
tests/FileTypeDetectionLib.Tests/Unit/ArchiveExtractionUnitTests.cs Extraktions-Guards ergänzt: Office-Container dürfen nicht extrahiert werden.
src/FileTypeDetection/Infrastructure/CoreInternals.vb OpenXmlRefiner erweitert (OpenDocument + Konfliktlogik) und neuer LegacyOfficeBinaryRefiner.
src/FileTypeDetection/FileTypeDetector.vb Archivvalidierung/-extraktion auf “nur echte Archive” umgestellt; Legacy-OLE Refinement in Core-Flow integriert.
src/FileTypeDetection/Detection/FileTypeRegistry.vb Office/OpenOffice-Aliaslisten für Docx/Xlsx/Pptx ergänzt.
docs/versioning/103_CHANGELOG_RELEASES.MD Release-Changelog (EN) aktualisiert.
docs/versioning/102_HISTORY_VERSIONS.MD History (EN) rc6 aktualisiert.
docs/versioning/003_CHANGELOG_RELEASES.MD Release-Changelog (DE) aktualisiert.
docs/versioning/002_HISTORY_VERSIONS.MD History (DE) rc6 aktualisiert.
docs/references/101_REFERENCES_CORE.MD ReasonCode-Referenz um OfficeBinaryRefined ergänzt (EN).
docs/references/001_REFERENCES_CORE.MD ReasonCode-Referenz um OfficeBinaryRefined ergänzt (DE).
docs/audit/compat/003_NETSTANDARD2_COMPAT_EVIDENCE.MD Evidence-Report aktualisiert (Scope/Proofs/rc6).
README.md Architektur-/Release-Notizen aktualisiert (Refiner + rc6).

@tomtastisch tomtastisch merged commit cab8d70 into main Feb 18, 2026
26 checks passed
@tomtastisch tomtastisch deleted the codex/chore/netstandard2-compat-final-rc6 branch February 18, 2026 08:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:docs area:versioning bug Something isn't working feature New compatible feature or datatype impl:quality versioning:minor New compatible functionality; requires MINOR bump

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments