All ~30 warnings traced to the bot's lint environment resolving types
differently from local, not to unsafe code (DEVCONFLICTS.md finding 10):
- tsconfig lib was ES2016 while the code uses ES2017-ES2019 APIs
(Object.entries/values/fromEntries, padStart, Promise.finally); the
test suite's auto-included @types/node masked it locally. lib is now
["DOM", "ES2019"] with types: [] so a mismatch fails npm run build.
- moment's typings don't resolve in the bot's environment (obsidian's
re-export types via the moment package). All calls now go through
formatMoment in src/time.ts, a narrow structural alias.
- secrets.ts needed as-BufferSource assertions on TS 5.7+ that older TS
flags as unnecessary; restructured (inferred ArrayBuffer-backed byte
helpers, BufferSource param, one 32-byte copy) to need none on any
TS version. Crypto behavior unchanged.
- The two flagged as-Record casts became an isRecord type predicate.
Docs: CLAUDE.md "Review-bot type environment" gotcha, RELEASING.md
parity section (plus the pre-release docs from the workflow change),
DEVCONFLICTS.md finding 10, ROADMAP.md Unreleased entry.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>