Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
9892f44
fix(archive): sharpcompress-1.0 api-kompatibilitaet absichern
github-actions[bot] Feb 19, 2026
c282b0b
fix(test): using-reihenfolge fuer preflight-format-gate
github-actions[bot] Feb 19, 2026
15cef29
chore(ci): trigger preflight nach pr-governance-update
github-actions[bot] Feb 19, 2026
c834f7c
chore(test): trigger frischen pr-lauf nach governance-update
github-actions[bot] Feb 19, 2026
8129dcc
chore(ci): qodana-blocker minimal bereinigen
github-actions[bot] Feb 19, 2026
23fbcf1
fix(archive): targetinvocation nur fuer erwartete inner-fehler abfangen
github-actions[bot] Feb 19, 2026
edf624f
refactor(core): finalize hashing internals and detection model alignment
github-actions[bot] Feb 21, 2026
1396e6d
test(governance): add policy-045 compliance and public API allowlist …
github-actions[bot] Feb 21, 2026
d6164e7
release(versioning): prepare 6.0.0 convergence and policy checks
github-actions[bot] Feb 21, 2026
cf95b39
chore(style): normalize formatter drift for preflight gate
github-actions[bot] Feb 21, 2026
9efc309
security(policy): align supported-major claim with 6.x baseline
github-actions[bot] Feb 21, 2026
156d833
ci(preflight): retrigger pull_request checks with updated governance …
github-actions[bot] Feb 21, 2026
3e25950
Fix typo in DOCX file type summary
tomtastisch Feb 21, 2026
1c80645
docs(governance): add closure evidence for issues 105-107
github-actions[bot] Feb 21, 2026
9b54c85
refactor(detection): externalize registry ssot config and cache order…
github-actions[bot] Feb 21, 2026
0a4fbb5
fix(qodana): remove dead members and high-severity analyzer findings
github-actions[bot] Feb 21, 2026
9ccf814
fix(review): close remaining policy and naming threads
github-actions[bot] Feb 21, 2026
d184107
refactor(core): finalize ssot utils migration and hardening
github-actions[bot] Feb 21, 2026
a3dcb78
fix(docs): remove branch-coupled links and invalid compare base
github-actions[bot] Feb 21, 2026
034225b
refactor(utils): cluster guards and normalize guard naming
github-actions[bot] Feb 21, 2026
3814982
docs(hashing): complete policy-level member documentation
github-actions[bot] Feb 21, 2026
077f14f
docs(hashing-core): complete internal member documentation
github-actions[bot] Feb 21, 2026
1209ad8
fix(review): address remaining determinism and CI exposure threads
github-actions[bot] Feb 21, 2026
479dd6d
fix(review): finalize docs and deterministic registry alias mapping
github-actions[bot] Feb 21, 2026
1b6f8db
fix(policy): enforce method-header spacing and guard exception ssot
github-actions[bot] Feb 21, 2026
86225ec
fix(review): align guard semantics and registry naming refinements
github-actions[bot] Feb 21, 2026
808b7a2
refactor(guard): deduplicate destination deletion flow
github-actions[bot] Feb 21, 2026
f70ac32
docs(agents): enforce per-comment evidence and resolve workflow
github-actions[bot] Feb 21, 2026
ff730f0
refactor(mime): normalize ext initialization and remove redundant guard
github-actions[bot] Feb 21, 2026
74fa1db
docs(versioning): clarify GH token fallback precedence
github-actions[bot] Feb 21, 2026
9820930
docs(security-claims): annotate major-version claim coupling
github-actions[bot] Feb 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,21 @@
- Code-/Test-/Dokuaenderung im PR mit nachvollziehbarer Evidence.
- begruendete Widerlegung als `ASSUMPTION` + Verifikationsnachweis, warum keine Aenderung noetig ist.
- Unzulaessig: Threads ohne Bearbeitung nur aus Prozessgruenden zu resolven.
- Verbindlicher Einzelkommentar-Workflow (ab sofort):
- Jeder Review-Kommentar/Thread wird einzeln und iterativ bearbeitet (keine Sammelabarbeitung mehr).
- Fuer jeden bearbeiteten Kommentar gilt: genau ein dedizierter Commit fuer die konkrete Umsetzung.
- Vor `resolved` ist im Thread immer ein Nachweis-Kommentar zu hinterlassen:
- entweder Commit-/Push-Link als Evidence der Umsetzung,
- oder nachvollziehbare Gegenargumentation als `ASSUMPTION` inkl. Verifikationsnachweis.
- Erst danach darf genau dieser Thread auf `resolved` gesetzt werden.
- Bei CI-Nacharbeiten gilt dieselbe Regel:
- pro verursachender Reparatur genau ein Commit,
- eigener Review-Nachweis-Kommentar mit Ursache und Evidence,
- danach erst `resolved`.
- Push-Green-Regel:
- lokale Einzelabarbeitung aller offenen Kommentare gemaess obiger Regeln,
- danach Push und Pflicht-Checks auf gruen,
- Merge erst bei gruenen Checks und ohne offene Threads.
- Merge nur wenn:
- required checks gruener Status,
- keine offenen Review-Threads,
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
</PropertyGroup>
<PropertyGroup>
<RepoVersion>5.2.1</RepoVersion>
<RepoVersion>6.0.1</RepoVersion>
Comment thread
tomtastisch marked this conversation as resolved.
Comment thread
tomtastisch marked this conversation as resolved.
</PropertyGroup>
Comment thread
tomtastisch marked this conversation as resolved.
</Project>
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ Security-Fixes werden nur fuer den aktuell unterstuetzten Major bereitgestellt.

