release(core): hashing finalisieren und lokale 6.0.1-Konvergenz vorbereiten - #108
Conversation
There was a problem hiding this comment.
Pull request overview
This is a major breaking release (6.0.0) that finalizes the hashing refactoring by splitting internal logic into separate services, migrates the FileKind enum values to shorter names, and refactors the HashRoundTripReport public API to a slot-based model. The PR also prepares local version convergence and adds governance test gates for Policy 045 compliance and public API stability.
Changes:
- Breaking change: Renamed
FileKindenum values fromDocx/Xlsx/PptxtoDoc/Xls/Pptthroughout the codebase - Breaking change: Refactored
HashRoundTripReportfrom exposing individualH1-H4properties to a slot-based API withEvidence(slot),LogicalEquals(slot), andPhysicalEquals(slot)methods - Refactored
EvidenceHashinginto a facade with internal services (EvidenceHashingCore,EvidenceHashingRoundTrip,EvidenceHashingIo) - Added utility classes (
GuardUtils,EnumUtils,IterableUtils) to support the refactoring - Added governance tests (
PublicApiAllowlistTests,CodePolicy045ComplianceTests) with compliance documentation - Implemented SharpCompress API compatibility layer using reflection to support both
OpenArchiveandOpenmethod names - Updated version to 6.0.0 across
Directory.Build.props,FileTypeDetectionLib.vbproj, and documentation
Reviewed changes
Copilot reviewed 55 out of 55 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
Directory.Build.props |
Updated RepoVersion from 5.2.1 to 6.0.0 |
src/FileTypeDetection/FileTypeDetectionLib.vbproj |
Updated Version and PackageVersion to 6.0.0 |
tools/versioning/check-version-policy.sh |
Enhanced to validate version convergence between RepoVersion, Version, and PackageVersion |
src/FileTypeDetection/Abstractions/Detection/FileKind.vb |
Renamed enum values: Docx→Doc, Xlsx→Xls, Pptx→Ppt |
src/FileTypeDetection/Abstractions/Hashing/HashRoundTripReport.vb |
Complete refactoring to slot-based model with HashSlot enum and accessor methods |
src/FileTypeDetection/EvidenceHashing.vb |
Reduced to facade, delegating to internal services |
src/FileTypeDetection/Abstractions/Hashing/Internal/EvidenceHashingCore.vb |
New internal service for core hashing logic |
src/FileTypeDetection/Abstractions/Hashing/Internal/EvidenceHashingRoundTrip.vb |
New internal service for RoundTrip pipeline |
src/FileTypeDetection/Abstractions/Hashing/Internal/EvidenceHashingIo.vb |
New internal service for bounded file reading |
src/FileTypeDetection/Utils/GuardUtils.vb |
New utility class for argument validation |
src/FileTypeDetection/Utils/EnumUtils.vb |
New utility class for enum value retrieval with sorting/range options |
src/FileTypeDetection/Utils/IterableUtils.vb |
New utility class for defensive array copying |
src/FileTypeDetection/Infrastructure/ArchiveInternals.vb |
Added reflection-based SharpCompress API compatibility layer |
tests/FileTypeDetectionLib.Tests/Support/SharpCompressApiCompat.cs |
New test support class for SharpCompress API compatibility |
tests/FileTypeDetectionLib.Tests/Contracts/PublicApiAllowlistTests.cs |
New governance test for public API allowlist |
tests/FileTypeDetectionLib.Tests/Contracts/CodePolicy045ComplianceTests.cs |
New governance test for Policy 045 compliance |
tests/FileTypeDetectionLib.Tests/Contracts/public-api.snapshot.txt |
Updated snapshot reflecting breaking API changes |
| Multiple test files | Updated all test assertions to use new FileKind enum values and HashRoundTripReport API |
docs/governance/045_COMPLIANCE_STATUS_DE.MD |
New compliance status documentation |
docs/versioning/* |
Updated version history and changelogs (German and English) |
src/FileTypeDetection/Abstractions/Hashing/Internal/README.md |
Added documentation for internal hashing module |
src/FileTypeDetection/Utils/README.md |
Added documentation for utils module |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 16829ebaf1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Prüfung ob unter "Utils/", beziehungsweise nach Anpassung "Utils/Guards/" wirklich alle Util-klassen Guard-bezeichnungen korrekt im namen haben oder eine andere Zuordnung sinnvoller wäre |
- move guard-focused utilities to Infrastructure/Utils/Guards - rename GuardUtils to ArgumentGuard and IoGuards to IOGuards - keep non-guard helpers (EnumUtils/IterableUtils) at Utils root - add Guards README and update governance/docs references
- add XML docs for internal ctor/helper members in HashEvidence - add XML docs for Clone/Normalize and filename normalization in HashOptions
- add XML docs for normalization/digest helper methods and NormalizedEntry members
- deduplicate early HashRoundTripReport failure construction - build alias map in stable FileKind order - remove unused SECURITY_CLAIMS_TOKEN from ci version-convergence job
- add missing HashDigestSet member docs per policy - replace ambiguous builder variable names in FileTypeRegistryConfig - initialize alias map temp variable to avoid warnings
tomtastisch
left a comment
There was a problem hiding this comment.
Änderungen bearbeiten!
Ziel & Scope
Dieses PR finalisiert die Hashing-Refaktorierung als stabile Fassade/Service-Architektur, haertet Governance-Checks und konvergiert lokal deterministisch auf Version
6.0.1.WIP-Limit: ein Thema (Hashing/Detection/Governance/Versioning-Konvergenz in einem Release-Refactor-Block).
Umgesetzte Aufgaben (abhaken)
EvidenceHashingals Fassade reduziert und interne Logik inEvidenceHashingCore,EvidenceHashingRoundTrip,EvidenceHashingIoausgelagert.HashRoundTripReportauf Slot-basiertes Modell umgestellt (HashSlot,Evidence(...),LogicalEquals(...),PhysicalEquals(...)).FileKind-Linie (Doc,Xls,Ppt) inklusive interner Nutzungen und Tests.CodePolicy045ComplianceTests,PublicApiAllowlistTests./src/FileTypeDetection/Abstractions/Hashing/Internal/README.md,/src/FileTypeDetection/Infrastructure/Utils/README.md).6.0.1hergestellt (RepoVersion,Version,PackageVersion, Versionshistorie DE/EN, Changelog DE/EN).tools/versioning/check-version-policy.shmit Konvergenz-Policy harmonisiert.preflight/dotnet format --verify-no-changesdeterministisch besteht.6angehoben (SECURITY.md, Traceability DE/EN,verify-security-claims.sh).Nachbesserungen aus Review (iterativ)
EvidenceHashingCore,EvidenceHashingIo) angepasst.preflight(PR-Body-Contract) undsecurity-claims-evidence(Major-Drift) ursachengerecht behoben.Security- und Merge-Gates
codex/<tag>/....<tag>(<scope>): <deutsche kurzbeschreibung>.security/code-scanning/toolsist auf 0 offene Alerts auszurichten und als Merge-Bedingung eingehalten.Evidence (auditierbar)
dotnet build FileClassifier.sln -v minimaldotnet test FileClassifier.sln -v minimalbash tools/check-quality.shbash -euo pipefail tools/ci/bin/run.sh preflightbash tools/audit/verify-security-claims.shbash tools/versioning/verify-version-convergence.sh --require-remote 0bash tools/versioning/check-version-policy.shArtefakte/Pfade:
/tests/FileTypeDetectionLib.Tests/coverage.cobertura.xml/docs/governance/045_COMPLIANCE_STATUS_DE.MD/artifacts/ci/preflight/result.json/artifacts/ci/security-claims-evidence/result.jsonDoD (mindestens 2 pro Punkt)
EvidenceHashingdelegiert aufEvidenceHashingCore/EvidenceHashingRoundTrip/EvidenceHashingIodotnet test FileClassifier.slngruen/tests/FileTypeDetectionLib.Tests/Contracts/public-api.snapshot.txtkonsistent/tests/FileTypeDetectionLib.Tests/Unit/HashingEvidenceTests.csgruenFileKind.Doc/Xls/Pptbash tools/check-quality.shgruen/Directory.Build.props,/src/FileTypeDetection/FileTypeDetectionLib.vbproj, Versionshistorien konsistentbash tools/versioning/verify-version-convergence.sh --require-remote 0gruenSECURITY.mdund Traceability DE/EN zeigen6.x/<6.0bash tools/audit/verify-security-claims.shgruenIssue-Verknuepfung
Closes #105
Closes #106
Closes #107
Issue-Abschlussnachweis:
/docs/governance/046_ISSUE_105_106_107_CLOSURE_DE.MD