Test Failure Triage - 2026-05-23

Scope

Run 3000 Refresh

Run 3006 Refresh

Run 3031 Refresh

Run 3127 Refresh

Run 3132 Refresh

Runs 3136, 3137, and 3142 Refresh

Run 3146 / 3152 Refresh

Run 3153 Refresh

Run 3166 Refresh

Run 3173 Refresh

Run 3179 Refresh

Run 3167 Refresh

Run 3196 Refresh

Run 3209 Refresh

Run 3213 Refresh

Run 3217 Refresh

Run 3218 Refresh

Run 3222 Refresh

Run 3226 Refresh

Run 3227 Refresh

Run 3239 Refresh

Grouped Findings

GroupSuitesClassificationProduction-quality direction
Frontend browser-test harness drift, CI termination, mixed command contract, and AOC BufferSource bugweb-stellaops-webStale Node/browser harness was fixed; run 3031 then exposed a real browser/runtime product bug in DSSE verification payload normalizationKeep the Node evidence guard in its Node/Vitest lane. Normalize all AOC WebCrypto inputs structurally and pass fresh ArrayBuffer instances to verify/digest. After the fix is pushed, re-run the manual large shard to prove Web passes. Longer term, split Web unit/browser/E2E manifest rows so manual-live E2E is not conflated with Angular unit batches.
DashboardV3 self-fetching lens provider driftweb-stellaops-web in scheduled run 3153Stale Web unit-test harness; local CI-shaped repro and fix complete, pushed CI proof pendingDashboard tests that render DashboardV3Component must stub the full self-fetching lens API graph (RELEASE_DASHBOARD_API, RELEASE_ENVIRONMENT_API, SECURITY_FINDINGS_API, ASSURANCE_PACKS_API, RELEASE_EVIDENCE_API, VEX_DECISIONS_API, SECURITY_OVERVIEW_API, RISK_API, and active tenant session) so link/scope assertions test navigation behavior instead of failing on DI setup drift.
AirGapFederation case-sensitive NuGet config pathtests-stellaops-airgapfederation-integrationtests-stellaops-airgapfederation-integrationtests in scheduled run 3153; push run 3162Closed as top-level .NET test project restore-path bug; pushed CI executed-pass proof completeKeep restore config paths derived from the checkout root and exact NuGet.config casing. Use dotnet msbuild -getProperty:RestoreConfigFile as a focused guard for top-level test projects that import root props.
Root docs npm command mappingroot-stellaops-docs in scheduled run 3153; manual medium run 3166Closed as stale manifest runner contract; CI now blocks before npmDo not add fake root npm test scripts. Either define a real root test command or have manifest execution block npm package rows that lack their expected script before npm starts, with a dashboard reason that names the missing script and package path.
Graph API fixture migration gapgraph-stellaops-graph-api-tests in manual medium run 3166; run 3173Closed as Graph API test harness bug; pushed CI executed-pass proof completeGraph API integration fixtures must use canonical schema graph and pre-run Graph Indexer persistence migrations before seed helpers insert into graph.graph_nodes; dashboard logs must append referenced MTP failure logs cleanly so the exact failing test is visible.
SmRemote ephemeral-key rotation test isolationsmremote-stellaops-smremote-service-tests in manual medium run 3173; run 3179Closed as stale/flaky test isolation; pushed CI executed-pass proof completeTTL/rotation tests must use injected deterministic time instead of Task.Delay, and tests that use process-static ephemeral audit/registry state must reset it before assertions.
Manual live/operator environment missingtests-playwright-operator-trust-playwrightCorrectly manual-live; CI environment/seed blockerAdd an explicit live-stack preflight, health/auth diagnostics, and controlled seed requirements before this suite can be treated as passed or blocking.
.NET runner build/resource strategysignals-stellaops-signals-tests after run 3006; Docker/Testcontainers suites remain runner-contract blocked before build/testCI tooling/runner strategy until full per-suite logs prove otherwisePrebuild once per shard, run per-suite dotnet test --no-build --no-restore, and force low MSBuild/Roslyn parallelism (/m:1, BuildInParallel=false, UseSharedCompilation=false, node reuse off) or raise runner memory.
.NET 10 package compatibility warnings promoted to failuresRun 3000: cli-stellaops-cli-tests, policy-stellaops-policy-tests; run 3006: signals-stellaops-signals-tests via MSBuild package-resource pathClosed as a CI execution blocker by run 3031; dependency hygiene remainsPrefer central package upgrades compatible with SDK 10.0.300; until then keep NETSDK1188 visible but non-fatal so suites can execute and expose real assertions.
.NET invariant globalization disables Unicode NFC normalizationRun 3098: tests-stellaops-testing-determinism-properties medium shardRunner/workflow configuration issue with production hardening implicationDo not weaken Unicode determinism tests. Stop setting DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1, require full globalization/ICU for suites tagged dotnet-full-globalization, and block with an explicit runner prerequisite if invariant globalization is reintroduced.
Registry compatibility suite ran without DockerRun 3127: failed as dynamic-skip fixture output; run 3132: tests-stellaops-infrastructure-registry-testing-tests blocks before execution on small shard 1/8Closed as runner-contract / manifest infra misclassification; Docker-capable pass evidence still requiredKeep Docker/Testcontainers/registry prerequisites in the canonical manifest source so Dockerless runners block before dotnet test. Add a Docker-capable runner before treating this suite as product pass/fail evidence.
Replayable verdict golden mismatchRun 3127: tests-stellaops-e2e-replayableverdict failed on small shard 1/8; run 3132: row no longer appears in failure detailsClosed as stale golden fixture dataKeep the updated bundle manifest and pinned verdict output at the deterministic current CGS hash, plus the guard that the output verdict file’s cgsHash matches manifest expectedOutputs.verdictHash.
Doctor storage suite restore failureRun 3137: tests-doctor-stellaops-doctor-plugin-storage-tests failed before execution looking for /workspace/stella-ops.org/NuGet.config; run 3142: small shard 3/8 passed with 49/49 executedClosed as stale test placement plus repo-root build property bugKeep Doctor plugin storage tests under src/Doctor/__Tests and retain dotnet msbuild -getProperty:RestoreConfigFile as a focused guard when moving top-level test projects into module roots.
Authority tenant-header conformance failureRun 3146: authority-stellaops-auth-serverintegration-tests failed on new X-Tenant-Id literals in Findings fixtures plus SbomService/Scanner worker product paths; run 3152: same suite passed 43/43Closed as mixed stale fixture cleanup plus product tenant-resolution bugsKeep the conformance test strict. Use canonical X-StellaOps-TenantId/claim-backed fixtures where possible; product forwarding must resolve tenant from IStellaOpsTenantAccessor or canonical scan metadata, never from legacy header-shaped keys.
Telemetry duplicate top-level projectRun 3146: tests-telemetry-stellaops-telemetry-core-tests failed restore because stale top-level project had unversioned packages; run 3152: stale failure row disappeared after consolidationClosed as stale duplicate test placementKeep Telemetry tests under src/Telemetry/StellaOps.Telemetry.Core/StellaOps.Telemetry.Core.Tests; do not retain top-level duplicate projects that bypass central package/version conventions.
Scanner worker worktree-root helperLocal full Scanner worker project run exposed SurfaceManifestStageExecutorTests.ResolveRepositoryRoot() failing when .git is a worktree fileStale test helper found during adjacent validationRepository-root helpers should accept .git files and/or global.json plus src so CI worktrees and local worktrees behave the same.
Notify e2e static host-port collisionRun 3167: scheduled e2e-notify-coverage.yml full-run failed before harness execution because Mailpit could not bind host 0.0.0.0:1025Runner/environment collision from globally pinned compose resourcesKeep local defaults for developer use, but make CI use per-run compose project names and dynamic host ports. Pass the selected Mailpit SMTP port into both the direct Mailpit transport and Email connector-backed delivery path.
Workflow Renderer explicit slow-lane overrunRun 3196: scheduled workflow-renderer.yml fast lane passed, explicit lane stayed active after DocumentProcessingWorkflowRenderBenchmark measured run 1/3CI lane contract/runtime budgeting issueRun explicit NUnit tests in Release and keep the NUnit benchmark to one smoke sample; rely on tools/elk-stress for repeated benchmark iterations.
Apple connector fixture-case driftRun 3213: concelier-stellaops-concelier-connector-vndr-apple-tests failed 3/13 on Linux CI; run 3217: same row passed 13/13 in bounded small shard 6/8Closed as stale Linux-only test fixture casingKeep fixture filename references exact-case. Windows local validation is not enough for filename casing; Linux CI shard proof is required before closing future fixture-case failures.
Findings Ledger VEX integration fixture/wire driftRun 3227: findings-stellaops-findings-ledger-tests failed 7/221; run 3235: same row passed 221/221Closed as stale tests plus test-fixture wiring bugVEX endpoint integration tests that share FindingsLedgerPostgresFixture must construct the web factory with that fixture’s connection string. Assertions should match the Console wire contract (SCREAMING_SNAKE_CASE) and the current production split where VEX decisions are stateful while unsupported fix-verification write paths remain truthful.
Concelier WebService full-suite stale fixture and failure-detail gapRun 3227: concelier-stellaops-concelier-webservice-tests failed 1/329; run 3235: same row passed 329/329Closed as stale test fixture/service isolation bug; dashboard parser hardening mergedEndpoint contract tests must replace optional enrichment services that are outside the test scope, especially database-backed services. CI dashboards must parse TRX failed-test details so outsiders see the actual failed test, message, and stack instead of a misleading output-tail hint.
Cryptography BCL call-site conformance regressionRun 3239: cryptography-stellaops-cryptography-tests failed 3/279 in RNG/HMAC/AEAD call-site conformance; local fix complete, pushed CI proof pendingReal downstream production-quality regression plus conformance-test performance gapDo not grow allow-lists for new production code. EvidenceLocker backup encryption must route through ICryptoRandom, IAeadAlgorithm, and IHmacAlgorithm; tests should use deterministic fixture keys. Repo-wide conformance scans should use tracked-file grep preselection and native xUnit runner targeting when MTP ignores dotnet test --filter.
Benchmark suites executed as testsbinaryindex-stellaops-binaryindex-benchmarksBad manifest command mapping / stale suite contractDo not run BenchmarkDotNet projects via dotnet test. Add a CI smoke/unit project or run benchmarks through dotnet run -c Release only in weekly/manual benchmark lanes with explicit budgets.
Docker/Testcontainers integration requirements9 Docker/Testcontainers suites listed below, including Concelier, Router, Scanner, Timeline, chaos, and parity rowsCI environment and manifest lane placementAdd runner labels/preflight for Docker/Testcontainers/Postgres and keep these in weekly/manual integration lanes until the runner contract is proven.
Scanner WebApplicationFactory/content-root failurescanner-stellaops-scanner-webservice-testsRun 2938 suggested a config/content-root issue; run 3000 showed the row also has hidden Docker/Testcontainers/Postgres prerequisitesDeclare the hidden infra so Dockerless runners block before execution, then re-run on a Docker-capable runner before deciding whether any WebApplicationFactory fixture issue remains.
Scanner reachability unclear previewscanner-stellaops-scanner-reachability-testsClosed by run 3006; the suite passed in pushed CINo follow-up for this sprint unless a future run regresses.