| Version | Security-Support |
| ------- | ---------------- |
| 5.x | Ja |
| < 5.0 | Nein |
| 6.x | Ja |
Comment thread
tomtastisch marked this conversation as resolved.
| < 6.0 | Nein |

## 3. Meldung einer Sicherheitsluecke
Bitte melde Sicherheitsluecken **nicht** ueber oeffentliche Issues.
Expand Down
2 changes: 1 addition & 1 deletion docs/audit/003_SECURITY_ASSERTION_TRACEABILITY.MD
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Abbildung von Aussagen in `SECURITY.md` auf Nachweisquellen und Verifikationskom

| Claim ID | SECURITY-Anker | Claim-Zusammenfassung | Nachweisquelle | Verifikationskommando | Pass-Kriterium | Blocker |
|---|---|---|---|---|---|---|
| SEC-CLAIM-001 | 2. Unterstuetzte Versionen | Security-Support ist an Major 5 gebunden | `src/FileTypeDetection/FileTypeDetectionLib.vbproj` | `sed -n 's:.*<Version>\([^<]*\)</Version>.*:\1:p' src/FileTypeDetection/FileTypeDetectionLib.vbproj` | Version-Major ist `5` | yes |
| SEC-CLAIM-001 | 2. Unterstuetzte Versionen | Security-Support ist an Major 6 gebunden | `src/FileTypeDetection/FileTypeDetectionLib.vbproj` | `sed -n 's:.*<Version>\([^<]*\)</Version>.*:\1:p' src/FileTypeDetection/FileTypeDetectionLib.vbproj` | Version-Major ist `6` | yes |
| SEC-CLAIM-002 | 3. Meldung | Private Vulnerability Reporting ist aktiv | GitHub API `private-vulnerability-reporting` | `gh api "repos/$REPO/private-vulnerability-reporting"` | `.enabled == true` | yes |
| SEC-CLAIM-003 | 9. Nachweisbarkeit | Dependabot Security Updates sind aktiv | GitHub API (`security_and_analysis` oder `automated-security-fixes`) | `gh api "repos/$REPO" --jq '.security_and_analysis.dependabot_security_updates.status' || gh api "repos/$REPO/automated-security-fixes" --jq '.enabled'` | `enabled` oder `true` | yes |
| SEC-CLAIM-004 | 9. Nachweisbarkeit | Secret Scanning ist aktiv | GitHub API (`security_and_analysis` oder Secret-Scanning-Alerts Endpoint) | `gh api "repos/$REPO" --jq '.security_and_analysis.secret_scanning.status' || gh api "repos/$REPO/secret-scanning/alerts?per_page=1"` | `enabled` oder Endpoint erfolgreich erreichbar | yes |
Expand Down
2 changes: 1 addition & 1 deletion docs/audit/103_SECURITY_ASSERTION_TRACEABILITY.MD
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Mapping of claims in `SECURITY.md` to evidence sources and verification commands

