# Instance manifest > Contract for declarative agent instances in consuming repos. > Companion to ADR-001, ADR-005 (kaizen-agentic), and HARNESS-WP-0001-T01. ## Location ``` /.kaizen/schedule.yml ``` **Same file as ADR-005.** kaizen-agentic owns the base schedule keys; rein-aharness owns the extension keys below. A sibling file is reserved only if kaizen owners later prefer hard separation — until then, one manifest keeps cadence and runtime policy colocated. Validate: ```bash kaizen-agentic schedule validate --target # base ADR-005 keys rein-aharness validate --target # base + harness extensions rein-aharness validate --target --strict # require harness fields on enabled agents ``` ## Schema | Key | Owner | Required | Type | Notes | |-----|-------|----------|------|-------| | `version` | kaizen | yes | string | Must be `"1"` | | `timezone` | kaizen | no | string | IANA tz | | `harness` | harness | no\* | int | Pinned harness **major** for the repo | | `agents` | both | yes | mapping | `name → settings` | | `agents..cadence` | kaizen | yes | enum | `daily` \| `weekly` \| `monthly` | | `agents..cron` | kaizen | no | string | 5-field cron override | | `agents..enabled` | kaizen | no | bool | Default `true` | | `agents..blueprint` | harness | no | string | Defaults to agent name (kaizen blueprint) | | `agents..lane` | harness | no\* | enum | `green` \| `blue` | | `agents..tool_profile` | harness | no\* | string | Named profile in the harness registry | | `agents..budget` | harness | no | int | Token cap per run (positive) | | `agents..harness` | harness | no | int | Per-agent major pin; overrides top-level | \* Required for enabled agents under `rein-aharness validate --strict`. ## Example (tenant-ready) ```yaml # .kaizen/schedule.yml — ADR-005 + rein-aharness extensions version: "1" timezone: Europe/Berlin harness: 0 agents: coach: cadence: daily cron: "0 7 * * 1-5" enabled: true lane: green tool_profile: green-commit-only budget: 80000 mail-triage: cadence: weekly cron: "0 8 * * 1" enabled: true blueprint: coach lane: blue tool_profile: blue-mail-triage budget: 40000 review-prep: cadence: weekly cron: "0 9 * * 5" enabled: true lane: green tool_profile: green-commit-only budget: 60000 ``` ## Tool profiles Defined **only** in rein-aharness (see `rein_aharness/profiles.py`). Manifests reference them by name; unknown names refuse to run. | Name | Lane | Session tools | |------|------|---------------| | `green-commit-only` | green | Read/Write/Edit/Glob/Grep + local git add/commit/status/log/diff (+ date, ls) | | `blue-mail-triage` | blue | Same session tools; credentialed IMAP scan is a deterministic pre-step outside the session | No push, no network, no arbitrary shell in either profile. ## Budget `budget` is tokens per run. The runner wires llm-connect `BudgetTracker` when set; exhaustion refuses or truncates the run and is reported to the State Hub (token events feed the Token Cost dashboard). ## Harness pin Instances pin a harness **major**. This runtime implements major `0` (package `0.x`). A mismatched pin fails `validate` so upgrades are deliberate. ## Relationship to task files Local development may still use JSON task files (`rein-aharness run --task-file …`). When the target repo has a matching agent entry, the runner resolves `tool_profile`, `budget`, and `lane` from the manifest; otherwise it defaults to `green-commit-only` with no budget cap.