Files
openprose__prose/rfcs/001-scheduled-execution.md
Jose Montes de Oca 14e6854dfa docs: make skills and RFCs self-contained
Several docs referenced paths and deployment internals that only
exist in our authoring workspace, not in this repo. Clean them up so
external readers get a self-contained view.

- skills/README.md, skills/open-prose/state/README.md: drop `related:`
  frontmatter entries that pointed outside the repo tree; refer to
  "OpenProse Cloud" by name instead of an internal path.

- skills/open-prose/agent-onboarding.md: replace a 25-line maintainer
  comment (infra paths, deploy mechanic) with a single link to the
  canonical rendering at https://openprose.ai/llms-full.txt. This
  file is served verbatim as llms-full.txt, so the comment was
  publicly visible but only meaningful to hosting maintainers.

- rfcs/004-composite-instantiation.md: drop two pointers to an
  external design doc — the RFC is already self-contained (Summary,
  Problem, Proposal, Architecture, Changes, Prior Art).

- rfcs/001/002/003: normalize author line to match rfcs/004's format
  (`Dan B. (OpenProse)`).

Docs only — no behavior changes.
2026-04-20 22:30:20 -04:00

2.9 KiB

RFC 001: Scheduled Execution Syntax

Status: Proposed Date: 2026-04-08 Author: Dan B. (OpenProse)

Problem

Programs declare their intended cadence in comments and documentation (e.g., "Daily (7am)", "Weekly (Monday 8am)"), but there is no formal syntax in the Prose language for expressing execution schedules. The cadence information is scattered across:

  • Program descriptions ("runs daily")
  • Delivery composite comments ("Cadence: Weekly (Monday 7am)")
  • Customer-facing demo pages ("Next radar delivers Friday at 8am")
  • Lead planning documents

This means the runtime (Press) cannot automatically schedule programs — scheduling is a manual configuration step outside the language.

Scenarios Where This Matters

  1. Customer delivery composites: Every delivery composite we've written (e.g., deal-radar-weekly.md, energy-monitor-daily.md, startup-gtm-daily.md) expresses a cadence in its name and description but has no machine-readable schedule.

  2. Eval cadences: Evals should run after every program run, but the "run eval after program" relationship is implicit.

  3. Portfolio monitoring: Programs like portfolio-pulse that monitor a set of companies weekly need a formal "run every Monday at 8am" declaration.

  4. Customer onboarding: When setting up a new customer, the schedule is communicated verbally and configured manually. A schedule: field in the program frontmatter would make the intended cadence part of the program definition.

Proposed Solution

Add an optional schedule: field to program frontmatter:

---
name: deal-radar-weekly
kind: program
services: [deal-flow-radar, human-gate, slack-notifier]
schedule:
  cron: "0 8 * * 5" # Fridays at 8am
  timezone: "America/Los_Angeles"
  description: "Weekly deal flow radar, delivered Friday mornings"
---

Or with named cadences for common patterns:

schedule:
  cadence: daily
  at: "07:00"
  timezone: "America/New_York"
schedule:
  cadence: weekly
  day: monday
  at: "08:00"
  timezone: "America/Los_Angeles"

Design Considerations

  • The schedule: field is metadata for the runtime, not executed by the VM. The VM runs programs when invoked — it doesn't watch clocks. The runtime (Press) reads the schedule from the program definition and manages the cron/trigger.
  • Programs without schedule: are on-demand only (e.g., due-diligence-memo runs when a company name is provided).
  • schedule: should coexist with event-driven triggers (future RFC).
  • The description: subfield ensures the human-readable cadence stays in sync with the cron expression.

Impact

This would affect:

  • prose.md — document the schedule field in frontmatter
  • forme.md — Forme should include schedule in the manifest so the runtime can read it
  • Press runtime — implement cron-based invocation
  • All existing delivery composites would benefit from adding schedule: to their frontmatter