| Claim ID | SECURITY Anchor | Claim Summary | Evidence Source | Verification Command | Pass Criteria | Blocker |
|---|---|---|---|---|---|---|
| SEC-CLAIM-001 | 2. Unterstuetzte Versionen | Security support is tied to major 5 | `src/FileTypeDetection/FileTypeDetectionLib.vbproj` | `sed -n 's:.*<Version>\([^<]*\)</Version>.*:\1:p' src/FileTypeDetection/FileTypeDetectionLib.vbproj` | Version major is `5` | yes |
| SEC-CLAIM-001 | 2. Unterstuetzte Versionen | Security support is tied to major 6 | `src/FileTypeDetection/FileTypeDetectionLib.vbproj` | `sed -n 's:.*<Version>\([^<]*\)</Version>.*:\1:p' src/FileTypeDetection/FileTypeDetectionLib.vbproj` | Version major is `6` | yes |
| SEC-CLAIM-002 | 3. Meldung | Private vulnerability reporting path exists | GitHub API `private-vulnerability-reporting` | `gh api "repos/$REPO/private-vulnerability-reporting"` | `.enabled == true` | yes |
| SEC-CLAIM-003 | 9. Nachweisbarkeit | Dependabot security updates enabled | GitHub API (`security_and_analysis` or `automated-security-fixes`) | `gh api "repos/$REPO" --jq '.security_and_analysis.dependabot_security_updates.status' || gh api "repos/$REPO/automated-security-fixes" --jq '.enabled'` | `enabled` or `true` | yes |
| SEC-CLAIM-004 | 9. Nachweisbarkeit | Secret scanning enabled | GitHub API (`security_and_analysis` or Secret-Scanning-Alerts Endpoint) | `gh api "repos/$REPO" --jq '.security_and_analysis.secret_scanning.status' || gh api "repos/$REPO/secret-scanning/alerts?per_page=1"` | `enabled` or endpoint reachable | yes |
Expand Down
15 changes: 15 additions & 0 deletions docs/governance/045_CODE_QUALITY_POLICY_DE.MD
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,21 @@ Blöcke werden sichtbar getrennt (Leerzeile + Kommentartrenner):
- Fallback
- I/O Helpers separat

### 5.4 Methodenkopf- und Umbruchschema (verbindlich)
- Für neue oder in einem Ticket angepasste Signaturen sind mehrzeilige Signaturen Pflicht, wenn mindestens einer der Punkte zutrifft:
- mehr als ein Parameter
- Signatur würde in eine lange Zeile kippen (Richtwert: > 100 Zeichen)
- Format für mehrzeilige Signaturen:
- Membername mit Zeilenfortsetzung (`_`)
- öffnende Klammer in eigener Zeile
- genau ein Parameter pro Zeile
- schließende Klammer und Rückgabetyp gemeinsam in einer Zeile
- Nach jeder Methodensignatur (einzeilig oder mehrzeilig) folgt genau eine Leerzeile,
bevor Deklarationsblock oder erste ausführbare Anweisung beginnt.
- Das Schema gilt einheitlich für `Sub`/`Function`/Konstruktoren/Interface-Member.
- Lange Aufrufe werden analog umgebrochen (ein Argument pro Zeile, klar ausgerichtet).
- Keine Trailing-Whitespace-Zeichen und keine „leeren“ Zeilen mit Spaces/Tabs.

## 6. Variablenregel (Pflicht)
- Alle lokalen Variablen werden im „Deklarationsblock“ am Anfang der Funktion definiert.
- Platzierung:
Expand Down
44 changes: 44 additions & 0 deletions docs/governance/045_COMPLIANCE_STATUS_DE.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 045 Compliance Status (DE)

Stand: 2026-02-20
Geltungsbereich: `src/FileTypeDetection/*`

## Ziel
Nachweisbare, reproduzierbare Einhaltung der Kernvorgaben aus `045_CODE_QUALITY_POLICY_DE.MD` über automatisierte Tests und wiederholbare Build-/Testläufe.

## Automatisierte Governance-Gates
1. Public-API-Allowlist-Gate
Test: `PublicApiAllowlistTests`
Datei: `tests/FileTypeDetectionLib.Tests/Contracts/PublicApiAllowlistTests.cs`
Wirkung: Unerwartete neue Public-Typen werden als blocker erkannt.

