Skip to content

Measure the Greek grant list's coverage; it is complete for the harvest - #232

Merged
brianglass merged 1 commit into
mainfrom
fasting-grant-coverage
Sep 11, 2026
Merged

brianglass merged 1 commit into
mainfrom
fasting-grant-coverage

Conversation

@brianglass

Copy link
Copy Markdown
Owner

Closes the loose thread left by #230: the Greek fixed-date grant list carried a warning that it was "incomplete by construction", implying a follow-up harvest was needed.

That warning was an expected-value argument, not a measurement. Measuring it shows the list is already complete with respect to the ten years harvested, so no further harvest is needed.

Coverage

of 366 calendar dates
probed two or more times 329
probed once 12
never probed 25

The measurement has a trap, which I hit first

Asking "where does the app say strict?" is circular — a granted date no longer says strict, so every grant looks like a gap. Done that way it reported 113 blind dates, most of which were the grants themselves.

The right test asks the season, not the output: a grant leaves a trace only where the season's own floor is strict and its cap would let a claim reach wine and oil. That's what grant_coverage.py does, and the docstring says why.

Both structural blind spots checked, neither is a gap

  • Dec 25 – Jan 4 and Jan 6 are fast-free, so no grant can exist there.
  • Aug 1–14, the Dormition fast, caps claims below rank 7 to strict, so a grant would be invisible. Rather than leave that an unknown, it was checked against goarch.org directly: across ten years its Dormition weekdays are strict 93 times and fish 7 — and all seven are Aug 6, the Transfiguration, which the shared data already grants.

Of the 12 thinly-probed dates, two showed wine and oil on their single probe — Feb 17 and Jun 3 — and both are already right: Feb 17 through its override, Jun 3 from the Paschal season's own allowance rather than from any grant at all.

What's in the PR

  • tools/fasting/grant_coverage.py — so the question can be re-asked after any future harvest instead of re-deriving the argument
  • docs/fasting-refactor-scope.md — the corrected claim, with the measurement

More years would only buy probes for those 12 thin dates; the harvest route stays documented in tools/fasting/goarch_audit.py.

Documentation and one tool. No application code or data changed. 197 tests pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_019nQRjJpPqW89xqzAf1vsEX

The fixed-date grant list was left carrying a warning that it was incomplete by
construction -- a date only surfaces when it lands on a Wednesday or Friday, so
some grants must still be hidden. That was an expected-value argument rather
than a measurement. Measuring it shows the list is complete with respect to the
ten years harvested, so the follow-up harvest it implied is not needed.

The measurement has to be made against the season, not the app's output. Asking
"where does the app say strict?" is circular: a granted date no longer says
strict, so every grant looks like a gap. Tried that way first, it reported 113
blind dates, most of which were the grants themselves. A grant leaves a trace
only where the season's own floor is strict and its cap would let a claim reach
wine and oil.

Of 366 calendar dates, 329 are probed two or more times, 12 once, and 25 never.
The 25 are two structural blind spots and neither is a real gap. Dec 25 to Jan 4
and Jan 6 are fast-free, so no grant can exist there. Aug 1-14, the Dormition
fast, caps claims below rank 7 to strict, so a grant would be invisible -- and
rather than leave that an unknown it was checked against goarch.org directly:
across ten years its Dormition weekdays are strict 93 times and fish 7, and all
seven are Aug 6, the Transfiguration, which the shared data already grants.

Of the 12 thinly-probed dates, two showed wine and oil on their single probe,
Feb 17 and Jun 3, and both are already right -- Feb 17 through its override and
Jun 3 from the Paschal season's own allowance rather than from any grant.

Adds tools/fasting/grant_coverage.py so the question can be re-asked after any
future harvest, and corrects the claim in docs/fasting-refactor-scope.md.

Documentation and a tool; no application code or data changed. 197 tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019nQRjJpPqW89xqzAf1vsEX
@brianglass
brianglass merged commit fa5a4ee into main Sep 11, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant