claude-obsidian: don't count skipped empty sessions as still queued

The first full drain reported "105 written, 0 failed, 9 still queued" when
the 9 were empty sessions already recorded as skipped -- nothing was left.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KF322NzozeaFjpgWvh4F4g
This commit is contained in:
2026-09-14 01:19:56 -04:00
co-authored by Claude Opus 5
parent 9fb0e8bcae
commit 154dc18eb9
2 changed files with 8 additions and 8 deletions
+8 -8
View File
@@ -611,8 +611,8 @@ SKIPPED = "(empty, skipped)"
EX_TEMPFAIL = 75 # "try again later" -- systemd logs it, the next timer run retries
def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]:
ok = failed = 0
def run_jobs(cfg, work, fn) -> tuple[int, int, str | None, int]:
ok = failed = skipped = 0
quota = None
stop = threading.Event() # Future.cancel() cannot stop a job a worker already picked up
@@ -632,7 +632,7 @@ def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]:
try:
result = fut.result()
if result == SKIPPED:
print(f"skip {label} (no conversation content)", flush=True)
print(f"skip {label} (no conversation content)", flush=True); skipped += 1
else:
print(f"ok {label} -> {result}", flush=True); ok += 1
except (QuotaExhausted, BudgetExhausted) as e:
@@ -644,7 +644,7 @@ def run_jobs(cfg, work, fn) -> tuple[int, int, str | None]:
pass
except Exception as e: # keep going; next run retries
print(f"FAIL {label}: {e}", file=sys.stderr, flush=True); failed += 1
return ok, failed, quota
return ok, failed, quota, skipped
def finish(ok: int, failed: int, quota: str | None, dry_run, remaining: int, ledger: "Ledger | None" = None) -> None:
@@ -738,10 +738,10 @@ def cmd_sync(cfg, args) -> None:
src = str(p).replace(str(HOME), "~")
return process(cfg, llm, vault, state, key, meta, "claude-code", "Code", fp, src, mode)
ok, failed, quota = run_jobs(cfg, [(w[0].name, *w) for w in work], lambda _l, p, fp, key: one(p, fp, key))
ok, failed, quota, skipped = run_jobs(cfg, [(w[0].name, *w) for w in work], lambda _l, p, fp, key: one(p, fp, key))
if vault and ok:
write_index(cfg, vault, state)
finish(ok, failed, quota, mode, total - ok, llm.ledger)
finish(ok, failed, quota, mode, total - ok - skipped, llm.ledger)
def cmd_import(cfg, args) -> None:
@@ -762,12 +762,12 @@ def cmd_import(cfg, args) -> None:
llm, vault = LLM(cfg), (None if args.dry_run else Vault(cfg))
if vault:
vault.ping()
ok, failed, quota = run_jobs(cfg, [((m.get("title") or m["session_id"])[:50], m, fp, key) for m, fp, key in work],
ok, failed, quota, skipped = run_jobs(cfg, [((m.get("title") or m["session_id"])[:50], m, fp, key) for m, fp, key in work],
lambda _l, m, fp, key: process(cfg, llm, vault, state, key, m, "claude-ai", "Web",
fp, None, args.dry_run))
if vault and ok:
write_index(cfg, vault, state)
finish(ok, failed, quota, args.dry_run, total - ok, llm.ledger)
finish(ok, failed, quota, args.dry_run, total - ok - skipped, llm.ledger)
def main() -> None: