feat(planctl): scripts/jj-hook.sh planctl session tracking (parent 3.0)
- planctl_start_ticks helper: Linux safe /proc/<pid>/stat parse (LastIndex ')'
+ awk field 20); macOS ps -o lstart + date epoch conversion (R6.2, R7.3)
- session-start: validate canonical-UUID session_id, append CLAUDE_SESSION_ID
to $CLAUDE_ENV_FILE (if set), atomically write /tmp/planctl-sessions/<PPID>
with UUID + start-stamp via mktemp + mv (R6.2, R7.1, R7.3)
- session-end: rm -f /tmp/planctl-sessions/<PPID> (idempotent) (R7.2, R7.3)
- test-jj-hooks.sh: PID file lifecycle test + non-UUID rejection test (R7.1,
R7.2)
- Manual smoke: PID file + $CLAUDE_ENV_FILE updates verified
Parent 3.0 from dev/plans/26174-planctl-context-tokens/tasks.md