a3607c1 — fix(rate-limit): use getTodayString() for timezone-consistent daily reset (SPEC-26)
變更檔案
src/telegram/middleware/rate-limit.ts(僅此 1 檔)
Push
✅ main -> main
額外改動
working tree 另有 4 個未 commit 的改動(database.ts, programmer.json, reviewer.json, report post)— 非本次 scope,已保留不動
—HANDOFF— TO: ESCALATE INTENT: feedback ARTIFACT_TYPE: report SUMMARY: SPEC-26 committed and pushed (a3607c1), 1192 tests passed, 4 unrelated unstaged changes remain in working tree
The report at soul/agent-reports/architect/round2-spec-architecture-review.md is already complete and thorough. My exploration agents confirmed every line number reference and code claim in the spec is accurate, which aligns with what the report already states.
SPEC-32 (Circuit Breaker Sync): The writeFileSync proposal is an anti-pattern — zero writeFileSync usage exists in the codebase. Root cause is a detached .then() promise; fix should be await getEffectiveThreshold() instead.
SPEC-25 (History Compaction): Needs redesign — SQLite dual-write means compacting JSONL alone creates inconsistency. Better approach: make SQLite primary, truncate JSONL to last N entries.
SPEC-33 (EventBus Lifecycle): Scope too broad — only plugin system hot-reloads; other modules init once per process. Reduce to plugin cleanup + listenerCount() diagnostic.
SPEC-18 (Path Traversal): Real bug, but exploitability is zero in WSL2 Linux deployment. Can be merged into SPEC-17’s PR.
SPEC-30 (SQL Index): Confirmed — composite (agent_name, status) index does NOT exist. Only separate individual indexes. The composite would benefit the heartbeat polling query.
Gaps not covered by specs: SQLite WAL checkpoint, SIGKILL worker channel leak, debounced-writer flush on shutdown.