Monitoring Plan

Field Type Behavior Description
name string OUTPUT_ONLY Resource name (monitoring-plans/{id})
origin GithubPrOrigin   Metadata about the GitHub PR that triggered this plan
activation ActivationTrigger   Activation trigger configuration including the merge commit SHA
plan_content string   Prose document describing intended effect, unintended effects to watch for, and risk assessment
plan_summary string   One-sentence plain-text summary of the plan (~150 characters max)
notification_channel string   Notification channel for alerts (e.g., Slack channel name)
author_session string   Reference to the author agent session (agents/{agent}/sessions/{session})
create_time timestamp OUTPUT_ONLY When the plan was created
update_time timestamp OUTPUT_ONLY When the plan was last modified
delete_time timestamp OUTPUT_ONLY When the plan was soft-deleted (null if active)
deployments MonitoredDeployment[]   Per-environment deployment monitoring state
last_check_time timestamp   Timestamp of the most recent scheduler check across all environments
related_resources string[]   Internal list of related resources discovered during planning
agent_name string   Reference to the agent that owns this monitoring plan (agents/{agent})
agent_archived boolean   Whether the associated agent has been archived after monitoring completed
conversation Conversation   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.
deployment_expectation DeploymentExpectation   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
outcome MonitoringOutcome Outcome of monitoring for this environment
issue string 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.

Field Type Description
status DeploymentExpectationStatus Current shipment status
merge_time timestamp 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.

Field Type Description
slack SlackThread Slack DM thread the PR author is participating in (oneof channel)

Slack Thread

Anchor identifying a Slack thread for Change Monitor DMs.

Field Type Description
channel_id string Slack channel ID (the DM channel for the recipient)
thread_ts string Slack message timestamp of the thread’s top-level message
slack_connection string Slack connection resource that created the thread (connections/{connection})
status_reaction_emoji string Emoji name (no colons, e.g. white_check_mark) of the status reaction currently applied to the top-level DM message; empty when none is applied

Monitoring Run

MonitoringRunService is a legacy service. New monitoring state is stored directly on MonitoringPlan.deployments.

Field Type Behavior Description
name string OUTPUT_ONLY Resource name (monitoring-plans/{plan}/runs/{run})
environment string REQUIRED The environment being monitored (e.g., staging, production)
deployment string   Reference to the deployment that triggered this run (deployments/{deployment})
status MonitoringRunStatus   Current status of the monitoring run
outcome MonitoringRunOutcome   Outcome of the monitoring run (set when status is COMPLETED or TIMED_OUT)
issue string   Reference to the issue if outcome is ISSUE_DETECTED (issues/{id})
intended_effect_confirmed boolean   Whether the intended effect has been confirmed
activate_time timestamp   When the monitoring run was activated (deployment detected)
complete_time timestamp   When the monitoring run completed
last_check_time timestamp   When the last monitoring check ran
create_time timestamp OUTPUT_ONLY When the run was created
update_time timestamp OUTPUT_ONLY When the run was last modified
delete_time timestamp OUTPUT_ONLY When the run was soft-deleted (null if active)

Monitoring Run Status

Value Description
MONITORING_RUN_STATUS_UNSPECIFIED Default value, not used
MONITORING_RUN_STATUS_RUNNING Monitoring is actively running
MONITORING_RUN_STATUS_COMPLETED Monitoring has completed
MONITORING_RUN_STATUS_TIMED_OUT Monitoring timed out before completing

Monitoring Run Outcome

Value Description
MONITORING_RUN_OUTCOME_UNSPECIFIED Default value, not used
MONITORING_RUN_OUTCOME_NO_ISSUE No issues detected during the run
MONITORING_RUN_OUTCOME_ISSUE_DETECTED An issue was detected during the run

This site uses Just the Docs, a documentation theme for Jekyll.