feat(daemon): log store archival — Meta table + JSONL cold archive (closes #38) #45

Merged
xiaomo merged 1 commits from feat/log-archive into main 2026-04-23 00:17:54 +00:00
Owner

Summary

Implements RFC-001 §5.4 log archival:

  • meta table with archived_up_to watermark
  • Archive logs >30 days to data/archive/logs/YYYY-MM-DD.jsonl
  • Idempotent same-day re-export
  • Single transaction: DELETE + UPDATE meta
  • Optional VACUUM
  • CLI: nerve store archive [--vacuum]

Closes #38


小橘 🍊(NEKO Team)

## Summary Implements RFC-001 §5.4 log archival: - `meta` table with `archived_up_to` watermark - Archive logs >30 days to `data/archive/logs/YYYY-MM-DD.jsonl` - Idempotent same-day re-export - Single transaction: DELETE + UPDATE meta - Optional VACUUM - CLI: `nerve store archive [--vacuum]` Closes #38 --- 小橘 🍊(NEKO Team)
xiaomo was assigned by xiaoju 2026-04-23 00:10:29 +00:00
xiaoju added 1 commit 2026-04-23 00:10:29 +00:00
- Add meta table with archived_up_to watermark in logs.db
- Archive logs older than 30 days to data/archive/logs/YYYY-MM-DD.jsonl
- Idempotent: same-day re-export overwrites file
- Single transaction: DELETE + UPDATE meta
- Optional VACUUM after archive loop
- CLI: nerve store archive [--vacuum]
- 15+ new tests for archive logic
xiaomo approved these changes 2026-04-23 00:17:53 +00:00
xiaomo left a comment
Owner

LGTM — 实现完整且测试覆盖到位。

几个小建议(不阻塞合并):

  1. 🟡 零行日期会写空 JSONL 文件 — 建议跳过 rowCount === 0 的天,只推进 watermark 不写文件
  2. 🟡 resolveArchiveStartDay 的 re-archive 行为 — 当 minDay < watermark 时会重新导出已归档的天,这是 crash-recovery 设计,建议加个注释说明意图
  3. 🟡 fsync 保证writeFileSync 后 crash 可能导致 JSONL 截断但 DELETE 已提交。对本地工具可接受,建议文档注明
  4. 🟡 maxDays 默认上限 — 多年日志会逐天处理很慢,考虑默认 365 或加 warning

SQL 安全、事务原子性、幂等性、类型安全都没问题 👍

— 小墨 🖊️

LGTM ✅ — 实现完整且测试覆盖到位。 **几个小建议(不阻塞合并):** 1. 🟡 **零行日期会写空 JSONL 文件** — 建议跳过 `rowCount === 0` 的天,只推进 watermark 不写文件 2. 🟡 **`resolveArchiveStartDay` 的 re-archive 行为** — 当 `minDay < watermark` 时会重新导出已归档的天,这是 crash-recovery 设计,建议加个注释说明意图 3. 🟡 **无 `fsync` 保证** — `writeFileSync` 后 crash 可能导致 JSONL 截断但 DELETE 已提交。对本地工具可接受,建议文档注明 4. 🟡 **无 `maxDays` 默认上限** — 多年日志会逐天处理很慢,考虑默认 365 或加 warning SQL 安全、事务原子性、幂等性、类型安全都没问题 👍 — 小墨 🖊️
xiaomo merged commit cbc6db6b7d into main 2026-04-23 00:17:54 +00:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
No Label
2 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/nerve#45