Persistent communication anchor for Change Monitor updates about this PR. Populated the first time a notification is delivered; subsequent updates post into the same anchor instead of producing fresh top-level messages. Stitched forward across plan recreations for the same PR URL.
Tracks whether the change this plan watches actually shipped. Distinct from deployments (which only exists once a deploy succeeds): models the shipment expectation so a deploy that fails is a first-class, reportable state. Set at merge; updated by the deploy success/failure hooks.
intended_effects
string[]
Intended effects of the change as discrete bullets — what it should accomplish and the signal that confirms it. The structured, queryable form of the effects described in plan_content; written at publish time and reflecting the most recent publish.
risks
string[]
Named risks to watch for as discrete bullets, each pairing a failure mode with its signal and alert condition. Structured companion to intended_effects; written at publish time and reflecting the most recent publish.
Example
{"name":"monitoring-plans/f045b69d-8b64-43fb-9601-0d3118772da9","origin":{"repository":"acme/backend","prNumber":3751,"prUrl":"https://github.com/acme/backend/pull/3751","prTitle":"feat(ui): add support link to app","prAuthorGithubLogin":"octocat","prAuthorGithubUserId":"1234567"},"activation":{"mergeSha":"17078c805a9fb991a09283f41b5c29ce70269028"},"planContent":"# Monitoring Plan: Add Support Link\n\n## Risk Assessment: MINIMAL\nFrontend-only change...","planSummary":"Add support mailto link to user dropdown menu - minimal risk frontend change","intendedEffects":["Support link renders in the user dropdown for all users (UI render count > 0 post-deploy)."],"risks":["Broken mailto target: watch client error logs for support-link clicks; alert on any 4xx/5xx."],"authorSession":"agents/plan-author/sessions/ses-abc123","createTime":"2026-02-17T22:00:01.717128Z","updateTime":"2026-02-27T21:11:22.041370Z","agentName":"agents/dm-f045b69d","deployments":[{"environment":"production","deployment":"deployments/2cdaaa4f-3baa-4aa8-8cd9-74b3f663c5ef","deployTime":"2026-02-17T22:18:04Z","intendedEffectConfirmed":true,"outcome":"MONITORING_OUTCOME_NO_ISSUE","completeTime":"2026-02-18T01:46:06.188498Z"}],"deploymentExpectation":{"status":"STATUS_DEPLOYED","mergeTime":"2026-02-17T22:05:11Z","resolvedTime":"2026-02-17T22:18:04Z"},"agentArchived":true}
GitHub PR Origin
Field
Type
Description
repository
string
Repository in org/repo format (e.g., acme-corp/backend)
pr_number
integer
Pull request number
pr_url
string
Full URL to the PR (used as deduplication key)
head_sha
string
PR HEAD SHA at plan creation time
installation_id
integer
GitHub App installation ID
pr_title
string
PR title at plan creation time
pr_author_github_login
string
GitHub login of the PR author
pr_author_github_user_id
string
Stable GitHub user ID of the PR author
pr_in_progress_reaction_id
integer
GitHub reaction ID for the in-progress reaction Firetiger posts on the PR description while building the change-monitoring plan. Zero when no reaction is currently outstanding. Cleared after the plan comment is posted.
pr_in_progress_comment_id
integer
GitHub comment ID of the “Firetiger is working on a monitoring plan for this PR” placeholder comment, edited in place into the “has created a monitoring plan” comment when the plan is published. Zero when no placeholder is outstanding.
Activation Trigger
Field
Type
Description
merge_sha
string
Merge commit SHA to watch for. Set when the PR merges; empty while PR is open.
environments
string[]
Only activate for these environments (e.g., ["production"]). If empty, activates for all.
Monitored Deployment
Field
Type
Description
environment
string
The environment being monitored (e.g., staging, production)
deployment
string
Reference to the deployment resource (deployments/{deployment})
deploy_time
timestamp
Deploy time from the Deployment resource
intended_effect_confirmed
boolean
Whether the intended effect has been confirmed for this environment. Cleared if an issue is later detected, so a deployment is never both confirmed and issue-detected
Reference to the issue if outcome is ISSUE_DETECTED (issues/{id})
complete_time
timestamp
When monitoring for this environment completed
last_checked_at
timestamp
When the scheduler last fired a checkpoint check that observed this deployment
status_summary
string
Super-short, human-readable one-liner companion to the status, set when the intended effect is confirmed or an issue is reported (e.g. API p99 down 20%, 5xx rate up on /checkout). Empty until a confirmed/issue verdict is recorded
monitoring_complete_eta
timestamp
Output-only. Latest time monitoring may continue for this deployment before the scheduler force-completes it. Derived at read time as deploy_time + 73h (the scheduler’s per-deployment monitoring window); not persisted. Empty when deploy_time is unset
Monitoring Outcome
Value
Description
MONITORING_OUTCOME_UNSPECIFIED
Default value, not used
MONITORING_OUTCOME_NO_ISSUE
No issues detected during monitoring
MONITORING_OUTCOME_ISSUE_DETECTED
An issue was detected during monitoring
Deployment Expectation
Tracks whether the change a MonitoringPlan watches actually shipped. A merged PR is expected to deploy; if the deploy fails (a deployment_status failure/error correlated to the merge SHA) the change may be in a partially-degraded state that Change Monitor surfaces — even though no MonitoredDeployment is created for a failed deploy.
When the PR merged (clock anchor for “merged X ago”)
resolved_time
timestamp
When the expectation reached a terminal status (DEPLOYED or DEPLOY_FAILED)
detail
string
Human-readable detail about a failure (GitHub state + deploy logs URL)
reported_issue
string
Reference to the Issue filed for a failure (issues/{id})
reported_time
timestamp
When the failure report fired (set exactly once)
Deployment Expectation Status
Value
Description
STATUS_UNSPECIFIED
Merged and waiting for a deploy (or PR not yet merged)
STATUS_DEPLOYED
At least one deployment activated for this plan
STATUS_DEPLOY_FAILED
A deployment failure/error was correlated to this merge SHA
STATUS_DEPLOY_TIMED_OUT
Reserved: the deploy window elapsed with no deploy observed (not currently set)
STATUS_WAIVED
Reserved: the deploy was determined not to be expected (not currently set)
Conversation
Persistent communication anchor for Change Monitor updates about a PR. Wraps the channel-specific anchor in a oneof so additional destinations (email, Linear, etc.) can be added without renaming the existing JSON fields stored in protodb.