python3 "${CLAUDE_PLUGIN_ROOT}/scripts/ots_common.py" tick-hour \
--period 2026-08-21T14 \
--author "$SECOND_BRAIN_IDENTITY" --bundle "$SECOND_BRAIN_ROOT"
- No segments in the window → no node is written.
- An open segment in that Hour → skip. Do not write partial summaries. A closed segment is not partial.
- Earlier Hours a long session already crossed hold only closed segments and finalize on their normal tick. At most one Hour per running session is un-finalized.
- Re-running over an already-finalized Hour is a no-op.
Pass --ensure-parents to create missing Year→Day containers. Default is sparse.
Upstream of the tick: ots_tail_jsonl.py (snapshot, no LLM). Downstream: ots summarize --period (Edition A or B, inline), then rollup. Overnight pointers stay a separate process. ots print-cron prints a crontab that runs once + tick-hour + summarize.