/** * `#216` (ADR-092): sim 증분 rebuild 의 **watermark 저장소**. * * 🔴 **왜 별도 모듈인가** — 이 값의 쓰기 시점이 정확성을 결정한다. * rebuild 가 축출(`aborted`)되거나 중간에 죽으면 sim 엣지가 **부분만** 갱신된 상태인데, * watermark 를 먼저 올려 두면 그 사이의 변경이 **영구 누락**된다(다음 회차의 `since` 가 * 더 나중이라 영영 안 잡힌다). 그래서 「메모리에 T_start 를 들고, 파이프라인이 **끝까지** * 성공한 뒤에만 기록한다」가 계약이고, 그 계약을 한 자리에 모아 둔다. */ /** * `.contextrank-since` 경로 — DB 파일 옆에 둔다(DB 와 생명주기가 같다). * * 🔴 **`resolvePath` 를 반드시 경유한다.** `config.db.path` 는 `~/.a2a/memory.db` 처럼 * **틸드가 확장되지 않은 raw 문자열**이고, Node 는 `~` 를 확장하지 않는다. 그대로 쓰면 * `/~/.a2a/.contextrank-since` 가 되어 ENOENT — `#68`(ADR-050)이 `shadow-rebuild` 의 * lock 파일에서 겪은 것과 **같은 클래스**다. 형제 사이드카 6개(`rebuildLockPath` · * `rebuildLogPath` · `embedBackfillLockPath` · `embedBackfillLogPath` · * `sessionExtractLockPath` · `sessionExtractLogPath`)가 전부 이 관용구를 쓴다. * * [검증 2026-09-14] 이 함수만 관용구 밖에 있어 운영 rebuild 2회가 **둘 다 전건**으로 돌았다 * (`considered` 522,037,685 동일) — `writeSince` 의 `catch {}` 가 ENOENT 를 삼켜 무음이었다. */ export declare function sinceFilePath(dbPath: string): string; /** * 시각을 DB 비교 형식(`YYYY-MM-DD HH:MM:SS`, **UTC**)으로. * SQLite `datetime('now')` 가 UTC 이고 `toISOString()` 도 UTC 라 두 축이 맞는다. */ export declare function nowStamp(nowMs?: number): string; /** watermark 를 읽는다. 없거나 형식이 깨졌으면 `undefined`(→ 전건). */ export declare function readSince(dbPath: string): string | undefined; /** * watermark 를 기록한다. 🔴 **파이프라인이 끝까지 성공한 뒤에만** 부를 것. * 실패해도 throw 하지 않는다 — 기록 실패의 대가는 「다음 회차가 전건」이고 그것은 안전하다. * * 🔴 **단 성공 여부는 반환한다 — 삼키되 지우지는 않는다.** [검증 2026-09-14] 이전 판은 * `catch {}` 로 완전히 무음이라, 경로 결함(위 `sinceFilePath` 참조)으로 **단 한 번도 * 기록되지 않는 동안 아무 신호가 없었다**. 호출부가 이 값을 로그로 남겨야 * 「증분이 안 걸린다」를 운영 로그에서 읽을 수 있다. * * @returns 기록 성공 여부. `false` 면 다음 회차가 전건이 된다. */ export declare function writeSince(dbPath: string, stamp: string): boolean; /** * watermark 를 지운다 → 다음 rebuild 가 **전건**이 된다. * * 🔴 재임베딩(`embed --reindex`)에서 반드시 불러야 한다. 재임베딩은 * `updated_at` 을 안 바꾸고(`saveEmbedding`) 그 노드는 이미 sim src 에 있어 * **Δ 3채널이 전부 못 잡는다** — watermark 를 지우는 것이 유일한 방어다. */ export declare function clearSince(dbPath: string): void; //# sourceMappingURL=since-store.d.ts.map