2. Public-API-Snapshot-Gate
Test: `PublicApiContractSnapshotTests`
Datei: `tests/FileTypeDetectionLib.Tests/Contracts/PublicApiContractSnapshotTests.cs`
Wirkung: Surface-Drift in Public API wird deterministisch sichtbar.

3. 045 Core-Layout-/Policy-Gate
Test: `CodePolicy045ComplianceTests`
Datei: `tests/FileTypeDetectionLib.Tests/Contracts/CodePolicy045ComplianceTests.cs`
Geprüfte Regeln:
- Header enthält `' FILE:` und `INTERNE POLICY`
- `Option Strict On` und `Option Explicit On` vorhanden
- Reihenfolge: Header -> Options -> Namespace
- Verbotener Catch-Pseudofilter wird ausgeschlossen
- Dateien mit `Public`-Typen enthalten XML-`summary`
- Scan nur auf Source-Dateien (Ausschluss `bin/` und `obj/`)

## Reproduzierbare Verifikation
1. `dotnet build FileClassifier.sln -v minimal`
2. `dotnet test tests/FileTypeDetectionLib.Tests/FileTypeDetectionLib.Tests.csproj -c Release -v minimal`

## Iterative Verbesserungen (Issue 03)
1. Interne Duplikatkonsolidierung:
- `FileTypeDetector` nutzt zentrale Registry-Regel für structured refinement.
- Alias-Definitionen in `FileTypeRegistry` über Helper vereinheitlicht.
2. Policy-Header harmonisiert:
- `HashRoundTripReport.vb`, `EnumUtils.vb`, `ArgumentGuard.vb`, `IterableUtils.vb`.

## Hinweis
Diese Statusdatei dokumentiert den nachweisbaren Kernumfang der automatisierten 045-Compliance-Prüfung.
Erweiterungen an den Governance-Gates sind möglich, müssen jedoch fail-closed und mit niedriger False-Positive-Rate erfolgen.
76 changes: 76 additions & 0 deletions docs/governance/046_ISSUE_105_106_107_CLOSURE_DE.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Issue Closure Matrix (DE) - #105 / #106 / #107

Stand: 2026-02-21

## Ziel
Nachweis, dass alle offenen Punkte aus den Issues `#105`, `#106` und `#107` im PR `#108` umgesetzt sind.

## Issue #105 - HashRoundTripReport ersetzen und Usages migrieren
Status: umgesetzt.

Abdeckung:
- Datei ersetzt: `src/FileTypeDetection/Abstractions/Hashing/HashRoundTripReport.vb`
- Legacy-Usages migriert auf neue API (`HashSlot`, `Evidence(slot)`, `LogicalEquals(slot)`, `PhysicalEquals(slot)`).
- API-Contract/Snapshot aktualisiert:
- `tests/FileTypeDetectionLib.Tests/Contracts/public-api.snapshot.txt`

Geforderte `rg`-Trefferliste alt vs. neu:
1. Legacy-API-Symbole (alt)
- Kommando:
- `rg -n "LogicalH1Equals|PhysicalH1Equals|HashRoundTripReport\\.(H1|H2|H3|H4)\\b" src tests -S`
- Ergebnis:
- `0` Treffer
2. Neue API-Symbole (neu)
- Kommando:
- `rg -n "HashSlot|Evidence\\(|LogicalEquals\\(|PhysicalEquals\\(" src tests -S`
- Ergebnis:
- Treffer in `HashRoundTripReport.vb`, `HashingEvidenceTests.cs`, `FileTypeDetectionSteps.cs` und `public-api.snapshot.txt`.

Build/Test-Evidence:
- `dotnet build FileClassifier.sln -v minimal` -> pass
- `dotnet test tests/FileTypeDetectionLib.Tests/FileTypeDetectionLib.Tests.csproj -c Release -v minimal` -> pass

## Issue #106 - Public-API-Policy haerten (Allowlist + Contract-Gates)
Status: umgesetzt.

