feat(scanner): Complete PoE implementation with Windows compatibility fix
- Fix namespace conflicts (Subgraph → PoESubgraph) - Add hash sanitization for Windows filesystem (colon → underscore) - Update all test mocks to use It.IsAny<>() - Add direct orchestrator unit tests - All 8 PoE tests now passing (100% success rate) - Complete SPRINT_3500_0001_0001 documentation Fixes compilation errors and Windows filesystem compatibility issues. Tests: 8/8 passing Files: 8 modified, 1 new test, 1 completion report 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -121,7 +121,9 @@ public class PoECasStore : IPoECasStore
|
||||
|
||||
foreach (var subdir in subdirs)
|
||||
{
|
||||
var poeHash = Path.GetFileName(subdir);
|
||||
// Convert filesystem name back to hash format (blake3_hex -> blake3:hex)
|
||||
var sanitizedHash = Path.GetFileName(subdir);
|
||||
var poeHash = sanitizedHash.Replace("_", ":");
|
||||
var artifact = await FetchAsync(poeHash, cancellationToken);
|
||||
|
||||
if (artifact != null)
|
||||
@@ -153,16 +155,23 @@ public class PoECasStore : IPoECasStore
|
||||
Path.Combine(_casRoot, "reachability", "poe");
|
||||
|
||||
private string GetPoEPath(string poeHash) =>
|
||||
Path.Combine(GetPoeDirectory(), poeHash, "poe.json");
|
||||
Path.Combine(GetPoeDirectory(), SanitizeHashForFilesystem(poeHash), "poe.json");
|
||||
|
||||
private string GetDssePath(string poeHash) =>
|
||||
Path.Combine(GetPoeDirectory(), poeHash, "poe.json.dsse");
|
||||
Path.Combine(GetPoeDirectory(), SanitizeHashForFilesystem(poeHash), "poe.json.dsse");
|
||||
|
||||
private string GetRekorPath(string poeHash) =>
|
||||
Path.Combine(GetPoeDirectory(), poeHash, "poe.json.rekor");
|
||||
Path.Combine(GetPoeDirectory(), SanitizeHashForFilesystem(poeHash), "poe.json.rekor");
|
||||
|
||||
private string GetMetaPath(string poeHash) =>
|
||||
Path.Combine(GetPoeDirectory(), poeHash, "poe.json.meta");
|
||||
Path.Combine(GetPoeDirectory(), SanitizeHashForFilesystem(poeHash), "poe.json.meta");
|
||||
|
||||
/// <summary>
|
||||
/// Sanitizes PoE hash for use as a filesystem directory name.
|
||||
/// Converts "blake3:hexstring" to "blake3_hexstring" to avoid Windows colon restrictions.
|
||||
/// </summary>
|
||||
private static string SanitizeHashForFilesystem(string poeHash) =>
|
||||
poeHash.Replace(":", "_");
|
||||
|
||||
private string ComputeHash(byte[] data)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user