{
  "generatedAt": "2026-10-05T01:06:11.681Z",
  "schemaVersion": 2,
  "tool": "measure-feed-cadence",
  "toolVersion": "v0.3-status-null-on-failure",
  "source": "arxiv-api",
  "parameters": {
    "windowDays": 14,
    "maxLagDays": 3,
    "safetyFactor": 1.5,
    "maxResultsPerCall": 1000,
    "hardPaginationCap": 4
  },
  "feeds": [
    {
      "feed": "math.NT",
      "windowDays": 14,
      "windowStartUtc": "2026-09-21T01:06:11.681Z",
      "windowEndUtc": "2026-10-05T01:06:11.681Z",
      "entriesFetched": 0,
      "paginationCalls": 1,
      "paginationSaturated": false,
      "status": "fetch-failed",
      "verdict": "N/A",
      "distinctPublishingDays": 0,
      "perDay": [],
      "medianDaily": null,
      "meanDaily": null,
      "maxDaily": null,
      "declaredRetentionRecommendation": {
        "maxLagDays": 3,
        "safetyFactor": 1.5,
        "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
        "recommendedByMedian": null,
        "recommendedByMean": null
      },
      "notes": [
        "verdict N/A due to fetch failure — DO NOT read numeric fields as 0; they are null. Re-run required.",
        "page 1 failed after 3 attempts: This operation was aborted"
      ]
    },
    {
      "feed": "math.LO",
      "windowDays": 14,
      "windowStartUtc": "2026-09-21T01:06:11.681Z",
      "windowEndUtc": "2026-10-05T01:06:11.681Z",
      "entriesFetched": 0,
      "paginationCalls": 1,
      "paginationSaturated": false,
      "status": "fetch-failed",
      "verdict": "N/A",
      "distinctPublishingDays": 0,
      "perDay": [],
      "medianDaily": null,
      "meanDaily": null,
      "maxDaily": null,
      "declaredRetentionRecommendation": {
        "maxLagDays": 3,
        "safetyFactor": 1.5,
        "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
        "recommendedByMedian": null,
        "recommendedByMean": null
      },
      "notes": [
        "verdict N/A due to fetch failure — DO NOT read numeric fields as 0; they are null. Re-run required.",
        "page 1 failed after 3 attempts: This operation was aborted"
      ]
    },
    {
      "feed": "math.DG",
      "windowDays": 14,
      "windowStartUtc": "2026-09-21T01:06:11.681Z",
      "windowEndUtc": "2026-10-05T01:06:11.681Z",
      "entriesFetched": 310,
      "paginationCalls": 1,
      "paginationSaturated": false,
      "status": "ok",
      "verdict": "measured",
      "distinctPublishingDays": 12,
      "perDay": [
        11,
        14,
        16,
        26,
        27,
        28,
        29,
        29,
        31,
        32,
        32,
        35
      ],
      "medianDaily": 28.5,
      "meanDaily": 25.83,
      "maxDaily": 35,
      "declaredRetentionRecommendation": {
        "maxLagDays": 3,
        "safetyFactor": 1.5,
        "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
        "recommendedByMedian": 129,
        "recommendedByMean": 117
      },
      "notes": []
    },
    {
      "feed": "cs.LO",
      "windowDays": 14,
      "windowStartUtc": "2026-09-21T01:06:11.681Z",
      "windowEndUtc": "2026-10-05T01:06:11.681Z",
      "entriesFetched": 97,
      "paginationCalls": 1,
      "paginationSaturated": false,
      "status": "ok",
      "verdict": "measured",
      "distinctPublishingDays": 12,
      "perDay": [
        3,
        4,
        4,
        6,
        6,
        7,
        7,
        8,
        11,
        11,
        12,
        18
      ],
      "medianDaily": 7,
      "meanDaily": 8.08,
      "maxDaily": 18,
      "declaredRetentionRecommendation": {
        "maxLagDays": 3,
        "safetyFactor": 1.5,
        "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
        "recommendedByMedian": 32,
        "recommendedByMean": 37
      },
      "notes": []
    },
    {
      "feed": "cs.AI",
      "windowDays": 14,
      "windowStartUtc": "2026-09-21T01:06:11.681Z",
      "windowEndUtc": "2026-10-05T01:06:11.681Z",
      "entriesFetched": 3244,
      "paginationCalls": 4,
      "paginationSaturated": false,
      "status": "ok",
      "verdict": "measured",
      "distinctPublishingDays": 12,
      "perDay": [
        126,
        163,
        176,
        199,
        220,
        224,
        228,
        263,
        301,
        379,
        458,
        507
      ],
      "medianDaily": 226,
      "meanDaily": 270.33,
      "maxDaily": 507,
      "declaredRetentionRecommendation": {
        "maxLagDays": 3,
        "safetyFactor": 1.5,
        "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
        "recommendedByMedian": 1017,
        "recommendedByMean": 1217
      },
      "notes": []
    },
    {
      "feed": "cs.LG",
      "windowDays": 14,
      "windowStartUtc": "2026-09-21T01:06:11.681Z",
      "windowEndUtc": "2026-10-05T01:06:11.681Z",
      "entriesFetched": 3287,
      "paginationCalls": 4,
      "paginationSaturated": false,
      "status": "ok",
      "verdict": "measured",
      "distinctPublishingDays": 12,
      "perDay": [
        137,
        158,
        176,
        191,
        192,
        196,
        263,
        283,
        321,
        408,
        467,
        495
      ],
      "medianDaily": 229.5,
      "meanDaily": 273.92,
      "maxDaily": 495,
      "declaredRetentionRecommendation": {
        "maxLagDays": 3,
        "safetyFactor": 1.5,
        "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
        "recommendedByMedian": 1033,
        "recommendedByMean": 1233
      },
      "notes": []
    },
    {
      "feed": "cs.CL",
      "windowDays": 14,
      "windowStartUtc": "2026-09-21T01:06:11.681Z",
      "windowEndUtc": "2026-10-05T01:06:11.681Z",
      "entriesFetched": 1404,
      "paginationCalls": 2,
      "paginationSaturated": false,
      "status": "ok",
      "verdict": "measured",
      "distinctPublishingDays": 12,
      "perDay": [
        71,
        76,
        78,
        84,
        94,
        96,
        102,
        118,
        130,
        165,
        194,
        196
      ],
      "medianDaily": 99,
      "meanDaily": 117,
      "maxDaily": 196,
      "declaredRetentionRecommendation": {
        "maxLagDays": 3,
        "safetyFactor": 1.5,
        "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
        "recommendedByMedian": 446,
        "recommendedByMean": 527
      },
      "notes": []
    },
    {
      "feed": "physics.gen-ph",
      "windowDays": 14,
      "windowStartUtc": "2026-09-21T01:06:11.681Z",
      "windowEndUtc": "2026-10-05T01:06:11.681Z",
      "entriesFetched": 6,
      "paginationCalls": 1,
      "paginationSaturated": false,
      "status": "ok",
      "verdict": "measured",
      "distinctPublishingDays": 5,
      "perDay": [
        1,
        1,
        1,
        1,
        2
      ],
      "medianDaily": 1,
      "meanDaily": 1.2,
      "maxDaily": 2,
      "declaredRetentionRecommendation": {
        "maxLagDays": 3,
        "safetyFactor": 1.5,
        "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
        "recommendedByMedian": 5,
        "recommendedByMean": 6
      },
      "notes": []
    },
    {
      "feed": "quant-ph",
      "windowDays": 14,
      "windowStartUtc": "2026-09-21T01:06:11.681Z",
      "windowEndUtc": "2026-10-05T01:06:11.681Z",
      "entriesFetched": 1146,
      "paginationCalls": 2,
      "paginationSaturated": false,
      "status": "ok",
      "verdict": "measured",
      "distinctPublishingDays": 12,
      "perDay": [
        21,
        31,
        47,
        78,
        79,
        80,
        80,
        82,
        108,
        127,
        135,
        278
      ],
      "medianDaily": 80,
      "meanDaily": 95.5,
      "maxDaily": 278,
      "declaredRetentionRecommendation": {
        "maxLagDays": 3,
        "safetyFactor": 1.5,
        "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
        "recommendedByMedian": 360,
        "recommendedByMean": 430
      },
      "notes": []
    }
  ],
  "declaredRetentionRecommendation": {
    "formula": "declaredRetention ≥ maxLagDays × dailyItemCount × safetyFactor",
    "dailyItemCount": "per-feed median over publishing days in a fixed 14-day window (weekend gaps excluded)",
    "safetyFactor": 1.5,
    "maxLagDays": 3,
    "globalMaxByMedian": 1033,
    "globalMaxByMean": 1233,
    "okFeedCount": 7,
    "failedFeedCount": 2,
    "noDataFeedCount": 0,
    "note": "Per-feed values ideally; global-max keeps every feed within a valid window at the cost of over-provisioning quiet feeds."
  },
  "honestScope": [
    "v0.3 (STEP 1619, chat-Claude 7th review pt ①-③度目): fetch failure and true-zero windows both emit `status` + `verdict:'N/A'` with `null` numeric fields instead of 0. Previously fetch failure surfaced medianDaily=0 and consumers (including my own summary layer) read that as 'no publications' — the same ① pattern (numbers under caveats get read as data) recurring for the third time. Always branch on `status` before reading numeric fields.",
    "v0.2 (STEP 1616, chat-Claude 6th review): the observation window is now a FIXED calendar span, decoupled from feed publishing rate. v0.1 used max_results=200 and let the window shrink for busy feeds; cs.LG got 2 days, math.LO got 44 days, and the resulting '2-point median' for cs.LG carried no statistical weight. Same self-rescaling class of failure as the v0.2 fetcher-window pathology.",
    "dailyItemCount is the median over DAYS THAT HAVE entries within the fixed window (weekend gaps excluded so retention sizes the active burst rate, not the calendar average).",
    "windowDays default 14 covers a full week + margin so weekly bursts are observable on every feed. Before this fix, windows shorter than 7 days could not see 'weekly bursts' by definition even though safetyFactor cited them as its rationale.",
    "maxLagDays default 3 is REQUIREMENT-DERIVED (weekend-spanning cron gaps must be catchable). Passes chat-Claude Q2 (derivation, not just motive).",
    "safetyFactor default 1.5 is STILL A PLACED CONSTANT, not derived. It fails chat-Claude Q2 in strict reading. Kept explicit here rather than hidden — the burst-vs-median ratio is measurable inside the same 14-day window (percentile 90 / percentile 50) and could replace this constant with a derived value in a follow-up. Until then, 1.5 is the acknowledged residual arbitrariness (see chat-Claude 6th review: 'arbitrariness aggregates to a few named places rather than disappearing').",
    "paginationSaturated=true on any feed means the fixed window contained more entries than HARD_PAGINATION_CAP × MAX_RESULTS_PER_CALL and the reported numbers are lower bounds. Increase HARD_PAGINATION_CAP or shorten windowDays with rationale.",
    "This tool answers 'is declaredRetention=X justified?', not 'what should fetcher retention be?'. The gauge asks for a window; the fetcher may hold more. Extending the fetcher is a subject change (Q1) with its own motivation check."
  ]
}