Build Log
Empty Canvas Rehearsal, Owner Loop Speed Fixes, and Canvas-2 Provisioning
August 29, 2026
Ran canvas-1's end-to-end field-readiness rehearsal (both the direct and shaped/confirmation paths), found and fixed a real wrong-Neon-branch bug undermining app isolation, cut Owner Loop Actor run time from ~11 minutes toward ~3, shipped real request-panel UX, and automated canvas app provisioning end-to-end.
Timeline
What shipped
forgekit-os/scripts/dispatch-owner-loop-requests.mjs — parameterized every hardcoded admin_intents SQL reference by real per-app table name (tableNameForApp), handled org_id's absence for canvas apps
forgekit-os/scripts/promote-app.mjs — added workspacePackages upload/rewrite mechanism (resolves real npm-workspace deps like forgekit-core in a standalone Vercel deploy), and publicVerificationPath-based liveness check (a real, declared public route gives an unambiguous 2xx instead of the prior always-check-root behavior that false-failed on Clerk-gated apps)
forgekit-os/scripts/spawn-fresh-actor.mjs — fixed a real cross-platform bug: the CLI entrypoint guard used a POSIX-only file:// URL comparison that silently never fired on Windows, meaning direct invocation from a Windows dev shell exited 0 having dispatched nothing
forgekit-os/scripts/retro.mjs — removed the unconditional `vercel --prod` auto-deploy step; retro now only regenerates journal/session artifacts, never deploys forgekit-website
.github/workflows/actor-spawn.yml — added a cached `npm ci` pre-warm step before the Actor starts, eliminating blind dependency-discovery trial-and-error on every run
experiments/canvas-1/lib/db/schema.ts (+ canvas-2/3/4) — added declaredClaims jsonb column
forgekit-os/scripts/resolve-owner-intent.mjs — widened (deliberately, confirmed with Zeb first) to accept an optional declaredClaimsJson argument, validated and written only for apps whose table has the column
experiments/canvas-1/lib/owner-loop-trigger.ts (+ canvas-2/3/4) — ported MedinaCHF's direct-dispatch trigger; canvas apps previously depended entirely on the apparently-never-firing scheduled cron
experiments/canvas-1/components/RequestPanel.tsx (+ canvas-2/3/4) — live polling while any request is in flight, response timestamps + real computed duration, honest dispatch-derived working-status labels, type-of-work labels, and a build-session (GitHub Actions run) link
forgekit-os/scripts/provision-canvas-app.mjs — new, fully automates Clerk app creation, Vercel project creation, Neon roles, all env vars, and all GitHub secrets for a canvas app
forgekit-os/journal/anvils.md + strikes.md — preserved the MedinaCHF cross-request continuation observation as field evidence
canvas-2 — a new, fully provisioned and live canvas app (Zeb's own playground, not a participant slot)