app
Pup - the AI's own browser
Public Made by Adomby adom
pup gives your AI a real browser on your desktop that it drives completely, in the background, signed in as you: windows that never jump in front of your work, one shared profile that learns your logins, and every window labeled on the taskbar with its AI thread's name.
← Commit history
dev skill: the loop radar and the read-it-before-shipping rule
1 file changed
+18
dev-skills/pup-bridge-dev/SKILL.md+18@@ -1678,3 +1678,21 @@ must EXECUTE (a served-script syntax error renders only the static shell and is `node --check`, which cannot see inside the template literal - extract the <script> and parse it), SSE must emit, taskbar rows must never exceed chrome processes, and every action button must take real effect. Do not report the dashboard working from an API result; prove it on glass.++## Loop radar (John, 2026-08-23): every periodic loop is tracked, and you READ it before shipping++In-process Win32 calls and the bridge's own loops do not appear in ab's activity log, which was+John's radar for a misbehaving pup. The replacement is mandatory and already wired:++- Wrap EVERY `setInterval` body in `trackedLoop('<name>', <cadenceMs>, fn)`. It counts ticks per+ minute against the declared cadence, times each tick, logs `[loops] WARNING` when a loop ticks+ faster than 1.5x its cadence or a tick exceeds 2s, and writes a `[loops] last minute:` summary+ into the log ring every 60s (loops x ticks/avg ms, in-process win32 calls by function, ab+ enum_windows count).+- `/status` carries `loops`, `win32Calls`, `enumWindows`, and `log` (the ring). The dashboard+ shows the panel at the bottom: `<loop> actual/declared`, red when hot.+- Before shipping any change to a sweep, watcher, enforcer, or resolver: deploy to ConfRoomROG,+ wait two minutes, read `/status.loops` and the `[loops]` lines, and put the numbers in the+ changelog. A loop you added that is not in the panel is a bug (it is untracked).+- Never add a PowerShell spawn to a loop. `src/win32.js` (koffi) is the in-process path; if a+ Win32 call is missing there, add it there.