proposal(scheduled-tasks): first-class Scheduled Tasks - #3236
proposal(scheduled-tasks): first-class Scheduled Tasks#3236reachjalil wants to merge 34 commits into
Conversation
|
@reachjalil is attempting to deploy a commit to the Different AI Team on Vercel. A member of the Team first needs to authorize it. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Complete Scheduled Tasks experience proposalThe comprehensive proposal and Fraimz are now hosted on Vercel: Open the complete 22-frame experience proposal It documents discovery, form and chat creation, schedule preview, immutable editing, authority before/after review, run-once and cancellation, durable receipts, exact session/artifact links, enabling and deterministic execution, notifications, restart recovery, upcoming grouping, denied authority, needs-attention, repair, resume, pause, all UI states/controls, threat boundaries, migration/rollback, and non-goals.
Representative framesDisabled proposal: Reviewed authority boundary: Immutable run receipt with session and artifact: Denied unattended work fails closed: Paused final overview: The requester has not manually confirmed the behavior. The PR remains draft. Latest |
# Conflicts: # apps/app/src/react-app/domains/session/chat/session-page.tsx # apps/app/src/react-app/shell/app-root.tsx # apps/app/src/react-app/shell/notification-center.tsx # apps/app/src/react-app/shell/session-route.tsx # apps/app/src/react-app/shell/use-workspace-route-state.ts # apps/server/src/server.ts
Scheduled Tasks runtime stack is readyThe original portable extraction remains the foundation at 7352171. The parent branch is now a0248a6, which preserves that commit and contains current upstream dev d1b5caf. Two ready, parallel child PRs are layered directly on feature/scheduled-tasks:
The child diffs do not overlap and can land independently into feature/scheduled-tasks. Neither changes the other runtime driver or the Scheduled Tasks UI. Deployment proof still required:
PR #3236 itself still has the existing legacy-flow guard failure for evals/flows/scheduled-tasks-e2e.flow.ts and fork-only Vercel authorization failures. Those are parent-PR issues, not child-runtime failures. |
# Conflicts: # apps/server/src/server.ts
|
Superseded by #3501 on canonical branch |
Asked for recurring work, the in-app agent had no idea Automations exist: it read the workspace, found leftover shell scripts, and started writing a launchd plist. Nothing told it the product has a scheduler. Three layers, following the shape closed PR #3236 used for Scheduled Tasks: - Knowledge: an Automations section in the capabilities prompt. It names the feature, forbids scheduling OpenWork work through cron/launchd/systemd/ Task Scheduler, gives the exact once/daily/weekly shapes, and states the two honesty constraints — proposing is not creating, and an occurrence is missed when no desktop runner is connected. - Affordance: an `automations` contribution exposing `automation.propose`. It validates against the shared contract and returns the proposal. It does no I/O at all: Automations are active the moment they exist and the Den credential lives in the renderer, so an agent can describe one but only a person can create one. - Card: the proposal renders in the thread with its schedule and instructions behind a Create button that uses the renderer's own Den session, and explains itself when the preview flag is off or Cloud is signed out. `scheduleLabel`/`formatTime` move from the Automations page into automation-format so the card and the page label schedules identically. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>





Important
Draft working candidate. The current product path is implemented and available for iteration. This is not a request to merge or a claim of release readiness.
Working deliverable
Scheduled Tasks has one independently useful outcome:
The feature is behind the Scheduled Tasks feature flag. It appears as one top-level destination above Library, aggregates tasks across workspaces, and always shows the human-readable workspace while preserving workspace-scoped creation, authority, and execution.
Current product scope
scheduled-task.propose-draft; the capability documents exact manual/daily/weekly schedule shapes.Fri, not raw day indexes.Architecture boundary
packages/scheduled-tasksowns engine-neutral contracts, ports, schedule calculation, state transitions, tick planning, and reusable testing utilities.apps/server/src/scheduled-tasksowns the OpenWork adapter layer: persistence, workspace validation, execution, artifacts, scheduler lifecycle, and routes.opencode-execution-adapter.ts.ScheduledTasksClientcontract.Architecture and repository-conformance tests protect this separation.
Safety contract
Exact integration state
37037cc02c6ca5a66b18a8f0cbc469fa023fa385.different-ai/openwork:dev:c8adbe717ac6abcc4a43472a4bb69d879dbf2ef3.apps/server/src/server.ts; the resolution preserves the Scheduled Tasks stop-on-startup-failure lifecycle alongside currentdevbehavior.mix-tape@5f9c6159e67761638960219ae491f510f4f0d93e, whose tree exactly matches the PR head. The Electron app is running from that candidate.Checks on the current head
pnpm install --frozen-lockfile— passed with pinned pnpm 11.4.0.pnpm --filter @openwork/app typecheck— passed.pnpm --filter openwork-server typecheck— passed.node scripts/i18n-audit.mjs --ci— passed; no dangling or dynamic Scheduled Tasks keys.git diff --checkand exact base/PR ancestry — passed.The earlier 69-test focused suite and real Electron chat → proposal card → review journey remain useful prior-head provenance. They were not rerun on this synchronization checkpoint; broad verification is deferred until the iteration direction is selected.
Known gates and overlap
guard-legacy-eval-flowsremains the actionable CI failure.evals/flows/scheduled-tasks-e2e.flow.tsmust be migrated toevals/specs/**/*.test.tsusing@openwork/testkitbefore merge readiness.a0248a606; synchronize each to37037cc02and rerun its focused boundary before integration.Non-goals