license switch agpl -> busl1, sprints work, new product advisories

This commit is contained in:
master
2026-01-20 15:32:20 +02:00
parent 4903395618
commit c32fff8f86
1835 changed files with 38630 additions and 4359 deletions

View File

@@ -1,5 +1,5 @@
// <copyright file="AiAttestationService.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Concurrent;

View File

@@ -1,5 +1,5 @@
// <copyright file="AiAttestationServiceExtensions.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using Microsoft.Extensions.DependencyInjection;

View File

@@ -1,5 +1,5 @@
// <copyright file="IAiAttestationService.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using StellaOps.AdvisoryAI.Attestation.Models;

View File

@@ -1,5 +1,5 @@
// <copyright file="AiAttestationJsonContext.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Text.Json.Serialization;

View File

@@ -1,5 +1,5 @@
// <copyright file="AiClaimAttestation.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="AiModelInfo.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Text.Json.Serialization;

View File

@@ -1,5 +1,5 @@
// <copyright file="AiRunAttestation.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="AiRunContext.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="AiTurnSummary.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="ClaimEvidence.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="PromptTemplateInfo.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Text.Json.Serialization;

View File

@@ -1,5 +1,5 @@
// <copyright file="PromptTemplateRegistry.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Concurrent;

View File

@@ -1,5 +1,5 @@
// <copyright file="IAiAttestationStore.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="InMemoryAiAttestationStore.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Concurrent;

View File

