Repository navigation
fix: preserve failed flag identity and successful local fallback - #383
Conversation
posthog-dotnet Compliance ReportDate: 2026-11-12T10:30:33.547915+00:00 ✅ All Tests Passed!47/47 tests passed Capture Tests✅ 30/30 tests passed View Details
Feature_Flags Tests✅ 17/17 tests passed View Details
|
SDK performance: posthog-dotnet9 changes worth reviewing: 9 observed regressions. Flags require at least a 5% change in the median and all six pairs agreeing on direction. This is a noise filter, not proof of a performance change or a CI gate.
View all results
Values are medians of paired measurements. Not flagged does not mean unchanged. Unavailable means a measurement could not be provided, not zero. Estimated allocation measurements retain their instrumentation uncertainty. RSS measures the whole process, not just SDK allocations; observed peaks are sampled checkpoints. Paired ranges in the diagnostics describe variability, not confidence intervals. Compared 108 metric rows; 108 rows shown in all results. Omitted or shortened data remain in |
PR overviewNo security issues were found in this pull request. Reviews
|
💡 Motivation and Context
A detailed flag record marked
failed: trueis not a disabled flag. Direct reads currently manufacture a disabled result and reportflag_missing. Bulk remote fallback can also discard successful local values and their payloads for failed remote keys.This implements the affected behavior from PostHog/sdk-specs#211. Failed direct reads now return null and report
evaluation_failed, while preserving response-wide diagnostics and the existing false event-response sentinel. Bulk fallback preserves successful same-context local true, false, and variant values with their payloads only for failed remote keys. Healthy remote precedence and healthy false results are unchanged. No new public API or snapshot inclusion policy is introduced.Includes an existing Changesets patch intent for
PostHogonly.💚 How did you test it?
DOTNET_ROLL_FORWARD=Major dotnet test tests/UnitTests/UnitTests.csproj -f net8.0 --no-restore --nologo: 1,735 passed, 2 existing skips.dotnet format whitespaceanddotnet format stylechecks passed. Both reported workspace-loading warnings.git diff --checkpassed.Tests used .NET 9 major runtime roll-forward. Native .NET 8, netcoreapp3.1, the complete Release solution/integration matrix, and shared-harness conformance were not run.
📝 Checklist
If releasing new changes
pnpm changesetto generate a changeset fileThe patch changeset is already included. The generator was not rerun during publication.
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Pi agents used local shell, Git, .NET tooling, and GitHub CLI to implement, validate, independently review, and publish this scoped fix. The committed branch also passed the autoreview helper using its configured Claude Code model. No externally accessible agent session link is available.
The fix keeps existing event controls and missing-response rendering rather than adding an API. Human review is required before merge.