{
  "verifiedDate": "2026-09-22",
  "sourceCommit": "9ddb8ec659bd63fa3b7b9fb65a05bad205471790",
  "provenance": {
    "deployments": "Read-only kubectl deployment inspection, 2026-09-22; statistics environment keys only. No secrets or complete deployment manifests retained.",
    "runtimeFlags": "GET https://staging.syrf.org.uk/api/runtime-feature-flags",
    "github": "gh pr view / GitHub GraphQL issue inspection, 2026-09-22. Snapshot, not an automatically updated feed.",
    "parity": "User-supplied audit response; not independently rerun during this documentation audit."
  },
  "staging": [
    {
      "name": "syrf-api",
      "readyReplicas": 1,
      "containers": [
        {
          "name": "syrf-api",
          "image": "ghcr.io/camaradesuk/syrf-api:9.117.0-sha.9ddb8ec",
          "statisticsEnvironment": {
            "SYRF__FeatureFlags__MaterializedProjectStatisticsWrites": "true",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsServing": "true",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsScreening": "true",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsMembershipScreening": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsAnnotation": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsMembershipAnnotation": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsQuestionAnswers": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsSearchPopulation": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsDerivedSummaries": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsProjectOverview": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsStageOverview": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsPages": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsSignalR": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsExports": "false",
            "SYRF__ProjectStatistics__ProjectAllowlist": "00000000-0000-0000-0000-000000000102"
          }
        }
      ]
    },
    {
      "name": "syrf-projectmanagement",
      "readyReplicas": 1,
      "containers": [
        {
          "name": "syrf-projectmanagement",
          "image": "ghcr.io/camaradesuk/syrf-project-management:11.113.0-sha.9ddb8ec",
          "statisticsEnvironment": {
            "SYRF__FeatureFlags__MaterializedProjectStatisticsWrites": "true",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsServing": "true",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsScreening": "true",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsMembershipScreening": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsAnnotation": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsMembershipAnnotation": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsQuestionAnswers": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsSearchPopulation": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsDerivedSummaries": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsProjectOverview": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsStageOverview": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsPages": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsSignalR": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsExports": "false",
            "SYRF__ProjectStatistics__ProjectAllowlist": "00000000-0000-0000-0000-000000000102"
          }
        }
      ]
    },
    {
      "name": "syrf-web",
      "readyReplicas": 2,
      "containers": [
        {
          "name": "syrf-web",
          "image": "ghcr.io/camaradesuk/syrf-web:7.147.4-sha.9ddb8ec",
          "statisticsEnvironment": {
            "SYRF__FeatureFlags__MaterializedProjectStatisticsProjectOverview": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsStageOverview": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsPages": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsSignalR": "false",
            "SYRF__FeatureFlags__MaterializedProjectStatisticsExports": "false"
          }
        }
      ]
    }
  ],
  "production": [
    {
      "name": "syrf-api",
      "readyReplicas": 1,
      "containers": [
        {
          "name": "syrf-api",
          "image": "ghcr.io/camaradesuk/syrf-api:9.44.1-restore.104eca9",
          "statisticsEnvironment": {}
        }
      ]
    },
    {
      "name": "syrf-projectmanagement",
      "readyReplicas": 1,
      "containers": [
        {
          "name": "syrf-projectmanagement",
          "image": "ghcr.io/camaradesuk/syrf-project-management:11.43.1-restore.104eca9",
          "statisticsEnvironment": {}
        }
      ]
    },
    {
      "name": "syrf-web",
      "readyReplicas": 3,
      "containers": [
        {
          "name": "syrf-web",
          "image": "ghcr.io/camaradesuk/syrf-web:7.39.0",
          "statisticsEnvironment": {}
        }
      ]
    }
  ],
  "runtimeFlags": {
    "revision": 69,
    "refreshedAtUtc": "2026-09-22T09:49:51.511539Z",
    "values": {
      "materializedProjectStatisticsWrites": true,
      "materializedProjectStatisticsServing": true,
      "materializedProjectStatisticsScreening": true,
      "materializedProjectStatisticsMembershipScreening": false,
      "materializedProjectStatisticsAnnotation": false,
      "materializedProjectStatisticsMembershipAnnotation": false,
      "materializedProjectStatisticsQuestionAnswers": false,
      "materializedProjectStatisticsSearchPopulation": false,
      "materializedProjectStatisticsDerivedSummaries": false,
      "materializedProjectStatisticsProjectOverview": true,
      "materializedProjectStatisticsStageOverview": false,
      "materializedProjectStatisticsPages": true,
      "materializedProjectStatisticsSignalR": true,
      "materializedProjectStatisticsExports": true
    }
  },
  "pullRequests": [
    {
      "mergedAt": null,
      "number": 176,
      "state": "CLOSED",
      "title": "Implement Recent Activities Page from Figma Design",
      "url": "https://github.com/camaradesuk/syrf/pull/176"
    },
    {
      "mergedAt": null,
      "number": 901,
      "state": "CLOSED",
      "title": "Change stage overview page design",
      "url": "https://github.com/camaradesuk/syrf/pull/901"
    },
    {
      "mergedAt": "2026-09-15T11:01:41Z",
      "number": 2271,
      "state": "MERGED",
      "title": "feat(projects): add auditable membership disable and re-enable",
      "url": "https://github.com/camaradesuk/syrf/pull/2271"
    },
    {
      "mergedAt": null,
      "number": 2298,
      "state": "CLOSED",
      "title": "Feat/bulk pdf upload",
      "url": "https://github.com/camaradesuk/syrf/pull/2298"
    },
    {
      "mergedAt": null,
      "number": 2373,
      "state": "CLOSED",
      "title": "Bulk PDF upload Frontend to S3 with Lambda",
      "url": "https://github.com/camaradesuk/syrf/pull/2373"
    },
    {
      "mergedAt": null,
      "number": 2469,
      "state": "OPEN",
      "title": "refactor(web): extract and reorganize stage overview chart code",
      "url": "https://github.com/camaradesuk/syrf/pull/2469"
    },
    {
      "mergedAt": null,
      "number": 2534,
      "state": "CLOSED",
      "title": "feat: precomputed project stats, realtime updates, and stage overview kappa/history",
      "url": "https://github.com/camaradesuk/syrf/pull/2534"
    },
    {
      "mergedAt": null,
      "number": 2985,
      "state": "CLOSED",
      "title": "feat(stats): materialize project screening statistics",
      "url": "https://github.com/camaradesuk/syrf/pull/2985"
    },
    {
      "mergedAt": "2026-08-31T20:36:43Z",
      "number": 3016,
      "state": "MERGED",
      "title": "docs(stats): plan full materialized project statistics programme",
      "url": "https://github.com/camaradesuk/syrf/pull/3016"
    },
    {
      "mergedAt": "2026-09-02T01:04:13Z",
      "number": 3028,
      "state": "MERGED",
      "title": "docs(stats): reconcile recovered materialization design",
      "url": "https://github.com/camaradesuk/syrf/pull/3028"
    },
    {
      "mergedAt": null,
      "number": 3048,
      "state": "CLOSED",
      "title": "feat(pm): allow administrators to deactivate and reactivate project members",
      "url": "https://github.com/camaradesuk/syrf/pull/3048"
    },
    {
      "mergedAt": "2026-09-02T04:27:21Z",
      "number": 3070,
      "state": "MERGED",
      "title": "docs(stats): add FEAT-024 Phase 0 catalogue, mutation ownership matrix and benchmark baseline",
      "url": "https://github.com/camaradesuk/syrf/pull/3070"
    },
    {
      "mergedAt": "2026-09-02T05:12:15Z",
      "number": 3076,
      "state": "MERGED",
      "title": "test(stats): add FEAT-024 Phase 0 benchmark harness and recorded baseline",
      "url": "https://github.com/camaradesuk/syrf/pull/3076"
    },
    {
      "mergedAt": "2026-09-02T06:17:28Z",
      "number": 3102,
      "state": "MERGED",
      "title": "feat(stats): add materialized project-statistics contracts and additive schema (Phase 1 wave 1A)",
      "url": "https://github.com/camaradesuk/syrf/pull/3102"
    },
    {
      "mergedAt": "2026-09-02T09:25:20Z",
      "number": 3103,
      "state": "MERGED",
      "title": "feat(stats): declare materialized project-statistics flags and telemetry names (Phase 1 wave 1C)",
      "url": "https://github.com/camaradesuk/syrf/pull/3103"
    },
    {
      "mergedAt": "2026-09-02T11:31:42Z",
      "number": 3117,
      "state": "MERGED",
      "title": "feat(stats): rebuild leases, backfill, compaction, reclamation and checkpoint builds (Phase 1 wave 1D part 1)",
      "url": "https://github.com/camaradesuk/syrf/pull/3117"
    },
    {
      "mergedAt": "2026-09-02T14:12:53Z",
      "number": 3149,
      "state": "MERGED",
      "title": "feat(stats): project screening family \u2014 classification, calculator, owner integration and parity fixtures (Phase 2)",
      "url": "https://github.com/camaradesuk/syrf/pull/3149"
    },
    {
      "mergedAt": "2026-09-02T17:16:34Z",
      "number": 3159,
      "state": "MERGED",
      "title": "feat(stats): cover every screening mutation owner and the threshold/import/bulk fences (Phase 2 wave 2B)",
      "url": "https://github.com/camaradesuk/syrf/pull/3159"
    },
    {
      "mergedAt": "2026-09-02T17:37:55Z",
      "number": 3166,
      "state": "MERGED",
      "title": "feat(stats): annotation, question and reconciliation families \u2014 keys, classifiers, calculators, owner integration and parity (Phase 3)",
      "url": "https://github.com/camaradesuk/syrf/pull/3166"
    },
    {
      "mergedAt": "2026-09-05T04:11:28Z",
      "number": 3178,
      "state": "MERGED",
      "title": "feat(stats): fence question rewrites and materialize answer tallies",
      "url": "https://github.com/camaradesuk/syrf/pull/3178"
    },
    {
      "mergedAt": "2026-09-02T17:09:19Z",
      "number": 3191,
      "state": "MERGED",
      "title": "refactor(pm): rename Lifecycle IProjectStatisticsAuthoritativeCalculator to IProjectStatisticsScopeCalculator (#3186)",
      "url": "https://github.com/camaradesuk/syrf/pull/3191"
    },
    {
      "mergedAt": "2026-09-07T19:18:34Z",
      "number": 3195,
      "state": "MERGED",
      "title": "feat(stats): rebuild screening projections and record bootstrap history",
      "url": "https://github.com/camaradesuk/syrf/pull/3195"
    },
    {
      "mergedAt": "2026-09-07T20:16:35Z",
      "number": 3196,
      "state": "MERGED",
      "title": "feat(stats): add coherent screening reads and guarded parity audit",
      "url": "https://github.com/camaradesuk/syrf/pull/3196"
    },
    {
      "mergedAt": "2026-09-05T02:15:24Z",
      "number": 3211,
      "state": "MERGED",
      "title": "fix(api): enforce proportional allocation on direct annotation",
      "url": "https://github.com/camaradesuk/syrf/pull/3211"
    },
    {
      "mergedAt": "2026-09-15T00:35:11Z",
      "number": 3216,
      "state": "MERGED",
      "title": "fix(deps): align shared Mongo packages with patched driver",
      "url": "https://github.com/camaradesuk/syrf/pull/3216"
    },
    {
      "mergedAt": "2026-09-09T13:56:41Z",
      "number": 3224,
      "state": "MERGED",
      "title": "feat(annotation): persist entity order in reviewer sessions",
      "url": "https://github.com/camaradesuk/syrf/pull/3224"
    },
    {
      "mergedAt": "2026-09-05T03:53:52Z",
      "number": 3226,
      "state": "MERGED",
      "title": "fix(stats): deduplicate equivalent operations across receipt timestamps",
      "url": "https://github.com/camaradesuk/syrf/pull/3226"
    },
    {
      "mergedAt": "2026-09-07T04:00:17Z",
      "number": 3231,
      "state": "MERGED",
      "title": "fix(stats): share configuration identity across metric families",
      "url": "https://github.com/camaradesuk/syrf/pull/3231"
    },
    {
      "mergedAt": "2026-09-07T20:41:46Z",
      "number": 3232,
      "state": "MERGED",
      "title": "fix(stats): bind capacity writes to durable-mode transactions",
      "url": "https://github.com/camaradesuk/syrf/pull/3232"
    },
    {
      "mergedAt": "2026-09-05T13:55:20Z",
      "number": 3234,
      "state": "MERGED",
      "title": "fix(stats): defer definition events and bind current question selectors",
      "url": "https://github.com/camaradesuk/syrf/pull/3234"
    },
    {
      "mergedAt": "2026-09-08T02:19:44Z",
      "number": 3239,
      "state": "MERGED",
      "title": "feat(stats): add rebuildable reviewer screening families",
      "url": "https://github.com/camaradesuk/syrf/pull/3239"
    },
    {
      "mergedAt": "2026-09-14T23:16:23Z",
      "number": 3240,
      "state": "MERGED",
      "title": "feat(stats): add imported search population family",
      "url": "https://github.com/camaradesuk/syrf/pull/3240"
    },
    {
      "mergedAt": "2026-09-05T14:03:15Z",
      "number": 3241,
      "state": "MERGED",
      "title": "test(stats): prove source-row export compatibility",
      "url": "https://github.com/camaradesuk/syrf/pull/3241"
    },
    {
      "mergedAt": "2026-09-14T21:50:05Z",
      "number": 3242,
      "state": "MERGED",
      "title": "feat(stats): add default-off screening Project Overview",
      "url": "https://github.com/camaradesuk/syrf/pull/3242"
    },
    {
      "mergedAt": "2026-09-05T14:09:36Z",
      "number": 3243,
      "state": "MERGED",
      "title": "fix(api): enforce project export authorization",
      "url": "https://github.com/camaradesuk/syrf/pull/3243"
    },
    {
      "mergedAt": "2026-09-13T14:12:05Z",
      "number": 3244,
      "state": "MERGED",
      "title": "feat(stats): derive summaries from coherent authorized bundles",
      "url": "https://github.com/camaradesuk/syrf/pull/3244"
    },
    {
      "mergedAt": "2026-09-08T00:56:04Z",
      "number": 3248,
      "state": "MERGED",
      "title": "test(stats): measure real screening materialized and fallback reads",
      "url": "https://github.com/camaradesuk/syrf/pull/3248"
    },
    {
      "mergedAt": null,
      "number": 3253,
      "state": "OPEN",
      "title": "feat(stats): add bounded screening fleet operations",
      "url": "https://github.com/camaradesuk/syrf/pull/3253"
    },
    {
      "mergedAt": "2026-09-14T21:28:12Z",
      "number": 3256,
      "state": "MERGED",
      "title": "feat(stats): derive annotation summaries with retained configuration",
      "url": "https://github.com/camaradesuk/syrf/pull/3256"
    },
    {
      "mergedAt": null,
      "number": 3263,
      "state": "OPEN",
      "title": "feat(stats): prune completed fleet runs with bounded audit",
      "url": "https://github.com/camaradesuk/syrf/pull/3263"
    },
    {
      "mergedAt": null,
      "number": 3296,
      "state": "CLOSED",
      "title": "fix(api): authorize legacy statistics with project view policy [recovered, untriaged]",
      "url": "https://github.com/camaradesuk/syrf/pull/3296"
    },
    {
      "mergedAt": "2026-09-14T21:02:01Z",
      "number": 3297,
      "state": "MERGED",
      "title": "feat(stats): maintain reviewer screening counters transactionally",
      "url": "https://github.com/camaradesuk/syrf/pull/3297"
    },
    {
      "mergedAt": null,
      "number": 3298,
      "state": "CLOSED",
      "title": "fix(stats): preserve public screening graph permissions [recovered, untriaged]",
      "url": "https://github.com/camaradesuk/syrf/pull/3298"
    },
    {
      "mergedAt": "2026-09-14T22:34:52Z",
      "number": 3299,
      "state": "MERGED",
      "title": "test(stats): measure screening write contention and rollout overhead",
      "url": "https://github.com/camaradesuk/syrf/pull/3299"
    },
    {
      "mergedAt": null,
      "number": 3300,
      "state": "CLOSED",
      "title": "fix(stats): return optimistic conflicts from screening transactions [recovered, untriaged]",
      "url": "https://github.com/camaradesuk/syrf/pull/3300"
    },
    {
      "mergedAt": "2026-09-08T00:10:20Z",
      "number": 3301,
      "state": "MERGED",
      "title": "docs: slim root CLAUDE.md to under 200 lines with path-scoped rules",
      "url": "https://github.com/camaradesuk/syrf/pull/3301"
    },
    {
      "mergedAt": "2026-09-07T20:30:44Z",
      "number": 3340,
      "state": "MERGED",
      "title": "fix(api): authorize legacy statistics routes with the project view policy",
      "url": "https://github.com/camaradesuk/syrf/pull/3340"
    },
    {
      "mergedAt": "2026-09-07T19:40:05Z",
      "number": 3341,
      "state": "MERGED",
      "title": "docs(stats): Phase 2C staging-proof runbook and evidence template",
      "url": "https://github.com/camaradesuk/syrf/pull/3341"
    },
    {
      "mergedAt": null,
      "number": 3347,
      "state": "CLOSED",
      "title": "feat(stage-review): Dockview workspace prototype behind stageReviewDockview (steps 0\u20131: build + state survival)",
      "url": "https://github.com/camaradesuk/syrf/pull/3347"
    },
    {
      "mergedAt": "2026-09-07T23:05:39Z",
      "number": 3355,
      "state": "MERGED",
      "title": "docs(stats): record Phase 2, 2C and 3 on main and the staging-proof gates",
      "url": "https://github.com/camaradesuk/syrf/pull/3355"
    },
    {
      "mergedAt": "2026-09-15T01:03:02Z",
      "number": 3371,
      "state": "MERGED",
      "title": "feat(stats): administrative fleet and project mode transitions for the statistics pilot (#3369)",
      "url": "https://github.com/camaradesuk/syrf/pull/3371"
    },
    {
      "mergedAt": "2026-09-09T14:01:06Z",
      "number": 3396,
      "state": "MERGED",
      "title": "feat(stage-review): navigation vs decision rules and reviewer preferences (revision 2 \u00a74\u2013\u00a75)",
      "url": "https://github.com/camaradesuk/syrf/pull/3396"
    },
    {
      "mergedAt": "2026-09-13T15:21:03Z",
      "number": 3457,
      "state": "MERGED",
      "title": "fix(web): prevent project-update normalization crash",
      "url": "https://github.com/camaradesuk/syrf/pull/3457"
    },
    {
      "mergedAt": "2026-09-15T03:10:49Z",
      "number": 3475,
      "state": "MERGED",
      "title": "perf(stats): cut screening write-path round trips without changing the commit contract (#3255)",
      "url": "https://github.com/camaradesuk/syrf/pull/3475"
    },
    {
      "mergedAt": "2026-09-15T07:44:02Z",
      "number": 3479,
      "state": "MERGED",
      "title": "feat(stats): serve the Stage Overview annotation pie from materialised statistics behind a default-off flag",
      "url": "https://github.com/camaradesuk/syrf/pull/3479"
    },
    {
      "mergedAt": "2026-09-15T05:12:09Z",
      "number": 3482,
      "state": "MERGED",
      "title": "feat(stats): register a real Meter and dark-state logging for the statistics pilot (#3343)",
      "url": "https://github.com/camaradesuk/syrf/pull/3482"
    },
    {
      "mergedAt": "2026-09-15T06:38:44Z",
      "number": 3497,
      "state": "MERGED",
      "title": "docs(stats): correct the control-clock advance claim and record the measured contention model (#3255)",
      "url": "https://github.com/camaradesuk/syrf/pull/3497"
    },
    {
      "mergedAt": "2026-09-15T09:10:56Z",
      "number": 3505,
      "state": "MERGED",
      "title": "feat(stats): add stage-annotation backfill and rebuild routes so the Stage Overview pie can be activated",
      "url": "https://github.com/camaradesuk/syrf/pull/3505"
    },
    {
      "mergedAt": "2026-09-15T10:13:03Z",
      "number": 3512,
      "state": "MERGED",
      "title": "fix(pm): let FEAT-024 value-object class maps ignore extra elements for rolling deploys (#3145)",
      "url": "https://github.com/camaradesuk/syrf/pull/3512"
    },
    {
      "mergedAt": null,
      "number": 3514,
      "state": "OPEN",
      "title": "fix(stats): anonymise the screening leaderboard unless the decisions permission allows names (#3083)",
      "url": "https://github.com/camaradesuk/syrf/pull/3514"
    },
    {
      "mergedAt": "2026-09-15T12:05:32Z",
      "number": 3515,
      "state": "MERGED",
      "title": "feat(logging): add a JSON console log format switch for the API and project-management hosts (#3343)",
      "url": "https://github.com/camaradesuk/syrf/pull/3515"
    },
    {
      "mergedAt": "2026-09-16T00:15:50Z",
      "number": 3523,
      "state": "MERGED",
      "title": "feat(stats): operate the screening pilot from the admin console",
      "url": "https://github.com/camaradesuk/syrf/pull/3523"
    },
    {
      "mergedAt": null,
      "number": 3527,
      "state": "OPEN",
      "title": "docs(flags): plan unified runtime feature flag architecture",
      "url": "https://github.com/camaradesuk/syrf/pull/3527"
    },
    {
      "mergedAt": "2026-09-16T01:12:37Z",
      "number": 3528,
      "state": "MERGED",
      "title": "fix(ci): align release unit test timeout with PR checks",
      "url": "https://github.com/camaradesuk/syrf/pull/3528"
    },
    {
      "mergedAt": "2026-09-20T22:35:57Z",
      "number": 3531,
      "state": "MERGED",
      "title": "fix(stats): explain disabled pilot activation and clear stale parity",
      "url": "https://github.com/camaradesuk/syrf/pull/3531"
    },
    {
      "mergedAt": "2026-09-21T02:41:58Z",
      "number": 3534,
      "state": "MERGED",
      "title": "feat(stats): deliver screening invalidations through SignalR",
      "url": "https://github.com/camaradesuk/syrf/pull/3534"
    },
    {
      "mergedAt": "2026-09-21T16:41:04Z",
      "number": 3547,
      "state": "MERGED",
      "title": "fix(web): refresh stage progress across active sessions",
      "url": "https://github.com/camaradesuk/syrf/pull/3547"
    },
    {
      "mergedAt": "2026-09-21T18:55:30Z",
      "number": 3551,
      "state": "MERGED",
      "title": "fix(review): refresh stage overview and respect screening sufficiency",
      "url": "https://github.com/camaradesuk/syrf/pull/3551"
    },
    {
      "mergedAt": null,
      "number": 3552,
      "state": "OPEN",
      "title": "docs(review): propose compatible screening and annotation eligibility policy",
      "url": "https://github.com/camaradesuk/syrf/pull/3552"
    },
    {
      "mergedAt": null,
      "number": 3553,
      "state": "OPEN",
      "title": "feat(admin): simplify feature flags and add atomic group controls",
      "url": "https://github.com/camaradesuk/syrf/pull/3553"
    }
  ],
  "issues": [
    {
      "number": 1831,
      "title": "MongoDB Stats Pre-calculation and Historical Tracking",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1831"
    },
    {
      "number": 1832,
      "title": "MongoDB Milestone 1: MVP - Project Screening Stats Performance & Real-time Update",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1832"
    },
    {
      "number": 1833,
      "title": "MongoDB Milestone 2: Member & Stage-Specific Annotation Stats Pre-calculation",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1833"
    },
    {
      "number": 1834,
      "title": "MongoDB Milestone 3: Basic Historical View (Stage Aware)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1834"
    },
    {
      "number": 1835,
      "title": "MongoDB Milestone 4: Full Vision - Scalability & Rich History",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1835"
    },
    {
      "number": 1836,
      "title": "Project Screening - 1. Data Model Changes (Option A - Embedded)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1836"
    },
    {
      "number": 1837,
      "title": "Project Screening - 2. Incremental Update Logic",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1837"
    },
    {
      "number": 1838,
      "title": "Project Screening - 3. Client-Side Integration & Removal of Old Stats Retrieval",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1838"
    },
    {
      "number": 1839,
      "title": "Project Screening - 4. Basic Reconciliation Job (using MassTransit):",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1839"
    },
    {
      "number": 1840,
      "title": "Member Screening + (Global+Member) Stage Annotation - 1. Data Model & DTO Changes",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1840"
    },
    {
      "number": 1841,
      "title": "Member Screening + (Global+Member) Stage Annotation - 2. Incremental Update Logic & Transactional Save",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1841"
    },
    {
      "number": 1842,
      "title": "Member Screening + (Global+Member) Stage Annotation - 3. Client-Side Integration & Removal of Old Stats Retrieval",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1842"
    },
    {
      "number": 1843,
      "title": "Member Screening + (Global+Member) Stage Annotation - 4. Enhance Reconciliation Job (using MassTransit)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1843"
    },
    {
      "number": 1844,
      "title": "Historical View - 1. Data Model & Snapshotting (Embedded Array in `Project`)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1844"
    },
    {
      "number": 1845,
      "title": "Historical View - 2. Data API & Visualization",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1845"
    },
    {
      "number": 1846,
      "title": "Full Vision - 1. Optional: Refactor Main Stats Storage (Option B - Separate `ProjectStats` Collection)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1846"
    },
    {
      "number": 1847,
      "title": "Full Vision - 2a. Robust Historical Tracking (Dedicated `HistoricalStats` Collection)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1847"
    },
    {
      "number": 1848,
      "title": "Full Vision - 2b Robust Historical Tracking",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1848"
    },
    {
      "number": 1849,
      "title": "Full Vision - 3. Enhanced Visualization",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1849"
    },
    {
      "number": 1850,
      "title": "Full Vision - 4. Final Reconciliation Job Enhancement (using MassTransit)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/1850"
    },
    {
      "number": 2504,
      "title": "Stage overview charts refactoring and bug fix",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/2504"
    },
    {
      "number": 3083,
      "title": "fix(web,pm): reviewer screening leaderboard has no enforced visibility gate",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3083"
    },
    {
      "number": 3085,
      "title": "fix(pm): full-stats and reviewer-stats endpoints carry no project-membership authorization policy",
      "state": "CLOSED",
      "url": "https://github.com/camaradesuk/syrf/issues/3085"
    },
    {
      "number": 3141,
      "title": "chore(pm): FEAT-024 wave 1A schema nice-to-haves (index ordering, retention, citations)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3141"
    },
    {
      "number": 3143,
      "title": "chore(pm): FEAT-024 wave 1B nice-to-haves and deferred coverage gaps",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3143"
    },
    {
      "number": 3145,
      "title": "fix(pm): SetIgnoreExtraElements(false) on FEAT-024 value-object class maps is a rolling-deploy hazard",
      "state": "CLOSED",
      "url": "https://github.com/camaradesuk/syrf/issues/3145"
    },
    {
      "number": 3147,
      "title": "chore(pm): FEAT-024 wave 1D nice-to-haves and missing concurrency tests",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3147"
    },
    {
      "number": 3185,
      "state": "CLOSED",
      "title": "chore(pm): wave 1D part 2 follow-ups \u2014 durable-mode disagreement HTTP mapping and session-less source-write paths",
      "url": "https://github.com/camaradesuk/syrf/issues/3185"
    },
    {
      "number": 3187,
      "title": "chore(pm): wave 2B fence nice-to-haves (per-study recalculation, double-release test, operation-kind logging)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3187"
    },
    {
      "number": 3188,
      "title": "test(pm): Phase 2A screening-family verification nice-to-haves (negative tallies, narrowing boundary, controller flag-on)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3188"
    },
    {
      "number": 3189,
      "title": "ci: .NET test lane hangs after the last test project on pomegranate runners",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3189"
    },
    {
      "number": 3190,
      "title": "test(pm): Phase 3 annotation-family nice-to-haves and the two-family coordinator check for Phase 2C",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3190"
    },
    {
      "number": 3194,
      "title": "ci(pm): run the FEAT-024 benchmark harness in a CI lane and record the PS-DS-03/04/05 baselines",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3194"
    },
    {
      "number": 3197,
      "title": "chore(pm): domain events dispatched inside the definition-rewrite transaction and unbounded ProjectQuestion selectors (Phase 3 PR-2 follow-ups)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3197"
    },
    {
      "number": 3254,
      "title": "feat(stats): complete bounded fleet adapters and retention for FEAT-024",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3254"
    },
    {
      "number": 3255,
      "title": "feat(stats): sustain reviewer projections before consumer cutover",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3255"
    },
    {
      "number": 3343,
      "title": "feat(stats): observability for the FEAT-024 staging pilot (real Meter, JSON logs) and an asynchronous backfill job",
      "state": "CLOSED",
      "url": "https://github.com/camaradesuk/syrf/issues/3343"
    },
    {
      "number": 3360,
      "title": "fix(stats): runtime flag toggles are not observed by the project-management host; require static configuration or a shared flag revision",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3360"
    },
    {
      "number": 3361,
      "title": "fix(stats): gate the full-stats substitution on the materializedProjectStatisticsPages consumer flag",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3361"
    },
    {
      "number": 3364,
      "title": "chore(pm): reviewer-family follow-ups from PR #3239 (shared row-selection rule, dependent-family scope kinds, doc and fixture hygiene)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3364"
    },
    {
      "number": 3370,
      "title": "fix(stats): a forced single-scope rebuild replaces the control digest and un-serves sibling scopes of multi-scope families",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3370"
    },
    {
      "number": 3474,
      "title": "chore(stats): follow-ups from the #3240 search-population review (join-predicate pin, double project read, counter key naming)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3474"
    },
    {
      "number": 3506,
      "title": "chore(stats): backfill families inherit ProjectScreeningStatisticsWriter's version constants for their refusal checks",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3506"
    },
    {
      "number": 3510,
      "title": "gate(stats): FEAT-024 Phase 2C staging proof and soak evidence (7 days / 10,000 reads / 1,000 mutations)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3510"
    },
    {
      "number": 3511,
      "title": "feat(stats): deliver materialized-statistics invalidations over SignalR (phase 5.4 consumer; consumers currently poll)",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3511"
    },
    {
      "number": 3539,
      "title": "ci: diagnose repeated release integration timeout in PDF-agent suite",
      "state": "OPEN",
      "url": "https://github.com/camaradesuk/syrf/issues/3539"
    }
  ],
  "userReportedScreeningParity": {
    "projectId": "00000000-0000-0000-0000-000000000102",
    "observedAtUtc": "2026-09-21T15:32:11.6623734Z",
    "metricKey": "project-screening",
    "checkpoint": "9.11.0",
    "inParity": true,
    "isInconclusive": false,
    "state": "Fresh",
    "readSource": "Materialized",
    "configurationMatchesCurrentSettings": true,
    "metricCount": 17,
    "allDeltasZero": true,
    "screeningCount": 32,
    "sufficientlyScreened": 31,
    "insufficientlyScreened": 1,
    "sufficientlyIncluded": 28,
    "sufficientlyExcluded": 3,
    "overscreened": 2
  }
}
