- --sudo option: 6-layer elevation architecture with pulse tracing (v5.14)

  v6.0 pipe separation: normal Eye -> wkappbot_eye_ipc (tick IPC only), admin Eye -> wkappbot_elevated (command proxy onl...

- A11y Click: React Fiber + CDP Trusted Click Fallback for Chrome SPAs

  Chrome React SPA buttons expose UIA Invoke but fire no trusted event. Fallback chain: LegacyIA -> WM_LBUTTON -> TryCdpT...

- ANSI Color Output: Auto-Disable on Pipe + NO_COLOR

  CLI tool ANSI color implementation: auto-disable on pipe/redirect + NO_COLOR env var support. Prevents garbage escape c...

- Admin Eye 2-phase broadcast close for clean hand-over

  When a new admin Eye spawns, it evicts old admin Eye(s) via 2-phase 'broadcast close' before claiming the wkappbot_elev...

- Admin Eye Pipe Server -- Self-Respawn + Hot-Swap Deferral

  Named pipe server (wkappbot_elevated) inside admin Eye. Handles admin commands, defers hot-swap while busy, and self-re...

- Ask anon AI tab: preserve on failure

  AskCommands.ChatGpt and AskCommands.Claude must gate cdp.TryCloseAnonymousTabAsync() on ok=true. On ask failure (ok=fal...

- AutoHeal - User Input Protection: Focusless-First + Focus Theft Recovery

  [RULE] Skill content MUST be in English -- Korean uses 2-3x tokens. PHILOSOPHY: focusless-first is the PRIMARY goal. Re...

- Black desktop: Progman stuck on wrong monitor after topology change

  Win11 multi-monitor race: Progman anchors to secondary monitor after connect/disconnect, leaving primary monitor showin...

- CDP Prompt Pump — Focusless Enter and ProseMirror Auto-Submit

  How the CDP prompt pump works, why ProseMirror ignores JS KeyboardEvent, and how SendPromptFocuslessAsync (DOM.focus +...

- CDP console.log forwarding to stderr via Runtime.consoleAPICalled

  Runtime.consoleAPICalled is NOT subscribed in Core CdpClient. console.log in --eval-js JS silently drops to nowhere. Fi...

- CDP focus-steal guard: Runtime.evaluate in IsFocusStealingMethod + weMinimized + 500ms wait

  Runtime.evaluate can activate Chrome tab and steal fg. Fix: add to IsFocusStealingMethod (unconditional). Track weMinim...

- CDP popup auto-dismiss strategy: blocking overlay removal before prompt injection

  How wkappbot automatically clears blocking popups (login prompts, ad modals, cookie banners on non-AI domains) before C...

- CHORE resolved: CLAUDE.md delegation rules already mandatory

  Project CLAUDE.md delegation rules already mandatory with Haiku/Codex/Opus routing. Suggest closed as stale.

- CHROME:POS InvalidOperationException -- stale-duplicate dedupe

  May-11 bare-title BUG-AUTO suggests for [CHROME:POS] InvalidOperationException are stale duplicates. Current source (b5...

- ChatSessionGuard centralises wkchat sparing

  Single source of truth for chat-session detection used by all wkappbot-core kill sweeps. Cmdline + parent-pid layers st...

- Codex Global Approval

  Set Codex CLI to never ask for approval and permit wkappbot execution with broad allow rules.

- Codex-Friendly Skill Template

  A reusable template for writing wkappbot skills that are useful to both Claude and Codex. Use short, orthogonal options...

- CommandHelpMap entry required for every dispatched command

  Every command in WKAppBot.CLI requires a CommandHelpMap entry in csharp/src/WKAppBot.CLI/Commands/CommandHelp.cs. When...

- ConPTY Enter-intercept two-phase decide-then-commit

  PseudoConsoleRunner's Enter handler uses Func string Action? as a two-phase gate. Interceptor returns null for passthro...

- Cookbook: Install Input Protection on a New A11y Action (Beginner)

  Unified guide: why user-input protection exists, how FocusStealSentinel + ResolveA11yTarget work conceptually, and the...

- Cookie consent strategy for AI web services: selective non-acceptance increases session capacity

  CONFIDENTIAL operator strategy: deliberately not auto-accepting cookie consent on AI service pages (ChatGPT, Gemini, et...

- Core skips leading launcher flags (--sudo etc.) before computing subcommand

  Core's DispatchCommand walks past pre-command flags (--sudo, --stderr, --only-eye, --only-core) when locating the subco...

- Crash reboot recovery: cascading failure pattern and full recovery checklist

  After system crash/Kernel-Power 41 reboot, Windows component startup order breaks causing cascading failures: Korean IM...

- Developer Skill Template

  Template for skills that help developers change code, refactor implementation, add tests, and ship behavior safely.

- Elevated proxy subprocess timeout HasExited check

  Admin Eye proxy must distinguish 'process hung' from 'grandchild holds stdout pipe' after WaitForExitAsync 30s cancel

- Eye DPI drift: snap timing fix

  AnimateMoveTo snap must wait 150ms after animation for WM_DPICHANGED to settle. Never remove snap -- it corrects WPF mi...

- Eye _lastFailedSwapStamp 10-min auto-expiry

  _lastFailedSwapStamp permanently blocked future hot-swaps after a single transient failure. _lastFailedSwapStampUtc tra...

- Eye crash recovery via mutex force-release

  When Eye crashes and cannot restart due to AbandonedMutexException, force-release the 3 named mutexes via PowerShell .N...

- Eye handoff: age guard prevents false-positive on session start

  Eye CWD-fallback path was picking up a previous session large JSONL and firing handoff immediately on Eye restart. Fix:...

- Eye health degradation: MouseCCA analyze-hack spawn storm fix

  Eye health drops to ~34% when MouseCCA analyze-hack server returns non-JSON (U prefix = Unhandled exception or Unauthor...

- Eye mutex force-release recovery

  Force-release abandoned Eye mutexes via PowerShell when Eye cannot restart after crash. Mutex names: Global\WKAppBotEye...

- FileNotFoundException System.Net.Http during hotswap is binary corruption false positive

  When CLR-shim assemblies (System.Net.Http, System.IO.FileSystem.Watcher, etc.) fail to load with FileNotFoundException...

- Homework reminder payload-hash dedup prevents 8x re-fire across multi-instance states

  Process-wide _lastHomeworkHash and _lastHomeworkFiredAt fields prevent identical payload from re-firing within 10min re...

- Hot-Swap Operator Cheatsheet (--force-swap + manual + 3-layer architecture)

  Hot-swap operator reference. Covers force-swap (wkappbot --sudo --force-swap), manual orphan-kill + restage for stuck b...

- Korean argv CP949 fix: TryRecoverUtf8Argv at Main() entry recovers CreateProcessA mangled args

  Korean text passed from Git Bash gets mangled by CreateProcessA CP949 conversion. TryRecoverUtf8Argv() detects and reco...

- Launcher --sudo probe: File.Exists check before ConnectAsync

  v6.0.1 fix for HANDSHAKE-MISS false positives on cold-start sudo. Launcher/Program.cs checks File.Exists('\.\pipe\wkapp...

- Launcher IocpPipeRelay buffers stderr by default

  Under DETACHED_PROCESS spawn, Core stderr is BUFFERED not passthrough. Default showStderr=false -- stderr only shown on...

- Launcher NativeAOT build needs vswhere.exe in PATH

  RESOLVED in commit 65846b1: WKAppBot.Launcher.csproj now auto-prepends the VS Installer dir to the MSBuild process PATH...

- MCP Admin Core Swap: Elevation-Triggered Graceful Cutover

  How MCP Launcher spawns an elevated admin Core on demand and cuts over transparently, with hot-swap deferral while admi...

- MCP Automation Patterns

  Router for MCP desktop/browser automation patterns. Read T1 for surface contract, T2 for desktop control, and T3 for st...

- MCP Automation T1 Core

  Core MCP surface for WKAppBot. Covers the wkappbot_cli JSON-RPC contract, command mapping, and MCP registration smoke c...

- MCP Automation T2 Desktop Control

  Desktop control tier for WKAppBot MCP. Covers a11y, win-click, caller HWND routing, and the Standard AppBot Window rule...

- MCP Automation T3 Stability Ops

  Operational stability tier for WKAppBot MCP. Covers admin core cutover, hot-swap orphan cleanup, and MCP warmup guards...

- MDI 자식창 포커스리스 Z순서 올리기

  BringWindowToTop steals focus before SetWindowPos(SWP_NOACTIVATE) can suppress it. Use SetWindowPos(HWND_TOP+SWP_NOACTI...

- NVIDIA Overlay blackscreen kill

  NVIDIA Overlay (GeForce Experience Share) periodically creates fullscreen black windows causing desktop blackout and ta...

- Operator Skill Template

  Template for skills that help operators inspect, verify, audit, dry-run, and safely execute existing systems without ch...

- Post-Compaction Recovery

  Recovery checklist after compaction or session reset; re-load recent state, logs, and active drafting context.

- Project Skill Template

  Template for skills that capture repository-specific rules, exceptions, and local conventions so the right project-only...

- PulseStep force mode ring trail for elevation prompts

  PulseStep.Line() and Finish() always emit to stderr regardless of WKAPPBOT_PROFILE flag. Ring trail keeps last 20 lines...

- Recover Korean console after crash reboot

  When Korean/Hangul input fails only in console after system crash reboot or Kernel-Power 41, run scripts/recover-korean...

- Repair Korean IME inside running Windows Terminal

  Re-arm Korean IME (TSF) inside an already-running Windows Terminal WITHOUT restarting WT. Use after crash reboot when c...

- SVCheck ***

  d

- Safe Bug Fix Protocol -- before touching any working code

  Checklist to prevent regression cascades. Read before fixing any BUG-AUTO or suggest. Core rule: understand WHY code ex...

- ScenarioRunner: process: key + --no-dup flag for existing process adoption

  Adopt a running process instead of launching when process: YAML key is set or --no-dup CLI flag is used. Avoids duplica...

- Skill Audience Taxonomy

  A standard taxonomy for splitting wkappbot skills by audience and responsibility. Use it to decide whether a skill shou...

- Skill Authoring Rules + Contribute & Edit Workflow

  T1 core tier. Decision rules for wkappbot skill contribute and edit: English-only rule, never-direct-edit-json safety,...

- Skill Reminder News and Invocation Log — discoverability system

  Three-layer skill discoverability: (A) on-error hint: related skills shown on non-zero exit; (B) on-success tip: unseen...

- Slack Socket Mode app_token renewal -- invalid_auth symptom and fix

  Eye Slack WebSocket drops with invalid_auth when the xapp-1 app-level token is revoked. Symptom: Eye log shows Slack re...

- Spam popup dismiss: WM_CLOSE patterns + OneDrive toast screenshot heuristic

  Two-tier spam dismissal. Tier1: WM_CLOSE by cls/title substring (HncUpdateTray=Coupang ads, OneDrive Win32). Tier2: One...

- StepOrderTest

  test ordering

- StepOrderTest2

  test 2

- Suggest 2-of-2 Co-Resolve: Cross-Author Confirmation

  When wkappbot suggest resolve is called by a different channel than the suggest author, requires 2-of-2 confirmation be...

- Suggest Submit: Similarity Nudge with Merge Command

  After filing a suggest, shows related existing suggests (>=40% word overlap) and a ready-to-run merge command. Best-eff...

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- Swap Evidence ***

  swap fix evidence

- SwapClean ***

  clean swap test post-kill

- SwapFix ***

  swap evidence

- SwapFix ***

  swap evidence

- SwapTest ***

  swap test

- SwapTrace ***

  swap trace

- Test-Step-Repeated

  test desc

- Test-Steps-File

  test desc

- TestStepsFile

  test --steps-file

- Think Eye: per-workspace VS Code status card overlay

  EyeCard WPF overlay spawned by Eye per VS Code window. Upper-right 5px. Dim 50% unfocused, transparent hover-when-focus...

- Triad Ask: Simultaneous Q, 정반합 Debate, Tool Loop, Agent Mode, Session Recovery

  Usage patterns for the 3-AI triad system (Gemini/GPT/Claude): parallel questioning, thesis-antithesis-synthesis debate,...

- User Skill Template

  Template for skills that explain product actions to end users without exposing internal implementation details.

- WKAppBot Build Verify Workflow T2 HowTo

  T2 domain tier. Refactor loop, partial-class pattern, common errors, smoke check commands.

- WKAppBot Build Verify Workflow T3 Reference

  T3 reference tier. Chrome placement tolerance, skill sync rule, BUG-AUTO history.

- WKAppBot Logging Architecture: Core Workers, Launcher Relay, Error Guarantees

  Past Core workers toiled tirelessly yet left no logs — their labor unrecorded, their struggles invisible. Complete guid...

- WKAppBot build + verify workflow (for AI code agents)

  How to build and verify WKAppBot after code changes. Required reading for Codex / Haiku / any AI CLI delegated to refac...

- Web AI Ask Infrastructure: Pump, CDP Worker, Editor Send Paths

  Architecture of the page-side JS pump worker and C# orchestration layer for sending prompts to web AI (Claude/GPT/Gemin...

- ZTest

  z

- [Kampala YC W26] Reverse-Engineer Apps into APIs — HTS Win32 automation pattern

  Kampala (YC W26) reverse-engineers apps into APIs by analyzing network traffic and UI patterns. Applicable to WKAppBot...

- [PUNK / Twill.ai] Remote Claude Code Control + Agent Delegation — Eye remote pattern

  PUNK (punkcode.rocks) and Twill.ai (YC S25) show demand for lightweight remote agent control + result delivery. Maps to...

- [Talon / OSA-MCP / Mirroir / Lilith-zero] MCP Desktop+Browser Automation — integration patterns

  ARCHIVED: moved to mcp-automation-patterns

- [UI Automata / OculOS / DirectShell / Talon] AI Desktop Automation Competitors — 2026-04 HN Survey

  April 2026 HN survey of AI desktop automation tools competing with or complementing WKAppBot. Key players: UI Automata...

- a11y Action Auto-Diff

  Auto-diffs parent node state before/after mutating a11y actions. File-edit format output. 1s retry on no-change then er...

- a11y auto-find grap verify: skip MISS report for empty {} pattern (WPF overlays)

  When hitCompact is {} or { } (empty grap, e.g. FocuslessWarning/WhisperRing WPF overlays), skip AutoRegisterBug for ver...

- a11y callout -- input staging popover

  a11y type callout -- input staging approval popover before typing. Shows text-to-type in retro green bubble, tail point...

- a11y close and trusted-click FocusSafe guard

  FocusSafe.ShouldYieldToActiveUser guard added before a11y close and trusted-click operations to prevent focus stealing...

- a11y command always-print resolved target full-path grap spec

  MANDATE for every a11y command processor (invoke click press inspect screenshot --target etc) in WKAppBot.CLI: must pri...

- a11y find FastExit + UIA skip for Electron/MFC (1-5s performance)

  Key optimizations making a11y find/inspect/windows/ocr 1-5s instead of 50s in v6.2+. Electron/MFC UIA traversal skip, F...

- a11y focus-steal: user-active silent yield in RestoreFocusWithRetryAsync

  When RestoreFocusWithRetryAsync is fighting a focus steal (Chrome/Electron) but user is actively typing (<1.5s idle), t...

- a11y focus: SmartSetWindowOrder + full tier chain (v6.8+)

  WKAppBot complete OS-level focus service spec. SmartSetWindowOrder is the single focusless Z-order primitive — called b...

- a11y hack: --ocr opt-in + VisionWorker sentinel bridge (focusless)

  a11y hack used to run CCA + UIA + OCR + Gemini Vision always. Heavy runs (every invocation) would fire CDP tab activati...

- a11y kill JSON5 grap support

  a11y kill accepts JSON5 grap {proc:'x',pid:N,cmd:'...'} with AND-logic, reusing WindowFinder.TryParseMultiFieldPattern

- a11y screenshot: crash-safe layered alpha restore guard

  Crash-safe restore of layered window alpha during a11y screenshot suppression -- prevents windows staying invisible aft...

- a11y set-value: 50ms delay + read-back warning for Win11 RichTextBox and Chrome stale ValuePattern

  DoSetValue() now waits 50ms after ValuePattern.SetValue and reads back via ReadElementValue. If empty, logs stale-cache...

- a11y type/invoke: parent window falsely detected as blocker on elevated dialogs

  When a11y type reports blocker persists and aborts, check if the blocker IS the parent of the target. Parent windows ar...

- ask prompt pump: watchdog dismiss+resend recovery before BUG-AUTO

  AskCommands.CdpPromptPump watchdog fires when editor retains text 10s after submit -- cause is usually a promo popover...

- ask run start pwsh path resolution

  RunStart in AskCommands.RunRegistry.cs resolves pwsh/powershell to full path before Process.Start to survive parallel-w...

- ask-*/triad CDP focus-steal coverage via sentinel user-active yield

  ask gpt / ask claude / ask gemini / ask triad all route through ChromeLauncher + CDP attach which used to steal foregro...

- ask/web Chrome launch: AppBotPipe focusless guard allowlist

  ChromeLauncher uses UseShellExecute=true+WindowStyle.Minimized so Chrome opens minimized (taskbar only, no focus theft)...

- cdp probe port-9 guard: discard low-port values to prevent HttpRequestException

  CDP probe now skips ports below 1024 (discard range) preventing 127.0.0.1:9 HttpRequestException that blocked suggest/e...

- claude-usage: state-file dedup prevents Slack spam after reset

  claude-usage used to post a Slack alert every call if thresholds tripped -- scheduled hourly runs spammed CRITICAL. Now...

- ev-delete-step-***-577960

  evidence: delete-step

- ev-delete-step-***-592561

  evidence: delete-step

- ev-draft-***

  evidence: draft persistence

- ev-draft-***

  evidence: draft persistence

- ev-draft-***

  evidence: draft persistence

- ev-insert-after-***-577960

  evidence: insert-after

- ev-insert-after-***-592561

  evidence: insert-after

- ev-insert-before-***-577960

  evidence: insert-before

- ev-insert-before-***-592561

  evidence: insert-before

- ev-move-step-***-577960

  evidence: move-step

- ev-move-step-***-592561

  evidence: move-step

- ev-single-step-***-577960

  evidence: single-step

- ev-single-step-***-592561

  evidence: single-step

- ev-step-order-***

  evidence: step ordering

- ev-step-order-***

  evidence: step ordering

- ev-step-order-***

  evidence: step ordering

- ev-steps-file-***

  evidence: steps-file

- ev-steps-file-***

  evidence: steps-file

- ev-swap-steps-***-577960

  evidence: swap-steps

- ev-swap-steps-***-592561

  evidence: swap-steps

- eye FindAllPrompts blocking fix: cooldown 10s + MCP warmup guard

  FindAllPrompts no longer blocks at startup. Cooldown raised 1s->10s. SupplementCardsFromPrompts skipped until MCP cache...

- hot-swap zombie guard: kill stale wkappbot-core workers after Eye swap

  After Eye hot-swap, old wkappbot-core MCP/analyze/slack-route workers are not killed by CoreSwapWatcher alone. A post-s...

- newchat CWD guard: skip /clear if hwnd not in FindAllAiConsolesByCwd result

  newchat injected /clear into wrong terminals when multiple Claude Code sessions shared CWD. All strategies now cross-ch...

- nfrunlite reconnect popup dismiss via a11y click window-relative coords

  Untitled #32770 reconnect popup in nfrunlite: a11y invoke fails (treated as blocker). BM_CLICK fails (UIPI). Solution:...

- reddit flair modal Add button: UIA-invisible, CDP trusted click fails, only physical click works

  Reddit flair modal dialog buttons (Add, Cancel) are NOT exposed in UIA tree. Only the X-close button appears as UIA But...

- screensaver close: kill all running screensaver processes

  wkappbot screensaver close finds every wkappbot-core process whose command line contains 'screensaver' and sends WM_CLO...

- screensaver command -- launch, close, and Eye integration

  wkappbot screensaver: launch WPF sunset overlay (idle 10s+, per-monitor) or wipe all screensaver windows (4-pass close)...

- screenshot --mask: transparency outside target rects

  Captures union bbox of multiple grap targets, applies 40% alpha outside individual target rects. PNG output with transp...

- screenshot: smart multi-grap compositing with painter's algorithm

  Per-target PrintWindow+CopyFromScreen compositing, back-to-front Z-order, transparency mask outside targets. Ambiguous...

- skill edit --add-step dedup behavior

  wkappbot skill edit --add-step skips identical content; prevents accidental duplicate steps when same string is added t...

- skill read --if-newer: skip export if cached version is current

  wkappbot skill read <id> --if-newer skips re-exporting SKILL.md when cached version matches catalog. Efficient for AI a...

- skill read: auto-export to Claude Code .claude/skills/

  wkappbot skill read auto-exports to .claude/skills/<id>/SKILL.md when invoked from Claude Code. Raw skill JSON section...

- speak --bg: interrupt via X / ESC / caller-exit

  speak --bg now supports mid-playback stop: X button on karaoke overlay, ESC key, Alt-F4, or --caller-pid process exit....

- speak: dynamic safety timer based on text length and markers

  Safety timer arms on first KaraokeTick when playback starts, not on window load. Duration = max(60s, lastMarker.AudioPo...

- sudo proxy CP949 stdout fix: ElevatedEyeProxy StandardOutputEncoding=UTF8

  wkappbot-core --sudo output was CP949 mojibake. ElevatedEyeProxy now sets StandardOutputEncoding=UTF8 so Korean proxy o...

- suggest --requirement error messages: format example + launcher flag

  When --requirement has bad format or contains launcher flags, error messages now show correct format examples. CommandH...

- suggest resolve CMD guard: word-boundary key extraction fix

  CMD guard extracts affected commands from suggest text using HasCmdToken helper that checks word boundary after match,...

- suggestions.jsonl JSON escape bug: Windows paths with backslash need double-escape

  Any suggest entry written with raw Windows path strings (e.g. %USERPROFILE%\.wkappbot, D:\path) may contain single-back...

- swap test

  diagnosing swap

- taskkill compat shim: a11y-first kill routing

  v1.6 STRICT POLICY: --force <pid1,pid2,...> is the ONLY way to kill anything via taskkill -- listed PIDs are killed exa...

- web open --keeplogin-Ns: login session keepalive

  Keeps web login session alive using Web Worker timer (not throttled in background tabs). Injects URL after 60s user idl...

- win-click PostMessage tier: focusless on elevated MFC HTS (nfrunlite)

  win-click 3-tier cascade achieves focusless clicks on elevated MFC HTS (nfrunlite/nkrunlite) via PostMessage WM_LBUTTON...

- win-click: auto-dismiss empty-title transparent overlay (nfrunlite/nkrunlite)

  Physical click path: empty-title non-#32770 blocker overlays (e.g. nfrunlite transparent guard window) are auto-dismiss...

- wkchat .lnk shortcut window geometry update -- write WindowOrigin into NT_CONSOLE_PROPS

  On wkchat exit (and after window move/resize), locate the .lnk that launched this console and write the current WindowO...

- wkchat ConPTY enter-intercept + rename-first hardlink live-swap

  Three techniques for wkchat (wkappbot chat cmd / claude) flow. (1) Enter-intercept uses Func<string, Action?> two-phase...

- wkchat ConPTY enter-intercept two-phase

  PseudoConsoleRunner Enter-intercept uses Func<string,Action?> two-phase. null returns passthrough so dir works. non-nul...

- wkchat session routing guard -- nested calls stay session-aware

  wkchat starts an interactive chat session. When the current or parent process already carries a chat session marker, de...

- wkchat welcome banner -- claude-code style boxed greeting on chat startup

  Every `wkappbot chat` (interactive) prints a boxed welcome banner at session start: WKAppBot ASCII logo, version, curre...

- wkchat window geometry: save on change + exit + restore on init + shortcut update

  wkchat must restore terminal window to last-used position/size on startup, save geometry on every move/resize and on ex...

- 런처 크리티컬 명령 Core 직접 라우팅

  Commands like suggest, skill, eye bypass normal launcher pipe and route directly to Core for reliability.

- 통합 알림 디스패처 + 파일 기반 스케줄러

  Single WkNotify() entry point routes to Slack/Prompt/Speak/Callout/Signal. Deferred/recurring prompts stored in {cwd}/....

- 파일명이 곧 스케줄 -- pending_prompts 패턴

  Zero-memory scheduler: filename encodes trigger time + repeat + countdown. No DB, no daemon, no in-memory state. Surviv...