=== profile-wrap-demo-build_week.service ===
[Unit]
Description=profile-wrap demo: build_week

[Service]
Type=oneshot
WorkingDirectory=@WS@
Environment=PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin
Environment=PYTHONUTF8=1
Environment=PROFILE_WRAP_NODE=/opt/homebrew/bin/node
Environment=PROFILE_WRAP_NPX=/opt/homebrew/bin/npx
Environment=PROFILE_WRAP_FFMPEG=/opt/homebrew/bin/ffmpeg
Environment=PROFILE_WRAP_FFPROBE=/opt/homebrew/bin/ffprobe
Environment=PROFILE_WRAP_CLAUDE_BIN=@HOME@/.local/bin/claude
ExecStart=/usr/bin/python3 @PYZ@ run build_week --workspace @WS@ --no-jitter
TimeoutStartSec=11100
=== profile-wrap-demo-build_week.timer ===
[Unit]
Description=profile-wrap demo: build_week (THU 10:00)

[Timer]
OnCalendar=Thu *-*-* 10:00:00
Persistent=true
RandomizedDelaySec=20min
Unit=profile-wrap-demo-build_week.service

[Install]
WantedBy=timers.target
=== profile-wrap-demo-post_due.service ===
[Unit]
Description=profile-wrap demo: post_due

[Service]
Type=oneshot
WorkingDirectory=@WS@
Environment=PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin
Environment=PYTHONUTF8=1
Environment=PROFILE_WRAP_NODE=/opt/homebrew/bin/node
Environment=PROFILE_WRAP_NPX=/opt/homebrew/bin/npx
Environment=PROFILE_WRAP_FFMPEG=/opt/homebrew/bin/ffmpeg
Environment=PROFILE_WRAP_FFPROBE=/opt/homebrew/bin/ffprobe
Environment=PROFILE_WRAP_CLAUDE_BIN=@HOME@/.local/bin/claude
ExecStart=/usr/bin/python3 @PYZ@ run post_due --workspace @WS@
TimeoutStartSec=900
=== profile-wrap-demo-post_due.timer ===
[Unit]
Description=profile-wrap demo: post_due (every 15 min)

[Timer]
OnBootSec=2min
OnUnitActiveSec=15min
Persistent=true
Unit=profile-wrap-demo-post_due.service

[Install]
WantedBy=timers.target
=== profile-wrap-demo-token_check.service ===
[Unit]
Description=profile-wrap demo: token_check

[Service]
Type=oneshot
WorkingDirectory=@WS@
Environment=PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin
Environment=PYTHONUTF8=1
Environment=PROFILE_WRAP_NODE=/opt/homebrew/bin/node
Environment=PROFILE_WRAP_NPX=/opt/homebrew/bin/npx
Environment=PROFILE_WRAP_FFMPEG=/opt/homebrew/bin/ffmpeg
Environment=PROFILE_WRAP_FFPROBE=/opt/homebrew/bin/ffprobe
Environment=PROFILE_WRAP_CLAUDE_BIN=@HOME@/.local/bin/claude
ExecStart=/usr/bin/python3 @PYZ@ run token_check --workspace @WS@
TimeoutStartSec=420
=== profile-wrap-demo-token_check.timer ===
[Unit]
Description=profile-wrap demo: token_check (daily 09:30)

[Timer]
OnCalendar=*-*-* 09:30:00
Persistent=true
Unit=profile-wrap-demo-token_check.service

[Install]
WantedBy=timers.target
=== profile-wrap-demo-profile_review.service ===
[Unit]
Description=profile-wrap demo: profile_review

[Service]
Type=oneshot
WorkingDirectory=@WS@
Environment=PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin
Environment=PYTHONUTF8=1
Environment=PROFILE_WRAP_NODE=/opt/homebrew/bin/node
Environment=PROFILE_WRAP_NPX=/opt/homebrew/bin/npx
Environment=PROFILE_WRAP_FFMPEG=/opt/homebrew/bin/ffmpeg
Environment=PROFILE_WRAP_FFPROBE=/opt/homebrew/bin/ffprobe
Environment=PROFILE_WRAP_CLAUDE_BIN=@HOME@/.local/bin/claude
ExecStart=/usr/bin/python3 @PYZ@ run profile_review --workspace @WS@
TimeoutStartSec=600
=== profile-wrap-demo-profile_review.timer ===
[Unit]
Description=profile-wrap demo: profile_review (every 90 days (checked daily 09:00))

[Timer]
OnCalendar=*-*-* 09:00:00
Persistent=true
Unit=profile-wrap-demo-profile_review.service

[Install]
WantedBy=timers.target
=== profile-wrap-demo-connect_weekly.service ===
[Unit]
Description=profile-wrap demo: connect_weekly

[Service]
Type=oneshot
WorkingDirectory=@WS@
Environment=PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin
Environment=PYTHONUTF8=1
Environment=PROFILE_WRAP_NODE=/opt/homebrew/bin/node
Environment=PROFILE_WRAP_NPX=/opt/homebrew/bin/npx
Environment=PROFILE_WRAP_FFMPEG=/opt/homebrew/bin/ffmpeg
Environment=PROFILE_WRAP_FFPROBE=/opt/homebrew/bin/ffprobe
Environment=PROFILE_WRAP_CLAUDE_BIN=@HOME@/.local/bin/claude
ExecStart=/usr/bin/python3 @PYZ@ run connect_weekly --workspace @WS@
TimeoutStartSec=2100
=== profile-wrap-demo-connect_weekly.timer ===
[Unit]
Description=profile-wrap demo: connect_weekly (SUN 10:00)

[Timer]
OnCalendar=Sun *-*-* 10:00:00
Persistent=true
Unit=profile-wrap-demo-connect_weekly.service

[Install]
WantedBy=timers.target
=== profile-wrap-demo-board.service ===
[Unit]
Description=profile-wrap demo: board
After=network-online.target

[Service]
Type=simple
WorkingDirectory=@WS@
Environment=PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin
Environment=PYTHONUTF8=1
Environment=PROFILE_WRAP_NODE=/opt/homebrew/bin/node
Environment=PROFILE_WRAP_NPX=/opt/homebrew/bin/npx
Environment=PROFILE_WRAP_FFMPEG=/opt/homebrew/bin/ffmpeg
Environment=PROFILE_WRAP_FFPROBE=/opt/homebrew/bin/ffprobe
Environment=PROFILE_WRAP_CLAUDE_BIN=@HOME@/.local/bin/claude
ExecStart=/usr/bin/python3 @PYZ@ run board --workspace @WS@
Restart=on-failure
RestartSec=60

[Install]
WantedBy=default.target
=== commands ===
systemctl --user daemon-reload
systemctl --user enable --now profile-wrap-demo-build_week.timer
systemctl --user daemon-reload
systemctl --user enable --now profile-wrap-demo-post_due.timer
systemctl --user daemon-reload
systemctl --user enable --now profile-wrap-demo-token_check.timer
systemctl --user daemon-reload
systemctl --user enable --now profile-wrap-demo-profile_review.timer
systemctl --user daemon-reload
systemctl --user enable --now profile-wrap-demo-connect_weekly.timer
systemctl --user daemon-reload
systemctl --user enable --now profile-wrap-demo-board.service