Suite Details

web-stellaops-web

tests-playwright-operator-trust-playwright

.NET runner build/resource strategy

.NET 10 NETSDK1188 failures

.NET full globalization / Unicode NFC

CLI stale tests found during adjacent validation

binaryindex-stellaops-binaryindex-benchmarks

Docker/Testcontainers suites

scanner-stellaops-scanner-webservice-tests

scanner-stellaops-scanner-reachability-tests

CI Follow-up Matrix

LaneRequired conditionCurrent state
Per commit / PRTargeted suites only; no broad rerun for docs/demo-only changesImplemented by manifest planning; run 3030 proved a Web source change selected only web-stellaops-web and skipped execution by policy instead of triggering a full rerun.
Merge to mainTargeted main plan with dashboard warning when zero suites executeProven for zero-suite and policy-skipped push runs; keep observing new pushes after fixes.
NightlyExecute non-live medium/small/large suites that are nightly candidates and publish dashboardNot yet proven green.
Weekly / extendedBenchmarks, Docker/Testcontainers, and slow integration suitesBenchmark and Docker/Testcontainers runner-contract blockers are now explicit in run 3006; pass evidence still requires the correct benchmark/Docker-capable runner.
Manual liveOperator Playwright and production-like live E2E with SCM/repository seedsBlocked until controlled live stack, credentials, browser, and seed preflight are present.

Immediate Fix Backlog