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.
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","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.
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
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
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.