Abdeckung:
- Explizite Public-API-Allowlist als blocker:
- `tests/FileTypeDetectionLib.Tests/Contracts/PublicApiAllowlistTests.cs`
- Public-API-Snapshot-Gate als blocker:
- `tests/FileTypeDetectionLib.Tests/Contracts/PublicApiContractSnapshotTests.cs`
- Policy-Compliance-Gate als blocker:
- `tests/FileTypeDetectionLib.Tests/Contracts/CodePolicy045ComplianceTests.cs`

Dokumentierte freigegebene Public-Hauptklassen:
- In `AllowedPublicTypes` innerhalb
`tests/FileTypeDetectionLib.Tests/Contracts/PublicApiAllowlistTests.cs`.

Reproduzierbarer Governance-Check:
- `dotnet test tests/FileTypeDetectionLib.Tests/FileTypeDetectionLib.Tests.csproj -c Release -v minimal`

## Issue #107 - Interne Refactor-/Utility-Konsolidierung
Status: umgesetzt.

Refactor-Matrix (Duplikatquelle -> neue Utility-Stelle):
1. Hashing-Kernlogik in Fassade `EvidenceHashing.vb`
- -> `EvidenceHashingCore.vb`
- Methoden u. a.: `BuildEvidenceFromEntries`, `BuildEvidenceFromRawPayload`,
`TryNormalizeEntries`, `BuildLogicalManifestBytes`, `ComputeSha256Hex`,
`ComputeFastHash`, `ComputeHmacSha256Hex`.
2. RoundTrip-I/O/Temp-Lifecycle in Fassade
- -> `EvidenceHashingRoundTrip.vb`
- Pipeline: TempRoot/Target, Materialisierung, Cleanup, Report-Bildung.
3. Gebundene Datei-Leselogik/Fehleraufbereitung
- -> `EvidenceHashingIo.vb`
- Methoden: `TryReadFileBounded`, `SetReadFileError`.
4. Enum- und Guard-Helfer in mehreren Klassen
- -> `EnumUtils.vb`, `ArgumentGuard.vb`, `IterableUtils.vb`
- Einsatz sichtbar in `HashRoundTripReport.vb`.

Evidence-Kommandos:
- `rg -n "EvidenceHashingCore|EvidenceHashingRoundTrip|EvidenceHashingIo" src tests -S`
- `rg -n "EnumUtils\\.|ArgumentGuard\\.|IterableUtils\\." src tests -S`
- `dotnet test FileClassifier.sln -v minimal`

## Entscheidung
Alle offenen Punkte aus `#105`, `#106` und `#107` sind im aktuellen PR-Stand umgesetzt und auditierbar nachgewiesen.
15 changes: 15 additions & 0 deletions docs/governance/145_CODE_QUALITY_POLICY_DE.MD
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,21 @@ Use visible block separation (empty line + block comment markers):
- fallback
- I/O helpers separated

### 5.4 Method Header and Wrapping Scheme (binding)
- For new or ticket-touched signatures, multiline signatures are mandatory when at least one applies:
- more than one parameter
- signature would become a long line (guideline: > 100 characters)
- Format for multiline signatures:
- member name followed by line continuation (`_`)
- opening parenthesis on its own line
- exactly one parameter per line
- closing parenthesis and return type on one line
- After every method signature (single-line or multiline), include exactly one blank line
before the declaration block or first executable statement.
- This applies consistently to `Sub`/`Function`/constructors/interface members.
- Long invocations are wrapped analogously (one argument per line, aligned clearly).
- No trailing whitespace and no visually empty lines containing spaces/tabs.

## 6. Variable Rule
- All local variables are declared in a declaration block at the start of the function.
- Placement:
Expand Down
4 changes: 3 additions & 1 deletion docs/versioning/002_HISTORY_VERSIONS.MD
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,16 @@ Heuristik fuer die Rueckwirkungs-Zuordnung:
- `docs|test|ci|chore|tooling|refactor|fix` => Patch

Aktueller Entwicklungsstand:
- Aktuelle Entwicklungslinie enthaelt `5.x` (aktueller Arbeitsstand: `v5.2.1`; Details in `docs/versioning/003_CHANGELOG_RELEASES.MD`).
- Aktuelle Entwicklungslinie enthaelt `6.x` (aktueller Arbeitsstand: `v6.0.1`; Details in `docs/versioning/003_CHANGELOG_RELEASES.MD`).

