Daily note
Keep the work, release the worker
Resumable Scout scans and provider safeguards shipped; durable job history, a Database app and clearer AI test recordings took shape locally.
- Realtime
- AI agents
- Background jobs
- CI/CD
- npm
Saturday’s strongest thread was keeping useful work when an attempt stops: saved scan results, provider evidence, job history and reproducible releases. Steve’s projects also gained more direct controls for inspecting jobs, editing data and seeing what an AI test actually did.
Local implementation · durable jobs
A delivery can finish. Its history should remain.
The new RunnableJob model separates a retained record of work from the short-lived queue entry that gets it executed.
job_runs
Save the run
Retain the job’s identity, tenant, input and initial state before dispatch.
jobs + job_run_attempts
Deliver and checkpoint
A worker executes an attempt. Progress is saved under its ownership fence; retries have separate attempt records.
job_runs + job_run_events
Keep the outcome
Active delivery leaves the queue. State, results and diagnostic events remain available to inspect.
A small delivery queue and a useful history can coexist.
- GrowthScout · health scans resume instead of losing the next batch. Health work that makes progress before reaching its ten-minute delivery budget now continues with unfinished pages, preserving completed checks and ownership. A delivery making no progress stops rather than looping indefinitely. The change passed 104 affected tests and joined the deployed incident release. Recorded earlier runs had saved only 28 and 35 pages within ten minutes, so the previous 100-page allowance was not realistic capacity evidence. Resumption improves completion semantics; sustained production throughput was still unmeasured.
- GrowthScout and db3 · stop repeating provider and alert failures. The combined release added provider admission controls, saved-result recovery and shared quota cooldowns. Operator alerts prioritize fresh incidents and group repeated causes into bounded digests while preserving the original evidence. Streaming-response handling gained complete SSE framing, bounded buffers and recovery checks; nested admission errors can trigger configured fallback without discarding usage. Candidate Scout CI passed 3,375 tests, and cutover checks verified migrations, source identity, readiness and worker drain. The fixes do not establish restored provider credits or prove future natural delivery behaviour.
- GrowthScout · inspect retained job history and launch work manually. A local admin tool can launch crawl, health and embedding jobs, inspect progress, attempts, child jobs, errors and saved outcomes, and request cancellation. All 46 Scout jobs now use retained run records, with attempts and diagnostic events separate from active queue deliveries. AI requests carry run metadata; aggregate cost totals are still missing. Validation recorded 2,263 full-suite passes, with three failures corrected and passing focused reruns, plus framework, build and package checks. This work followed the live release and remains undeployed, with a migration required. The original onboarding presentation was restored; the richer progress panel remains a sample-data preview.
- db3 Framework · one editable source, captured code for releases. The framework checkout was reconciled with newer runtime code that still existed only in Platform. Scout and db3.ai can use that source through local development links; Scout deployments use explicitly refreshed snapshots and a guard against uncaptured changes. This preserves a self-contained release without requiring an npm publication for every edit. The later Scout release was committed, pushed and live-verified on the homepage and signed-in dashboard, with old workers drained. Its GitHub workflow finished successfully that evening. The separate db3.ai application was not deployed.
- db3.ai · a Database app with real editable rows. The independently enabled app provides database/table navigation, a paginated DOM Studio grid and a selected-row form beside it. The field designer uses actual db3 field types, generated ULID keys, configurable row labels and searchable links within a database. Local provider configuration was completed and database creation, table creation and row CRUD were verified. Twelve final feature tests, type checks and browser checks passed. The final full suite still had a framework-link failure and the release build was blocked by its link guard. This is working local infrastructure, not a launched hosted database service.
- db3.ai · make AI test actions visible. Live viewing and newly recorded videos now show a cursor, an amber click pulse and a drag indicator, while screenshots supplied to the AI stay clear. A DOM Studio tree presents folders with test documents as leaves; selecting a test opens its brief. Focused tests, types, build and desktop/mobile layout checks passed. The implementation remains local; existing recordings were not claimed to have been regenerated.
- GrowthScout · faster backend tests through schema reuse. Test infrastructure now prepares a complete schema once, gives workers separate databases and truncates/reseeds between batches. Migration tests retain their own isolation, including empty-database history checks. A server-focused command covers APIs, jobs, agents and persistence. Measured suite times fell from about 61 seconds to 0.3 for structured-agent tests and 53 seconds to 1.7 for article queue lifecycle, excluding shared startup. Two workers remain the default. A fully passing sub-ten-minute run and the revised four-worker benchmark were not demonstrated; a later attempt hit disk exhaustion during setup.
- db3 · framework documentation keeps its own app and URL prefix. Framework pages, assets, feeds and sitemap were moved onto the /framework prefix, with company links and legacy documentation redirects updated locally. The documentation app ultimately lives in the public framework repository, alongside the starter and packages. Seventy-five documentation tests, company tests, builds, package checks and browser routing checks supported the change. Repository changes were pushed, but the company/framework production routing transition remained unfinished. A proposed shared convention for app page and API mounts was still a design decision, not an implemented routing system.
- GrowthScout · a narrow Intercom test surface. A separate superuser panel can target one selected user with a direct Messenger message or a named event and JSON data. The framework gained an optional Intercom provider package rather than expanding every core notification contract. Tests, types, conventions and independent imports passed; browser verification used mocked provider responses. The change did not replace Scout’s existing bell, email or jobs, and actual message delivery remained unverified. The later repository release should not be mistaken for proof that a real Intercom message arrived.
- GrowthScout · a concrete short-video script. A 30-second vertical ad script now connects the blank-calendar problem to website context, research, a planned topic, an editable draft and the user’s own expertise. The production direction calls for readable captions and real product close-ups. This was a script and shot plan; no finished video, ad publication or campaign result was established.