fix: count GPT-6 Pro in ChatGPT's reported week, not a rolling 7 days #85

Merged
xicv merged 11 commits from fix/easpot-chatgpt-week into main 2026-09-26 05:56:28 +00:00
xicv commented 2026-09-26 05:56:09 +00:00 (Migrated from github.com)

Fixes #83's count, which was wrong after a ChatGPT reset. #83 counted GPT-6 Pro over a rolling 7 days. But ChatGPT restores the whole weekly allowance at once at a reset: live on 2026-09-26 it reset GPT-6 Pro at 04:54:12 UTC, and eaSpot still showed 123 of 200 used when the true count was 0.

What changes

  • gpt6ProWindow: computeProUsage now takes proLimits and returns GPT-6 Pro's week as ChatGPT counts it, { capped, startedAt, resetsAt, used }. It is null until ChatGPT has reported a GPT-6 Pro reset.
    • While capped: ChatGPT's own reset ends the week.
    • Otherwise: the week starts at the latest reported reset plus whole weeks and lasts 7 days. That is exact for a fixed weekly cycle. If the week instead starts at the first message after a reset, the count is the same and the true reset is no earlier.
  • gpt6ProWeek: now counts that week once a reset is known, and stays rolling otherwise. Its pro_usage_high alert follows and names the period it measured.
  • Keeping the reset time: after a reset, ChatGPT reports no GPT-6 Pro limit at all. withGpt6ProReset keeps the last GPT-6 Pro reset that had passed, so the week stays anchored. A carried entry never reads as a limit in force.
  • eaSpot publisher:
    • publishes that week, with the whole allowance used while capped, and nothing until a reset is known;
    • the reset floor and the easpot status --json seed are removed;
    • a corrected, earlier reset is published as it is, and eaSpot 0.2.1 takes the newer reading.
  • Removed status fields: gpt6ProNewestAt and oldestUnansweredSentAt, which came in #83, are gone.

Verification

  • npm test: 1549 tests, 1548 pass, 1 skipped. npm run lint is clean.
  • The A3K fixture is regenerated.
  • Run read-only against real ego-chat data: 0 of 200 used, week from 2026-09-26 04:54:12 UTC to 2026-10-03 04:54:12 UTC. The rolling count read 123.
Fixes #83's count, which was wrong after a ChatGPT reset. #83 counted GPT-6 Pro over a rolling 7 days. But ChatGPT restores the whole weekly allowance at once at a reset: live on 2026-09-26 it reset GPT-6 Pro at 04:54:12 UTC, and eaSpot still showed 123 of 200 used when the true count was 0. ## What changes - **`gpt6ProWindow`:** `computeProUsage` now takes `proLimits` and returns GPT-6 Pro's week as ChatGPT counts it, `{ capped, startedAt, resetsAt, used }`. It is null until ChatGPT has reported a GPT-6 Pro reset. - While capped: ChatGPT's own reset ends the week. - Otherwise: the week starts at the latest reported reset plus whole weeks and lasts 7 days. That is exact for a fixed weekly cycle. If the week instead starts at the first message after a reset, the count is the same and the true reset is no earlier. - **`gpt6ProWeek`:** now counts that week once a reset is known, and stays rolling otherwise. Its `pro_usage_high` alert follows and names the period it measured. - **Keeping the reset time:** after a reset, ChatGPT reports no GPT-6 Pro limit at all. `withGpt6ProReset` keeps the last GPT-6 Pro reset that had passed, so the week stays anchored. A carried entry never reads as a limit in force. - **eaSpot publisher:** - publishes that week, with the whole allowance used while capped, and nothing until a reset is known; - the reset floor and the `easpot status --json` seed are removed; - a corrected, earlier reset is published as it is, and eaSpot 0.2.1 takes the newer reading. - **Removed status fields:** `gpt6ProNewestAt` and `oldestUnansweredSentAt`, which came in #83, are gone. ## Verification - `npm test`: 1549 tests, 1548 pass, 1 skipped. `npm run lint` is clean. - The A3K fixture is regenerated. - Run read-only against real ego-chat data: 0 of 200 used, week from 2026-09-26 04:54:12 UTC to 2026-10-03 04:54:12 UTC. The rolling count read 123.
Sign in to join this conversation.
No description provided.