@@ -256,6 +256,48 @@ public sealed class CycloneDxExtractorTests
Assert.Single(result.ComponentPurls);
}
[Fact]
public async Task ExtractParsedAsync_ValidCycloneDx_ExtractsParsedSbom()
{
var sbom = """
{
"bomFormat": "CycloneDX",
"specVersion": "1.5",
"serialNumber": "urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79",
"version": 1,
"metadata": {
"timestamp": "2026-01-18T12:00:00Z",
"component": {
"type": "application",
"bom-ref": "acme-app",
"name": "ACME Application",
"version": "1.0.0",
"purl": "pkg:docker/acme/app@1.0.0"
}
},
"components": [
{
"type": "library",
"bom-ref": "component-1",
"name": "some-lib",
"purl": "pkg:npm/some-lib@1.0.0"
}
]
}
""";
using var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(sbom));
var result = await _extractor.ExtractParsedAsync(stream);
Assert.Equal("cyclonedx", result.Format);
Assert.Equal("1.5", result.SpecVersion);
Assert.Equal("urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79", result.SerialNumber);
Assert.Equal("ACME Application", result.Metadata.Name);
Assert.Equal("acme-app", result.Metadata.RootComponentRef);
Assert.Contains(result.Components, component => component.BomRef == "acme-app");
Assert.Contains(result.Components, component => component.BomRef == "component-1");
}
[Fact]
public async Task ExtractAsync_MissingOptionalFields_Succeeds()
{

View File

@@ -0,0 +1,17 @@
# StellaOps.Artifact.Core Local Agent Charter
## Scope
- Applies to `src/__Libraries/StellaOps.Artifact.Core/**`.
- Focus on artifact parsing, extraction, and storage contracts.
## Required Reading (treat as read before edits)
- `docs/operations/artifact-migration-runbook.md`
- `docs/modules/platform/architecture-overview.md`
## Working Agreements
- Keep outputs deterministic (ordering, timestamps, hashes).
- Avoid network access; keep parsing offline-friendly.
- Update sprint status in `docs/implplan/SPRINT_*.md` when work starts/finishes.
## Testing Expectations
- Add or update unit tests for behavior changes.

View File

@@ -8,6 +8,7 @@
using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using StellaOps.Artifact.Core;
@@ -189,8 +190,8 @@ public sealed class ArtifactController : ControllerBase
[FromQuery] DateTimeOffset? from,
[FromQuery] DateTimeOffset? to,
[FromQuery] int limit = 100,
[FromQuery(Name = "continuation_token")] string? continuationToken,
CancellationToken ct)
[FromQuery(Name = "continuation_token")] string? continuationToken = null,
CancellationToken ct = default)
{
if (string.IsNullOrWhiteSpace(bomRef))
{

View File

@@ -5,9 +5,14 @@
// Description: Standalone service for extracting metadata from CycloneDX SBOMs
// -----------------------------------------------------------------------------
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Xml;
using System.Xml.Linq;
using Microsoft.Extensions.Logging.Abstractions;
using StellaOps.Concelier.SbomIntegration.Models;
using StellaOps.Concelier.SbomIntegration.Parsing;
namespace StellaOps.Artifact.Core;
@@ -26,6 +31,16 @@ public interface ICycloneDxExtractor
/// </summary>
Task<CycloneDxMetadata> ExtractAsync(Stream stream, CancellationToken ct = default);
/// <summary>
/// Extracts enriched SBOM data from a CycloneDX JSON document.
/// </summary>
ParsedSbom ExtractParsed(JsonDocument document);
/// <summary>
/// Extracts enriched SBOM data from a CycloneDX JSON stream.
/// </summary>
Task<ParsedSbom> ExtractParsedAsync(Stream stream, CancellationToken ct = default);
/// <summary>
/// Extracts metadata from a CycloneDX XML document.
/// Sprint: SPRINT_20260118_017 (AS-004)
@@ -95,6 +110,41 @@ public sealed record CycloneDxMetadata
/// </summary>
public sealed class CycloneDxExtractor : ICycloneDxExtractor
{
private readonly IParsedSbomParser _parser;
public CycloneDxExtractor()
: this(new ParsedSbomParser(NullLogger<ParsedSbomParser>.Instance))
{
}
public CycloneDxExtractor(IParsedSbomParser parser)
{
_parser = parser ?? throw new ArgumentNullException(nameof(parser));
}
/// <inheritdoc />
public ParsedSbom ExtractParsed(JsonDocument document)
{
ArgumentNullException.ThrowIfNull(document);
var payload = Encoding.UTF8.GetBytes(document.RootElement.GetRawText());
using var stream = new MemoryStream(payload);
return _parser.ParseAsync(stream, SbomFormat.CycloneDX).GetAwaiter().GetResult();
}
/// <inheritdoc />
public async Task<ParsedSbom> ExtractParsedAsync(Stream stream, CancellationToken ct = default)
{
ArgumentNullException.ThrowIfNull(stream);
if (stream.CanSeek)
{
stream.Position = 0;
}
return await _parser.ParseAsync(stream, SbomFormat.CycloneDX, ct);
}
/// <inheritdoc />
public CycloneDxMetadata Extract(JsonDocument document)
{
@@ -103,62 +153,15 @@ public sealed class CycloneDxExtractor : ICycloneDxExtractor
try
{
var root = document.RootElement;
var parsed = ExtractParsed(document);
var version = ExtractBomVersion(root);
// Extract serial number
string? serialNumber = null;
if (root.TryGetProperty("serialNumber", out var serialProp))
{
serialNumber = serialProp.GetString();
}
// Extract version
int version = 1;
if (root.TryGetProperty("version", out var versionProp))
{
version = versionProp.GetInt32();
}
// Extract spec version
string? specVersion = null;
if (root.TryGetProperty("specVersion", out var specProp))
{
specVersion = specProp.GetString();
}
// Extract primary component from metadata
string? primaryBomRef = null;
string? primaryName = null;
string? primaryVersion = null;
string? primaryPurl = null;
if (root.TryGetProperty("metadata", out var metadata))
{
if (metadata.TryGetProperty("component", out var primaryComponent))
{
primaryBomRef = GetStringProperty(primaryComponent, "bom-ref");
primaryName = GetStringProperty(primaryComponent, "name");
primaryVersion = GetStringProperty(primaryComponent, "version");
primaryPurl = GetStringProperty(primaryComponent, "purl");
}
}
// Extract timestamp
DateTimeOffset? timestamp = null;
if (root.TryGetProperty("metadata", out var meta2) &&
meta2.TryGetProperty("timestamp", out var tsProp))
{
if (DateTimeOffset.TryParse(tsProp.GetString(), out var ts))
{
timestamp = ts;
}
}
// Extract all component bom-refs and purls
var bomRefs = new List<string>();
var purls = new List<string>();
int componentCount = 0;
if (root.TryGetProperty("components", out var components))
if (root.TryGetProperty("components", out var components) &&
components.ValueKind == JsonValueKind.Array)
{
foreach (var component in components.EnumerateArray())
{
@@ -181,19 +184,23 @@ public sealed class CycloneDxExtractor : ICycloneDxExtractor
}
}
var primaryComponent = GetPrimaryComponent(parsed);
return new CycloneDxMetadata
{
SerialNumber = serialNumber,
SerialNumber = NormalizeParsedString(parsed.SerialNumber),
Version = version,
SpecVersion = specVersion,
PrimaryBomRef = primaryBomRef,
PrimaryName = primaryName,
PrimaryVersion = primaryVersion,
PrimaryPurl = primaryPurl,
SpecVersion = NormalizeParsedString(parsed.SpecVersion),
PrimaryBomRef = NormalizeParsedString(parsed.Metadata.RootComponentRef),
PrimaryName = NormalizeParsedString(parsed.Metadata.Name)
?? NormalizeParsedString(primaryComponent?.Name),
PrimaryVersion = NormalizeParsedString(parsed.Metadata.Version)
?? NormalizeParsedString(primaryComponent?.Version),
PrimaryPurl = NormalizeParsedString(primaryComponent?.Purl),
ComponentBomRefs = bomRefs,
ComponentPurls = purls,
ComponentCount = componentCount,
Timestamp = timestamp,
Timestamp = parsed.Metadata.Timestamp,
Success = true
};
}
@@ -410,13 +417,13 @@ public sealed class CycloneDxExtractor : ICycloneDxExtractor
if (firstChar == '\uFEFF')
{
buffer = new byte[1];
await stream.ReadAsync(buffer, ct);
await stream.ReadExactlyAsync(buffer, ct);
stream.Position = 0;
// Skip 3-byte UTF-8 BOM
if (stream.Length >= 3)
{
var bomBuffer = new byte[3];
await stream.ReadAsync(bomBuffer, ct);
await stream.ReadExactlyAsync(bomBuffer, ct);
if (bomBuffer[0] == 0xEF && bomBuffer[1] == 0xBB && bomBuffer[2] == 0xBF)
{
firstChar = (char)stream.ReadByte();
@@ -483,6 +490,34 @@ public sealed class CycloneDxExtractor : ICycloneDxExtractor
return null;
}
private static int ExtractBomVersion(JsonElement root)
{
if (root.TryGetProperty("version", out var versionProp) &&
versionProp.ValueKind == JsonValueKind.Number &&
versionProp.TryGetInt32(out var version))
{
return version;
}
return 1;
}
private static ParsedComponent? GetPrimaryComponent(ParsedSbom parsed)
{
if (string.IsNullOrWhiteSpace(parsed.Metadata.RootComponentRef))
{
return null;
}
return parsed.Components.FirstOrDefault(component =>
string.Equals(component.BomRef, parsed.Metadata.RootComponentRef, StringComparison.Ordinal));
}
private static string? NormalizeParsedString(string? value)
{
return string.IsNullOrWhiteSpace(value) ? null : value;
}
private static void ExtractXmlComponents(
XElement componentsElement,
XNamespace ns,

View File

@@ -12,8 +12,10 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Text.Json" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" />
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Concelier\__Libraries\StellaOps.Concelier.SbomIntegration\StellaOps.Concelier.SbomIntegration.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,19 @@
# StellaOps.Artifact.Infrastructure Local Agent Charter
## Scope
- Applies to `src/__Libraries/StellaOps.Artifact.Infrastructure/**`.
- Focus on artifact persistence, migrations, and storage backends.
## Required Reading (treat as read before edits)
- `docs/operations/artifact-migration-runbook.md`
- `docs/modules/platform/architecture-overview.md`
- `docs/19_TEST_SUITE_OVERVIEW.md`
## Working Agreements
- Deterministic outputs (ordering, timestamps, hashing).
- Offline-friendly; avoid runtime network calls.
- Note cross-module impacts in the active sprint tracker.
## Testing Expectations
- Add or update unit tests under `src/__Libraries/__Tests`.
- Run `dotnet test` for affected test projects when changes are made.

View File

@@ -12,7 +12,7 @@
<Authors>StellaOps</Authors>
<Company>StellaOps</Company>
<PackageTags>stellaops;dpop;mtls;oauth2;security</PackageTags>
<PackageLicenseExpression>AGPL-3.0-or-later</PackageLicenseExpression>
<PackageLicenseExpression>BUSL-1.1</PackageLicenseExpression>
<PackageProjectUrl>https://stella-ops.org</PackageProjectUrl>
<RepositoryUrl>https://git.stella-ops.org/stella-ops.org/git.stella-ops.org</RepositoryUrl>
<RepositoryType>git</RepositoryType>

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_028_LIB_scoring_manifest_jcs_integration
// Task: TASK-028-003 - ICanonicalizable interface

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0002 - eIDAS Crypto Plugin Tests
using Microsoft.Extensions.DependencyInjection;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0002 - eIDAS Crypto Plugin
using StellaOps.Cryptography.Plugin.EIDAS.Models;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0002 - eIDAS Crypto Plugin
using Microsoft.Extensions.Configuration;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0002 - eIDAS Crypto Plugin
using Microsoft.Extensions.Logging;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0002 - eIDAS Crypto Plugin
using Microsoft.Extensions.Logging;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0002 - eIDAS Crypto Plugin
namespace StellaOps.Cryptography.Plugin.EIDAS.Models;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0002 - eIDAS Crypto Plugin
using Microsoft.Extensions.Logging;

View File

@@ -240,4 +240,4 @@ Benchmark results should match direct `System.Security.Cryptography` usage withi
## License
AGPL-3.0-or-later - See LICENSE file in repository root.
BUSL-1.1 - See LICENSE file in repository root.

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0003 - SM Crypto CLI Integration
using Microsoft.Extensions.Configuration;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0003 - SM Crypto CLI Integration
using Microsoft.Extensions.Configuration;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0003 - SM Crypto CLI Integration - OSCCA Compliance Tests
using System;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0003 - SM Crypto CLI Integration
using Microsoft.Extensions.Configuration;

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_030_LIB_verdict_rekor_gate_api
// Task: TASK-030-005 - Gate Decision Logic

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_030_LIB_verdict_rekor_gate_api
// Task: TASK-030-005 - Gate Decision Logic (interface for TASK-030-002)

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_030_LIB_verdict_rekor_gate_api
// Task: TASK-030-002 - Implement VerdictBundleBuilder

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_030_LIB_verdict_rekor_gate_api
// Task: TASK-030-001 - Create VerdictBundle Model

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_030_LIB_verdict_rekor_gate_api
// Task: TASK-030-002 - Implement VerdictBundleBuilder

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_030_LIB_verdict_rekor_gate_api
// Task: TASK-030-004 - Verdict Rekor Anchoring

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_030_LIB_verdict_rekor_gate_api
// Task: TASK-030-003 - Verdict DSSE Signing

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_028_LIB_scoring_manifest_jcs_integration
// Task: TASK-028-001 - Create ScoringManifest Model

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_028_LIB_scoring_manifest_jcs_integration
// Task: TASK-028-006 - Manifest Version Bump Workflow

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_028_LIB_scoring_manifest_jcs_integration
// Task: TASK-028-005 - Scoring Manifest Rekor Anchoring

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2026 StellaOps
// Sprint: SPRINT_20260118_028_LIB_scoring_manifest_jcs_integration
// Task: TASK-028-004 - Scoring Manifest DSSE Signing

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using System.ComponentModel.DataAnnotations;
using StellaOps.Eventing.Models;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using StellaOps.Eventing.Models;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using System.Security.Cryptography;
using System.Text;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using System.ComponentModel.DataAnnotations;
using System.Reflection;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using System.Data;
using Microsoft.Extensions.Hosting;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using StellaOps.Eventing.Models;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using StellaOps.Eventing.Models;
using StellaOps.HybridLogicalClock;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using System.Collections.Concurrent;
using StellaOps.Eventing.Models;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using System.Data;
using System.Globalization;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using System.Diagnostics;
using System.Diagnostics.Metrics;

View File

@@ -1,4 +1,4 @@
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
using System.Diagnostics;
using System.Text.Json;

View File

@@ -1,5 +1,5 @@
// <copyright file="BinaryDiffEvidence.cs" company="StellaOps">
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_20260112_008_LB_binary_diff_evidence_models (BINDIFF-LB-001)
// </copyright>

View File

@@ -1,5 +1,5 @@
// <copyright file="ExceptionApplicationAdapterTests.cs" company="StellaOps">
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="ProofSegmentAdapterTests.cs" company="StellaOps">
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="VexObservationAdapterTests.cs" company="StellaOps">
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="ExceptionApplicationAdapter.cs" company="StellaOps">
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="VexObservationAdapter.cs" company="StellaOps">
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-License-Identifier: BUSL-1.1
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="EvidenceCardService.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// Sprint: SPRINT_20260112_004_LB_evidence_card_core (EVPCARD-LB-002)
// Description: Service implementation for evidence card operations.
// </copyright>

View File

@@ -1,5 +1,5 @@
// <copyright file="EvidencePackService.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="EvidenceResolver.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="IEvidenceCardService.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// Sprint: SPRINT_20260112_004_LB_evidence_card_core (EVPCARD-LB-002)
// Description: Service interface for evidence card operations.
// </copyright>

View File

@@ -1,5 +1,5 @@
// <copyright file="IEvidencePackService.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using StellaOps.Evidence.Pack.Models;

View File

@@ -1,5 +1,5 @@
// <copyright file="IEvidencePackSigner.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using StellaOps.Evidence.Pack.Models;

View File

@@ -1,5 +1,5 @@
// <copyright file="IEvidencePackStore.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using StellaOps.Evidence.Pack.Models;

View File

@@ -1,5 +1,5 @@
// <copyright file="IEvidenceResolver.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using StellaOps.Evidence.Pack.Models;

View File

@@ -1,5 +1,5 @@
// <copyright file="EvidenceCard.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// Sprint: SPRINT_20260112_004_LB_evidence_card_core (EVPCARD-LB-001)
// Description: Evidence card model for single-file evidence export with Rekor receipt support.
// </copyright>

View File

@@ -1,5 +1,5 @@
// <copyright file="EvidencePack.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="SignedEvidencePack.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="NullTypeResolver.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="ServiceCollectionExtensions.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using Microsoft.Extensions.DependencyInjection;

View File

@@ -1,5 +1,5 @@
// <copyright file="InMemoryEvidencePackStore.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under the AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under the BUSL-1.1.
// </copyright>
using System.Collections.Concurrent;

View File

@@ -1,4 +1,4 @@
// Licensed to StellaOps under the AGPL-3.0-or-later license.
// Licensed to StellaOps under the BUSL-1.1 license.
using System.Collections.Immutable;

View File

@@ -1,4 +1,4 @@
// Licensed to StellaOps under the AGPL-3.0-or-later license.
// Licensed to StellaOps under the BUSL-1.1 license.
using System.Text.Json.Serialization;

View File

@@ -1,4 +1,4 @@
// Licensed to StellaOps under the AGPL-3.0-or-later license.
// Licensed to StellaOps under the BUSL-1.1 license.
namespace StellaOps.Evidence.Models;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetDriftDetectorTests.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetDriftVexEmitterTests.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
// Sprint: SPRINT_20260105_002_003_FACET (QTA-020)

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetMerkleTreeTests.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetQuotaVexWorkflowE2ETests.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
// Sprint: SPRINT_20260105_002_003_FACET (QTA-024)
// Description: E2E test: Quota breach -> VEX draft -> approval workflow

View File

@@ -1,5 +1,5 @@
// <copyright file="GlobFacetExtractorTests.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="BuiltInFacets.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
namespace StellaOps.Facet;

View File

@@ -1,5 +1,5 @@
// <copyright file="DefaultCryptoHash.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using System.Security.Cryptography;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetCategory.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
namespace StellaOps.Facet;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetClassifier.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
namespace StellaOps.Facet;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetDefinition.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
namespace StellaOps.Facet;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetDrift.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetDriftDetector.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetDriftVexEmitter.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
// Sprint: SPRINT_20260105_002_003_FACET (QTA-016)

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetDriftVexServiceCollectionExtensions.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
// Sprint: SPRINT_20260105_002_003_FACET (QTA-019)

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetDriftVexWorkflow.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
// Sprint: SPRINT_20260105_002_003_FACET (QTA-019)

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetEntry.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetExtractionOptions.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetExtractionResult.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
using System.Collections.Immutable;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetFileEntry.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
namespace StellaOps.Facet;

View File

@@ -1,5 +1,5 @@
// <copyright file="FacetFileModification.cs" company="StellaOps">
// Copyright (c) StellaOps. Licensed under AGPL-3.0-or-later.
// Copyright (c) StellaOps. Licensed under BUSL-1.1.
// </copyright>
namespace StellaOps.Facet;

Some files were not shown because too many files have changed in this diff Show More