[
 {
  "id": "snowball-control-audit",
  "name": "Daily Snowball control and continuity audit",
  "cadence": "daily, flexible morning target",
  "prefix": "CEDWYN SNOWBALL CONTROL",
  "runner": "ChatGPT scheduled control audit; HubSpot task 536712609990",
  "purpose": "Reconcile workstream status, public task metadata, GitHub source/deployment health, Cloudflare agent bridge and Hive/X contribution handoffs.",
  "inputs": [
   "HubSpot master, work packages and procurement register",
   "paginated public agent task index",
   "GitHub main and source branch heads, Actions and Pages deployment metadata",
   "Cloudflare Worker routes, service bindings and pending contribution counts",
   "reviewed X/Grok references from agents with their own X access"
  ],
  "outputs": [
   "accurate HubSpot task status and blockers",
   "refreshed privacy-minimised public task metadata index",
   "verified Git and deployment state",
   "reviewed pending contribution handoffs",
   "concise audit record on the existing HubSpot master/WP5/control task"
  ],
  "metric": "current snapshot age; status discrepancies corrected; pending items verified/actioned; current commits and successful builds; confirmed live route checks; stale blockers resolved",
  "report": "Daily summary records index version/count, HubSpot state, build/deployment result, pending queue, X access state and blockers. This audit runs daily and does not imply that the Hive's five-minute site monitor invokes LLM agents. No autonomous external sending, legal determinations or financial actions."
 },
 {
  "id": "agent-bridge",
  "name": "Opaque public agent handoff and X discussion bridge",
  "cadence": "event-driven submissions; privileged queue review during Hive check-ins",
  "prefix": "CEDWYN AGENT BRIDGE",
  "runner": "public/FLYWHEELS/agent-bridge.md",
  "purpose": "Make the Snowball programme discoverable to outside agents, publish sanitised task metadata, accept source-linked leads and X/Grok discussion pointers, and route them to privileged agents without leaking private HubSpot/Gmail content.",
  "inputs": [
   "public sanitised HubSpot task index",
   "X profile posts and replies supplied by authorised X-capable agents",
   "external-agent source-linked leads and questions",
   "existing public research/artifact identifiers"
  ],
  "outputs": [
   "public machine manifest and task metadata",
   "pending, untrusted D1 submissions for privileged review",
   "approved X activity and contributions in read-only JSON feeds",
   "HubSpot task creation/update by a privileged agent after verification"
  ],
  "access_tiers": [
   "public metadata read",
   "unprivileged submission",
   "HubSpot-authorised read/write",
   "Gmail-authorised read",
   "GitHub-authorised source changes",
   "Cloudflare-authorised D1 review",
   "owner/authorised human approval"
  ],
  "metric": "relevant submissions verified; useful items routed to authoritative HubSpot records; duplicate and unsupported submissions rejected; approved X references linked to source records",
  "report": "Never count a POST acceptance as verified evidence or completed work. No automatic HubSpot mutations, emails, X posts, public allegations or payments."
 },
 {
  "id": "snowball",
  "name": "Cedwyn Snowball — master programme flywheel",
  "cadence": "event-driven per specialist loop; daily Hive and weekly programme review",
  "prefix": "CEDWYN SNOWBALL",
  "runner": "public/FLYWHEELS/snowball.md",
  "purpose": "Coordinate the recursive programme that reconstructs the Welsh family estate, Williams/Buckler matriarchy, history and heritage; recover and assess evidence; produce the source-led documentary; grow the public project and fund sustainable heritage work.",
  "inputs": [
   "canonical artifact/evidence and parcel records",
   "new Gmail/FOI/archive disclosures and incoming contributions",
   "HubSpot task board and procurement register",
   "Hive roster, claims, blockers and specialist results",
   "website, audience and documentary production metrics"
  ],
  "outputs": [
   "verified and related canonical records",
   "resolved or explicitly dispositioned research gaps",
   "specialist HubSpot work packages and Hive handovers",
   "approved public Projects/Docs updates",
   "source-linked documentary bible and semantically versioned scenes",
   "transparent procurement and monthly outcome report"
  ],
  "metric": "S(n+1)=S(n)+V+R+G+A+P+B-D-U-W; report every component separately; this is an operational learning metric, not historical truth.",
  "report": "Report new verified records, contrary evidence, resolved gaps, blockers, releases and commitments; no vanity metrics, unsupported findings, automatic public allegations or autonomous spending."
 },
 {
  "id": "research-cycle",
  "name": "Great House Farm research cycle",
  "cadence": "every 6 hours",
  "prefix": "GHF FLYWHEEL CYCLE",
  "runner": "work/ghf-flywheel/program.md",
  "purpose": "Find evidence and artifacts not already in Cedwyn that bear on reopening BP Properties Ltd v Buckler (1987): concealment or government involvement.",
  "inputs": [
   "the latest cycle report and next-cycle brief",
   "a change-check of the live Cedwyn sections and the legacy wiki",
   "the rubric",
   "reopen-loop results"
  ],
  "outputs": [
   "a cycle report with sources",
   "new findings appended to the findings log",
   "graph update (capped spend)",
   "next-cycle brief"
  ],
  "metric": "the rubric score and the strict alert bar",
  "report": "Always: a short update to the project lead (what is new with sources, what cuts against the case, what only he can supply). Alert only when the strict bar is met and the primary source has been re-read."
 },
 {
  "id": "reopen-loop",
  "name": "Reopen-the-case autoresearch loop",
  "cadence": "every 4 hours",
  "prefix": "REOPEN-LOOP RUN",
  "runner": "work/reopen-loop/program.md",
  "purpose": "Run small one-hypothesis experiments against a fixed metric (the three Takhar limbs) to rank grounds for reopening the 1987 judgment.",
  "inputs": [
   "grounds register",
   "results log",
   "the newest research cycle"
  ],
  "outputs": [
   "3–6 experiments kept or discarded",
   "score changes",
   "the PRINCE2 highlight report section on prospective triggers (only when the top three change)"
  ],
  "metric": "Takhar limb scores; court-ready when every limb is 4 or more",
  "report": "Silent unless a ground meets the court-readiness bar; score changes ride the 6-hourly research update."
 },
 {
  "id": "drafts-engine",
  "name": "Nightly drafts engine",
  "cadence": "daily 05:30 UK",
  "prefix": "NIGHTLY DRAFTS ENGINE RUN",
  "runner": "work/drafts-engine/RUNNER.md",
  "purpose": "Keep every due information-request draft and chaser written, in thread, ready for review.",
  "inputs": [
   "the request queue",
   "new mail since the last run",
   "the deadline strategy",
   "each body's dartboard lane"
  ],
  "outputs": [
   "drafts (never sent)",
   "queue updates",
   "a count for the morning brief"
  ],
  "metric": "drafts ready vs due; no chaser before a deadline; no duplicate",
  "report": "Nothing to the project lead directly; the morning brief carries the count."
 },
 {
  "id": "contacts",
  "name": "Contacts flywheel",
  "cadence": "daily 03:30 UK",
  "prefix": "CONTACTS FLYWHEEL RUN",
  "runner": "work/contacts-flywheel/RUNNER.md",
  "purpose": "Find institutions and groups not yet contacted that may hold records, work out what each may hold, and open a hive draft for each.",
  "inputs": [
   "the contacted list (sent mail, HubSpot, drafts)",
   "research findings"
  ],
  "outputs": [
   "3–6 new candidates with sources and a verified public address",
   "one hive task each"
  ],
  "metric": "new credible holders found per run",
  "report": "Nothing unless a draft reaches ready or something needs the project lead."
 },
 {
  "id": "hive",
  "name": "Hive check-in",
  "cadence": "every 5 minutes",
  "prefix": "HIVE TURN",
  "runner": "hive protocol (see HARNESS/hive.md)",
  "purpose": "Take this agent's turns on hive drafts: one material review or permitted route action per turn, then pass the turn on.",
  "inputs": [
   "the live roster",
   "HubSpot tasks whose turn is ours",
   "the draft's changelog and baton"
  ],
  "outputs": [
   "a versioned review and signed changelog entry",
   "board metadata",
   "one mail draft only when every gate passes"
  ],
  "metric": "the exact-version readiness gate",
  "report": "Only when a draft is ready (mail draft created) or a blocker needs the project lead."
 },
 {
  "id": "site-daily",
  "name": "Daily site flywheel",
  "cadence": "daily 12:00 UK",
  "prefix": "DAILY SITE FLYWHEEL RUN",
  "runner": "work/site-flywheels/RUNNER.md",
  "purpose": "Measure every section and apply safe fixes, verified live at 390 px; log everything else as proposed.",
  "inputs": [
   "site checks and phone-width renders",
   "each section's program file"
  ],
  "outputs": [
   "safe fixes committed",
   "a proposals list",
   "a log row per check"
  ],
  "metric": "per-section score",
  "report": "Up to three bubbles only if the run was meaningful; otherwise nothing."
 },
 {
  "id": "first-seen",
  "name": "First-seen detector",
  "cadence": "every 6 hours",
  "prefix": "FIRST-SEEN DETECTOR RUN",
  "runner": "work/first-seen/",
  "purpose": "Detect any record about the farm that quietly appears online and register it with its first-seen date.",
  "inputs": [
   "baseline captures",
   "live pages"
  ],
  "outputs": [
   "verified first-seen entries in the disclosure register"
  ],
  "metric": "new items verified",
  "report": "At once, on any verified detection."
 },
 {
  "id": "recapture",
  "name": "Farm page recapture",
  "cadence": "every 5 days",
  "prefix": "FARM PAGE RECAPTURE",
  "runner": "work/internetarchive/box/recapture.py",
  "purpose": "Capture outside pages about the farm's history before and after each cycle so changes are on record.",
  "inputs": [
   "the watch list of outside pages"
  ],
  "outputs": [
   "captures and a change summary in the watchtower data"
  ],
  "metric": "captured / unchanged / changed / unreachable",
  "report": "No alerts for routine runs; only substantive heritage changes or a broken runner."
 },
 {
  "id": "bizdev",
  "name": "Business development (plan + execute)",
  "cadence": "plan daily 09:00 UK; execute every 2 hours 10:00–22:00",
  "prefix": "BIZDEV",
  "runner": "work/bizdev/BRIEF.md",
  "purpose": "Grow e-book sales and community for Cedwyn: plan the next 24 hours as weighted HubSpot tasks, then execute them with care.",
  "inputs": [
   "the weighted channel list",
   "yesterday's results",
   "the skills library"
  ],
  "outputs": [
   "completed tasks with outcome notes",
   "a log row per action",
   "lessons in the growth project"
  ],
  "metric": "tasks completed by weight; sales; sign-ups",
  "report": "Only on a sale, a real milestone or something only the project lead can do."
 },
 {
  "id": "skills-harvest",
  "name": "Skills harvest",
  "cadence": "every 15 minutes",
  "prefix": "SKILLS HARVEST RUN",
  "runner": "work/bizdev/skills/INDEX.md",
  "purpose": "Add 2–4 new practitioner-sourced sales and marketing skills per run, each with sources and how it applies to Cedwyn.",
  "inputs": [
   "the skills index (to avoid repeats)"
  ],
  "outputs": [
   "new skill files (8 KB max) and index lines"
  ],
  "metric": "new, non-duplicate skills with primary sources",
  "report": "Nothing; a line in the weekly growth notes."
 },
 {
  "id": "sales-fix",
  "name": "Sales fix",
  "cadence": "every 3 hours",
  "prefix": "SALES FIX RUN",
  "runner": "work/sales_fix_goal.txt",
  "purpose": "If no e-book has sold, find out why and apply the top-priority fix.",
  "inputs": [
   "store and payment data",
   "funnel checks"
  ],
  "outputs": [
   "one fix applied and verified"
  ],
  "metric": "sales; funnel step conversion",
  "report": "One short bubble: sold yes/no, why, what was fixed."
 },
 {
  "id": "growth",
  "name": "Growth flywheels (on-page, quote pack, visibility, weekly report)",
  "cadence": "weekly (Mon 07:30 visibility, Tue 19:00 quote pack, Wed 13:30 on-page, Sun 18:00 report)",
  "prefix": "CEDWYN ONPAGE RUN / QUOTE PACK RUN / VISIBILITY CHECK RUN / GROWTH REPORT RUN",
  "runner": "work/cedwyn-growth/*/RUNNER.md",
  "purpose": "Make Cedwyn findable and shareable: markup audits, quote cards from the records, search and AI visibility checks, and a weekly measured report.",
  "inputs": [
   "traffic, followers, sign-ups, sales, Search Console",
   "the records and e-books"
  ],
  "outputs": [
   "markup fixes",
   "quote cards and posts",
   "visibility scores",
   "the weekly three-line report"
  ],
  "metric": "traffic, followers, sign-ups, sales week on week",
  "report": "The Sunday report is the one routine message; otherwise only a sale, a post over 1,000 views or a blocker."
 },
 {
  "id": "movie",
  "name": "Cedwyn documentary — evidence-led sequential scene production",
  "cadence": "one scene at a time in master-script order; no automatic daily scene without approved source and QA gates",
  "prefix": "CEDWYN MOVIE RUN",
  "runner": "public/FLYWHEELS/movie.md",
  "purpose": "Produce a complete source-led documentary from the Welsh estate and Williams-Buckler matriarchy history. Every scene is a nominal two-minute unit in the approved master sequence, with evidence map, professional screenplay, set/prop/wardrobe design, choreography, camera/sound, rights, consent and continuity review.",
  "inputs": [
   "approved documentary bible and master script",
   "chronology and canonical evidence/artifact IDs with source locations",
   "contrary evidence, unresolved questions and legal/editorial review",
   "character, location, voice and likeness permissions",
   "production prompt, set/continuity bible and verified model/tool access"
  ],
  "outputs": [
   "one reviewed scene pack and sequential rendered scene",
   "script, evidence map, storyboard and shot list",
   "cast/voice/likeness, archive, music and other rights record",
   "model/tool version, prompt, settings, source assets and provenance",
   "Welsh/English/Spanish subtitle/audio assets where approved",
   "version history, changelog, QA and next scene dependency"
  ],
  "metric": "percentage of released factual beats with source coverage; scene QA pass; continuity/rights pass; on-sequence scene releases; prior-version preservation",
  "report": "Report a scene as released only after factual, legal/privacy, rights, creative, continuity and live-release checks pass. New disclosures trigger scene-impact review and may require a versioned re-creation.",
  "versioning": {
   "major": "Narrative/structural reset",
   "minor": "Added or materially revised scene/sequence",
   "patch": "Correction, grade, mix, subtitle or continuity refinement"
  },
  "hubspot": {
   "wp3": 536861939937,
   "wp4": 536712479991,
   "master": 536809740513
  },
  "model_access_gate": "Verify official or licensed model identity, availability, capabilities, rights, consent, data handling, API, cost per accepted scene and cancellation before committing spend.",
  "preserve_previous_versions": true
 },
 {
  "id": "morning-brief",
  "name": "Morning brief",
  "cadence": "daily 08:00 UK",
  "prefix": "(inline)",
  "runner": "schedule instruction",
  "purpose": "Tell the project lead what finished overnight, mail that needs him, today's calendar and deadlines due soon.",
  "inputs": [
   "finished work",
   "mail",
   "calendar",
   "deadlines"
  ],
  "outputs": [
   "at most three bubbles, or nothing"
  ],
  "metric": "nothing repeated; nothing missed",
  "report": "Sent only if something is new."
 },
 {
  "id": "intelligence",
  "name": "Intelligence flywheel",
  "cadence": "daily 04:15 Europe/London",
  "prefix": "INTEL",
  "runner": "work/intel-flywheel/RUNNER.md",
  "purpose": "Normalise events and actors, test patterns honestly, map who answered and who stayed silent, and publish missing-record (MR-) pages.",
  "inputs": [
   "the research catalogue",
   "research cycles",
   "FOI correspondence"
  ],
  "outputs": [
   "events and actor tables",
   "analyses and charts",
   "missing-record pages",
   "a ranked \"what most likely occurred\" note marked as interpretation"
  ],
  "metric": "new events, new missing records, analyses re-run",
  "report": "Per its runner."
 },
 {
  "id": "email-ingest",
  "name": "Email ingest",
  "cadence": "every 2 hours, 07:00-23:00 Europe/London",
  "prefix": "EMAIL INGEST",
  "runner": "work/email-ingest/RUNNER.md",
  "purpose": "Turn inbound project correspondence into site updates: the dartboard lanes, missing-record and catalogue candidates for the research cycles, and dated notes on the matching case tasks.",
  "inputs": [
   "project mail (read-only)",
   "attachments (locked files recorded as locked, never opened by force)"
  ],
  "outputs": [
   "dartboard updates",
   "missing-record candidates",
   "catalogue candidates",
   "case-task notes"
  ],
  "metric": "messages processed, site areas updated",
  "report": "Per its runner; stops with 'no new mail' when nothing arrived."
 },
 {
  "id": "programme-office",
  "name": "Programme office",
  "cadence": "weekly, Monday 06:00 Europe/London",
  "prefix": "PROGRAMME",
  "runner": "work/programme-office/RUNNER.md",
  "purpose": "Keep the objectives register (Wales tour, Argentina land and museum, chronology, e-books, the case) scored, mirrored into projects, and moving.",
  "inputs": [
   "HubSpot projects",
   "growth data",
   "research"
  ],
  "outputs": [
   "re-scored objectives",
   "project pages",
   "draft e-books"
  ],
  "metric": "milestones met per objective",
  "report": "Per its runner."
 },
 {
  "id": "agent-library",
  "name": "Agent library (this section)",
  "cadence": "every 6 hours (proposed)",
  "prefix": "AGENT LIBRARY CYCLE",
  "runner": "work/agent-library/RUNNER.md",
  "purpose": "Keep the academy current: read new memory notes, lessons, runners, skills and worker reports; distil the public-safe parts; regenerate the work board from real gaps; rebuild, scan, publish, log.",
  "inputs": [
   "memory notes",
   "lessons log",
   "flywheel runners",
   "skills index",
   "worker reports since the last cycle"
  ],
  "outputs": [
   "updated academy pages",
   "agents.json, work.json and llms.txt",
   "a CHANGELOG entry"
  ],
  "metric": "inputs digested; open jobs on the board; scanner clean; live check passes",
  "report": "Nothing routine; one line to the root only when a new section of the library goes live or the scanner blocks a publish."
 },
 {
  "id": "problems-flywheel",
  "name": "Problems flywheel",
  "cadence": "every 30 minutes",
  "prefix": "PROBLEMS FLYWHEEL RUN",
  "runner": "work/problems/QUEUE.md",
  "purpose": "Take every blocker, question or problem an agent would otherwise raise with the project lead and loop on it until it is solved.",
  "inputs": [
   "the problems queue (oldest open first, up to three per run)",
   "the editorial standing orders"
  ],
  "outputs": [
   "a hypothesis, action and result logged under each problem",
   "fixes applied within the standing orders",
   "problems marked solved with evidence, or unsolvable with a one-line reason"
  ],
  "metric": "open problems solved per run; time each problem stays open",
  "report": "Nothing to the project lead unless a problem stays unsolved after six hours of looping; then one short line per problem: what it is and what was tried."
 },
 {
  "id": "online-gap-finder",
  "name": "Online gap finder",
  "cadence": "every 6 hours",
  "prefix": "ONLINE GAP FINDER RUN",
  "runner": "work/online-gap-finder/RUNNER.md",
  "purpose": "Find public information about the farm, its places, people and the case that is not yet on the site, and queue each find as a task for the right page.",
  "inputs": [
   "public archives, catalogues, newspapers and reference sites",
   "the live site (sitemap, research, wiki, Wales sections)",
   "a seen-ledger so nothing is repeated"
  ],
  "outputs": [
   "one '[CEDWYN GAP] <title> -> <area>' HubSpot task per genuine gap, with source, capture and target page"
  ],
  "metric": "genuine gaps queued per run; gaps later published",
  "report": "Nothing routine; one line only when a find changes the chronology or the reopen grounds."
 },
 {
  "id": "book-flywheel",
  "name": "Book search flywheel",
  "cadence": "search every 59 minutes; findings table refreshed every 3 hours",
  "prefix": "BOOK FLYWHEEL RUN",
  "runner": "work/book-flywheel/RUNNER.md",
  "purpose": "Search published books for passages that overlap what the site already carries about the farm, its families and its places, under every name variant, and record each passage with its citation.",
  "inputs": [
   "full-text book search under every name variant of the farm, its families and places",
   "the live site, to tell new passages from known ones",
   "a keyword ledger: the most productive keywords are retired each cycle so the search keeps moving"
  ],
  "outputs": [
   "rows in the research findings table (book title, the exact sentence, citation)",
   "a section/research commit carrying the table"
  ],
  "metric": "new cited passages per run; passages that change the chronology",
  "report": "Nothing routine; one line, with the exact quotation and its source, only when a passage is significant after the page itself has been checked."
 },
 {
  "id": "correspondence",
  "name": "Correspondence flywheel",
  "cadence": "every 2 hours at :30, 07:30–23:30 Europe/London",
  "prefix": "CORRESPONDENCE FLYWHEEL RUN",
  "runner": "work/correspondence-flywheel/RUNNER.md",
  "purpose": "Keep a hive draft task for every research or disclosure email that needs a reply, a chase, escalation, forwarding or first contact; housekeeping between emails.",
  "inputs": [
   "the mail record",
   "open hive draft tasks"
  ],
  "outputs": [
   "one hive draft task per item with no open task",
   "dated triage lines on existing unsent drafts when a new fact exists"
  ],
  "metric": "items needing action with no open draft (target zero)",
  "report": "Nothing routine; only what the project lead alone can supply."
 },
 {
  "id": "repo-sync",
  "name": "Repository and project-board sync",
  "cadence": "every 6 hours",
  "prefix": "REPO-HUBSPOT SYNC RUN",
  "runner": "work/repo-hubspot-sync/RUNNER.md",
  "purpose": "Keep the project board in step with the repository and the live site: what was done, and what still needs doing.",
  "inputs": [
   "new commits, pull requests and issues",
   "the academy work board",
   "the problems queue"
  ],
  "outputs": [
   "dated notes on matching tasks",
   "tasks completed only when verified live",
   "new '[CEDWYN REPO]' tasks for outstanding work"
  ],
  "metric": "open repository work with no matching task (target zero)",
  "report": "Nothing routine."
 },
 {
  "id": "webapp-migration",
  "name": "Data-driven webapp migration",
  "cadence": "one webapp at a time, per the programme plan",
  "prefix": "CEDWYN ARCH",
  "runner": "the data architecture programme page in Projects",
  "purpose": "Move each webapp to pages generated from its own view of the central catalogue, keeping the existing design (standing order 7s).",
  "inputs": [
   "the central catalogue",
   "the webapp's current pages",
   "the webapp's selection rule"
  ],
  "outputs": [
   "the webapp's view database",
   "near-A2UI page components rendered by the shared renderer",
   "parity screenshots at 390 px and desktop"
  ],
  "metric": "hard-coded records left (target zero) and visual parity at 390 px and desktop (difference at most 2%), with the build green and scanners clean",
  "report": "A milestone when a webapp switches over."
 }
]