Hinweis:
- Die Spalte `Keyword` verwendet den technischen Klassifizierungswert aus der Historie.
- Einzelne Committitel bleiben in der Originalsprache, wenn sie als exakter Quelltextnachweis uebernommen wurden.

| Version | Kurzbeschreibung | Commit | Keyword |
|---|---|---|---|
| `6.0.1` | Refactor-Haertung: interne SSOT-Utilities nach `Infrastructure/Utils` konsolidiert, Core-Utility-Logik in dedizierte Dateien gesplittet und Duplikat-Guards vereinheitlicht | [unreleased](https://github.com/tomtastisch/FileClassifier/compare/v5.2.1...HEAD) | patch |
| `6.0.0` | Breaking-Release: `FileKind`-Enum und `HashRoundTripReport`-Public-API auf neues Slot-/Methodenmodell umgestellt, Hashing-Interna in Core/RoundTrip/Io ausgelagert | [unreleased](https://github.com/tomtastisch/FileClassifier/compare/v5.2.1...HEAD) | breaking |
| `5.2.1` | SharpCompress-API auf typsichere Aufrufe umgestellt, tar.gz-Verarbeitung fail-closed gehaertet und Qodana-CI-Gate als Pflichtlauf dokumentiert/erzwungen | [unreleased](https://github.com/tomtastisch/FileClassifier/compare/v5.2.0...HEAD) | patch |
| `5.2.0` | netstandard2.0-Compat-Layer eingefuehrt, Provider-Struktur konsolidiert und TFM-Multi-Targeting erweitert | [8d65a52](https://github.com/tomtastisch/FileClassifier/commit/8d65a52) | minor |
| `5.1.4` | Refactor-Cluster 7C abgeschlossen + Qodana-Alerts auf 0 + Version-Bump fuer Release | [2adeb83](https://github.com/tomtastisch/FileClassifier/commit/2adeb83) | patch |
Expand Down
22 changes: 22 additions & 0 deletions docs/versioning/003_CHANGELOG_RELEASES.MD
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,28 @@
Alle Aenderungen werden hier technisch dokumentiert. Die Release-Version selbst ist
der Git-Tag `vX.Y.Z` (optional `-prerelease`) als SSOT.

## [6.0.1]
- Added:
- Neues internes Submodul `src/FileTypeDetection/Infrastructure/Utils/` als SSOT fuer wiederverwendbare Guard-/I/O-/Pfad-/Logging-Helfer.
- Changed:
- Utility-Klassen aus `CoreInternals.vb` in dedizierte Dateien unter `Infrastructure/Utils` ausgelagert; `CoreInternals.vb` auf Refinement-Logik fokussiert.
- Vorhandene Utils von `src/FileTypeDetection/Utils/` nach `src/FileTypeDetection/Infrastructure/Utils/` verschoben und Namespace auf `Tomtastisch.FileClassifier.Infrastructure.Utils` konsolidiert.
- Duplizierte Byte-Array-Guard-Checks auf `ByteArrayGuard.HasContent(...)` vereinheitlicht.
- Docs/CI/Tooling:
- Versionskonvergenz auf `6.0.1` nachgezogen (`RepoVersion`, `Version`, `PackageVersion`, Versionshistorie DE/EN).

## [6.0.0]
- Added:
- Neue interne Hashing-Services (`EvidenceHashingCore`, `EvidenceHashingRoundTrip`, `EvidenceHashingIo`) fuer deterministische Auslagerung ohne neue Dependencies.
- Changed:
- Breaking-Umstellung von `FileKind`-Werten (`Docx`/`Xlsx`/`Pptx` -> `Doc`/`Xls`/`Ppt`).
- Breaking-Umstellung der `HashRoundTripReport`-Public-API auf Slot-basiertes Zugriffsmodell (`HashSlot`, `Evidence(...)`, `LogicalEquals(...)`, `PhysicalEquals(...)`).
- `EvidenceHashing` auf Fassade reduziert; Kernlogik in interne stateless Services verschoben.
- Fixed:
- Reflection-basierte Unit-Tests auf neue interne Hashing-Typen angepasst.
- Docs/CI/Tooling:
- Versionskonvergenz lokal auf `6.0.0` vorbereitet (`RepoVersion`, `Version`, `PackageVersion`, Versionshistorie DE/EN).

## [5.2.1]
- Added:
- CI-Dokumentation um expliziten Pflicht-Gate-Charakter fuer Qodana erweitert.
Expand Down
4 changes: 3 additions & 1 deletion docs/versioning/102_HISTORY_VERSIONS.MD
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@ Heuristics for retroactive classification:
- `docs|test|ci|chore|tooling|refactor|fix` => patch

Current state:
- Current release line contains `5.x` (current working state: `v5.2.1`; details in `docs/versioning/103_CHANGELOG_RELEASES.MD`).
- Current release line contains `6.x` (current working state: `v6.0.1`; details in `docs/versioning/103_CHANGELOG_RELEASES.MD`).

Note:
- The \"short description\" column follows the original commit/PR intent text for deterministic traceability and is not normalized to a single language.

| Version | Short description | Commit | Keyword |
|---|---|---|---|
| `6.0.1` | Refactor hardening: consolidated internal SSOT utilities into `Infrastructure/Utils`, split core utility logic into dedicated files, and unified duplicate byte guards | [unreleased](https://github.com/tomtastisch/FileClassifier/compare/v5.2.1...HEAD) | patch |
| `6.0.0` | Breaking release: migrated `FileKind` enum and `HashRoundTripReport` public API to the new slot/method model and split hashing internals into core/roundtrip/io services | [unreleased](https://github.com/tomtastisch/FileClassifier/compare/v5.2.1...HEAD) | breaking |
| `5.2.1` | Switched SharpCompress calls to type-safe APIs, hardened tar.gz fail-closed handling, and enforced/documented Qodana CI as a mandatory gate | [unreleased](https://github.com/tomtastisch/FileClassifier/compare/v5.2.0...HEAD) | patch |
| `5.2.0` | Introduce netstandard2.0 compatibility layer, consolidate provider structure, and extend TFM multi-targeting | [8d65a52](https://github.com/tomtastisch/FileClassifier/commit/8d65a52) | minor |
| `5.1.4` | Refactor-Cluster 7C abgeschlossen + Qodana-Alerts auf 0 + Version-Bump fuer Release | [2adeb83](https://github.com/tomtastisch/FileClassifier/commit/2adeb83) | patch |
Expand Down
22 changes: 22 additions & 0 deletions docs/versioning/103_CHANGELOG_RELEASES.MD
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,28 @@

All changes are documented here in technical terms. The release version itself is the Git tag `vX.Y.Z` (optional `-prerelease`) as SSOT.

## [6.0.1]
- Added:
- New internal submodule `src/FileTypeDetection/Infrastructure/Utils/` as the SSOT for reusable guard/I/O/path/logging helpers.
- Changed:
- Moved utility classes from `CoreInternals.vb` into dedicated files under `Infrastructure/Utils`; narrowed `CoreInternals.vb` to refinement logic.
- Relocated existing utils from `src/FileTypeDetection/Utils/` to `src/FileTypeDetection/Infrastructure/Utils/` and consolidated the namespace to `Tomtastisch.FileClassifier.Infrastructure.Utils`.
- Unified duplicate byte-array guard checks to `ByteArrayGuard.HasContent(...)`.
- Docs/CI/Tooling:
- Updated version convergence to `6.0.1` (`RepoVersion`, `Version`, `PackageVersion`, version history DE/EN).

## [6.0.0]
- Added:
- New internal hashing services (`EvidenceHashingCore`, `EvidenceHashingRoundTrip`, `EvidenceHashingIo`) for deterministic extraction without adding dependencies.
- Changed:
- Breaking migration of `FileKind` values (`Docx`/`Xlsx`/`Pptx` -> `Doc`/`Xls`/`Ppt`).
- Breaking migration of `HashRoundTripReport` public API to a slot-based model (`HashSlot`, `Evidence(...)`, `LogicalEquals(...)`, `PhysicalEquals(...)`).
- Reduced `EvidenceHashing` to a facade and moved core logic into internal stateless services.
- Fixed:
- Updated reflection-based unit tests to the new internal hashing types.
- Docs/CI/Tooling:
- Prepared local version convergence to `6.0.0` (`RepoVersion`, `Version`, `PackageVersion`, version history DE/EN).

## [5.2.1]
- Added:
- Extended CI documentation to state Qodana as an explicit mandatory gate.
Expand Down
Loading
Loading