YOKE_Marketplace
← Marketplace

Production Review Runner

FREEby GroveSt23 tiles · 4 wires

An agent that checks a release on your live site after deploy: confirms the commit is live, runs your checks with test traffic labelled and vendor calls mocked, and records an evidence-backed PASS/FAIL/BLOCKED row. Needs a local agent with Playwright, plus a read-only GitHub token in a vault (key name GITHUB_TOKEN). Setup steps are in the HARNESS SETUP box.

Run Production Review Runner using Yoke Credits. Compute, AI calls, and retained storage are metered. New organizations receive $1 in credits; at least $1 available is required to launch.
No subscription · pause whenever you like

The board

commsdatarelation
AgentChestTableChest

What's inside

1 agent3 chests2 contexts1 loop1 table9 belts6 yokes
agent
Production Review Agent
chests
Prod Review Side Chest, Prod Review Staging Chest, Prod Review Chest
contexts
PRODUCTION REVIEW INSTRUCTIONS, HARNESS SETUP (fill in)
loop
Production Review Loop
table
prod_review_notes
version 1updated 2026-09-30published 2026-09-30

Swarm file

View the swarm file (463 lines)
# Production Review Runner: built from a Cmd+B board capture, then sanitized (generic ids/names; agent config, chest items and table rows are NOT carried).
# Belt/loader layout is grid-position based: keep the tiles adjacent as placed. Set the loop to FIRE ON DEMAND and give the agent a local runtime. See SETUP.md.

pipes = []
cam_x = 0.0
cam_y = 0.0
cam_zoom = 1.0
prompt_loaders = []
http_fetch_loaders = []
webhook_loaders = []
trash = []
last_seq = 0
last_hash = ""

[[agents]]
id = "prod-loader-6"
name = "Prod Review Loader 6"
gx = 17
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-belt-9"
name = "Prod Review Belt 9"
gx = 16
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-belt-8"
name = "Prod Review Belt 8"
gx = 15
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-loader-5"
name = "Prod Review Loader 5"
gx = 13
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-belt-5"
name = "Prod Review Belt 5"
gx = 8
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-belt-4"
name = "Prod Review Belt 4"
gx = 4
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-belt-3"
name = "Prod Review Belt 3"
gx = 3
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-belt-6"
name = "Prod Review Belt 6"
gx = 9
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-belt-2"
name = "Prod Review Belt 2"
gx = 2
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-belt-1"
name = "Prod Review Belt 1"
gx = 1
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-agent"
name = "Production Review Agent"
gx = 11
gy = 4
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-side-chest"
name = "Prod Review Side Chest"
gx = 11
gy = 7
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-chest"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-instructions"
name = "PRODUCTION REVIEW INSTRUCTIONS"
gx = 13
gy = 0
width = 2
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-context"
doc_text = """
PRODUCTION REVIEW AGENT: HOW TO CHECK A RELEASE IN PRODUCTION

You are woken when the Production Review loop delivers a package. Each package is one check of one release (one or more merged PRs) at one commit, on the LIVE site.

Package (JSON): {"task":"prod_review","repo":"<owner/repo>","prs":[<numbers>],"sha":"<short sha of the deployed commit>","site":"<https://your-site>","fired_at_utc":"<clock>","suite":"<what to check, free text>","authorized_by":"<agent or person who asked>"}
If task is not "prod_review", or sha or site is missing, or it says "probe" or "ignore", do nothing.

1. CONFIRM THE DEPLOY. Before any page load, check that the package commit is really live: the GitHub deployments API shows that sha with state=success for the production environment, and a served asset or build marker matches. If it is not live yet, poll a few times (do not loop fast; the GitHub API is rate-limited). If it still is not live, write BLOCKED and report.

2. OPEN THE RECORD. In the table prod_review_notes create the row with key prod_pr<PR numbers joined by _>_<first 7 chars of sha> (add _r2, _r3 for re-runs). Set started_at_utc from the clock, never guessed.

3. PROTECT REAL DATA (every run, no exceptions):
- Label your traffic as internal/test before the first page load (for example a test cookie or flag your site recognises), so analytics and ads do not count you as a visitor.
- Intercept requests to analytics, ads and session-recording vendors, and to your own collect/ingest endpoints. Answer them with a mocked 200 and assert on the ATTEMPTED requests; never let them reach the vendor.
- Never submit real forms, book real meetings, buy anything or sign in with real accounts.
- Keep page loads to the minimum the checks need; production sites rate-limit.
Any run without these protections needs explicit approval from the requester for that ONE run. Log it as an exception in standing_notes; it is not a standing change.

4. RUN THE CHECKS named in the package's suite field, in a real browser (headed if your analytics drops headless browsers), with screenshots and request logs as evidence. This job is READ-ONLY: never change settings, content, secrets or data, and never spoof network headers.

5. WRITE THE RESULT to the same row: checks [{id, st: PASS | FAIL | BLOCKED, ev}], counts, fails, blocked (check + reason), deploy evidence (sha, environment, state, time), timing, open_questions, finished_at_utc, and one history line {at_utc, change}. Use BLOCKED, never PASS, for anything you could not observe (for example server-side events you cannot see). Never write people's names, emails or tokens into a row. Add a one-line summary for the row to the _index row.

6. RECOMMEND, DO NOT ACT. If something is broken, say FAIL and recommend fix-forward or rollback, with the evidence. Never roll back or redeploy yourself.

7. REPORT. Send the requester ONE short message: site, PRs, commit, verdict (PASS / FAIL / BLOCKED), counts, any FAILs or blockers, and timing. No acknowledgements or progress updates.

8. KEEP STANDING NOTES. When you learn something reusable (a harness quirk, a vendor behaviour, an approved exception), add it to the row named standing_notes in prod_review_notes. Never put secrets there.
"""
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-stage-chest"
name = "Prod Review Staging Chest"
gx = 6
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-chest"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-table"
name = "prod_review_notes"
gx = 11
gy = 1
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-table"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-loader-4"
name = "Prod Review Loader 4"
gx = 11
gy = 6
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-belt-7"
name = "Prod Review Belt 7"
gx = 14
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-belt"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-loader-3"
name = "Prod Review Loader 3"
gx = 10
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-loader-1"
name = "Prod Review Loader 1"
gx = 5
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-loader-2"
name = "Prod Review Loader 2"
gx = 7
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-yoke"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-loop"
name = "Production Review Loop"
gx = 0
gy = 4
width = 1
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-loop"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-chest"
name = "Prod Review Chest"
gx = 18
gy = 4
width = 2
height = 2
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-chest"
overrides = []
unplaced = false
created_by = ""

