From e4dc63808f0f42cc7be25d2d26d24d3ffca2343b Mon Sep 17 00:00:00 2001 From: Boden Fuller Date: Mon, 4 May 2026 22:28:44 -0400 Subject: [PATCH] docs(daemon): add dark factory schedule template --- docs/documentation-index.md | 1 + docs/templates/README.md | 2 +- .../dark-factory-schedule.yaml.example | 122 ++++++++++++++++++ 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 docs/templates/dark-factory-schedule.yaml.example diff --git a/docs/documentation-index.md b/docs/documentation-index.md index 764a7b027..e104e8499 100644 --- a/docs/documentation-index.md +++ b/docs/documentation-index.md @@ -185,6 +185,7 @@ Deep dives: [CDLC](cdlc.md) (tier-to-layer mapping), [Knowledge Flywheel](knowle - [Skill Template](templates/skill.template.md) — Template for new skills - [Command Template](templates/command.template.md) — Template for new commands - [Kernel Template](templates/kernel.template.md) — Template for new project kernels +- [Dark Factory Schedule Example](templates/dark-factory-schedule.yaml.example) — Disabled agentopsd schedule template for reviewed Dream and local factory pilots - [Product Template](PRODUCT-TEMPLATE.md) — Template for writing a PRODUCT.md ## Reference diff --git a/docs/templates/README.md b/docs/templates/README.md index 4936222ba..dd68219b7 100644 --- a/docs/templates/README.md +++ b/docs/templates/README.md @@ -5,6 +5,6 @@ - [Skill Template](./skill.template.md) - [Command Template](./command.template.md) - [Kernel Template](./kernel.template.md) +- [Dark Factory Schedule Example](./dark-factory-schedule.yaml.example) Back: [Docs Index](../documentation-index.md) - diff --git a/docs/templates/dark-factory-schedule.yaml.example b/docs/templates/dark-factory-schedule.yaml.example new file mode 100644 index 000000000..f0e10dc35 --- /dev/null +++ b/docs/templates/dark-factory-schedule.yaml.example @@ -0,0 +1,122 @@ +# Dark Factory agentopsd schedule template. +# +# This file is intentionally inert. It is documentation/config surface only; +# copying it does not enable recurring work until an operator replaces +# `schedules: []` with reviewed schedule entries and submits them with +# `ao schedule add`. +# +# Required gate before enabling source-mutating schedules: +# +# cd cli && go test ./cmd/ao -run TestAgentOpsDaemonFakeFactoryLocalPilotHandoffCompletesChildRPI +# +# Activation sketch after review: +# +# cp docs/templates/dark-factory-schedule.yaml.example .agents/schedule.yaml +# edit .agents/schedule.yaml +# ao schedule add --file .agents/schedule.yaml --token-file ~/.agents/daemon-token +# +# No host scheduler, credential, launchd, systemd, or daemon service file is +# changed by this template. + +schedules: [] + +# Example: knowledge-only Dream handoff. Safe to enable before source-mutating +# factory work because dream.run mutates only local knowledge artifacts. +# +# schedules: +# - name: nightly-dream +# cron: "0 3 * * *" +# job_type: dream.run +# timeout: 45m +# payload: +# goal: "Nightly knowledge consolidation" +# output_dir: ".agents/overnight/latest" +# max_iterations: 1 +# execution_timeout: "30m" +# backpressure: +# skip_if_running: true +# max_queue_depth: 1 + +# Example: factory admission only. This evaluates the work order and writes +# admission artifacts but does not enqueue child RPI work. +# +# schedules: +# - name: factory-admission-check +# cron: "15 4 * * *" +# job_type: factory.admission +# timeout: 10m +# payload: +# work_order: +# schema_version: 1 +# work_order_id: "factory-work-YYYY-MM-DD" +# generated_at: "YYYY-MM-DDT04:00:00Z" +# expires_at: "YYYY-MM-DDT05:00:00Z" +# base_sha: "" +# target: +# type: bead +# id: "soc-example" +# summary: "Bounded local factory admission rehearsal" +# allowed_files: +# - "cli/internal/daemon/" +# - "docs/runbooks/daemon-factory-admission.md" +# validation_commands: +# - "cd cli && go test ./internal/daemon ./cmd/ao" +# - "scripts/pre-push-gate.sh --fast" +# landing_policy: manual_pr +# digest_policy: required +# open_pr_blockers: [] +# main_ci_baseline: +# status: green +# run_id: "" +# checked_at: "YYYY-MM-DDT03:55:00Z" +# failed_jobs: [] +# unknown_evidence_policy: block +# backpressure: +# skip_if_running: true +# max_queue_depth: 1 + +# Example: local pilot with RPI handoff. Enable only after reviewing the current +# open-PR blocker matrix, main CI baseline, and the fake L3 rehearsal result. +# The cli-fallback executor forces the child rpi.run through landing-policy=off; +# no auto-merge or default-branch push is allowed. +# +# schedules: +# - name: factory-local-pilot +# cron: "30 4 * * *" +# job_type: factory.local-pilot +# timeout: 2h +# payload: +# mode: rpi-handoff +# handoff: +# kind: rpi.run +# execution_packet_path: ".agents/rpi/runs/factory-local-pilot/execution-packet.json" +# epic_id: "soc-example" +# work_order: +# schema_version: 1 +# work_order_id: "factory-local-pilot-YYYY-MM-DD" +# generated_at: "YYYY-MM-DDT04:00:00Z" +# expires_at: "YYYY-MM-DDT05:00:00Z" +# base_sha: "" +# target: +# type: bead +# id: "soc-example" +# summary: "One bounded daemon-owned local factory cycle" +# allowed_files: +# - "cli/internal/daemon/" +# - "cli/cmd/ao/" +# - "docs/runbooks/daemon-factory-admission.md" +# validation_commands: +# - "cd cli && go test ./internal/daemon ./cmd/ao" +# - "scripts/pre-push-gate.sh --fast" +# landing_policy: manual_pr +# digest_policy: required +# open_pr_blockers: [] +# main_ci_baseline: +# status: green +# run_id: "" +# checked_at: "YYYY-MM-DDT03:55:00Z" +# failed_jobs: [] +# unknown_evidence_policy: block +# backpressure: +# skip_if_running: true +# max_queue_depth: 1