Skip to content

fix issues #1 and #3: safety trinity + strict date parsing#4

Merged
EmanueleMinotto merged 1 commit into
mainfrom
claude/fix-issues-1-3-dcCMf
Apr 10, 2026
Merged

fix issues #1 and #3: safety trinity + strict date parsing#4
EmanueleMinotto merged 1 commit into
mainfrom
claude/fix-issues-1-3-dcCMf

Conversation

@EmanueleMinotto
Copy link
Copy Markdown
Member

Issue #3 — strict date parsing (SheetsClient):

  • Only YYYY-MM-DD is accepted; any other format throws
    IllegalArgumentException with the row number and sheet name so bad
    spreadsheet data fails loudly at startup, not silently mid-run.
  • The expiry instant is now the start of the following UTC day
    (date + 1 day at midnight UTC), making the disable-until boundary
    timezone-independent across all CI runners.
  • Removed the multi-format fallback parsers; added 9 unit tests in
    SheetsClientDateParsingTest.

Issue #1 — safety trinity (SkipperResolver + SheetsWriter):

  • SKIPPER_FAIL_OPEN (default true): when the Sheets API is unreachable
    and no valid cache exists, all tests run instead of the process
    crashing.
  • SKIPPER_CACHE_FILE (default .skipper-cache.json) + SKIPPER_CACHE_TTL
    (default 300 s): successful fetches are persisted to disk and used as
    a fallback within the TTL window.
  • SKIPPER_SYNC_ALLOW_DELETE (default false): SheetsWriter.sync() now
    detects orphaned rows and warns about them; actual deletion requires
    opting in via the env var. Rows are deleted via a single batchUpdate
    call in reverse-index order to avoid shifting.
  • Added SkipperResolverCacheTest with 5 unit tests covering write/read
    round-trip, missing file, expired TTL, and fail-open semantics.

https://claude.ai/code/session_016isAj14n4LxGLoSMYyRA6V

Issue #3 — strict date parsing (SheetsClient):
- Only YYYY-MM-DD is accepted; any other format throws
  IllegalArgumentException with the row number and sheet name so bad
  spreadsheet data fails loudly at startup, not silently mid-run.
- The expiry instant is now the start of the *following* UTC day
  (date + 1 day at midnight UTC), making the disable-until boundary
  timezone-independent across all CI runners.
- Removed the multi-format fallback parsers; added 9 unit tests in
  SheetsClientDateParsingTest.

Issue #1 — safety trinity (SkipperResolver + SheetsWriter):
- SKIPPER_FAIL_OPEN (default true): when the Sheets API is unreachable
  and no valid cache exists, all tests run instead of the process
  crashing.
- SKIPPER_CACHE_FILE (default .skipper-cache.json) + SKIPPER_CACHE_TTL
  (default 300 s): successful fetches are persisted to disk and used as
  a fallback within the TTL window.
- SKIPPER_SYNC_ALLOW_DELETE (default false): SheetsWriter.sync() now
  detects orphaned rows and warns about them; actual deletion requires
  opting in via the env var. Rows are deleted via a single batchUpdate
  call in reverse-index order to avoid shifting.
- Added SkipperResolverCacheTest with 5 unit tests covering write/read
  round-trip, missing file, expired TTL, and fail-open semantics.

https://claude.ai/code/session_016isAj14n4LxGLoSMYyRA6V
@EmanueleMinotto EmanueleMinotto merged commit 156702a into main Apr 10, 2026
2 checks passed
@EmanueleMinotto EmanueleMinotto deleted the claude/fix-issues-1-3-dcCMf branch April 10, 2026 05:46
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.

2 participants