[[agents]]
id = "prod-harness"
name = "HARNESS SETUP (fill in)"
gx = 16
gy = 0
width = 2
height = 1
system_prompt = ""
projects = []
has_session = false
last_status = ""
template_id = "builtin-context"
doc_text = """
HARNESS SETUP: replace every YOUR_* value before the first run.

Repository: YOUR_REPO (owner/repo)
Live site: YOUR_SITE_URL
Production environment name (as shown in GitHub deployments): YOUR_PRODUCTION_ENVIRONMENT
Git access: a read-only GitHub token stored in your vault under the key name GITHUB_TOKEN (needs to read deployments). Read it by name; never write it into any file, row or message.
Deploy marker: how to tell which build is live (for example a served asset hash or a version string): YOUR_DEPLOY_MARKER
Internal/test traffic label: the cookie or flag your site recognises as test traffic: YOUR_TEST_TRAFFIC_LABEL (set it before the first page load)
Vendor hosts to intercept and mock: YOUR_VENDOR_HOSTS (analytics, ads, session recording)
Your own collect/ingest endpoints to intercept: YOUR_COLLECT_ENDPOINTS
Suite (optional): the checks you usually run after a release and what each covers.
Browser: Playwright with a Chromium browser on this machine.

Reusable habits:
- Confirm the deploy through the GitHub deployments API plus a served-asset or build marker before testing.
- Mock vendor calls with a 200 rather than aborting (aborting makes some SDKs retry), and assert on the attempted requests.
- Use a headed browser if your analytics drops headless traffic.
- Avoid coordinate clicks on app pages; scroll or move the mouse instead.
- Build curl arguments as arrays in a script, and test the request construction against a local echo server before spending real production requests.
- Watch the shared GitHub API rate limit; do not loop.
- A run without the data protections needs the requester's one-off approval and an entry in standing_notes.
"""
overrides = []
unplaced = false
created_by = ""

[agent_runtimes]

[agent_harnesses]

[agent_models]

[node_orientations]

[agent_slugs]

[spawned_by]

[node_creator]

[[wires]]
from = "prod-agent"
to = "prod-table"

[[wires]]
from = "prod-table"
to = "prod-agent"

[[wires]]
from = "prod-instructions"
to = "prod-agent"

[[wires]]
from = "prod-harness"
to = "prod-agent"