<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>whatupwolf</title><description>Personal brand, portfolio, and always-on experimentation lab.</description><link>https://whatupwolf.com/</link><item><title>[experiment] Stamp engine dates in the box&apos;s local timezone, not UTC</title><link>https://whatupwolf.com/lab/2026-07-29-stamp-engine-dates-in-the-box-s-local-timezone-not-utc/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-29-stamp-engine-dates-in-the-box-s-local-timezone-not-utc/</guid><description>Engine dates now stamp in the box&apos;s local timezone instead of UTC, so evening cycles stop dating themselves tomorrow.</description><pubDate>Wed, 29 Jul 2026 18:04:00 GMT</pubDate></item><item><title>[experiment] Move post-failure recovery inside the single-instance lock</title><link>https://whatupwolf.com/lab/2026-07-29-move-post-failure-recovery-inside-the-single-instance-lock/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-29-move-post-failure-recovery-inside-the-single-instance-lock/</guid><description>Post-failure git recovery now runs inside the single-instance lock in both runners, closing the window where a second tick could have its untracked files cleaned out.</description><pubDate>Wed, 29 Jul 2026 17:03:00 GMT</pubDate></item><item><title>[experiment] Build the **App Subdomain** research sprint</title><link>https://whatupwolf.com/lab/2026-07-24-build-the-app-subdomain-research-sprint/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-24-build-the-app-subdomain-research-sprint/</guid><description>Added the App Subdomain one-shot research sprint: a briefing-type experiment that surveys what it would take to host server-side LLM interaction alongside the static Cloudflare deploy, ending in ranked options for Wolf&apos;s review.</description><pubDate>Fri, 24 Jul 2026 20:02:00 GMT</pubDate></item><item><title>[experiment] Give writing posts their own pages and fix the RSS guid collision.…</title><link>https://whatupwolf.com/lab/2026-07-24-give-writing-posts-their-own-pages-and-fix-the-rss-guid-coll/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-24-give-writing-posts-their-own-pages-and-fix-the-rss-guid-coll/</guid><description>Writing posts get per-post routes and the RSS feed&apos;s writing guid collision is fixed.</description><pubDate>Fri, 24 Jul 2026 18:03:00 GMT</pubDate></item><item><title>[experiment] Build the Voice Loop — a browser-only BYO-key spoken loop around Claude that instruments the cascaded latency budget per turn.</title><link>https://whatupwolf.com/lab/2026-07-24-build-the-voice-loop-prototype/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-24-build-the-voice-loop-prototype/</guid><description>Built the Voice Loop — a self-contained BYO-key tool at /tools/voice-loop.html that closes a full spoken loop around Claude using only the browser (SpeechRecognition in, speechSynthesis out, no server and no second vendor) and instruments the cascade: speech-end → transcript, transcript → first token, first token → first audio, and the total stop-talking-to-start-speaking, live per turn with a session median. Push-to-talk and continuous turn-taking, barge-in, verbatim transcript alongside the conversation, and explicit copy that the browser&apos;s recogniser may ship audio to the browser vendor.</description><pubDate>Fri, 24 Jul 2026 17:10:00 GMT</pubDate></item><item><title>[experiment] Finish wiring the visitor tech-level switch into the routes that still…</title><link>https://whatupwolf.com/lab/2026-07-24-finish-wiring-the-visitor-tech-level-switch-into-the-routes/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-24-finish-wiring-the-visitor-tech-level-switch-into-the-routes/</guid><description>Wired the tech-level switch into Home, Work, Writing, Video and Now, and made the work/writing/video summaries level-aware.</description><pubDate>Fri, 24 Jul 2026 17:03:00 GMT</pubDate></item><item><title>[experiment] Build the Branching Canvas Conversation — a BYO-key tool where a chat is laid out spatially on a canvas and any message can be branched into a parallel thread.</title><link>https://whatupwolf.com/lab/2026-07-21-build-the-branching-canvas-conversation-tool/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-21-build-the-branching-canvas-conversation-tool/</guid><description>Built the Branching Canvas Conversation — a self-contained BYO-key tool at /tools/branching-chat.html that models the chat as a message tree on a hand-rolled pan/zoom canvas, streams from the Anthropic API, and lets you branch off any message into a parallel thread; sending from a node assembles context as the root-to-node path, with a toggle between the canvas and a linear chat view.</description><pubDate>Tue, 21 Jul 2026 15:40:00 GMT</pubDate></item><item><title>[experiment] Add an in-code single-instance lock to engine/run-cycle.mjs AND…</title><link>https://whatupwolf.com/lab/2026-07-21-add-an-in-code-single-instance-lock-to-engine-run-cycle-mjs/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-21-add-an-in-code-single-instance-lock-to-engine-run-cycle-mjs/</guid><description>Added a dependency-free pidfile single-instance lock to both engine runners so overlapping runs can&apos;t corrupt each other&apos;s git state.</description><pubDate>Tue, 21 Jul 2026 03:05:00 GMT</pubDate></item><item><title>[experiment] Build the Memory Inspector tool — a BYO-key chat whose memory store is visible beside it, with per-turn extraction and confidence/sensitivity shading.</title><link>https://whatupwolf.com/lab/2026-07-21-build-the-memory-inspector-tool-a-byo-key-chat-whose-memory/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-21-build-the-memory-inspector-tool-a-byo-key-chat-whose-memory/</guid><description>Built the Memory Inspector at /tools/memory-inspector.html — a browser-direct BYO-key chat whose extracted memory store sits open beside it, where each entry&apos;s background shading encodes inferred confidence and sensitivity, and entries can be edited or forgotten inline.</description><pubDate>Tue, 21 Jul 2026 01:05:00 GMT</pubDate></item><item><title>[experiment] Build the Reasoning-trace A/B — a client-only demo where you judge whether to trust an AI&apos;s reasoning trace, some of which reach the right answer through a subtle fabricated or broken step.</title><link>https://whatupwolf.com/lab/2026-07-20-build-the-reasoning-trace-a-b-interactive-demo/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-20-build-the-reasoning-trace-a-b-interactive-demo/</guid><description>Built the Reasoning-trace A/B — a self-contained, offline tool at /tools/reasoning-trace.html that presents an AI&apos;s confident answer plus a reasoning trace and asks the visitor to trust or flag it; half the traces reach the same correct answer through a subtle fabricated fact, invented premise, or broken justification, and the tool tracks how many flaws the visitor caught versus how many fooled them. A reveal-timing toggle (instant / delayed / on-demand) demonstrates the finding from Seeing the Reasoning that presentation barely moves trust while reliability does.</description><pubDate>Mon, 20 Jul 2026 20:40:00 GMT</pubDate></item><item><title>[experiment] Extract the experiment registry into a module and collapse the wrapper…</title><link>https://whatupwolf.com/lab/2026-07-20-extract-the-experiment-registry-into-a-module-and-collapse-t/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-20-extract-the-experiment-registry-into-a-module-and-collapse-t/</guid><description>Extracted the experiment registry into engine/experiments/registry.mjs and collapsed the three cron wrappers into one parametric engine/run-experiment.sh, with the named scripts kept as backward-compat shims.</description><pubDate>Mon, 20 Jul 2026 19:20:00 GMT</pubDate></item><item><title>[experiment] Build the **Interaction Lab** standing digest</title><link>https://whatupwolf.com/lab/2026-07-20-build-the-interaction-lab-standing-digest/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-20-build-the-interaction-lab-standing-digest/</guid><description>Added the Interaction Lab standing digest — a monthly recurring experiment that keeps the LLM-interaction landscape fresh after the one-shot sprint.</description><pubDate>Mon, 20 Jul 2026 18:43:00 GMT</pubDate></item><item><title>[experiment] Build the Generative UI Canvas — a BYO-key tool where a typed request makes Claude generate interactive app windows on a canvas, and interacting with a generated app re-invokes the model.</title><link>https://whatupwolf.com/lab/2026-07-20-build-the-generative-ui-canvas-a-byo-key-tool-where-claude-generates-app-windows/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-20-build-the-generative-ui-canvas-a-byo-key-tool-where-claude-generates-app-windows/</guid><description>Built the Generative UI Canvas — a self-contained BYO-key tool at /tools/generative-ui.html that streams from the Anthropic API, holds three window-manipulation tools for Claude, and renders generated apps in sandboxed iframes on a hand-rolled pan/zoom canvas; interacting with a window posts back and re-invokes the model.</description><pubDate>Mon, 20 Jul 2026 18:20:00 GMT</pubDate></item><item><title>[briefing] Interaction Landscape — 2026-07-20</title><link>https://whatupwolf.com/lab/2026-07-20-interaction-landscape/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-20-interaction-landscape/</guid><description>Surveyed 32 verified LLM interaction patterns across nine areas — generative UI protocols, spatial and direct-manipulation interfaces, agent-initiated pausing, elicitation and memory UX — with a browser-only BYO-key generative UI canvas as the top prototype candidate.</description><pubDate>Mon, 20 Jul 2026 16:51:00 GMT</pubDate></item><item><title>[experiment] Build the **Interaction Landscape** research sprint</title><link>https://whatupwolf.com/lab/2026-07-20-build-the-interaction-landscape-research-sprint/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-20-build-the-interaction-landscape-research-sprint/</guid><description>Added the one-shot Interaction Landscape research sprint — a survey of novel LLM interaction paradigms that renders as a draft briefing for review.</description><pubDate>Mon, 20 Jul 2026 16:46:00 GMT</pubDate></item><item><title>[experiment] Build a visitor-selectable **tech level** for the whole site. A…</title><link>https://whatupwolf.com/lab/2026-07-19-build-a-visitor-selectable-tech-level-for-the-whole-site-a/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-19-build-a-visitor-selectable-tech-level-for-the-whole-site-a/</guid><description>Added a visitor-selectable tech level — technical, tech-aware, or plain — that re-reads the whole site from pre-authored copy variants, switched client-side by CSS with no per-element JavaScript.</description><pubDate>Sun, 19 Jul 2026 20:39:00 GMT</pubDate></item><item><title>[experiment] Extend loop-skip so it skips a backlog item whose branch has ANY…</title><link>https://whatupwolf.com/lab/2026-07-19-extend-loop-skip-so-it-skips-a-backlog-item-whose-branch-has/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-19-extend-loop-skip-so-it-skips-a-backlog-item-whose-branch-has/</guid><description>Loop-skip now treats a branch with ANY PR — open, closed, or merged — as already built, so a superseded PR can no longer make the loop rebuild the same item.</description><pubDate>Sun, 19 Jul 2026 17:34:00 GMT</pubDate></item><item><title>[experiment] Build a Tools home and link Lab entries to their tools. FOUR parts</title><link>https://whatupwolf.com/lab/2026-07-19-build-a-tools-home-and-link-lab-entries-to-their-tools-four/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-19-build-a-tools-home-and-link-lab-entries-to-their-tools-four/</guid><description>Added a tools content collection, a /tools listing page, a Tools nav link, and an optional tool field that links Lab entries to the tool they shipped.</description><pubDate>Sun, 19 Jul 2026 17:24:00 GMT</pubDate></item><item><title>[experiment] Revamp the Lab page filter UX (src/components/LabFilter.tsx + its use…</title><link>https://whatupwolf.com/lab/2026-07-19-revamp-the-lab-page-filter-ux-src-components-labfilter-tsx-i/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-19-revamp-the-lab-page-filter-ux-src-components-labfilter-tsx-i/</guid><description>Replaced the Lab page&apos;s per-tag button row with a search box plus tag/type dropdowns, backed by a unit-tested pure filter module.</description><pubDate>Sun, 19 Jul 2026 15:33:00 GMT</pubDate></item><item><title>[experiment] De-duplicate the Cook Mode Lab entries</title><link>https://whatupwolf.com/lab/2026-07-19-de-duplicate-the-cook-mode-lab-entries/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-19-de-duplicate-the-cook-mode-lab-entries/</guid><description>Removed the duplicate generic build-log Lab entry for Cook Mode, leaving the single dedicated writeup.</description><pubDate>Sun, 19 Jul 2026 15:28:00 GMT</pubDate></item><item><title>[experiment] Research and build a first prototype of a better recipe/cooking tool: a self-contained single-file reader at public/tools/cooking.html targeting the known pain points of cooking from a screen.</title><link>https://whatupwolf.com/lab/2026-07-18-cook-mode-a-self-contained-recipe-reader-for-messy-hands/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-cook-mode-a-self-contained-recipe-reader-for-messy-hands/</guid><description>Built Cook Mode — a dependency-free single-file recipe reader with one-step-at-a-time navigation, timers parsed out of the step text, ingredient scaling, unit conversion, and a screen wake lock.</description><pubDate>Sat, 18 Jul 2026 22:40:00 GMT</pubDate></item><item><title>[experiment] Add good-citizen defaults to engine/probes/site-health.mjs so the…</title><link>https://whatupwolf.com/lab/2026-07-18-add-good-citizen-defaults-to-engine-probes-site-health-mjs-s/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-add-good-citizen-defaults-to-engine-probes-site-health-mjs-s/</guid><description>Gave the Site Health probe good-citizen defaults — identifying User-Agent, per-origin robots.txt compliance, and a serialising rate limiter — with 25 new unit tests.</description><pubDate>Sat, 18 Jul 2026 21:13:00 GMT</pubDate></item><item><title>[experiment] Make the self-building loop skip a backlog item whose branch already…</title><link>https://whatupwolf.com/lab/2026-07-18-make-the-self-building-loop-skip-a-backlog-item-whose-branch/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-make-the-self-building-loop-skip-a-backlog-item-whose-branch/</guid><description>The loop now skips backlog items whose branch already has an open PR, so an unmerged gated PR no longer parks the cycle on the same item.</description><pubDate>Sat, 18 Jul 2026 21:08:00 GMT</pubDate></item><item><title>[experiment] Close the Site Health audit&apos;s security-header finding</title><link>https://whatupwolf.com/lab/2026-07-18-close-the-site-health-audit-s-security-header-finding/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-close-the-site-health-audit-s-security-header-finding/</guid><description>Added public/_headers so Cloudflare serves HSTS, nosniff, SAMEORIGIN, Referrer-Policy and a report-only CSP on all routes, with tests guarding the policy.</description><pubDate>Sat, 18 Jul 2026 07:45:00 GMT</pubDate></item><item><title>[monitor] Site Health — week of 2026-07-18</title><link>https://whatupwolf.com/lab/2026-07-18-site-health/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-site-health/</guid><description>Weekly automated audit of a monitored property: availability, response time, SSL, and link checks all came back clean; the security-header check did not.</description><pubDate>Sat, 18 Jul 2026 07:07:00 GMT</pubDate></item><item><title>[experiment] Create engine/run-health.sh (mirror engine/run-weekly.sh</title><link>https://whatupwolf.com/lab/2026-07-18-create-engine-run-health-sh-mirror-engine-run-weekly-sh/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-create-engine-run-health-sh-mirror-engine-run-weekly-sh/</guid><description>Added engine/run-health.sh cron wrapper for the site-health experiment and documented the Wednesday 07:00 crontab line.</description><pubDate>Sat, 18 Jul 2026 07:05:00 GMT</pubDate></item><item><title>[experiment] Add a per-experiment `kind` (digest|monitor) to…</title><link>https://whatupwolf.com/lab/2026-07-18-add-a-per-experiment-kind-digest-monitor-to/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-add-a-per-experiment-kind-digest-monitor-to/</guid><description>run-experiment.mjs now dispatches on a per-experiment `kind`, adding a monitor pipeline that probes, judges, archives the private report, and publishes only the sanitized public block.</description><pubDate>Sat, 18 Jul 2026 07:03:00 GMT</pubDate></item><item><title>[experiment] Write engine/experiments/site-health.md</title><link>https://whatupwolf.com/lab/2026-07-18-write-engine-experiments-site-health-md/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-write-engine-experiments-site-health-md/</guid><description>Wrote engine/experiments/site-health.md, the monitor operating manual that turns deterministic probe Findings into a PrivateReport with a fail-closed private/public split.</description><pubDate>Sat, 18 Jul 2026 06:59:00 GMT</pubDate></item><item><title>[experiment] Build engine/probes/site-health.mjs exporting `async probe(target)`…</title><link>https://whatupwolf.com/lab/2026-07-18-build-engine-probes-site-health-mjs-exporting-async-probe-ta/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-build-engine-probes-site-health-mjs-exporting-async-probe-ta/</guid><description>Built engine/probes/site-health.mjs — a deterministic Node fetch + node:tls site auditor — with 21 unit tests over mocked fetch/tls.</description><pubDate>Sat, 18 Jul 2026 06:55:00 GMT</pubDate></item><item><title>[experiment] Extract the pure sanitizer logic from src/lib/sanitize.ts into a new…</title><link>https://whatupwolf.com/lab/2026-07-18-extract-the-pure-sanitizer-logic-from-src-lib-sanitize-ts-in/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-extract-the-pure-sanitizer-logic-from-src-lib-sanitize-ts-in/</guid><description>Extracted the sanitizer into plain-JS src/lib/sanitize.core.mjs so engine .mjs code can import it; sanitize.ts is now a typed re-export.</description><pubDate>Sat, 18 Jul 2026 06:52:00 GMT</pubDate></item><item><title>[experiment] Make engine/run-experiment.mjs resilient to an existing remote branch</title><link>https://whatupwolf.com/lab/2026-07-18-make-engine-run-experiment-mjs-resilient-to-an-existing-remo/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-make-engine-run-experiment-mjs-resilient-to-an-existing-remo/</guid><description>run-experiment.mjs now steps a same-day re-run to the next free branch name instead of failing on a non-fast-forward push.</description><pubDate>Sat, 18 Jul 2026 06:50:00 GMT</pubDate></item><item><title>[digest] Agent Weekly — week of 2026-07-18</title><link>https://whatupwolf.com/lab/2026-07-18-agent-weekly/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-agent-weekly/</guid><description>Agent Weekly, July 11-18 2026: six verified items, led by Moonshot&apos;s 2.8T open-weight Kimi K3 and Thinking Machines&apos; first model Inkling; the week&apos;s loudest headlines (GPT-5.6, the MCP spec RC) fall outside the window.</description><pubDate>Sat, 18 Jul 2026 05:43:00 GMT</pubDate></item><item><title>[experiment] Build the Agent Weekly experiment</title><link>https://whatupwolf.com/lab/2026-07-18-build-the-agent-weekly-experiment/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-build-the-agent-weekly-experiment/</guid><description>Built the Agent Weekly experiment: a research-prompt + run-experiment.mjs runner that publishes a weekly type:digest Lab entry via publishBranch.</description><pubDate>Sat, 18 Jul 2026 05:08:00 GMT</pubDate></item><item><title>[experiment] Extract the commit/push/PR/account-restore machinery from…</title><link>https://whatupwolf.com/lab/2026-07-18-extract-the-commit-push-pr-account-restore-machinery-from/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-extract-the-commit-push-pr-account-restore-machinery-from/</guid><description>Extracted the commit/push/PR/account-restore machinery into a reusable publishBranch() in engine/publish.mjs and rewired run-cycle.mjs to call it.</description><pubDate>Sat, 18 Jul 2026 05:01:00 GMT</pubDate></item><item><title>[experiment] Add `digest` to the direct-publish policy in engine/lib.mjs so…</title><link>https://whatupwolf.com/lab/2026-07-18-add-digest-to-the-direct-publish-policy-in-engine-lib-mjs-so/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-add-digest-to-the-direct-publish-policy-in-engine-lib-mjs-so/</guid><description>Digest entries now publish direct (draft:false) via the direct-vs-review gate.</description><pubDate>Sat, 18 Jul 2026 04:58:00 GMT</pubDate></item><item><title>[experiment] Encode the direct-vs-review gate</title><link>https://whatupwolf.com/lab/2026-07-18-encode-the-direct-vs-review-gate/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-encode-the-direct-vs-review-gate/</guid><description>Encoded the direct-vs-review gate as a pure per-type policy and wired it into the runner&apos;s lab-entry render.</description><pubDate>Sat, 18 Jul 2026 04:14:00 GMT</pubDate></item><item><title>[experiment] Add engine/lib.mjs helper publicEntryFromReport(privateReport) that…</title><link>https://whatupwolf.com/lab/2026-07-18-add-engine-lib-mjs-helper-publicentryfromreport-privaterepor/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-add-engine-lib-mjs-helper-publicentryfromreport-privaterepor/</guid><description>Added publicEntryFromReport() to engine/lib.mjs — sanitizes a private report then renders a public lab entry, failing closed if a secret leaks.</description><pubDate>Sat, 18 Jul 2026 04:07:00 GMT</pubDate></item><item><title>[experiment] Make engine/run-cycle.mjs re-runnable</title><link>https://whatupwolf.com/lab/2026-07-18-make-engine-run-cycle-mjs-re-runnable/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-make-engine-run-cycle-mjs-re-runnable/</guid><description>Made the lab engine runner re-runnable — reuses an existing lab/&lt;slug&gt; branch and returns to a clean main on any cycle failure.</description><pubDate>Sat, 18 Jul 2026 03:10:00 GMT</pubDate></item><item><title>[experiment] Quote unsafe tags in renderLabEntry (engine/lib.mjs)</title><link>https://whatupwolf.com/lab/2026-07-18-quote-unsafe-tags-in-renderlabentry-engine-lib-mjs/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-quote-unsafe-tags-in-renderlabentry-engine-lib-mjs/</guid><description>renderLabEntry now quotes numeric and YAML-reserved-word tags so they stay strings.</description><pubDate>Sat, 18 Jul 2026 02:49:00 GMT</pubDate></item><item><title>[experiment] Harden the sanitizer secret-scan in src/lib/sanitize.ts against…</title><link>https://whatupwolf.com/lab/2026-07-18-harden-the-sanitizer-secret-scan-in-src-lib-sanitize-ts-agai/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-harden-the-sanitizer-secret-scan-in-src-lib-sanitize-ts-agai/</guid><description>Hardened the lab-report sanitizer so secrets containing quotes or backslashes can&apos;t evade the leak scan via JSON escaping.</description><pubDate>Sat, 18 Jul 2026 02:36:00 GMT</pubDate></item><item><title>[experiment] Fix currentGhUser() in engine/run-cycle.mjs for gh 2.45: do not use the unsupported `gh auth status --active` flag; instead parse `gh auth status` output for the account marked active. Extract the parsing into a pure helper in engine/lib.mjs and unit-test it against sample gh output.</title><link>https://whatupwolf.com/lab/2026-07-18-fix-currentghuser-in-engine-run-cycle-mjs-for-gh-2-45-do-not/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-fix-currentghuser-in-engine-run-cycle-mjs-for-gh-2-45-do-not/</guid><description>Fixed currentGhUser() for gh 2.45 by parsing `gh auth status` instead of using the removed `--active` flag.</description><pubDate>Sat, 18 Jul 2026 02:21:00 GMT</pubDate></item><item><title>[experiment] Add an independent verify gate to engine/run-cycle.mjs: after the machine cycle, the runner itself runs `npm test` and `npm run check`; if either fails, override the cycle-report status to `flagged` and prefix the PR title with `[FLAGGED]`. Extract a pure `resolveStatus(reportStatus, testsPassed, checkPassed)` helper into engine/lib.mjs and unit-test it in engine/lib.test.mjs.</title><link>https://whatupwolf.com/lab/2026-07-18-add-an-independent-verify-gate-to-engine-run-cycle-mjs-after/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-add-an-independent-verify-gate-to-engine-run-cycle-mjs-after/</guid><description>The runner now independently re-runs npm test and npm run check after each cycle and flags work that fails.</description><pubDate>Sat, 18 Jul 2026 02:10:00 GMT</pubDate></item><item><title>[experiment] Build the sanitization filter — implement `src/lib/sanitize.ts` so `npm test` passes (allowlist + fail-closed; do not weaken the seeded tests)</title><link>https://whatupwolf.com/lab/2026-07-18-build-the-sanitization-filter-implement-src-lib-sanitize-ts/</link><guid isPermaLink="true">https://whatupwolf.com/lab/2026-07-18-build-the-sanitization-filter-implement-src-lib-sanitize-ts/</guid><description>Implemented the allowlist + fail-closed sanitizer so lab reports emit only curated public fields and never leak registered secrets.</description><pubDate>Sat, 18 Jul 2026 01:08:00 GMT</pubDate></item><item><title>[note] The lab is live</title><link>https://whatupwolf.com/lab/hello-lab/</link><guid isPermaLink="true">https://whatupwolf.com/lab/hello-lab/</guid><description>First entry. The site scaffold is up — Astro + Tailwind, paper theme, and this running log.</description><pubDate>Sat, 27 Jun 2026 10:00:00 GMT</pubDate></item><item><title>Why a lab, not a portfolio</title><link>https://whatupwolf.com/writing/why-a-lab/</link><guid isPermaLink="true">https://whatupwolf.com/writing/why-a-lab/</guid><description>A static portfolio is a snapshot. A lab is a feed — proof-of-work that updates itself.</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate></item></channel></rss>