fix: use None default for --lookback-hours to distinguish omitted vs 0

Codex round 3: argparse default=0 made every CLI invocation without
--lookback-hours clobber the config's 72h default. Now default=None;
only explicit --lookback-hours N (including 0) overrides config.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
carpedkm
2026-06-20 14:23:17 +00:00
parent 01075c90d3
commit 01b3e01804
+5 -5
View File
@@ -76,7 +76,8 @@ def _add_common(p: argparse.ArgumentParser) -> None:
p.add_argument("--codex-home", default="", help="override ~/.codex for archived session harvest") p.add_argument("--codex-home", default="", help="override ~/.codex for archived session harvest")
p.add_argument("--source", default="", choices=["", "claude", "codex", "auto"], p.add_argument("--source", default="", choices=["", "claude", "codex", "auto"],
help="session transcript source") help="session transcript source")
p.add_argument("--lookback-hours", type=int, default=0) p.add_argument("--lookback-hours", type=int, default=None,
help="harvest window in hours; 0 = scan full history")
p.add_argument("--edit-budget", type=int, default=0) p.add_argument("--edit-budget", type=int, default=0)
p.add_argument("--max-sessions", type=int, default=0, p.add_argument("--max-sessions", type=int, default=0,
help="cap harvested sessions before mining; default derives from max tasks") help="cap harvested sessions before mining; default derives from max tasks")
@@ -111,10 +112,9 @@ def _cfg_from_args(args, task_meta: Dict[str, Any] | None = None) -> Any:
overrides["codex_home"] = os.path.abspath(args.codex_home) overrides["codex_home"] = os.path.abspath(args.codex_home)
if getattr(args, "source", ""): if getattr(args, "source", ""):
overrides["transcript_source"] = args.source overrides["transcript_source"] = args.source
if getattr(args, "lookback_hours", None) is not None and args.lookback_hours != 0: lh = getattr(args, "lookback_hours", None)
overrides["lookback_hours"] = args.lookback_hours if lh is not None: # --lookback-hours was explicitly passed (0 = full history)
elif getattr(args, "lookback_hours", None) == 0: overrides["lookback_hours"] = lh
overrides["lookback_hours"] = 0 # explicit opt-out: scan full history
if getattr(args, "edit_budget", 0): if getattr(args, "edit_budget", 0):
overrides["edit_budget"] = args.edit_budget overrides["edit_budget"] = args.edit_budget
if getattr(args, "max_sessions", 0): if getattr(args, "max_sessions", 0):